ZGlmZiAtLWdpdCBhL2FwL2FwcC9TY3JpcHQvc2NyaXB0cy9pbnRlcm5ldC5zaCBiL2FwL2FwcC9TY3JpcHQvc2NyaXB0cy9pbnRlcm5ldC5zaAppbmRleCA3MWJiOTBjLi5jNzQxNDA2IDEwMDc1NQotLS0gYS9hcC9hcHAvU2NyaXB0L3NjcmlwdHMvaW50ZXJuZXQuc2gKKysrIGIvYXAvYXBwL1NjcmlwdC9zY3JpcHRzL2ludGVybmV0LnNoCkBAIC05MSw2ICs5MSwxMCBAQAogZWNobyAiSW5mbzogc2V0IGZhc3RuYXRfbGV2ZWw6ICRmYXN0bmF0X2xldmVsIiA+PiAkdGVzdF9sb2cKIGVjaG8gJGZhc3RuYXRfbGV2ZWwgPiAvcHJvYy9uZXQvZmFzdG5hdF9sZXZlbAogCitmYXN0YnJfbGV2ZWw9YG52IGdldCBmYXN0YnJfbGV2ZWxgCitlY2hvICJJbmZvOiBzZXQgZmFzdGJyX2xldmVsOiAkZmFzdGJyX2xldmVsIiA+PiAkdGVzdF9sb2cKK2VjaG8gJGZhc3Ricl9sZXZlbCA+IC9wcm9jL25ldC9mYXN0YnJfbGV2ZWwKKwogI72rsrvWp7PWv+zL2deqt6K1xNCt0um2y7/ausW0q7j4xNq6ywogbm9mYXN0X3BvcnQ9YG52IGdldCBub2Zhc3RfcG9ydGAKIGVjaG8gIkluZm86IHNldCBub2Zhc3RfcG9ydDogJG5vZmFzdF9wb3J0IiA+PiAkdGVzdF9sb2cKZGlmZiAtLWdpdCBhL2FwL2FwcC9idXN5Ym94L3NyYy9zaGVsbC9tYXRoLmMgYi9hcC9hcHAvYnVzeWJveC9zcmMvc2hlbGwvbWF0aC5jCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMTVjMDAzOS4uMTc0MTM3ZAotLS0gYS9hcC9hcHAvYnVzeWJveC9zcmMvc2hlbGwvbWF0aC5jCisrKyBiL2FwL2FwcC9idXN5Ym94L3NyYy9zaGVsbC9tYXRoLmMKQEAgLTU4NSw2ICs1ODUsOCBAQAogCQkJbnVtc3RhY2twdHItPnZhciA9IE5VTEw7CiAJCQllcnJubyA9IDA7CiAJCQludW1zdGFja3B0ci0+dmFsID0gc3RydG9fYXJpdGhfdChleHByLCAoY2hhcioqKSAmZXhwciwgMCk7CisJCQlpZiAoaXNhbG51bSgqZXhwcikgfHwgKmV4cHIgPT0gJ18nKQorCQkJCWdvdG8gZXJyOwogCQkJaWYgKGVycm5vKQogCQkJCW51bXN0YWNrcHRyLT52YWwgPSAwOyAvKiBiYXNoIGNvbXBhdCAqLwogCQkJZ290byBudW07CmRpZmYgLS1naXQgYS9hcC9hcHAvZnNfY2hlY2svbXRkLmMgYi9hcC9hcHAvZnNfY2hlY2svbXRkLmMKaW5kZXggYzJlZjBlNi4uYzYxMGJmMCAxMDA3NTUKLS0tIGEvYXAvYXBwL2ZzX2NoZWNrL210ZC5jCisrKyBiL2FwL2FwcC9mc19jaGVjay9tdGQuYwpAQCAtMzM4LDI5ICszMzgsMzggQEAKIA0KIAlwX2RzdCA9IHJlYWRfZmlsZShwX2RzdF9maWxlLCAmZHN0X2xlbik7DQogCXBfc3JjID0gcmVhZF9maWxlKHBfc3JjX2ZpbGUsICZzcmNfbGVuKTsNCi0JaWYgKChkc3RfbGVuID09IDApICYmIChzcmNfbGVuID09IDApKQ0KKwlpZiAocF9kc3QgPT0gTlVMTCAmJiBwX3NyYyA9PSBOVUxMKQ0KIAl7DQotCQlhc3NlcnQocF9kc3QgPT0gTlVMTCk7DQotCQlhc3NlcnQocF9zcmMgPT0gTlVMTCk7DQorCQlhc3NlcnQoZHN0X2xlbiA9PSAwKTsNCisJCWFzc2VydChzcmNfbGVuID09IDApOw0KIAkJcmV0dXJuIDA7IC8vYm90aCBlbXB0eSBmaWxlDQogCX0NCi0NCi0JaWYoZHN0X2xlbiAhPSBzcmNfbGVuKQ0KKwllbHNlIGlmIChwX2RzdCA9PSBOVUxMIHx8IHBfc3JjID09IE5VTEwpDQogCXsNCiAJCXByaW50ZigiY29tcGFyZV9maWxlIHNpemUgZHN0YnVmID0gJWQsIHNyY2J1ZiA9ICVkXG4iLCBkc3RfbGVuLCBzcmNfbGVuKTsNCiAJCXNjX2RlYnVnX2luZm9fcmVjb3JkKE1PRFVMRV9JRF9BUF9GU19DSEVDSywgImNvbXBhcmVfZmlsZSBzaXplIGRzdGJ1ZiA9ICVkLCBzcmNidWYgPSAlZFxuIiwgZHN0X2xlbiwgc3JjX2xlbik7DQogCQlyZXQgPSAtMTsNCiAJCWdvdG8gb3V0Ow0KIAl9DQotDQotCWlmKG1lbWNtcChwX3NyYywgcF9kc3QsIHNyY19sZW4pICE9IDApDQorCWVsc2UNCiAJew0KLQkJcHJpbnRmKCJjb21wYXJlX2ZpbGUgbWVtY21wIG5vdCBzYW1lXG4iKTsNCi0JCXNjX2RlYnVnX2luZm9fcmVjb3JkKE1PRFVMRV9JRF9BUF9GU19DSEVDSywgImNvbXBhcmVfZmlsZSBtZW1jbXAgbm90IHNhbWVcbiIpOw0KLQkJcmV0ID0gLTE7DQotCQlnb3RvIG91dDsNCisJCWlmKGRzdF9sZW4gIT0gc3JjX2xlbikNCisJCXsNCisJCQlwcmludGYoImNvbXBhcmVfZmlsZSBzaXplIGRzdGJ1ZiA9ICVkLCBzcmNidWYgPSAlZFxuIiwgZHN0X2xlbiwgc3JjX2xlbik7DQorCQkJc2NfZGVidWdfaW5mb19yZWNvcmQoTU9EVUxFX0lEX0FQX0ZTX0NIRUNLLCAiY29tcGFyZV9maWxlIHNpemUgZHN0YnVmID0gJWQsIHNyY2J1ZiA9ICVkXG4iLCBkc3RfbGVuLCBzcmNfbGVuKTsNCisJCQlyZXQgPSAtMTsNCisJCQlnb3RvIG91dDsNCisJCX0NCisNCisJCWlmKG1lbWNtcChwX3NyYywgcF9kc3QsIHNyY19sZW4pICE9IDApDQorCQl7DQorCQkJcHJpbnRmKCJjb21wYXJlX2ZpbGUgbWVtY21wIG5vdCBzYW1lXG4iKTsNCisJCQlzY19kZWJ1Z19pbmZvX3JlY29yZChNT0RVTEVfSURfQVBfRlNfQ0hFQ0ssICJjb21wYXJlX2ZpbGUgbWVtY21wIG5vdCBzYW1lXG4iKTsNCisJCQlyZXQgPSAtMTsNCisJCQlnb3RvIG91dDsNCisJCX0NCisJCXJldCA9IDA7DQogCX0NCi0JcmV0ID0gMDsNCiANCiBvdXQ6DQogCWlmIChwX3NyYykNCmRpZmYgLS1naXQgYS9hcC9hcHAvaG9zdGFwZC0yLjEwL2hvc3RhcGQvbGlid3BhX2NsaWVudC5hIGIvYXAvYXBwL2hvc3RhcGQtMi4xMC9ob3N0YXBkL2xpYndwYV9jbGllbnQuYQppbmRleCBkMGQ1NjQ0Li5jN2U1OTBmIDEwMDc1NQotLS0gYS9hcC9hcHAvaG9zdGFwZC0yLjEwL2hvc3RhcGQvbGlid3BhX2NsaWVudC5hCisrKyBiL2FwL2FwcC9ob3N0YXBkLTIuMTAvaG9zdGFwZC9saWJ3cGFfY2xpZW50LmEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYXAvYXBwL2luY2x1ZGUvd2lmaV9tc2cuaCBiL2FwL2FwcC9pbmNsdWRlL3dpZmlfbXNnLmgKaW5kZXggMDNkZjUxMy4uYTQ0NWIyMyAxMDA3NTUKLS0tIGEvYXAvYXBwL2luY2x1ZGUvd2lmaV9tc2cuaAorKysgYi9hcC9hcHAvaW5jbHVkZS93aWZpX21zZy5oCkBAIC0zOTQsNiArMzk0LDEwIEBACiAJc2hvcnQgICAgY29ubmVjdF9zdGF0dXM7CiAJc2hvcnQgICAgY2hhbm5lbDsKIAlzaG9ydCAgICBzaWduYWw7CisjaWZkZWYgVVNFX0NBUF9TVVBQT1JUCisJLy9zaG9ydCAgICBjaF9mcmVxOworCXNpZ25lZCBjaGFyICAgIHNpZ25hbF9kYjsKKyNlbmRpZgogfSBzY2FuX3Jlc3VsdF90OwogCiAKQEAgLTUzNywxMiArNTQxLDEyIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQgaWR4OyAJCQkvL3JlZmVycyB0bzogd2xhbjAsMS4uLiAKLQlpbnQgd2xfbW9kZTsgCQkJCS8vNiBiZ25heCwgNCBiZ24KKwlpbnQgd2xfbW9kZTsgCQkJCS8vMi40RzogNiBiZ25heCwgNCBiZ247IDVHOiA2IGEvbi9hYy9heCwgNSBhL24vYWMsIDQgYS9uCiB9IHdsYW5fYXBfd2xfbW9kZV90OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAJaW50IGlkeDsgCQkJLy9yZWZlcnMgdG86IHdsYW4wLDEuLi4gCi0JaW50IGh0TW9kZTsgCQkJCS8vMSAyMC80ME0sIDAgMjBNCisJaW50IGh0TW9kZTsgCQkvLzQgMjAvNDAvODBNLCAxIDIwLzQwTSwgMCAyME0KIAkvL2ludCBmb3JjZV80MG07CiB9IHdsYW5fYXBfYmFuZHdpZHRoX3Q7CiAKQEAgLTYxMiw3ICs2MTYsNyBAQAogCWludCBwcmVfc3RhdHVzOyAvL732Y2Fw19TQ0Liz1rUKIAlpbnQgc3RhdHVzOwogCWNoYXIgaWZuYW1lWzMyXTsKLQkvL2NoYXIgYnNzaWRbMThdOworCWNoYXIgYnNzaWRbMThdOyAvL732Y2Fw19TQ0Liz1rUKIH0gd2xhbl9hcF9zdGF0dXNfdDsKIAogLy9zY193aWZpX3N0YV9jb25uZWN0X3N0YXR1c190CkBAIC02OTQsMTIgKzY5OCwxMiBAQAogewogCWNoYXIgYnNzaWRbMThdOy8vbWFjCiAJY2hhciBlc3NpZFszM107Ci0JLy9pbnQgc2lnbmFsOworCXNpZ25lZCBjaGFyIHNpZ25hbDsgLy9kYm0KIAl1bnNpZ25lZCBjaGFyIHNpZ25hbF9sZXZlbDsgLy8wLTUsIG1heCA1Ci0JLy9pbnQgZnJlcXVlbmN5OwotCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsgLy8xLTEzCisJdW5zaWduZWQgY2hhciBjaGFubmVsOyAvLzEtMTMsIDM2Li4uCiAJdW5zaWduZWQgY2hhciBhdXRoOwogCXVuc2lnbmVkIGNoYXIgY2lwaGVyOworCS8vaW50IGZyZXF1ZW5jeTsgLy9IegogfSB3bGFuX3N0YV9zY2FuX2luZm9fdDsKIAogLy9zY193aWZpX3N0YV9zY2FuX2xpc3RfdApkaWZmIC0tZ2l0IGEvYXAvYXBwL3dwYV9zdXBwbGljYW50LTIuMTAvd3BhX3N1cHBsaWNhbnQvbGlid3BhX2NsaWVudC5hIGIvYXAvYXBwL3dwYV9zdXBwbGljYW50LTIuMTAvd3BhX3N1cHBsaWNhbnQvbGlid3BhX2NsaWVudC5hCmluZGV4IGM4ZmEyNWUuLjEzYTM3OGQgMTAwNzU1Ci0tLSBhL2FwL2FwcC93cGFfc3VwcGxpY2FudC0yLjEwL3dwYV9zdXBwbGljYW50L2xpYndwYV9jbGllbnQuYQorKysgYi9hcC9hcHAvd3BhX3N1cHBsaWNhbnQtMi4xMC93cGFfc3VwcGxpY2FudC9saWJ3cGFfY2xpZW50LmEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9pbmMvcHBwX2RpYWwuaCBiL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvaW5jL3BwcF9kaWFsLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyZDMwZTNiLi4wMjQxNGZlCi0tLSBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvaW5jL3BwcF9kaWFsLmgKKysrIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9pbmMvcHBwX2RpYWwuaApAQCAtMTQsNiArMTQsNyBAQAogY2hhciogcXVpY2tfZGlzY29ubmVjdF9mdW5jKHZvaWQgKm1zZyxzdHJ1Y3QgYXRfY29udGV4dCAqY29udGV4dCk7DQogDQogaW50IGlzX3BwcF9kaWFsX2F0ZCggY2hhciAqYXRfcGFyYXMsaW50IGF0X2ZkKTsNCitpbnQgaXNfcHBwX3J1bm5pbmcodm9pZCk7DQogDQogZXh0ZXJuIGludCBnX3BwcF9wdG07CQkgICAgLy9wdG221NOmtcTJ6LG4zsS8/r7ksfoNCiBleHRlcm4gaW50IGdfcHBwX3R0eWZkOwkJLy9wcHC21NOmtcR0dHnJ6LG4vuSx+g0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BwcF9kaWFsLmMgYi9hcC9hcHAvenRlX2NvbW0vYXRfY3RsL3NyYy9hdGNvbmZpZy9wcHBfZGlhbC5jCmluZGV4IGZjNThkNmMuLjRjMjU1MWIgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BwcF9kaWFsLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHBwX2RpYWwuYwpAQCAtNjQzLDQgKzY0Myw3IEBACiAjZW5kaWYNCiB9DQogDQoraW50IGlzX3BwcF9ydW5uaW5nKHZvaWQpew0KKwlyZXR1cm4gc3RybGVuKGdfcHBwX2Rldm5hbWUpID4gMCB8fCBnX3BwcF9wdG0gIT0gLTE7DQorfQ0KIA0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX3BkcC5jIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfcGRwLmMKaW5kZXggOWUwMjk3MC4uMDc4ZThkMCAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfcGRwLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfcGRwLmMKQEAgLTEyMDMsMTIgKzEyMDMsMTUgQEAKIAllbHNlIGlmKHBkcF90eXBlID09IFBEUF9QUFApDQogCXsNCiAJCS8vsaO05nBwcNOm08PKudPDtcRjaWSjrNPD09pjZ2V2yc+xqLXEtKbA7Q0KKwkJaWYoaXNfcHBwX3J1bm5pbmcoKSl7DQogCQljaGFyIHRlbXBbMl0gPSB7MH07DQogCQlwcHBfY2lkID0gQ0lEX0FSUkFZW2lkeF0uY19pZDsNCiAJCXNucHJpbnRmKHRlbXAsMiwgIiVkIiwgcHBwX2NpZCk7DQogCQlzY19jZmdfc2V0KCJwcHBfY2lkIix0ZW1wKTsNCiAJCWlmKGdfY3VzdG9tZXJfdHlwZSkgLy/Bqse/sOaxvszYyuK2qNbGo6xwcHCyprrFs8m5prrz0OjSqs2o1qptbWkNCiAJCQlzZXRfcHBwc3RhdHVzKFBQUF9DT05ORUNURUQpOw0KKwkJfWVsc2UNCisJCQlwZHBpbmZvX3Jlc2V0KENJRF9BUlJBWVtpZHhdLmNfaWQpOw0KIAl9DQogDQogCXsNCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYyBiL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCmluZGV4IGIyYjQxY2MuLmUwNTkxMjEgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCisrKyBiL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlci5jCkBAIC0zMSw3NCArMzEsNzMgQEAKIGZpbGUsY2hhciprZXksY2hhcip2YWx1ZSk7c3RhdGljIGludCBudnVuc2V0KGNoYXIqZmlsZSxjaGFyKmtleSk7c3RhdGljIGludCAKIG52Y2xlYXIoY2hhcipmaWxlKTtzdGF0aWMgaW50IG52cmVzZXQoY2hhcipmaWxlKTtzdGF0aWMgaW50IG52Y29tbWl0KGNoYXIqZmlsZSk7CiBUX05WX05PREUqbnZfbGlzdDtpbnQgbnZzZXJ2ZXJfbWFpbihpbnQgYXJnYyxjaGFyKmFyZ3ZbXSl7aW50IG1zZ0lkPQotKDB4MjI2KzU1MTMtMHgxN2FmKTtUX05WX01TR19JTkZPIHJjdkJ1ZjtUX05WX01TR19SRVNVTFQgc25kQnVmO3N0cnVjdCBtc3FpZF9kcyAKLW1zZ0luZm87cHJjdGwoUFJfU0VUX05BTUUsIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyIiwoMHhiN2YrMjg0My0weDE2OWEpCi0sKDB4NmQrNTgwMS0weDE3MTYpLCgweDdlMSsxMzM4LTB4ZDFiKSk7bWVtc2V0KCZyY3ZCdWYsKDB4MWNlYisxMzEtMHgxZDZlKSwKLXNpemVvZihyY3ZCdWYpKTttZW1zZXQoJnNuZEJ1ZiwoMHg1NmMrNTkzMi0weDFjOTgpLHNpemVvZihzbmRCdWYpKTttZW1zZXQoJgotbXNnSW5mbywoMHgyOTArNzQ0LTB4NTc4KSxzaXplb2YobXNnSW5mbykpO21zZ0lkPW1zZ2dldChNT0RVTEVfSURfTlYsSVBDX0NSRUFUfAotKDB4MWY1Nys1NzUtMHgyMDE2KSk7aWYoLSgweDE5NTIrNjMtMHgxOTkwKT09bXNnSWQpe3ByaW50ZigKKygweGQ1OCs0NTQ0LTB4MWYxOCk7VF9OVl9NU0dfSU5GTyByY3ZCdWY7VF9OVl9NU0dfUkVTVUxUIHNuZEJ1ZjtzdHJ1Y3QgbXNxaWRfZHMgCittc2dJbmZvO3ByY3RsKFBSX1NFVF9OQU1FLCJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3MiIsKDB4NGIxKzQxNzItMHgxNGZkKQorLCgweDExMTErMjUzNS0weDFhZjgpLCgweGY3YSs1MDU3LTB4MjMzYikpO21lbXNldCgmcmN2QnVmLCgweDFhNjArMzUzLTB4MWJjMSksCitzaXplb2YocmN2QnVmKSk7bWVtc2V0KCZzbmRCdWYsKDB4ZGZiKzE0NTMtMHgxM2E4KSxzaXplb2Yoc25kQnVmKSk7bWVtc2V0KCYKK21zZ0luZm8sKDB4OTUxKzU5NDMtMHgyMDg4KSxzaXplb2YobXNnSW5mbykpO21zZ0lkPW1zZ2dldChNT0RVTEVfSURfTlYsSVBDX0NSRUFUCit8KDB4MWFkKzI5MzgtMHhiYTcpKTtpZigtKDB4MTVkMysxMDY3LTB4MTlmZCk9PW1zZ0lkKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NmRceDczXHg2N1x4NjdceDY1XHg3NFx4MjBceDZkXHg3M1x4NjdceDQ5XHg2NFx4MjBceDY2XHg2MVx4NjlceDZjXHgyY1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sZXJybm8pO3JldHVybi0oMHgxYmMrMTEzOS0weDYyZSk7fWlmKC0oMHgxOWIwKzcwNC0weDFjNmYpIT1tc2djdGwobXNnSWQsCi1JUENfU1RBVCwmbXNnSW5mbykpe21zZ0luZm8ubXNnX3FieXRlcz0yNjIxNDQ7aWYoLSgweDE5Y2QrMTQ1LTB4MWE1ZCk9PW1zZ2N0bCgKKyxlcnJubyk7cmV0dXJuLSgweDFjODMrMjU0OC0weDI2NzYpO31pZigtKDB4YTJiKzUzMjUtMHgxZWY3KSE9bXNnY3RsKG1zZ0lkLAorSVBDX1NUQVQsJm1zZ0luZm8pKXttc2dJbmZvLm1zZ19xYnl0ZXM9MjYyMTQ0O2lmKC0oMHgxMzNkKzM4ODMtMHgyMjY3KT09bXNnY3RsKAogbXNnSWQsSVBDX1NFVCwmbXNnSW5mbykpcHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4MjBceDZkXHg3M1x4NjdceDYzXHg3NFx4NmNceDIwXHg2ZFx4NzNceDY3XHg0OVx4NjRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MmNceDIwXHg2NVx4NzJceDcyXHg2ZVx4NmZceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgotLGVycm5vKTt9aWYobnZEaXJJbml0KCkhPSgweDVhNSs0OTQ3LTB4MThmOCkpe3ByaW50ZigKKyxlcnJubyk7fWlmKG52RGlySW5pdCgpIT0oMHhjMjgrMTI4LTB4Y2E4KSl7cHJpbnRmKAogIlx4NmVceDc2XHg0NFx4NjlceDcyXHg0OVx4NmVceDY5XHg3NFx4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4MjEiICJcbiIpO3JldHVybi0KLSgweDMzOCsyODg3LTB4ZTdlKTt9bnZDb25maWcoKTtudkluaXQoKTt3aGlsZSgoMHg1OTcrNjYwMS0weDFmNWYpKXtpZigtCi0oMHhjNiszNzU3LTB4ZjcyKT09bXNncmN2KG1zZ0lkLCZyY3ZCdWYsc2l6ZW9mKFRfTlZfTVNHX0lORk8pLXNpemVvZihsb25nKSwKLU1TR19UWVBFX05WLCgweDExY2IrMjU1Ni0weDFiYzcpKSl7cHJpbnRmKAorKDB4YTI4KzIzNzktMHgxMzcyKTt9bnZDb25maWcoKTtudkluaXQoKTt3aGlsZSgoMHgxZGU4KzExNjctMHgyMjc2KSl7aWYoLQorKDB4NmErNzIyOS0weDFjYTYpPT1tc2dyY3YobXNnSWQsJnJjdkJ1ZixzaXplb2YoVF9OVl9NU0dfSU5GTyktc2l6ZW9mKGxvbmcpLAorTVNHX1RZUEVfTlYsKDB4MjJjKzcyMjgtMHgxZTY4KSkpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NzNceDY3XHg3Mlx4NjNceDc2XHgyMFx4NjZceDYxXHg2OVx4NmNceDJjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCi0sZXJybm8pO2NvbnRpbnVlO31hbmFseU1zZygmcmN2QnVmLCZzbmRCdWYpO2lmKC0oMHgxYjkrNDE4OC0weDEyMTQpPT1tc2dzbmQoCi1tc2dJZCwmc25kQnVmLHNpemVvZihUX05WX01TR19SRVNVTFQpLXNpemVvZihsb25nKSwoMHgxMDRmKzM0MzQtMHgxZGI5KSkpe3ByaW50ZgotKAorLGVycm5vKTtjb250aW51ZTt9YW5hbHlNc2coJnJjdkJ1Ziwmc25kQnVmKTtpZigtKDB4MWY4Kzg3NjMtMHgyNDMyKT09bXNnc25kKAorbXNnSWQsJnNuZEJ1ZixzaXplb2YoVF9OVl9NU0dfUkVTVUxUKS1zaXplb2YobG9uZyksKDB4MjI5KzcyMjAtMHgxZTVkKSkpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NzNceDY3XHg3M1x4NmVceDY0XHgyMFx4NjZceDYxXHg2OVx4NmNceDJjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCi0sZXJybm8pO2NvbnRpbnVlO319cmV0dXJuKCgweDM1Mys3ODY1LTB4MjIwYykpO31zdGF0aWMgdm9pZCBjb25maWdkaXIoY2hhcipkaXIpeworLGVycm5vKTtjb250aW51ZTt9fXJldHVybigoMHg0MDErOTUwLTB4N2I3KSk7fXN0YXRpYyB2b2lkIGNvbmZpZ2RpcihjaGFyKmRpcil7CiBESVIqZHA7aW50IHJldDtzdHJ1Y3QgZGlyZW50KmVudHJ5O3N0cnVjdCBzdGF0IHN0YXRidWY7aWYoKGRwPW9wZW5kaXIoZGlyKSk9PQogTlVMTCl7ZnByaW50ZihzdGRlcnIsCiAiXHg2M1x4NjFceDZlXHg2ZVx4NmZceDc0XHgyMFx4NmZceDcwXHg2NVx4NmVceDIwXHg2NFx4NjlceDcyXHg2NVx4NjNceDc0XHg2Zlx4NzJceDc5XHgzYVx4MjBceDI1XHg3MyIgIlxuIgogLGRpcik7cmV0dXJuO31jaGRpcihkaXIpO3doaWxlKChlbnRyeT1yZWFkZGlyKGRwKSkhPU5VTEwpe3JldD1sc3RhdChlbnRyeS0+Ci1kX25hbWUsJnN0YXRidWYpO2lmKHJldDwoMHg5ZGQrNDg5LTB4YmM2KSl7ZnByaW50ZihzdGRlcnIsCitkX25hbWUsJnN0YXRidWYpO2lmKHJldDwoMHgzMmQrNTg5OS0weDFhMzgpKXtmcHJpbnRmKHN0ZGVyciwKICJceDZjXHg3M1x4NzRceDYxXHg3NFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHgyNVx4NzMiICJcbiIsc3RyZXJyb3IoCiBlcnJubykpO2NoZGlyKCJceDJlXHgyZSIpO2Nsb3NlZGlyKGRwKTtyZXR1cm47fWlmKCFTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpe2lmKAotc3RyY21wKCJceDJlIixlbnRyeS0+ZF9uYW1lKT09KDB4MTk5MisxMzAyLTB4MWVhOCl8fHN0cmNtcCgiXHgyZVx4MmUiLGVudHJ5LT4KLWRfbmFtZSk9PSgweDY2NCszNjU0LTB4MTRhYSkpY29udGludWU7aWYoIWlzTnZDb25maWdlZChlbnRyeS0+ZF9uYW1lKSl7aWYoCitzdHJjbXAoIlx4MmUiLGVudHJ5LT5kX25hbWUpPT0oMHgyOTcrNTAyMi0weDE2MzUpfHxzdHJjbXAoIlx4MmVceDJlIixlbnRyeS0+CitkX25hbWUpPT0oMHgxNWEzKzQzNjUtMHgyNmIwKSljb250aW51ZTtpZighaXNOdkNvbmZpZ2VkKGVudHJ5LT5kX25hbWUpKXtpZigKIGFkZENvbmZpZ0ZpbGUoZW50cnktPmRfbmFtZSxOVUxMKSE9UkVTVUxUX1NVQ0NFU1MpcHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4MjBceDI1XHg3M1x4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjEiICJcbiIKICxlbnRyeS0+ZF9uYW1lKTt9fX1jaGRpcigiXHgyZVx4MmUiKTtjbG9zZWRpcihkcCk7fXN0YXRpYyB2b2lkIG52Q29uZmlnKCl7Y2hhcioKLXZhbD1OVUxMO0ZJTEUqZnA9TlVMTDtjaGFyIGJ1ZltOVl9NQVhfQ09ORklHX0xFTl09eygweDE3MGErMTA2LTB4MTc3NCl9O2ZwPWZvcGVuCit2YWw9TlVMTDtGSUxFKmZwPU5VTEw7Y2hhciBidWZbTlZfTUFYX0NPTkZJR19MRU5dPXsoMHgyNDI0KzI2Ni0weDI1MmUpfTtmcD1mb3BlbgogKE5WX0NPTkZJR19GSUxFLCJceDcyXHg2ZiIpO2lmKCFmcCl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NmZceDcwXHg2NVx4NmVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCiAsTlZfQ09ORklHX0ZJTEUsZXJybm8pO3JldHVybjt9d2hpbGUoZmdldHMoYnVmLE5WX01BWF9DT05GSUdfTEVOLGZwKSl7aWYoYnVmWwotKDB4MTlhOSsxNjgwLTB4MjAzOSldPT0nXG4nfHxidWZbKDB4MTNkZis0MjQwLTB4MjQ2ZildPT0KLSgoY2hhcikoMHgxNjgyKzEzNS0weDE2ZTYpKSljb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwoKGNoYXIpKDB4NjNhKzU0ODAtMHgxYjY1KSkpCi07aWYoIXZhbCl7cHJpbnRmKAorKDB4MTYzYisyNTI2LTB4MjAxOSldPT0nXG4nfHxidWZbKDB4MTc2OSsyNzI3LTB4MjIxMCldPT0KKygoY2hhcikoMHgxN2M2KzM4NzYtMHgyNmM3KSkpY29udGludWU7dmFsPXN0cmNocihidWYsKChjaGFyKSgweDczMCs1Mjk2LTB4MWJhMykpCispO2lmKCF2YWwpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDI1XHg3M1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjZceDZmXHg3Mlx4NmRceDYxXHg3NFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg3M1x4NzRceDcyXHgyMFx4M2RceDIwXHgyNVx4NzNceDIxIiAiXG4iCi0sTlZfQ09ORklHX0ZJTEUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDkyNSs0ODQ2LTB4MWMxMildPSdcMCc7KnZhbCsrPQotJ1wwJztpZighaXNDZmdDb25maWdlZChidWYpKXtpZihhZGRDb25maWdGaWxlKHZhbCxidWYpIT1SRVNVTFRfU1VDQ0VTUylwcmludGYoCissTlZfQ09ORklHX0ZJTEUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDEwMjcrNDgyNy0weDIzMDEpXT0nXDAnOyp2YWwrKworPSdcMCc7aWYoIWlzQ2ZnQ29uZmlnZWQoYnVmKSl7aWYoYWRkQ29uZmlnRmlsZSh2YWwsYnVmKSE9UkVTVUxUX1NVQ0NFU1MpcHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4MjBceDI1XHg3M1x4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjEiICJcbiIKICxidWYpO319ZmNsb3NlKGZwKTtjb25maWdkaXIoTlZfRlNfTUFJTl9QQVRIKTt9c3RhdGljIGludCBudkRpckluaXQoKXtpZihhY2Nlc3MoCi1OVl9GU19QQVRILEZfT0spIT0oMHg5MDQrMTQ3My0weGVjNSkpe2lmKG1rZGlyKE5WX0ZTX1BBVEgsKDB4ZjUzKzY3My0weDEwMDcpKSE9Ci0oMHgxNmQ1KzM3MzktMHgyNTcwKSl7cHJpbnRmKAorTlZfRlNfUEFUSCxGX09LKSE9KDB4YTFiKzE3NjgtMHgxMTAzKSl7aWYobWtkaXIoTlZfRlNfUEFUSCwoMHgxMDY1KzQ2MTItMHgyMDdjKSkKKyE9KDB4MTdmYiszNTAtMHgxOTU5KSl7cHJpbnRmKAogIlx4NmVceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZkXHg2Ylx4NjRceDY5XHg3Mlx4MjBceDI1XHg3M1x4MjBceDY2XHg2MVx4NmNceDY5XHgyY1x4NjVceDcyXHg3Mlx4NmVceDZmXHgzZFx4MjVceDY0IiAiXG4iCi0sTlZfRlNfUEFUSCxlcnJubyk7cmV0dXJuLSgweDE1YTcrMjUyMC0weDFmN2UpO31pZihta2RpcihOVl9GU19NQUlOX1BBVEgsCi0oMHgyNTQrODg1MS0weDIyZmEpKSE9KDB4NzJjKzI0MzgtMHgxMGIyKSl7cHJpbnRmKAorLE5WX0ZTX1BBVEgsZXJybm8pO3JldHVybi0oMHgxNDhiKzMxMjAtMHgyMGJhKTt9aWYobWtkaXIoTlZfRlNfTUFJTl9QQVRILAorKDB4NTA1Kzg1MzItMHgyNDZjKSkhPSgweGVlNSsxMTc1LTB4MTM3Yykpe3ByaW50ZigKICJceDZlXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NmJceDY0XHg2OVx4NzJceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDZjXHg2OVx4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4M2RceDI1XHg2NCIgIlxuIgotLE5WX0ZTX01BSU5fUEFUSCxlcnJubyk7cmV0dXJuLSgweDE2OSs5MTA5LTB4MjRmZCk7fWlmKG1rZGlyKE5WX0ZTX0JBQ0tVUF9QQVRILAotKDB4NmQ5KzEzODAtMHhhNTApKSE9KDB4ZDQ3KzE2ODUtMHgxM2RjKSl7cHJpbnRmKAorLE5WX0ZTX01BSU5fUEFUSCxlcnJubyk7cmV0dXJuLSgweDFhNjErMTY4Ni0weDIwZjYpO31pZihta2RpcihOVl9GU19CQUNLVVBfUEFUSCwKKygweGIwNSsxNTYwLTB4ZjMwKSkhPSgweDNmZCs2NjczLTB4MWUwZSkpe3ByaW50ZigKICJceDZlXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NmJceDY0XHg2OVx4NzJceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDZjXHg2OVx4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4M2RceDI1XHg2NCIgIlxuIgotLE5WX0ZTX0JBQ0tVUF9QQVRILGVycm5vKTtyZXR1cm4tKDB4NWZkKzM4MTUtMHgxNGUzKTt9fWVsc2V7aWYoYWNjZXNzKAotTlZfRlNfTUFJTl9QQVRILEZfT0spIT0oMHhkYiszMTc5LTB4ZDQ2KSl7aWYobWtkaXIoTlZfRlNfTUFJTl9QQVRILAotKDB4MTBhNSszOTE5LTB4MWUwNykpIT0oMHgxMTI4KzIwNy0weDExZjcpKXtwcmludGYoCissTlZfRlNfQkFDS1VQX1BBVEgsZXJybm8pO3JldHVybi0oMHgzNCs1OTQ0LTB4MTc2Yik7fX1lbHNle2lmKGFjY2VzcygKK05WX0ZTX01BSU5fUEFUSCxGX09LKSE9KDB4MmYxKzgwNTQtMHgyMjY3KSl7aWYobWtkaXIoTlZfRlNfTUFJTl9QQVRILAorKDB4MjliKzY4Mi0weDM1OCkpIT0oMHgyODErMzI3OS0weGY1MCkpe3ByaW50ZigKICJceDZlXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NmJceDY0XHg2OVx4NzJceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDZjXHg2OVx4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4M2RceDI1XHg2NCIgIlxuIgotLE5WX0ZTX01BSU5fUEFUSCxlcnJubyk7cmV0dXJuLSgweDE0NzMrMTk5My0weDFjM2IpO319aWYoYWNjZXNzKAotTlZfRlNfQkFDS1VQX1BBVEgsRl9PSykhPSgweDE4MzkrMzM5MS0weDI1NzgpKXtpZihta2RpcihOVl9GU19CQUNLVVBfUEFUSCwKLSgweDEzOTArNDgwMS0weDI0NjQpKSE9KDB4MWQyNysyMTg5LTB4MjViNCkpe3ByaW50ZigKKyxOVl9GU19NQUlOX1BBVEgsZXJybm8pO3JldHVybi0oMHg1NGQrMjg0NC0weDEwNjgpO319aWYoYWNjZXNzKE5WX0ZTX0JBQ0tVUF9QQVRICissRl9PSykhPSgweDlkZCsyMzY2LTB4MTMxYikpe2lmKG1rZGlyKE5WX0ZTX0JBQ0tVUF9QQVRILCgweDhhNyszMjY0LTB4MTM3YSkpIT0KKygweDE3NisxNTQ3LTB4NzgxKSl7cHJpbnRmKAogIlx4NmVceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZkXHg2Ylx4NjRceDY5XHg3Mlx4MjBceDI1XHg3M1x4MjBceDY2XHg2MVx4NmNceDY5XHgyY1x4NjVceDcyXHg3Mlx4NmVceDZmXHgzZFx4MjVceDY0IiAiXG4iCi0sTlZfRlNfQkFDS1VQX1BBVEgsZXJybm8pO3JldHVybi0oMHg4OSs0MjUzLTB4MTEyNSk7fX19cmV0dXJuKDB4M2ViKzI0ODItMHhkOWQpOworLE5WX0ZTX0JBQ0tVUF9QQVRILGVycm5vKTtyZXR1cm4tKDB4ZWQxKzM2NzctMHgxZDJkKTt9fX1yZXR1cm4oMHhjNGYrNjE1LTB4ZWI2KTsKIH1zdGF0aWMgdm9pZCBudkluaXQoKXtUX05WX05PREUqbGlzdD1OVUxMO2NoYXIgbnZNYWluRmlsZVtOVl9QQVRIX0xFTl09ewotKDB4NzNiKzYzMDktMHgxZmUwKX07Y2hhciBudkJhY2t1cEZpbGVbTlZfUEFUSF9MRU5dPXsoMHgxMmMrOTQyLTB4NGRhKX07CisoMHgxNzArMzY4Mi0weGZkMil9O2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17KDB4MmRhKzU3MjYtMHgxOTM4KX07CiAjaWZkZWYgRk9UQV9BQgotVF9GTEFHU19JTkZPIGZsYWdzX2luZm89eygweGI0Kzk1MDgtMHgyNWQ4KX07aW50IHJldD0oMHgyOTArNDQxOC0weDEzZDIpOworVF9GTEFHU19JTkZPIGZsYWdzX2luZm89eygweDY2Zis3NjA4LTB4MjQyNyl9O2ludCByZXQ9KDB4ZWM4KzQ3NzEtMHgyMTZiKTsKICNlbmRpZgogZm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7c25wcmludGYobnZNYWluRmlsZSxOVl9QQVRIX0xFTiwKICJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfTUFJTl9QQVRILGxpc3QtPm52RmlsZSk7c25wcmludGYobnZCYWNrdXBGaWxlLApAQCAtMTA2LDczICsxMDUsNzMgQEAKIG52TWFpbkZpbGUpKXtpZighY2hlY2tOdkZzKG52QmFja3VwRmlsZSkpcmVzdG9yZU52RnMobnZCYWNrdXBGaWxlLG52TWFpbkZpbGUpO30KIGVsc2UgaWYoY2hlY2tOdkZzKG52QmFja3VwRmlsZSkpe3Jlc3RvcmVOdkZzKG52TWFpbkZpbGUsbnZCYWNrdXBGaWxlKTt9ZWxzZXsKIGxvYWRGYWN0cm95UGFyYW0obGlzdCk7bnZjb21taXQobGlzdC0+bnZGaWxlKTtjb250aW51ZTt9bG9hZE52RnMobGlzdC0+bnZGaWxlKTsKLWlmKCFzdHJjbXAobGlzdC0+bnZGaWxlLE5WX0NGRykmJmdldF91cGRhdGVfc3RhdHVzKCk9PSgweDEyNjMrMjI5OS0weDFiNWMpKXsKK2lmKCFzdHJjbXAobGlzdC0+bnZGaWxlLE5WX0NGRykmJmdldF91cGRhdGVfc3RhdHVzKCk9PSgweDE1Mys2NzM2LTB4MWJhMSkpewogcmVsb2FkRmFjdHJveVBhcmFtKGxpc3QpO2RlbGV0ZV9ub3RfbmVlZGVkKGxpc3QpO252Y29tbWl0KGxpc3QtPm52RmlsZSk7CiAjaWZkZWYgRk9UQV9BQgogcmV0PWZsYWdzX2dldCgmZmxhZ3NfaW5mbyk7ZmxhZ3NfaW5mby5ib290X2ZvdGFfZmxhZy5mb3RhX3N0YXR1cz0KLSgweGFkOCsxMzA1LTB4ZmYxKTtyZXQ9ZmxhZ3Nfc2V0KCZmbGFnc19pbmZvKTsKKygweGQxMisyMjQyLTB4MTVkNCk7cmV0PWZsYWdzX3NldCgmZmxhZ3NfaW5mbyk7CiAjZW5kaWYKLX19fXVpbnQgaGFzaChjb25zdCBjaGFyKnMpe3VpbnQgaGFzaD0oMHg1MTYrMTg0My0weGM0OSk7d2hpbGUoKnMpe2hhc2g9Cit9fX11aW50IGhhc2goY29uc3QgY2hhcipzKXt1aW50IGhhc2g9KDB4NzE0KzQwMjgtMHgxNmQwKTt3aGlsZSgqcyl7aGFzaD0KIE5WX0hBU0hfTVVMKmhhc2grKnMrKzt9cmV0dXJuIGhhc2g7fXN0YXRpYyBpbnQgbG9hZEZhY3Ryb3lQYXJhbShUX05WX05PREUqbGlzdCl7CiBjaGFyKnZhbD1OVUxMO0ZJTEUqZnA9TlVMTDtUX05WX0NPTkZJRypjb25maWc9TlVMTDtjaGFyIGJ1ZltOVl9NQVhfSVRFTV9MRU5dPXsKLSgweDE0OTcrNjMzLTB4MTcxMCl9O2Zvcihjb25maWc9bGlzdC0+ZmlsZUxpc3Q7Y29uZmlnO2NvbmZpZz1jb25maWctPm5leHQpe2ZwPQorKDB4MjE5KzkwMDQtMHgyNTQ1KX07Zm9yKGNvbmZpZz1saXN0LT5maWxlTGlzdDtjb25maWc7Y29uZmlnPWNvbmZpZy0+bmV4dCl7ZnA9CiBmb3Blbihjb25maWctPmNvbmZpZ0ZpbGUsIlx4NzJceDZmIik7aWYoIWZwKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDI1XHg3M1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDIwXHg2NVx4NzJceDcyXHg2ZVx4NmZceDIwXHgzZFx4MjBceDI1XHg2NFx4MjEiICJcbiIKICxjb25maWctPmNvbmZpZ0ZpbGUsZXJybm8pO3JldHVybiBSRVNVTFRfRklMRV9PUEVOX0ZBSUw7fXdoaWxlKGZnZXRzKGJ1ZiwKLU5WX01BWF9JVEVNX0xFTixmcCkpe2lmKGJ1ZlsoMHgyNWFjKzMyNS0weDI2ZjEpXT09J1xuJ3x8YnVmWygweDE2M2MrMzU1OS0weDI0MjMpCi1dPT0oKGNoYXIpKDB4OGYyKzQyOTAtMHgxOTkxKSkpY29udGludWU7dmFsPXN0cmNocihidWYsCi0oKGNoYXIpKDB4NGE1KzE0NjEtMHhhMWQpKSk7aWYoIXZhbCl7cHJpbnRmKAorTlZfTUFYX0lURU1fTEVOLGZwKSl7aWYoYnVmWygweDg2YSs2MjI0LTB4MjBiYSldPT0nXG4nfHxidWZbKDB4N2NkKzQ2ODctMHgxYTFjKV0KKz09KChjaGFyKSgweDFkNSs2NjYtMHg0NGMpKSljb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwoKGNoYXIpKDB4MjM0KzcwOTEtMHgxZGFhKSkpCis7aWYoIXZhbCl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4MjVceDczXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg2Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NzNceDc0XHg3Mlx4NjlceDZlXHg2N1x4MjBceDNkXHgyMFx4MjVceDczIiAiXG4iCi0sY29uZmlnLT5jb25maWdGaWxlLGJ1Zik7Y29udGludWU7fWlmKGJ1ZltzdHJsZW4oYnVmKS0oMHgxMzE3KzQ5NjQtMHgyNjdhKV09PQotJ1xuJylidWZbc3RybGVuKGJ1ZiktKDB4Y2M1KzE3MjYtMHgxMzgyKV09J1wwJzsqdmFsKys9J1wwJztudnNldChsaXN0LT5udkZpbGUsCi1idWYsdmFsLCgweDE4KzkxOS0weDNhZSkpO31wcmludGYoCissY29uZmlnLT5jb25maWdGaWxlLGJ1Zik7Y29udGludWU7fWlmKGJ1ZltzdHJsZW4oYnVmKS0oMHgxNGMwKzQwNjMtMHgyNDllKV09PQorJ1xuJylidWZbc3RybGVuKGJ1ZiktKDB4MThhNysxNTgzLTB4MWVkNSldPSdcMCc7KnZhbCsrPSdcMCc7bnZzZXQobGlzdC0+bnZGaWxlLAorYnVmLHZhbCwoMHgxNGJjKzQ3Ni0weDE2OTcpKTt9cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmNceDZmXHg2MVx4NjRceDQ2XHg2MVx4NjNceDc0XHg3Mlx4NmZceDc5XHg1MFx4NjFceDcyXHg2MVx4NmRceDIwXHgyNVx4NzNceDIxIiAiXG4iCiAsY29uZmlnLT5jb25maWdGaWxlKTtmY2xvc2UoZnApO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXN0YXRpYyBib29sIGNoZWNrTnZGcygKLWNoYXIqZmlsZSl7aW50IGxlbj0oMHg3ZDArNDYxMC0weDE5ZDIpO2ludCBjbnQ9KDB4MTQ4MSszMDA4LTB4MjA0MSk7RklMRSpmcD1OVUxMCi07Y2hhcipidWY9TlVMTDtzdHJ1Y3Qgc3RhdCBzdGF0YnVmZj17KDB4NjM3KzgyNjEtMHgyNjdjKX07aWYoc3RhdChmaWxlLCZzdGF0YnVmZgotKTwoMHgxNTMwKzE0NzYtMHgxYWY0KSlyZXR1cm4gZmFsc2U7bGVuPXN0YXRidWZmLnN0X3NpemU7aWYobGVuPE5WX0NIRUNLX1NJWkUpCi1yZXR1cm4gZmFsc2U7ZnA9Zm9wZW4oZmlsZSwiXHg3Mlx4NmYiKTtpZighZnApcmV0dXJuIGZhbHNlO2J1Zj0oY2hhciopbWFsbG9jKGxlbgotKTtpZighYnVmKXtmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9Y250PSgweDE0MmErMzQ3LTB4MTU4NSk7d2hpbGUoY250PGxlbil7Y250PQotY250K2ZyZWFkKGJ1ZitjbnQsKDB4MTM3MisxNTkwLTB4MTlhNyksbGVuLWNudCxmcCk7aWYoZmVycm9yKGZwKSl7Y2xlYXJlcnIoZnApOwotZnJlZShidWYpO2ZjbG9zZShmcCk7cmV0dXJuIGZhbHNlO319aWYobGVuIT1jbnQpe2ZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiAKLWZhbHNlO31pZihnZXRTdW0oYnVmLGxlbi1OVl9DSEVDS19TSVpFKStOVl9GSUxFX0ZMQUchPSoodWludCopKGJ1ZitsZW4tCi1OVl9DSEVDS19TSVpFKSl7ZnJlZShidWYpO2ZjbG9zZShmcCk7cmV0dXJuIGZhbHNlO31mcmVlKGJ1Zik7ZmNsb3NlKGZwKTtyZXR1cm4gCi10cnVlO31zdGF0aWMgaW50IGNvcHlmaWxlKGNvbnN0IGNoYXIqZnJvbSxjb25zdCBjaGFyKnRvKXtpbnQgZmRfdG87aW50IGZkX2Zyb207Ci1jaGFyIGJ1ZlsoMHgxYTEyKzMwNjctMHgxNjBkKV07c3NpemVfdCBucmVhZDtpbnQgcmV0PS0oMHg3MDQrNzU0Ni0weDI0N2QpOwotZmRfZnJvbT1vcGVuKGZyb20sT19SRE9OTFkpO2lmKGZkX2Zyb208KDB4MWE0MisyODA2LTB4MjUzOCkpcmV0dXJuLQotKDB4Yzg1KzY3MjYtMHgyNmM5KTtmZF90bz1vcGVuKHRvLE9fUkRXUnxPX0NSRUFUfE9fVFJVTkN8T19TWU5DLAotKDB4ZWExKzE2MzctMHgxMzY2KSk7aWYoZmRfdG88KDB4NTQzKzcxMjMtMHgyMTE2KSl7cmV0PS0oMHgxNGQxKzEzMDctMHgxOWU5KTsKLWdvdG8gb3V0X2Vycm9yO313aGlsZSgoMHhiNzMrNjI4NS0weDIzZmYpKXtjaGFyKm91dF9wdHI7c3NpemVfdCBud3JpdHRlbjtucmVhZD0KLXJlYWQoZmRfZnJvbSxidWYsc2l6ZW9mKGJ1ZikpO2lmKG5yZWFkPT0oMHgxMDU0KzMxOTktMHgxY2QzKSl7YnJlYWs7fWVsc2V7aWYoCi1ucmVhZDwoMHg0ODgrNjUxNC0weDFkZmEpKXtpZihlcnJubz09RUlOVFJ8fGVycm5vPT1FQUdBSU4pe2NvbnRpbnVlO31lbHNle3JldD0tCi0oMHhiYzYrMjQ2Ny0weDE1NjUpO2dvdG8gb3V0X2Vycm9yO319fW91dF9wdHI9YnVmO2Rve253cml0dGVuPXdyaXRlKGZkX3RvLAotb3V0X3B0cixucmVhZCk7aWYobndyaXR0ZW4+KDB4MTMwMysyMjU1LTB4MWJkMikpe25yZWFkLT1ud3JpdHRlbjtvdXRfcHRyKz0KLW53cml0dGVuO31lbHNle2lmKG53cml0dGVuPCgweDgzNis0MDQyLTB4MTgwMCkpe2lmKGVycm5vPT1FSU5UUnx8ZXJybm89PUVBR0FJTil7Ci1jb250aW51ZTt9ZWxzZXtyZXQ9LSgweDEzMjMrMTgyOS0weDFhNDMpO2dvdG8gb3V0X2Vycm9yO319fX13aGlsZShucmVhZD4KLSgweDUwOCs1MzE1LTB4MTljYikpO31yZXQ9ZnN5bmMoZmRfdG8pO2lmKHJldDwoMHg2NmErMzU4NC0weDE0NmEpKXtwcmludGYoCitjaGFyKmZpbGUpe2ludCBsZW49KDB4MWM1MSsyMDgxLTB4MjQ3Mik7aW50IGNudD0oMHgxNDM0KzM5MDYtMHgyMzc2KTtGSUxFKmZwPQorTlVMTDtjaGFyKmJ1Zj1OVUxMO3N0cnVjdCBzdGF0IHN0YXRidWZmPXsoMHg5ZmErMzYzOS0weDE4MzEpfTtpZihzdGF0KGZpbGUsJgorc3RhdGJ1ZmYpPCgweDExNGQrMzk3OC0weDIwZDcpKXJldHVybiBmYWxzZTtsZW49c3RhdGJ1ZmYuc3Rfc2l6ZTtpZihsZW48CitOVl9DSEVDS19TSVpFKXJldHVybiBmYWxzZTtmcD1mb3BlbihmaWxlLCJceDcyXHg2ZiIpO2lmKCFmcClyZXR1cm4gZmFsc2U7YnVmPSgKK2NoYXIqKW1hbGxvYyhsZW4pO2lmKCFidWYpe2ZjbG9zZShmcCk7cmV0dXJuIGZhbHNlO31jbnQ9KDB4YjViKzE0MjctMHgxMGVlKTsKK3doaWxlKGNudDxsZW4pe2NudD1jbnQrZnJlYWQoYnVmK2NudCwoMHgzN2MrNzQ3Mi0weDIwYWIpLGxlbi1jbnQsZnApO2lmKGZlcnJvcigKK2ZwKSl7Y2xlYXJlcnIoZnApO2ZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9fWlmKGxlbiE9Y250KXtmcmVlKGJ1Zik7CitmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9aWYoZ2V0U3VtKGJ1ZixsZW4tTlZfQ0hFQ0tfU0laRSkrTlZfRklMRV9GTEFHIT0qKHVpbnQqKQorKGJ1ZitsZW4tTlZfQ0hFQ0tfU0laRSkpe2ZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9ZnJlZShidWYpO2ZjbG9zZShmcCkKKztyZXR1cm4gdHJ1ZTt9c3RhdGljIGludCBjb3B5ZmlsZShjb25zdCBjaGFyKmZyb20sY29uc3QgY2hhcip0byl7aW50IGZkX3RvO2ludCAKK2ZkX2Zyb207Y2hhciBidWZbKDB4MjVhOSsyOTU0LTB4MjEzMyldO3NzaXplX3QgbnJlYWQ7aW50IHJldD0tCisoMHgxMmNjKzUxNjEtMHgyNmY0KTtmZF9mcm9tPW9wZW4oZnJvbSxPX1JET05MWSk7aWYoZmRfZnJvbTwoMHgxZGM3KzIyNDEtMHgyNjg4KQorKXJldHVybi0oMHgxY2FhKzI1OTMtMHgyNmM5KTtmZF90bz1vcGVuKHRvLE9fUkRXUnxPX0NSRUFUfE9fVFJVTkN8T19TWU5DLAorKDB4MTA5OSs0NjgxLTB4MjE0MikpO2lmKGZkX3RvPCgweGM0NSszMTM3LTB4MTg4Nikpe3JldD0tKDB4ZGE3KzYzNDItMHgyNjZhKTsKK2dvdG8gb3V0X2Vycm9yO313aGlsZSgoMHgxMmViKzM3My0weDE0NWYpKXtjaGFyKm91dF9wdHI7c3NpemVfdCBud3JpdHRlbjtucmVhZD0KK3JlYWQoZmRfZnJvbSxidWYsc2l6ZW9mKGJ1ZikpO2lmKG5yZWFkPT0oMHgxNDErNzc2OS0weDFmOWEpKXticmVhazt9ZWxzZXtpZigKK25yZWFkPCgweDIyMjkrNTktMHgyMjY0KSl7aWYoZXJybm89PUVJTlRSfHxlcnJubz09RUFHQUlOKXtjb250aW51ZTt9ZWxzZXtyZXQ9LQorKDB4NmFmKzExMjYtMHhiMTEpO2dvdG8gb3V0X2Vycm9yO319fW91dF9wdHI9YnVmO2Rve253cml0dGVuPXdyaXRlKGZkX3RvLG91dF9wdHIKKyxucmVhZCk7aWYobndyaXR0ZW4+KDB4MWYwYisxMDg5LTB4MjM0Yykpe25yZWFkLT1ud3JpdHRlbjtvdXRfcHRyKz1ud3JpdHRlbjt9CitlbHNle2lmKG53cml0dGVuPCgweGJiYSs0NDUxLTB4MWQxZCkpe2lmKGVycm5vPT1FSU5UUnx8ZXJybm89PUVBR0FJTil7Y29udGludWU7fQorZWxzZXtyZXQ9LSgweDVkMSs0MjkzLTB4MTY5MSk7Z290byBvdXRfZXJyb3I7fX19fXdoaWxlKG5yZWFkPigweGIwYSsxNDA4LTB4MTA4YSkKKyk7fXJldD1mc3luYyhmZF90byk7aWYocmV0PCgweGE0Zis1NjEyLTB4MjAzYikpe3ByaW50ZigKICJceDUzXHg3OVx4NmVceDYzXHgyMFx4NDZceDYxXHg2OVx4NmNceDY1XHg2NFx4M2FceDI1XHg3M1x4MmNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDcwXHg2MVx4NzRceDY4XHgzYVx4MjVceDczIgotLHN0cmVycm9yKGVycm5vKSx0byk7Z290byBvdXRfZXJyb3I7fWlmKGNsb3NlKGZkX3RvKTwoMHhjNyszNzM1LTB4ZjVlKSl7ZmRfdG89LQotKDB4ODU4Kzk3My0weGMyNCk7cmV0PS0oMHhiNjUrNDgwMC0weDFlMWYpO2dvdG8gb3V0X2Vycm9yO31jbG9zZShmZF9mcm9tKTtyZXR1cm4KLSgweDE2NDArMjQ1NS0weDFmZDcpO291dF9lcnJvcjpwcmludGYoCissc3RyZXJyb3IoZXJybm8pLHRvKTtnb3RvIG91dF9lcnJvcjt9aWYoY2xvc2UoZmRfdG8pPCgweDY4Yys1NjQ3LTB4MWM5Yikpe2ZkX3RvPQorLSgweDEzMzErMjE4My0weDFiYjcpO3JldD0tKDB4ZTdmKzM0NzQtMHgxYzBiKTtnb3RvIG91dF9lcnJvcjt9Y2xvc2UoZmRfZnJvbSk7CityZXR1cm4oMHgxN2IrMjIxOC0weGEyNSk7b3V0X2Vycm9yOnByaW50ZigKICJceDYzXHg2Zlx4NzBceDc5XHg2Nlx4NjlceDZjXHg2NVx4MjBceDI1XHg3M1x4MjBceDc0XHg2Zlx4MjBceDI1XHg3M1x4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLGZyb20sdG8scmV0KTtjbG9zZShmZF9mcm9tKTtpZihmZF90bz49KDB4NTE4KzExMzMtMHg5ODUpKWNsb3NlKGZkX3RvKTtyZXR1cm4gCissZnJvbSx0byxyZXQpO2Nsb3NlKGZkX2Zyb20pO2lmKGZkX3RvPj0oMHgxNTZjKzMyNDAtMHgyMjE0KSljbG9zZShmZF90byk7cmV0dXJuIAogcmV0O31zdGF0aWMgaW50IHJlc3RvcmVOdkZzKGNoYXIqZHN0RmlsZSxjaGFyKnNyY0ZpbGUpe2lmKGNvcHlmaWxlKHNyY0ZpbGUsCi1kc3RGaWxlKSE9KDB4NTc5KzY1NTYtMHgxZjE1KSlyZXR1cm4gUkVTVUxUX0ZBSUw7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO31zdGF0aWMgCi1pbnQgbG9hZE52RnMoY2hhcipmaWxlKXtpbnQgbGVuPSgweDE0YjUrMzk5OS0weDI0NTQpO2ludCBjbnQ9KDB4MjBmYysyODMtMHgyMjE3KQorZHN0RmlsZSkhPSgweGI4YSsyNTY5LTB4MTU5MykpcmV0dXJuIFJFU1VMVF9GQUlMO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9c3RhdGljIAoraW50IGxvYWROdkZzKGNoYXIqZmlsZSl7aW50IGxlbj0oMHgxZjI3KzEwNTUtMHgyMzQ2KTtpbnQgY250PSgweDliZis1NjY0LTB4MWZkZikKIDtGSUxFKmZwPU5VTEw7Y2hhcipidWY9TlVMTDtjaGFyKm5hbWU9TlVMTDtjaGFyKnZhbHVlPU5VTEw7Y2hhciplcT1OVUxMO3N0cnVjdCAKLXN0YXQgc3RhdGJ1ZmY9eygweDYwZCsxMTYxLTB4YTk2KX07Y2hhciBudkZpbGVbTlZfUEFUSF9MRU5dPXsoMHhkOTgrMjE0OC0weDE1ZmMpCi19O3NwcmludGYobnZGaWxlLCJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfTUFJTl9QQVRILGZpbGUpO2lmKHN0YXQobnZGaWxlLCYKLXN0YXRidWZmKTwoMHg1MjIrMjU2Ny0weGYyOSkpcmV0dXJuIFJFU1VMVF9GQUlMO2xlbj1zdGF0YnVmZi5zdF9zaXplO2lmKAotTlZfQ0hFQ0tfU0laRT5sZW4pcmV0dXJuIFJFU1VMVF9GQUlMO2ZwPWZvcGVuKG52RmlsZSwiXHg3Mlx4NmYiKTtpZighZnApcmV0dXJuIAotUkVTVUxUX0ZJTEVfT1BFTl9GQUlMO2xlbj1sZW4tTlZfQ0hFQ0tfU0laRTtidWY9KGNoYXIqKW1hbGxvYyhsZW4rCi0oMHgxZjBjKzg4Ni0weDIyODEpKTtpZighYnVmKXtmY2xvc2UoZnApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW1lbXNldChidWYsCi0oMHhjNCs1NTY5LTB4MTY4NSksbGVuKygweDdmZisxNzczLTB4ZWViKSk7Y250PSgweGQ4ZiszNjIxLTB4MWJiNCk7d2hpbGUoY250PGxlbgotKXtjbnQ9Y250K2ZyZWFkKGJ1ZitjbnQsKDB4NmRiKzM2OTAtMHgxNTQ0KSxsZW4tY250LGZwKTtpZihmZXJyb3IoZnApKXtjbGVhcmVycigKLWZwKTtmY2xvc2UoZnApO2ZyZWUoYnVmKTtyZXR1cm4gUkVTVUxUX0ZJTEVfUkVBRF9GQUlMO319aWYoY250IT1sZW4pe2ZjbG9zZShmcCk7Ci1mcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1JFQURfRkFJTDt9YnVmW2xlbl09J1wwJztuYW1lPWJ1Zjt3aGlsZSgqbmFtZSl7aWYoIQotKGVxPXN0cmNocihuYW1lLCgoY2hhcikoMHgzZjQrNzAwMC0weDFmMGYpKSkpKXticmVhazt9KmVxPSdcMCc7dmFsdWU9ZXErCi0oMHhjZTkrMTE2OC0weDExNzgpO252c2V0KGZpbGUsbmFtZSx2YWx1ZSwoMHg0YzYrNDU5LTB4NjkwKSk7KmVxPQotKChjaGFyKSgweDc5OCs1NjUwLTB4MWQ2ZCkpO25hbWU9dmFsdWUrc3RybGVuKHZhbHVlKSsoMHhmNzkrMTQ0Mi0weDE1MWEpO31mcmVlKAorc3RhdCBzdGF0YnVmZj17KDB4MWEwYSsyODEwLTB4MjUwNCl9O2NoYXIgbnZGaWxlW05WX1BBVEhfTEVOXT17CisoMHgzODMrNjUzMC0weDFkMDUpfTtzcHJpbnRmKG52RmlsZSwiXHgyNVx4NzNceDJmXHgyNVx4NzMiLE5WX0ZTX01BSU5fUEFUSCxmaWxlKQorO2lmKHN0YXQobnZGaWxlLCZzdGF0YnVmZik8KDB4MjBhMCsxNTUtMHgyMTNiKSlyZXR1cm4gUkVTVUxUX0ZBSUw7bGVuPXN0YXRidWZmLgorc3Rfc2l6ZTtpZihOVl9DSEVDS19TSVpFPmxlbilyZXR1cm4gUkVTVUxUX0ZBSUw7ZnA9Zm9wZW4obnZGaWxlLCJceDcyXHg2ZiIpO2lmKCEKK2ZwKXJldHVybiBSRVNVTFRfRklMRV9PUEVOX0ZBSUw7bGVuPWxlbi1OVl9DSEVDS19TSVpFO2J1Zj0oY2hhciopbWFsbG9jKGxlbisKKygweDFlNTkrMjE3MC0weDI2ZDIpKTtpZighYnVmKXtmY2xvc2UoZnApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW1lbXNldChidWYsCisoMHgyMjc3KzY4Mi0weDI1MjEpLGxlbisoMHgxNTQxKzI5NjYtMHgyMGQ2KSk7Y250PSgweGViMSszMDQ1LTB4MWE5Nik7d2hpbGUoY250PAorbGVuKXtjbnQ9Y250K2ZyZWFkKGJ1ZitjbnQsKDB4NmI5KzQxNDQtMHgxNmU4KSxsZW4tY250LGZwKTtpZihmZXJyb3IoZnApKXsKK2NsZWFyZXJyKGZwKTtmY2xvc2UoZnApO2ZyZWUoYnVmKTtyZXR1cm4gUkVTVUxUX0ZJTEVfUkVBRF9GQUlMO319aWYoY250IT1sZW4peworZmNsb3NlKGZwKTtmcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1JFQURfRkFJTDt9YnVmW2xlbl09J1wwJztuYW1lPWJ1Zjt3aGlsZSgKKypuYW1lKXtpZighKGVxPXN0cmNocihuYW1lLCgoY2hhcikoMHgxNGE0KzE4Ny0weDE1MjIpKSkpKXticmVhazt9KmVxPSdcMCc7dmFsdWU9CitlcSsoMHg3NGYrMzU2OS0weDE1M2YpO252c2V0KGZpbGUsbmFtZSx2YWx1ZSwoMHhiNis2MDkyLTB4MTg4MSkpOyplcT0KKygoY2hhcikoMHgxMGYrOTI3OS0weDI1MTEpKTtuYW1lPXZhbHVlK3N0cmxlbih2YWx1ZSkrKDB4MTg3KzgyNjktMHgyMWQzKTt9ZnJlZSgKIGJ1Zik7ZmNsb3NlKGZwKTtyZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXN0YXRpYyB2b2lkIGFuYWx5TXNnKFRfTlZfTVNHX0lORk8qCiBtc2dyZWN2LFRfTlZfTVNHX1JFU1VMVCptc2dzbmQpe3N3aXRjaChtc2dyZWN2LT5udlR5cGUpe2Nhc2UgTVNHX0dFVDptc2dzbmQtPgogcmVzdWx0PW52Z2V0KG1zZ3JlY3YtPmZpbGUsbXNncmVjdi0+a2V5LG1zZ3NuZC0+dmFsdWUpO2JyZWFrO2Nhc2UgTVNHX1NFVDptc2dzbmQKQEAgLTE4OCwxNiArMTg3LDE2IEBACiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NzBceDYxXHg3Mlx4NjFceDZkXHgyMFx4NjlceDZjXHg2Y1x4NjVceDY3XHg2MVx4NmNceDIxIiAiXG4iCiApO3JldHVybiBSRVNVTFRfSU5WQUw7fWlmKGNvbmZpZ0ZpbGUpe25ld0NvbmZpZz0oVF9OVl9DT05GSUcqKW1hbGxvYyhzaXplb2YoCiBUX05WX0NPTkZJRykpO2lmKCFuZXdDb25maWcpcmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDtzdHJuY3B5KG5ld0NvbmZpZy0+Ci1jb25maWdGaWxlLGNvbmZpZ0ZpbGUsTlZfUEFUSF9MRU4tKDB4OTUrNzgwNi0weDFmMTIpKTtuZXdDb25maWctPmNvbmZpZ0ZpbGVbCi1OVl9QQVRIX0xFTi0oMHhkNDQrMTc5My0weDE0NDQpXT0nXDAnO25ld0NvbmZpZy0+bmV4dD1OVUxMO31mb3IobGlzdD1udl9saXN0OwotbGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT5udkZpbGUsbnZGaWxlKT09KDB4MTBiZCsxMTQ5LTB4MTUzYSkpYnJlYWsKLTt9aWYoIWxpc3Qpe25ld0xpc3Q9KFRfTlZfTk9ERSopbWFsbG9jKHNpemVvZihUX05WX05PREUpKTtpZighbmV3TGlzdCl7aWYoCitjb25maWdGaWxlLGNvbmZpZ0ZpbGUsTlZfUEFUSF9MRU4tKDB4Y2NjKzU2MjEtMHgyMmMwKSk7bmV3Q29uZmlnLT5jb25maWdGaWxlWworTlZfUEFUSF9MRU4tKDB4NWM0KzM3ODMtMHgxNDhhKV09J1wwJztuZXdDb25maWctPm5leHQ9TlVMTDt9Zm9yKGxpc3Q9bnZfbGlzdDsKK2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZihzdHJjbXAobGlzdC0+bnZGaWxlLG52RmlsZSk9PSgweDFlOSs1ODkwLTB4MThlYikpYnJlYWs7Cit9aWYoIWxpc3Qpe25ld0xpc3Q9KFRfTlZfTk9ERSopbWFsbG9jKHNpemVvZihUX05WX05PREUpKTtpZighbmV3TGlzdCl7aWYoCiBuZXdDb25maWcpZnJlZShuZXdDb25maWcpO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW5ld0xpc3QtPm5leHQ9TlVMTDtzdHJuY3B5KAotbmV3TGlzdC0+bnZGaWxlLG52RmlsZSxOVl9QQVRIX0xFTi0oMHgxMjI2KzQ3OTctMHgyNGUyKSk7bmV3TGlzdC0+bnZGaWxlWwotTlZfUEFUSF9MRU4tKDB4ODQzKzI5LTB4ODVmKV09J1wwJzttZW1zZXQobmV3TGlzdC0+bnZUYWJsZSwoMHhhNys2MTk0LTB4MThkOSksCi1OVl9IQVNIX0xFTiooMHg0M2QrMjUyLTB4NTM1KSk7bmV3TGlzdC0+ZmlsZUxpc3Q9bmV3Q29uZmlnO2lmKCFudl9saXN0KW52X2xpc3Q9Ci1uZXdMaXN0O2Vsc2V7bmV3TGlzdC0+bmV4dD1udl9saXN0LT5uZXh0O252X2xpc3QtPm5leHQ9bmV3TGlzdDt9fWVsc2UgaWYoIWxpc3QtPgotZmlsZUxpc3QpbGlzdC0+ZmlsZUxpc3Q9bmV3Q29uZmlnO2Vsc2V7aWYobmV3Q29uZmlnPT1OVUxMKXJldHVybiBSRVNVTFRfRkFJTDsKK25ld0xpc3QtPm52RmlsZSxudkZpbGUsTlZfUEFUSF9MRU4tKDB4NDQ2KzU5OTItMHgxYmFkKSk7bmV3TGlzdC0+bnZGaWxlWworTlZfUEFUSF9MRU4tKDB4ZWMrMTM5NS0weDY1ZSldPSdcMCc7bWVtc2V0KG5ld0xpc3QtPm52VGFibGUsKDB4NmE5KzY2NjYtMHgyMGIzKSwKK05WX0hBU0hfTEVOKigweGM0MiszMTEyLTB4MTg2NikpO25ld0xpc3QtPmZpbGVMaXN0PW5ld0NvbmZpZztpZighbnZfbGlzdCludl9saXN0Cis9bmV3TGlzdDtlbHNle25ld0xpc3QtPm5leHQ9bnZfbGlzdC0+bmV4dDtudl9saXN0LT5uZXh0PW5ld0xpc3Q7fX1lbHNlIGlmKCFsaXN0CistPmZpbGVMaXN0KWxpc3QtPmZpbGVMaXN0PW5ld0NvbmZpZztlbHNle2lmKG5ld0NvbmZpZz09TlVMTClyZXR1cm4gUkVTVUxUX0ZBSUw7CiBuZXdDb25maWctPm5leHQ9bGlzdC0+ZmlsZUxpc3QtPm5leHQ7bGlzdC0+ZmlsZUxpc3QtPm5leHQ9bmV3Q29uZmlnO31yZXR1cm4gCiBSRVNVTFRfU1VDQ0VTUzt9c3RhdGljIGJvb2wgaXNDZmdDb25maWdlZChjaGFyKmNvbmZpZ0ZpbGUpe1RfTlZfTk9ERSpsaXN0PU5VTEw7CiBUX05WX0NPTkZJRypjb25maWc9TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtmb3IoY29uZmlnPWxpc3QtPgpAQCAtMjA1LDg3ICsyMDQsODYgQEAKIHJldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO31zdGF0aWMgYm9vbCBpc052Q29uZmlnZWQoY2hhcipudkZpbGUpe1RfTlZfTk9ERSpsaXN0CiA9TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZighc3RyY21wKGxpc3QtPm52RmlsZSxudkZpbGUpKQogcmV0dXJuIHRydWU7fXJldHVybiBmYWxzZTt9c3RhdGljIHVpbnQgZ2V0U3VtKGNvbnN0IGNoYXIqcyxpbnQgbGVuKXt1aW50IHN1bT0KLSgweDEzNDUrNDY2OS0weDI1ODIpO2NoYXIqZGF0YT0oY2hhciopczt3aGlsZShsZW4tLSA+KDB4MzM1KzUzNTYtMHgxODIxKSl7c3VtKz0oCisoMHgxMTBhKzE0MjAtMHgxNjk2KTtjaGFyKmRhdGE9KGNoYXIqKXM7d2hpbGUobGVuLS0gPigweDQwNys2NzI0LTB4MWU0Yikpe3N1bSs9KAogKmRhdGErKyk7fXJldHVybiBzdW07fXN0YXRpYyBpbnQgc2F2ZU52RnMoY2hhcipudk5hbWUsY2hhcipudkZpbGUpe2ludCBpPQotKDB4MTM5Yys0NzYzLTB4MjYzNyk7aW50IHN1bT0oMHhhNDQrMjg0LTB4YjYwKTtpbnQgYnVmU2l6ZT0oMHgyNjEzKzE1NC0weDI2YWQpOwotaW50IGl0ZW1TaXplPSgweDEzMzQrNTM5LTB4MTU0Zik7aW50IHJldD0oMHgxNzMwKzM4ODEtMHgyNjU5KTtpbnQgZnA9Ci0oMHhmZDkrMjA0MS0weDE3ZDIpO2NoYXIqYnVmPU5VTEw7VF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO2ZvcigKKygweDEzMzIrMTU2MC0weDE5NGEpO2ludCBzdW09KDB4NjViKzg1Mi0weDlhZik7aW50IGJ1ZlNpemU9KDB4ZmMwKzMzOS0weDExMTMpOworaW50IGl0ZW1TaXplPSgweDE5MGIrMTk1NC0weDIwYWQpO2ludCByZXQ9KDB4YTk4KzY0MjMtMHgyM2FmKTtpbnQgZnA9CisoMHgxYjg3KzI0NDItMHgyNTExKTtjaGFyKmJ1Zj1OVUxMO1RfTlZfTk9ERSpsaXN0PU5VTEw7VF9OVl9JVEVNKml0ZW09TlVMTDtmb3IoCiBsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT5udkZpbGUsbnZOYW1lKSljb250aW51ZTtmcD0KLW9wZW4obnZGaWxlLE9fU1lOQ3xPX1JEV1J8T19DUkVBVHxPX1RSVU5DLCgweDM3MCsxMzUwLTB4NzE2KSk7aWYoZnA9PS0KLSgweDFlZDgrOTU0LTB4MjI5MSkpe3ByaW50ZigKK29wZW4obnZGaWxlLE9fU1lOQ3xPX1JEV1J8T19DUkVBVHxPX1RSVU5DLCgweDEzMTIrNzk4LTB4MTQ5MCkpO2lmKGZwPT0tCisoMHgxMDU5KzMxNTMtMHgxY2E5KSl7cHJpbnRmKAogIlx4NmZceDcwXHg2NVx4NmVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsbnZGaWxlLGVycm5vKTtyZXR1cm4gUkVTVUxUX0ZJTEVfT1BFTl9GQUlMO31idWY9KGNoYXIqKW1hbGxvYyhOVl9CTE9DS19TSVpFKTtpZgotKCFidWYpe2Nsb3NlKGZwKTtyZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO31mb3IoaT0oMHgxNWRkKzU2Ni0weDE4MTMpO2k8CisoIWJ1Zil7Y2xvc2UoZnApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fWZvcihpPSgweGEyMis2MDI5LTB4MjFhZik7aTwKIE5WX0hBU0hfTEVOO2krKyl7Zm9yKGl0ZW09bGlzdC0+bnZUYWJsZVtpXTtpdGVtO2l0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKAogbnZGaWxlLE5WX0ZTX1NIT1cpJiYhaXRlbS0+c2F2ZUZsYWcpY29udGludWU7aXRlbVNpemU9c3RybGVuKGl0ZW0tPmtleSkrc3RybGVuKAotaXRlbS0+dmFsdWUpKygweDEzY2QrNDQ2MS0weDI1MzgpO2lmKGJ1ZlNpemUraXRlbVNpemU+TlZfQkxPQ0tfU0laRSl7aWYod3JpdGUoZnAKLSxidWYsYnVmU2l6ZSk8KDB4OTA5KzE4OTQtMHgxMDZmKSl7cHJpbnRmKAoraXRlbS0+dmFsdWUpKygweGJmNys2OTAtMHhlYTcpO2lmKGJ1ZlNpemUraXRlbVNpemU+TlZfQkxPQ0tfU0laRSl7aWYod3JpdGUoZnAsCitidWYsYnVmU2l6ZSk8KDB4MTM4NyszOTcyLTB4MjMwYikpe3ByaW50ZigKICJceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjBceDI1XHg3M1x4MjBceDI1XHg2NFx4M2FceDIwXHg3N1x4NzJceDY5XHg3NFx4NjVceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsX19GSUxFX18sX19MSU5FX18sZXJybm8pO2Nsb3NlKGZwKTtmcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1dSSVRFX0ZBSUw7fXN1bQotKz1nZXRTdW0oYnVmLGJ1ZlNpemUpO2J1ZlNpemU9KDB4YWYrMjE2MC0weDkxZik7fXNwcmludGYoYnVmK2J1ZlNpemUsCisrPWdldFN1bShidWYsYnVmU2l6ZSk7YnVmU2l6ZT0oMHgxZDU4KzY1My0weDFmZTUpO31zcHJpbnRmKGJ1ZitidWZTaXplLAogIlx4MjVceDczXHgzZFx4MjVceDczIixpdGVtLT5rZXksaXRlbS0+dmFsdWUpO2J1ZlNpemUrPWl0ZW1TaXplO319aWYoYnVmU2l6ZSE9Ci0oMHhmNGIrMzYwMy0weDFkNWUpKXtpZih3cml0ZShmcCxidWYsYnVmU2l6ZSk8KDB4MTI5KzYyMTEtMHgxOTZjKSl7cHJpbnRmKAorKDB4MTU5YisyNzgwLTB4MjA3Nykpe2lmKHdyaXRlKGZwLGJ1ZixidWZTaXplKTwoMHhhMWYrNjA5Ni0weDIxZWYpKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDIwXHg2NVx4NzJceDcyXHg2ZVx4NmZceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLGVycm5vKTtjbG9zZShmcCk7ZnJlZShidWYpO3JldHVybiBSRVNVTFRfRklMRV9XUklURV9GQUlMO31zdW0rPWdldFN1bShidWYsCi1idWZTaXplKTt9c3VtKz1OVl9GSUxFX0ZMQUc7aWYod3JpdGUoZnAsJnN1bSxOVl9DSEVDS19TSVpFKTwoMHhiYmErNTU1Mi0weDIxNmEpKQote3ByaW50ZigKK2J1ZlNpemUpO31zdW0rPU5WX0ZJTEVfRkxBRztpZih3cml0ZShmcCwmc3VtLE5WX0NIRUNLX1NJWkUpPCgweDFhNDIrMzEwNi0weDI2NjQpCispe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg3N1x4NzJceDY5XHg3NFx4NjVceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsZXJybm8pO2Nsb3NlKGZwKTtmcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1dSSVRFX0ZBSUw7fXJldD1mc3luYyhmcCk7ZnJlZSgKLWJ1Zik7Y2xvc2UoZnApO2lmKHJldDwoMHhlMmYrNTUzNi0weDIzY2YpKXtwcmludGYoCitidWYpO2Nsb3NlKGZwKTtpZihyZXQ8KDB4YmIyKzE1NDQtMHgxMWJhKSl7cHJpbnRmKAogIlx4NTNceDc5XHg2ZVx4NjNceDIwXHg0Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgzYVx4MjVceDczXHgyY1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NzBceDYxXHg3NFx4NjhceDNhXHgyNVx4NzMiCiAsc3RyZXJyb3IoZXJybm8pLG52RmlsZSk7cmV0dXJuIHJldDt9cmV0dXJuIFJFU1VMVF9TVUNDRVNTO31yZXR1cm4gCiBSRVNVTFRfTk9fRklMRTt9c3RhdGljIGludCBudmdldChjaGFyKmZpbGUsY2hhciprZXksY2hhcip2YWx1ZSl7aW50IGluZGV4PQotKDB4ZDY3KzYwMTAtMHgyNGUxKTtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDsKKygweDFlZDQrMjc5LTB4MWZlYik7VF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7CiBsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxmaWxlKSljb250aW51ZTtpbmRleD1oYXNoKGtleSklCiBOVl9IQVNIX0xFTjtmb3IoaXRlbT1saXN0LT5udlRhYmxlW2luZGV4XTtpdGVtO2l0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKGl0ZW0tPgota2V5LGtleSkpY29udGludWU7c3RybmNweSh2YWx1ZSxpdGVtLT52YWx1ZSxOVl9NQVhfVkFMX0xFTi0oMHhiMDErMzkwMi0weDFhM2UpKTsKLXZhbHVlW05WX01BWF9WQUxfTEVOLSgweDQwNCszNTI3LTB4MTFjYSldPSdcMCc7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cmV0dXJuIAora2V5LGtleSkpY29udGludWU7c3RybmNweSh2YWx1ZSxpdGVtLT52YWx1ZSxOVl9NQVhfVkFMX0xFTi0oMHhmN2MrNTY2My0weDI1OWEpKTsKK3ZhbHVlW05WX01BWF9WQUxfTEVOLSgweGU5ZiszNDI4LTB4MWMwMildPSdcMCc7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cmV0dXJuIAogUkVTVUxUX05PX0lURU07fXN0YXRpYyBpbnQgbnZzZXQoY2hhcipmaWxlLGNvbnN0IGNoYXIqa2V5LGNvbnN0IGNoYXIqdmFsdWUsaW50IAotc2F2ZUZsYWcpe2ludCBpbmRleD0oMHhjMTMrNTM4My0weDIxMWEpO2ludCByZXQ9KDB4ZmY5KzEzMzgtMHgxNTMzKTtpbnQgCi1rZXlfYnVmX2xlbj0oMHg1NjIrODAzOS0weDI0YzkpO2ludCB2YWx1ZV9idWZfbGVuPSgweDFiY2QrMTExNy0weDIwMmEpO1RfTlZfTk9ERQotKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSpuZXdJdGVtPU5VTEw7aWYoTlVMTD09a2V5fHxOVUxMPT12YWx1ZSkKLXJldHVybiBSRVNVTFRfRkFJTDtrZXlfYnVmX2xlbj1zdHJsZW4oa2V5KSsoMHg0ODIrMjg5MC0weGZjYik7dmFsdWVfYnVmX2xlbj0KLXN0cmxlbih2YWx1ZSkrKDB4NWE0KzY3NjktMHgyMDE0KTtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZigKK3NhdmVGbGFnKXtpbnQgaW5kZXg9KDB4NDZjKzU1NTktMHgxYTIzKTtpbnQgcmV0PSgweDFhMWQrMjU5Ny0weDI0NDIpO2ludCAKK2tleV9idWZfbGVuPSgweGVkKzMxMTItMHhkMTUpO2ludCB2YWx1ZV9idWZfbGVuPSgweDIxNDgrMjMwLTB4MjIyZSk7VF9OVl9OT0RFKgorbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7VF9OVl9JVEVNKm5ld0l0ZW09TlVMTDtpZihOVUxMPT1rZXl8fE5VTEw9PXZhbHVlKQorcmV0dXJuIFJFU1VMVF9GQUlMO2tleV9idWZfbGVuPXN0cmxlbihrZXkpKygweDFhMWErMTY5Ni0weDIwYjkpO3ZhbHVlX2J1Zl9sZW49CitzdHJsZW4odmFsdWUpKygweDFjZTcrMTY0MC0weDIzNGUpO2ZvcihsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKAogc3RyY21wKGxpc3QtPm52RmlsZSxmaWxlKSljb250aW51ZTtpbmRleD1oYXNoKGtleSklTlZfSEFTSF9MRU47Zm9yKGl0ZW09bGlzdC0+CiBudlRhYmxlW2luZGV4XTtpdGVtO2l0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKGl0ZW0tPmtleSxrZXkpKWNvbnRpbnVlO2lmKAogc2F2ZUZsYWcpaXRlbS0+c2F2ZUZsYWc9c2F2ZUZsYWc7aWYoIXN0cmNtcChpdGVtLT52YWx1ZSx2YWx1ZSkpcmV0dXJuIAogUkVTVUxUX1NVQ0NFU1M7ZnJlZShpdGVtLT52YWx1ZSk7aXRlbS0+dmFsdWU9KGNoYXIqKW1hbGxvYyh2YWx1ZV9idWZfbGVuKTtpZighCiBpdGVtLT52YWx1ZSlyZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO3N0cm5jcHkoaXRlbS0+dmFsdWUsdmFsdWUsdmFsdWVfYnVmX2xlbi0KLSgweGFhYys0NTc3LTB4MWM4YykpO2l0ZW0tPnZhbHVlW3ZhbHVlX2J1Zl9sZW4tKDB4ODM5KzMyNTQtMHgxNGVlKV09J1wwJztyZXR1cm4gCi1SRVNVTFRfU1VDQ0VTUzt9bmV3SXRlbT0oVF9OVl9JVEVNKiltYWxsb2Moc2l6ZW9mKFRfTlZfSVRFTSkpO2lmKCFuZXdJdGVtKXJldHVybgotIFJFU1VMVF9NQUxMT0NfRkFJTDtuZXdJdGVtLT5rZXk9KGNoYXIqKW1hbGxvYyhrZXlfYnVmX2xlbik7aWYoIW5ld0l0ZW0tPmtleSl7Ci1mcmVlKG5ld0l0ZW0pO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW5ld0l0ZW0tPnZhbHVlPShjaGFyKiltYWxsb2MoCisoMHg5MDYrMzczNC0weDE3OWIpKTtpdGVtLT52YWx1ZVt2YWx1ZV9idWZfbGVuLSgweDEwMDErMTc3NS0weDE2ZWYpXT0nXDAnO3JldHVybgorIFJFU1VMVF9TVUNDRVNTO31uZXdJdGVtPShUX05WX0lURU0qKW1hbGxvYyhzaXplb2YoVF9OVl9JVEVNKSk7aWYoIW5ld0l0ZW0pCityZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO25ld0l0ZW0tPmtleT0oY2hhciopbWFsbG9jKGtleV9idWZfbGVuKTtpZighbmV3SXRlbS0+CitrZXkpe2ZyZWUobmV3SXRlbSk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3SXRlbS0+dmFsdWU9KGNoYXIqKW1hbGxvYygKIHZhbHVlX2J1Zl9sZW4pO2lmKCFuZXdJdGVtLT52YWx1ZSl7ZnJlZShuZXdJdGVtLT5rZXkpO2ZyZWUobmV3SXRlbSk7cmV0dXJuIAotUkVTVUxUX01BTExPQ19GQUlMO31zdHJuY3B5KG5ld0l0ZW0tPmtleSxrZXksa2V5X2J1Zl9sZW4tKDB4NDY0KzYwMy0weDZiZSkpOwotbmV3SXRlbS0+a2V5W2tleV9idWZfbGVuLSgweDE3NjgrMjkyMC0weDIyY2YpXT0nXDAnO3N0cm5jcHkobmV3SXRlbS0+dmFsdWUsdmFsdWUKLSx2YWx1ZV9idWZfbGVuLSgweGFjMiszMTMzLTB4MTZmZSkpO25ld0l0ZW0tPnZhbHVlW3ZhbHVlX2J1Zl9sZW4tCi0oMHg5YjkrMTMyNy0weGVlNyldPSdcMCc7bmV3SXRlbS0+bmV4dD1OVUxMO25ld0l0ZW0tPnNhdmVGbGFnPXNhdmVGbGFnO25ld0l0ZW0tPgotdXBkYXRlX2ZsYWc9KDB4MWQzYys2MDEtMHgxZjk1KTtpZighbGlzdC0+bnZUYWJsZVtpbmRleF0pbGlzdC0+bnZUYWJsZVtpbmRleF09CitSRVNVTFRfTUFMTE9DX0ZBSUw7fXN0cm5jcHkobmV3SXRlbS0+a2V5LGtleSxrZXlfYnVmX2xlbi0oMHgxN2QyKzMwODMtMHgyM2RjKSk7CituZXdJdGVtLT5rZXlba2V5X2J1Zl9sZW4tKDB4MTExNys2NzEtMHgxM2I1KV09J1wwJztzdHJuY3B5KG5ld0l0ZW0tPnZhbHVlLHZhbHVlLAordmFsdWVfYnVmX2xlbi0oMHgyMjQ0KzM2Ny0weDIzYjIpKTtuZXdJdGVtLT52YWx1ZVt2YWx1ZV9idWZfbGVuLQorKDB4ZDFhKzE5NDctMHgxNGI0KV09J1wwJztuZXdJdGVtLT5uZXh0PU5VTEw7bmV3SXRlbS0+c2F2ZUZsYWc9c2F2ZUZsYWc7bmV3SXRlbQorLT51cGRhdGVfZmxhZz0oMHhiZmErMTUxOS0weDExZTkpO2lmKCFsaXN0LT5udlRhYmxlW2luZGV4XSlsaXN0LT5udlRhYmxlW2luZGV4XT0KIG5ld0l0ZW07ZWxzZXtuZXdJdGVtLT5uZXh0PWxpc3QtPm52VGFibGVbaW5kZXhdLT5uZXh0O2xpc3QtPm52VGFibGVbaW5kZXhdLT5uZXh0CiA9bmV3SXRlbTt9cmV0dXJuIFJFU1VMVF9TVUNDRVNTO31yZXQ9YWRkQ29uZmlnRmlsZShmaWxlLE5VTEwpO2lmKHJldD09CiBSRVNVTFRfU1VDQ0VTUylyZXR1cm4gbnZzZXQoZmlsZSxrZXksdmFsdWUsc2F2ZUZsYWcpO2Vsc2UgcmV0dXJuIHJldDt9c3RhdGljIGludAotIG52dW5zZXQoY2hhcipmaWxlLGNoYXIqa2V5KXtpbnQgaW5kZXg9KDB4ZTJhKzM5MTAtMHgxZDcwKTtUX05WX05PREUqbGlzdD1OVUxMOworIG52dW5zZXQoY2hhcipmaWxlLGNoYXIqa2V5KXtpbnQgaW5kZXg9KDB4MWFmKzIyNjktMHhhOGMpO1RfTlZfTk9ERSpsaXN0PU5VTEw7CiBUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSpwcmV2PU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7CiBpZihzdHJjbXAobGlzdC0+bnZGaWxlLGZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjtmb3IoaXRlbT1saXN0CiAtPm52VGFibGVbaW5kZXhdO2l0ZW07cHJldj1pdGVtLGl0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKGl0ZW0tPmtleSxrZXkpKQogY29udGludWU7aWYoIXByZXYpbGlzdC0+bnZUYWJsZVtpbmRleF09aXRlbS0+bmV4dDtlbHNlIHByZXYtPm5leHQ9aXRlbS0+bmV4dDsKIGZyZWUoaXRlbS0+a2V5KTtmcmVlKGl0ZW0tPnZhbHVlKTtmcmVlKGl0ZW0pO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9fXJldHVybiAKLVJFU1VMVF9OT19JVEVNO31zdGF0aWMgaW50IG52cmVzZXQoY2hhcipmaWxlKXtpbnQgcmV0PSgweGQxKzkxMzUtMHgyNDgwKTsKK1JFU1VMVF9OT19JVEVNO31zdGF0aWMgaW50IG52cmVzZXQoY2hhcipmaWxlKXtpbnQgcmV0PSgweDIwNjArMTI3OS0weDI1NWYpOwogVF9OVl9OT0RFKmxpc3Q9TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZihzdHJjbXAobGlzdC0+CiBudkZpbGUsZmlsZSkpY29udGludWU7cmV0PW52Y2xlYXIoZmlsZSk7aWYocmV0IT1SRVNVTFRfU1VDQ0VTUylyZXR1cm4gcmV0O2lmKAogbG9hZEZhY3Ryb3lQYXJhbShsaXN0KSE9UkVTVUxUX1NVQ0NFU1MpcmV0dXJuIFJFU1VMVF9GQUlMO3JldHVybiBudmNvbW1pdChmaWxlKTsKLX1yZXR1cm4gUkVTVUxUX05PX0ZJTEU7fXN0YXRpYyBpbnQgbnZjbGVhcihjaGFyKmZpbGUpe2ludCBpPSgweDIyMTcrMzMzLTB4MjM2NCk7Ci1UX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSpjdXI9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7bGlzdAotO2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxmaWxlKSljb250aW51ZTtmb3IoaT0KLSgweDllZis0ODYxLTB4MWNlYyk7aTxOVl9IQVNIX0xFTjtpKyspe2ZvcihpdGVtPWxpc3QtPm52VGFibGVbaV07aXRlbTspe2N1cj1pdGVtCi07aXRlbT1pdGVtLT5uZXh0O2ZyZWUoY3VyLT5rZXkpO2ZyZWUoY3VyLT52YWx1ZSk7ZnJlZShjdXIpO31saXN0LT5udlRhYmxlW2ldPQotTlVMTDt9cmV0dXJuIFJFU1VMVF9TVUNDRVNTO31yZXR1cm4gUkVTVUxUX05PX0ZJTEU7fXN0YXRpYyBpbnQgbnZjb21taXQoY2hhcioKLWZpbGUpe2ludCByZXQ9KDB4NmE1KzE0NzUtMHhjNjgpO2NoYXIgbnZNYWluRmlsZVtOVl9QQVRIX0xFTl09ewotKDB4Njc4KzI0OTAtMHgxMDMyKX07Y2hhciBudkJhY2t1cEZpbGVbTlZfUEFUSF9MRU5dPXsoMHg5ODQrMzYyMy0weDE3YWIpfTsKLXNwcmludGYobnZNYWluRmlsZSwiXHgyNVx4NzNceDJmXHgyNVx4NzMiLE5WX0ZTX01BSU5fUEFUSCxmaWxlKTtzcHJpbnRmKAotbnZCYWNrdXBGaWxlLCJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfQkFDS1VQX1BBVEgsZmlsZSk7cmV0PXNhdmVOdkZzKGZpbGUsCi1udk1haW5GaWxlKTtpZihyZXQhPVJFU1VMVF9TVUNDRVNTKXJldHVybiByZXQ7cmV0dXJuIHJlc3RvcmVOdkZzKG52QmFja3VwRmlsZSwKLW52TWFpbkZpbGUpO30KK31yZXR1cm4gUkVTVUxUX05PX0ZJTEU7fXN0YXRpYyBpbnQgbnZjbGVhcihjaGFyKmZpbGUpe2ludCBpPSgweDEyMDErMzQ0Ny0weDFmNzgpCis7VF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qY3VyPU5VTEw7VF9OVl9JVEVNKml0ZW09TlVMTDtmb3IobGlzdD1udl9saXN0OworbGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT5udkZpbGUsZmlsZSkpY29udGludWU7Zm9yKGk9CisoMHg3MmYrODkzLTB4YWFjKTtpPE5WX0hBU0hfTEVOO2krKyl7Zm9yKGl0ZW09bGlzdC0+bnZUYWJsZVtpXTtpdGVtOyl7Y3VyPWl0ZW07CitpdGVtPWl0ZW0tPm5leHQ7ZnJlZShjdXItPmtleSk7ZnJlZShjdXItPnZhbHVlKTtmcmVlKGN1cik7fWxpc3QtPm52VGFibGVbaV09TlVMTAorO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXJldHVybiBSRVNVTFRfTk9fRklMRTt9c3RhdGljIGludCBudmNvbW1pdChjaGFyKmZpbGUpeworaW50IHJldD0oMHgxNzZhKzEwODAtMHgxYmEyKTtjaGFyIG52TWFpbkZpbGVbTlZfUEFUSF9MRU5dPXsoMHgyNTYrODAzNS0weDIxYjkpfTsKK2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17KDB4MzZmKzMwNzQtMHhmNzEpfTtzcHJpbnRmKG52TWFpbkZpbGUsCisiXHgyNVx4NzNceDJmXHgyNVx4NzMiLE5WX0ZTX01BSU5fUEFUSCxmaWxlKTtzcHJpbnRmKG52QmFja3VwRmlsZSwKKyJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfQkFDS1VQX1BBVEgsZmlsZSk7cmV0PXNhdmVOdkZzKGZpbGUsbnZNYWluRmlsZSk7aWYoCityZXQhPVJFU1VMVF9TVUNDRVNTKXJldHVybiByZXQ7cmV0dXJuIHJlc3RvcmVOdkZzKG52QmFja3VwRmlsZSxudk1haW5GaWxlKTt9CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252dXBkYXRlLmMgYi9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZ1cGRhdGUuYwppbmRleCA4ZDUxYmQwLi4xYTAzOTlkIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZ1cGRhdGUuYworKysgYi9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZ1cGRhdGUuYwpAQCAtMjMsODQgKzIzLDg0IEBACiAjZW5kaWYKIGV4dGVybiBUX05WX05PREUqbnZfbGlzdDsKICNpZmRlZiBGT1RBX0FCCi1pbnQgZ2V0X3VwZGF0ZV9zdGF0dXModm9pZCl7VF9GTEFHU19JTkZPIGZsYWdzX2luZm89eygweDE2YzIrMjkzOS0weDIyM2QpfTsKLXVuc2lnbmVkIGludCBzdGF0dXM9KDB4YWY3KzM1ODEtMHgxOGY0KTtpbnQgcmV0PSgweDE3YjUrODU5LTB4MWIxMCk7cmV0PQoraW50IGdldF91cGRhdGVfc3RhdHVzKHZvaWQpe1RfRkxBR1NfSU5GTyBmbGFnc19pbmZvPXsoMHgxY2NhKzI1ODUtMHgyNmUzKX07Cit1bnNpZ25lZCBpbnQgc3RhdHVzPSgweDFjMjQrMjU0MS0weDI2MTEpO2ludCByZXQ9KDB4ZTk4KzMxNTEtMHgxYWU3KTtyZXQ9CiBmbGFnc19nZXQoJmZsYWdzX2luZm8pO3N0YXR1cz1mbGFnc19pbmZvLmJvb3RfZm90YV9mbGFnLmZvdGFfc3RhdHVzO2lmKHN0YXR1cz09Ci0oMHg0MWIrNjMyNS0weDFjY2YpKXJldHVybigweDE3YjErMzkxOS0weDI2ZmUpO2Vsc2UgcmV0dXJuKDB4MWJiMCsyMjMyLTB4MjQ2OCk7fQorKDB4NDhjKzI5MzYtMHgxMDAzKSlyZXR1cm4oMHgxMTY4KzM3MDUtMHgxZmRmKTtlbHNlIHJldHVybigweGI2OSs0MDEtMHhjZmEpO30KICNlbHNlCi1pbnQgZ2V0X3VwZGF0ZV9zdGF0dXModm9pZCl7aW50IHVwZGF0ZV9zdGF0dXM7RklMRSpmZD0oMHgxMDQ1KzMzMDYtMHgxZDJmKTtpbnQgCitpbnQgZ2V0X3VwZGF0ZV9zdGF0dXModm9pZCl7aW50IHVwZGF0ZV9zdGF0dXM7RklMRSpmZD0oMHgxM2NmKzQxODktMHgyNDJjKTtpbnQgCiByZXQ7Y2hhcipmaWxlbmFtZT1OVUxMO2lmKGFjY2VzcyhGT1RBX1VQREFURV9TVEFUVVNfRklMRV9PTEQsUl9PSyk9PQotKDB4MjBhMysxMjUxLTB4MjU4Nikpe2ZpbGVuYW1lPUZPVEFfVVBEQVRFX1NUQVRVU19GSUxFX09MRDt9ZWxzZXtmaWxlbmFtZT0KKygweDExMmMrMTQ5Mi0weDE3MDApKXtmaWxlbmFtZT1GT1RBX1VQREFURV9TVEFUVVNfRklMRV9PTEQ7fWVsc2V7ZmlsZW5hbWU9CiBGT1RBX1VQREFURV9TVEFUVVNfRklMRTt9cHJpbnRmKAogImdldF91cGRhdGVfc3RhdHVzLCByZWFkX3VwZGF0ZV9zdGF0dXMgZnJvbSAlc1xuIixmaWxlbmFtZSk7ZmQ9Zm9wZW4oZmlsZW5hbWUsCiAiXHg3Mlx4NjJceDJiIik7aWYoZmQ9PU5VTEwpe3ByaW50ZigKICJceDViXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDVkXHg3NVx4NzBceDY0XHg2MVx4NzRceDY1XHg1Zlx4NzNceDc0XHg2MVx4NzRceDc1XHg3M1x4MjBceDZmXHg3MFx4NjVceDZlXHgyMFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDI1XHg3MyIgIlxuIgogLHN0cmVycm9yKGVycm5vKSk7Z290byBlcnJvcjA7fXJldD1mc2NhbmYoZmQsIlx4MjVceDY0IiwoaW50KikmdXBkYXRlX3N0YXR1cyk7aWYKLShyZXQ8KDB4M2NjKzY0MjktMHgxY2U5KSl7cHJpbnRmKAorKHJldDwoMHgxZDErNzI0MS0weDFlMWEpKXtwcmludGYoCiAiXHg2N1x4NjVceDc0XHgyMFx4NjlceDZlXHg2Nlx4NmZceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4MjVceDczIiAiXG4iCiAsc3RyZXJyb3IoZXJybm8pKTtmY2xvc2UoZmQpO2dvdG8gZXJyb3IwO31wcmludGYoCiAiXHg3NVx4NzBceDY0XHg2MVx4NzRceDY1XHg1Zlx4NzNceDc0XHg2MVx4NzRceDc1XHg3M1x4M2RceDI1XHg2NCIgIlxuIiwKLXVwZGF0ZV9zdGF0dXMpO2ZjbG9zZShmZCk7cmV0dXJuIHVwZGF0ZV9zdGF0dXM7ZXJyb3IwOnJldHVybi0oMHg2YjErMjE3Mi0weGYyYyk7Ci19Cit1cGRhdGVfc3RhdHVzKTtmY2xvc2UoZmQpO3JldHVybiB1cGRhdGVfc3RhdHVzO2Vycm9yMDpyZXR1cm4tCisoMHgxYmMwKzE3MDktMHgyMjZjKTt9CiAjZW5kaWYKIGludCBudnVwZGF0ZShjaGFyKm52X2ZpbGUsY2hhcipjb25maWdfZmlsZSxjb25zdCBjaGFyKmtleSxjb25zdCBjaGFyKnZhbHVlLGludCAKLXNhdmVGbGFnKXtpbnQgaW5kZXg9KDB4YTY4KzE3MDMtMHgxMTBmKTtpbnQga2V5X2J1Zl9sZW49KDB4MjA0Kzc3Ny0weDUwZCk7aW50IAotdmFsdWVfYnVmX2xlbj0oMHhjNysyMzk2LTB4YTIzKTtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7CitzYXZlRmxhZyl7aW50IGluZGV4PSgweDk4KzIzMDMtMHg5OTcpO2ludCBrZXlfYnVmX2xlbj0oMHgxNzRhKzI2NjQtMHgyMWIyKTtpbnQgCit2YWx1ZV9idWZfbGVuPSgweDI4YSszNTkyLTB4MTA5Mik7VF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMOwogVF9OVl9JVEVNKm5ld0l0ZW09TlVMTDtpZihOVUxMPT1rZXl8fE5VTEw9PXZhbHVlKXJldHVybiBSRVNVTFRfRkFJTDtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZVx4NzZceDc1XHg3MFx4NjRceDYxXHg3NFx4NjVceDIwXHg2ZVx4NzZceDVmXHg2Nlx4NjlceDZjXHg2NVx4M2FceDI1XHg3M1x4MjBceDZiXHg2NVx4NzlceDNhXHgyNVx4NzNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNhXHgyNVx4NzMiICJcbiIKLSxudl9maWxlLGtleSx2YWx1ZSk7a2V5X2J1Zl9sZW49c3RybGVuKGtleSkrKDB4NTlkKzgyMDMtMHgyNWE3KTt2YWx1ZV9idWZfbGVuPQotc3RybGVuKHZhbHVlKSsoMHg3YTYrMTc1Mi0weGU3ZCk7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoCi1zdHJjbXAobGlzdC0+bnZGaWxlLG52X2ZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjtmb3IoaXRlbT1saXN0Ci0tPm52VGFibGVbaW5kZXhdO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+a2V5LGtleSkpY29udGludWU7aWYoCissbnZfZmlsZSxrZXksdmFsdWUpO2tleV9idWZfbGVuPXN0cmxlbihrZXkpKygweGVkOSsyMjI2LTB4MTc4YSk7dmFsdWVfYnVmX2xlbj0KK3N0cmxlbih2YWx1ZSkrKDB4ODQrMzgzNy0weGY4MCk7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wCisobGlzdC0+bnZGaWxlLG52X2ZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjtmb3IoaXRlbT1saXN0LT4KK252VGFibGVbaW5kZXhdO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+a2V5LGtleSkpY29udGludWU7aWYoCiBzYXZlRmxhZylpdGVtLT5zYXZlRmxhZz1zYXZlRmxhZztpZighc3RyY21wKGl0ZW0tPnZhbHVlLHZhbHVlKSl7aXRlbS0+Ci11cGRhdGVfZmxhZz0oMHg2NDUrNzA2OS0weDIxZTEpO3ByaW50ZigKK3VwZGF0ZV9mbGFnPSgweDY3NysxMTk3LTB4YjIzKTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZVx4NzZceDc1XHg3MFx4NjRceDYxXHg3NFx4NjVceDIwXHg3M1x4NjFceDZkXHg2NVx4NzNceDZiXHg2OVx4NzBceDNhXHg2OVx4NzRceDY1XHg2ZFx4MmRceDNlXHg2Ylx4NjVceDc5XHgzYVx4MjVceDczXHgyMFx4NjlceDc0XHg2NVx4NmRceDJkXHgzZVx4NzZceDYxXHg2Y1x4NzVceDY1XHgzYVx4MjVceDczXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzYVx4MjVceDczXHgyMFx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4NWZceDY2XHg2OVx4NmNceDY1XHgzYVx4MjVceDczIiAiXG4iCiAsaXRlbS0+a2V5LGl0ZW0tPnZhbHVlLHZhbHVlLGNvbmZpZ19maWxlKTtyZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fWlmKHN0cnN0cigKLWNvbmZpZ19maWxlLCJceDc1XHg3M1x4NjVceDcyIikpe2lmKCgweDcyNSsyMTAxLTB4ZjU5KT09aXRlbS0+dXBkYXRlX2ZsYWcpeworY29uZmlnX2ZpbGUsIlx4NzVceDczXHg2NVx4NzIiKSl7aWYoKDB4NGVkKzM3MDktMHgxMzY5KT09aXRlbS0+dXBkYXRlX2ZsYWcpewogcHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmVceDc2XHg3NVx4NzBceDY0XHg2MVx4NzRceDY1XHgyMFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MjBceDYzXHg2OFx4NjFceDZlXHg2N1x4NjVceDNhXHg2OVx4NzRceDY1XHg2ZFx4MmRceDNlXHg2Ylx4NjVceDc5XHgzYVx4MjVceDczXHgyMFx4NjlceDc0XHg2NVx4NmRceDJkXHgzZVx4NzZceDYxXHg2Y1x4NzVceDY1XHgzYVx4MjVceDczXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzYVx4MjVceDczXHgyMFx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4NWZceDY2XHg2OVx4NmNceDY1XHgzYVx4MjVceDczIiAiXG4iCiAsaXRlbS0+a2V5LGl0ZW0tPnZhbHVlLHZhbHVlLGNvbmZpZ19maWxlKTt9ZWxzZXtpdGVtLT51cGRhdGVfZmxhZz0KLSgweDFkYiszMjQ0LTB4ZTg2KTtwcmludGYoCisoMHgxZmExKzE3MDItMHgyNjQ2KTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZVx4NzZceDc1XHg3MFx4NjRceDYxXHg3NFx4NjVceDIwXHg3NVx4NzNceDY1XHg3Mlx4NzNceDZiXHg2OVx4NzBceDNhXHg2OVx4NzRceDY1XHg2ZFx4MmRceDNlXHg2Ylx4NjVceDc5XHgzYVx4MjVceDczXHgyMFx4NjlceDc0XHg2NVx4NmRceDJkXHgzZVx4NzZceDYxXHg2Y1x4NzVceDY1XHgzMVx4M2FceDI1XHg3M1x4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4M2FceDI1XHg3M1x4MjBceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjdceDVmXHg2Nlx4NjlceDZjXHg2NVx4M2FceDI1XHg3MyIgIlxuIgogLGl0ZW0tPmtleSxpdGVtLT52YWx1ZSx2YWx1ZSxjb25maWdfZmlsZSk7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmJceDY1XHg3OVx4M2RceDI1XHg3M1x4MjBceDYzXHg2OFx4NjFceDZlXHg2N1x4NjVceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNhXHgyNVx4NzNceDIwXHg3NFx4NmZceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNkXHgyNVx4NzNceDIwIiAiXG4iCiAsaXRlbS0+a2V5LGl0ZW0tPnZhbHVlLHZhbHVlKTtmcmVlKGl0ZW0tPnZhbHVlKTtpdGVtLT52YWx1ZT0oY2hhciopbWFsbG9jKAogdmFsdWVfYnVmX2xlbik7aWYoIWl0ZW0tPnZhbHVlKXJldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7c3RybmNweShpdGVtLT52YWx1ZSwKLXZhbHVlLHZhbHVlX2J1Zl9sZW4tKDB4MWM5Mis5NTctMHgyMDRlKSk7aXRlbS0+dmFsdWVbdmFsdWVfYnVmX2xlbi0KLSgweDE2MzErODg5LTB4MTlhOSldPSdcMCc7aXRlbS0+dXBkYXRlX2ZsYWc9KDB4MWFhOCsxNDExLTB4MjAyYSk7cmV0dXJuIAordmFsdWUsdmFsdWVfYnVmX2xlbi0oMHhiZjArMjQyMS0weDE1NjQpKTtpdGVtLT52YWx1ZVt2YWx1ZV9idWZfbGVuLQorKDB4MTZmNCsxODk4LTB4MWU1ZCldPSdcMCc7aXRlbS0+dXBkYXRlX2ZsYWc9KDB4MTEyOCs0ODk3LTB4MjQ0OCk7cmV0dXJuIAogUkVTVUxUX1NVQ0NFU1M7fW5ld0l0ZW09KFRfTlZfSVRFTSopbWFsbG9jKHNpemVvZihUX05WX0lURU0pKTtpZighbmV3SXRlbSl7CiBwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg1Mlx4NDVceDUzXHg1NVx4NGNceDU0XHg1Zlx4NGRceDQxXHg0Y1x4NGNceDRmXHg0M1x4NWZceDQ2XHg0MVx4NDlceDRjXHgzMVx4MjAiICJcbiIKICk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3SXRlbS0+a2V5PShjaGFyKiltYWxsb2Moc3RybGVuKGtleSkrCi0oMHgxZDU1KzE4NjMtMHgyNDliKSk7aWYoIW5ld0l0ZW0tPmtleSl7ZnJlZShuZXdJdGVtKTtwcmludGYoCisoMHgxNjg5KzI1MTctMHgyMDVkKSk7aWYoIW5ld0l0ZW0tPmtleSl7ZnJlZShuZXdJdGVtKTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg1Mlx4NDVceDUzXHg1NVx4NGNceDU0XHg1Zlx4NGRceDQxXHg0Y1x4NGNceDRmXHg0M1x4NWZceDQ2XHg0MVx4NDlceDRjXHgzMiIgIlxuIgogKTtyZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO31uZXdJdGVtLT52YWx1ZT0oY2hhciopbWFsbG9jKHZhbHVlX2J1Zl9sZW4pO2lmKCEKIG5ld0l0ZW0tPnZhbHVlKXtmcmVlKG5ld0l0ZW0tPmtleSk7ZnJlZShuZXdJdGVtKTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg1Mlx4NDVceDUzXHg1NVx4NGNceDU0XHg1Zlx4NGRceDQxXHg0Y1x4NGNceDRmXHg0M1x4NWZceDQ2XHg0MVx4NDlceDRjXHgzM1x4MjAiICJcbiIKICk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9c3RybmNweShuZXdJdGVtLT5rZXksa2V5LGtleV9idWZfbGVuLQotKDB4NjYwKzk2OS0weGEyOCkpO25ld0l0ZW0tPmtleVtrZXlfYnVmX2xlbi0oMHg4YTErNDc2Mi0weDFiM2EpXT0nXDAnO3N0cm5jcHkoCi1uZXdJdGVtLT52YWx1ZSx2YWx1ZSx2YWx1ZV9idWZfbGVuLSgweDE4MTQrNjk0LTB4MWFjOSkpO25ld0l0ZW0tPnZhbHVlWwotdmFsdWVfYnVmX2xlbi0oMHhmODIrMTA4OS0weDEzYzIpXT0nXDAnO25ld0l0ZW0tPm5leHQ9TlVMTDtuZXdJdGVtLT5zYXZlRmxhZz0KLXNhdmVGbGFnO25ld0l0ZW0tPnVwZGF0ZV9mbGFnPSgweDEzZDcrMjQwMC0weDFkMzYpO3ByaW50ZigKKygweDEzZDYrMzc2MC0weDIyODUpKTtuZXdJdGVtLT5rZXlba2V5X2J1Zl9sZW4tKDB4ZTAzKzQxNDgtMHgxZTM2KV09J1wwJztzdHJuY3B5CisobmV3SXRlbS0+dmFsdWUsdmFsdWUsdmFsdWVfYnVmX2xlbi0oMHg5NjYrNDUzMC0weDFiMTcpKTtuZXdJdGVtLT52YWx1ZVsKK3ZhbHVlX2J1Zl9sZW4tKDB4MjI4NCszMTAtMHgyM2I5KV09J1wwJztuZXdJdGVtLT5uZXh0PU5VTEw7bmV3SXRlbS0+c2F2ZUZsYWc9CitzYXZlRmxhZztuZXdJdGVtLT51cGRhdGVfZmxhZz0oMHhmNDgrNDIzLTB4MTBlZSk7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjFceDY0XHg2NFx4MjBceDZiXHg2NVx4NzlceDNkXHgyNVx4NzNceDJjXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzZFx4MjVceDczXHgyMCIgIlxuIgogLG5ld0l0ZW0tPmtleSxuZXdJdGVtLT52YWx1ZSk7aWYoIWxpc3QtPm52VGFibGVbaW5kZXhdKWxpc3QtPm52VGFibGVbaW5kZXhdPQogbmV3SXRlbTtlbHNle25ld0l0ZW0tPm5leHQ9bGlzdC0+bnZUYWJsZVtpbmRleF0tPm5leHQ7bGlzdC0+bnZUYWJsZVtpbmRleF0tPm5leHQKID1uZXdJdGVtO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXJldHVybiBSRVNVTFRfRkFJTDt9aW50IHJlbG9hZEZhY3Ryb3lQYXJhbSgKIFRfTlZfTk9ERSpsaXN0KXtjaGFyKnZhbD1OVUxMO0ZJTEUqZnA9TlVMTDtUX05WX0NPTkZJRypjb25maWc9TlVMTDtjaGFyIGJ1ZlsKLU5WX01BWF9JVEVNX0xFTl09eygweDM2NCs1NTY5LTB4MTkyNSl9O3ByaW50ZigKK05WX01BWF9JVEVNX0xFTl09eygweDcxYys3MDEtMHg5ZDkpfTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg3Mlx4NjVceDZjXHg2Zlx4NjFceDY0XHg0Nlx4NjFceDYzXHg3NFx4NzJceDZmXHg3OVx4NTBceDYxXHg3Mlx4NjFceDZkXHgyMFx4NmVceDc2XHg0Nlx4NjlceDZjXHg2NVx4M2FceDI1XHg3MyIgIlxuIgogLGxpc3QtPm52RmlsZSk7Zm9yKGNvbmZpZz1saXN0LT5maWxlTGlzdDtjb25maWc7Y29uZmlnPWNvbmZpZy0+bmV4dCl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NzJceDY1XHg2Y1x4NmZceDYxXHg2NFx4NDZceDYxXHg2M1x4NzRceDcyXHg2Zlx4NzlceDUwXHg2MVx4NzJceDYxXHg2ZFx4MjBceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjdceDQ2XHg2OVx4NmNceDY1XHgyMFx4NzNceDc0XHg2MVx4NzJceDc0XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLGNvbmZpZy0+Y29uZmlnRmlsZSk7ZnA9Zm9wZW4oY29uZmlnLT5jb25maWdGaWxlLCJceDcyXHg2ZiIpO2lmKCFmcCl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NmZceDcwXHg2NVx4NmVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCiAsY29uZmlnLT5jb25maWdGaWxlLGVycm5vKTtyZXR1cm4gUkVTVUxUX0ZJTEVfT1BFTl9GQUlMO313aGlsZShmZ2V0cyhidWYsCi1OVl9NQVhfSVRFTV9MRU4sZnApKXtpZihidWZbKDB4MWViMysxMTEwLTB4MjMwOSldPT0nXG4nfHxidWZbCi0oMHgxMDU1KzQyNTItMHgyMGYxKV09PSgoY2hhcikoMHg2Nys5Nzk1LTB4MjY4NykpKWNvbnRpbnVlO3ZhbD1zdHJjaHIoYnVmLAotKChjaGFyKSgweDM4Zis1NzExLTB4MTlhMSkpKTtpZighdmFsKXtwcmludGYoCitOVl9NQVhfSVRFTV9MRU4sZnApKXtpZihidWZbKDB4MTRiKzU0MzQtMHgxNjg1KV09PSdcbid8fGJ1ZlsoMHgxYjIyKzE0OTYtMHgyMGZhKQorXT09KChjaGFyKSgweDJlOSs2MDE4LTB4MWE0OCkpKWNvbnRpbnVlO3ZhbD1zdHJjaHIoYnVmLAorKChjaGFyKSgweDE4YzcrOTMwLTB4MWMyYykpKTtpZighdmFsKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg3M1x4NzRceDcyXHg2OVx4NmVceDY3XHgyMFx4M2RceDIwXHgyNVx4NzMiICJcbiIKLSxjb25maWctPmNvbmZpZ0ZpbGUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDQyYis5MjUtMHg3YzcpXT0nXDAnOyp2YWwKLSsrPSdcMCc7bnZ1cGRhdGUobGlzdC0+bnZGaWxlLGNvbmZpZy0+Y29uZmlnRmlsZSxidWYsdmFsLCgweDUyNis2NjQ2LTB4MWYxYikpO30KLXByaW50ZigKKyxjb25maWctPmNvbmZpZ0ZpbGUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDE0NWIrNDQ0NS0weDI1YjcpXT0nXDAnOyoKK3ZhbCsrPSdcMCc7bnZ1cGRhdGUobGlzdC0+bnZGaWxlLGNvbmZpZy0+Y29uZmlnRmlsZSxidWYsdmFsLCgweDUzNCs1NjgzLTB4MWI2NikpCis7fXByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDcyXHg2NVx4NmNceDZmXHg2MVx4NjRceDQ2XHg2MVx4NjNceDc0XHg3Mlx4NmZceDc5XHg1MFx4NjFceDcyXHg2MVx4NmRceDIwXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3XHg0Nlx4NjlceDZjXHg2NVx4MjBceDY1XHg2ZVx4NjRceDNhXHgyNVx4NzNceDIxIiAiXG4iCiAsY29uZmlnLT5jb25maWdGaWxlKTtmY2xvc2UoZnApO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXZvaWQgZHVtcF9saXN0KFRfTlZfSVRFTQogKmxpc3Qpe2lmKGxpc3Q9PU5VTEwpe3ByaW50ZigKQEAgLTEwOCwxMSArMTA4LDExIEBACiBsaXN0LT5uZXh0O3doaWxlKHAhPU5VTEwpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY0XHg3NVx4NmRceDcwXHgyMFx4NmJceDY1XHg3OVx4M2RceDI1XHg3M1x4MmNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNkXHgyNVx4NzNceDJjXHgyMFx4NzBceDNkXHgzMFx4NzhceDI1XHg3OCIgIlxuIgogLHAtPmtleSxwLT52YWx1ZSwoKHVuc2lnbmVkIGludClwKSk7cD1wLT5uZXh0O319aW50IGRlbGV0ZV9ub3RfbmVlZGVkKFRfTlZfTk9ERSoKLWxpc3Qpe2ludCBpbmRleD0oMHgyNDArNDcwLTB4NDE2KTtUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSBoZWFkPXsKLSgweGM3YiszMDAyLTB4MTgzNSl9O1RfTlZfSVRFTSpwcmV2PSZoZWFkO3ByaW50ZigKK2xpc3Qpe2ludCBpbmRleD0oMHgxYjQwKzM5MS0weDFjYzcpO1RfTlZfSVRFTSppdGVtPU5VTEw7VF9OVl9JVEVNIGhlYWQ9eworKDB4MTBjYSszMjQwLTB4MWQ3Mil9O1RfTlZfSVRFTSpwcmV2PSZoZWFkO3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDVmXHg2ZVx4NmZceDc0XHg1Zlx4NmVceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDJhXHgyYVx4MmEiICJcbiIKLSk7Zm9yKGluZGV4PSgweDFkMWMrNzMzLTB4MWZmOSk7aW5kZXg8TlZfSEFTSF9MRU47aW5kZXgrKyl7aGVhZC5uZXh0PWxpc3QtPgotbnZUYWJsZVtpbmRleF07cHJldj0maGVhZDtmb3IoaXRlbT1wcmV2LT5uZXh0O2l0ZW07KXtpZigoMHgxZDIrNjMxOC0weDFhN2YpPT0KKyk7Zm9yKGluZGV4PSgweDFkZTkrMTEyNi0weDIyNGYpO2luZGV4PE5WX0hBU0hfTEVOO2luZGV4Kyspe2hlYWQubmV4dD1saXN0LT4KK252VGFibGVbaW5kZXhdO3ByZXY9JmhlYWQ7Zm9yKGl0ZW09cHJldi0+bmV4dDtpdGVtOyl7aWYoKDB4ZTE0KzYyNTMtMHgyNjgwKT09CiBpdGVtLT51cGRhdGVfZmxhZyl7cHJldj1pdGVtO2l0ZW09aXRlbS0+bmV4dDt9ZWxzZXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NmJceDY1XHg3OVx4M2RceDI1XHg3M1x4MmNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNkXHgyNVx4NzNceDIwIiAiXG4iCiAsaXRlbS0+a2V5LGl0ZW0tPnZhbHVlKTtwcmV2LT5uZXh0PWl0ZW0tPm5leHQ7ZnJlZShpdGVtLT5rZXkpO2ZyZWUoaXRlbS0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfZGIuYyBiL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX2RiLmMKaW5kZXggNTAzNjk4Ni4uMjQ0MGE5NSAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfZGIuYworKysgYi9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9kYi5jCkBAIC0xLDcgKzEsNyBAQAogCiAjaW5jbHVkZSAicGJfY29tLmgiDQogVF96UGJfRGJSZXN1bHQgYXRQYl9DcmVhdERiKCl7VF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFsKLVpQQl9NQVhfQllURVNfREJdPXsoMHhkMGQrNjA0MC0weDI0YTUpfTtVSU5UMzIgY291bnQ9KDB4NDE0KzEwMjQtMHg4MTQpO3Jlc3VsdD0KK1pQQl9NQVhfQllURVNfREJdPXsoMHgxODgrMzgyMi0weDEwNzYpfTtVSU5UMzIgY291bnQ9KDB4MjI5MCs4MTctMHgyNWMxKTtyZXN1bHQ9CiBhdFBiX0V4ZWNEYlNxbChaUEJfQ1JFQVRFX1BCTV9UQUJMRSxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSyE9cmVzdWx0KXtzbG9nKAogUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDcwXHg2Mlx4NmRceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NjlceDczXHgyMFx4MjVceDY0IiAiXG4iCkBAIC0xOCwxOCArMTgsMTggQEAKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9VU0lNKTtyZXN1bHQ9YXRQYl9FeGVjRGJTcWwoc3FsLE5VTEwsTlVMTCk7aWYoCiBaUEJfREJfT0shPXJlc3VsdCl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2M1x4NzJceDY1XHg2MVx4NzRceDY1XHgyMFx4NzBceDYyXHg2ZFx4NWZceDY0XHg2NVx4NzZceDY5XHg2M1x4NjVceDVmXHg2M1x4NjFceDcwXHg2MVx4NjJceDY5XHg2Y1x4NjlceDc0XHg3OVx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHg2OVx4NzNceDIwXHgyNVx4NjQiICJcbiIKLSxyZXN1bHQpO3JldHVybiByZXN1bHQ7fW1lbXNldChzcWwsKDB4YWE0KzIzNjktMHgxM2U1KSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsCi0sc2l6ZW9mKHNxbCktKDB4MWNmMSs5Mi0weDFkNGMpLAorLHJlc3VsdCk7cmV0dXJuIHJlc3VsdDt9bWVtc2V0KHNxbCwoMHg4NDArNjk2Ny0weDIzNzcpLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwKKyxzaXplb2Yoc3FsKS0oMHg3ODQrMzc1NC0weDE2MmQpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczIgogLFpQQl9EQl9TSU1fQ0FQQUJJTElUWV9UQUJMRSk7KFZPSUQpYXRQYl9FeGVjRGJTcWwoc3FsLGF0UGJfRGJDb3VudFRhYmxlTGluZUNiLCYKLWNvdW50KTtpZigoMHgyZDgrMjUyNC0weGNiNCk8Y291bnQpe21lbXNldChzcWwsKDB4NjIrNDk3LTB4MjUzKSxzaXplb2Yoc3FsKSk7Ci1zbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4NzVmKzQ0Ny0weDkxZCksCitjb3VudCk7aWYoKDB4NjUzKzQwNzItMHgxNjNiKTxjb3VudCl7bWVtc2V0KHNxbCwoMHgyYTIrNzkyLTB4NWJhKSxzaXplb2Yoc3FsKSk7CitzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4Yjg2KzYwNDYtMHgyMzIzKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDUzXHg2OVx4NmRceDVmXHg3NFx4NzlceDcwXHg2NVx4M2VceDNkXHgzMCIKICxaUEJfREJfU0lNX0NBUEFCSUxJVFlfVEFCTEUpO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTtpZihaUEJfREJfT0sKICE9cmVzdWx0KXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NzRceDUzXHg2OVx4NmRceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjZceDYxXHg2OVx4NmNceDIxIiAiXG4iCiApO3JldHVybiByZXN1bHQ7fX1yZXR1cm4gWlBCX0RCX09LO31UX3pQYl9EYlJlc3VsdCBhdFBiX0Ryb3BEYigpe1RfelBiX0RiUmVzdWx0IAotcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTRhNysxMDIwLTB4MThhMyl9O3Jlc3VsdD0KK3Jlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDFjMDkrMTg1OC0weDIzNGIpfTtyZXN1bHQ9CiBhdFBiX0V4ZWNEYlNxbChaVEVfRFJPUF9QQk1fU1FMLE5VTEwsTlVMTCk7aWYoWlBCX0RCX09LIT1yZXN1bHQpe3Nsb2coUEJfUFJJTlQsCiBTTE9HX0VSUiwKICJceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDRceDcyXHg2Zlx4NzBceDQ0XHg2Mlx4M2FceDY0XHg2NVx4NmNceDIwXHg3MFx4NjJceDZkXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4MjBceDY5XHg3M1x4MjBceDI1XHg2NCIgIlxuIgpAQCAtNTEsNyArNTEsNyBAQAogKTtyZXR1cm4gWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDczXHg3MVx4NmNceDY5XHg3NFx4NjVceDMzXHg1Zlx4NmZceDcwXHg2NVx4NmVceDIwXHg2M1x4NjFceDZjXHg2YyIKICk7Ci0jaWYgKDB4MWY5ZisxMjI5LTB4MjQ2YykNCisjaWYgKDB4Y2MwKzgzMC0weGZmZSkNCiBpZighZm9wZW4oWlBCX0RCX1BBVEgsIlx4NzIiKSl7ZmlsZT1mb3BlbihaUEJfREJfUEFUSCwiXHg3NyIpO2lmKCFmaWxlKXtwcmludGYoCiAiXHg3NVx4NmVceDYxXHg2Mlx4NmNceDY1XHgyMFx4NzRceDZmXHgyMFx4NmZceDcwXHg2NVx4NmVceDIwXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg2NVx4NzRceDYzXHg1Zlx4NzJceDc3XHgyZlx4NzBceDYyXHg2ZFx4MmVceDY0XHg2MiIgIlxuIgogKTt9ZWxzZXtwcmludGYoCkBAIC02OCwzMiArNjgsMzIgQEAKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDYzXHg2Y1x4NmZceDczXHg2NVx4MjBceDY0XHg2MiIKICk7cmV0dXJuIFpQQl9EQl9FUlJPUjt9CiAjaWZkZWYgV0VCU19TRUNVUklUWQ0KLWlmKGFjY2VzcyhaUEJfVE1QX1BBVEgsRl9PSyk9PSgweDI0ZTQrNDI1LTB4MjY4ZCkpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCitpZihhY2Nlc3MoWlBCX1RNUF9QQVRILEZfT0spPT0oMHgxYWRjKzE3OTEtMHgyMWRiKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg3NFx4NmRceDcwXHgyMFx4NjRceDYyXHgyMFx4NzNceDc0XHg2MVx4NzkiKTtpZigKLXJlbW92ZShaUEJfVE1QX1BBVEgpIT0oMHg5MGYrNjQzNy0weDIyMzQpKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAorcmVtb3ZlKFpQQl9UTVBfUEFUSCkhPSgweDgwYSs3NDAyLTB4MjRmNCkpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3Mlx4NjVceDZkXHg2Zlx4NzZceDY1XHgyMFx4NWFceDUwXHg0Mlx4NWZceDU0XHg0ZFx4NTBceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgotKTt9fWlmKHJlbmFtZShaUEJfU0VDX1BBVEgsWlBCX1RNUF9QQVRIKSE9KDB4MjQzZCsxNjktMHgyNGU2KSl7c2xvZyhQQl9QUklOVCwKKyk7fX1pZihyZW5hbWUoWlBCX1NFQ19QQVRILFpQQl9UTVBfUEFUSCkhPSgweDRlNis3NzkxLTB4MjM1NSkpe3Nsb2coUEJfUFJJTlQsCiBTTE9HX0VSUiwKICJceDcyXHg2NVx4NmVceDYxXHg2ZFx4NjVceDIwXHg1YVx4NTBceDQyXHg1Zlx4NTNceDQ1XHg0M1x4NWZceDUwXHg0MVx4NTRceDQ4XHgyMFx4NjZceDYxXHg2OVx4NmMiCi0pO317Y2hhciBybnVtX2J1ZlsoMHg1MjErODY5MS0weDI2ZmMpXT17KDB4NGI3Kzg1NzQtMHgyNjM1KX07Y2hhciBjbWRbCi0oMHgxMTFmKzI1NzItMHgxYWFiKV09eygweGEzMSsyNjE0LTB4MTQ2Nyl9O3NjX2NmZ19nZXQoCispO317Y2hhciBybnVtX2J1ZlsoMHg1N2ErNzYwNy0weDIzMTkpXT17KDB4MTM5MCsxMDI0LTB4MTc5MCl9O2NoYXIgY21kWworKDB4N2Y4KzMwNTUtMHgxMzY3KV09eygweGUzYSs0MjkzLTB4MWVmZil9O3NjX2NmZ19nZXQoCiAiXHg3Mlx4NmVceDc1XHg2ZFx4NWZceDYxXHg3NCIscm51bV9idWYsc2l6ZW9mKHJudW1fYnVmKSk7c25wcmludGYoY21kLHNpemVvZigKIGNtZCksCiAiXHgyZlx4NjJceDY5XHg2ZVx4MmZceDZmXHg3MFx4NjVceDZlXHg3M1x4NzNceDZjXHgyMFx4NjVceDZlXHg2M1x4MjBceDJkXHg2NVx4MjBceDJkXHg2MVx4NjVceDczXHgzMlx4MzVceDM2XHgyMFx4MmRceDczXHg2MVx4NmNceDc0XHgyMFx4MmRceDY5XHg2ZVx4MjBceDI1XHg3M1x4MjBceDJkXHg2Zlx4NzVceDc0XHgyMFx4MjVceDczXHgyMFx4MmRceDcwXHg2MVx4NzNceDczXHgyMFx4NzBceDYxXHg3M1x4NzNceDNhXHgyNVx4NzMiCiAsWlBCX0RCX1BBVEgsWlBCX1NFQ19QQVRILHJudW1fYnVmKTt6eGljX3N5c3RlbShjbWQpO2lmKGFjY2VzcyhaUEJfU0VDX1BBVEgsRl9PSwotKT09KDB4NTg5Kzc5MDItMHgyNDY3KSl7aWYocmVtb3ZlKFpQQl9UTVBfUEFUSCkhPSgweDhjMSs1OTktMHhiMTgpKXtzbG9nKAotUEJfUFJJTlQsU0xPR19FUlIsCispPT0oMHhmYjYrMzYzNS0weDFkZTkpKXtpZihyZW1vdmUoWlBCX1RNUF9QQVRIKSE9KDB4ZjQ1Kzg3LTB4ZjljKSl7c2xvZyhQQl9QUklOVAorLFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDVhXHg1MFx4NDJceDVmXHg1NFx4NGRceDUwXHg1Zlx4NTBceDQxXHg1NFx4NDhceDMxXHgyMFx4NjZceDYxXHg2OVx4NmMiCiApO319fQogI2VuZGlmCQ0KIHJldHVybiBaUEJfREJfT0s7fXN0YXRpYyBjaGVja19zcWxfY21kKGNvbnN0IGNoYXIqcFNxbCl7aWYocFNxbCE9TlVMTCl7aWYoc3Ryc3RyCi0ocFNxbCwiXHgzYiIpfHxzdHJzdHIocFNxbCwiXHgyZFx4MmQiKSl7cmV0dXJuKDB4ZmErNDI2NS0weDExYTMpO31yZXR1cm4KLSgweDNjOCs2ODgwLTB4MWVhNyk7fXJldHVybigweGY1MCsyOTktMHgxMDdiKTt9VF96UGJfRGJSZXN1bHQgYXRQYl9FeGVjRGJTcWwoCisocFNxbCwiXHgzYiIpfHxzdHJzdHIocFNxbCwiXHgyZFx4MmQiKSl7cmV0dXJuKDB4MzRmKzUyNy0weDU1ZSk7fXJldHVybgorKDB4NjExKzYxMzgtMHgxZTBhKTt9cmV0dXJuKDB4MjY5KzI5ODUtMHhlMTIpO31UX3pQYl9EYlJlc3VsdCBhdFBiX0V4ZWNEYlNxbCgKIGNvbnN0IGNoYXIqcFNxbCxzcWxpdGUzX2NhbGxiYWNrIGNhbGxiYWNrLFZPSUQqcEZ2YXJnKXtzcWxpdGUzKnBEYj1OVUxMO0NIQVIgCi1kYkVyck1zZ1soMHgyZTArNTM4Ni0weDE3NmEpXT17KDB4NDU1Kzc4MTQtMHgyMmRiKX07aWYoTlVMTD09cFNxbCl7cmV0dXJuIAorZGJFcnJNc2dbKDB4MTdkKzQ3MjQtMHgxMzcxKV09eygweGU2KzkzOTctMHgyNTliKX07aWYoTlVMTD09cFNxbCl7cmV0dXJuIAogWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fQogI2lmZGVmIFdFQlNfU0VDVVJJVFkNCi1pZihjaGVja19zcWxfY21kKHBTcWwpPT0oMHhjZjUrNjA5OC0weDI0YzcpKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAoraWYoY2hlY2tfc3FsX2NtZChwU3FsKT09KDB4MTdiZCsyODYyLTB4MjJlYikpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHgyMVx4MjFceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDVceDc4XHg2NVx4NjNceDQ0XHg2Mlx4NTNceDcxXHg2Y1x4M2FceDc4XHg3M1x4NzNceDIwXHgyNVx4NzMiICJcbiIKICxwU3FsKTtyZXR1cm4gWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fQogI2VuZGlmCQ0KQEAgLTEwMiwzMyArMTAyLDMzIEBACiApO3JldHVybiBaUEJfREJfRVJST1JfTk9UT1BFTkRCO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ1XHg3OFx4NjVceDYzXHg0NFx4NjJceDUzXHg3MVx4NmNceDNhXHgyNVx4NzMiICJcbiIKICxwU3FsKTtpZihzcWxpdGUzX2V4ZWMocERiLHBTcWwsY2FsbGJhY2sscEZ2YXJnLE5VTEwpKXtzdHJuY3B5KGRiRXJyTXNnLAotc3FsaXRlM19lcnJtc2cocERiKSxzaXplb2YoZGJFcnJNc2cpLSgweDlmYisyNTQ2LTB4MTNlYykpO3Nsb2coUEJfUFJJTlQsU0xPR19FUlIKK3NxbGl0ZTNfZXJybXNnKHBEYiksc2l6ZW9mKGRiRXJyTXNnKS0oMHg2MGYrMzQ4OS0weDEzYWYpKTtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSCiAsCiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NjNceDYxXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg2NVx4NzhceDY1XHg2M1x4MjBceDczXHg3MVx4NmNceDJjXHg3M1x4NzFceDZjXHg2OVx4NzRceDY1XHgzM1x4NWZceDY1XHg3Mlx4NzJceDZkXHg3M1x4NjdceDNhXHgyNVx4NzNceDJlIgogLGRiRXJyTXNnKTsoVk9JRClzcWxpdGUzX2Nsb3NlKHBEYik7cmV0dXJuIFpQQl9EQl9FUlJPUjt9KFZPSUQpYXRQYl9EYkNsb3NlKHBEYikKIDtyZXR1cm4gWlBCX0RCX09LO31TSU5UMzIgYXRQYl9Jbml0QXBJbmRleENiKFZPSUQqZnZhcmcsaW50IGxpbmUsY2hhcioqenJlc3VsdCwKLWNoYXIqKmxuYW1lKXtTSU5UMzIgaW5kZXg9KDB4MjRmKzQ3MzMtMHgxNGNjKTtpZigoMHgxOThkKzI3OTYtMHgyNDc4KT5saW5lKXtzbG9nCi0oUEJfUFJJTlQsU0xPR19FUlIsCitjaGFyKipsbmFtZSl7U0lOVDMyIGluZGV4PSgweDI0MWMrNTE3LTB4MjYyMSk7aWYoKDB4NWE3KzE0ODQtMHhiNzIpPmxpbmUpe3Nsb2coCitQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDlceDZlXHg2OVx4NzRceDQxXHg3MFx4NDlceDZlXHg2NFx4NjVceDc4XHg0M1x4NjJceDNhXHg3Mlx4NjVceDYzXHg2Zlx4NzJceDY0XHgyMFx4NmVceDZmXHgyMFx4NjRceDYxXHg3NFx4NjFceDJlIiAiXG4iCi0pO3JldHVybi0oMHg3NGMrMTIwNi0weGMwMSk7fWluZGV4PWF0b2koenJlc3VsdFsoMHgxOTZhKzE5MzEtMHgyMGY1KV0pO2lmKGluZGV4PgorKTtyZXR1cm4tKDB4M2E4KzEyNDItMHg4ODEpO31pbmRleD1hdG9pKHpyZXN1bHRbKDB4M2JjKzU2NDYtMHgxOWNhKV0pO2lmKGluZGV4PgogWlBCX0FQX01BWF9SRUNPUkQpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ5XHg2ZVx4NjlceDc0XHg0MVx4NzBceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDNceDYyXHgzYVx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NmZceDc2XHg2NVx4NzJceDY2XHg2Y1x4NmZceDc3XHgyZSIgIlxuIgotKTtyZXR1cm4tKDB4MzcwKzE1MDEtMHg5NGMpO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCispO3JldHVybi0oMHg0NjIrNDQzNy0weDE1YjYpO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ5XHg2ZVx4NjlceDc0XHg0MVx4NzBceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDNceDYyXHgzYVx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NCIgIlxuIgotLGluZGV4KTtnX3pQYl9BcEluZGV4W2luZGV4XT1QQk1fU1VDQ0VTUztyZXR1cm4oMHhjMTUrMjAwNS0weDEzZWEpO30KLVRfelBiX0RiUmVzdWx0IGF0UGJfSW5pdEFwSW5kZXgoKXtDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4ZjlhKzM1Ny0weDEwZmYpCi19O1NJTlQzMiBpPSgweGI2OCs0Mjc5LTB4MWMxZSk7Z196UGJfQXBJbmRleFsoMHgxYWNhKzczMS0weDFkYTUpXT0KLVpQQl9BUF9NQVhfUkVDT1JEO2ZvcihpPSgweDhhZCsxMTY5LTB4ZDNkKTtpPD1nX3pQYl9BcEluZGV4WygweDIxNTkrMjc0LTB4MjI2YildCi07aSsrKXtnX3pQYl9BcEluZGV4W2ldPVBCTV9FUlJPUl9OT1RfRk9VTkQ7fXNucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKKyxpbmRleCk7Z196UGJfQXBJbmRleFtpbmRleF09UEJNX1NVQ0NFU1M7cmV0dXJuKDB4MzBhKzUxOTctMHgxNzU3KTt9CitUX3pQYl9EYlJlc3VsdCBhdFBiX0luaXRBcEluZGV4KCl7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDEwMys2Mi0weDE0MSl9OworU0lOVDMyIGk9KDB4ZTUrNjA3Ny0weDE4YTEpO2dfelBiX0FwSW5kZXhbKDB4MTQ3YisyNDUtMHgxNTcwKV09WlBCX0FQX01BWF9SRUNPUkQKKztmb3IoaT0oMHhhZTcrMjE0My0weDEzNDUpO2k8PWdfelBiX0FwSW5kZXhbKDB4OGI4KzkzLTB4OTE1KV07aSsrKXtnX3pQYl9BcEluZGV4CitbaV09UEJNX0VSUk9SX05PVF9GT1VORDt9c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDUwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9BUCk7cmV0dXJuIGF0UGJfRXhlY0RiU3FsKHNxbCxhdFBiX0luaXRBcEluZGV4Q2IsCi1aVUZJX05VTEwpO31JTlQgenRlX3BibV9jaGVja19hbmRfY3JlYXRfZGlyKGNoYXIqcGF0aCl7aWYoLSgweDE4MTgrMTkzMy0weDFmYTQpCi09PWFjY2VzcyhwYXRoLCgweDE0NDQrMjA0My0weDFjM2YpKSl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAorWlVGSV9OVUxMKTt9SU5UIHp0ZV9wYm1fY2hlY2tfYW5kX2NyZWF0X2RpcihjaGFyKnBhdGgpe2lmKC0oMHgyMGQ2Kzk4NS0weDI0YWUpPT0KK2FjY2VzcyhwYXRoLCgweGFmNSs2NDIzLTB4MjQwYykpKXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4MjVceDczXHgyMFx4NjRceDZmXHg2NVx4NzNceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjVceDc4XHg2OVx4NzNceDc0XHgyY1x4NzNceDZmXHg2M1x4NzJceDY1XHg2MVx4NzRceDY1XHgyMFx4NjlceDc0XHgyZSIgIlxuIgotLFpQQl9EQl9ESVIpO2lmKC0oMHhlMDYrNjM2Ni0weDI2ZTMpPT1ta2RpcihwYXRoLCgweGZhZisxODEwLTB4MTRjMikpKXtzbG9nKAorLFpQQl9EQl9ESVIpO2lmKC0oMHg5ZTkrNzE3Ni0weDI1ZjApPT1ta2RpcihwYXRoLCgweDM0OSs2MDYtMHgzYTgpKSl7c2xvZygKIFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4M2FceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDIwXHg3NFx4NmZceDIwXHg2M1x4NzJceDY1XHg2MVx4NzRceDY1XHgyMFx4NjRceDYyXHgyMFx4NjRceDY5XHg3Mlx4MmUiICJcbiIKLSk7cmV0dXJuLSgweDIyZCsyMDY1LTB4YTNkKTt9fXJldHVybigweDdmNysxNDU0LTB4ZGE1KTt9VUlOVDggCispO3JldHVybi0oMHg0N2IrNDUtMHg0YTcpO319cmV0dXJuKDB4MWRlYysxOTI0LTB4MjU3MCk7fVVJTlQ4IAogenRlX3BibV9jaGVja193ZWJfcGJtX2RpcihWT0lEKXsKICNpZmRlZiBfTUJCX09TX1VDTElOVVgNCiAoVk9JRCl6dGVfcGJtX2NoZWNrX2FuZF9jcmVhdF9kaXIoCkBAIC0xNDIsMjMgKzE0MiwyMyBAQAogIlx4MmZceDY1XHg3NFx4NjNceDVmXHg3Mlx4NzdceDJmXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3Iik7CiAjZW5kaWYNCiByZXR1cm4gWlVGSV9TVUNDO31UX3pQYl9EYlJlc3VsdCBhdFBiX0RlbFNpbVJlY0Zyb21QYlRhYmxlKFNJTlQzMiBpbmRleCl7Ci1UX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsoMHhhODArMTY1Ni0weDEwZjgpfQotO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKK1RfelBiX0RiUmVzdWx0IHJlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDEzMDUrNDg2Mi0weDI2MDMpCit9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NFx4MjBceDYxXHg2ZVx4NjRceDIwXHg1MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgzZFx4MjVceDY0IgogLFpQQl9EQl9QQk1fVEFCTEUsWlBCX0xPQ0FUSU9OX1VTSU0saW5kZXgpO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTsKIGlmKFpQQl9EQl9PSz09cmVzdWx0KXtnX3pQYl9TaW1JbmRleFtpbmRleF09UEJNX0VSUk9SX05PVF9GT1VORDt9cmV0dXJuIHJlc3VsdDt9CiBUX3pQYl9EYlJlc3VsdCBhdFBiX0xvYWRBUmVjVG9QYm1UYWJsZShUX3pQYl9XZWJDb250YWN0KnBiUGFyYSl7VF96UGJfRGJSZXN1bHQgCi1yZXN1bHQ9WlBCX0RCX0VSUk9SO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsoMHgxNjY4KzYyNi0weDE4ZGEpfTtpZihOVUxMPT0KK3Jlc3VsdD1aUEJfREJfRVJST1I7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweGYwYys1MjA1LTB4MjM2MSl9O2lmKE5VTEw9PQogcGJQYXJhKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0Y1x4NmZceDYxXHg2NFx4NDFceDUyXHg2NVx4NjNceDU0XHg2Zlx4NTBceDYyXHg2ZFx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2OVx4NmVceDcwXHg3NVx4NzQiCiApO3JldHVybiBaUEJfREJfRVJST1JfSU5WQUxJRFBUUjt9c25wcmludGYoc3FsLHNpemVvZihzcWwpLCJpbnNlcnQgaW50byAlcyAoUGJtX2luZGV4LExvY2F0aW9uLE51bWJlcixUeXBlLE5hbWUsQW5yLEFucjEsRW1haWwsU25lKSBcDQogCQkJdmFsdWVzKFwnJWRcJyxcJyVkXCcsXCclc1wnLFwnJWRcJyxcJyVzXCcsXCclc1wnLFwnJXNcJyxcJyVzXCcsXCclc1wnKSIsWlBCX0RCX1BCTV9UQUJMRSxwYlBhcmEtPnBiSW5kZXgscGJQYXJhLT5wYkxvY2F0aW9uLHBiUGFyYS0+bW9iaWxOdW1iZXIscGJQYXJhCiAtPnBiVHlwZSxwYlBhcmEtPm5hbWUscGJQYXJhLT5ob21lTnVtYmVyLHBiUGFyYS0+b2ZmaWNlTnVtYmVyLHBiUGFyYS0+ZW1haWwsCiBwYlBhcmEtPnNuZSk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSz09cmVzdWx0KXtDSEFSIAotcGJNYXhbKDB4MTNjZCsxMTk5LTB4MTg0YSldPXsoMHgyMDNmKzEwMTItMHgyNDMzKX07c2NfY2ZnX2dldCgKLVpQQl9OVl9VU0lNSU5ERVhNQVgscGJNYXgsc2l6ZW9mKHBiTWF4KSk7aWYoKHBiUGFyYS0+cGJJbmRleD49KDB4MjE0OSs0OC0weDIxNzgpCi0pJiYocGJQYXJhLT5wYkluZGV4PD1hdG9pKHBiTWF4KSkpe2dfelBiX1NpbUluZGV4W3BiUGFyYS0+cGJJbmRleF09UEJNX1NVQ0NFU1M7fQotKFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO31lbHNleyhWT0lEKXNjX2NmZ19zZXQoCitwYk1heFsoMHg4YTkrNjM5Ny0weDIxNzQpXT17KDB4NjczKzE5ODAtMHhlMmYpfTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgsCitwYk1heCxzaXplb2YocGJNYXgpKTtpZigocGJQYXJhLT5wYkluZGV4Pj0oMHgxNjhiKzM4MTEtMHgyNTZkKSkmJihwYlBhcmEtPgorcGJJbmRleDw9YXRvaShwYk1heCkpKXtnX3pQYl9TaW1JbmRleFtwYlBhcmEtPnBiSW5kZXhdPVBCTV9TVUNDRVNTO30oVk9JRCkKK3NjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX09QRVJBVEVfU1VDKTt9ZWxzZXsoVk9JRClzY19jZmdfc2V0KAogWlBCX05WX1dSSVRFX0ZMQUcsWlBCX05FV19FUlJPUik7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2NVx4NzhceDY1XHg2M1x4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDI1XHg3M1x4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHgyNVx4NjQiICJcbiIKICxaUEJfREJfUEJNX1RBQkxFLHJlc3VsdCk7cmV0dXJuIHJlc3VsdDt9Vk9JRCBhdFBiX1NxbE1vZGlmeU9uZVJlYygKQEAgLTE3MywxNyArMTczLDE3IEBACiBwYm1QYXJhLT5wYlR5cGUscGJtUGFyYS0+bmFtZSxwYm1QYXJhLT5ob21lTnVtYmVyLHBibVBhcmEtPm9mZmljZU51bWJlcixwYm1QYXJhCiAtPmVtYWlsLHBibVBhcmEtPnNuZSxwYm1QYXJhLT5ncm91cCxwYm1QYXJhLT5wYklkKTt9fVRfelBiX0RiUmVzdWx0IAogYXRQYl9EYkdldFBhcmFtQ2IoVk9JRCpmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtUX3pQYl9IZWFkZXIgCi1wYXJhPXsoMHg0YmYrMjczMC0weGY2OSl9O2lmKCgweGQ5YSsyOTA2LTB4MThmMyk+bGluZSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK3BhcmE9eygweDNkKzk2MzYtMHgyNWUxKX07aWYoKDB4MWE0NysxNjU2LTB4MjBiZSk+bGluZSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDRceDYyXHg0N1x4NjVceDc0XHg1MFx4NjFceDcyXHg2MVx4NmRceDQzXHg2Mlx4M2FceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDIwXHg2ZVx4NmZceDIwXHg2NFx4NjFceDc0XHg2MVx4MmUiCi0pO3JldHVybiBaUEJfREJfRVJST1I7fXBhcmEucGJJbmRleD1hdG9pKHpyZXN1bHRbKDB4MTliZCsxOTEwLTB4MjEzMyldKTtwYXJhLgotcGJMb2NhdGlvbj1hdG9pKHpyZXN1bHRbKDB4N2QyKzU4NDctMHgxZWE4KV0pO3Nsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKKyk7cmV0dXJuIFpQQl9EQl9FUlJPUjt9cGFyYS5wYkluZGV4PWF0b2koenJlc3VsdFsoMHgzMTYrODgyMy0weDI1OGQpXSk7cGFyYS4KK3BiTG9jYXRpb249YXRvaSh6cmVzdWx0WygweGEyYSs1NDItMHhjNDcpXSk7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0NFx4NjJceDQ3XHg2NVx4NzRceDUwXHg2MVx4NzJceDYxXHg2ZFx4NDNceDYyXHgzYVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NFx4MmNceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxwYXJhLnBiSW5kZXgscGFyYS5wYkxvY2F0aW9uKTttZW1jcHkoZnZhcmcsJnBhcmEsc2l6ZW9mKHBhcmEpKTtyZXR1cm4gWlBCX0RCX09LCiA7fVRfelBiX0RiUmVzdWx0IGF0UGJfR2V0SW5kZXhMb2NhdGlvbkJ5SWQoVF96UGJfSGVhZGVyKnBiUGFyYSl7Q0hBUiBzcWxbCi1aUEJfTUFYX0JZVEVTX0RCXT17KDB4MWQ1MysxODIxLTB4MjQ3MCl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0KLSgweDFiNDMrMjc4LTB4MWM1OCksCitaUEJfTUFYX0JZVEVTX0RCXT17KDB4YWI1KzU0MzgtMHgxZmYzKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLQorKDB4ZTQ1KzIwMDUtMHgxNjE5KSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg1MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyY1x4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg2OVx4NjRceDNkXHgyNVx4NjQiCi0sWlBCX0RCX1BCTV9UQUJMRSxwYlBhcmEtPnBiSWQpO21lbXNldChwYlBhcmEsKDB4YjdhKzExOS0weGJmMSksc2l6ZW9mKAorLFpQQl9EQl9QQk1fVEFCTEUscGJQYXJhLT5wYklkKTttZW1zZXQocGJQYXJhLCgweGVhNyszOTMzLTB4MWUwNCksc2l6ZW9mKAogVF96UGJfSGVhZGVyKSk7cmV0dXJuIGF0UGJfRXhlY0RiU3FsKHNxbCxhdFBiX0RiR2V0UGFyYW1DYixwYlBhcmEpO31WT0lEIAogYXRQYl9TcWxOZXdPbmVSZWMoVF96UGJfV2ViQ29udGFjdCpwYm1QYXJhLENIQVIqc3FsLGludCBsZW4pe2lmKAogWlBCX0xPQ0FUSU9OX1VTSU09PXBibVBhcmEtPnBiTG9jYXRpb24pe3NucHJpbnRmKHNxbCxsZW4sImluc2VydCBpbnRvICVzIChQYm1faW5kZXgsTG9jYXRpb24sTnVtYmVyLFR5cGUsTmFtZSxBbnIsQW5yMSxFbWFpbCxTbmUpXA0KQEAgLTE5NSw3ICsxOTUsNyBAQAogcGJtUGFyYS0+cGJUeXBlLHBibVBhcmEtPm5hbWUscGJtUGFyYS0+aG9tZU51bWJlcixwYm1QYXJhLT5vZmZpY2VOdW1iZXIscGJtUGFyYQogLT5lbWFpbCxwYm1QYXJhLT5zbmUscGJtUGFyYS0+Z3JvdXApO319VF96UGJfRGJSZXN1bHQgCiBhdFBiX1dyaXRlQ29udGFjdFRvUGJtVGFibGUoVF96UGJfV2ViQ29udGFjdCpwUGJSZWNvcmQsQk9PTCBwYk5ld0ZsYWcpewotVF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MzA1KzY0Ny0weDU4Yyl9OworVF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4N2ViKzEzOTItMHhkNWIpfTsKIGlmKE5VTEw9PXBQYlJlY29yZCl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTdceDcyXHg2OVx4NzRceDY1XHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4NTRceDZmXHg1MFx4NjJceDZkXHg1NFx4NjFceDYyXHg2Y1x4NjVceDNhXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NCIKICk7cmV0dXJuIFpQQl9EQl9FUlJPUl9JTlZBTElEUFRSO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCkBAIC0yMDYsNzUgKzIwNiw3NSBAQAogWlBCX0xPQ0FUSU9OX1VTSU09PXBQYlJlY29yZC0+cGJMb2NhdGlvbil7Z196UGJfU2ltSW5kZXhbKHBQYlJlY29yZC0+cGJJbmRleCldPQogUEJNX1NVQ0NFU1M7fWVsc2UgaWYoWlBCX0xPQ0FUSU9OX0FQPT1wUGJSZWNvcmQtPnBiTG9jYXRpb24pe2dfelBiX0FwSW5kZXhbKAogcFBiUmVjb3JkLT5wYkluZGV4KV09UEJNX1NVQ0NFU1M7fX1yZXR1cm4gcmVzdWx0O31TSU5UMzIgYXRQYl9EYkNvdW50VGFibGVMaW5lQ2IKLShWT0lEKmZ2YXJnLGludCBsaW5lLGNoYXIqKnpyZXN1bHQsY2hhcioqbG5hbWUpe2lmKCgweGQ1ZCs1NDA1LTB4MjI3OSk+bGluZSl7CisoVk9JRCpmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtpZigoMHg0MzUrNDQ2OS0weDE1YTkpPmxpbmUpewogc2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg3Mlx4NjVceDYzXHg2Zlx4NzJceDY0XHgyMFx4NmVceDZmXHgyMFx4NjRceDYxXHg3NFx4NjFceDJlIgotKTtyZXR1cm4tKDB4YWMyKzY2NDMtMHgyNGI0KTt9KihpbnQqKWZ2YXJnPWF0b2koenJlc3VsdFsoMHg5YWQrNDEzOC0weDE5ZDcpXSk7Ci1yZXR1cm4oMHgxM2UzKzIxNC0weDE0YjkpO31UX3pQYl9EYlJlc3VsdCBhdFBiX1NldFNpbUNhcGFjaXR5VGFibGUoCispO3JldHVybi0oMHgyODIrOTE4OC0weDI2NjUpO30qKGludCopZnZhcmc9YXRvaSh6cmVzdWx0WygweDc3OSs0NDMxLTB4MThjOCldKTsKK3JldHVybigweGM0ZCsyMjY5LTB4MTUyYSk7fVRfelBiX0RiUmVzdWx0IGF0UGJfU2V0U2ltQ2FwYWNpdHlUYWJsZSgKIFRfelBiX1VzaW1DYXBhY2l0eSBwYlBhcmEpe1RfelBiX0RiUmVzdWx0IHJlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbCi1aUEJfTUFYX0JZVEVTX0RCXT17KDB4MWM5NisxNTE3LTB4MjI4Myl9O1VJTlQzMiBjb3VudD0oMHgzNDYrNjgyMy0weDFkZWQpOwotc25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDFiZmYrODMxLTB4MWYzZCksCitaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTAxNys2MjctMHgxMjhhKX07VUlOVDMyIGNvdW50PSgweDE3M2ErMjQ3My0weDIwZTMpOworc25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDdmYys1MzczLTB4MWNmOCksCiAiXHg3M1x4NjVceDZjXHg2NVx4NjNceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzMiCiAsWlBCX0RCX1NJTV9DQVBBQklMSVRZX1RBQkxFKTsoVk9JRClhdFBiX0V4ZWNEYlNxbChzcWwsYXRQYl9EYkNvdW50VGFibGVMaW5lQ2IsJgotY291bnQpO2lmKCgweGRkMCsxMTk1LTB4MTI3Yik8Y291bnQpe21lbXNldChzcWwsKDB4NzJhKzUzMzItMHgxYmZlKSxzaXplb2Yoc3FsKSkKLTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4N2EwKzQwNDQtMHgxNzZiKSwKK2NvdW50KTtpZigoMHgxZCs3Mjg4LTB4MWM5NSk8Y291bnQpe21lbXNldChzcWwsKDB4Y2Q5KzQ3NTktMHgxZjcwKSxzaXplb2Yoc3FsKSk7CitzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4YmQ0KzI1OTktMHgxNWZhKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDUzXHg2OVx4NmRceDVmXHg3NFx4NzlceDcwXHg2NVx4M2VceDNkXHgzMCIKICxaUEJfREJfU0lNX0NBUEFCSUxJVFlfVEFCTEUpO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTtpZihaUEJfREJfT0sKICE9cmVzdWx0KXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NzRceDUzXHg2OVx4NmRceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjZceDYxXHg2OVx4NmNceDIxIiAiXG4iCi0pO3JldHVybiByZXN1bHQ7fX1tZW1zZXQoc3FsLCgweDEwZWMrNDc1LTB4MTJjNyksc2l6ZW9mKHNxbCkpO3NucHJpbnRmKHNxbCwKLXNpemVvZihzcWwpLSgweGQ3MSszODY2LTB4MWM4YSksImluc2VydCBpbnRvICVzIChTaW1fdHlwZSxNYXhfcmVjb3JkX251bWJlcixVc2VkX3JlY29yZF9udW1iZXIsTWF4X251bWJlcl9sZW4sTWF4X25hbWVfbGVuLE1heF9hbnJfbGVuLE1heF9hbnIxX2xlbiwgXA0KKyk7cmV0dXJuIHJlc3VsdDt9fW1lbXNldChzcWwsKDB4YzZjKzUzNjgtMHgyMTY0KSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLAorc2l6ZW9mKHNxbCktKDB4MTY5KzgwMTYtMHgyMGI4KSwiaW5zZXJ0IGludG8gJXMgKFNpbV90eXBlLE1heF9yZWNvcmRfbnVtYmVyLFVzZWRfcmVjb3JkX251bWJlcixNYXhfbnVtYmVyX2xlbixNYXhfbmFtZV9sZW4sTWF4X2Fucl9sZW4sTWF4X2FucjFfbGVuLCBcDQogCSAgICAgICAgICBNYXhfZW1haWxfbGVuLE1heF9zbmVfbGVuKSB2YWx1ZXMoXCclZFwnLFwnJWRcJyxcJyVkXCcsXCclZFwnLFwnJWRcJyxcJyVkXCcsXCclZFwnLFwnJWRcJyxcJyVkXCcpIixaUEJfREJfU0lNX0NBUEFCSUxJVFlfVEFCTEUscGJQYXJhLnNpbVR5cGUscGJQYXJhLm1heFJlY29yZE51bSxwYlBhcmEuCiB1c2VkUmVjb3JkTnVtLHBiUGFyYS5tYXhOdW1iZXJMZW4scGJQYXJhLm1heE5hbWVMZW4scGJQYXJhLm1heEFuckxlbixwYlBhcmEuCiBtYXhBbnIxTGVuLHBiUGFyYS5tYXhFbWFpbExlbixwYlBhcmEubWF4U25lTGVuKTtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NzRceDUzXHg2OVx4NmRceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NmZceDZiXHgyMSIgIlxuIgogKTtyZXR1cm4gYXRQYl9FeGVjRGJTcWwoc3FsLE5VTEwsTlVMTCk7fVRfelBiX0RiUmVzdWx0IGF0UGJfU2V0QXBDYXBhY2l0eVRhYmxlKCkKLXtUX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsoMHg4OTgrNDM1My0weDE5OTkpCi19O1NJTlQzMiBjb3VudD0oMHhmZDArNDc3My0weDIyNzUpO1RfelBiX0FwQ2FwYWNpdHkgcGJQYXJhPXsoMHg2OTYrMTMzNC0weGJjYyl9Owotc25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDg4Mis2MTYyLTB4MjA5MyksCit7VF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4OWVmKzI2OTAtMHgxNDcxKQorfTtTSU5UMzIgY291bnQ9KDB4MWUzMisxMDg4LTB4MjI3Mik7VF96UGJfQXBDYXBhY2l0eSBwYlBhcmE9eworKDB4MTQyYyszNjc2LTB4MjI4OCl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxY2YzKzE0NzMtMHgyMmIzKSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3MyIKICxaUEJfREJfREVWSUNFX0NBUEFCSUxJVFlfVEFCTEUpOyhWT0lEKWF0UGJfRXhlY0RiU3FsKHNxbCwKLWF0UGJfRGJDb3VudFRhYmxlTGluZUNiLCZjb3VudCk7aWYoKDB4MmY2Kzc5NC0weDYxMCk8Y291bnQpe21lbXNldChzcWwsCi0oMHhkYzIrMzU2My0weDFiYWQpLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4MTUyMCsxNTM0LTB4MWIxZCksCithdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweDQzNCs3NjU1LTB4MjIxYik8Y291bnQpe21lbXNldChzcWwsCisoMHg4M2ErMjYyNC0weDEyN2EpLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4YmIyKzM4ODItMHgxYWRiKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3MyIsCiBaUEJfREJfREVWSUNFX0NBUEFCSUxJVFlfVEFCTEUpO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTtpZigKIFpQQl9EQl9PSyE9cmVzdWx0KXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NzRceDQxXHg3MFx4NDNceDYxXHg3MFx4NjFceDYzXHg2OVx4NzRceDc5XHg1NFx4NjFceDYyXHg2Y1x4NjVceDNhXHg2Nlx4NjFceDY5XHg2Y1x4MjEiICJcbiIKLSk7cmV0dXJuIHJlc3VsdDt9fW1lbXNldChzcWwsKDB4MTdhKzEzMTgtMHg2YTApLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwsc2l6ZW9mCi0oc3FsKS0oMHgxMmMrODEwNy0weDIwZDYpLAorKTtyZXR1cm4gcmVzdWx0O319bWVtc2V0KHNxbCwoMHgxMDZhKzQxNjEtMHgyMGFiKSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLAorc2l6ZW9mKHNxbCktKDB4OGU5Kzc2Ni0weGJlNiksCiAiXHg3M1x4NjVceDZjXHg2NVx4NjNceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVApO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsCiBhdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKFpQQl9EQl9PSz09cmVzdWx0KXtwYlBhcmEudXNlZFJlY29yZE51bT1jb3VudAogO3BiUGFyYS5tYXhSZWNvcmROdW09WlBCX0FQX01BWF9SRUNPUkQ7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDZkXHg2MVx4NzhceDVmXHg3Mlx4NjVceDYzXHg1Zlx4NmVceDc1XHg2ZFx4M2RceDI1XHg2NFx4MmNceDc1XHg3M1x4NjVceDY0XHgzZFx4MjVceDY0IgotLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLnVzZWRSZWNvcmROdW0pO21lbXNldChzcWwsKDB4MTQ5YiszMTM5LTB4MjBkZSksCi1zaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDEwNTArMzMxOS0weDFkNDYpLAorLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLnVzZWRSZWNvcmROdW0pO21lbXNldChzcWwsKDB4ZjlhKzU4NDUtMHgyNjZmKSxzaXplb2YKKyhzcWwpKTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4NjZiKzcwMzQtMHgyMWU0KSwKICJceDY5XHg2ZVx4NzNceDY1XHg3Mlx4NzRceDIwXHg2OVx4NmVceDc0XHg2Zlx4MjBceDI1XHg3M1x4MjBceDI4XHg0ZFx4NjFceDc4XHg1Zlx4NzJceDY1XHg2M1x4NmZceDcyXHg2NFx4NWZceDZlXHg3NVx4NmRceDYyXHg2NVx4NzJceDJjXHg1NVx4NzNceDY1XHg2NFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDVmXHg2ZVx4NzVceDZkXHg2Mlx4NjVceDcyXHgyOVx4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4NzNceDI4IiAiXCciICJceDI1XHg2NCIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NjQiICJcJyIgIlx4MjkiCiAsWlBCX0RCX0RFVklDRV9DQVBBQklMSVRZX1RBQkxFLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLnVzZWRSZWNvcmROdW0pO3JldHVybgogIGF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO31UX3pQYl9EYlJlc3VsdCBhdFBiX0RiR2V0SW5kZXhCeUdyb3VwQ2IoVk9JRCoKIGZ2YXJnLGludCBsaW5lLGNoYXIqKnpyZXN1bHQsY2hhcioqbG5hbWUpe1RfelBiX0FwSW5kZXgqcGJJbmRleD1OVUxMO2ludCBpPQotKDB4NTBjKzQyNTctMHgxNWFkKTtpZigoMHg4NjYrNzYwNC0weDI2MTkpPmxpbmUpe3JldHVybiBaUEJfREJfRVJST1I7fXBiSW5kZXg9KAorKDB4MTQxNCsyMS0weDE0MjkpO2lmKCgweDE4MGQrMzY1My0weDI2NTEpPmxpbmUpe3JldHVybiBaUEJfREJfRVJST1I7fXBiSW5kZXg9KAogVF96UGJfQXBJbmRleCopZnZhcmc7aT1wYkluZGV4LT5jb3VudDtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg2Mlx4NDdceDY1XHg3NFx4NDlceDZlXHg2NFx4NjVceDc4XHg0Mlx4NzlceDQ3XHg3Mlx4NmZceDc1XHg3MFx4NDNceDYyXHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHgyY1x4NjlceDNkXHgyNVx4NjQiICJcbiIKLSxpKTtwYkluZGV4LT5hcEluZGV4W2krKDB4Y2IxKzMyOTMtMHgxOThkKV09YXRvaSh6cmVzdWx0WygweGQ0MCs1NzQtMHhmN2UpXSk7CissaSk7cGJJbmRleC0+YXBJbmRleFtpKygweDE4OGIrNzQwLTB4MWI2ZSldPWF0b2koenJlc3VsdFsoMHgxMDJjKzU4MjgtMHgyNmYwKV0pOwogc2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjdceDY1XHg3NFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4NWZceDYyXHg3OVx4NWZceDY3XHg3Mlx4NmZceDc1XHg3MFx4NWZceDYzXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjQiCi0scGJJbmRleC0+YXBJbmRleFtpKygweDIyOCs1NTIzLTB4MTdiYSldKTtwYkluZGV4LT5jb3VudD1pKygweDE0ZmErMTU3NC0weDFiMWYpOworLHBiSW5kZXgtPmFwSW5kZXhbaSsoMHg3NGIrNDE5Ni0weDE3YWUpXSk7cGJJbmRleC0+Y291bnQ9aSsoMHhmYjgrMjA0MS0weDE3YjApOwogc2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjdceDY1XHg3NFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4NWZceDYyXHg3OVx4NWZceDY3XHg3Mlx4NmZceDc1XHg3MFx4NWZceDYzXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDIwXHg2OVx4NzNceDIwXHgyNVx4NjQiCiAscGJJbmRleC0+Y291bnQpO3JldHVybiBaUEJfREJfT0s7fVRfelBiX0RiUmVzdWx0IGF0UGJfRGVsUmVjRnJvbVBibVRhYmxlQnlHcm91cAogKFRfelBiX0FwSW5kZXgqaW5kZXgpe1RfelBiX0RiUmVzdWx0IHJlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl0KLT17KDB4NWU4KzE2My0weDY4Yil9O1NJTlQzMiBjb3VudEJ5R3JvdXA9KDB4NDI1KzMzNDctMHgxMTM4KTtDSEFSIHBiR3JvdXBbCi1aUEJfUEFSQU1fU0laRTIwXT17KDB4Mjg1KzgxNTItMHgyMjVkKX07c2NfY2ZnX2dldChaUEJfTlZfR1JPVVAscGJHcm91cCxzaXplb2YoCi1wYkdyb3VwKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGRmNCsxMDk3LTB4MTIzYyksCis9eygweDQ3Zis2Mzc5LTB4MWQ2YSl9O1NJTlQzMiBjb3VudEJ5R3JvdXA9KDB4ZmViKzMwNzEtMHgxYmVhKTtDSEFSIHBiR3JvdXBbCitaUEJfUEFSQU1fU0laRTIwXT17KDB4MmMwKzYyMzgtMHgxYjFlKX07c2NfY2ZnX2dldChaUEJfTlZfR1JPVVAscGJHcm91cCxzaXplb2YoCitwYkdyb3VwKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDEzOWIrMjk5NS0weDFmNGQpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyMFx4NjFceDZlXHg2NFx4MjBceDI4XHg1MFx4NjJceDZkXHg1Zlx4NjdceDcyXHg2Zlx4NzVceDcwXHgzZCIgIlwiIiAiXHgyNVx4NzMiICJcIiIgIlx4MjkiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVAscGJHcm91cCk7KFZPSUQpYXRQYl9FeGVjRGJTcWwoc3FsLAotYXRQYl9EYkNvdW50VGFibGVMaW5lQ2IsJmNvdW50QnlHcm91cCk7bWVtc2V0KHNxbCwoMHg2MTcrNTAyMi0weDE5YjUpLHNpemVvZihzcWwKLSkpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxMjYyKzEyOTAtMHgxNzZiKSwKK2F0UGJfRGJDb3VudFRhYmxlTGluZUNiLCZjb3VudEJ5R3JvdXApO21lbXNldChzcWwsKDB4ZDY5KzE4MTItMHgxNDdkKSxzaXplb2Yoc3FsCispKTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4MjVmKzE4ODItMHg5YjgpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDUwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NFx4MjBceDYxXHg2ZVx4NjRceDIwXHgyOFx4NTBceDYyXHg2ZFx4NWZceDY3XHg3Mlx4NmZceDc1XHg3MFx4M2QiICJcIiIgIlx4MjVceDczIiAiXCIiICJceDI5IgogLFpQQl9EQl9QQk1fVEFCTEUsWlBCX0xPQ0FUSU9OX0FQLHBiR3JvdXApO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsCiBhdFBiX0RiR2V0SW5kZXhCeUdyb3VwQ2IsaW5kZXgpO2lmKGNvdW50QnlHcm91cD09aW5kZXgtPmNvdW50KXttZW1zZXQoc3FsLAotKDB4MTFhOSs0NDgzLTB4MjMyYyksc2l6ZW9mKHNxbCkpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHhmYmErNDM5NS0weDIwZTQpLAorKDB4MTNjNCs1NzMtMHgxNjAxKSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDE1MzIrMzQzNi0weDIyOWQpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyMFx4NjFceDZlXHg2NFx4MjBceDI4XHg1MFx4NjJceDZkXHg1Zlx4NjdceDcyXHg2Zlx4NzVceDcwXHgzZCIgIlwiIiAiXHgyNVx4NzMiICJcIiIgIlx4MjkiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVAscGJHcm91cCk7aWYoWlBCX0RCX09LPT1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTAogLE5VTEwpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7fXNsb2coUEJfUFJJTlQsCkBAIC0yODIsNyArMjgyLDcgQEAKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2NVx4NzhceDY1XHg2M1x4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDI1XHg3M1x4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHgyNVx4NjQiICJcbiIKICxaUEJfREJfUEJNX1RBQkxFLHJlc3VsdCk7fWVsc2V7cmV0dXJuIFpQQl9EQl9FUlJPUjt9KFZPSUQpc2NfY2ZnX3NldCgKIFpQQl9OVl9HUk9VUCwiIik7cmV0dXJuIHJlc3VsdDt9Vk9JRCBhdFBiX0dldExvY2F0aW9uSW5kZXhGb3JEZWwoVF96UGJfRGVsSW5mbyoKLXJlY0RhdGEsU0lOVDMyIGRlbFRpbWUpe1RfelBiX0hlYWRlciBwYkhlYWRlcj17KDB4MTRmYiszMjQ5LTB4MjFhYyl9O2lmKE5VTEw9PQorcmVjRGF0YSxTSU5UMzIgZGVsVGltZSl7VF96UGJfSGVhZGVyIHBiSGVhZGVyPXsoMHgyMDE1KzE2NC0weDIwYjkpfTtpZihOVUxMPT0KIHJlY0RhdGEpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ3XHg2NVx4NzRceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4NDlceDZlXHg2NFx4NjVceDc4XHg0Nlx4NmZceDcyXHg0NFx4NjVceDZjXHgyZFx4MmRceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0IiAiXG4iCiApO3JldHVybjt9cGJIZWFkZXIucGJJZD1yZWNEYXRhLT5kZWxJZFtkZWxUaW1lXTtpZihaUEJfREJfT0shPQpAQCAtMjkzLDMwICsyOTMsMzAgQEAKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2NFx4NjVceDZjXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzZFx4MjVceDY0XHgyY1x4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyY1x4NjRceDY1XHg2Y1x4NWZceDcwXHg2Mlx4NmRceDVmXHg3NFx4NjlceDZkXHg2NVx4M2RceDI1XHg2NCIKICxyZWNEYXRhLT5kZWxJbmRleFtkZWxUaW1lXSxyZWNEYXRhLT5kZWxMb2NhdGlvbixkZWxUaW1lKTt9VF96UGJfRGJSZXN1bHQgCiBhdFBiX0RlbEFSZWNGcm9tUGJtVGFibGUoVF96UGJfRGVsSW5mbypwYlBhcmEsU0lOVDMyIGRlbFRpbWUpe1RfelBiX0RiUmVzdWx0IAotcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MWQ3MysyMTE5LTB4MjViYSl9O2lmKE5VTEw9PQorcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTliMSsyNDEzLTB4MjMxZSl9O2lmKE5VTEw9PQogcGJQYXJhKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NzBceDYyXHg2ZFx4M2FceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0IgogKTtyZXR1cm4gWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fWF0UGJfR2V0TG9jYXRpb25JbmRleEZvckRlbChwYlBhcmEsZGVsVGltZSk7CiBzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg2NVx4NmNceDQxXHg1Mlx4NjVceDYzXHg0Nlx4NzJceDZmXHg2ZFx4NTBceDYyXHg2ZFx4NTRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHgyY1x4NjRceDY1XHg2Y1x4NTRceDY5XHg2ZFx4NjVceDNkXHgyNVx4NjRceDJjXHg2OVx4NjRceDNkXHgyNVx4NjQiICJcbiIKLSxkZWxUaW1lLHBiUGFyYS0+ZGVsSWRbZGVsVGltZV0pO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHhkYWQrNDU0OC0weDFmNzApLAorLGRlbFRpbWUscGJQYXJhLT5kZWxJZFtkZWxUaW1lXSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGU1YysxMzYtMHhlZTMpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NjlceDY0XHgzZFx4MjVceDY0IgogLFpQQl9EQl9QQk1fVEFCTEUscGJQYXJhLT5kZWxJZFtkZWxUaW1lXSk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpOwogaWYoWlBCX0RCX09LPT1yZXN1bHQpe2lmKFpQQl9MT0NBVElPTl9BUD09cGJQYXJhLT5kZWxMb2NhdGlvbil7Z196UGJfQXBJbmRleFsoCiBwYlBhcmEtPmRlbEluZGV4W2RlbFRpbWVdKV09UEJNX0VSUk9SX05PVF9GT1VORDt9ZWxzZSBpZihaUEJfTE9DQVRJT05fVVNJTT09CiBwYlBhcmEtPmRlbExvY2F0aW9uKXtnX3pQYl9TaW1JbmRleFsocGJQYXJhLT5kZWxJbmRleFtkZWxUaW1lXSldPQogUEJNX0VSUk9SX05PVF9GT1VORDt9fXJldHVybiByZXN1bHQ7fVZPSUQgYXRQYl9DbGVhclNpbVBibUluZGV4QXJyYXkoVk9JRCl7Ci1TSU5UMzIgaT0oMHgyMGFjKzEyNjYtMHgyNTlkKTtmb3IoaT0oMHhiNzYrNjU2LTB4ZTA1KTsoaTw9Z196UGJfU2ltSW5kZXhbCi0oMHg4MjErNTQwLTB4YTNkKV0pJiYoaTwoWlBCX1NJTV9NQVhfUkVDT1JEKygweDQ4ZCsyNDY3LTB4ZTJmKSkpO2krKyl7CitTSU5UMzIgaT0oMHgxNzEwKzE0ODEtMHgxY2Q4KTtmb3IoaT0oMHgxMGEyKzMzMTctMHgxZDk2KTsoaTw9Z196UGJfU2ltSW5kZXhbCisoMHgxNzErNzE0Mi0weDFkNTcpXSkmJihpPChaUEJfU0lNX01BWF9SRUNPUkQrKDB4MWFhNCsxMjA4LTB4MWY1YikpKTtpKyspewogZ196UGJfU2ltSW5kZXhbaV09UEJNX0VSUk9SX05PVF9GT1VORDt9fVZPSUQgYXRQYl9DbGVhckFwUGJtSW5kZXhBcnJheShWT0lEKXsKLVNJTlQzMiBpPSgweDk1OSs2NjM2LTB4MjM0NCk7Zm9yKGk9KDB4YjZkKzYwNDMtMHgyMzA3KTsoaTw9Z196UGJfQXBJbmRleFsKLSgweDEwMDMrNTU1NS0weDI1YjYpXSkmJihpPChaUEJfQVBfTUFYX1JFQ09SRCsoMHgyNTYrNTIyNy0weDE2YzApKSk7aSsrKXsKK1NJTlQzMiBpPSgweDczNSs4MzYtMHhhNzgpO2ZvcihpPSgweDEzMDkrMjEyNy0weDFiNTcpOyhpPD1nX3pQYl9BcEluZGV4WworKDB4ZmMrNjk0Ny0weDFjMWYpXSkmJihpPChaUEJfQVBfTUFYX1JFQ09SRCsoMHgzOGIrNTUyNy0weDE5MjEpKSk7aSsrKXsKIGdfelBiX0FwSW5kZXhbaV09UEJNX0VSUk9SX05PVF9GT1VORDt9fVRfelBiX0RiUmVzdWx0IAogYXRQYl9EZWxBbGxSZWNzRnJvbVBibVRhYmxlKFRfelBiX0RlbEluZm8qcGJQYXJhKXtUX3pQYl9EYlJlc3VsdCByZXN1bHQ9Ci1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweGVkNCsxOTQyLTB4MTY2YSl9O2lmKE5VTEw9PXBiUGFyYSl7c2xvZworWlBCX0RCX09LO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsoMHgyMTE5KzUyMy0weDIzMjQpfTtpZihOVUxMPT1wYlBhcmEpe3Nsb2cKIChQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDRceDY1XHg2Y1x4NDFceDZjXHg2Y1x4NTJceDY1XHg2M1x4NzNceDQ2XHg3Mlx4NmZceDZkXHg1MFx4NjJceDZkXHg1NFx4NjFceDYyXHg2Y1x4NjVceDNhXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NCIgIlxuIgotKTtyZXR1cm4gWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fXNucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxNDM1KzM2NjEtMHgyMjgxKSwKKyk7cmV0dXJuIFpQQl9EQl9FUlJPUl9JTlZBTElEUFRSO31zbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4NmI5KzI2OTMtMHgxMTNkKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxaUEJfREJfUEJNX1RBQkxFLHBiUGFyYS0+ZGVsTG9jYXRpb24pO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTtzbG9nCiAoUEJfUFJJTlQsU0xPR19ERUJVRywKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX21haW4uYyBiL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX21haW4uYwppbmRleCA2Mjc1MTEyLi43ZjAzOTMwIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9tYWluLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfbWFpbi5jCkBAIC03LDkgKzcsOSBAQAogVk9JRCgqZnVuY19wdHIpKFVJTlQ4KnBEYXRhYnVmKTtCT09MIG5lZWRfYmxvY2s7fVRfelBiSGFuZGxlVGFibGU7Vk9JRCAKIGF0V2ViX0FkZE9uZUNvbnRhY3QoVUlOVDgqcERhdGFidWYpO1ZPSUQgYXRXZWJfRGVsT25lQ29udGFjdChVSU5UOCpwRGF0YWJ1Zik7CiBWT0lEIGF0V2ViX0RlbE11bHRpQ29udGFjdChVSU5UOCpwRGF0YWJ1Zik7Vk9JRCBhdFdlYl9EZWxBbGxDb250YWN0KFVJTlQ4KgotcERhdGFidWYpO1RfelBiX29wdFJzcCBnX1BiT3B0UnNwPXsoMHgxMGMrNDUxMC0weDEyYWEpfTtzZW1fdCBnX1BiX3NlbV9pZD17Ci0oMHg2ODUrNzE0Ni0weDIyNmYpfTtpbnQgZ196UGJfTXNxSWQ9LSgweDMyOSs0NTYyLTB4MTRmYSk7aW50IGdfelBiX0xvY2FsTXNxSWQ9LQotKDB4ZDc1KzE3ODktMHgxNDcxKTtWT0lEIGF0V2ViX0FkZE9uZUNvbnRhY3QoVUlOVDgqcERhdGFidWYpe1RfelBiX1dlYkNvbnRhY3QqCitwRGF0YWJ1Zik7VF96UGJfb3B0UnNwIGdfUGJPcHRSc3A9eygweDE4NGQrMzE5MS0weDI0YzQpfTtzZW1fdCBnX1BiX3NlbV9pZD17CisoMHg3YzgrMjkxNy0weDEzMmQpfTtpbnQgZ196UGJfTXNxSWQ9LSgweDM3KzUyMzktMHgxNGFkKTtpbnQgZ196UGJfTG9jYWxNc3FJZD0tCisoMHg1NGErNTczOC0weDFiYjMpO1ZPSUQgYXRXZWJfQWRkT25lQ29udGFjdChVSU5UOCpwRGF0YWJ1Zil7VF96UGJfV2ViQ29udGFjdCoKIHdlYlBiQ29udGFjdD1OVUxMO2lmKHBEYXRhYnVmPT1OVUxMKXtwcmludGYoCiAiXHg1Ylx4NzBceDYyXHg1ZFx4MmNceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHgyMFx4NjlceDczXHgyMFx4NmVceDc1XHg2Y1x4NmMiICJcbiIKICk7cmV0dXJuO313ZWJQYkNvbnRhY3Q9KFRfelBiX1dlYkNvbnRhY3QqKXBEYXRhYnVmO2F0V2ViX0FkZE9uZVBiKHdlYlBiQ29udGFjdCwKQEAgLTM1LDIwICszNSwyMCBAQAogelBiX1JlY3ZacGJpY0luZChVSU5UOCpwRGF0YWJ1Zil7VF96QXRfWnBiaWNSZXMqcHRQYXJhPVpVRklfTlVMTDtpZihwRGF0YWJ1Zj09CiBOVUxMKXtyZXR1cm47fXB0UGFyYT0oVF96QXRfWnBiaWNSZXMqKShwRGF0YWJ1Zik7cHJpbnRmKAogIlx4N2FceDUwXHg2Mlx4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NzBceDYyXHg2OVx4NjNceDQ5XHg2ZVx4NjRceDIwXHg3MFx4NjFceDcyXHg2MVx4MmNceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJjXHgyMFx4NzRceDc5XHg3MFx4NjVceDNhXHgyNVx4NjQiICJcbiIKLSxwdFBhcmEtPnJlc3VsdCxwdFBhcmEtPm9wZXJ0eXBlKTtpZigoKDB4MjJkNisyNTMtMHgyM2QyKT09cHRQYXJhLT5yZXN1bHQpJiYoCi0oMHgzZis1OTY1LTB4MTc4Yik9PXB0UGFyYS0+b3BlcnR5cGUpKXtDSEFSIG5lZWRQYlsoMHgxY2E3KzE4MDEtMHgyMzdlKV09ewotKDB4MzEwKzc5NzctMHgyMjM5KX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZihuZWVkUGIpKTtpZigKLSgweDFkMTIrNzk0LTB4MjAyYykhPXN0cmNtcChuZWVkUGIsIlx4NmVceDZmIikpe2lwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLAotTU9EVUxFX0lEX0FUX0NUTCxNU0dfQ01EX1BCSU5JVF9SRVEsKDB4MWI5KzI1MjUtMHhiOTYpLE5VTEwsKDB4MTM2OSsxNjAzLTB4MTlhYykKKyxwdFBhcmEtPnJlc3VsdCxwdFBhcmEtPm9wZXJ0eXBlKTtpZigoKDB4ZDZiKzExMy0weGRkYik9PXB0UGFyYS0+cmVzdWx0KSYmKAorKDB4NzQ3KzI1MzAtMHgxMTI4KT09cHRQYXJhLT5vcGVydHlwZSkpe0NIQVIgbmVlZFBiWygweGVmMiszMzEzLTB4MWJiMSldPXsKKygweDcxMSszMTYwLTB4MTM2OSl9O3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1BCLG5lZWRQYixzaXplb2YobmVlZFBiKSk7aWYoCisoMHgxMGIzKzE1MTctMHgxNmEwKSE9c3RyY21wKG5lZWRQYiwiXHg2ZVx4NmYiKSl7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsCitNT0RVTEVfSURfQVRfQ1RMLE1TR19DTURfUEJJTklUX1JFUSwoMHg3NTQrNzc0OC0weDI1OTgpLE5VTEwsKDB4NmFhKzgwNzItMHgyNjMyKQogKTt9fX1WT0lEIHpQYl9SZWN2WnVzbG90SW5kKFVJTlQ4KnBEYXRhYnVmKXtUX3pBdF9adXNsb3RSZXMqcHRQYXJhPVpVRklfTlVMTDtpZigKIHBEYXRhYnVmPT1OVUxMKXtyZXR1cm47fXB0UGFyYT0oVF96QXRfWnVzbG90UmVzKikocERhdGFidWYpO3ByaW50ZigKICJceDdhXHg1MFx4NjJceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NWFceDcwXHg2Mlx4NjlceDYzXHg0OVx4NmVceDY0XHgyMFx4NzBceDYxXHg3Mlx4NjFceDJjXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgzYVx4MjVceDY0XHgyY1x4MjBceDc0XHg3OVx4NzBceDY1XHgzYVx4MjVceDY0IiAiXG4iCi0scHRQYXJhLT5zbG90LHB0UGFyYS0+c2xvdF9zdGF0ZSk7aWYocHRQYXJhLT5zbG90X3N0YXRlPT0oMHgxNTk2KzM3NTUtMHgyNDQxKSl7Ci1DSEFSIG5lZWRQYlsoMHg4OGQrMTk4Mi0weDEwMTkpXT17KDB4NGQrMjk1NS0weGJkOCl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZihuZWVkUGIpKTtpZigoMHg4N2ErNDM5Ni0weDE5YTYpIT1zdHJjbXAobmVlZFBiLAorLHB0UGFyYS0+c2xvdCxwdFBhcmEtPnNsb3Rfc3RhdGUpO2lmKHB0UGFyYS0+c2xvdF9zdGF0ZT09KDB4MTEzNys0NDgzLTB4MjJiYSkpeworQ0hBUiBuZWVkUGJbKDB4MWQ1Yys2ODktMHgxZmRiKV09eygweGRjOSszOTIxLTB4MWQxYSl9O3NjX2NmZ19nZXQoCitOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZihuZWVkUGIpKTtpZigoMHg2NWErNTQwOC0weDFiN2EpIT1zdHJjbXAobmVlZFBiLAogIlx4NmVceDZmIikpe2F0UGJfQ2ZnUGJOdkluaXQoKTthdFBiX0RlbEFsbFJlY3NTaW1EYigpO319fVZPSUQgelBiX1JlY3ZQYkluaXRSc3QKLShVSU5UOCpwRGF0YWJ1Zil7aW50IHBiUmVhZFJldD0tKDB4Nzg1Kzk3OC0weGI1Nik7bWVtY3B5KCZnX1BiT3B0UnNwLHBEYXRhYnVmLAotc2l6ZW9mKFRfelBiX29wdFJzcCkpO2lmKGdfUGJPcHRSc3AucmVzdWx0PT0tKDB4OWM4KzI0NTgtMHgxMzYxKSl7YXRQYl9JaW50UGJFcnIKKyhVSU5UOCpwRGF0YWJ1Zil7aW50IHBiUmVhZFJldD0tKDB4MWU2KzYwNzAtMHgxOTliKTttZW1jcHkoJmdfUGJPcHRSc3AscERhdGFidWYsCitzaXplb2YoVF96UGJfb3B0UnNwKSk7aWYoZ19QYk9wdFJzcC5yZXN1bHQ9PS0oMHhmMzIrMjAxNS0weDE3MTApKXthdFBiX0lpbnRQYkVycgogKE5VTEwpO3JldHVybjt9cGJSZWFkUmV0PWF0UGJfU2VuZFNjcGJyU2V0X3JlcGVhdChnX1BiX3NlbV9pZCk7cHJpbnRmKAogIlx4N2FceDUwXHg2Mlx4NWZceDUyXHg2NVx4NjNceDc2XHg1MFx4NjJceDQ5XHg2ZVx4NjlceDc0XHg1Mlx4NzNceDc0XHgyMFx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2FceDI1XHg2NCIgIlxuIgogLHBiUmVhZFJldCk7c2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfT1BFUkFURV9TVUMpO312b2lkIHpQYkxvY2FsSGFuZGxlV2ViTXNnKApAQCAtNjQsMTcgKzY0LDE4IEBACiAscHRNc2dCdWYtPnVzTXNnQ21kKTtzd2l0Y2gocHRNc2dCdWYtPnVzTXNnQ21kKXtjYXNlIE1TR19DTURfV1JJVEVfUEI6Y2FzZSAKIE1TR19DTURfREVMX0FfUEI6Y2FzZSBNU0dfQ01EX0RFTF9NVVRJX1BCOmNhc2UgTVNHX0NNRF9ERUxfQUxMX1BCOgogaXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX1BCX0xPQ0FMLHB0TXNnQnVmLT51c01zZ0NtZCxwdE1zZ0J1Zi0+Ci11c0RhdGFMZW4sKHVuc2lnbmVkIGNoYXIqKXB0TXNnQnVmLT5hdWNEYXRhQnVmLCgweDUzKzMwMDEtMHhjMGMpKTticmVhaztkZWZhdWx0OgotYnJlYWs7fX1VSU5UOCB6UGJNc2dDcmVhdChWT0lEKXtnX3pQYl9Nc3FJZD1tc2dnZXQoTU9EVUxFX0lEX1BCLElQQ19DUkVBVHwKLSgweDZhOCs4NjcyLTB4MjcwOCkpO2lmKGdfelBiX01zcUlkPT0tKDB4OTIxKzYxNjgtMHgyMTM4KSl7cmV0dXJuIFpVRklfRkFJTDt9Ci1nX3pQYl9Mb2NhbE1zcUlkPW1zZ2dldChNT0RVTEVfSURfUEJfTE9DQUwsSVBDX0NSRUFUfCgweDFhMTcrMzY5NC0weDI3MDUpKTtpZigKLWdfelBiX0xvY2FsTXNxSWQ9PS0oMHhhYSs4NjYwLTB4MjI3ZCkpe3JldHVybiBaVUZJX0ZBSUw7fXNlbV9pbml0KCZnX1BiX3NlbV9pZCwKLSgweDU0KzM3Mi0weDFjOCksKDB4NWRkKzMzMjEtMHgxMmQ2KSk7cmV0dXJuIFpVRklfU1VDQzt9dm9pZCBkZXRlY3RfbW9kZW1fc3RhdGUoCi12b2lkKXtDSEFSIHN0YXRlWygweDgzKzcyMTMtMHgxYzdlKV09eygweDI2MCsyMTY3LTB4YWQ3KX07c2NfY2ZnX2dldCgKK3VzRGF0YUxlbiwodW5zaWduZWQgY2hhciopcHRNc2dCdWYtPmF1Y0RhdGFCdWYsKDB4NjE3KzgzOTgtMHgyNmU1KSk7YnJlYWs7CitkZWZhdWx0OmJyZWFrO319VUlOVDggelBiTXNnQ3JlYXQoVk9JRCl7Z196UGJfTXNxSWQ9bXNnZ2V0KE1PRFVMRV9JRF9QQiwKK0lQQ19DUkVBVHwoMHg0NzErNzI5LTB4NWNhKSk7aWYoZ196UGJfTXNxSWQ9PS0oMHgxYmY4KzE2LTB4MWMwNykpe3JldHVybiAKK1pVRklfRkFJTDt9Z196UGJfTG9jYWxNc3FJZD1tc2dnZXQoTU9EVUxFX0lEX1BCX0xPQ0FMLElQQ19DUkVBVHwKKygweGFmYis0OTI4LTB4MWNiYikpO2lmKGdfelBiX0xvY2FsTXNxSWQ9PS0oMHgxMTY1KzM4ODQtMHgyMDkwKSl7cmV0dXJuIAorWlVGSV9GQUlMO31zZW1faW5pdCgmZ19QYl9zZW1faWQsKDB4OGY4KzU3MDktMHgxZjQ1KSwoMHg2OTErMjc0MC0weDExNDUpKTtyZXR1cm4KKyBaVUZJX1NVQ0M7fXZvaWQgZGV0ZWN0X21vZGVtX3N0YXRlKHZvaWQpe0NIQVIgc3RhdGVbKDB4MTQ3MCsxMTk2LTB4MThlYSldPXsKKygweDliNSs1NDgwLTB4MWYxZCl9O3NjX2NmZ19nZXQoCiAiXHg2ZFx4NmZceDY0XHg2NVx4NmRceDVmXHg2ZFx4NjFceDY5XHg2ZVx4NWZceDczXHg3NFx4NjFceDc0XHg2NSIsc3RhdGUsc2l6ZW9mKAotc3RhdGUpKTtpZigoMHhhMTcrMTkyNy0weDExOWUpPT1zdHJjbXAoc3RhdGUsCitzdGF0ZSkpO2lmKCgweDdiZCs0NTk3LTB4MTliMik9PXN0cmNtcChzdGF0ZSwKICJceDZkXHg2Zlx4NjRceDY1XHg2ZFx4NWZceDczXHg2OVx4NmRceDVmXHg3NVx4NmVceDY0XHg2NVx4NzRceDY1XHg2M1x4NzRceDY1XHg2NCIKLSl8fCgweDRhNysyNzktMHg1YmUpPT1zdHJjbXAoc3RhdGUsCispfHwoMHgzNjErMTg3Mi0weGFiMSk9PXN0cmNtcChzdGF0ZSwKICJceDZkXHg2Zlx4NjRceDY1XHg2ZFx4NWZceDczXHg2OVx4NmRceDVmXHg2NFx4NjVceDczXHg3NFx4NzJceDZmXHg3OSIpKXsKIHNjX2NmZ19zZXQoIlx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjlceDc0XHg1Zlx4NjZceDZjXHg2MVx4NjciLCJceDMwIik7fX12b2lkCiAgelBiTG9jYWxIYW5kbGVBdGN0bE1zZyhNU0dfQlVGKnB0TXNnQnVmKXthc3NlcnQocHRNc2dCdWYhPU5VTEwpO3ByaW50ZigKQEAgLTkzLDI4ICs5NCwyOCBAQAogTVNHX0NNRF9aVVNMT1RfSU5EOnpQYl9SZWN2WnVzbG90SW5kKHB0TXNnQnVmLT5hdWNEYXRhQnVmKTticmVhaztjYXNlIAogTVNHX0NNRF9QQklOSVRfUlNQOmlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLE1PRFVMRV9JRF9QQl9MT0NBTCxwdE1zZ0J1Zi0+CiB1c01zZ0NtZCxwdE1zZ0J1Zi0+dXNEYXRhTGVuLCh1bnNpZ25lZCBjaGFyKilwdE1zZ0J1Zi0+YXVjRGF0YUJ1ZiwKLSgweGUyYSs0MDk3LTB4MWUyYikpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX1WT0lEIHpQYkhhbmRsZVJlc2V0VG9GYWN0b3J5KCl7Q0hBUiAKLWNsZWFyUGJbKDB4YmIrNTAzMi0weDE0MzEpXT17KDB4MWQ4MCsxNjIxLTB4MjNkNSl9O3NjX2NmZ19nZXQoCisoMHgxMzIxKzQxOC0weDE0YzMpKTticmVhaztkZWZhdWx0OmJyZWFrO319Vk9JRCB6UGJIYW5kbGVSZXNldFRvRmFjdG9yeSgpe0NIQVIgCitjbGVhclBiWygweDFiMzcrMTQ0Ni0weDIwYWIpXT17KDB4MTAxNys2MjItMHgxMjg1KX07c2NfY2ZnX2dldCgKIE5WX0NMRUFSX1BCX1dIRU5fUkVTVE9SRSxjbGVhclBiLHNpemVvZihjbGVhclBiKSk7cHJpbnRmKAogIlx4NjFceDc0XHg1N1x4NjVceDYyXHg1Zlx4NTJceDY1XHg3M1x4NzRceDZmXHg3Mlx4NjVceDQ2XHg2MVx4NjNceDc0XHg2Zlx4NzJceDc5XHg1M1x4NjVceDc0XHg3NFx4NjlceDZlXHg2N1x4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NjVceDY0XHgyMVx4MjAiICJcbiIKICk7cHJpbnRmKAogIlx4NjNceDZjXHg2NVx4NjFceDcyXHg1Zlx4NzBceDYyXHg1Zlx4NzdceDY4XHg2NVx4NmVceDVmXHg3Mlx4NjVceDczXHg3NFx4NmZceDcyXHg2NVx4M2RceDI1XHg3M1x4MjAiICJcbiIKLSxjbGVhclBiKTtpZihzdHJjbXAoY2xlYXJQYiwiXHg3OVx4NjVceDczIik9PSgweDJkKzIzMzMtMHg5NGEpKXthdFBiX0Ryb3BEYigpO30KLWlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLE1PRFVMRV9JRF9NQUlOX0NUUkwsTVNHX0NNRF9SRVNFVF9SU1AsCi0oMHhkOCs2NjUyLTB4MWFkNCksTlVMTCwoMHg0YjgrMzU3MS0weDEyYWIpKTt9dm9pZCB6UGJIYW5kbGVNYWluQ3RybE1zZyhNU0dfQlVGKgorLGNsZWFyUGIpO2lmKHN0cmNtcChjbGVhclBiLCJceDc5XHg2NVx4NzMiKT09KDB4MWZjNisxNDU4LTB4MjU3OCkpe2F0UGJfRHJvcERiKCkKKzt9aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX01BSU5fQ1RSTCxNU0dfQ01EX1JFU0VUX1JTUCwKKygweDE1M2QrOTMtMHgxNTlhKSxOVUxMLCgweGFmNiszNjE5LTB4MTkxOSkpO312b2lkIHpQYkhhbmRsZU1haW5DdHJsTXNnKE1TR19CVUYqCiBwdE1zZ0J1Zil7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCiAiXHg1MFx4NjJceDIwXHg3Mlx4NjVceDYzXHg3Nlx4MjBceDZkXHg2MVx4NjlceDZlXHgyMFx4NjNceDc0XHg3Mlx4NmNceDIwXHg2ZFx4NzNceDY3XHgyMFx4NjNceDZkXHg2NFx4M2FceDI1XHg2NCIgIlxuIgogLHB0TXNnQnVmLT51c01zZ0NtZCk7c3dpdGNoKHB0TXNnQnVmLT51c01zZ0NtZCl7Y2FzZSBNU0dfQ01EX1JFU0VUX05PVElGWToKIHpQYkhhbmRsZVJlc2V0VG9GYWN0b3J5KHB0TXNnQnVmLT5hdWNEYXRhQnVmKTticmVhaztkZWZhdWx0OmJyZWFrO319dm9pZCAKLXBiX21zZ190aHJlYWRfcHJvYyh2b2lkKmFyZyl7aW50IGlSZXQ9KDB4NTM0KzQzMzgtMHgxNjI2KTtNU0dfQlVGIHN0TXNnPXsKLSgweDNkYysxNTgyLTB4YTBhKX07aW50IG1zZ1NpemU9c2l6ZW9mKE1TR19CVUYpLXNpemVvZihTSU5UMzIpO2ludCBxdWV1ZUlkPSooKAorcGJfbXNnX3RocmVhZF9wcm9jKHZvaWQqYXJnKXtpbnQgaVJldD0oMHg3OTIrNjI0Ni0weDFmZjgpO01TR19CVUYgc3RNc2c9eworKDB4MTE4Nys1MDI4LTB4MjUyYil9O2ludCBtc2dTaXplPXNpemVvZihNU0dfQlVGKS1zaXplb2YoU0lOVDMyKTtpbnQgcXVldWVJZD0qKCgKIGludCopYXJnKTtwcmN0bChQUl9TRVRfTkFNRSwiXHg3MFx4NjJceDVmXHg2Y1x4NmZceDYzXHg2MVx4NmMiLAotKDB4ZDk0KzIwMzgtMHgxNThhKSwoMHg1MzkrNDE1OS0weDE1NzgpLCgweDFhOSs2MDg4LTB4MTk3MSkpO3doaWxlKAotKDB4MTc1MyszNzEyLTB4MjVkMikpe2lSZXQ9KDB4Y2U5KzQxMi0weGU4NSk7bWVtc2V0KCZzdE1zZywoMHhjNTQrNTU3NS0weDIyMWIpLAotc2l6ZW9mKE1TR19CVUYpKTtpUmV0PW1zZ3JjdihxdWV1ZUlkLCZzdE1zZyxtc2dTaXplLCgweDEwOTArMjQ3Ni0weDFhM2MpLAotKDB4NGU4KzIyODYtMHhkZDYpKTtwcmludGYoCisoMHgxNDY2KzMwMDItMHgyMDIwKSwoMHg2ZjgrMTIxMy0weGJiNSksKDB4MTRkZis0NTEyLTB4MjY3ZikpO3doaWxlKAorKDB4MWEzMCsxMDE5LTB4MWUyYSkpe2lSZXQ9KDB4MTAyMys0Njg0LTB4MjI2Zik7bWVtc2V0KCZzdE1zZywKKygweDg5MCs3MDY2LTB4MjQyYSksc2l6ZW9mKE1TR19CVUYpKTtpUmV0PW1zZ3JjdihxdWV1ZUlkLCZzdE1zZyxtc2dTaXplLAorKDB4MTRjKzc0NjQtMHgxZTc0KSwoMHhmZGQrMjY1My0weDFhM2EpKTtwcmludGYoCiAiXHg3MFx4NjJceDVmXHg2ZFx4NzNceDY3XHg1Zlx4NzRceDY4XHg3Mlx4NjVceDYxXHg2NFx4NWZceDcwXHg3Mlx4NmZceDYzXHgzYVx4MjVceDc4XHgyY1x4MjVceDc4XHgyMFx4NGRceDRmXHg0NFx4NTVceDRjXHg0NVx4NWZceDQ5XHg0NFx4NWZceDQxXHg1NFx4NWZceDQzXHg1NFx4NGNceDNkXHgyNVx4NzgiICJcbiIKLSxzdE1zZy5zcmNfaWQsc3RNc2cudXNNc2dDbWQsTU9EVUxFX0lEX0FUX0NUTCk7aWYoaVJldD49KDB4MWYyKzgxOTQtMHgyMWY0KSl7Cissc3RNc2cuc3JjX2lkLHN0TXNnLnVzTXNnQ21kLE1PRFVMRV9JRF9BVF9DVEwpO2lmKGlSZXQ+PSgweDRlYis4NjM3LTB4MjZhOCkpewogc3dpdGNoKHN0TXNnLnNyY19pZCl7Y2FzZSBNT0RVTEVfSURfV0VCX0NHSTp7elBiSGFuZGxlV2ViTXNnKCZzdE1zZyk7YnJlYWs7fWNhc2UKICBNT0RVTEVfSURfQVRfQ1RMOnt6UGJIYW5kbGVBdGN0bE1zZygmc3RNc2cpO2JyZWFrO31jYXNlIE1PRFVMRV9JRF9QQjp7CiB6UGJMb2NhbEhhbmRsZVdlYk1zZygmc3RNc2cpO3pQYkxvY2FsSGFuZGxlQXRjdGxNc2coJnN0TXNnKTticmVhazt9Y2FzZSAKQEAgLTEyMiwyOCArMTIzLDI5IEBACiBwcmludGYoCiAiXHg1Ylx4NzBceDYyXHg1ZFx4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4MjBceDY1XHg3Mlx4NzJceDZkXHg3M1x4NjdceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgogLGVycm5vLHN0cmVycm9yKGVycm5vKSk7fX19aW50IHBob25lYm9va19tYWluKGludCBhcmdjLGNoYXIqYXJndltdKXtwdGhyZWFkX3QgCi1yZWN2X3RocmVhZF90aWQ9KDB4OTUrOTg0Ni0weDI3MGIpO01TR19CVUYgbXNnQnVmPXsoMHgxNDlhKzc3NC0weDE3YTApfTtDSEFSIAotbmVlZFBiWygweGFmKzkzMTAtMHgyNGRiKV09eygweDE4ZGQrODQyLTB4MWMyNyl9O3ByY3RsKFBSX1NFVF9OQU1FLAotIlx4NzBceDYyXHg1Zlx4NmRceDYxXHg2OVx4NmUiLCgweGRkZisxMjg4LTB4MTJlNyksKDB4YzVmKzc1MC0weGY0ZCksCi0oMHgyMGFmKzM1OC0weDIyMTUpKTtsb2dsZXZlbF9pbml0KCk7c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZgotKG5lZWRQYikpO2lmKCgweDQ0Mys2NzgtMHg2ZTkpIT1zdHJjbXAobmVlZFBiLCJceDZlXHg2ZiIpKXsKK3JlY3ZfdGhyZWFkX3RpZD0oMHgxZGFkKzM0NS0weDFmMDYpO01TR19CVUYgbXNnQnVmPXsoMHgxMWY2KzE1MDEtMHgxN2QzKX07Q0hBUiAKK25lZWRQYlsoMHgxY2E4KzE3NjItMHgyMzU4KV09eygweDMxKzQwNDQtMHhmZmQpfTtwcmN0bChQUl9TRVRfTkFNRSwKKyJceDcwXHg2Mlx4NWZceDZkXHg2MVx4NjlceDZlIiwoMHgxOGViKzI1ODgtMHgyMzA3KSwoMHgxMDI1KzIyMjQtMHgxOGQ1KSwKKygweDk2Nis0MzM4LTB4MWE1OCkpO2xvZ2xldmVsX2luaXQoKTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9QQixuZWVkUGIsc2l6ZW9mCisobmVlZFBiKSk7aWYoKDB4MTQyMSsxOTk4LTB4MWJlZikhPXN0cmNtcChuZWVkUGIsIlx4NmVceDZmIikpewogI2lmZGVmIFdFQlNfU0VDVVJJVFkNCi1pZihhY2Nlc3MoWlBCX0RCX1BBVEgsRl9PSykhPSgweDE4YjkrMTY5OC0weDFmNWIpKXtpZihhY2Nlc3MoWlBCX1RNUF9QQVRILEZfT0spCi09PSgweDIwNTErNTU2LTB4MjI3ZCkpe2lmKHJlbW92ZShaUEJfU0VDX1BBVEgpIT0oMHgxMTI2KzQ0NTEtMHgyMjg5KSl7c2xvZygKK2lmKGFjY2VzcyhaUEJfREJfUEFUSCxGX09LKSE9KDB4NzE5KzYzMzgtMHgxZmRiKSl7aWYoYWNjZXNzKFpQQl9UTVBfUEFUSCxGX09LKT09CisoMHgxZWFkKzczMi0weDIxODkpKXtpZihyZW1vdmUoWlBCX1NFQ19QQVRIKSE9KDB4MTQ2YSsxNzU5LTB4MWI0OSkpe3Nsb2coCiBQQl9QUklOVCxTTE9HX0VSUiwKICJceDcyXHg2NVx4NmRceDZmXHg3Nlx4NjVceDIwXHg1YVx4NTBceDQyXHg1Zlx4NTNceDQ1XHg0M1x4NWZceDUwXHg0MVx4NTRceDQ4XHgyMFx4NjZceDYxXHg2OVx4NmMiCi0pO31pZihyZW5hbWUoWlBCX1RNUF9QQVRILFpQQl9TRUNfUEFUSCkhPSgweDEzMzIrNDk1My0weDI2OGIpKXtzbG9nKFBCX1BSSU5ULAorKTt9aWYocmVuYW1lKFpQQl9UTVBfUEFUSCxaUEJfU0VDX1BBVEgpIT0oMHhkZDErMTYzMC0weDE0MmYpKXtzbG9nKFBCX1BSSU5ULAogU0xPR19FUlIsCiAiXHg3Mlx4NjVceDZlXHg2MVx4NmRceDY1XHgyMFx4NWFceDUwXHg0Mlx4NWZceDU0XHg0ZFx4NTBceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgotKTt9fWlmKGFjY2VzcyhaUEJfU0VDX1BBVEgsRl9PSyk9PSgweDE4N2IrMjExNC0weDIwYmQpKXtjaGFyIHJudW1fYnVmWwotKDB4OTlhKzI1MDgtMHgxMzRlKV09eygweDM2OCs1ODk5LTB4MWE3Myl9O2NoYXIgY21kWygweGU0Mis1Mzc0LTB4MjJjMCldPXsKLSgweDEzZDErMTA2MS0weDE3ZjYpfTtzY19jZmdfZ2V0KCJceDcyXHg2ZVx4NzVceDZkXHg1Zlx4NjFceDc0IixybnVtX2J1ZixzaXplb2YoCispO319aWYoYWNjZXNzKFpQQl9TRUNfUEFUSCxGX09LKT09KDB4MTEyYSs0ODg1LTB4MjQzZikpe2NoYXIgcm51bV9idWZbCisoMHgxMmJhKzQ2OTUtMHgyNGY5KV09eygweDEyYzErMTkxNC0weDFhM2IpfTtjaGFyIGNtZFsoMHgxNmZkKzMzODItMHgyM2IzKV09eworKDB4MzgxKzU3NTgtMHgxOWZmKX07c2NfY2ZnX2dldCgiXHg3Mlx4NmVceDc1XHg2ZFx4NWZceDYxXHg3NCIscm51bV9idWYsc2l6ZW9mKAogcm51bV9idWYpKTtzbnByaW50ZihjbWQsc2l6ZW9mKGNtZCksCiAiXHgyZlx4NjJceDY5XHg2ZVx4MmZceDZmXHg3MFx4NjVceDZlXHg3M1x4NzNceDZjXHgyMFx4NjVceDZlXHg2M1x4MjBceDJkXHg2NFx4MjBceDJkXHg2MVx4NjVceDczXHgzMlx4MzVceDM2XHgyMFx4MmRceDczXHg2MVx4NmNceDc0XHgyMFx4MmRceDY5XHg2ZVx4MjBceDI1XHg3M1x4MjBceDJkXHg2Zlx4NzVceDc0XHgyMFx4MjVceDczXHgyMFx4MmRceDcwXHg2MVx4NzNceDczXHgyMFx4NzBceDYxXHg3M1x4NzNceDNhXHgyNVx4NzMiCiAsWlBCX1NFQ19QQVRILFpQQl9EQl9QQVRILHJudW1fYnVmKTt6eGljX3N5c3RlbShjbWQpO319CiAjZW5kaWYJCQ0KLXpQYk1zZ0NyZWF0KCk7YXRQYl9Jbml0KCk7fWVsc2V7cmV0dXJuLSgweGE4KzYyNTYtMHgxOTE3KTt9cHJpbnRmKAorelBiTXNnQ3JlYXQoKTthdFBiX0luaXQoKTt9ZWxzZXtyZXR1cm4tKDB4MTBjYiszNzU0LTB4MWY3NCk7fXByaW50ZigKICJceDUwXHg2Mlx4MjBceDYxXHg3MFx4NzBceDIwXHg2OVx4NmVceDY5XHg3NFx4MjBceDY2XHg2OVx4NmVceDY5XHg3M1x4NjhceDY1XHg2NFx4MmNceDIwXHg3N1x4NjlceDZjXHg2Y1x4MjBceDc0XHg2Zlx4MjBceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHgyMFx4NmRceDczXHg2N1x4MmNceDIwXHg2ZFx4NzNceDY3XHg2OVx4NjRceDNhXHgyNVx4NjQiICJcbiIKICxnX3pQYl9Nc3FJZCk7aWYocHRocmVhZF9jcmVhdGUoJnJlY3ZfdGhyZWFkX3RpZCxOVUxMLHBiX21zZ190aHJlYWRfcHJvYywodm9pZCopCi0oJmdfelBiX0xvY2FsTXNxSWQpKT09LSgweGNmNSsyNjUyLTB4MTc1MCkpe2Fzc2VydCgoMHgxZGEwKzY1Ny0weDIwMzEpKTt9Ci1kZXRlY3RfbW9kZW1fc3RhdGUoKTtwYl9tc2dfdGhyZWFkX3Byb2MoJmdfelBiX01zcUlkKTtyZXR1cm4oMHgyNjYrMjg1OS0weGQ5MSk7fQorKCZnX3pQYl9Mb2NhbE1zcUlkKSk9PS0oMHgyMmYwKzI5My0weDI0MTQpKXthc3NlcnQoKDB4MzM5KzIzNTktMHhjNzApKTt9CitkZXRlY3RfbW9kZW1fc3RhdGUoKTtwYl9tc2dfdGhyZWFkX3Byb2MoJmdfelBiX01zcUlkKTtyZXR1cm4oMHgxNGI3KzI3NTgtMHgxZjdkKQorO30KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX3Byb2MuYyBiL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX3Byb2MuYwppbmRleCAwMmEwZGQ1Li40OTYxZGE0IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9wcm9jLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfcHJvYy5jCkBAIC0zLDE4NiArMywxODUgQEAKICNpbmNsdWRlIDxzZW1hcGhvcmUuaD4NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQogI2luY2x1ZGUgInBiX2NvbS5oIg0KLSNkZWZpbmUgWlBCX1VDUzIgICAgICAgICAgICAgICAgICAgICgweDFlMDErMTcxMC0weDI0YWUpDQotI2RlZmluZSBaUEJfVUNTMl9QUkVGSVggICAgICAgICAgICAgKDB4MTc5MSsyNjc3LTB4MjE4NikNCi0jZGVmaW5lIFpQQl9VQ1MyX1BSRUZJWF9MRU4gICAgICAgICAoMHg0NDkrODg5My0weDI3MDQpDQotI2RlZmluZSBaUEJfTk9OX0dTTSAgICAgICAgICAgICAgICAgICAgICgweDYyKzU1MS0weDI2OSkNCi0jZGVmaW5lIFpQQl9HU01fQ0hBUkFDVEVSX1NFVF9TSVpFICAgICAgKDB4MTA2Nys0ODgzLTB4MjJmYSkNCi0jZGVmaW5lIFpQQl9JTklUX0xPQURfUkVDT1JEX05VTSAgICAoMHhjM2MrMjg3OC0weDE3NDgpDQorI2RlZmluZSBaUEJfVUNTMiAgICAgICAgICAgICAgICAgICAgKDB4MTUwOCszNzM0LTB4MjM5ZCkNCisjZGVmaW5lIFpQQl9VQ1MyX1BSRUZJWCAgICAgICAgICAgICAoMHg0M2IrMzI5MC0weDEwOTUpDQorI2RlZmluZSBaUEJfVUNTMl9QUkVGSVhfTEVOICAgICAgICAgKDB4MTBhNisyNDMtMHgxMTk3KQ0KKyNkZWZpbmUgWlBCX05PTl9HU00gICAgICAgICAgICAgICAgICAgICAoMHgyMjIwKzQyNC0weDIzYTgpDQorI2RlZmluZSBaUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSAgICAgICgweGEyYSsyMC0weDliZSkNCisjZGVmaW5lIFpQQl9JTklUX0xPQURfUkVDT1JEX05VTSAgICAoMHgyNjUrNTU4LTB4NDYxKQ0KIFZPSUQgYXRQYl9DdnRDaENvZGUoVUlOVDE2IGJhc2VQb2ludGVyLFVJTlQ4IHNyY0RhdGEsVUlOVDgqY2hNc2IsVUlOVDgqY2hMc2IpOwogQk9PTCBhdFBiX0N2dFU4MlRvVTgwKGNvbnN0IFVJTlQ4KnNyY0RhdGEsVUlOVDMyIHNyY0xlbixVSU5UOCpkZXN0RGF0YSxVSU5UMzIgCiBkZXN0TGVuKTtCT09MIGF0UGJfQ3Z0VTgxVG9VODAoY29uc3QgVUlOVDgqc3JjRGF0YSxVSU5UMzIgc3JjTGVuLFVJTlQ4KmRlc3REYXRhLAogVUlOVDMyIGRlc3RMZW4pO2V4dGVybiBWT0lEIGF0UGJfQ2xlYXJTaW1QYm1JbmRleEFycmF5KFZPSUQpO2V4dGVybiBzZW1fdCAKIGdfUGJfc2VtX2lkO2V4dGVybiBUX3pQYl9vcHRSc3AgZ19QYk9wdFJzcDtVSU5UMzIgZ196UGJfRGVsSW5kZXg9Ci0oMHgxYzIrNjkyOS0weDFjZDMpO1NJTlQzMiBnX3pQYl9TaW1JbmRleFtaUEJfU0lNX01BWF9SRUNPUkQrKDB4NDBkKzQyOTUtMHgxNGQzKQotXT17KDB4OGJiKzY1ODMtMHgyMjcyKX07U0lOVDMyIGdfelBiX0FwSW5kZXhbWlBCX0FQX01BWF9SRUNPUkQrCi0oMHgxMTgrOTE1My0weDI0ZDgpXT17KDB4MWRmYysxNDkzLTB4MjNkMSl9O1RfelBiX0RlbFN0YXR1c011bHRpT3JBbGwgCi1nX3pQYl9EZWxTdGF0dXNVc2ltPXsoMHgxZjAxKzE3NjEtMHgyNWUyKX07Y29uc3QgdW5zaWduZWQgY2hhciAKLUdfWlBCX05FV1VDUzJUT0dTTVtaUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSooMHgyNGIrOTM2NS0weDI2ZGUpXT17WlBCX05PTl9HU00sCisoMHhhODcrNDgyMy0weDFkNWUpO1NJTlQzMiBnX3pQYl9TaW1JbmRleFtaUEJfU0lNX01BWF9SRUNPUkQrKDB4MTU2KzU0MjctMHgxNjg4KQorXT17KDB4MWZkMis2NjUtMHgyMjZiKX07U0lOVDMyIGdfelBiX0FwSW5kZXhbWlBCX0FQX01BWF9SRUNPUkQrCisoMHgxMGE2KzQ4MDgtMHgyMzZkKV09eygweDE0NjcrNDM3NC0weDI1N2QpfTtUX3pQYl9EZWxTdGF0dXNNdWx0aU9yQWxsIAorZ196UGJfRGVsU3RhdHVzVXNpbT17KDB4YjI3KzQxMjItMHgxYjQxKX07Y29uc3QgdW5zaWduZWQgY2hhciBHX1pQQl9ORVdVQ1MyVE9HU00KK1taUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSooMHg5YzQrNzA1Ny0weDI1NTMpXT17WlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLCgweDE4NmIrMjAzLTB4MTkyYyksWlBCX05PTl9HU00sWlBCX05PTl9HU00sCi0oMHhiZGQrODczLTB4ZjM5KSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAotWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCi1aUEJfTk9OX0dTTSwoMHg2ODQrMzYzOC0weDE0OWEpLCgweDE0MjYrNDM3NC0weDI1MWIpLCgweDYwNis5MzAtMHg5ODYpLAotKDB4MTI5NSsxNTAyLTB4MTg1MCksKDB4NTArMjg1MC0weGI3MCksKDB4NzMrNzEyNC0weDFjMjIpLCgweDIxZis0NDk4LTB4MTM4YiksCi0oMHgxZmMrODM5NC0weDIyOWYpLCgweDMwZCs0OTc3LTB4MTY1NiksKDB4Njk4KzY2ODktMHgyMDkwKSwoMHgyM2ErNzQ1MS0weDFmMmIpLAotKDB4MmVkKzI3LTB4MmRkKSwoMHhhYjErMzQ4OS0weDE4MjYpLCgweDZkMSsxNDQ3LTB4YzRiKSwoMHgxMjJjKzI3ODYtMHgxY2UwKSwKLSgweDVjOSs2NDEwLTB4MWVhNCksKDB4MjVlOCsyMTAtMHgyNjhhKSwoMHgxY2QrOTE1Ny0weDI1NjEpLCgweDU5ZisyNzc3LTB4MTA0NiksCi0oMHhkYjgrNDIxNC0weDFkZmIpLCgweDEzNmMrNDk5MC0weDI2YjYpLCgweDI0MDgrNTg0LTB4MjYxYiksKDB4NzQzKzYzNTctMHgxZmUyKQotLCgweDE5YzkrMzEzMS0weDI1Y2QpLCgweDUzZis1Nzc2LTB4MWI5NyksKDB4MWQwMys2NzUtMHgxZjZkKSwKLSgweDFjM2IrNDE2LTB4MWRhMSksKDB4MTI4NCsyNjU4LTB4MWNhYiksKDB4ODQzKzUzNTgtMHgxY2Y1KSwoMHg0ZjQrNTY3My0weDFhZTApCi0sKDB4MTRhZCszNzgwLTB4MjMzMyksKDB4NWQ3KzUzMTMtMHgxYTU5KSwoMHgxYTA5KzM0My0weDFiNjApLAotKDB4OGU3KzY1NzEtMHgyMjUxKSwoMHgyNzArNDI3OC0weDEyZTQpLCgweGNlYisyOTE2LTB4MTgwYyksKDB4MTFkOSsxMzc3LTB4MTZmNikKLSwoMHgxNmI1KzI3MjAtMHgyMTEwKSwoMHgxNjJiKzMzODEtMHgyMzFhKSwoMHgxMWUxKzQyMTQtMHgyMjEwKSwKLSgweDk4KzU2MTAtMHgxNjNhKSwoMHhlZGIrNDg2Mi0weDIxOTApLCgweDEzNzgrMzE1OS0weDFmODUpLCgweDE1ZTkrMjA4Mi0weDFkYzApCi0sKDB4MTVjMysyMDctMHgxNjQ2KSwoMHgxMjgwKzQwNDAtMHgyMWZiKSwoMHgyZTMrMzA2OC0weGU5MSksCi0oMHgxNDY0KzIzMjQtMHgxZDI5KSwoMHgxOGU5KzMyOTctMHgyNTdhKSwoMHgxMDhmKzIyODEtMHgxOTI3KSwoMHg1YSs1Ni0weDQwKSwKLSgweDEzZjgrMTI1MS0weDE4ODgpLCgweGJhYys2NTAxLTB4MjRiZCksKDB4ZDQ1KzY0NTktMHgyNjJiKSwoMHhiYjcrMzg1Mi0weDFhNmQpCi0sKDB4MjA5OSszMzMtMHgyMThmKSwoMHhmNzArNTMwNC0weDIzZDApLCgweDZhOSs2NDYzLTB4MWY4ZiksKDB4OWUzKzcwMDctMHgyNGU4KQotLCgweDgyYSs3NTI4LTB4MjUzNyksWlBCX05PTl9HU00sKDB4MTJkOSszMzU3LTB4MWY5OSksWlBCX05PTl9HU00sCi0oMHgzOSs4NTgwLTB4MjFhYyksWlBCX05PTl9HU00sKDB4MmU5KzQ3NTMtMHgxNTE5KSwoMHgxMTc0KzM1OTgtMHgxZjIwKSwKLSgweGY0YyszMzE4LTB4MWJkZiksKDB4MWE0OCsxNDg2LTB4MWZiMiksKDB4ODNmKzc1NTQtMHgyNTVjKSwoMHgzNzgrODYxMi0weDI0YjYpCi0sKDB4MWU1MSs1NTYtMHgyMDE2KSwoMHgzYjQrNTM0NC0weDE4MmMpLCgweDE2OTErNzUxLTB4MTkxNyksKDB4N2EwKzcwMjctMHgyMmE5KQotLCgweDUwYSs1OTc5LTB4MWJmYSksKDB4MWM5ZCsyMzExLTB4MjUzOCksKDB4Mzc4KzU4NDQtMHgxOWRmKSwKLSgweDUzNCs0Nzc4LTB4MTc3MCksKDB4MWI1OCsyMTEtMHgxYmJjKSwoMHg1ZDkrMjI1NS0weGUzOCksKDB4MWM4Mis1MjctMHgxZTIwKSwKLSgweDFjODYrMjg2LTB4MWQzMiksKDB4MTc2MCsxMTM5LTB4MWI2MCksKDB4OGU0KzY3MTQtMHgyMmFhKSwoMHgxZWQxKzg1MS0weDIxYWYpCi0sKDB4MTFlYSs2MjUtMHgxM2U1KSwoMHgxZjcrNjA1My0weDE5MjUpLCgweDFmNjUrNjQ1LTB4MjE3MiksKDB4MmY4KzUyMzAtMHgxNmVkKQotLCgweDg2Nys1NzI5LTB4MWU0ZSksWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00KK1pQQl9OT05fR1NNLFpQQl9OT05fR1NNLCgweDg4Zis3MzEwLTB4MjUxMyksWlBCX05PTl9HU00sWlBCX05PTl9HU00sCisoMHgxNDIxKzI0MTAtMHgxZDdlKSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTQogLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCitaUEJfTk9OX0dTTSwoMHgxY2NkKzIyNTktMHgyNTgwKSwoMHgxZTIzKzEwNC0weDFlNmEpLCgweDIwZmErOTkwLTB4MjRiNiksCisoMHgyZjArNjM5Ny0weDFiY2EpLCgweDYwYysyNTAtMHg3MDQpLCgweDNiZiszNTY1LTB4MTE4NyksKDB4NmU4KzIxOTAtMHhmNTApLAorKDB4OTg2KzE0NzQtMHhmMjEpLCgweGJlYyszMTY1LTB4MTgyMSksKDB4MmUwKzU2NjAtMHgxOGQzKSwoMHgxNWYwKzM5OTMtMHgyNTVmKSwKKygweGQzYSs2NDg4LTB4MjY2NyksKDB4MWUzNisxMDctMHgxZTc1KSwoMHhlYTUrMzg1NC0weDFkODYpLCgweDIxMCs4OTMxLTB4MjRjNSksCisoMHgxNDg3KzM5OTktMHgyM2Y3KSwoMHgxODUrOTM1NC0weDI1ZGYpLCgweDFlYyszOTYzLTB4MTEzNiksKDB4NDg0KzIwNTctMHhjNWIpLAorKDB4Yjc2KzI3ODYtMHgxNjI1KSwoMHgxNGFhKzI2ODgtMHgxZWY2KSwoMHg2YjErNjc0Ni0weDIwZDYpLCgweGQ5KzEzNTAtMHg1ZTkpLAorKDB4ZjlhKzg0MC0weDEyYWIpLCgweDY5MCs4MTU1LTB4MjYzMyksKDB4MTRiMiszMDk0LTB4MjA4ZiksKDB4YjM0KzIxMTItMHgxMzNhKSwKKygweDE2YjIrMjUwLTB4MTc3MSksKDB4ZDNhKzY0ODItMHgyNjUwKSwoMHhjOGMrNDAxNS0weDFiZmUpLCgweDEwNGYrMjA2Ny0weDE4MjQpCissKDB4MWY5KzUwMDctMHgxNTQ5KSwoMHgxNjQ4KzI0MTYtMHgxZmI4KSwoMHhiMTcrNjQ4LTB4ZDVlKSwoMHg5MTkrNzYyLTB4YmQxKSwKKygweGQ0YSs4ODItMHgxMDc5KSwoMHgxMDc0KzU3MTQtMHgyNjgyKSwoMHgxZDI4KzI4Ni0weDFlMDEpLCgweDg0YisyMDUxLTB4MTAwOCksCisoMHhkOCs3NzQ3LTB4MWVkNCksKDB4ODg1KzU2NDUtMHgxZTRhKSwoMHhiNGYrNjU0MC0weDI0OTIpLCgweGM1Yis4LTB4YzE5KSwKKygweDI4Yys5MTk3LTB4MjYyZSksKDB4MTI2KzMzNi0weDIyYSksKDB4MTE0ZisxMjY5LTB4MTVmNyksKDB4Y2ExKzUwNDUtMHgyMDA4KSwKKygweDE0YjYrNDMyMi0weDI1NDkpLCgweGY4OCsyMjg4LTB4MTgyOCksKDB4MTQ4NSsxNjMzLTB4MWE5NSksKDB4NjIrMTc5OC0weDcxNiksCisoMHg3ZjArMzMwNi0weDE0ODcpLCgweDRhZCs3MzYzLTB4MjExYyksKDB4NWU1KzM0OTAtMHgxMzMyKSwoMHhlZGIrNTE5OS0weDIyZDQpLAorKDB4NzkwKzI5MzItMHgxMmFkKSwoMHg3OGIrMTgwLTB4N2U3KSwoMHgzMjcrMjcxOC0weGQ2YyksKDB4Zjk3KzUzMi0weDExNTEpLAorKDB4NjUrNjk1MS0weDFiMzEpLFpQQl9OT05fR1NNLCgweDQxNis2NDAyLTB4MWNiYiksWlBCX05PTl9HU00sCisoMHg3ODYrMzcwNS0weDE1ZWUpLFpQQl9OT05fR1NNLCgweGZhZis0ODU5LTB4MjI0OSksKDB4ODZiKzczNy0weGFlYSksCisoMHgxYzYzKzE0My0weDFjOGYpLCgweDEyNGIrMTY5LTB4MTI5MCksKDB4Y2I3KzU5NzMtMHgyM2E3KSwoMHgxYWErNjgwOS0weDFiZGQpLAorKDB4ODc5KzM1MDQtMHgxNWMyKSwoMHgzODgrODk4My0weDI2MzcpLCgweDg5KzI4ODgtMHhiNjgpLCgweDFhMTcrMTM5Ni0weDFmMjEpLAorKDB4MTRjKzQzNTAtMHgxMWRmKSwoMHhiZGIrNTc4MC0weDIyMDMpLCgweGE0Mis0ODMzLTB4MWNiNiksKDB4MTdhOSszMjkxLTB4MjQxNikKKywoMHgxZTRiKzE1NTUtMHgyM2VmKSwoMHhjYzkrNTE3NS0weDIwOTApLCgweDE4NDErMzIwMS0weDI0NTEpLAorKDB4Mjg3KzIzNzgtMHhiNWYpLCgweDE4Nis0NjkwLTB4MTM2NSksKDB4NDg0KzE0NTgtMHg5YzIpLCgweDU2NysyMTc0LTB4ZDcwKSwKKygweDFkZTErMjMzNS0weDI2OGEpLCgweGUzNCs1OTgzLTB4MjUxYyksKDB4MWVhYysxOTMxLTB4MjViZiksCisoMHgxZjk3KzQ0Ny0weDIwZGQpLCgweDNkNSsxNjA5LTB4OWE0KSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKIFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLCgweGIzOCszMjMzLTB4MTc5OSksWlBCX05PTl9HU00sCi0oMHg3NTErMzQ0NS0weDE0YzUpLCgweDY3NSs5OTgtMHhhMzcpLCgweDYyOCs2OTI5LTB4MjEzNiksWlBCX05PTl9HU00sCi0oMHgxMDJhKzUzMzgtMHgyNGE1KSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTQotLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLSgweDE0ZGIrMzQwNS0weDIxYzgpLCgweDNjZCs2ODczLTB4MWU2NSksKDB4MTZjKzM3NjItMHhmZGQpLCgweGIzZis1NjM5LTB4MjEwNSksCi0oMHg1ZjIrNzU1MC0weDIzMmYpLCgweGFjMSs1MzEyLTB4MWYyNiksKDB4ZjFkKzg4Mi0weDEyODEpLCgweDgwNCs0MDA0LTB4MTc4YyksCi0oMHgxMjcyKzMyOTYtMHgxZjQ5KSwoMHgxNGYxKzEyMTgtMHgxOTZlKSwoMHhiNTMrMzkxMS0weDFhN2IpLAotKDB4MTUwNCsyNzkwLTB4MWZhNSksKDB4YjJhKzQ2MzAtMHgxY2ZiKSwoMHgyZWErNzY5OC0weDIwYjMpLCgweDFkYWQrMzQ1LTB4MWViZCkKLSwoMHgxYzAwKzE2NTktMHgyMjMyKSwoMHg0YzArNDY1My0weDE2YTQpLFpQQl9OT05fR1NNLCgweGUxNSs5ODAtMHgxMThjKSwKLSgweDFkMzgrMjI5Ni0weDI1ZTEpLCgweGU2Kzg1MjYtMHgyMWU1KSwoMHgxNDc0KzQ2MjEtMHgyNjMyKSwoMHg1OTMrMTQ4My0weGIwZiksCi0oMHhiOCs0NDY5LTB4MTFkMSksWlBCX05PTl9HU00sKDB4MWUxMisyMjQ1LTB4MjZjYyksKDB4N2FkKzUyNTUtMHgxYmRmKSwKLSgweDE2NGErMTAxNi0weDE5ZWQpLCgweDk5Yis1NzgzLTB4MWZkZCksKDB4MTA1Zis0NjU3LTB4MjIzMiksCi0oMHgxZTE2KzE4NzktMHgyNTE0KSxaUEJfTk9OX0dTTSwoMHgxNTErMTgxNy0weDg0YyksKDB4ZDVmKzI2NzEtMHgxNzRmKSwKLSgweGU5ZisxMTQ4LTB4MTJiYSksKDB4MjMzKzM0MjktMHhmMzcpLCgweDNiYisxNzQ1LTB4YTJiKSwoMHhkOSs3MjQ4LTB4MWNhZSksCi0oMHgzY2ErNTQ5Mi0weDE5MmYpLCgweDEwNys4ODQyLTB4MjM3NCksKDB4Y2JiKzQ4NDctMHgxZmExKSwoMHgxZTgrNjM4MS0weDFhZDEpLAotKDB4YTUzKzY3NjItMHgyNGI4KSwoMHhmM2IrNDM1Mi0weDFmZDYpLCgweDhmNSs1NzQ0LTB4MWYwMCksKDB4NDczKzg1OTQtMHgyNWZlKSwKLSgweDE0NDQrNDM4Ni0weDI0ZmQpLCgweDUzNSsxMzkwLTB4YTNhKSwoMHg4ZWMrMjk4NC0weDE0MmIpLFpQQl9OT05fR1NNLAotKDB4N2I3KzkwMC0weGFiZSksKDB4YTY0KzUzNy0weGM3NSksKDB4N2ErODczOC0weDIyMmQpLCgweGZjYis4MC0weGZhYyksCi0oMHgxNjQzKzMwOTYtMHgyMWVjKSwoMHhhZDcrNjgxMi0weDI0ZjcpLFpQQl9OT05fR1NNLCgweGZjNCsyOTEzLTB4MWIxOSksCi0oMHg1MzgrMTk4Mi0weGNmMCksKDB4MWQyOSsxNjE5LTB4MjMwNyksKDB4OTg1KzY2NDktMHgyMzA5KSwoMHgxYzUrNDcxMS0weDEzYWUpLAotKDB4ZDc1KzE4Ni0weGRiNiksWlBCX05PTl9HU00sKDB4NzcwKzgzMC0weGEzNSl9O1ZPSUQgYXRQYl9Jbml0KFZPSUQpe1VJTlQzMiAKLXBiQ291bnQ9KDB4ODJhKzY5NDYtMHgyMzRjKTtnX3pQYl9TaW1JbmRleFsoMHgyMDA0KzE3MTYtMHgyNmI4KV09Ci0oMHg1NWErNTk1MS0weDFjOTkpO3NjX2NmZ19zZXQoWlBCX05WX0lOSVQsWlBCX0xPQURJTkcpOyhWT0lEKXNjX2NmZ19zZXQoCi1aUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO2ZvcihwYkNvdW50PSgweDM4Nys3NTYzLTB4MjExMSk7cGJDb3VudDw9Ci1aUEJfU0lNX01BWF9SRUNPUkQ7cGJDb3VudCsrKXtnX3pQYl9TaW1JbmRleFtwYkNvdW50XT1QQk1fRVJST1JfTk9UX0ZPVU5EO31pZigKLVpQQl9EQl9PSyE9YXRQYl9DcmVhdERiKCkpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCi0icGI6YXRQYl9Jbml0OmNyZWF0ZSBwYm0gdGFibGUgZmFpbGVkXG4iKTtyZXR1cm47fWlmKFpQQl9EQl9PSyE9YXRQYl9Jbml0QXBJbmRleAotKCkpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCitaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwoMHgyZGErOTAxMC0weDI1Y2MpLAorWlBCX05PTl9HU00sKDB4MTg5MCsyNDg5LTB4MjI0OCksKDB4MTkxZCsxNzI0LTB4MWZiNSksKDB4NGIxKzg0OTUtMHgyNWRkKSwKK1pQQl9OT05fR1NNLCgweDMwMSsyNzcyLTB4ZDc2KSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKK1pQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAorWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCitaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKK1pQQl9OT05fR1NNLCgweGQzMSszNDU5LTB4MWE1NCksKDB4ODBhKzIxODYtMHgxMDUzKSwoMHgxOWFhKzI0OTktMHgyMzJjKSwKKygweDE5NysyMzc1LTB4YTlkKSwoMHg4NzUrNzY5Ni0weDI2NDQpLCgweDIyMjMrMTQtMHgyMWQ2KSwoMHg1NDgrODMxMy0weDI1YjMpLAorKDB4YTk4KzY4NTQtMHgyNTQyKSwoMHg3MDQrNjgxNS0weDIxOWEpLCgweDhkNCs3MTEzLTB4MjQ1OCksKDB4MjdhKzgzMTYtMHgyMmQ3KSwKKygweDExNzMrNjkzLTB4MTNlMyksKDB4MThkNysxMTczLTB4MWQyNyksKDB4YjNhKzU5MjUtMHgyMjE2KSwKKygweDE1MTErNDUxNi0weDI2NmMpLCgweGU3OCs0NzYyLTB4MjBjOSksKDB4YjVmKzQ2ODAtMHgxZDVlKSxaUEJfTk9OX0dTTSwKKygweDIzY2YrNDgzLTB4MjU1NSksKDB4NjYzKzE3MTItMHhjYzQpLCgweGM5ZisyMTY2LTB4MTRjNiksKDB4YzFjKzY0ODUtMHgyNTIyKSwKKygweDEyODUrMzAzMi0weDFlMGUpLCgweDIyYzgrMTA0NC0weDI2ODApLFpQQl9OT05fR1NNLCgweDhmNis1MDAwLTB4MWM3MyksCisoMHgxMGI5KzQyMjMtMHgyMGUzKSwoMHgxMzk2KzIwMjktMHgxYjJlKSwoMHg3NzkrOTAzLTB4YWFiKSwoMHgxZTcxKzM5Mi0weDFmOWIpLAorKDB4MWUyMCsyMjctMHgxZWFhKSxaUEJfTk9OX0dTTSwoMHg0ZTgrODA2MS0weDI0NDcpLCgweDFlM2MrMTU1NS0weDIzZDApLAorKDB4MjNmNCs0MTQtMHgyNTMxKSwoMHgxMGI3KzEyLTB4MTA2MiksKDB4MWRlMisxMTg5LTB4MjIyNiksKDB4MWM4Yys0MC0weDFjMzkpLAorKDB4MTNmOCs0NzEtMHgxNWMwKSwoMHgxMjFjKzE0NjAtMHgxN2IzKSwoMHg4MzYrNzM5OS0weDI1MTQpLCgweDg1MCs1MTk0LTB4MWM5NikKKywoMHg2OTArNDI3MC0weDE3MzkpLCgweDU5Mis0NzQ3LTB4MTdiOCksKDB4MWFjNyszNzMtMHgxYmQ3KSwoMHg2YTIrMzI3Ni0weDEzNjcpCissKDB4YjQzKzE3MTMtMHgxMThiKSwoMHgxMjcyKzI1MTItMHgxYmQ5KSwoMHgxMDkwKzI1MS0weDExMjIpLFpQQl9OT05fR1NNLAorKDB4ZjA5KzMyOC0weGZkNCksKDB4Y2Y0KzEyODQtMHgxMWYwKSwoMHgxN2NhKzI0NjYtMHgyMGZkKSwoMHhmMSsxNDMzLTB4NjFiKSwKKygweGI4NSsxNzg2LTB4MTIxMCksKDB4OGUyKzEyNzQtMHhkNjApLFpQQl9OT05fR1NNLCgweDFkZmYrNTA5LTB4MWZmMCksCisoMHgxMmVjKzQwMzAtMHgyMmE0KSwoMHgxMzAxKzQwNjMtMHgyMjZiKSwoMHgxOGQzKzEyMjgtMHgxZDJhKSwKKygweDE5OTMrMTgwNy0weDIwMjQpLCgweGNkNCs1NjI1LTB4MjI1NCksWlBCX05PTl9HU00sKDB4MWNlNCsxODM4LTB4MjM5OSl9O1ZPSUQgCithdFBiX0luaXQoVk9JRCl7VUlOVDMyIHBiQ291bnQ9KDB4Mzk3KzY3MDYtMHgxZGM5KTtnX3pQYl9TaW1JbmRleFsKKygweDI1YzErMTQwLTB4MjY0ZCldPSgweDEwNDYrNDQxOC0weDIxODgpO3NjX2NmZ19zZXQoWlBCX05WX0lOSVQsWlBCX0xPQURJTkcpOygKK1ZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO2ZvcihwYkNvdW50PQorKDB4MTBhZCsyNjIxLTB4MWFlOSk7cGJDb3VudDw9WlBCX1NJTV9NQVhfUkVDT1JEO3BiQ291bnQrKyl7Z196UGJfU2ltSW5kZXhbCitwYkNvdW50XT1QQk1fRVJST1JfTk9UX0ZPVU5EO31pZihaUEJfREJfT0shPWF0UGJfQ3JlYXREYigpKXtzbG9nKFBCX1BSSU5ULAorU0xPR19FUlIsInBiOmF0UGJfSW5pdDpjcmVhdGUgcGJtIHRhYmxlIGZhaWxlZFxuIik7cmV0dXJuO31pZihaUEJfREJfT0shPQorYXRQYl9Jbml0QXBJbmRleCgpKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0OVx4NmVceDY5XHg3NFx4M2FceDY5XHg2ZVx4NjlceDc0XHgyMFx4NjFceDcwXHg0OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IiAiXG4iCiApO3JldHVybjt9KFZPSUQpYXRQYl9TZXRBcENhcGFjaXR5VGFibGUoKTt9Vk9JRCBhdFBiX0NmZ1BiTnZJbml0KFZPSUQpeyhWT0lEKQogc2NfY2ZnX3NldChaUEJfTlZfVVNJTUlOREVYTUlOLCJceDMwIik7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfVVNJTUlOREVYTUFYLAogIlx4MzAiKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9VU0lNTUVNT1JZRlVMTCwiXHg2ZVx4NmYiKTt9aW50IAotYXRwYl9DdnRVY3MyVG9BbHBoYUZpZWxkKGNoYXIqc3JjLGludCBzcmNMZW4sY2hhcipkZXN0KXtpbnQgaT0oMHhjNCszOTMwLTB4MTAxZSkKLTtpbnQgbWluPTMyNzY3O2ludCBtYXg9KDB4N2ExKzU2NjEtMHgxZGJlKTtpbnQgdGVtcD0oMHg1NDYrNTEyNC0weDE5NGEpO2ludCAKLW91dE9mZj0oMHg5OSs4NTAxLTB4MjFjZSk7cHJpbnRmKAorYXRwYl9DdnRVY3MyVG9BbHBoYUZpZWxkKGNoYXIqc3JjLGludCBzcmNMZW4sY2hhcipkZXN0KXtpbnQgaT0KKygweDdjNCszODQ3LTB4MTZjYik7aW50IG1pbj0zMjc2NztpbnQgbWF4PSgweDFmMDErNDM3LTB4MjBiNik7aW50IHRlbXA9CisoMHg0MTErNzExMS0weDFmZDgpO2ludCBvdXRPZmY9KDB4NGYyKzI2MzUtMHhmM2QpO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3M1x4NzJceDYzXHg0Y1x4NjVceDZlXHgzZFx4MjVceDY0IiAiXG4iCi0sc3JjTGVuKTtpZihzcmNMZW48PSgweGYzZCszOTk5LTB4MWVkYyl8fHNyYz09TlVMTHx8ZGVzdD09TlVMTCl7cmV0dXJuLQotKDB4MTFjYys0MzU3LTB4MjJkMCk7fWlmKHNyY0xlbjw9KDB4NjNjKzgyODctMHgyNjk5KSl7ZGVzdFsoMHhlYTIrNTA3Mi0weDIyNzIpXT0KLSgweDExOGIrMzQyMS0weDFlNjgpO21lbWNweShkZXN0KygweDE3NDQrMjIyMi0weDFmZjEpLHNyYyxzcmNMZW4pO3ByaW50ZigKKyxzcmNMZW4pO2lmKHNyY0xlbjw9KDB4YTIwKzUwODctMHgxZGZmKXx8c3JjPT1OVUxMfHxkZXN0PT1OVUxMKXtyZXR1cm4tCisoMHg2NDArNjAwLTB4ODk3KTt9aWYoc3JjTGVuPD0oMHg3NmErNDU4NC0weDE5NTApKXtkZXN0WygweGExNCs2MDgzLTB4MjFkNyldPQorKDB4YzdkKzM4NTMtMHgxYjBhKTttZW1jcHkoZGVzdCsoMHgzMDIrODEyLTB4NjJkKSxzcmMsc3JjTGVuKTtwcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NzBceDYyXHg1Zlx4NDNceDc2XHg3NFx4NTVceDYzXHg3M1x4MzJceDU0XHg2Zlx4NDFceDZjXHg3MFx4NjhceDYxXHg0Nlx4NjlceDY1XHg2Y1x4NjRceDJjXHgyMFx4NzVceDczXHg2NVx4MjBceDM4XHgzMFx4MjBceDYzXHg2Zlx4NjRceDY1XHgyY1x4MjBceDZjXHg2NVx4NmVceDIwXHgzZFx4MjVceDY0IiAiXG4iCi0sc3JjTGVuKygweDVjMCs3OTUxLTB4MjRjZSkpO3JldHVybiBzcmNMZW4rKDB4OTdmKzY1OTktMHgyMzQ1KTt9Zm9yKGk9Ci0oMHgyMDUrMjQ3MS0weGJhYyk7aTxzcmNMZW47aSs9KDB4YjczKzY3MzEtMHgyNWJjKSl7aWYoc3JjW2ldIT0KLSgweDEyNmIrNDEyMS0weDIyODQpKXt0ZW1wPShpbnQpKCgoc3JjW2ldPDwoMHhiZWYrNTYyNi0weDIxZTEpKSY2NTI4MCl8KHNyY1tpKwotKDB4ZTE4KzYyNDMtMHgyNjdhKV0mKDB4MThhKzgwNzgtMHgyMDE5KSkpOwotI2lmICgweDU0NysxNDEyLTB4YWNiKSAKLWlmKHRlbXA8KDB4MTk0MCsxODA1LTB4MjA0ZCkpe21heD1taW4rKDB4MTRjMys0NDIxLTB4MjU4Nik7YnJlYWs7fQorLHNyY0xlbisoMHgxYjErMzk1Ny0weDExMjUpKTtyZXR1cm4gc3JjTGVuKygweDEyZDArMzE5Ni0weDFmNGIpO31mb3IoaT0KKygweGQyNSs5NzYtMHgxMGY1KTtpPHNyY0xlbjtpKz0oMHgxMzMzKzI3MzMtMHgxZGRlKSl7aWYoc3JjW2ldIT0KKygweGQ0KzU5MzQtMHgxODAyKSl7dGVtcD0oaW50KSgoKHNyY1tpXTw8KDB4ZmEzKzUwMzctMHgyMzQ4KSkmNjUyODApfChzcmNbaSsKKygweDE1MjcrMjU3MS0weDFmMzEpXSYoMHgxOGJkKzE1NDItMHgxZGM0KSkpOworI2lmICgweDZmNCs2MzY2LTB4MWZkMikgCitpZih0ZW1wPCgweDExNzUrMjA5Mi0weDE5YTEpKXttYXg9bWluKygweGJkYys2MjAzLTB4MjM5NSk7YnJlYWs7fQogI2VuZGlmICAgICAgICAgICAgDQogaWYobWluPnRlbXApe21pbj10ZW1wO31pZihtYXg8dGVtcCl7bWF4PXRlbXA7fX19cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDcwXHg2Mlx4NWZceDQzXHg3Nlx4NzRceDU1XHg2M1x4NzNceDMyXHg1NFx4NmZceDQxXHg2Y1x4NzBceDY4XHg2MVx4NDZceDY5XHg2NVx4NmNceDY0XHgyY1x4MjBceDZkXHg2OVx4NmVceDNkXHgyNVx4NjRceDJjXHgyMFx4NmRceDYxXHg3OFx4M2RceDI1XHg2NCIgIlxuIgotLG1pbixtYXgpO2lmKChtYXgtbWluKTwoMHgxYTcrODM0LTB4NDY4KSl7aWYoKHVuc2lnbmVkIGNoYXIpKG1pbiYKLSgweDY5NiszMjY4LTB4MTJkYSkpPT0odW5zaWduZWQgY2hhcikobWF4JigweDg5MisyMjQxLTB4MTBkMykpKXtkZXN0WwotKDB4Y2JiKzYzMDctMHgyNTVkKV09KHVuc2lnbmVkIGNoYXIpKHNyY0xlbi8oMHg0ZDErNjIyNS0weDFkMjApKTtkZXN0WwotKDB4Mzc5Kzc4NjItMHgyMjJmKV09KHVuc2lnbmVkIGNoYXIpKDB4MTk1NSszMzc5LTB4MjYwNyk7bWluPShpbnQpKG1pbiYzMjY0MCk7Ci1kZXN0WygweDI0MyszMjI1LTB4ZWRhKV09KHVuc2lnbmVkIGNoYXIpKChtaW4+PigweDM0Mis0ODU2LTB4MTYzMykpJgotKDB4MTY0NSszMDM1LTB4MjEyMSkpO291dE9mZj0oMHhjYjQrMTMzNC0weDExZTcpO3ByaW50ZigKKyxtaW4sbWF4KTtpZigobWF4LW1pbik8KDB4YjlhKzE3NTUtMHgxMWY0KSl7aWYoKHVuc2lnbmVkIGNoYXIpKG1pbiYKKygweDM5OSs1MDg3LTB4MTZmOCkpPT0odW5zaWduZWQgY2hhcikobWF4JigweDEyNjgrMzU2Mi0weDFmZDIpKSl7ZGVzdFsKKygweDZjZis2NjAyLTB4MjA5OCldPSh1bnNpZ25lZCBjaGFyKShzcmNMZW4vKDB4ZGRjKzEwOTItMHgxMjFlKSk7ZGVzdFsKKygweDE3NmMrMTg1NS0weDFlYWIpXT0odW5zaWduZWQgY2hhcikoMHgzNWErMTQ0OC0weDg4MSk7bWluPShpbnQpKG1pbiYzMjY0MCk7CitkZXN0WygweDEyZTArMzQxMC0weDIwMzApXT0odW5zaWduZWQgY2hhcikoKG1pbj4+KDB4N2Q5KzQyOC0weDk3ZSkpJgorKDB4MTBmKzk0NzEtMHgyNTBmKSk7b3V0T2ZmPSgweDIyNmQrMTE2Ny0weDI2ZjkpO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3NVx4NzNceDY1XHgyMFx4MzhceDMxXHgyMFx4NjNceDZmXHg2NFx4NjUiICJcbiIKLSk7fWVsc2V7ZGVzdFsoMHg0YTIrMTkzOC0weGMzMyldPSh1bnNpZ25lZCBjaGFyKShzcmNMZW4vKDB4MTRjMyszMTE0LTB4MjBlYikpOwotZGVzdFsoMHgxNzU2KzI4MzUtMHgyMjY5KV09KHVuc2lnbmVkIGNoYXIpKDB4YmI0KzY2MC0weGRjNik7ZGVzdFsKLSgweGNjZis2NTQ5LTB4MjY2MildPSh1bnNpZ25lZCBjaGFyKSgobWluPj4oMHgxNDkxKzIxOTktMHgxZDIwKSkmCi0oMHhmOTArMzg0LTB4MTAxMSkpO2Rlc3RbKDB4MTBhZCsxMy0weDEwYjcpXT0odW5zaWduZWQgY2hhcikobWluJgotKDB4MWQxYysyNjEtMHgxZDIyKSk7b3V0T2ZmPSgweDE0Y2YrMzIzNy0weDIxNzApO3ByaW50ZigKKyk7fWVsc2V7ZGVzdFsoMHgxNjVjKzMzMjktMHgyMzVjKV09KHVuc2lnbmVkIGNoYXIpKHNyY0xlbi8oMHgxOGY4KzQ3Ny0weDFhZDMpKTsKK2Rlc3RbKDB4MTM2OSsyMDkxLTB4MWI5NCldPSh1bnNpZ25lZCBjaGFyKSgweDFjMSs4Nzc2LTB4MjM4Nyk7ZGVzdFsKKygweDVhNys2MDgyLTB4MWQ2NyldPSh1bnNpZ25lZCBjaGFyKSgobWluPj4oMHg3NzErMjI5Mi0weDEwNWQpKSYKKygweGQzMCsxMTE1LTB4MTA4YykpO2Rlc3RbKDB4MWQ1MCsyMjQ3LTB4MjYxNCldPSh1bnNpZ25lZCBjaGFyKShtaW4mCisoMHgxMDVmKzQ4MDktMHgyMjI5KSk7b3V0T2ZmPSgweGI2YysyODc5LTB4MTZhNyk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDcwXHg2Mlx4NWZceDQzXHg3Nlx4NzRceDU1XHg2M1x4NzNceDMyXHg1NFx4NmZceDQxXHg2Y1x4NzBceDY4XHg2MVx4NDZceDY5XHg2NVx4NmNceDY0XHgyY1x4MjBceDc1XHg3M1x4NjVceDIwXHgzOFx4MzJceDIwXHg2M1x4NmZceDY0XHg2NSIgIlxuIgotKTt9Zm9yKGk9KDB4OTM0KzE4ODAtMHgxMDhjKTtpPHNyY0xlbjtpKz0oMHhlMGQrNjA2NS0weDI1YmMpKXtpZihzcmNbaV09PQotKDB4Mzk4KzM3NTYtMHgxMjQ0KSl7ZGVzdFtvdXRPZmZdPSh1bnNpZ25lZCBjaGFyKShzcmNbaSsoMHg1NzYrMTI4LTB4NWY1KV0mCi0oMHhmY2ErNDY0MS0weDIxNmMpKTt9ZWxzZXt0ZW1wPShpbnQpKCgoKHNyY1tpXTw8KDB4NmZjKzY0Ny0weDk3YikpJjY1MjgwKXwoc3JjWwotaSsoMHgxMTE0KzExMjUtMHgxNTc4KV0mKDB4MTkzMSszMzQ5LTB4MjU0NykpKS1taW4pO2Rlc3Rbb3V0T2ZmXT0odW5zaWduZWQgY2hhcikKLSh0ZW1wfCgweDE0MjArMjIyNy0weDFjNTMpKTt9b3V0T2ZmKys7fXByaW50ZigKKyk7fWZvcihpPSgweDQxKzI5OTQtMHhiZjMpO2k8c3JjTGVuO2krPSgweGUzOCs1Mzg2LTB4MjM0MCkpe2lmKHNyY1tpXT09CisoMHgyMjUrODQ0NS0weDIzMjIpKXtkZXN0W291dE9mZl09KHVuc2lnbmVkIGNoYXIpKHNyY1tpKygweGY0Nis1ODE5LTB4MjYwMCldJgorKDB4OTcwKzQ0NDQtMHgxYTRkKSk7fWVsc2V7dGVtcD0oaW50KSgoKChzcmNbaV08PCgweDEwNzUrNDE5Ny0weDIwZDIpKSY2NTI4MCl8KAorc3JjW2krKDB4MjVkKzkzODItMHgyNzAyKV0mKDB4NTFjKzU1NTEtMHgxOWNjKSkpLW1pbik7ZGVzdFtvdXRPZmZdPSh1bnNpZ25lZCAKK2NoYXIpKHRlbXB8KDB4MjM5KzI0MzAtMHhiMzcpKTt9b3V0T2ZmKys7fXByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHgyMFx4NmZceDc1XHg3NFx4NGZceDY2XHg2Nlx4M2RceDI1XHg2NFx4MmNceDY0XHg2NVx4NzNceDc0XHg1Ylx4MjVceDY0XHg1ZFx4M2RceDI1XHg3OCIgIlxuIgotLG91dE9mZixvdXRPZmYsZGVzdFtvdXRPZmZdKTtyZXR1cm4gb3V0T2ZmO31kZXN0WygweDY3NSs0NTcyLTB4MTg1MSldPQotKDB4ZjI2KzMwNjMtMHgxYTlkKTttZW1jcHkoZGVzdCsoMHgyYzErODQwMy0weDIzOTMpLHNyYyxzcmNMZW4pO3ByaW50ZigKKyxvdXRPZmYsb3V0T2ZmLGRlc3Rbb3V0T2ZmXSk7cmV0dXJuIG91dE9mZjt9ZGVzdFsoMHgzNjgrNjk2My0weDFlOWIpXT0KKygweDQ5OCsyNjYzLTB4ZTdmKTttZW1jcHkoZGVzdCsoMHhkN2ErNTEyOS0weDIxODIpLHNyYyxzcmNMZW4pO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3NVx4NzNceDY1XHgyMFx4MzhceDMwXHgyMFx4NjNceDZmXHg2NFx4NjVceDJjXHgyMFx4NmNceDY1XHg2ZVx4MjBceDNkXHgyNVx4NjQiICJcbiIKLSxzcmNMZW4rKDB4NGFjKzY2Mi0weDc0MSkpO3JldHVybiBzcmNMZW4rKDB4MThhMiszMzI2LTB4MjU5Zik7fWludCAKKyxzcmNMZW4rKDB4YWZjKzUxNzYtMHgxZjMzKSk7cmV0dXJuIHNyY0xlbisoMHhmNWQrMzcxLTB4MTBjZik7fWludCAKIGF0UGJfR2V0VTgwQ29kZShjb25zdCBVSU5UOCpzcmNDb2RlLFVJTlQzMiBzcmNDb2RlTGVuLFVJTlQ4KmRlc3RDb2RlLFVJTlQzMiAKIGRlc3RDb2RlTGVuKXthc3NlcnQoZGVzdENvZGUhPU5VTEwmJnNyY0NvZGUhPU5VTEwpO2lmKHNyY0NvZGVMZW49PQotKDB4MTBkMCsxODYwLTB4MTgxNCl8fGRlc3RDb2RlTGVuPT0oMHgxNGRhKzE4OTctMHgxYzQzKXx8ZGVzdENvZGVMZW48c3JjQ29kZUxlbikKLXtyZXR1cm4tKDB4ZjI0Kzg1Ni0weDEyN2IpO31tZW1zZXQoZGVzdENvZGUsKDB4MTZjZCsyMTMzLTB4MWYyMiksZGVzdENvZGVMZW4pOwotZGVzdENvZGVbKDB4OGYzKzcxMDUtMHgyNGI0KV09KDB4ZTc1KzYxNDAtMHgyNWYxKTtwcmludGYoCisoMHgxMWVhKzQ0NzctMHgyMzY3KXx8ZGVzdENvZGVMZW49PSgweDM4NCs2MjgtMHg1ZjgpfHxkZXN0Q29kZUxlbjxzcmNDb2RlTGVuKXsKK3JldHVybi0oMHgyNTEwKzI5OS0weDI2M2EpO31tZW1zZXQoZGVzdENvZGUsKDB4MjUzKzk5OC0weDYzOSksZGVzdENvZGVMZW4pOworZGVzdENvZGVbKDB4ODErNTIwLTB4Mjg5KV09KDB4MTRiNCs4NzktMHgxN2EzKTtwcmludGYoCiAiXHg2M1x4NjhceDY1XHg2ZVx4NmFceDY5XHg2NVx4MjBceDJkXHgyZFx4MmRceDJkXHgyZFx4NjFceDc0XHg1MFx4NjJceDVmXHg0N1x4NjVceDc0XHg1NVx4MzhceDMwXHg0M1x4NmZceDY0XHg2NVx4MmRceDJkXHgyZFx4MmRceDJkXHg3M1x4NzJceDYzXHg0M1x4NmZceDY0XHg2NVx4NWJceDMwXHg1ZFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sc3JjQ29kZVsoMHgxODgzKzIxODQtMHgyMTBiKV0pO3N3aXRjaChzcmNDb2RlWygweDU3YisxNzg4LTB4Yzc3KV0pe2Nhc2UKLSgweDE1ZmMrNzYxLTB4MTg3NSk6e21lbWNweShkZXN0Q29kZSxzcmNDb2RlLHNyY0NvZGVMZW4pO3JldHVybiBzcmNDb2RlTGVuO31jYXNlCi0oMHg0NjQrMzEwNC0weDEwMDMpOnthdFBiX0N2dFU4MVRvVTgwKHNyY0NvZGUrKDB4MTE4Mis1MzU4LTB4MjY2Ziksc3JjQ29kZUxlbi0KLSgweDFkMDMrMjMwOC0weDI2MDYpLGRlc3RDb2RlKygweDcxOCsyMjI5LTB4ZmNjKSxkZXN0Q29kZUxlbi0oMHg0OTQrNTk4Ni0weDFiZjUpCi0pO3JldHVybiBzcmNDb2RlWygweDFiYys2NTcwLTB4MWI2NSldKigweDFhZjkrMzAyMi0weDI2YzUpKygweDI2MCs1NjI0LTB4MTg1Nyk7fQotY2FzZSgweDEzYys4NzgxLTB4MjMwNyk6e2F0UGJfQ3Z0VTgyVG9VODAoc3JjQ29kZSsoMHgyMTkwKzEyNTEtMHgyNjcyKSwKLXNyY0NvZGVMZW4tKDB4M2FjKzU1NzAtMHgxOTZkKSxkZXN0Q29kZSsoMHgxMGU2KzIyMTMtMHgxOThhKSxkZXN0Q29kZUxlbi0KLSgweDEzMmYrNjQ3LTB4MTViNSkpO3JldHVybiBzcmNDb2RlWygweDczNCs2NjI1LTB4MjExNCldKigweDM5Nys0MjU0LTB4MTQzMykrCi0oMHgxYzJkKzE1MjItMHgyMjFlKTt9ZGVmYXVsdDp7cmV0dXJuLSgweDdmYSsxNjA0LTB4ZTNkKTt9fX1CT09MIAotYXRQYl9DdnRVODJUb1U4MChjb25zdCBVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIGRlc3RMZW4KLSl7VUlOVDggY2hOdW09KDB4ZTM1KzI4MzItMHgxOTQ1KTtVSU5UMTYgYmFzZVBvaW50ZXI9KDB4MWEzMCs4MTctMHgxZDYxKTtVSU5UOCAKLWlDdXJDaGFyPSgweDc5MSs2NjYyLTB4MjE5Nyk7VUlOVDMyIGlDdXJTcmM9KDB4ZWIrMzY4OS0weGY1NCk7Y2hOdW09KFVJTlQzMikKLXNyY0RhdGFbKDB4NGUxKzc5NTQtMHgyM2YzKV07YmFzZVBvaW50ZXI9KFVJTlQxNilzcmNEYXRhWygweDY3OSsxMjM0LTB4YjRhKV07Ci1iYXNlUG9pbnRlcj1iYXNlUG9pbnRlcjw8KDB4OTAwKzg1MC0weGM0YSk7YmFzZVBvaW50ZXI9YmFzZVBvaW50ZXIrc3JjRGF0YVsKLSgweDM0ZCs4MjgzLTB4MjNhNildO2lmKGNoTnVtKigweDFmMmIrMTc5LTB4MWZkYyk+ZGVzdExlbil7cmV0dXJuIEZBTFNFO31mb3IoCi1pQ3VyU3JjPSgweDEzY2YrNDcyMC0weDI2M2MpO2lDdXJTcmM8c3JjTGVuJiZpQ3VyQ2hhcjxjaE51bTtpQ3VyU3JjKyssaUN1ckNoYXIrKwotKXtVSU5UOCpjdXJEZXN0PWRlc3REYXRhKygweDExMjYrODE2LTB4MTQ1NCkqaUN1ckNoYXI7YXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIKLSxzcmNEYXRhW2lDdXJTcmNdLGN1ckRlc3QsY3VyRGVzdCsoMHgxNDA3KzMwNzgtMHgyMDBjKSk7fXJldHVybiBUUlVFO31CT09MIAotYXRQYl9DdnRVODFUb1U4MChjb25zdCBVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIGRlc3RMZW4KLSl7VUlOVDggY2hOdW09KDB4ZDcyKzE3MzUtMHgxNDM5KTtVSU5UMTYgYmFzZVBvaW50ZXI9KDB4OGFhKzYxMzAtMHgyMDljKTtVSU5UOCAKLWlDdXJDaGFyPSgweDFiODIrMjE2MC0weDIzZjIpO1VJTlQzMiBpQ3VyU3JjPSgweGFiOSs2NzgyLTB4MjUzNyk7Y2hOdW09c3JjRGF0YVsKLSgweDMxMis3NTc0LTB4MjBhOCldO2Jhc2VQb2ludGVyPSgoVUlOVDE2KXNyY0RhdGFbKDB4NGMwKzEwOC0weDUyYildKTw8Ci0oMHhhYTMrMzg0My0weDE5OWYpO2lmKGNoTnVtKigweDMrNTMwMC0weDE0YjUpPmRlc3RMZW4pe3JldHVybiBGQUxTRTt9Zm9yKAotaUN1clNyYz0oMHgxYjg5Kzg2Ni0weDFlZTkpO2lDdXJTcmM8c3JjTGVuJiZpQ3VyQ2hhcjxjaE51bTtpQ3VyU3JjKyssaUN1ckNoYXIrKykKLXtVSU5UOCpjdXJEZXN0PWRlc3REYXRhKygweDUwYys0NTkxLTB4MTZmOSkqaUN1ckNoYXI7YXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIsCi1zcmNEYXRhW2lDdXJTcmNdLGN1ckRlc3QsY3VyRGVzdCsoMHgxZDUrMTc3MC0weDhiZSkpO31yZXR1cm4gVFJVRTt9Vk9JRCAKLWF0UGJfQ3Z0Q2hDb2RlKFVJTlQxNiBiYXNlUG9pbnRlcixVSU5UOCBzcmNEYXRhLFVJTlQ4KmNoTXNiLFVJTlQ4KmNoTHNiKXtVSU5UMTYgCi1jdXJDaGFyPSgweDE3MmQrNDI2LTB4MThkNyk7YXNzZXJ0KGNoTXNiIT1OVUxMJiZjaExzYiE9TlVMTCk7aWYoKHNyY0RhdGEmCi0oMHg2YzErNjQxLTB4OGMyKSk9PSgweGQ1YysyNzU4LTB4MTgyMikpe2N1ckNoYXI9c3JjRGF0YTt9ZWxzZXtjdXJDaGFyPQotYmFzZVBvaW50ZXIrKHNyY0RhdGEmKDB4NDdhKzI5MjgtMHhmNmIpKTt9KmNoTXNiPShVSU5UOCkoY3VyQ2hhcj4+Ci0oMHgxODA5KzEyNTAtMHgxY2UzKSk7KmNoTHNiPShVSU5UOCkoKGN1ckNoYXI8PCgweDE1NTYrMzQ3My0weDIyZGYpKT4+Ci0oMHgyMjI0KzExMTAtMHgyNjcyKSk7cmV0dXJuO31pbnQgYXRQYl9TdHJpbmcyQnl0ZXMoY29uc3QgY2hhcipwU3JjLHVuc2lnbmVkIAotY2hhcipwRHN0LGludCBuU3JjTGVuZ3RoKXtpbnQgaT0oMHhjNzArMTk1Ny0weDE0MTUpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fAotblNyY0xlbmd0aDwoMHgxMTBkKzIyNTUtMHgxOWRjKSl7cmV0dXJuLSgweDEwYWIrMjIzOS0weDE5NjkpO31mb3IoaT0KLSgweDFlNysxOTQtMHgyYTkpO2k8blNyY0xlbmd0aDtpKz0oMHgxN2YwKzE5MTUtMHgxZjY5KSl7aWYoKnBTcmM+PQotKChjaGFyKSgweDQ5MisyODQ4LTB4ZjgyKSkmJipwU3JjPD0oKGNoYXIpKDB4MTlkNCsxMTIzLTB4MWRmZSkpKXsqcERzdD0oKnBTcmMtCi0oKGNoYXIpKDB4MjE4Mis4LTB4MjE1YSkpKTw8KDB4MjArMzYzNS0weGU0Zik7fWVsc2V7KnBEc3Q9KCh0b3VwcGVyKCpwU3JjKS0KLSgoY2hhcikoMHg4MjgrNzk1OS0weDI2ZmUpKSkrKDB4OGRjKzY5ODctMHgyNDFkKSk8PCgweDRlYSs0NDQ2LTB4MTY0NCk7fXBTcmMrKzsKLWlmKCpwU3JjPj0oKGNoYXIpKDB4ZmE5KzE3ODgtMHgxNjc1KSkmJipwU3JjPD0oKGNoYXIpKDB4ODM4KzEwODEtMHhjMzgpKSl7KnBEc3QKLXw9KnBTcmMtKChjaGFyKSgweDIyOSs2NTI4LTB4MWI3OSkpO31lbHNleypwRHN0fD0odG91cHBlcigqcFNyYyktCi0oKGNoYXIpKDB4NDVjKzUxMzItMHgxODI3KSkpKygweDFkNWYrMTQ3NC0weDIzMTcpO31wU3JjKys7cERzdCsrO31yZXR1cm4gCi1uU3JjTGVuZ3RoLygweDI5Yys4NTQ2LTB4MjNmYyk7fWludCBhdFBiX0J5dGVzMlN0cmluZyhjb25zdCB1bnNpZ25lZCBjaGFyKnBTcmMsCissc3JjQ29kZVsoMHg0ZDErNDEyNC0weDE0ZWQpXSk7c3dpdGNoKHNyY0NvZGVbKDB4NDRmKzcyNjItMHgyMGFkKV0pe2Nhc2UKKygweDdjOSs0MTkxLTB4MTdhOCk6e21lbWNweShkZXN0Q29kZSxzcmNDb2RlLHNyY0NvZGVMZW4pO3JldHVybiBzcmNDb2RlTGVuO31jYXNlCisoMHgyMjNiKzEyMzktMHgyNjkxKTp7YXRQYl9DdnRVODFUb1U4MChzcmNDb2RlKygweDU5MSs1MDcyLTB4MTk2MCksc3JjQ29kZUxlbi0KKygweDEwMjUrOTItMHgxMDgwKSxkZXN0Q29kZSsoMHgxMzk2KzIzNzctMHgxY2RlKSxkZXN0Q29kZUxlbi0KKygweDEzNjgrMTEzOS0weDE3ZGEpKTtyZXR1cm4gc3JjQ29kZVsoMHhhYjcrNDg3Ni0weDFkYzIpXSooMHgyNzUrMzAyMS0weGU0MCkrCisoMHgyZjUrNzYzMS0weDIwYzMpO31jYXNlKDB4Y2UxKzMyNi0weGRhNSk6e2F0UGJfQ3Z0VTgyVG9VODAoc3JjQ29kZSsKKygweDVmNSs0ODc2LTB4MTkwMCksc3JjQ29kZUxlbi0oMHg5NDYrNjkwLTB4YmY3KSxkZXN0Q29kZSsoMHhiZGErMTc5OC0weDEyZGYpLAorZGVzdENvZGVMZW4tKDB4YjIzKzE4NTAtMHgxMjVjKSk7cmV0dXJuIHNyY0NvZGVbKDB4MjRmMysyODUtMHgyNjBmKV0qCisoMHg4ZTYrNTEwLTB4YWUyKSsoMHgxYmVjKzc2LTB4MWMzNyk7fWRlZmF1bHQ6e3JldHVybi0oMHgzNWYrNTAwNS0weDE2ZWIpO319fQorQk9PTCBhdFBiX0N2dFU4MlRvVTgwKGNvbnN0IFVJTlQ4KnNyY0RhdGEsVUlOVDMyIHNyY0xlbixVSU5UOCpkZXN0RGF0YSxVSU5UMzIgCitkZXN0TGVuKXtVSU5UOCBjaE51bT0oMHgzZjUrNjU0OC0weDFkODkpO1VJTlQxNiBiYXNlUG9pbnRlcj0oMHgxZWMrMjU0MC0weGJkOCk7CitVSU5UOCBpQ3VyQ2hhcj0oMHgxNzA5KzM0NTUtMHgyNDg4KTtVSU5UMzIgaUN1clNyYz0oMHgxZDNmKzEzMzQtMHgyMjc1KTtjaE51bT0oCitVSU5UMzIpc3JjRGF0YVsoMHgyMDErMzI4OC0weGVkOSldO2Jhc2VQb2ludGVyPShVSU5UMTYpc3JjRGF0YVsKKygweDE3YzIrNzItMHgxODA5KV07YmFzZVBvaW50ZXI9YmFzZVBvaW50ZXI8PCgweDEyZTUrMTkxNy0weDFhNWEpO2Jhc2VQb2ludGVyPQorYmFzZVBvaW50ZXIrc3JjRGF0YVsoMHg0OWIrODEyNS0weDI0NTYpXTtpZihjaE51bSooMHg2YTArNzY0MS0weDI0NzcpPmRlc3RMZW4peworcmV0dXJuIEZBTFNFO31mb3IoaUN1clNyYz0oMHhjMWYrMjcxLTB4ZDJiKTtpQ3VyU3JjPHNyY0xlbiYmaUN1ckNoYXI8Y2hOdW07CitpQ3VyU3JjKyssaUN1ckNoYXIrKyl7VUlOVDgqY3VyRGVzdD1kZXN0RGF0YSsoMHg3MDQrNjExMy0weDFlZTMpKmlDdXJDaGFyOworYXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIsc3JjRGF0YVtpQ3VyU3JjXSxjdXJEZXN0LGN1ckRlc3QrKDB4MWJjKzc3MS0weDRiZSkpO30KK3JldHVybiBUUlVFO31CT09MIGF0UGJfQ3Z0VTgxVG9VODAoY29uc3QgVUlOVDgqc3JjRGF0YSxVSU5UMzIgc3JjTGVuLFVJTlQ4KgorZGVzdERhdGEsVUlOVDMyIGRlc3RMZW4pe1VJTlQ4IGNoTnVtPSgweDcwNCs0MTg1LTB4MTc1ZCk7VUlOVDE2IGJhc2VQb2ludGVyPQorKDB4MTUxNCsxODIxLTB4MWMzMSk7VUlOVDggaUN1ckNoYXI9KDB4ZjVjKzQwOTEtMHgxZjU3KTtVSU5UMzIgaUN1clNyYz0KKygweDM3ZCszNDg2LTB4MTExYik7Y2hOdW09c3JjRGF0YVsoMHhjMTArMjU0My0weDE1ZmYpXTtiYXNlUG9pbnRlcj0oKFVJTlQxNikKK3NyY0RhdGFbKDB4MmUyKzM3NTYtMHgxMThkKV0pPDwoMHgxN2FkKzkzOS0weDFiNTEpO2lmKGNoTnVtKigweGY1KzgxNDAtMHgyMGJmKT4KK2Rlc3RMZW4pe3JldHVybiBGQUxTRTt9Zm9yKGlDdXJTcmM9KDB4MmYxKzI0MzktMHhjNzYpO2lDdXJTcmM8c3JjTGVuJiZpQ3VyQ2hhcjwKK2NoTnVtO2lDdXJTcmMrKyxpQ3VyQ2hhcisrKXtVSU5UOCpjdXJEZXN0PWRlc3REYXRhKygweDI0M2IrODgtMHgyNDkxKSppQ3VyQ2hhcjsKK2F0UGJfQ3Z0Q2hDb2RlKGJhc2VQb2ludGVyLHNyY0RhdGFbaUN1clNyY10sY3VyRGVzdCxjdXJEZXN0KygweDIrMTk4OC0weDdjNSkpO30KK3JldHVybiBUUlVFO31WT0lEIGF0UGJfQ3Z0Q2hDb2RlKFVJTlQxNiBiYXNlUG9pbnRlcixVSU5UOCBzcmNEYXRhLFVJTlQ4KmNoTXNiLAorVUlOVDgqY2hMc2Ipe1VJTlQxNiBjdXJDaGFyPSgweDViNisxODYwLTB4Y2ZhKTthc3NlcnQoY2hNc2IhPU5VTEwmJmNoTHNiIT1OVUxMKTsKK2lmKChzcmNEYXRhJigweDIwYmErMTUyNi0weDI2MzApKT09KDB4NTJmKzcyMjMtMHgyMTY2KSl7Y3VyQ2hhcj1zcmNEYXRhO31lbHNleworY3VyQ2hhcj1iYXNlUG9pbnRlcisoc3JjRGF0YSYoMHgxNmU0KzIyNjctMHgxZjQwKSk7fSpjaE1zYj0oVUlOVDgpKGN1ckNoYXI+PgorKDB4MTBjZisxNjE3LTB4MTcxOCkpOypjaExzYj0oVUlOVDgpKChjdXJDaGFyPDwoMHgxNTkzKzg3OC0weDE4ZjkpKT4+CisoMHg1OTQrMTMzMy0weGFjMSkpO3JldHVybjt9aW50IGF0UGJfU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKgorcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IGk9KDB4MWQzKzIyMDMtMHhhNmUpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fAorblNyY0xlbmd0aDwoMHg5NDcrMTExOS0weGRhNikpe3JldHVybi0oMHgxMTcwKzI0NjYtMHgxYjExKTt9Zm9yKGk9CisoMHgxMTM1KzM3ODYtMHgxZmZmKTtpPG5TcmNMZW5ndGg7aSs9KDB4OWE0KzYxOTYtMHgyMWQ2KSl7aWYoKnBTcmM+PQorKChjaGFyKSgweDcxOSs1MTI4LTB4MWFmMSkpJiYqcFNyYzw9KChjaGFyKSgweDIzZmQrNzM4LTB4MjZhNikpKXsqcERzdD0oKnBTcmMtCisoKGNoYXIpKDB4NDAwKzY0NzEtMHgxZDE3KSkpPDwoMHgxMzM2KzQ1ODctMHgyNTFkKTt9ZWxzZXsqcERzdD0oKHRvdXBwZXIoKnBTcmMpLQorKChjaGFyKSgweDhkZisxNDYzLTB4ZTU1KSkpKygweGYwMSsyODI2LTB4MWEwMSkpPDwoMHgxMjhhKzE4My0weDEzM2QpO31wU3JjKys7aWYKKygqcFNyYz49KChjaGFyKSgweGRlYisxMTc1LTB4MTI1MikpJiYqcFNyYzw9KChjaGFyKSgweDE2YjkrMjY4OS0weDIxMDEpKSl7KnBEc3QKK3w9KnBTcmMtKChjaGFyKSgweDEzYzIrODk1LTB4MTcxMSkpO31lbHNleypwRHN0fD0odG91cHBlcigqcFNyYyktCisoKGNoYXIpKDB4OGJhKzU3NzYtMHgxZjA5KSkpKygweGRkYisyNzA5LTB4MTg2Nik7fXBTcmMrKztwRHN0Kys7fXJldHVybiAKK25TcmNMZW5ndGgvKDB4ODRkKzY0ODktMHgyMWE0KTt9aW50IGF0UGJfQnl0ZXMyU3RyaW5nKGNvbnN0IHVuc2lnbmVkIGNoYXIqcFNyYywKIGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7Y29uc3QgY2hhciB0YWJbXT0KICJceDMwXHgzMVx4MzJceDMzXHgzNFx4MzVceDM2XHgzN1x4MzhceDM5XHg0MVx4NDJceDQzXHg0NFx4NDVceDQ2IjtpbnQgaT0KLSgweGFhMys1NjQ0LTB4MjBhZik7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgxNjZjKzU4MS0weDE4YjEpKXsKLXJldHVybi0oMHgxYWFhKzk1LTB4MWIwOCk7fWZvcihpPSgweDMyZis0MDk0LTB4MTMyZCk7aTxuU3JjTGVuZ3RoO2krKyl7KnBEc3QrKz0KLXRhYlsqcFNyYz4+KDB4NmU3Kzg4Mi0weGE1NSldOypwRHN0Kys9dGFiWypwU3JjJigweDEwMjIrMTYyMy0weDE2NmEpXTtwU3JjKys7fSoKLXBEc3Q9J1wwJztyZXR1cm4gblNyY0xlbmd0aCooMHgxZWM2KzQ0NC0weDIwODApO31zdGF0aWMgVk9JRCBhdFBiX1dlYlJlY29kZVNob3coCi1UX3pQYl9XZWJDb250YWN0IGNvbnN0KnBGcm9td2ViKXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCisoMHgxY2I0KzUwLTB4MWNlNik7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgxMjcrNDA4LTB4MmJmKSl7CityZXR1cm4tKDB4YThjKzIwLTB4YTlmKTt9Zm9yKGk9KDB4OWVmKzQ0ODgtMHgxYjc3KTtpPG5TcmNMZW5ndGg7aSsrKXsqcERzdCsrPXRhYgorWypwU3JjPj4oMHhjZTcrMTQ2OC0weDEyOWYpXTsqcERzdCsrPXRhYlsqcFNyYyYoMHgxMDYrOTI5Mi0weDI1NDMpXTtwU3JjKys7fSoKK3BEc3Q9J1wwJztyZXR1cm4gblNyY0xlbmd0aCooMHgxNWI4KzM0NTEtMHgyMzMxKTt9c3RhdGljIFZPSUQgYXRQYl9XZWJSZWNvZGVTaG93CisoVF96UGJfV2ViQ29udGFjdCBjb25zdCpwRnJvbXdlYil7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjZceDcyXHg2Zlx4NmRceDc3XHg2NVx4NjJceDJlXHg0OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjQiICJcbiIKICxwRnJvbXdlYi0+cGJJbmRleCk7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjZceDcyXHg2Zlx4NmRceDc3XHg2NVx4NjJceDJlXHg0ZVx4NjFceDZkXHg2NVx4M2RceDI1XHg3MyIgIlxuIiwKQEAgLTIwMSwyMSArMjAwLDIxIEBACiApe3NjX2NmZ19zZXQoWlBCX05WX0lOSVQsWlBCX09QRVJBVEVfU1VDKTtwcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDUzXHg2M1x4NzBceDYyXHg3Mlx4NTNceDY1XHg3NFx4MjBceDYxXHg3NFx4NDJceDYxXHg3M1x4NjVceDVmXHg0OVx4NjlceDZlXHg3NFx4NTBceDYyXHg0Zlx4NmJceDIwIiAiXG4iCiApO31WT0lEIGF0UGJfUmVjdkNwYnNSZWFkUnNwKFRfelBiX0F0Q3Bic1JlYWRSZXMqY3Bic0luZCl7Q0hBUiByZXNJbmZvWwotKDB4NWVmKzQwMjgtMHgxNTk3KV09eygweDlkMyszNzIwLTB4MTg1Yil9O2lmKHN0cm5jbXAoY3Bic0luZC0+bG9jVHlwZSwKLSJceDUzXHg0ZCIsKDB4MmY1KzM1MjgtMHgxMGJiKSk9PSgweDU3ZisyNTIxLTB4ZjU4KSl7KFZPSUQpc25wcmludGYocmVzSW5mbywKLSgweDZiOSs0NTYyLTB4MTg3NyksIlx4MjVceDY0IixjcGJzSW5kLT51c2VkRW50cmllcyk7KFZPSUQpc2NfY2ZnX3NldCgKLU5WX1BCX1VTRURFTlRSSUVTLHJlc0luZm8pO21lbXNldChyZXNJbmZvLCgweDEzZTgrMjAyNi0weDFiZDIpLAotKDB4ZGY1KzM4MzEtMHgxY2Q4KSk7KFZPSUQpc25wcmludGYocmVzSW5mbywoMHgxNjgwKzM0OTQtMHgyNDEyKSwiXHgyNVx4NjQiLAorKDB4YjEwKzc3OC0weGUwNildPXsoMHgxN2RiKzI1ODAtMHgyMWVmKX07aWYoc3RybmNtcChjcGJzSW5kLT5sb2NUeXBlLCJceDUzXHg0ZCIKKywoMHg3OGIrMTAwMC0weGI3MSkpPT0oMHg3NjYrNjkyMC0weDIyNmUpKXsoVk9JRClzbnByaW50ZihyZXNJbmZvLAorKDB4NjY3KzcxOTktMHgyMjcyKSwiXHgyNVx4NjQiLGNwYnNJbmQtPnVzZWRFbnRyaWVzKTsoVk9JRClzY19jZmdfc2V0KAorTlZfUEJfVVNFREVOVFJJRVMscmVzSW5mbyk7bWVtc2V0KHJlc0luZm8sKDB4MTAxNis1MjQ3LTB4MjQ5NSksCisoMHgxNzVkKzE1MjctMHgxZDQwKSk7KFZPSUQpc25wcmludGYocmVzSW5mbywoMHhlNDIrMzQwLTB4ZjgyKSwiXHgyNVx4NjQiLAogY3Bic0luZC0+dG90YWxFbnRyaWVzKTsoVk9JRClzY19jZmdfc2V0KE5WX1BCX1RPVEFMRU5UUklFUyxyZXNJbmZvKTsKLWdfelBiX1NpbUluZGV4WygweGM5ZiszNDU5LTB4MWEyMildPShVSU5UMzIpKGNwYnNJbmQtPnRvdGFsRW50cmllcyk7fWVsc2V7cHJpbnRmCitnX3pQYl9TaW1JbmRleFsoMHhhYjUrNTUxNC0weDIwM2YpXT0oVUlOVDMyKShjcGJzSW5kLT50b3RhbEVudHJpZXMpO31lbHNle3ByaW50ZgogKAogIlx4NjFceDc0XHg1MFx4NjJceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDcwXHg2Mlx4NzNceDUyXHg2NVx4NjFceDY0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDZmXHg3NFx4MjBceDUzXHg0ZFx4M2FceDI1XHg3MyIgIlxuIgogLGNwYnNJbmQtPmxvY1R5cGUpO319c3RhdGljIFZPSUQgYXRQYl9TZXRTY3BiclJlc1RvTnYoQ0hBUiBjb25zdCpwYk52S2V5V29yZCwKLVVJTlQzMiBsZW4pe2NoYXIgY29udmVydGVkWygweDE1NDkrMzM0OC0weDIyNTMpXT17KDB4NzkwKzE1MTgtMHhkN2UpfTthc3NlcnQoCi1wYk52S2V5V29yZCE9WlVGSV9OVUxMKTsoVk9JRClzbnByaW50Zihjb252ZXJ0ZWQsKDB4MjU3KzM0NTYtMHhmY2QpLCJceDI1XHg2NCIsCitVSU5UMzIgbGVuKXtjaGFyIGNvbnZlcnRlZFsoMHgxNDYxKzEyNjUtMHgxOTQ4KV09eygweDMyMis4MjQwLTB4MjM1Mil9O2Fzc2VydCgKK3BiTnZLZXlXb3JkIT1aVUZJX05VTEwpOyhWT0lEKXNucHJpbnRmKGNvbnZlcnRlZCwoMHg0Nys5MDgwLTB4MjNiNSksIlx4MjVceDY0IiwKIGxlbik7KFZPSUQpc2NfY2ZnX3NldChwYk52S2V5V29yZCxjb252ZXJ0ZWQpO31WT0lEIGF0UGJfU2NwYnJUZXN0UnNwKAotVF96UGJfQXRTY3BiclRlc3RSZXMqc2NwYnNJbmQpe1RfelBiX1VzaW1DYXBhY2l0eSBwYlBhcmE9eygweDNhOCszMjczLTB4MTA3MSl9OwotQ0hBUiBwYlVzZWRbKDB4NjMyKzcyNzEtMHgyMjY3KV09eygweGJjKzY4MTctMHgxYjVkKX07c2NfY2ZnX2dldCgKK1RfelBiX0F0U2NwYnJUZXN0UmVzKnNjcGJzSW5kKXtUX3pQYl9Vc2ltQ2FwYWNpdHkgcGJQYXJhPXsoMHg2MjYrMjA5OC0weGU1OCl9OworQ0hBUiBwYlVzZWRbKDB4MjI4MSs3MzgtMHgyNTMxKV09eygweDEzOSs3OTE2LTB4MjAyNSl9O3NjX2NmZ19nZXQoCiBOVl9QQl9VU0VERU5UUklFUyxwYlVzZWQsc2l6ZW9mKHBiVXNlZCkpO2dfelBiX0RlbEluZGV4PShVSU5UMzIpc2NwYnNJbmQtPgogbWluSW5kZXg7cGJQYXJhLnNpbVR5cGU9WlBCX1VTSU07cGJQYXJhLm1heFJlY29yZE51bT1zY3Bic0luZC0+bWF4SW5kZXg7cGJQYXJhLgogdXNlZFJlY29yZE51bT1hdG9pKHBiVXNlZCk7cGJQYXJhLm1heE51bWJlckxlbj1zY3Bic0luZC0+bWF4TnVtYmVyTGVuO3BiUGFyYS4KQEAgLTIyNCwyMiArMjIzLDIyIEBACiBhdFBiX1NldFNjcGJyUmVzVG9OdihaUEJfTlZfVVNJTUlOREVYTUlOLChVSU5UMzIpc2NwYnNJbmQtPm1pbkluZGV4KTsKIGF0UGJfU2V0U2NwYnJSZXNUb052KFpQQl9OVl9VU0lNSU5ERVhNQVgsKFVJTlQzMilzY3Bic0luZC0+bWF4SW5kZXgpOyhWT0lEKQogYXRQYl9TZXRTaW1DYXBhY2l0eVRhYmxlKHBiUGFyYSk7fWludCBhdFBiX1NlbmRTY3BiclNldF9yZXBlYXQoc2VtX3QgdFNlbUlkKXtpbnQKLSBtaW49KDB4NTQ4KzE3MTctMHhiZmQpO2ludCBtYXg9KDB4ZDNiKzU0MjMtMHgyMjZhKTtpbnQgcmVzPSgweDE2NGYrMzMyNC0weDIzNGIpCi07aW50IGluZGV4PSgweDExODgrMjQ4MC0weDFiMzgpO0NIQVIgcGJNaW5bKDB4ZDArODI0NC0weDIwZDIpXT17Ci0oMHhiMmIrNTc1Ny0weDIxYTgpfTtDSEFSIHBiTWF4WygweDE1NDQrMjM3OS0weDFlNWQpXT17KDB4MTRhNisyNDUtMHgxNTliKX07aW50IAotaW5kZXhtaW49KDB4OGI4KzYyNDEtMHgyMTE5KTtpbnQgaW5kZXhtYXg9KDB4MWJhZCsyODUwLTB4MjZjZik7Ci1UX3pQYl9TY3BiclJlYWRSZXMgc2NwYnJSZWFkSW5mbz17KDB4MWViMSsyODgtMHgxZmQxKX07c2NfY2ZnX2dldCgKKyBtaW49KDB4N2QxKzU1ODktMHgxZGE2KTtpbnQgbWF4PSgweDEwYzgrNTU2Ni0weDI2ODYpO2ludCByZXM9KDB4NGY5KzE3OTctMHhiZmUpCis7aW50IGluZGV4PSgweDNlYysxOTczLTB4YmExKTtDSEFSIHBiTWluWygweDExNTErMjM1NC0weDFhNTEpXT17CisoMHgxNjArOTM0NS0weDI1ZTEpfTtDSEFSIHBiTWF4WygweDY1Yis3NDUwLTB4MjM0MyldPXsoMHhhMzcrMzkwLTB4YmJkKX07aW50IAoraW5kZXhtaW49KDB4MTVjOCsxMjA2LTB4MWE3ZSk7aW50IGluZGV4bWF4PSgweDEyNmErMjM5LTB4MTM1OSk7CitUX3pQYl9TY3BiclJlYWRSZXMgc2NwYnJSZWFkSW5mbz17KDB4ZDA2KzE5NjYtMHgxNGI0KX07c2NfY2ZnX2dldCgKIFpQQl9OVl9VU0lNSU5ERVhNSU4scGJNaW4sc2l6ZW9mKHBiTWluKSk7c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLHBiTWF4LAogc2l6ZW9mKHBiTWF4KSk7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfTE9BRElORyk7aWYoc3RyY21wKHBiTWluLCJceDMwIikKLT09KDB4MWFkMCsyMTM1LTB4MjMyNyl8fHN0cmNtcChwYk1heCwiXHgzMCIpPT0oMHgyMjAzKzg5NC0weDI1ODEpKXtzY19jZmdfc2V0KAorPT0oMHgxOTE5KzU4MS0weDFiNWUpfHxzdHJjbXAocGJNYXgsIlx4MzAiKT09KDB4NmJiKzQ4NDYtMHgxOWE5KSl7c2NfY2ZnX3NldCgKIFpQQl9OVl9JTklULFpQQl9PUEVSQVRFX1NVQyk7cHJpbnRmKAogIlx4NjFceDc0XHg1MFx4NjJceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDYzXHg3MFx4NjJceDcyXHg1M1x4NjVceDc0XHgyMFx4NjNceDYxXHg3Mlx4NjRceDIwXHg3NVx4NmVceDczXHg3NVx4NzBceDcwXHg2Zlx4NzJceDc0XHgyMFx4NzBceDYyIiAiXG4iCi0pO3JldHVybi0oMHg1YSs4NTE5LTB4MjFhMCk7fXNzY2FuZihwYk1pbiwiXHgyNVx4NjQiLCZtaW4pO3NzY2FuZihwYk1heCwKLSJceDI1XHg2NCIsJm1heCk7aWYoKG1pbjwoMHg2OSs0NTctMHgyMzIpfHxtaW4+SU5UX01BWC0oMHgyZTArOTEzNy0weDI2OTApKXx8KAotbWF4PCgweDFlNjQrMTkzNi0weDI1ZjQpfHxtYXg+SU5UX01BWC0oMHg5NGErNTk0Ny0weDIwODQpKSl7cHJpbnRmKAorKTtyZXR1cm4tKDB4ZDg1KzUwNjAtMHgyMTQ4KTt9c3NjYW5mKHBiTWluLCJceDI1XHg2NCIsJm1pbik7c3NjYW5mKHBiTWF4LAorIlx4MjVceDY0IiwmbWF4KTtpZigobWluPCgweGUxZCs2MzcyLTB4MjcwMSl8fG1pbj5JTlRfTUFYLSgweDE2NSs3ODYxLTB4MjAxOSkpfHwKKyhtYXg8KDB4ZDE0KzE3NjEtMHgxM2Y1KXx8bWF4PklOVF9NQVgtKDB4MTQ0OCs0NzcxLTB4MjZlYSkpKXtwcmludGYoCiAiXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NmVceDY0XHg1M1x4NjNceDcwXHg2Mlx4NzJceDUzXHg2NVx4NzRceDIwXHg3MFx4NjJceDIwXHg2ZVx4NzVceDZkXHgyMFx4NjVceDcyXHg3Mlx4MjBceDZkXHg2OVx4NmVceDNhXHgyNVx4NjRceDJjXHgyMFx4NmRceDYxXHg3OFx4M2FceDI1XHg2NCIgIlxuIgotLG1pbixtYXgpO3JldHVybi0oMHg1OSs1MTQwLTB4MTQ2Yyk7fXdoaWxlKCgweDNiKzU0OTMtMHgxNWFmKSl7aWYoaW5kZXhtaW48bWluKXsKLWluZGV4bWluPW1pbjtpbmRleG1heD1taW4rWlBCX0lOSVRfTE9BRF9SRUNPUkRfTlVNLSgweDIzOSsxOTQ0LTB4OWQwKTtpZigKKyxtaW4sbWF4KTtyZXR1cm4tKDB4OTQzKzM2MTItMHgxNzVlKTt9d2hpbGUoKDB4MTA0OSsxNTk1LTB4MTY4Mykpe2lmKGluZGV4bWluPAorbWluKXtpbmRleG1pbj1taW47aW5kZXhtYXg9bWluK1pQQl9JTklUX0xPQURfUkVDT1JEX05VTS0oMHgxNzk0KzEzMTItMHgxY2IzKTtpZigKIGluZGV4bWF4Pm1heCl7aW5kZXhtYXg9bWF4O2JyZWFrO31wcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDMxXHgzMVx4MzFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDZkXHg2OVx4NmVceDNkXHgyNVx4NjRceDJjXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHg2ZFx4NjFceDc4XHgzZFx4MjVceDY0XHgyY1x4MjhceDI1XHg2NFx4MmRceDI1XHg2NFx4MjkiICJcbiIKICxpbmRleG1pbixpbmRleG1heCxtaW4sbWF4KTt9ZWxzZXtpbmRleG1pbj1pbmRleG1pbitaUEJfSU5JVF9MT0FEX1JFQ09SRF9OVU07aWYoCkBAIC0yNTEsMTcgKzI1MCwxNyBAQAogLGluZGV4bWluLGluZGV4bWF4LG1pbixtYXgpO31zY3BiclJlYWRJbmZvLm1pbkluZGV4PWluZGV4bWluO3NjcGJyUmVhZEluZm8uCiBtYXhJbmRleD1pbmRleG1heDtyZXM9aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX0FUX0NUTCwKIE1TR19DTURfUkVBRF9QQl9SRVEsc2l6ZW9mKFRfelBiX1NjcGJyUmVhZFJlcyksJnNjcGJyUmVhZEluZm8sCi0oMHgxMWY2KzI3MDctMHgxYzg5KSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdD09LQotKDB4MzA0KzY3MzItMHgxZDRmKSl7YnJlYWs7fX1yZXR1cm4gZ19QYk9wdFJzcC5yZXN1bHQ7fQotI2lmICgweDFhOGYrNTYwLTB4MWNiZikNCisoMHgxMGIyKzQ3MDgtMHgyMzE2KSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdD09LQorKDB4ZWUyKzU0MzctMHgyNDFlKSl7YnJlYWs7fX1yZXR1cm4gZ19QYk9wdFJzcC5yZXN1bHQ7fQorI2lmICgweDE4YTIrMTgyNS0weDFmYzMpDQogaW50IGF0UGJfU2VuZFNjcGJyU2V0KFBTVFIgcEF0Q21kUGFyYSxpbnQgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe1VJTlQzMiAKLWluZGV4bWluPSgweDUxMys2NDM0LTB4MWUzNSk7VUlOVDMyIGluZGV4bWF4PSgweDVkZis1MDgyLTB4MTliOSk7Q0hBUiBhdGNtZE1zZ1sKLSgweDM4Nys3MjI3LTB4MWY3YyldPXsoMHgxZDMyKzEzNDUtMHgyMjczKX07aW50IHJlcz0oMHgxNTIxKzE5ODgtMHgxY2U1KTtDSEFSIAotcGJNaW5bKDB4MTU5YiszNzEyLTB4MjNlOSldPXsoMHgxZDA3KzE4MS0weDFkYmMpfTtDSEFSIHBiTWF4WygweDMwZis0NTIwLTB4MTQ4NSkKLV09eygweDEwMTErMzk2NS0weDFmOGUpfTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNSU4scGJNaW4sc2l6ZW9mKHBiTWluKSk7CitpbmRleG1pbj0oMHhiM2MrMjM4MS0weDE0ODkpO1VJTlQzMiBpbmRleG1heD0oMHgxMjAwKzEzMjYtMHgxNzJlKTtDSEFSIGF0Y21kTXNnWworKDB4MWE2KzIxNTgtMHg5Y2UpXT17KDB4NDU5KzQzNTctMHgxNTVlKX07aW50IHJlcz0oMHg4MCs3NDYtMHgzNmEpO0NIQVIgcGJNaW5bCisoMHgxNWJiKzEyMjQtMHgxYTUxKV09eygweGNiMysyNDQ3LTB4MTY0Mil9O0NIQVIgcGJNYXhbKDB4NGM1KzE3OTUtMHhiOTYpXT17CisoMHg2ZjIrMjIxMy0weGY5Nyl9O3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1JTixwYk1pbixzaXplb2YocGJNaW4pKTsKIHNjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1BWCxwYk1heCxzaXplb2YocGJNYXgpKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9JTklUCi0sWlBCX0xPQURJTkcpO2lmKHN0cmNtcChwYk1pbiwiXHgzMCIpPT0oMHgxMzczKzI1MTItMHgxZDQzKXx8c3RyY21wKHBiTWF4LCJceDMwIgotKT09KDB4YWY0KzMwODgtMHgxNzA0KSl7cHJpbnRmKAorLFpQQl9MT0FESU5HKTtpZihzdHJjbXAocGJNaW4sIlx4MzAiKT09KDB4M2U5KzY5MjUtMHgxZWY2KXx8c3RyY21wKHBiTWF4LCJceDMwIikKKz09KDB4NzYrNzM0Mi0weDFkMjQpKXtwcmludGYoCiAiXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NmVceDY0XHg1M1x4NjNceDcwXHg2Mlx4NzJceDUzXHg2NVx4NzRceDIwXHg2M1x4NjFceDcyXHg2NFx4MjBceDc1XHg2ZVx4NzNceDc1XHg3MFx4NzBceDZmXHg3Mlx4NzRceDIwXHg3MFx4NjIiICJcbiIKICk7cmV0dXJuIFpBVF9SRVNVTFRfT0s7fXNzY2FuZihwYk1pbiwiXHgyNVx4NjQiLCZpbmRleG1pbik7c3NjYW5mKHBiTWF4LAogIlx4MjVceDY0IiwmaW5kZXhtYXgpOyhWT0lEKXNucHJpbnRmKGF0Y21kTXNnLHNpemVvZihhdGNtZE1zZyksCkBAIC0yNzAsNDYgKzI2OSw0NiBAQAogYXRjbWRNc2csY2lkLHBBdFJzdCxhdFJzdFNpemUpO3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzbXNkYl9tdXRleCk7cmV0dXJuIHJlczt9CiAjZW5kaWYNCiBVSU5UOCBhdFBiX0VuY29kZVRleHQoQ0hBUipwYkRzdCxDSEFSIGNvbnN0KnBiVGV4dFNyYyxVSU5UMzIgZHN0TGVuKXtVSU5UOCBpPQotKDB4MjY2Kzc5OTYtMHgyMWEyKTtDSEFSIHN0clRhcmdldFtaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4MTY5MCszMjUwLTB4MjM0Mil9OwotaWYocGJUZXh0U3JjIT1aVUZJX05VTEwpe2lmKHN0cmxlbihwYlRleHRTcmMpKigweDE0ZDIrMzYxMS0weDIyZTkpKwotWlBCX1VDUzJfUFJFRklYX0xFTjxkc3RMZW4pe3NucHJpbnRmKChDSEFSKikmc3RyVGFyZ2V0WygweDMxZis0ODE2LTB4MTVlZildLAotc2l6ZW9mKHN0clRhcmdldCksIlx4MjVceDMwXHgzMlx4NTgiLFpQQl9VQ1MyX1BSRUZJWCk7Zm9yKGk9KDB4MTAzYSszODU0LTB4MWY0OCkKLTsoaTxzdHJsZW4ocGJUZXh0U3JjKSkmJihpKigweDFhOGIrODUzLTB4MWRkYykrWlBCX1VDUzJfUFJFRklYX0xFTjxkc3RMZW4pO2krKyl7Ci1zbnByaW50ZihzdHJUYXJnZXQraSooMHhkMSs2OTEzLTB4MWJjZSkrWlBCX1VDUzJfUFJFRklYX0xFTixzaXplb2Yoc3RyVGFyZ2V0KS1pKgotKDB4M2RhKzM4ODYtMHgxMzA0KS1aUEJfVUNTMl9QUkVGSVhfTEVOLCJceDMwXHgzMFx4MjVceDMwXHgzMlx4NTgiLHBiVGV4dFNyY1tpXSkKLTt9c3RybmNweShwYkRzdCxzdHJUYXJnZXQsZHN0TGVuLSgweDM0ZCs4MzM3LTB4MjNkZCkpO3JldHVybiBaVUZJX1NVQ0M7fX1yZXR1cm4gCisoMHgxNThjKzk3LTB4MTVlZCk7Q0hBUiBzdHJUYXJnZXRbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDYwYiszODU3LTB4MTUxYyl9O2lmKAorcGJUZXh0U3JjIT1aVUZJX05VTEwpe2lmKHN0cmxlbihwYlRleHRTcmMpKigweGQ2YisxMzM2LTB4MTI5ZikrCitaUEJfVUNTMl9QUkVGSVhfTEVOPGRzdExlbil7c25wcmludGYoKENIQVIqKSZzdHJUYXJnZXRbKDB4MTJmOSs0NjY2LTB4MjUzMyldLAorc2l6ZW9mKHN0clRhcmdldCksIlx4MjVceDMwXHgzMlx4NTgiLFpQQl9VQ1MyX1BSRUZJWCk7Zm9yKGk9KDB4YTgxKzY1NTMtMHgyNDFhKTsKKyhpPHN0cmxlbihwYlRleHRTcmMpKSYmKGkqKDB4MTg1MCsxODY4LTB4MWY5OCkrWlBCX1VDUzJfUFJFRklYX0xFTjxkc3RMZW4pO2krKyl7CitzbnByaW50ZihzdHJUYXJnZXQraSooMHgxZjYwKzE0NS0weDFmZWQpK1pQQl9VQ1MyX1BSRUZJWF9MRU4sc2l6ZW9mKHN0clRhcmdldCktaQorKigweDZjYSsxNTQ0LTB4Y2NlKS1aUEJfVUNTMl9QUkVGSVhfTEVOLCJceDMwXHgzMFx4MjVceDMwXHgzMlx4NTgiLHBiVGV4dFNyY1tpXSkKKzt9c3RybmNweShwYkRzdCxzdHJUYXJnZXQsZHN0TGVuLSgweDM3NSsxMTU0LTB4N2Y2KSk7cmV0dXJuIFpVRklfU1VDQzt9fXJldHVybiAKIFpVRklfRkFJTDt9Vk9JRCBhdFBiX1NjcGJyU2V0UnNwKFRfelBiX1NjcGJyU2V0UmVzKmF0UmVzKXtUX3pQYl9XZWJDb250YWN0IAotcGJSZWNvcmQ9eygweDg2YSs4NDYtMHhiYjgpfTtDSEFSIHBiRHN0W1pQQl9URVhUX1NJWkVfQllURVNdPXsKLSgweDE2ODgrMjk5MS0weDIyMzcpfTtDSEFSIHRleHRbWlBCX1RFWFRfU0laRV9CWVRFU109eygweGVmKzU1MTAtMHgxNjc1KX07aW50IAotdGV4dF9sZW49KDB4MWY4Mis4NzctMHgyMmVmKTtpbnQgdG1wX2xlbj0oMHg3YmErMTIzNS0weGM4ZCk7Q0hBUiB0bXBbCi1aUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4NjArMTY0Mi0weDZjYSl9O2lmKGF0UmVzLT5jb2RpbmchPVpQQl9VQ1MyKXtpZigKK3BiUmVjb3JkPXsoMHg5ZDUrNTA2MC0weDFkOTkpfTtDSEFSIHBiRHN0W1pQQl9URVhUX1NJWkVfQllURVNdPXsKKygweDYyNys3NTEzLTB4MjM4MCl9O0NIQVIgdGV4dFtaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4NDFiKzI2NjctMHhlODYpfTtpbnQgCit0ZXh0X2xlbj0oMHgxOTExKzE4MjgtMHgyMDM1KTtpbnQgdG1wX2xlbj0oMHg4NSs5NTI5LTB4MjViZSk7Q0hBUiB0bXBbCitaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4YWY3KzQ1NTgtMHgxY2M1KX07aWYoYXRSZXMtPmNvZGluZyE9WlBCX1VDUzIpe2lmKAogYXRQYl9FbmNvZGVUZXh0KHBiRHN0LGF0UmVzLT50ZXh0LFpQQl9URVhUX1NJWkVfQllURVMpPT1aVUZJX1NVQ0Mpe3N0cm5jcHkoYXRSZXMKLS0+dGV4dCxwYkRzdCsoMHgzYjErNzA5MC0weDFmNjEpLHNpemVvZihhdFJlcy0+dGV4dCktKDB4NGU2KzM5OTUtMHgxNDgwKSk7fWVsc2V7Ci1zbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAorLT50ZXh0LHBiRHN0KygweGVjNCszMzM4LTB4MWJjYyksc2l6ZW9mKGF0UmVzLT50ZXh0KS0oMHgxMTRhKzI4MDAtMHgxYzM5KSk7fWVsc2UKK3tzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg1M1x4NjNceDcwXHg2Mlx4NzJceDUzXHg2NVx4NzRceDUyXHg3M1x4NzBceDY1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDIwXHg2NVx4NzJceDcyXHgyMVx4MmUiICJcbiIKICk7cmV0dXJuO319ZWxzZXt0ZXh0X2xlbj1hdFBiX1N0cmluZzJCeXRlcygmYXRSZXMtPnRleHQsJnRleHQsc3RybGVuKGF0UmVzLT50ZXh0CiApKTt0bXBfbGVuPWF0UGJfR2V0VTgwQ29kZSgmdGV4dCx0ZXh0X2xlbiwmdG1wLFpQQl9URVhUX1NJWkVfQllURVMpO2lmKHRtcF9sZW48Ci0oMHg1NTYrMjQyMS0weGVjYikpcmV0dXJuO21lbXNldCgmdGV4dCwoMHhjYmIrMjgyMS0weDE3YzApLFpQQl9URVhUX1NJWkVfQllURVMpOwotdGV4dF9sZW49YXRQYl9CeXRlczJTdHJpbmcoJnRtcCwmdGV4dCx0bXBfbGVuKTtpZih0ZXh0X2xlbj4oMHgyMzJkKzg2NS0weDI2OGMpKXsKLW1lbXNldCgmYXRSZXMtPnRleHQsKDB4ZjhkKzEwNTctMHgxM2FlKSxaUEJfVEVYVF9TSVpFX0JZVEVTKTttZW1jcHkoJmF0UmVzLT50ZXh0Ci0sdGV4dCsoMHgyMDc2Kzk0My0weDI0MjMpLHN0cmxlbih0ZXh0KS0oMHhjMDQrMTUxNi0weDExZWUpKTt9fXBiUmVjb3JkLnBiSWQ9LQotKDB4MTI2YyszNDUwLTB4MWZlNSk7cGJSZWNvcmQucGJJbmRleD0oU0lOVDMyKWF0UmVzLT5pbmRleDtzdHJuY3B5KHBiUmVjb3JkLm5hbWUKLSxhdFJlcy0+dGV4dCxzaXplb2YocGJSZWNvcmQubmFtZSktKDB4MzgyKzYyOTItMHgxYzE1KSk7c3RybmNweShwYlJlY29yZC4KLW1vYmlsTnVtYmVyLGF0UmVzLT5udW1iZXIxLHNpemVvZihwYlJlY29yZC5tb2JpbE51bWJlciktKDB4MWIxYisxNjU3LTB4MjE5MykpOworKDB4Yzg3KzQzNTItMHgxZDg3KSlyZXR1cm47bWVtc2V0KCZ0ZXh0LCgweGJlZCs1OTM4LTB4MjMxZiksWlBCX1RFWFRfU0laRV9CWVRFUykKKzt0ZXh0X2xlbj1hdFBiX0J5dGVzMlN0cmluZygmdG1wLCZ0ZXh0LHRtcF9sZW4pO2lmKHRleHRfbGVuPigweGFhNSsxOTIyLTB4MTIyNSkpCit7bWVtc2V0KCZhdFJlcy0+dGV4dCwoMHgxM2MzKzQ0MzUtMHgyNTE2KSxaUEJfVEVYVF9TSVpFX0JZVEVTKTttZW1jcHkoJmF0UmVzLT4KK3RleHQsdGV4dCsoMHgxYTAyKzE1NTUtMHgyMDEzKSxzdHJsZW4odGV4dCktKDB4MzdhKzYxMTMtMHgxYjU5KSk7fX1wYlJlY29yZC5wYklkCis9LSgweGM3MisyMjAtMHhkNGQpO3BiUmVjb3JkLnBiSW5kZXg9KFNJTlQzMilhdFJlcy0+aW5kZXg7c3RybmNweShwYlJlY29yZC5uYW1lLAorYXRSZXMtPnRleHQsc2l6ZW9mKHBiUmVjb3JkLm5hbWUpLSgweDIwMCs0NjU5LTB4MTQzMikpO3N0cm5jcHkocGJSZWNvcmQuCittb2JpbE51bWJlcixhdFJlcy0+bnVtYmVyMSxzaXplb2YocGJSZWNvcmQubW9iaWxOdW1iZXIpLSgweDE1MTErMzg4MS0weDI0MzkpKTsKIHN0cm5jcHkocGJSZWNvcmQub2ZmaWNlTnVtYmVyLGF0UmVzLT5udW1iZXIyLHNpemVvZihwYlJlY29yZC5vZmZpY2VOdW1iZXIpLQotKDB4NzFkKzEzNjMtMHhjNmYpKTtzdHJuY3B5KHBiUmVjb3JkLmhvbWVOdW1iZXIsYXRSZXMtPm51bWJlcjMsc2l6ZW9mKHBiUmVjb3JkLgotaG9tZU51bWJlciktKDB4MWEwYys1ODMtMHgxYzUyKSk7c3RybmNweShwYlJlY29yZC5lbWFpbCxhdFJlcy0+ZW1haWwsc2l6ZW9mKAotcGJSZWNvcmQuZW1haWwpLSgweDhjOSs0ODcyLTB4MWJkMCkpO3BiUmVjb3JkLnBiTG9jYXRpb249WlBCX0xPQ0FUSU9OX1VTSU07KFZPSUQKLSlhdFBiX0xvYWRBUmVjVG9QYm1UYWJsZSgmcGJSZWNvcmQpO31WT0lEIGF0UGJfU2V0RGVsU3RhdHVzTXVsdE9yQWxsKCl7aWYoCi1nX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtPigweDE1Y2IrMjgwMi0weDIwYmQpKXtpZihnX3pQYl9EZWxTdGF0dXNVc2ltLgotZGVhbFN1Y2NOdW0+KDB4MTZhZCs2ODctMHgxOTVjKSl7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKKygweDgwMys4MC0weDg1MikpO3N0cm5jcHkocGJSZWNvcmQuaG9tZU51bWJlcixhdFJlcy0+bnVtYmVyMyxzaXplb2YocGJSZWNvcmQuCitob21lTnVtYmVyKS0oMHgxNTJjKzIzNDEtMHgxZTUwKSk7c3RybmNweShwYlJlY29yZC5lbWFpbCxhdFJlcy0+ZW1haWwsc2l6ZW9mKAorcGJSZWNvcmQuZW1haWwpLSgweDFkMCsyNDY4LTB4YjczKSk7cGJSZWNvcmQucGJMb2NhdGlvbj1aUEJfTE9DQVRJT05fVVNJTTsoVk9JRCkKK2F0UGJfTG9hZEFSZWNUb1BibVRhYmxlKCZwYlJlY29yZCk7fVZPSUQgYXRQYl9TZXREZWxTdGF0dXNNdWx0T3JBbGwoKXtpZigKK2dfelBiX0RlbFN0YXR1c1VzaW0uZGVhbEZhaWxOdW0+KDB4MTE4YSsxMTQyLTB4MTYwMCkpe2lmKGdfelBiX0RlbFN0YXR1c1VzaW0uCitkZWFsU3VjY051bT4oMHg2YTArMjAxMC0weGU3YSkpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsCiBaUEJfTVVMX0RFTF9QQVJUX1NVQyk7fWVsc2V7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9fQogZWxzZXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7fX0KLSNpZiAoMHgyYSsxNDI1LTB4NWJiKQ0KKyNpZiAoMHgxYmY1Kzc2MC0weDFlZWQpDQogVk9JRCBhdFBiX1JlY3ZTY3Bid0FkZEVycihVSU5UOCpwRXJyQ29kZSl7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKLVpQQl9ORVdfRVJST1IpO2lmKChzdHJuY21wKHBFcnJDb2RlLFpBVF9FUlJDT0RFX01FTU9SWV9GVUxMLCgweDIxYmYrMTEyMS0weDI2MWUpCi0pPT0oMHgyMWQwKzEwMzEtMHgyNWQ3KSkpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDc5XHg2NVx4NzMiKQotO3ByaW50ZigKK1pQQl9ORVdfRVJST1IpO2lmKChzdHJuY21wKHBFcnJDb2RlLFpBVF9FUlJDT0RFX01FTU9SWV9GVUxMLCgweDU1KzcyNDctMHgxY2EyKSkKKz09KDB4YTErNzQ2OC0weDFkY2QpKSl7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfVVNJTU1FTU9SWUZVTEwsIlx4NzlceDY1XHg3MyIpOworcHJpbnRmKAogIlx4NzBceDYyXHgzYVx4NTJceDY1XHg2M1x4NzZceDIwXHg0M1x4NGRceDQ1XHgyMFx4NDVceDcyXHg3Mlx4NDNceDZmXHg2NFx4NjVceDNhXHgyMFx4MzJceDMwXHgyZSIgIlxuIgogKTt9ZWxzZXtwcmludGYoCiAiXHg3MFx4NjJceDNhXHg1Mlx4NjVceDYzXHg3Nlx4MjBceDQxXHg3NFx4MjBceDUzXHg2M1x4NzBceDYyXHg3N1x4MjBceDYxXHg2NFx4NjRceDIwXHg0NVx4NzJceDcyXHgyZSIgIlxuIgpAQCAtMzE5LDg0ICszMTgsODQgQEAKIFpQQl9ORVdfRVJST1IpO3ByaW50ZigKICJceDcwXHg2Mlx4M2FceDUyXHg2NVx4NjNceDc2XHgyMFx4NDFceDc0XHgyMFx4NTNceDYzXHg3MFx4NjJceDc3XHgyMFx4NmRceDZmXHg2NFx4NjlceDY2XHg3OVx4MjBceDY1XHg3Mlx4NzJceDJlIiAiXG4iCiApO31WT0lEIHBiX0FzY3RvSGV4KFVJTlQxNipwY0hleCxTSU5UMzIgaURzdExlbixVSU5UOCBjb25zdCpwY0FTQyxTSU5UMzIgaVNyY0xlbgotKXtVSU5UMzIgaU9kZE9yRXZlbj0oMHgyMjkzKzc5OC0weDI1YjEpO1VJTlQ4IGlUZW1wPSgweGU3MCsyODMtMHhmOGIpO1NJTlQzMiBpPQotKDB4ZDA0KzQwNTEtMHgxY2Q3KTtpZigoTlVMTD09cGNIZXgpfHwoTlVMTD09cGNBU0MpfHwoKDB4MTU3NSsxMTgtMHgxNWViKT09Ci1pRHN0TGVuKXx8KGlEc3RMZW48KGlTcmNMZW4vKDB4NjMxKzU1MDYtMHgxYmIxKSsoMHgxMWFhKzEzNzAtMHgxNzAzKSkpKXtyZXR1cm47fQotZm9yKGk9KDB4MTBmYis1MDMyLTB4MjRhMyk7aTxpU3JjTGVuO2krKyl7aWYoaU9kZE9yRXZlbiUoMHgxOGQ5KzMwMjItMHgyNGE1KT09Ci0oMHg3ZmQrMTYwMy0weGU0MCkpe2lUZW1wPSoocGNBU0MraSk7aWYoKGlUZW1wPj0oKGNoYXIpKDB4NjViKzgwMDctMHgyNTcyKSkpJiYoCi1pVGVtcDw9KChjaGFyKSgweGMyMys1MTg2LTB4MjAyYykpKSl7KihwY0hleCtpLygweGZiYys2NDQtMHgxMjNlKSl8PShVSU5UOCkoCi1pVGVtcC0oMHhmYzMrMjE2Mi0weDE4MDUpKTw8KDB4NzVmKzE1NS0weDdmNik7fWVsc2V7KihwY0hleCtpLwotKDB4NGQwKzU2ODMtMHgxYjAxKSl8PShVSU5UOCkoaVRlbXAtKDB4MWNiYSsxNTExLTB4MjI2YSkpPDwoMHhiODMrNDkzMi0weDFlYzMpO30KLX1lbHNle2lUZW1wPSoocGNBU0MraSk7aWYoKGlUZW1wPj0oKGNoYXIpKDB4YzgxKzMyMTUtMHgxOGUwKSkpJiYoaVRlbXA8PQotKChjaGFyKSgweDQxNis4NDEyLTB4MjRiOSkpKSl7KihwY0hleCtpLygweDE5ZjUrMTMwMC0weDFmMDcpKXw9aVRlbXAtCi0oMHg0YmMrMTI1MC0weDk2ZSk7fWVsc2V7KihwY0hleCtpLygweDNmOCsyNTQ3LTB4ZGU5KSl8PWlUZW1wLQotKDB4OTFkKzMxNTEtMHgxNTM1KTt9fWlPZGRPckV2ZW4rKzt9fVNJTlQzMiBhdFBiX0lmVWNzMklzU01TNyhVSU5UMTYqcHNVY3MyLAotU0lOVDMyIGlMZW5ndGgpe2ludCBpUmV0VmFsPSgweDNiNSs4MTA3LTB4MjM1Zik7Y2hhciBjVGVtcDtpbnQgaT0KLSgweDY1MCsxOTI3LTB4ZGQ3KTtpZihOVUxMPT1wc1VjczIpe3JldHVybi0oMHgyMDk5Kzk3NC0weDI0NjYpO31mb3IoaT0KLSgweDFkM2YrMTc0LTB4MWRlZCk7aTxpTGVuZ3RoO2krKyl7aWYoKDB4YjQ3KzY0MTEtMHgyMzUyKT5wc1VjczJbaV0pe3N3aXRjaCgKLXBzVWNzMltpXSl7Y2FzZSgweGU2Zis0NjE3LTB4MjA2Yyk6Y2FzZSgweGRmZCsyMDU3LTB4MTVhYik6Y2FzZQotKDB4MWNiYysxMTMyLTB4MjBjYyk6Y2FzZSgweDE1YjkrMzQxMi0weDIyYjApOmNhc2UoMHhlMmMrNTM3LTB4ZmU3KTpjYXNlCi0oMHgxOGQ3KzEzMDQtMHgxZDc0KTpjYXNlKDB4MTA1MSs1NzcwLTB4MjY1Zik6Y2FzZSgweGFmMysyMjUxLTB4MTM0MSk6Y2FzZQotKDB4MmY2KzE0MjMtMHg4MDcpOmNhc2UoMHhhMWErNDExOC0weDE5OGMpOmNhc2UoMHhhMGMrNTAwNS0weDFkNzkpOnticmVhazt9Cispe1VJTlQzMiBpT2RkT3JFdmVuPSgweDM3ZCs3MjU3LTB4MWZkNik7VUlOVDggaVRlbXA9KDB4NzA1KzQ3OTYtMHgxOWMxKTtTSU5UMzIgaQorPSgweDYyMisyNDA3LTB4Zjg5KTtpZigoTlVMTD09cGNIZXgpfHwoTlVMTD09cGNBU0MpfHwoKDB4NDM3Kzg0MTYtMHgyNTE3KT09CitpRHN0TGVuKXx8KGlEc3RMZW48KGlTcmNMZW4vKDB4MjA3Kzg4NS0weDU3YSkrKDB4MjBmKzM4NzgtMHgxMTM0KSkpKXtyZXR1cm47fWZvcgorKGk9KDB4ZDA5KzEyMDItMHgxMWJiKTtpPGlTcmNMZW47aSsrKXtpZihpT2RkT3JFdmVuJSgweDE2NzQrMjM2MC0weDFmYWEpPT0KKygweGUxMSsyMzE2LTB4MTcxZCkpe2lUZW1wPSoocGNBU0MraSk7aWYoKGlUZW1wPj0oKGNoYXIpKDB4MTk0Kzg3OTgtMHgyM2MyKSkpJiYoCitpVGVtcDw9KChjaGFyKSgweDFjNzkrMTg5MC0weDIzYTIpKSkpeyoocGNIZXgraS8oMHg3NGYrNzY2LTB4YTRiKSl8PShVSU5UOCkoCitpVGVtcC0oMHg2ZWYrNTgwOC0weDFkNmYpKTw8KDB4MTQ1MysyNzIzLTB4MWVmMik7fWVsc2V7KihwY0hleCtpLworKDB4Y2QwKzM3MTgtMHgxYjU0KSl8PShVSU5UOCkoaVRlbXAtKDB4NWNiKzEyOTAtMHhhOWUpKTw8KDB4MTZkOSsyOTI4LTB4MjI0NSk7fX0KK2Vsc2V7aVRlbXA9KihwY0FTQytpKTtpZigoaVRlbXA+PSgoY2hhcikoMHg1ZTIrNzE1MC0weDIxYTApKSkmJihpVGVtcDw9CisoKGNoYXIpKDB4ODc1KzQ2ODgtMHgxYThjKSkpKXsqKHBjSGV4K2kvKDB4ZTdiKzE2ODktMHgxNTEyKSl8PWlUZW1wLQorKDB4MTljMSsxNDg0LTB4MWY1ZCk7fWVsc2V7KihwY0hleCtpLygweDIyMjQrMTIxOC0weDI2ZTQpKXw9aVRlbXAtCisoMHgxM2ErMzg3OC0weDEwMjkpO319aU9kZE9yRXZlbisrO319U0lOVDMyIGF0UGJfSWZVY3MySXNTTVM3KFVJTlQxNipwc1VjczIsCitTSU5UMzIgaUxlbmd0aCl7aW50IGlSZXRWYWw9KDB4YTMzKzU3Ni0weGM3Mik7Y2hhciBjVGVtcDtpbnQgaT0KKygweDE2NjYrMTI3LTB4MTZlNSk7aWYoTlVMTD09cHNVY3MyKXtyZXR1cm4tKDB4ZDMxKzMxNTktMHgxOTg3KTt9Zm9yKGk9CisoMHgxZDArODczNy0weDIzZjEpO2k8aUxlbmd0aDtpKyspe2lmKCgweDEzMDgrMTUyMi0weDE3ZmEpPnBzVWNzMltpXSl7c3dpdGNoKAorcHNVY3MyW2ldKXtjYXNlKDB4MWVkYisxODkyLTB4MjYzMyk6Y2FzZSgweGZkNisxMzA2LTB4MTQ5NSk6Y2FzZQorKDB4YWU2Kzc4NC0weGQ5YSk6Y2FzZSgweDVlYyszOTQwLTB4MTRmMyk6Y2FzZSgweDFhZGYrMzA2Ny0weDI2N2MpOmNhc2UKKygweGNjKzY1MzAtMHgxOWQzKTpjYXNlKDB4NDliKzY1NDMtMHgxZGFlKTpjYXNlKDB4MWM1YysyMjkwLTB4MjRkMSk6Y2FzZQorKDB4MTJhOCsyMzQ3LTB4MWI1NSk6Y2FzZSgweDZkMisxMDg0LTB4YTZhKTpjYXNlKDB4ODk2KzMzMTAtMHgxNTY0KTp7YnJlYWs7fQogZGVmYXVsdDp7Y1RlbXA9KGNoYXIpR19aUEJfTkVXVUNTMlRPR1NNW3BzVWNzMltpXV07aWYoWlBCX05PTl9HU009PWNUZW1wKXsKLWlSZXRWYWw9KDB4MTg5KzgzMjMtMHgyMjBjKTt9YnJlYWs7fX19ZWxzZXtzd2l0Y2gocHNVY3MyW2ldKXtjYXNlCi0oMHhmMDMrMjk2NC0weDE3MDMpOmNhc2UoMHgxNGQ2KzIxMDYtMHgxOTZhKTpjYXNlKDB4MTZlNCsyNjEwLTB4MWQ4Myk6Y2FzZQotKDB4MjYyNCszMjctMHgyM2QwKTpjYXNlKDB4NDNjKzg1OTktMHgyMjJhKTpjYXNlKDB4ZDhjKzU5MzMtMHgyMTE5KTpjYXNlCi0oMHg1MGIrMjU5LTB4MjQ2KTpjYXNlKDB4MTE4Zis0MDcxLTB4MWRkMyk6Y2FzZSgweDFkNjIrODQ1LTB4MWNmNyk6Y2FzZQotKDB4ZjEyKzE2MDAtMHgxMWI0KTp7YnJlYWs7fWRlZmF1bHQ6e2lSZXRWYWw9KDB4MTY3YisyOTI0LTB4MjFlNyk7YnJlYWs7fX19aWYoCi0oMHg4NCs3MzY4LTB4MWQ0Yyk9PWlSZXRWYWwpe2JyZWFrO319cmV0dXJuIGlSZXRWYWw7fXN0YXRpYyBVSU5UOCAKK2lSZXRWYWw9KDB4MTI2ZisxNDg3LTB4MTgzZSk7fWJyZWFrO319fWVsc2V7c3dpdGNoKHBzVWNzMltpXSl7Y2FzZQorKDB4MjVkYSsxMjIzLTB4MjcwZCk6Y2FzZSgweDEzMWMrNDY1Mi0weDIxYTIpOmNhc2UoMHhhZjcrMzA2MC0weDEzNTgpOmNhc2UKKygweDEwMWIrNjIwOS0weDI0YzEpOmNhc2UoMHgxOTc3KzEyMDgtMHgxYTg2KTpjYXNlKDB4NzQ0KzYzOTgtMHgxY2EyKTpjYXNlCisoMHgxNTg0KzU2Ny0weDEzZjMpOmNhc2UoMHg2YzcrNDM0NS0weDE0MWQpOmNhc2UoMHg2MDIrMjUxNi0weGMxZSk6Y2FzZQorKDB4MjY0Nis3ODAtMHgyNWI0KTp7YnJlYWs7fWRlZmF1bHQ6e2lSZXRWYWw9KDB4MmZjKzc1MjAtMHgyMDVjKTticmVhazt9fX1pZigKKygweGQ3NyszMzU5LTB4MWE5Nik9PWlSZXRWYWwpe2JyZWFrO319cmV0dXJuIGlSZXRWYWw7fXN0YXRpYyBVSU5UOCAKIGF0UGJfRW5jb2RlTmFtZVRvVWNzMihjaGFyKnBiRHN0LFVJTlQzMiBpRHN0TGVuLGNoYXIgY29uc3QqcGJTcmMpe1VJTlQxNiBhY0hleFsKLSgweDIwMSs4MTcyLTB4MjBlZCldPXsoMHgyNmQrNjkwMy0weDFkNjQpfTtTSU5UMzIgc3JjbGVuPSgweGIzMis1NjgwLTB4MjE2Mik7Ci1TSU5UMzIgcmVzdD0oMHgzZWQrNjExMi0weDFiY2QpO2Fzc2VydChwYkRzdCE9TlVMTCYmcGJTcmMhPU5VTEwpO3NyY2xlbj0oU0lOVDMyKQorKDB4MjEyKzE3OTQtMHg4MTQpXT17KDB4MTk4KzIzMTEtMHhhOWYpfTtTSU5UMzIgc3JjbGVuPSgweDcyYis0NDkwLTB4MThiNSk7CitTSU5UMzIgcmVzdD0oMHhmNTArMjQwNi0weDE4YjYpO2Fzc2VydChwYkRzdCE9TlVMTCYmcGJTcmMhPU5VTEwpO3NyY2xlbj0oU0lOVDMyKQogc3RybGVuKHBiU3JjKTtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDRlXHg2MVx4NmRceDY1XHg1NFx4NmZceDU1XHg2M1x4NzNceDMyXHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHgyMFx4NzBceDczXHg1M1x4NzJceDYzXHgzZFx4MjVceDczXHgyY1x4NjlceDUzXHg3Mlx4NjNceDRjXHg2NVx4NmVceDNkXHgyNVx4NjQiICJcbiIKLSxwYlNyYyxzcmNsZW4pO3BiX0FzY3RvSGV4KGFjSGV4LCgweDFhOWYrMjgwNi0weDI0OTUpLChVSU5UOCopcGJTcmMsc3JjbGVuKTtyZXN0Ci09YXRQYl9JZlVjczJJc1NNUzcoYWNIZXgsc3JjbGVuLygweGU1YisxMDI3LTB4MTI1YSkpO2lmKHJlc3Q9PQotKDB4NzQ1KzQ2MzYtMHgxOTYwKSl7cmV0dXJuIGF0UGJfRW5jb2RlVGV4dChwYkRzdCxwYlNyYyxpRHN0TGVuKTt9ZWxzZSBpZihyZXN0PT0KLSgweDNlZCs5OC0weDQ0Zikpe2lmKHN0cmxlbihwYlNyYykrKDB4MWFiOCsxMzU1LTB4MjAwMSk8aURzdExlbil7bWVtY3B5KHBiRHN0LAotIlx4MzhceDMwIiwoMHhlMzkrNDc0Ny0weDIwYzIpKTttZW1jcHkocGJEc3QrKDB4MmY4KzQ5NzctMHgxNjY3KSxwYlNyYyxzcmNsZW4pOwotcmV0dXJuIFpVRklfU1VDQzt9fXJldHVybiBaVUZJX0ZBSUw7fVNJTlQzMiBhdFBiX0ZpbmRJZGxlSW5kZXgoVF96UGJfV2ViQ29udGFjdCAKLWNvbnN0KnBiUmVjdixCT09MIHBiTmV3RmxhZyl7U0lOVDMyIGNvdW50PSgweDExYmYrNDc2MS0weDI0NTcpO1NJTlQzMiB0b3RhbD0KLSgweDkwYys2NzcyLTB4MjM4MCk7U0lOVDMyKkluZGV4VHlwZT1OVUxMO2lmKChOVUxMPT1wYlJlY3YpKXtzbG9nKFBCX1BSSU5ULAorLHBiU3JjLHNyY2xlbik7cGJfQXNjdG9IZXgoYWNIZXgsKDB4MWFjKzgzOTUtMHgyMTc3KSwoVUlOVDgqKXBiU3JjLHNyY2xlbik7cmVzdD0KK2F0UGJfSWZVY3MySXNTTVM3KGFjSGV4LHNyY2xlbi8oMHg3YTQrNTMzOC0weDFjN2EpKTtpZihyZXN0PT0oMHg0MDMrMjE2MC0weGM3MikpCit7cmV0dXJuIGF0UGJfRW5jb2RlVGV4dChwYkRzdCxwYlNyYyxpRHN0TGVuKTt9ZWxzZSBpZihyZXN0PT0oMHg5MjArNzIwMS0weDI1NDEpKQore2lmKHN0cmxlbihwYlNyYykrKDB4MWYyYisxNDMxLTB4MjRjMCk8aURzdExlbil7bWVtY3B5KHBiRHN0LCJceDM4XHgzMCIsCisoMHgyNWIrODI5MC0weDIyYmIpKTttZW1jcHkocGJEc3QrKDB4OGMyKzE4MjMtMHhmZGYpLHBiU3JjLHNyY2xlbik7cmV0dXJuIAorWlVGSV9TVUNDO319cmV0dXJuIFpVRklfRkFJTDt9U0lOVDMyIGF0UGJfRmluZElkbGVJbmRleChUX3pQYl9XZWJDb250YWN0IGNvbnN0KgorcGJSZWN2LEJPT0wgcGJOZXdGbGFnKXtTSU5UMzIgY291bnQ9KDB4MjBkMysyODctMHgyMWYxKTtTSU5UMzIgdG90YWw9CisoMHgxYjZiKzM2My0weDFjZDYpO1NJTlQzMipJbmRleFR5cGU9TlVMTDtpZigoTlVMTD09cGJSZWN2KSl7c2xvZyhQQl9QUklOVCwKIFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjZceDY5XHg2ZVx4NjRceDVmXHg3MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4NzRceDY4XHg2NVx4MjBceDcwXHg2MVx4NzJceDYxXHgyMFx4NmZceDY2XHgyMFx4NjZceDY5XHg2ZVx4NjRceDVmXHg3MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjFceDcyXHg2NVx4MjBceDRlXHg1NVx4NGNceDRjIiAiXG4iCi0pO3JldHVybi0oMHgyMGI5KzM4Ny0weDIyM2IpO31pZihUUlVFPT1wYk5ld0ZsYWcpe2lmKFpQQl9MT0NBVElPTl9VU0lNPT1wYlJlY3YtPgotcGJMb2NhdGlvbil7dG90YWw9Z196UGJfU2ltSW5kZXhbKDB4OWI2KzM0NTAtMHgxNzMwKV07SW5kZXhUeXBlPWdfelBiX1NpbUluZGV4O30KKyk7cmV0dXJuLSgweGQ1OCszMjU2LTB4MWEwZik7fWlmKFRSVUU9PXBiTmV3RmxhZyl7aWYoWlBCX0xPQ0FUSU9OX1VTSU09PXBiUmVjdi0+CitwYkxvY2F0aW9uKXt0b3RhbD1nX3pQYl9TaW1JbmRleFsoMHgxZjg1KzUwNS0weDIxN2UpXTtJbmRleFR5cGU9Z196UGJfU2ltSW5kZXg7fQogZWxzZSBpZihaUEJfTE9DQVRJT05fQVA9PXBiUmVjdi0+cGJMb2NhdGlvbil7dG90YWw9Z196UGJfQXBJbmRleFsKLSgweGVlNCs0OTEwLTB4MjIxMildO0luZGV4VHlwZT1nX3pQYl9BcEluZGV4O31mb3IoO2NvdW50PD10b3RhbDtjb3VudCsrKXtpZigoCisoMHg5YzgrMjE1OS0weDEyMzcpXTtJbmRleFR5cGU9Z196UGJfQXBJbmRleDt9Zm9yKDtjb3VudDw9dG90YWw7Y291bnQrKyl7aWYoKAogTlVMTCE9SW5kZXhUeXBlKSYmKEluZGV4VHlwZVtjb3VudF09PVBCTV9FUlJPUl9OT1RfRk9VTkQpKXticmVhazt9fWlmKGNvdW50PgogdG90YWwpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg2Nlx4NjlceDZlXHg2NFx4NWZceDcwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDY2XHg2OVx4NmVceDY0XHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHg1Zlx4NjlceDY0XHgyY1x4NjlceDZlXHg2NFx4NjVceDc4XHg1Zlx4NjlceDY0XHgzZFx4MjVceDY0IiAiXG4iICJceDJlIgotLGNvdW50KTtyZXR1cm4tKDB4MTczNCs0MDAtMHgxOGMzKTt9c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAorLGNvdW50KTtyZXR1cm4tKDB4MTk1MCsxMjA0LTB4MWUwMyk7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDY2XHg2OVx4NmVceDY0XHg1Zlx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDVmXHg2OVx4NjRceDNkXHgyNVx4NjRceDJjXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgyMFx4NjlceDczXHgyMFx4MjVceDY0IiAiXG4iCiAsY291bnQsdG90YWwpO3JldHVybiBjb3VudDt9ZWxzZXtyZXR1cm4gcGJSZWN2LT5wYkluZGV4O319Qk9PTCBhdFBiX0dldEFTQ0lJKAotQ0hBUipwU3JjLENIQVIqcERzdCxTSU5UMzIgbGVuKXtTSU5UMzIgaj0oMHhlNDUrNDgzMC0weDIxMjMpO1NJTlQzMiBpPQotKDB4MTQxKzI5NjQtMHhjZDUpO0NIQVIgYnVmW1pQQl9URVhUX1NJWkVfQllURVNdPXsoMHhmMys3MjAxLTB4MWQxNCl9O0NIQVIgc3RyWwotKDB4MzI1KzgwOC0weDY0YSldPXsoMHgyZjUrNDQ0Ni0weDE0NTMpfTtTSU5UMzIgbGVuZ3RoPSgweDNjYSsyMDk0LTB4YmY4KTtsZW5ndGgKLT1hdFBiX1N0cmluZzJCeXRlcyhwU3JjLGJ1ZixsZW4pO2ZvcihpPSgweGJhKzU5MzktMHgxN2VkKTtpPGxlbmd0aDtpKz0KLSgweDVjYys1MzE4LTB4MWE5MCkpe2lmKGJ1ZltpXSE9KDB4NGEwKzE1NzMtMHhhYzUpfHxidWZbaSsoMHg3YjUrNjYxNC0weDIxOGEpXT4KLSgweDU3ZCs3MzU2LTB4MjFiYSkpe3JldHVybiBGQUxTRTt9cERzdFtqKytdPWJ1ZltpKygweDdiMSs1ODY5LTB4MWU5ZCldO31yZXR1cm4gCitDSEFSKnBTcmMsQ0hBUipwRHN0LFNJTlQzMiBsZW4pe1NJTlQzMiBqPSgweDJkNCsxMjA0LTB4Nzg4KTtTSU5UMzIgaT0KKygweDgxMSszMDg1LTB4MTQxZSk7Q0hBUiBidWZbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDFkZjMrMjE4Ny0weDI2N2UpfTtDSEFSIAorc3RyWygweDc2ZCszNjAtMHg4ZDIpXT17KDB4MTM2KzU2LTB4MTZlKX07U0lOVDMyIGxlbmd0aD0oMHg4NmIrMzMxMi0weDE1NWIpOworbGVuZ3RoPWF0UGJfU3RyaW5nMkJ5dGVzKHBTcmMsYnVmLGxlbik7Zm9yKGk9KDB4MTM5NCsxNTgyLTB4MTljMik7aTxsZW5ndGg7aSs9CisoMHgzNDArMjY0NS0weGQ5Mykpe2lmKGJ1ZltpXSE9KDB4MzMxKzgxNzYtMHgyMzIxKXx8YnVmW2krKDB4MTg2NysxNzU5LTB4MWY0NSldPgorKDB4YWErNzE1Ni0weDFjMWYpKXtyZXR1cm4gRkFMU0U7fXBEc3RbaisrXT1idWZbaSsoMHgxMTE5KzM4MzItMHgyMDEwKV07fXJldHVybiAKIFRSVUU7fVZPSUQgYXRXZWJfQWRkT3JNb2RPbmVQYlVzaW0oVF96UGJfV2ViQ29udGFjdCpwV2ViUGJDb250YWN0LEJPT0wgcGJOZXdGbGFnCi0sc2VtX3Qgc2VtSWQpe2ludCBhdFJlcz0oMHgyNWFiKzE5Ny0weDI2NzApO0NIQVIgcGJOYW1lW1pQQl9URVhUX1NJWkVfQllURVMrCi0oMHg4OTYrMjc0MS0weDEzNDgpXT17KDB4MzlkKzIwNTUtMHhiYTQpfTtDSEFSIGJ1Zl9zcmNbWlBCX1RFWFRfU0laRV9CWVRFUysKLSgweDFmNSs0MjcxLTB4MTJhMSldPXsoMHgxMjk2KzIyMi0weDEzNzQpfTtDSEFSIGJ1Zl9kZXN0W1pQQl9URVhUX1NJWkVfQllURVMrCi0oMHgxMjJiKzQxMS0weDEzYzMpXT17KDB4MTM3KzUzMjMtMHgxNjAyKX07VF96UGJfU2NwYndQYXJhbSBzY3Bid1BhcmFtPXsKLSgweDE4MmIrMjM2NS0weDIxNjgpfTtpbnQgbGVuPSgweGRiYyszNjQwLTB4MWJmNCk7YXRQYl9XZWJSZWNvZGVTaG93KAorLHNlbV90IHNlbUlkKXtpbnQgYXRSZXM9KDB4MzQ0KzQ5LTB4Mzc1KTtDSEFSIHBiTmFtZVtaUEJfVEVYVF9TSVpFX0JZVEVTKworKDB4NDUxKzI0NjMtMHhkZWQpXT17KDB4NDQrNTAxNC0weDEzZGEpfTtDSEFSIGJ1Zl9zcmNbWlBCX1RFWFRfU0laRV9CWVRFUysKKygweDEwMGErMjE4Mi0weDE4OGQpXT17KDB4ZjgrNzE2Mi0weDFjZjIpfTtDSEFSIGJ1Zl9kZXN0W1pQQl9URVhUX1NJWkVfQllURVMrCisoMHgxYzBjKzI2MjYtMHgyNjRiKV09eygweDVjMisyNzY5LTB4MTA5Myl9O1RfelBiX1NjcGJ3UGFyYW0gc2NwYndQYXJhbT17CisoMHhjM2QrMjQ3MS0weDE1ZTQpfTtpbnQgbGVuPSgweDEyMzgrNDc5NC0weDI0ZjIpO2F0UGJfV2ViUmVjb2RlU2hvdygKIHBXZWJQYkNvbnRhY3QpO2lmKGF0UGJfR2V0QVNDSUkocFdlYlBiQ29udGFjdC0+bmFtZSxwYk5hbWUsc3RybGVuKHBXZWJQYkNvbnRhY3QKLS0+bmFtZSkpKXtzY3Bid1BhcmFtLmNvZGluZz0oMHhhMmQrMTUwLTB4YWMzKTt9ZWxzZXtsZW49YXRQYl9TdHJpbmcyQnl0ZXMoCistPm5hbWUpKSl7c2NwYndQYXJhbS5jb2Rpbmc9KDB4OGNkKzQzMzUtMHgxOWJjKTt9ZWxzZXtsZW49YXRQYl9TdHJpbmcyQnl0ZXMoCiBwV2ViUGJDb250YWN0LT5uYW1lLGJ1Zl9zcmMsc3RybGVuKHBXZWJQYkNvbnRhY3QtPm5hbWUpKTtsZW49CiBhdHBiX0N2dFVjczJUb0FscGhhRmllbGQoYnVmX3NyYyxsZW4sYnVmX2Rlc3QpO2F0UGJfQnl0ZXMyU3RyaW5nKGJ1Zl9kZXN0LHBiTmFtZQotLGxlbik7c2NwYndQYXJhbS5jb2Rpbmc9KDB4MTA1Yis1MTA2LTB4MjQ0Yyk7fXNjcGJ3UGFyYW0ucGJJbmRleD1wV2ViUGJDb250YWN0LT4KKyxsZW4pO3NjcGJ3UGFyYW0uY29kaW5nPSgweGJlMysxMDIzLTB4ZmUxKTt9c2NwYndQYXJhbS5wYkluZGV4PXBXZWJQYkNvbnRhY3QtPgogcGJJbmRleDtzdHJuY3B5KHNjcGJ3UGFyYW0ubmFtZSxwYk5hbWUsc2l6ZW9mKHNjcGJ3UGFyYW0ubmFtZSktCi0oMHgxMzhjKzQ5MjgtMHgyNmNiKSk7c3RybmNweShzY3Bid1BhcmFtLm1vYmlsTnVtYmVyLHBXZWJQYkNvbnRhY3QtPm1vYmlsTnVtYmVyLAotc2l6ZW9mKHNjcGJ3UGFyYW0ubW9iaWxOdW1iZXIpLSgweDg3OCs0OTEzLTB4MWJhOCkpO3N0cm5jcHkoc2NwYndQYXJhbS4KKygweDE1YTErMTAzMC0weDE5YTYpKTtzdHJuY3B5KHNjcGJ3UGFyYW0ubW9iaWxOdW1iZXIscFdlYlBiQ29udGFjdC0+bW9iaWxOdW1iZXIsCitzaXplb2Yoc2NwYndQYXJhbS5tb2JpbE51bWJlciktKDB4YzA0KzE1MzAtMHgxMWZkKSk7c3RybmNweShzY3Bid1BhcmFtLgogb2ZmaWNlTnVtYmVyLHBXZWJQYkNvbnRhY3QtPm9mZmljZU51bWJlcixzaXplb2Yoc2NwYndQYXJhbS5vZmZpY2VOdW1iZXIpLQotKDB4MTM1Mys1MjktMHgxNTYzKSk7c3RybmNweShzY3Bid1BhcmFtLmhvbWVOdW1iZXIscFdlYlBiQ29udGFjdC0+aG9tZU51bWJlciwKLXNpemVvZihzY3Bid1BhcmFtLmhvbWVOdW1iZXIpLSgweDEwMjgrMTg1NS0weDE3NjYpKTtzdHJuY3B5KHNjcGJ3UGFyYW0uZW1haWwsCi1wV2ViUGJDb250YWN0LT5lbWFpbCxzaXplb2Yoc2NwYndQYXJhbS5lbWFpbCktKDB4MmRhKzgzNTctMHgyMzdlKSk7CisoMHgxNjJhKzk4Mi0weDE5ZmYpKTtzdHJuY3B5KHNjcGJ3UGFyYW0uaG9tZU51bWJlcixwV2ViUGJDb250YWN0LT5ob21lTnVtYmVyLAorc2l6ZW9mKHNjcGJ3UGFyYW0uaG9tZU51bWJlciktKDB4MWViOCs5MDItMHgyMjNkKSk7c3RybmNweShzY3Bid1BhcmFtLmVtYWlsLAorcFdlYlBiQ29udGFjdC0+ZW1haWwsc2l6ZW9mKHNjcGJ3UGFyYW0uZW1haWwpLSgweDFkZDQrMTgyLTB4MWU4OSkpOwogaXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX0FUX0NUTCxNU0dfQ01EX0FERF9NT0RJRllfUEJfUkVRLHNpemVvZigKLVRfelBiX1NjcGJ3UGFyYW0pLCh1bnNpZ25lZCBjaGFyKikmc2NwYndQYXJhbSwoMHg2MDArNTA3OS0weDE5ZDcpKTtzZW1fd2FpdCgmCi1nX1BiX3NlbV9pZCk7aWYoZ19QYk9wdFJzcC5yZXN1bHQhPSgweDRiMis2NjY5LTB4MWViZSkpeyhWT0lEKXNjX2NmZ19zZXQoCitUX3pQYl9TY3Bid1BhcmFtKSwodW5zaWduZWQgY2hhciopJnNjcGJ3UGFyYW0sKDB4NDc1KzIyMzktMHhkMzQpKTtzZW1fd2FpdCgmCitnX1BiX3NlbV9pZCk7aWYoZ19QYk9wdFJzcC5yZXN1bHQhPSgweDUzMis3MjExLTB4MjE1YykpeyhWT0lEKXNjX2NmZ19zZXQoCiBaUEJfTlZfV1JJVEVfRkxBRyxaUEJfTkVXX0VSUk9SKTtpZihUUlVFPT1wYk5ld0ZsYWcpe3ByaW50ZigKICJceDcwXHg2Mlx4M2FceDYxXHg2NFx4NjRceDIwXHg1M1x4NjNceDcwXHg2Mlx4NzdceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDJlIiAiXG4iCiApO31lbHNle3ByaW50ZigKQEAgLTQwOSwxNiArNDA4LDE2IEBACiApO31lbHNleyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX05FV19FUlJPUik7cHJpbnRmKAogIlx4NzBceDYyXHgzYVx4NTdceDcyXHg2OVx4NzRceDY1XHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4NTRceDZmXHg1MFx4NjJceDZkXHg1NFx4NjFceDYyXHg2Y1x4NjVceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDJlIiAiXG4iCiApO319Vk9JRCBhdFdlYl9BZGRPbmVQYihUX3pQYl9XZWJDb250YWN0KndlYlBiQ29udGFjdCxzZW1fdCBzZW1JZCl7U0lOVDMyIAotaWRsZUluZGV4PSgweDM4MCs2NzcxLTB4MWRmMik7VF96UGJfSGVhZGVyIHBiSGVhZGVyPXsoMHhkZTErNTcwOS0weDI0MmUpfTtCT09MIAotcGJOZXdGbGFnPUZBTFNFO1RfelBiX0RlbEluZm8gZGVsUmVjb3JkPXsoMHhlYjArMjk2Ny0weDFhNDcpfTtDSEFSIHB0RmxhZ1sKLSgweDQzMys4MjkyLTB4MjQ4MyldPXsoMHgxYTliKzEwMzMtMHgxZWE0KX07cHJpbnRmKAoraWRsZUluZGV4PSgweDE1NDArMjk4LTB4MTY2OSk7VF96UGJfSGVhZGVyIHBiSGVhZGVyPXsoMHg4YmIrMzg1LTB4YTNjKX07Qk9PTCAKK3BiTmV3RmxhZz1GQUxTRTtUX3pQYl9EZWxJbmZvIGRlbFJlY29yZD17KDB4Y2E2KzM3MzgtMHgxYjQwKX07Q0hBUiBwdEZsYWdbCisoMHgzYTMrNDM4LTB4NTQ1KV09eygweDkwYisxNjYzLTB4ZjhhKX07cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg1MFx4NjJceDJjXHgyMFx4NzBceDYyXHg0OVx4NjRceDNkXHgyNVx4NjRceDIxIiAiXG4iCi0sd2ViUGJDb250YWN0LT5wYklkKTtpZigtKDB4Yjk1KzE5MTktMHgxMzEzKT09d2ViUGJDb250YWN0LT5wYklkKXtzbG9nKFBCX1BSSU5ULAorLHdlYlBiQ29udGFjdC0+cGJJZCk7aWYoLSgweGUxMys1MjQzLTB4MjI4ZCk9PXdlYlBiQ29udGFjdC0+cGJJZCl7c2xvZyhQQl9QUklOVCwKIFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg1MFx4NjJceDIwXHg2ZVx4NjVceDc3XHgyZSIgIlxuIgogKTtwYk5ld0ZsYWc9VFJVRTtpZGxlSW5kZXg9YXRQYl9GaW5kSWRsZUluZGV4KHdlYlBiQ29udGFjdCxwYk5ld0ZsYWcpO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg1N1x4NjVceDYyXHg1Zlx4NDFceDY0XHg2NFx4NGZceDZlXHg2NVx4NTBceDYyXHgyMFx4NjlceDY0XHg2Y1x4NjVceDQ5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NFx4MmUiICJcbiIKLSxpZGxlSW5kZXgpO2lmKGlkbGVJbmRleCE9LSgweDg2NSsyNjg1LTB4MTJlMSkpe3dlYlBiQ29udGFjdC0+cGJJbmRleD1pZGxlSW5kZXg7CissaWRsZUluZGV4KTtpZihpZGxlSW5kZXghPS0oMHhhOWQrNzA0MS0weDI2MWQpKXt3ZWJQYkNvbnRhY3QtPnBiSW5kZXg9aWRsZUluZGV4OwogfWVsc2V7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfTkVXX0VSUk9SKTtwcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDZkXHg2NVx4NmRceDZmXHg3Mlx4NzlceDIwXHg2OVx4NzNceDIwXHg2Nlx4NzVceDZjXHg2Y1x4MmNceDIwXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDYxXHg2NFx4NjRceDIwXHg3Mlx4NjVceDYzXHg2Zlx4NjRceDY1XHgyMFx4NjFceDZlXHg3OVx4MjBceDZkXHg2Zlx4NzJceDY1XHgyZSIgIlxuIgogKTtyZXR1cm47fX1lbHNle3ByaW50ZigKQEAgLTQzNywyOCArNDM2LDI4IEBACiApOyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX0xPQ0FUSU9OX0lTX05VTEwpO31wcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NTdceDY1XHg2Mlx4NWZceDQxXHg2NFx4NjRceDRmXHg2ZVx4NjVceDUwXHg2Mlx4MjBceDY0XHg2NVx4NmNceDVmXHg2OVx4NjRceDNkXHgyNVx4NjRceDJlIiAiXG4iCiAsd2ViUGJDb250YWN0LT5kZWxfaWQpO3NjX2NmZ19nZXQoWlBCX05WX1dSSVRFX0ZMQUcscHRGbGFnLHNpemVvZihwdEZsYWcpKTtpZigKLSgweDEwMDQrMTMzNy0weDE1M2QpPT1zdHJjbXAoIlx4MzAiLHB0RmxhZykmJi0oMHgxMTcrOTI0MS0weDI1MmYpIT13ZWJQYkNvbnRhY3QKLS0+ZGVsX2lkKXtkZWxSZWNvcmQuZGVsSWRbKDB4MTczKzQ2MzktMHgxMzkyKV09d2ViUGJDb250YWN0LT5kZWxfaWQ7Ci1hdFdlYl9EZWxPbmVwYigmZGVsUmVjb3JkLHNlbUlkKTt9fVZPSUQgYXRXZWJfRGVsT25lcGIoVF96UGJfRGVsSW5mbypkZWxSZWNvcmQsCi1zZW1fdCBzZW1JZCl7Q0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4MThiNysxNjUtMHgxOTVjKX07aW50IGF0UmVzPQotKDB4OGU1KzgzMS0weGMyNCk7U0lOVDMyIGRlbFRpbWU9KDB4MTlmMisyMjk3LTB4MjJlYik7CisoMHhjNWMrNDE4OS0weDFjYjkpPT1zdHJjbXAoIlx4MzAiLHB0RmxhZykmJi0oMHhiOGErMTY2NS0weDEyMGEpIT13ZWJQYkNvbnRhY3QtPgorZGVsX2lkKXtkZWxSZWNvcmQuZGVsSWRbKDB4MTE0NCs3ODMtMHgxNDUzKV09d2ViUGJDb250YWN0LT5kZWxfaWQ7YXRXZWJfRGVsT25lcGIKKygmZGVsUmVjb3JkLHNlbUlkKTt9fVZPSUQgYXRXZWJfRGVsT25lcGIoVF96UGJfRGVsSW5mbypkZWxSZWNvcmQsc2VtX3Qgc2VtSWQpeworQ0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4ODkyKzcyNjMtMHgyNGYxKX07aW50IGF0UmVzPQorKDB4OTgrNjU0Mi0weDFhMjYpO1NJTlQzMiBkZWxUaW1lPSgweDUwZCs4NTY0LTB4MjY4MSk7CiBhdFBiX0dldExvY2F0aW9uSW5kZXhGb3JEZWwoZGVsUmVjb3JkLGRlbFRpbWUpO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjRceDY1XHg2Y1x4NWZceDYxXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDJkXHgyZFx4NjRceDY1XHg2Y1x4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NFx4MmNceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIgIlxuIgotLGRlbFJlY29yZC0+ZGVsSW5kZXhbKDB4MTBlMysyMDQ2LTB4MThlMSldLGRlbFJlY29yZC0+ZGVsTG9jYXRpb24pO2lmKAorLGRlbFJlY29yZC0+ZGVsSW5kZXhbKDB4MWRiYys1MDktMHgxZmI5KV0sZGVsUmVjb3JkLT5kZWxMb2NhdGlvbik7aWYoCiBaUEJfTE9DQVRJT05fQVA9PWRlbFJlY29yZC0+ZGVsTG9jYXRpb24pe2lmKFpQQl9EQl9PSz09YXRQYl9EZWxBUmVjRnJvbVBibVRhYmxlKAogZGVsUmVjb3JkLGRlbFRpbWUpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0NFx4NjVceDZjXHg0Zlx4NmVceDY1XHg3MFx4NjJceDJkXHgyZFx4NjRceDY1XHg2Y1x4MjBceDQxXHg1MFx4MjBceDczXHg3NVx4NjNceDYzXHg2NVx4NzNceDczIiAiXG4iCiApO3JldHVybjt9c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjRceDY1XHg2Y1x4NWZceDYxXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDNhXHg3Mlx4NjVceDZkXHg2Zlx4NzZceDY1XHgyMFx4NzJceDY1XHg2M1x4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4NzBceDYyXHg2ZFx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjQiICJcbiIKICk7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9ZWxzZSBpZihaUEJfTE9DQVRJT05fVVNJTT09Ci1kZWxSZWNvcmQtPmRlbExvY2F0aW9uKXtDSEFSIHBiTWF4WygweDc0Nis3MDY4LTB4MjJiMCldPXsoMHhiMGIrNDMtMHhiMzYpfTsKK2RlbFJlY29yZC0+ZGVsTG9jYXRpb24pe0NIQVIgcGJNYXhbKDB4YWQzKzUwMDEtMHgxZTJhKV09eygweDk5NisyNDAxLTB4MTJmNyl9Owogc2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLHBiTWF4LHNpemVvZihwYk1heCkpO2lmKChkZWxSZWNvcmQtPmRlbEluZGV4WwotKDB4ODZmKzc0NDYtMHgyNTg1KV0+PSgweDE1MTQrNDA3NC0weDI0ZmQpKSYmKGRlbFJlY29yZC0+ZGVsSW5kZXhbCi0oMHgxZis3MDY3LTB4MWJiYSldPD1hdG9pKHBiTWF4KSkpe2lwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLAorKDB4NmFiKzY2MDEtMHgyMDc0KV0+PSgweDE1ZGMrMzQ4NS0weDIzNzgpKSYmKGRlbFJlY29yZC0+ZGVsSW5kZXhbCisoMHgxNzg0KzM2MDktMHgyNTlkKV08PWF0b2kocGJNYXgpKSl7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsCiBNT0RVTEVfSURfQVRfQ1RMLE1TR19DTURfREVMRVRFX1BCX1JFUSxzaXplb2YoaW50KSwodW5zaWduZWQgY2hhciopJmRlbFJlY29yZC0+Ci1kZWxJbmRleFsoMHgxMTlhKzQ5NzctMHgyNTBiKV0sKDB4MTIwNisxNDAzLTB4MTc4MSkpO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoCi1nX1BiT3B0UnNwLnJlc3VsdCE9KDB4M2M0KzI3MTAtMHhlNTkpKXtzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLAotWlBCX0RFTF9FUlJPUik7fXNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDZlXHg2ZiIpO31pZihaUEJfREJfT0s9PQorZGVsSW5kZXhbKDB4ZGExKzU1NzMtMHgyMzY2KV0sKDB4NTMzKzE4NjgtMHhjN2YpKTtzZW1fd2FpdCgmZ19QYl9zZW1faWQpO2lmKAorZ19QYk9wdFJzcC5yZXN1bHQhPSgweDFkYys1NTQtMHg0MDUpKXtzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IKKyk7fXNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDZlXHg2ZiIpO31pZihaUEJfREJfT0s9PQogYXRQYl9EZWxBUmVjRnJvbVBibVRhYmxlKGRlbFJlY29yZCxkZWxUaW1lKSl7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKIFpQQl9PUEVSQVRFX1NVQyk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0NFx4NjVceDZjXHg0Zlx4NmVceDY1XHg3MFx4NjJceDJkXHgyZFx4NjRceDY1XHg2Y1x4MjBceDUzXHg0OVx4NGRceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3MyIgIlxuIgpAQCAtNDY3LDkgKzQ2Niw5IEBACiAiXHg3MFx4NjJceDNhXHg2NFx4NjVceDZjXHg1Zlx4NjFceDVmXHg3MFx4NjJceDZkXHg1Zlx4NzJceDY1XHg2M1x4NmZceDcyXHg2NFx4M2FceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIiAiXG4iCiApOyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX0xPQ0FUSU9OX0lTX05VTEwpO319Vk9JRCAKIGF0V2ViX0RlbE11bHRQYihUX3pQYl9EZWxJbmZvKmRlbFJlY29yZCxzZW1fdCBzZW1JZCl7Q0hBUiBlcnJDb2RlWwotWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHg3NmQrMjAwNC0weGY0MSl9O2ludCBhdFJlcz0oMHgxM2YyKzIwNDMtMHgxYmVkKTtTSU5UMzIKLSBkZWxDb3VudD0oMHg2YTQrMjU3NC0weDEwYjIpOyhWT0lEKXNjX2NmZ19zZXQoTlZfUEhPX0RFTCwiIik7bWVtc2V0KCYKLWdfelBiX0RlbFN0YXR1c1VzaW0sKDB4MzE0KzEwNzgtMHg3NGEpLHNpemVvZihUX3pQYl9EZWxTdGF0dXNNdWx0aU9yQWxsKSk7CitaU1ZSX0FUX1JFU19DT0RFX0xFTl09eygweDE0ZTIrMjQ3MS0weDFlODkpfTtpbnQgYXRSZXM9KDB4MTY1YysxMjk2LTB4MWI2Yyk7CitTSU5UMzIgZGVsQ291bnQ9KDB4MTY2YSsxMzQ3LTB4MWJhZCk7KFZPSUQpc2NfY2ZnX3NldChOVl9QSE9fREVMLCIiKTttZW1zZXQoJgorZ196UGJfRGVsU3RhdHVzVXNpbSwoMHg0OWQrNzA0NS0weDIwMjIpLHNpemVvZihUX3pQYl9EZWxTdGF0dXNNdWx0aU9yQWxsKSk7CiBnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGbGFnPVpQQl9ERUxfTVVMVElfUkVDT1JEX1VTSU07Zm9yKDtkZWxDb3VudDxkZWxSZWNvcmQtPgogZGVsVG90YWw7ZGVsQ291bnQrKyl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzM1x4M2FceDY0XHg2NVx4NmNceDQ5XHg2NFx4NWJceDI1XHg2NFx4NWRceDNkXHgyNVx4NjRceDJjXHg2NFx4NjVceDZjXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4NWJceDI1XHg2NFx4NWRceDNkXHgyNVx4NjQiICJcbiIKQEAgLTQ4MCwxNCArNDc5LDE0IEBACiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDc0XHg2OFx4NjVceDIwXHg2OVx4MjhceDI1XHg2NFx4MjlceDIwXHg3Mlx4NjVceDYzXHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHg3MFx4NjJceDZkXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NCIgIlxuIgogLGRlbENvdW50KTtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtKys7Y29udGludWU7fWdfelBiX0RlbFN0YXR1c1VzaW0uCiBkZWFsU3VjY051bSsrO31lbHNlIGlmKFpQQl9MT0NBVElPTl9VU0lNPT1kZWxSZWNvcmQtPmRlbExvY2F0aW9uKXtDSEFSIHBiTWF4WwotKDB4MTJhNisyNDk2LTB4MWMzNCldPXsoMHgxMjk4KzQ2ODEtMHgyNGUxKX07c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLAotcGJNYXgsc2l6ZW9mKHBiTWF4KSk7aWYoKGRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdPj0oMHgxYzMxKzE2MDUtMHgyMjc1KSkmJigKKygweGU1Nys1NTY2LTB4MjNlMyldPXsoMHhhZTUrODIyLTB4ZTFiKX07c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLHBiTWF4LAorc2l6ZW9mKHBiTWF4KSk7aWYoKGRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdPj0oMHg1OSs2MzAzLTB4MThmNykpJiYoCiBkZWxSZWNvcmQtPmRlbEluZGV4W2RlbENvdW50XTw9YXRvaShwYk1heCkpKXtwcmludGYoCiAiXHg3MFx4NjJceDM5XHgzYVx4NjFceDc0XHg1N1x4NjVceDYyXHg1Zlx4NDRceDY1XHg2Y1x4NGRceDc1XHg2Y1x4NzRceDUwXHg2Mlx4M2FceDcyXHg2NVx4NmRceDZmXHg3Nlx4NjVceDIwXHg3NFx4NjhceDY1XHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgyOFx4MjVceDY0XHgyOVx4MjBceDcyXHg2NVx4NjNceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDcwXHg2Mlx4NmRceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjUiICJcbiIKICxkZWxSZWNvcmQtPmRlbEluZGV4W2RlbENvdW50XSk7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX0FUX0NUTCwKIE1TR19DTURfREVMRVRFX1BCX1JFUSxzaXplb2YoaW50KSwodW5zaWduZWQgY2hhciopJmRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdCi0sKDB4ZTUxKzQ5MzctMHgyMTlhKSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdCE9Ci0oMHg1NSszNzI3LTB4ZWUzKSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCissKDB4MTNkKzU5OTgtMHgxOGFiKSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdCE9CisoMHgxN2M0KzE1MDktMHgxZGE4KSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCiBaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9ZWxzZXtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxTdWNjTnVtKys7CiBzY19jZmdfc2V0KFpQQl9OVl9VU0lNTUVNT1JZRlVMTCwiXHg2ZVx4NmYiKTt9fWVsc2V7Y29udGludWU7fShWT0lEKQogYXRQYl9EZWxTaW1SZWNGcm9tUGJUYWJsZShkZWxSZWNvcmQtPmRlbEluZGV4W2RlbENvdW50XSk7fWVsc2V7c2xvZyhQQl9QUklOVCwKQEAgLTQ5NSwxNCArNDk0LDE0IEBACiAiXHg3MFx4NjJceDNhXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIgIlxuIgogKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9MT0NBVElPTl9JU19OVUxMKTt9fQogYXRQYl9TZXREZWxTdGF0dXNNdWx0T3JBbGwoKTt9VF96UGJfRGJSZXN1bHQgYXRQYl9EZWxSZWNCeUdyb3VwKFZPSUQpewotVF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztUX3pQYl9BcEluZGV4IGluZGV4PXsoMHgxNGJjKzI0NjgtMHgxZTYwKX07Ci1TSU5UMzIgaT0oMHgxNThkKzk3OS0weDE5NWYpO3Jlc3VsdD1hdFBiX0RlbFJlY0Zyb21QYm1UYWJsZUJ5R3JvdXAoJmluZGV4KTtpZigKLVpQQl9EQl9PSyE9cmVzdWx0KXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IpO3JldHVybiAKLXJlc3VsdDt9KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO2ZvcihpPQotKDB4MTVkMSs1MjEtMHgxN2Q5KTtpPD1aUEJfQVBfTUFYX1JFQ09SRDtpKyspe2lmKCgweDEzMWYrMzQxNS0weDIwNzYpIT1pbmRleC4KLWFwSW5kZXhbaV0pe2dfelBiX0FwSW5kZXhbKGluZGV4LmFwSW5kZXhbaV0pXT1QQk1fRVJST1JfTk9UX0ZPVU5EO319cmV0dXJuIAotcmVzdWx0O31WT0lEIGF0UGJfRGVsQWxsUmVjc1NpbURiKFZPSUQpe0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsKLSgweDYyOCsxMjk4LTB4YjNhKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGFkMSsyMTU2LTB4MTMzYyksCitUX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO1RfelBiX0FwSW5kZXggaW5kZXg9eygweDk5Zis1MjktMHhiYjApfTtTSU5UMzIgaQorPSgweDExNDkrNDg2MC0weDI0NDQpO3Jlc3VsdD1hdFBiX0RlbFJlY0Zyb21QYm1UYWJsZUJ5R3JvdXAoJmluZGV4KTtpZihaUEJfREJfT0sKKyE9cmVzdWx0KXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IpO3JldHVybiByZXN1bHQ7fShWT0lECispc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO2ZvcihpPSgweDc1Yys0MDc1LTB4MTc0Nik7aTw9CitaUEJfQVBfTUFYX1JFQ09SRDtpKyspe2lmKCgweDE1OGYrNjE1LTB4MTdmNikhPWluZGV4LmFwSW5kZXhbaV0pe2dfelBiX0FwSW5kZXhbKAoraW5kZXguYXBJbmRleFtpXSldPVBCTV9FUlJPUl9OT1RfRk9VTkQ7fX1yZXR1cm4gcmVzdWx0O31WT0lEIAorYXRQYl9EZWxBbGxSZWNzU2ltRGIoVk9JRCl7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweGRlZCsyOTU1LTB4MTk3OCl9Oworc25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDQxYis0NzA1LTB4MTY3YiksCiAiXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fVVNJTSk7aWYoWlBCX0RCX09LPT1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKQogKXthdFBiX0NsZWFyU2ltUGJtSW5kZXhBcnJheSgpO2lmKFpQQl9EQl9PSyE9YXRQYl9FeGVjRGJTcWwoCkBAIC01MTEsMjggKzUxMCwyOCBAQAogKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IpO3JldHVybjt9KFZPSUQpc2NfY2ZnX3NldCgKIFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7fWVsc2V7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKIFpQQl9ERUxfRVJST1IpO319Vk9JRCBhdFBiX0RlbEFsbFJlY3NTaW0oVF96UGJfRGVsSW5mbypwZGVsUmVjb3JkLHNlbV90IHNlbUlkKXsKLUNIQVIgZXJyQ29kZVtaU1ZSX0FUX1JFU19DT0RFX0xFTl09eygweDEwNjMrMjA1MC0weDE4NjUpfTtpbnQgYXRSZXM9Ci0oMHgxMTkrNzI1MC0weDFkNmIpO1VJTlQzMiBpPSgweDEwNDgrMjI0OS0weDE5MTEpO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsKLSgweDFhMTMrMjQxMS0weDIzN2UpfTtVSU5UMzIgY291bnQ9KDB4NjgwKzU5LTB4NmJiKTtpZihwZGVsUmVjb3JkIT1OVUxMKXttZW1zZXQoCi0mZ196UGJfRGVsU3RhdHVzVXNpbSwoMHg1YzMrMzk0Ny0weDE1MmUpLHNpemVvZihUX3pQYl9EZWxTdGF0dXNNdWx0aU9yQWxsKSk7Ci1nX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGbGFnPVpQQl9ERUxfQUxMX1JFQ09SRF9VU0lNO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0KLSgweDEyODMrMzMyOS0weDFmODMpLAorQ0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4OWRhKzE0MzAtMHhmNzApfTtpbnQgYXRSZXM9CisoMHg1MzIrMTMxOS0weGE1OSk7VUlOVDMyIGk9KDB4MTkzYysxNTc3LTB4MWY2NSk7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eworKDB4YjdjKzEyMjItMHgxMDQyKX07VUlOVDMyIGNvdW50PSgweDExODUrNDQwMC0weDIyYjUpO2lmKHBkZWxSZWNvcmQhPU5VTEwpeworbWVtc2V0KCZnX3pQYl9EZWxTdGF0dXNVc2ltLCgweGI4Yis0NTQ1LTB4MWQ0Yyksc2l6ZW9mKFRfelBiX0RlbFN0YXR1c011bHRpT3JBbGwKKykpO2dfelBiX0RlbFN0YXR1c1VzaW0uZGVhbEZsYWc9WlBCX0RFTF9BTExfUkVDT1JEX1VTSU07c25wcmludGYoc3FsLHNpemVvZihzcWwpCistKDB4ZWU2KzIxNzAtMHgxNzVmKSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9VU0lNKTsoVk9JRClhdFBiX0V4ZWNEYlNxbChzcWwsCi1hdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweDhjMCs0NDU1LTB4MWEyNyk8Y291bnQpe0NIQVIgcGJNaW5bCi0oMHgyZDIrNjM0OC0weDFiNmMpXT17KDB4YzA4KzE1MDEtMHgxMWU1KX07Q0hBUiBwYk1heFsoMHhiOGIrNDA5MS0weDFiNTQpXT17Ci0oMHgxYTBmKzk3OS0weDFkZTIpfTtVSU5UMzIgaV9wYk1pbj0oMHhhNDErMjM1OC0weDEzNzcpO1VJTlQzMiBpX3BiTWF4PQotKDB4MjBmOCsxMjEwLTB4MjViMik7c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUlOLHBiTWluLHNpemVvZihwYk1pbikpOworYXRQYl9EYkNvdW50VGFibGVMaW5lQ2IsJmNvdW50KTtpZigoMHg2ZCs4ODIwLTB4MjJlMSk8Y291bnQpe0NIQVIgcGJNaW5bCisoMHgxNWNjKzE2MzYtMHgxYmZlKV09eygweDE2MjkrMTg5LTB4MTZlNil9O0NIQVIgcGJNYXhbKDB4MWMzMCs3ODEtMHgxZjBiKV09eworKDB4MTBhNCsxNTEtMHgxMTNiKX07VUlOVDMyIGlfcGJNaW49KDB4MTA2KzE3NDUtMHg3ZDcpO1VJTlQzMiBpX3BiTWF4PQorKDB4NGRhKzU2NzAtMHgxYjAwKTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNSU4scGJNaW4sc2l6ZW9mKHBiTWluKSk7CiBzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgscGJNYXgsc2l6ZW9mKHBiTWF4KSk7aV9wYk1pbj1hdG9pKHBiTWluKTtpX3BiTWF4PQogYXRvaShwYk1heCk7aWYoaV9wYk1pbj5aUEJfU0lNX01BWF9SRUNPUkR8fGlfcGJNYXg+WlBCX1NJTV9NQVhfUkVDT1JEKXtwcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDRceDY1XHg2Y1x4NDFceDZjXHg2Y1x4NTJceDY1XHg2M1x4NzNceDUzXHg2OVx4NmRceDIwXHg3M1x4NjlceDZkXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NzRceDZmXHg2Zlx4MjBceDZjXHg2MVx4NzJceDY3XHg2NSIgIlxuIgogKTtyZXR1cm47fWZvcihpPWlfcGJNaW47aTw9aV9wYk1heDtpKyspe2lwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLAogTU9EVUxFX0lEX0FUX0NUTCxNU0dfQ01EX0RFTEVURV9QQl9SRVEsc2l6ZW9mKGludCksKHVuc2lnbmVkIGNoYXIqKSZpLAotKDB4MTg0OCsxMjc5LTB4MWQ0NykpO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoZ19QYk9wdFJzcC5yZXN1bHQhPQotKDB4YTgyKzU4MjMtMHgyMTQwKSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCisoMHgxNmMwKzM5OTMtMHgyNjU5KSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdCE9CisoMHgxOTVkKzMxNDItMHgyNWEyKSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCiBaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9ZWxzZXtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxTdWNjTnVtKys7CiBzY19jZmdfc2V0KFpQQl9OVl9VU0lNTUVNT1JZRlVMTCwiXHg2ZVx4NmYiKTt9fXNucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0KLSgweDE0Yis5NTkwLTB4MjZjMCksCisoMHg4NTkrMTgyMi0weGY3NiksCiAiXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fVVNJTSk7aWYoWlBCX0RCX09LPT1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKQogKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7YXRQYl9DbGVhclNpbVBibUluZGV4QXJyYXkKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19jb2RlLmMgYi9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfY29kZS5jCmluZGV4IDBmYjM2MDguLmFkZTBlYzAgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19jb2RlLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2NvZGUuYwpAQCAtNiw2NjEgKzYsNjY1IEBACiAjaWZkZWYgV0lOMzINCiAjaW5jbHVkZSA8d2NoYXIuaD4NCiAjZW5kaWYNCi0jZGVmaW5lICAgICBOT05fR1NNICAgICAgICAgICAgICAgICAgICAgICAgICgweDFkNTQrMTY3My0weDIzYmQpDQorI2RlZmluZSAgICAgTk9OX0dTTSAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0OTMrMjE3My0weGNmMCkNCiAjZGVmaW5lICAgICBOT05fR1NNX1AgICAgICAgICAgICAgICAgICAgICAgIE5PTl9HU00NCiBleHRlcm4gVF96VWZpU21zX0NvbmNhdEluZm8gZ196VWZpU21zX0NvbmNhdFNtcztzdGF0aWMgY29uc3Qgd21zX3VkaF9zX3R5cGUqCi1jb25zdF9oZWFkZXI7Y2hhciBnX3pVZmlTbXNfRGlnQXNjTWFwWygweDg3Nys2MzM0LTB4MjEyNSldPXsKLSgoY2hhcikoMHg3ZGYrNTEwMC0weDFiOWIpKSwoKGNoYXIpKDB4YTBhKzY1NTQtMHgyMzczKSksCi0oKGNoYXIpKDB4Y2FmKzIzMTEtMHgxNTg0KSksKChjaGFyKSgweDFkMjMrMTkxNi0weDI0NmMpKSwKLSgoY2hhcikoMHgxMDJiKzQ2NS0weDExYzgpKSwoKGNoYXIpKDB4MjA5NSs0MDItMHgyMWYyKSksCi0oKGNoYXIpKDB4M2E0KzIzNy0weDQ1YikpLCgoY2hhcikoMHgxNjdiKzI5NTItMHgyMWNjKSksCi0oKGNoYXIpKDB4YzBkKzYxNTktMHgyM2U0KSksKChjaGFyKSgweDVjYSs0OTY3LTB4MThmOCkpLAotKChjaGFyKSgweGM4Mis1Mjk0LTB4MjBlZikpLCgoY2hhcikoMHg0ZWMrMjEzNC0weGQwMCkpLAotKChjaGFyKSgweDdhMysyODA3LTB4MTI1NykpLCgoY2hhcikoMHgxYjA4KzI3NDMtMHgyNTdiKSksCi0oKGNoYXIpKDB4YzYxKzIzMzUtMHgxNTNiKSksKChjaGFyKSgweDYyOCs3MzE0LTB4MjI3NCkpfTtleHRlcm4gU01TX1BBUkFNIAorY29uc3RfaGVhZGVyO2NoYXIgZ196VWZpU21zX0RpZ0FzY01hcFsoMHgxMTQrOTM0MS0weDI1ODEpXT17CisoKGNoYXIpKDB4YzZmKzQzOTMtMHgxZDY4KSksKChjaGFyKSgweDUxZis3NDIyLTB4MjFlYykpLAorKChjaGFyKSgweDExMCs4OTgwLTB4MjNmMikpLCgoY2hhcikoMHg0NWErODA2LTB4NzRkKSksCisoKGNoYXIpKDB4YTU5KzI5MTgtMHgxNThiKSksKChjaGFyKSgweDJhNis2ODQ1LTB4MWQyZSkpLAorKChjaGFyKSgweDdjMCszNDAwLTB4MTRkMikpLCgoY2hhcikoMHgxNTBmKzM5MzItMHgyNDM0KSksCisoKGNoYXIpKDB4M2RmKzgxMTYtMHgyMzViKSksKChjaGFyKSgweDE3Yys4NjM0LTB4MjJmZCkpLAorKChjaGFyKSgweDE3MzIrNTQ4LTB4MTkxNSkpLCgoY2hhcikoMHg1ZCs1NzQtMHgyNTkpKSwKKygoY2hhcikoMHgxM2I4KzQ5NzktMHgyNmU4KSksKChjaGFyKSgweDE0Nys1MzYyLTB4MTVmNSkpLAorKChjaGFyKSgweDNiYisxNzQ5LTB4YTRiKSksKChjaGFyKSgweDE4NWMrODU4LTB4MWI3MCkpfTtleHRlcm4gU01TX1BBUkFNIAogZ196VWZpU21zX1NlbmRpbmdTbXM7ZXh0ZXJuIFVJTlQxNiBnX3pVZmlTbXNfSXNMYW5ndWFnZVNoaWZ0O2V4dGVybiBpbnQgCiBnX3pVZmlTbXNfTGFuZ3VhZ2U7c3RhdGljIGludCBTZXJpYWxpemVOdW1iZXJzX3Ntcyhjb25zdCBjaGFyKnBTcmMsY2hhcipwRHN0LGludAogIG5TcmNMZW5ndGgpO2NvbnN0IHVuc2lnbmVkIHNob3J0IGdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW109ewotKChjaGFyKSgweGY2Nis0NDAzLTB4MjA3OSkpLCgoY2hhcikoMHg1ZDUrNTMzOS0weDFhOTApKSwKLSgoY2hhcikoMHgzN2QrODMwNy0weDIzZDApKSwoKGNoYXIpKDB4YTk0KzUyOTYtMHgxZjI0KSksCi0oKGNoYXIpKDB4MjE1Yis1MzctMHgyMzU0KSksKChjaGFyKSgweDFhOSs3NTkyLTB4MWYzMSkpLAotKChjaGFyKSgweGJjMys1MzU3LTB4MjA5MCkpLCgoY2hhcikoMHhkOSsyMzA5LTB4OWJlKSksCi0oKGNoYXIpKDB4MTNhOCsyNjI2LTB4MWRjYSkpLCgoY2hhcikoMHgyMTkrNTc1OS0weDE4NzgpKSwKLSgoY2hhcikoMHg3NmQrNjc2MC0weDIxYjUpKSwoKGNoYXIpKDB4MTBjYysxODkxLTB4MTgwZikpLAotKChjaGFyKSgweDE3MjUrMjg4LTB4MTgyNSkpLCgoY2hhcikoMHg1Y2YrNDAxMy0weDE1NWMpKSwKLSgoY2hhcikoMHgxMzAzKzQyNjYtMHgyMzhkKSksKChjaGFyKSgweDQ1Yis3OTgyLTB4MjM2OSkpLAotKChjaGFyKSgweDQ3Yis3OTk0LTB4MjM5NSkpLCgoY2hhcikoMHgyMTMrMzg1OS0weDExMDYpKSwKLSgoY2hhcikoMHg4YSsyOTQ1LTB4YmViKSksKChjaGFyKSgweDYzYis0MDM5LTB4MTVlMikpLAotKChjaGFyKSgweDNlNys3MDg3LTB4MWY3NikpLCgoY2hhcikoMHgxMzg0KzEzOTItMHgxOGQ0KSksCi0oKGNoYXIpKDB4NjU0KzE4NzMtMHhkODUpKSwoKGNoYXIpKDB4NDk3KzUwOTgtMHgxODYxKSksCi0oKGNoYXIpKDB4Nzg5KzU2MzYtMHgxZDZkKSksKChjaGFyKSgweDY4Mis2NzUtMHg5MDUpKSwKLSgoY2hhcikoMHgxMGI5Kzk3MC0weDE0NjMpKSwoKGNoYXIpKDB4ZjljKzUyNzYtMHgyNDE4KSksCi0oKGNoYXIpKDB4MWRmMisxODc4LTB4MjUyOCkpLCgoY2hhcikoMHgxZDQ4Kzg3OC0weDIwOTYpKSwKLSgoY2hhcikoMHgxYzQxKzE1NjctMHgyMjQwKSksKChjaGFyKSgweGNjMis3NjItMHhmOWMpKSwKLSgoY2hhcikoMHgyYzgrNzU0Mi0weDIwMWUpKSwoKGNoYXIpKDB4MjE3YysxMDIwLTB4MjU1NykpLCgweDU4NSs4MTM3LTB4MjUyYyksCi0oKGNoYXIpKDB4NTMxKzUwMTEtMHgxOGExKSksKDB4Njg5KzMzNTQtMHgxM2ExKSwoKGNoYXIpKDB4M2I0KzE3ODYtMHhhODkpKSwKLSgoY2hhcikoMHg0MjErMjUwMy0weGRjMikpLCgweDFiMjgrNDg0LTB4MWNlNSksKChjaGFyKSgweDE1NTcrNDYzLTB4MTZmZSkpLAotKChjaGFyKSgweGY0MiszNzc5LTB4MWRkYykpLCgoY2hhcikoMHhhMjErNDEwMC0weDE5ZmIpKSwKLSgoY2hhcikoMHg2ODkrNjA0Ny0weDFkZmQpKSwoKGNoYXIpKDB4MTQ4NyszODMxLTB4MjM1MikpLCgoY2hhcikoMHg4OSsxNjEtMHhmZCkpCi0sKChjaGFyKSgweGM5ZCs0MjIwLTB4MWNlYikpLCgoY2hhcikoMHgxZTNkKzczMS0weDIwZTkpKSwKLSgoY2hhcikoMHgxZmZmKzMxNS0weDIxMGEpKSwoKGNoYXIpKDB4MjE5YysxMTQzLTB4MjVlMikpLAotKChjaGFyKSgweDNhMis3NDA2LTB4MjA1ZSkpLCgoY2hhcikoMHgxYzNiKzk2OC0weDFmZDApKSwKLSgoY2hhcikoMHg0ZDQrNDE2MC0weDE0ZTApKSwoKGNoYXIpKDB4M2VmKzM3MS0weDUyZCkpLAotKChjaGFyKSgweDY0Mys4MjYwLTB4MjY1MSkpLCgoY2hhcikoMHg0MTUrMjcxMy0weGU3NykpLAotKChjaGFyKSgweGQyOSs0MjQ5LTB4MWQ4YSkpLCgoY2hhcikoMHg0MWYrMTMxLTB4NDY5KSksKChjaGFyKSgweDZkYisxMDg0LTB4YWRkKSkKLSwoKGNoYXIpKDB4YWEyKzM4NTEtMHgxOTcyKSksKChjaGFyKSgweGU3Mys0MzkyLTB4MWY1ZikpLAotKChjaGFyKSgweGFlNis0MzM3LTB4MWI5YSkpLCgoY2hhcikoMHg5MzErNDM0NC0weDE5ZWIpKSwKLSgoY2hhcikoMHgxMTQxKzM4MzAtMHgxZmY4KSksKDB4MzFhKzUwMzMtMHgxNmMzKSwoKGNoYXIpKDB4YWE4KzM5ODMtMHgxOWY2KSksCi0oKGNoYXIpKDB4YzAzKzY1OTktMHgyNTg4KSksKChjaGFyKSgweDFjNTcrMjE2MS0weDI0ODUpKSwKLSgoY2hhcikoMHgxM2Q1KzI0NTItMHgxZDI1KSksKChjaGFyKSgweGIxMSs1MDcwLTB4MWU5YSkpLAotKChjaGFyKSgweDE5YTkrMjkwNy0weDI0YmUpKSwoKGNoYXIpKDB4NjgzKzkwNC0weDljNCkpLAotKChjaGFyKSgweGExMSs2ODc4LTB4MjRhNykpLCgoY2hhcikoMHhhMmYrMzA2Ny0weDE1ZTEpKSwKLSgoY2hhcikoMHgzMDQrOTE2Ny0weDI2ODkpKSwoKGNoYXIpKDB4NTQrNDA4LTB4MWExKSksKChjaGFyKSgweGZkYSsyNzYtMHgxMGEyKSksCi0oKGNoYXIpKDB4ZTg4KzExNzMtMHgxMmQwKSksKChjaGFyKSgweGZiMCs1NTEzLTB4MjRlYikpLAotKChjaGFyKSgweDE0NmIrMzIzLTB4MTU1ZikpLCgoY2hhcikoMHhkY2MrMTE3MS0weDEyMGYpKSwKLSgoY2hhcikoMHg0YzErODgyNC0weDI2ZTgpKSwoKGNoYXIpKDB4MTE3KzM2NTgtMHhmMGYpKSwKLSgoY2hhcikoMHgxODc5KzEwODctMHgxYzY1KSksKChjaGFyKSgweGY3Zis4MjYtMHgxMjY1KSksCi0oKGNoYXIpKDB4NWUzKzE3NzEtMHhjNzkpKSwoKGNoYXIpKDB4NTQyKzUwMTctMHgxODg1KSksCi0oKGNoYXIpKDB4MTAwOSsxMjg5LTB4MTRiYikpLCgoY2hhcikoMHgyMDMyKzMxNy0weDIxMTcpKSwKLSgoY2hhcikoMHgxODY2KzEzNjEtMHgxZDVlKSksKChjaGFyKSgweDg2NCsyNTUtMHg5MDkpKSw2OTcyLCgweDIwZTcrMzkwOS0weDE0ZmQpCi0sKDB4MWI2YyszODYxLTB4ZjQzKSwoMHgxZjhmKzQwMTAtMHgxNDI1KSwoMHgxNzdhKzcxNy0weDFhMzYpLAotKChjaGFyKSgweGE3Yys0NTEyLTB4MWJmYykpLCgoY2hhcikoMHg5MzMrNTEyNS0weDFjZDcpKSwKLSgoY2hhcikoMHhiMTArNjE5MC0weDIyZGMpKSwoKGNoYXIpKDB4M2NkKzc2MjUtMHgyMTMzKSksCi0oKGNoYXIpKDB4OTRjKzExNzMtMHhkN2QpKSwoKGNoYXIpKDB4MTA0OSs0OTIwLTB4MjMxYykpLAotKChjaGFyKSgweDE5MzMrMTMxLTB4MTk1MCkpLCgoY2hhcikoMHhmYjgrOTU3LTB4MTMwZSkpLAotKChjaGFyKSgweDcwNSs0MDA0LTB4MTY0MSkpLCgoY2hhcikoMHg5MzIrNDIyNy0weDE5NGMpKSwKLSgoY2hhcikoMHgyMmQrNDQwMC0weDEyZjMpKSwoKGNoYXIpKDB4NmQ3KzU3LTB4NmE1KSksCi0oKGNoYXIpKDB4MTMwMysyNzM1LTB4MWQ0NikpLCgoY2hhcikoMHg3NGQrMzM5OC0weDE0MjYpKSwKLSgoY2hhcikoMHgxMjgrODAxOC0weDIwMGMpKSwoKGNoYXIpKDB4MWM0KzMxODMtMHhkYzQpKSwoKGNoYXIpKDB4ZDU2KzM1Ny0weGU0YikpCi0sKChjaGFyKSgweDY2MSsxMzAxLTB4YjA1KSksKChjaGFyKSgweDE4YzgrMTAwNi0weDFjNDQpKSwKLSgoY2hhcikoMHgxNDJkKzE2MDMtMHgxOWZkKSksKChjaGFyKSgweDZlOCs1NDQ5LTB4MWJiZCkpLAotKChjaGFyKSgweGQwZis0Njg1LTB4MWVlNykpLCgoY2hhcikoMHhkMDIrMzQyMS0weDE5ZTkpKSwKLSgoY2hhcikoMHg3YTkrNDI0OC0weDE3Y2EpKSwoKGNoYXIpKDB4ZWMyKzUwMTQtMHgyMWUwKSksCi0oKGNoYXIpKDB4MWRjNCsyMDk3LTB4MjU3YykpLCgoY2hhcikoMHgxYWM0KzI1ODktMHgyNDY3KSksNjk1MiwKLSgweDFlNGMrMTQ0My0weDhhZiksNjk1MywoMHgxZWI4KzU0MjEtMHgxOGE4KSwoKGNoYXIpKDB4YTkyKzMyMzktMHgxNzE5KSksCi0oKGNoYXIpKDB4MjQxNis3NTUtMHgyNmU5KSksKChjaGFyKSgweDIwOSs1OTk1LTB4MTk1NCkpLAotKChjaGFyKSgweDMzYSs1NzY3LTB4MTlhMSkpLCgoY2hhcikoMHgxZDFmKzQzNS0weDFlYjIpKSwKLSgoY2hhcikoMHg0ZjMrNzI2OC0weDIxMzcpKSwoKGNoYXIpKDB4OTIrNDc1OS0weDEzMDkpKSwKLSgoY2hhcikoMHhlODUrMzE1OC0weDFhYmIpKSwoKGNoYXIpKDB4ODZkKzQzNTMtMHgxOTRlKSksCi0oKGNoYXIpKDB4NGQ5KzQ3Mi0weDY5MSkpLCgoY2hhcikoMHgxYWExKzIzMTEtMHgyMzg4KSksCi0oKGNoYXIpKDB4MTdlNysyNzU4LTB4MjI4ZCkpLCgoY2hhcikoMHgzYTgrNTI2Ny0weDE4MWIpKSwKLSgoY2hhcikoMHhjMWErMTQwNy0weDExNzkpKSwoKGNoYXIpKDB4ODdhKzc2NDEtMHgyNjMzKSksCi0oKGNoYXIpKDB4ZWVhKzEyNTItMHgxM2FlKSksKChjaGFyKSgweGQxNCs0MjkyLTB4MWRiOCkpLAotKChjaGFyKSgweGNkMSs0NDMwLTB4MWRmZikpLCgoY2hhcikoMHhiNzkrMjY5NC0weDE1ZGYpKSwKLSgoY2hhcikoMHgyM2Y4KzQ5MS0weDI1YzMpKSwoKGNoYXIpKDB4NjY2KzU0MDItMHgxYjYwKSksCi0oKGNoYXIpKDB4YWIrNjkzOC0weDFiYTUpKSwoKGNoYXIpKDB4YTYyKzE0NTItMHhmZWUpKSwKLSgoY2hhcikoMHhkZDMrMTczNC0weDE0NzkpKSwoKGNoYXIpKDB4YzQzKzU5OTgtMHgyMzkxKSksCi0oKGNoYXIpKDB4YjBkKzI0MzUtMHgxNDcwKSksKChjaGFyKSgweGRkNys0OTktMHhmYWEpKSwKLSgoY2hhcikoMHgxNWU4KzYyNC0weDE4MzgpKSwoKGNoYXIpKDB4MWQ4NSsyMTUxLTB4MjVjYykpLAotKChjaGFyKSgweDZiMCs0NjctMHg4NjMpKSwoKGNoYXIpKDB4MTcwYisxOTczLTB4MWVhMCkpLAotKChjaGFyKSgweDM3ZisyMDI3LTB4YjRhKSksKChjaGFyKSgweGFkKzM0ODYtMHhlMmIpKSwKLSgoY2hhcikoMHgxYWEyKzE3ODMtMHgyMTc5KSksKDB4MTMwKzMyMzYtMHhkOTQpLCgoY2hhcikoMHg1MjIrMjI1Ni0weGRkMikpLAotKDB4MTliZCsxMDcwLTB4MWRlYSksKDB4MTkxKzI4NzAtMHhjYTMpLCgweDFhN2IrMjI5Mi0weDIzNmMpLAotKChjaGFyKSgweGQxMis1MzA0LTB4MjFhYSkpLCgweGZlMysyNzIyLTB4MWEyNiksKChjaGFyKSgweGFhOCs1OTcwLTB4MjFkYSkpLAotKChjaGFyKSgweDIyNTkrNTcxLTB4MjQ3NCkpLCgoY2hhcikoMHgxNWZjKzEyNjItMHgxYWNhKSksCi0oKGNoYXIpKDB4MTA5KzQ5MjEtMHgxNDIyKSksKChjaGFyKSgweDU0Mis2MTI4LTB4MWQxMikpLAotKChjaGFyKSgweDM0NiszMzktMHg0NzkpKSwoKGNoYXIpKDB4NDJiKzI5MzctMHhmODQpKSwoKGNoYXIpKDB4OTczKzUxNzMtMHgxZDg4KSkKLSwoKGNoYXIpKDB4NmRmKzQ0OTktMHgxODUyKSksKChjaGFyKSgweDY5KzI4MDYtMHhiM2YpKSwKLSgoY2hhcikoMHgxOTljKzM0MjEtMHgyNmQ5KSksKChjaGFyKSgweGNiZis1MjkxLTB4MjE0YSkpLAotKChjaGFyKSgweDE1OTMrMzc5NS0weDI0NDYpKSwoKGNoYXIpKDB4MzdkKzI2NDMtMHhkYjApKSwKLSgoY2hhcikoMHg0YWYrNDAwOC0weDE0MzcpKSwoKGNoYXIpKDB4MWM4ZCsxMDE1LTB4MjA2NCkpLCgweGZjZCs0ODU2LTB4MjJiYSksCi0oKGNoYXIpKDB4Mjg1KzIyNDUtMHhiMmEpKSwoKGNoYXIpKDB4ZTY0KzE2NDktMHgxNGI1KSksCi0oKGNoYXIpKDB4MTQ3YSsyNTM4LTB4MWU0NCkpLCgoY2hhcikoMHgxMzQ0KzExNzctMHgxN2JkKSksCi0oKGNoYXIpKDB4MWY0MSsyODctMHgyMDQwKSksKChjaGFyKSgweDdmNys1MjQzLTB4MWM1MikpLCgweDQ0MCs0MzU0LTB4MTRlMiksCi0oKGNoYXIpKDB4ODlmKzEyNDctMHhkNWUpKSwoKGNoYXIpKDB4NDc3KzM2NTktMHgxMmEyKSksCi0oKGNoYXIpKDB4Mzk5KzE5NzYtMHhiMzEpKSwoKGNoYXIpKDB4OWVhKzI1NzEtMHgxM2Q1KSksKDB4MTcxNys2NTctMHgxOTRkKSwKLSgweDE4ZmMrODUxLTB4MWM0MSksKDB4YTgxKzQxMjItMHgxYTdmKSwoMHgxMzE1KzQ2NDMtMHgyNTJmKSwKLSgoY2hhcikoMHgxMjQyKzUzNDMtMHgyNzAxKSksKDB4MTdjNiszMzcyLTB4MjRkMyksKChjaGFyKSgweDE1ZTcrMjMzMi0weDFlZTMpKSwKLSgoY2hhcikoMHgxNWMrNTY4LTB4Mzc0KSksKChjaGFyKSgweDcyYis0NTk5LTB4MTkwMikpLCgoY2hhcikoMHg3NDMrODcwLTB4YTg5KSksCi0oKGNoYXIpKDB4MTdjZCsyOTM2LTB4MjMyNSkpLCgoY2hhcikoMHhlNCsyNjM2LTB4YjEwKSksKChjaGFyKSgweDY5OCszNDAtMHg3Y2MpKQotLCgweDY4OCsxNTgxLTB4YzU4KSwoKGNoYXIpKDB4YmI0KzEzNTMtMHgxMGRkKSksKChjaGFyKSgweDcwMis2MzQ4LTB4MWZhZSkpLAotKChjaGFyKSgweDYyZis4MDA1LTB4MjU1NCkpLCgoY2hhcikoMHg4NjIrOTgxLTB4YzE3KSksKDB4NjViKzQ1MTktMHgxN2E2KSwKLSgoY2hhcikoMHhhZDYrMjE2MS0weDEzMjcpKSwoKGNoYXIpKDB4NTAzKzgyNjQtMHgyNTJiKSksCi0oKGNoYXIpKDB4OGErMTExMC0weDRjMCkpLCgoY2hhcikoMHg1OWQrNDg0Ni0weDE4NmIpKSwKLSgoY2hhcikoMHhhNDErNzMwNi0weDI2YWIpKSwoMHhhMGIrNTk5NC0weDIxMTcpLCgoY2hhcikoMHhlNTcrMjI0My0weDE2ZmEpKSwKLSgoY2hhcikoMHgxOTNjKzEwODUtMHgxZDU5KSksKDB4ZTcwKzU1NTEtMHgyNDAxKSwoMHgyMzM0KzUyOC0weDI0YzUpLAotKChjaGFyKSgweDI0MDMrMTQtMHgyM2YxKSksKChjaGFyKSgweDE4MCsxOTA1LTB4OGQxKSksCi0oKGNoYXIpKDB4MTc1YysxNjMzLTB4MWQ5ZCkpLCgweGJlNSszMDYyLTB4MTc2MCksKDB4MTIzNSsyNzQ4LTB4MWNlMiksCi0oMHgxOWE3KzE0MDUtMHgxZjA3KSwoKGNoYXIpKDB4MjM2MCs3MTgtMHgyNjBlKSksKDB4NTIrNjg3OC0weDFiMmMpLAotKDB4NjE3KzU1MzEtMHgxYmFkKSwoKGNoYXIpKDB4MWFjNis4MzEtMHgxZGU1KSksKChjaGFyKSgweDEwZmIrMjI4LTB4MTFiZikpLAotKDB4MzVjKzU2OTEtMHgxOTkwKSwoKGNoYXIpKDB4MTk2ZCsxODA3LTB4MjA1YykpLCgoY2hhcikoMHg1MzMrNjY0My0weDFmMDYpKSwKLSgoY2hhcikoMHhiODUrMjA1My0weDEzNmEpKSwoKGNoYXIpKDB4YzdiKzE0Ny0weGNlZSkpLCgweDEzZCs1NjM2LTB4MTZjNCksCi0oMHgzNCs1NDQ3LTB4MTU3MyksKChjaGFyKSgweDI5Zis2MDY3LTB4MWEzMikpLCgoY2hhcikoMHg2Yis0NDI1LTB4MTE5NCkpLAotKChjaGFyKSgweDFhYzArMTU2NC0weDIwYmMpKSwoMHgzY2YrMTk1OS0weGFmYSksKChjaGFyKSgweDY4Mis3Ny0weDZhZikpLAotKDB4MTc4KzcwNS0weDQyZCksKDB4ODJiKzQ2MzUtMHgxYTQwKSwoKGNoYXIpKDB4NDYrNTM5My0weDE1MzcpKSwKLSgoY2hhcikoMHgzOTErNzc0NS0weDIxYjIpKSwoMHgxODArNDQ1Mi0weDEyNjYpLCgoY2hhcikoMHgyMDQwKzczNC0weDIyZmUpKSwKLSgoY2hhcikoMHg3MmQrNTgzLTB4OTU0KSksKChjaGFyKSgweDE5NWQrMTM4LTB4MTljNykpLH07Y29uc3QgdW5zaWduZWQgc2hvcnQgCi16dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4ZTYrMzU0NC0weGViYyldPXt7KDB4YTI0KzI5ODYtMHgxNWM1KQotLCgweDFjN2YrOTM0LTB4MWYzZSl9LHsoMHhhNDYrNDE0Mi0weDFhNmEpLCgweDExZWYrMzIzNS0weDFlODYpfSx7Ci0oMHhjM2QrNjAzLTB4ZThiKSwoMHgyMDMxKzM5Mi0weDIxYWMpfSx7KDB4MTZhMCs3MzEtMHgxOTY3KSwoMHgyNjYzKzg3LTB4MjY1Yyl9LAoteygweDI0OTErNDkzLTB4MjY1NiksKDB4YzAxKzYwMTQtMHgyMzA0KX0seygweDEyYTYrNTA5NC0weDI2NjMpLAotKDB4MTg5Mys2MzktMHgxYTk1KX0seygweDE1M2YrMzk1Mi0weDI0ODApLCgweDExNzMrMjg3MS0weDFjNGUpfSx7Ci0oMHhjMDkrMTU4NC0weDExZmQpLCgweDE0MjYrMTEzMy0weDE4MzgpfSx7KDB4MTA3NysyMTEwLTB4MTg3OCksCi0oMHgxZDA0KzQ4Ni0weDFlNmMpfSx7KDB4ZTkxKzIzMTYtMHgxNzVmKSwoMHg4YTArNjU0NS0weDIxZDQpfSx7Ci0oMHgyNjkrNTI1MC0weDE2YWIpLCgweGEyNys3Mzk3LTB4MjY5MCl9LHsoMHg5MzYrNTUxLTB4YjFjKSwoMHgxYzlhKzI4MTItMHgyNmQ1KQotfSx7KDB4ZjA1KzIyNC0weGY5YyksKDB4MTU3OCsxNjM1LTB4MWIwZSl9LHsoMHgxNzRmKzI0MzMtMHgyMDgxKSwKLSgweDkyMisyMzA0LTB4MTE0Zil9LHsoMHg3Y2ErNTM2MC0weDFjNjUpLCgweDE2MDIrMzE4LTB4MTY2Nil9LHsKLSgweDEwZDIrMjU1NC0weDFhNmIpLCgweDczZisyMzMxLTB4Zjc5KX0seygweDEyZWIrMzg4MS0weDIxYWYpLAotKDB4MjQxMyszNjM4LTB4MTE5ZCl9LHsoMHg3MDgrNDA0MS0weDE2NjgpLCgweDc0OCs2MjcyLTB4MWVkYil9LHsKLSgweGUwNCsyNjEwLTB4MTdjNyksKDB4MTMzMisyOTMwLTB4MWRiMSl9LHsoMHgyMDIrMjY4MS0weGMwNiksCi0oMHgyYWIrOTE0OS0weDI1NmUpfSx9O2NvbnN0IHVuc2lnbmVkIHNob3J0IFVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX1VDU1tdWwotKDB4M2YrNjQyNS0weDE5NTYpXT17eygweGRhZisyNzI1LTB4MTg0NCksKDB4ZTZiKzQyMjEtMHgxYjU0KX0sewotKDB4OWYzKzY4NTMtMHgyNGE2KSwoMHgxZjQxKzIxMzQtMHgyM2YxKX0seygweGJmZCs0MTYyLTB4MWMyYyksOTE1fSx7Ci0oMHhiYzIrNTA1My0weDFmNmIpLCgweDljNSs2MDA2LTB4MWRhMCl9LHsoMHgxMTlhKzI0MDYtMHgxYWViKSwKLSgweDc2Mys4MzA5LTB4MjQyZil9LHsoMHgxMTc2KzE5ODctMHgxOTIzKSwoMHgxZDc5KzMwMDQtMHgyNTk1KX0sewotKDB4YjlmKzEwOTEtMHhmY2IpLCgweDhiMisxNzA2LTB4YmI0KX0seygweDhhOCszNTYxLTB4MTY3OSksKDB4MWU5OSsyOTA2LTB4MjY1MCkKLX0seygweDc3OSs2NTE5LTB4MjBkNyksKDB4MTlmZCs2MTMtMHgxOGNhKX0seygweDQ5OSs2NzQ2LTB4MWVkOSksCi0oMHgxNWQzKzI2OTctMHgxY2JlKX0sfTtjb25zdCB1bnNpZ25lZCBjaGFyIFVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX0FTQ1tdPXsKKygoY2hhcikoMHgxNGQ4KzIyODEtMHgxZGExKSksKChjaGFyKSgweDY1YSszMTYyLTB4MTI5NCkpLAorKChjaGFyKSgweDE0ZDArNDQyNi0weDI1ZmEpKSwoKGNoYXIpKDB4MThlYisyNTYyLTB4MjJjZCkpLAorKChjaGFyKSgweDM1OSs0NTYxLTB4MTUwYSkpLCgoY2hhcikoMHgyMTA1KzEwOTktMHgyNTMwKSksCisoKGNoYXIpKDB4MjJkZCs5MjUtMHgyNjVhKSksKChjaGFyKSgweDc2MSs3NzAxLTB4MjU1NikpLAorKChjaGFyKSgweDE4NSsyNDUwLTB4YWY3KSksKChjaGFyKSgweDMzNis0MDc3LTB4MTMwMykpLAorKChjaGFyKSgweDlmOCsyMzc3LTB4MTMyMSkpLCgoY2hhcikoMHgxNzY1KzM4NjgtMHgyNjYxKSksCisoKGNoYXIpKDB4ZWM4KzkxMC0weDEyMzYpKSwoKGNoYXIpKDB4M2FmKzIwNDUtMHhiOGMpKSwKKygoY2hhcikoMHgxOWU3KzI4MDctMHgyNGJlKSksKChjaGFyKSgweDIyOCs3NTk1LTB4MWZiMykpLAorKChjaGFyKSgweGNlYisyNTkyLTB4MTZlYikpLCgoY2hhcikoMHgxMzkxKzE0MTAtMHgxOGYzKSksCisoKGNoYXIpKDB4MWEyMCsxMDcyLTB4MWUzMCkpLCgoY2hhcikoMHhhOTkrMTY5My0weDExMTYpKSwKKygoY2hhcikoMHgyMWYrNDQ1OS0weDEzNmEpKSwoKGNoYXIpKDB4NTA5KzMzNS0weDYzOCkpLCgoY2hhcikoMHhhMjcrMTIzMy0weGVkOCkpCissKChjaGFyKSgweGU5YSs1MzMyLTB4MjM0ZSkpLCgoY2hhcikoMHgxNjIyKzE0NTItMHgxYmFlKSksCisoKGNoYXIpKDB4MjI3NSs4NTAtMHgyNWE3KSksKChjaGFyKSgweDFmMTMrOTY0LTB4MjJiNykpLAorKChjaGFyKSgweDNkMis4Mjk2LTB4MjQxYSkpLCgoY2hhcikoMHgxNjAzKzE4MDQtMHgxY2VmKSksCisoKGNoYXIpKDB4OTE5KzExMzAtMHhkNjMpKSwoKGNoYXIpKDB4MjAxNisxNjktMHgyMDlmKSksCisoKGNoYXIpKDB4MWI5YSs4NjQtMHgxZWRhKSksKChjaGFyKSgweDEzYTcrMzgxMi0weDIyNmIpKSwKKygoY2hhcikoMHgyMmYwKzUzMS0weDI0ZTIpKSwoMHgxMDBhKzI2MzAtMHgxYTJlKSwoKGNoYXIpKDB4ZTViKzI1MTYtMHgxODBjKSksCisoMHgxYjEyKzE0NTEtMHgyMGJiKSwoKGNoYXIpKDB4N2I3KzU0OTktMHgxZDBkKSksKChjaGFyKSgweDkzKzUwMjktMHgxNDEyKSksCisoMHgxNDc0KzIwOTItMHgxYzc5KSwoKGNoYXIpKDB4NjY5KzI1MDctMHgxMDBjKSksKChjaGFyKSgweGVjMisyMzM0LTB4MTdiNykpLAorKChjaGFyKSgweDE0NWYrMzc4Ni0weDIyZmYpKSwoKGNoYXIpKDB4MTIzYSsxNDQ2LTB4MTdiNSkpLAorKChjaGFyKSgweDc4OSsyNTgxLTB4MTE3MikpLCgoY2hhcikoMHgxMGMwKzE2NDQtMHgxNmZmKSksCisoKGNoYXIpKDB4MTlkYSsxNTc4LTB4MWZkNikpLCgoY2hhcikoMHgxNTJiKzM2MDgtMHgyMzE0KSksCisoKGNoYXIpKDB4ZGJiKzM1NjQtMHgxYjc3KSksKChjaGFyKSgweDFkNmMrMjM3OC0weDI2ODUpKSwKKygoY2hhcikoMHgyZTUrNDU5OS0weDE0YWEpKSwoKGNoYXIpKDB4YjgrMTk1NC0weDgyNykpLAorKChjaGFyKSgweDIxMmYrODQ3LTB4MjQ0YSkpLCgoY2hhcikoMHhiNDkrNDkxNC0weDFlNDYpKSwKKygoY2hhcikoMHgxMWMrNDMzNy0weDExZDcpKSwoKGNoYXIpKDB4MTk2MCsyMzgzLTB4MjI3OCkpLAorKChjaGFyKSgweDI1MjkrMTc0LTB4MjU5ZikpLCgoY2hhcikoMHgxYTU1KzI0NzgtMHgyM2NhKSksCisoKGNoYXIpKDB4ODRjKzc1MDEtMHgyNTVmKSksKChjaGFyKSgweDUzZCszODctMHg2ODUpKSwoKGNoYXIpKDB4YzYyKzY5LTB4YzZiKSksCisoKGNoYXIpKDB4ODU3KzUyNzMtMHgxY2IzKSksKChjaGFyKSgweDQ0Mis4NDE3LTB4MjRlNSkpLAorKChjaGFyKSgweDE1MCs1NjcwLTB4MTczNykpLCgweGEyOSsyMjkyLTB4MTMxZCksKChjaGFyKSgweGFmMis3NTYtMHhkYTUpKSwKKygoY2hhcikoMHhhNSszODUxLTB4ZjZlKSksKChjaGFyKSgweDE4M2ErOTI0LTB4MWI5MykpLAorKChjaGFyKSgweDFhMDkrMjMzOS0weDIyZTgpKSwoKGNoYXIpKDB4NjMwKzQ5OTYtMHgxOTZmKSksCisoKGNoYXIpKDB4Y2NkKzUyOTMtMHgyMTM0KSksKChjaGFyKSgweDI0NDYrMjkzLTB4MjUyNCkpLAorKChjaGFyKSgweGM5Yys2Njc3LTB4MjY2OSkpLCgoY2hhcikoMHgxODhjKzE1NjMtMHgxZTVlKSksCisoKGNoYXIpKDB4MTJhKzQ3NDgtMHgxMzZjKSksKChjaGFyKSgweGNjYis2NTIyLTB4MjVmYSkpLAorKChjaGFyKSgweGU3Mis0NzQtMHgxMDAwKSksKChjaGFyKSgweDFjNjIrMjQ4MS0weDI1YzYpKSwKKygoY2hhcikoMHhjMzMrNDc1Ny0weDFlN2EpKSwoKGNoYXIpKDB4MTI4YSsyMzU0LTB4MWI2ZCkpLAorKChjaGFyKSgweDFkZDgrMTAxOC0weDIxODIpKSwoKGNoYXIpKDB4MTc5KzQyMDktMHgxMTk5KSksCisoKGNoYXIpKDB4NTYzKzc5NDQtMHgyNDE5KSksKChjaGFyKSgweDFjMzYrMjMzNC0weDI1MDEpKSwKKygoY2hhcikoMHgxZWRkKzU1Ni0weDIwYjUpKSwoKGNoYXIpKDB4ZTcyKzIwNzEtMHgxNjM0KSksCisoKGNoYXIpKDB4MzJkKzYxODYtMHgxYjAxKSksKChjaGFyKSgweDI0MSs2ODQzLTB4MWNhNSkpLAorKChjaGFyKSgweDEyNTgrMjk5MS0weDFkYWYpKSwoKGNoYXIpKDB4NWUyKzMyNzctMHgxMjU2KSksCisoKGNoYXIpKDB4MTkyOSsxNzI2LTB4MWY4ZCkpLCgweDFmMjUrOTg0LTB4N2MxKSwoMHgxZGQ4Kzg5NzgtMHgyNWJiKSw2OTc0LDY5MzIsCisoMHgxNDQ1KzQ2MjgtMHgyNjQ4KSwoKGNoYXIpKDB4MTU5YysxNzUtMHgxNjJiKSksKChjaGFyKSgweDkwOSs0ODk2LTB4MWJjOCkpLAorKChjaGFyKSgweDE2OWYrMjEyMS0weDFlODYpKSwoKGNoYXIpKDB4ODA4KzYxOTAtMHgxZmQzKSksCisoKGNoYXIpKDB4NzgwKzYwMTEtMHgxZTk3KSksKChjaGFyKSgweDcyOCs3MTY1LTB4MjJjMCkpLAorKChjaGFyKSgweDEwZjMrMzg3OS0weDFmYjQpKSwoKGNoYXIpKDB4MTBiZisyMDkzLTB4MTg4NSkpLAorKChjaGFyKSgweDJjNyszOTU0LTB4MTFkMSkpLCgoY2hhcikoMHgxYTliKzkxOC0weDFkYzgpKSwKKygoY2hhcikoMHgxODdiKzM3MTktMHgyNjk4KSksKChjaGFyKSgweDFkNGYrMTgwMC0weDIzZWMpKSwKKygoY2hhcikoMHhhZTMrNzIxOC0weDI2YTkpKSwoKGNoYXIpKDB4NzE4KzI5MDEtMHgxMjAwKSksCisoKGNoYXIpKDB4MzFiKzI5OTYtMHhlNjEpKSwoKGNoYXIpKDB4MThkNys3MjUtMHgxYjNkKSksKChjaGFyKSgweGI0MSs0ODAtMHhjYjEpKQorLCgoY2hhcikoMHg0ZmMrNjc1Mi0weDFlZWIpKSwoKGNoYXIpKDB4NGUwKzExNzQtMHg5MDQpKSwKKygoY2hhcikoMHgxNTU3KzM4NS0weDE2NjUpKSwoKGNoYXIpKDB4YTE4KzQwNTQtMHgxOTdhKSksCisoKGNoYXIpKDB4MTgxYyszMDgzLTB4MjNiMikpLCgoY2hhcikoMHhhMzkrNTUyMS0weDFmNTQpKSwKKygoY2hhcikoMHgxYWNmKzEyMzgtMHgxZjJlKSksKChjaGFyKSgweDk1Nys0NzIwLTB4MWI0ZikpLAorKChjaGFyKSgweDJkMCs3Mjc2LTB4MWVjMykpLCgoY2hhcikoMHgzZGYrNDg5Ny0weDE2ODYpKSw2OTUyLDY5NzYsCisoMHgyMmQ5KzQzODUtMHgxOGQxKSw2OTczLCgoY2hhcikoMHg4N2YrMzUwMS0weDE2MGMpKSwKKygoY2hhcikoMHgxZDNkKzQ4MC0weDFlZmQpKSwoKGNoYXIpKDB4MTJmNis0NzEtMHgxNGFkKSksCisoKGNoYXIpKDB4YjgxKzI5ODQtMHgxNzA5KSksKChjaGFyKSgweDc0YSs4MDEwLTB4MjY3NCkpLAorKChjaGFyKSgweDNlMSs4ODA1LTB4MjYyNikpLCgoY2hhcikoMHg1N2YrMTIzOC0weGEzNSkpLCgoY2hhcikoMHg1NzUrNzk5LTB4ODc0KSkKKywoKGNoYXIpKDB4MTdjYSs0MTUtMHgxOTQ5KSksKChjaGFyKSgweGQ1KzM5OS0weDI0NCkpLAorKChjaGFyKSgweGJiMSs0ODA0LTB4MWU1NSkpLCgoY2hhcikoMHhhYWIrNzAxOC0weDI1ZjUpKSwKKygoY2hhcikoMHgzMGQrODc1MC0weDI1MWIpKSwoKGNoYXIpKDB4MTgyYisxNzcxLTB4MWVmNikpLAorKChjaGFyKSgweDE1YjgrNDE4NS0weDI1ZjEpKSwoKGNoYXIpKDB4YzVjKzI0MTMtMHgxNWE5KSksCisoKGNoYXIpKDB4NWRkKzU1NDktMHgxYjZhKSksKChjaGFyKSgweDI2Yys2ODU4LTB4MWQxNikpLAorKChjaGFyKSgweDExNDYrNDk3Ni0weDI0OTYpKSwoKGNoYXIpKDB4NDdkKzYzNi0weDZkOSkpLAorKChjaGFyKSgweDI1Mis3MDk0LTB4MWRlOCkpLCgoY2hhcikoMHgxNDQ0KzkxNS0weDE3YjcpKSwKKygoY2hhcikoMHg3YzQrNzIzOC0weDIzZWEpKSwoKGNoYXIpKDB4MTgyNSsyNDM4LTB4MjE4YikpLAorKChjaGFyKSgweDI2NCs4OTg4LTB4MjU2MCkpLCgoY2hhcikoMHg0Y2YrMzcwNy0weDEzMmEpKSwKKygoY2hhcikoMHhmZTQrNDU5MS0weDIxYjMpKSwoKGNoYXIpKDB4ZDFkKzU5MzEtMHgyNDI4KSksCisoKGNoYXIpKDB4NDNjKzY2ODItMHgxZTM2KSksKChjaGFyKSgweDIyZjArNzIxLTB4MjVhMSkpLAorKChjaGFyKSgweGIxMis0NDg5LTB4MWM3YikpLCgoY2hhcikoMHgxYWIrNjAxNS0weDE5MGEpKSwKKygoY2hhcikoMHhkNmQrMzg3My0weDFjNmUpKSwoKGNoYXIpKDB4NTliKzQxMjQtMHgxNTk3KSksKDB4OTdhKzMwOTctMHgxNTUzKSwKKygoY2hhcikoMHhjMjUrMjg0NS0weDE3MjIpKSwoMHg4NTUrMjI3Mi0weDExMzQpLCgweGJjYSsxNTYxLTB4MTFiZiksCisoMHg3MDUrMjA4NC0weGYyNiksKChjaGFyKSgweDI4ZCs0NDA4LTB4MTNhNSkpLCgweDFiYmErMTA3My0weDFmOGMpLAorKChjaGFyKSgweDEzNGIrNTE2LTB4MTUyZikpLCgoY2hhcikoMHgxYzg0KzE3MTUtMHgyMzE3KSksCisoKGNoYXIpKDB4NWRhKzc4MDgtMHgyNDNhKSksKChjaGFyKSgweDEwYmErNTE3MC0weDI0Y2MpKSwKKygoY2hhcikoMHgxNWZmKzMxNTctMHgyMjM0KSksKChjaGFyKSgweDRmNSsxNTQyLTB4YWRiKSksCisoKGNoYXIpKDB4OGMyKzIzOC0weDk5MCkpLCgoY2hhcikoMHg1MDMrODE3My0weDI0ZDApKSwKKygoY2hhcikoMHgxMzE2KzU2OS0weDE1MmYpKSwoKGNoYXIpKDB4YTliKzEzMTAtMHhmOTkpKSwKKygoY2hhcikoMHg2MGMrNTU0OS0weDFiOTkpKSwoKGNoYXIpKDB4MTQ1ZiszNTk0LTB4MjI0OSkpLAorKChjaGFyKSgweGI3Mis1MjEzLTB4MWZhZikpLCgoY2hhcikoMHgxY2E1KzEyMS0weDFjZmUpKSwKKygoY2hhcikoMHgxYjA2KzE4NjQtMHgyMjJlKSksKChjaGFyKSgweDIyMzMrMTYxLTB4MjJiNCkpLCgweGYxMSs0NDYxLTB4MjA3MyksCisoKGNoYXIpKDB4MWUyKzM2NDAtMHhmZmEpKSwoKGNoYXIpKDB4MTMwYysxNTA5LTB4MThkMSkpLAorKChjaGFyKSgweGZjOCsyOTQyLTB4MWIyNikpLCgoY2hhcikoMHgxYzgzKzY5NS0weDFmMWEpKSwKKygoY2hhcikoMHg4Yis4NjEyLTB4MjIwZikpLCgoY2hhcikoMHgxMDNhKzU3MjAtMHgyNjcyKSksKDB4OTExKzc3NTQtMHgyNmZiKSwKKygoY2hhcikoMHhhZjgrNjIzNi0weDIzMzQpKSwoKGNoYXIpKDB4MTA2MSs1MzU5LTB4MjUzMCkpLAorKChjaGFyKSgweGMwYis1OTAtMHhlMzkpKSwoKGNoYXIpKDB4ZmNmKzQ1LTB4ZmRjKSksKDB4MWQ0NCsxNjgtMHgxZDkxKSwKKygweDQ3YysyNDUwLTB4ZTAwKSwoMHgyMDAyKzEyNTMtMHgyNGNiKSwoMHg3MjQrMjUzLTB4ODE4KSwKKygoY2hhcikoMHhiOWYrMzEyMy0weDE3YjIpKSwoMHgzZDUrMTM2Mi0weDkwOCksKChjaGFyKSgweDFiMmYrMjAwNi0weDIyZTUpKSwKKygoY2hhcikoMHg1YjYrNDYyNy0weDE3YTkpKSwoKGNoYXIpKDB4MTllYisxNTA5LTB4MWZiMCkpLAorKChjaGFyKSgweDEzNis5NTQzLTB4MjY1ZCkpLCgoY2hhcikoMHgxNzhjKzEyMy0weDE3ZTcpKSwKKygoY2hhcikoMHgzMjMrNDcyMy0weDE1NzYpKSwoKGNoYXIpKDB4OTczKzI2MTAtMHgxMzg1KSksKDB4MTk5YSsyMjQxLTB4MjFmZSksCisoKGNoYXIpKDB4MTNhOCsyMDUxLTB4MWI4YikpLCgoY2hhcikoMHgxMjVjKzQyMzktMHgyMmNiKSksCisoKGNoYXIpKDB4MTcyYyszNTEtMHgxODZiKSksKChjaGFyKSgweGI2MCsyMTYzLTB4MTNiMykpLCgweDc4OCszMzU4LTB4MTQ0YSksCisoKGNoYXIpKDB4NWNmKzQxMzctMHgxNWQ4KSksKChjaGFyKSgweGNiOSszODY0LTB4MWJiMSkpLAorKChjaGFyKSgweDExZmIrNDc5LTB4MTNiYSkpLCgoY2hhcikoMHhkMDArMzE3Mi0weDE5NDQpKSwKKygoY2hhcikoMHg3NmMrNzM2NC0weDI0MTApKSwoMHgxMjdjKzk0LTB4MTI3YyksKChjaGFyKSgweGUyKzM0OTctMHhlNmIpKSwKKygoY2hhcikoMHgyNzArMjgyMy0weGQ1NykpLCgweDE2ZDIrMjE2Mi0weDFmMjYpLCgweDFjNzgrODY4LTB4MWY1ZCksCisoKGNoYXIpKDB4MTJmMCsxNjkwLTB4MTk2YSkpLCgoY2hhcikoMHgzNDQrODc3MS0weDI1NjcpKSwKKygoY2hhcikoMHgxMTMrOTU1LTB4NGFlKSksKDB4MTRlNSszNzQyLTB4MjMwOCksKDB4NjcyKzU3OTgtMHgxZDA5KSwKKygweGI2Mys2MzQ0LTB4MjQwZSksKChjaGFyKSgweGEwZCs0OTYtMHhiZGQpKSwoMHg3N2YrNTE2Ny0weDFiYWEpLAorKDB4YzQwKzY1ODctMHgyNWY2KSwoKGNoYXIpKDB4Y2RhKzE2NTAtMHgxMzJjKSksKChjaGFyKSgweGJkMys0OTg4LTB4MWYyZikpLAorKDB4YmVmKzEwODAtMHgxMDIwKSwoKGNoYXIpKDB4ZTUrNjU3Ny0weDFhNzYpKSwoKGNoYXIpKDB4MjRhMis2MTYtMHgyNmVhKSksCisoKGNoYXIpKDB4MTM0ZisxNzkwLTB4MWEyZCkpLCgoY2hhcikoMHgzZWYrODY2Mi0weDI1YTUpKSwoMHhjZDArNjAzNi0weDIzZTcpLAorKDB4MjBhNCsxMTk1LTB4MjU0NyksKChjaGFyKSgweGYxNysyOTE2LTB4MWE1YikpLCgoY2hhcikoMHgxZWUzKzU0OC0weDIwZTcpKSwKKygoY2hhcikoMHgxMDI0KzIwNC0weDEwZDApKSwoMHgxY2Y4Kzc4OC0weDFmOTApLCgoY2hhcikoMHgxNzI5KzMzNTAtMHgyNDFmKSksCisoMHhkOWQrNDYyLTB4ZjVmKSwoMHg2ODArNDY5LTB4ODRmKSwoKGNoYXIpKDB4YTQxKzExNjUtMHhlYWUpKSwKKygoY2hhcikoMHgxMTMzKzI1NDAtMHgxYWZmKSksKDB4OWRiKzQyOTEtMHgxYTIwKSwoKGNoYXIpKDB4MzUzKzI2NzktMHhkYWEpKSwKKygoY2hhcikoMHgxMjQ2KzI3OTktMHgxZDE1KSksKChjaGFyKSgweDIwYjcrMjMwLTB4MjE3ZCkpLH07Y29uc3QgdW5zaWduZWQgc2hvcnQgCit6dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4ZjUwKzc1Ny0weDEyNDMpXT17eygweDQwOCsyODMwLTB4ZjBkKQorLCgweDFlZDYrMTAyLTB4MWU1NSl9LHsoMHgxZjI3KzU0Ny0weDIxNDApLCgweGEzYisyNTU2LTB4MTQyYil9LHsKKygweGY5Kzc5OC0weDQwYSksKDB4ODJhKzM3NDQtMHgxNmJkKX0seygweDE2YzkrMTY5OC0weDFkNTcpLCgweDZhOCs1NjMtMHg4N2QpfSx7CisoMHgxMGViKzEzOTktMHgxNjNhKSwoMHgyNmIxKzE3NS0weDI2ZTUpfSx7KDB4MTVjNisxMTQxLTB4MWExMiksCisoMHgzMzkrMTExMy0weDcxNSl9LHsoMHhlNWErNTYxLTB4MTA1YyksKDB4YmQ4KzI0MzUtMHgxNGZmKX0seworKDB4YjMzKzYxOTgtMHgyMzJkKSwoMHgxODhjKzIwMTgtMHgyMDEzKX0seygweGYwMCszMjg4LTB4MWI5YiksCisoMHg0ZWIrMTI0OC0weDk0ZCl9LHsoMHhkMysyMjUxLTB4OTYwKSwoMHgxM2MrNzk1NC0weDFmZjEpfSx7KDB4NjM3Kzc4NjYtMHgyNGIxKQorLCgweDFlZTcrNjc1LTB4MjEwZSl9LHsoMHg1NDErNTQ1MS0weDFhNGIpLCgweDU4OSs2MjE0LTB4MWQwZSl9LHsKKygweGE1Yis2MzcwLTB4MjJmNCksKDB4MzgwKzIyMS0weDM5MCl9LHsoMHgxYTIrMTI2OS0weDY0OCksKDB4MTJkZis0MzIzLTB4MjJlZil9CisseygweDVhYys3NzkyLTB4MjNjNyksKDB4NWJjKzQ2MTAtMHgxNmU0KX0seygweDIwNzQrMTIzOS0weDI0ZWEpLAorKDB4OGM2KzYyMTQtMHgyMDJiKX0seygweDE2YWYrMTczNi0weDFkMTIpLDgzNjR9LHsoMHgxNTk2KzQ1NDYtMHgyNmVmKSwKKygweDEwNzgrMjA5Ni0weDE3YmIpfSx7KDB4MzM1KzQ4ODQtMHgxNWRhKSwoMHg0ZjgrNTU0NS0weDE5YWUpfSx7CisoMHg1YzgrNTc2OC0weDFiZGIpLCgweGY3MCs0Nzk0LTB4MjEzMCl9LH07Y29uc3QgdW5zaWduZWQgc2hvcnQgCitVY3MyX1RvX0dzbTdfU1BBTklTSF9UYWJsZV9VQ1NbXVsoMHhlZDArMjEzMy0weDE3MjMpXT17eygweDJiNCs0MDUxLTB4MTI3NyksCisoMHgxOTBkKzM1MzctMHgyMzRhKX0seygweGM2YysxOTQzLTB4MTNmMSksKDB4ZWFhKzMyNzItMHgxN2NjKX0seworKDB4MjIyKzUzNDYtMHgxNmYxKSwoMHg0MDgrMjMzMi0weDk5MSl9LHsoMHhmZGMrNDMwLTB4MTE3NiksKDB4MjQyZis4NTEtMHgyM2U3KX0KKyx7KDB4MjAzNCszOC0weDIwNDUpLCgweDg2Zis1NTUzLTB4MWE3Nyl9LHsoMHhiYys2NDcyLTB4MTllZSksCisoMHgxZDQ5Kzk2MC0weDFkNjkpfSx7KDB4ODFkKzQ4NjQtMHgxYjA2KSwoMHhhZWMrNzc5OS0weDI1YmIpfSx7CisoMHgxNGMwKzE0NDQtMHgxYTRjKSwoMHgxNDJjKzQ5NzItMHgyM2Y1KX0seygweDg4OSszODQ2LTB4MTc3NiksCisoMHhhMDUrMjY0NC0weDEwYzEpfSx7KDB4YTU0KzYzOTYtMHgyMzM2KSwoMHgxMGRhKzU3NTEtMHgyM2IzKX0sfTtjb25zdCB1bnNpZ25lZAorIGNoYXIgVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW109e05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgzNDUrMTY3Ni0weDljNyksTk9OX0dTTSxOT05fR1NNLAorKDB4YmIrNjM2MS0weDE5ODcpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4Nzk5KzQ5MzAtMHgxYWQxKSxOT05fR1NNLE5PTl9HU00sKDB4NmU0KzMyNjMtMHgxMzk2KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MzliKzIxMjEtMHhiYzQpLCgweGJjYis1OTc5LTB4MjMwNSksCi0oMHgxMDRkKzg4NS0weDEzYTApLCgweDExOGIrNDMyLTB4MTMxOCksKDB4MWM3OCs4NjAtMHgxZmQyKSwoMHhhOWQrNjI0NC0weDIyZGMpLAotKDB4MTRkMisyMjAzLTB4MWQ0NyksKDB4MjhhKzM2MjgtMHgxMDhmKSwoMHhhNDYrNjc5OC0weDI0YWMpLCgweGMzZCs1MTM5LTB4MjAyNykKLSwoMHgxZjZmKzE3MC0weDFmZWYpLCgweDIzZTIrNjAxLTB4MjYxMCksKDB4ZjIzKzMxMTgtMHgxYjI1KSwKLSgweDFhMGYrMTY0MC0weDIwNGEpLCgweDkwYisyMzE2LTB4MTFlOSksKDB4YWMwKzkyOC0weGUzMSksKDB4MTNlNys0MTAyLTB4MjNiZCksCi0oMHhkYTUrNTk1OS0weDI0YmIpLCgweDU3Mys4NDY5LTB4MjY1NiksKDB4ZjYyKzM1MDMtMHgxY2RlKSwoMHgxMjA3KzI0NjctMHgxYjc2KQotLCgweDlkMSsxNTA0LTB4ZjdjKSwoMHg0ODMrMjc0NS0weGYwNiksKDB4MTFiMCs4NjAtMHgxNGQ1KSwoMHhiNzArNjEyOS0weDIzMjkpLAotKDB4ZjUwKzE3MjktMHgxNWQ4KSwoMHgxMDFkKzM3NDktMHgxZTg4KSwoMHg3OGYrMjY5Ni0weDExZGMpLCgweDcwOSsyNDE0LTB4MTAzYikKLSwoMHgxNDgzKzE1NDItMHgxYTRjKSwoMHgyMmFjKzkzMC0weDI2MTApLCgweDZhMis1NjM2LTB4MWM2NyksCi0oMHgxZWYwKzEzOTktMHgyNDY3KSwoMHg0NmErNDk4NS0weDE3YTIpLCgweDgzNys2NzYwLTB4MjI1ZCksKDB4NzA3KzI2MDYtMHgxMGYyKQotLCgweDEyZGIrMjUxMC0weDFjNjUpLCgweDFlNDMrMTAzOC0weDIyMGMpLCgweDRiMCs4NzU0LTB4MjY5YyksCi0oMHhjMjgrNDY3Ni0weDFlMjUpLCgweGEzNCsyMjI5LTB4MTJhMSksKDB4MTI1MCsyNDU4LTB4MWJhMSksCi0oMHgxOWY1KzE4ODMtMHgyMTA2KSwoMHhjZTIrNTU2MC0weDIyNGYpLCgweDExM2IrNDcxLTB4MTJjNiksKDB4NDkzKzI5MTEtMHhmYTUpLAotKDB4NTU5Kzg1MDgtMHgyNjQ3KSwoMHgxYmUxKzIzNzYtMHgyNGRhKSwoMHgxNDdmKzM0NjktMHgyMWJjKSwKLSgweDE1NTMrNDUzOS0weDI2YmQpLCgweDIyNGQrMzMzLTB4MjM0OCksKDB4NGYyKzI5ODYtMHgxMDQ5KSwoMHg1NTgrNzQyNy0weDIyMDcpCi0sKDB4MzU1Kzk4OS0weDZkZCksKDB4ZTMrMzQ0NC0weGUwMSksKDB4ZWM4KzIwOTEtMHgxNjljKSwoMHg5YzgrNDQ4Ni0weDFhZjYpLAotKDB4MTFhZCsxOTItMHgxMjE0KSwoMHhiNWQrMzgwLTB4YzdmKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4NjkyKzY5MDQtMHgyMTc5KSxOT05fR1NNLCgweDE4OGMrMjc1MC0weDIyZTkpLCgweDdlYys1NTY2LTB4MWQ0OCksCi0oMHg0YzQrNTE3NS0weDE4OTgpLCgweGE1MCs3NDQwLTB4MjZmYyksKDB4MzhmKzEwMjItMHg3MjgpLCgweGZkZis1MzY1LTB4MjQ2ZSksCi0oMHg4MCs0MjkxLTB4MTBkYyksKDB4MTlkMysxNzc5LTB4MjA1ZSksKDB4NzUrMTEzMi0weDQ3OCksKDB4MWY5KzYzMTMtMHgxYTM4KSwKLSgweDQ3Mis3MjAyLTB4MjAyOSksKDB4MTRhMCsxNTU2LTB4MWE0OCksKDB4MjRkKzc4ODgtMHgyMGIwKSwoMHgyNmFjKzE3NC0weDI2ZWMpCi0sKDB4MTI3OSsxMzIwLTB4MTczMiksKDB4MTk5ZisyODQxLTB4MjQ0OCksKDB4MTYzMys2NjEtMHgxODU3KSwKLSgweDE2NTArNzk0LTB4MThmOCksKDB4ODFiKzM5NS0weDkzMyksKDB4ZDJiKzUwNzAtMHgyMDg1KSwoMHg2ZDYrMzM0NS0weDEzNzIpLAotKDB4MWE3YysyOTUyLTB4MjU4ZSksKDB4ZDI3KzUxNTQtMHgyMGQyKSwoMHhjZDArNjYyMy0weDI2MzcpLCgweGEyNSs1ODA4LTB4MjA1YykKLSwoMHhlMTgrNDU1My0weDFmNjcpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLCgweGRkNCsyMTk3LTB4MTY0OSksKDB4NzY5KzQyNTEtMHgxN2UzKSwoMHhiMWErMjkyNS0weDE2NjUpLAorKDB4NzE4KzQ2MjQtMHgxOTA1KSwoMHgxMjg2KzIxODYtMHgxYjBlKSwoMHg0YzgrMTI5NC0weDliMSksKDB4MTNkNis0MjM5LTB4MjQzZikKKywoMHg0Y2IrNjI1My0weDFkMTEpLCgweDFlMTYrMTUxNS0weDIzZDkpLCgweDRhYys0OTE2LTB4MTdiNyksCisoMHgxMmJkKzQyNzEtMHgyMzQyKSwoMHg1NzErNTM1NS0weDFhMzEpLCgweGYwNCsyMTM5LTB4MTczMyksCisoMHgxMzk4KzQ1MjEtMHgyNTE0KSwoMHgyYTIrNzI4Mi0weDFlZTYpLCgweDE5OTMrNjY1LTB4MWJmZCksKDB4MTJkMCs1NjAtMHgxNGQwKQorLCgweGE5MCszNjcyLTB4MThiNyksKDB4MWRlYSsxNTc2LTB4MjNlMCksKDB4MTM4MisxOTE3LTB4MWFjYyksCisoMHgxMGZhKzQ3MzgtMHgyMzQ4KSwoMHhiNDMrNjEzOC0weDIzMDgpLCgweDE1ODQrMzUwNS0weDIyZmYpLAorKDB4ZGI4KzMwNTYtMHgxOTcxKSwoMHg2OWErMjU5MC0weDEwODApLCgweGYwOCszMDg0LTB4MWFkYiksKDB4N2Q3KzczMTAtMHgyNDJiKSwKKygweDZhMCsxMDIyLTB4YTYzKSwoMHgxNjUwKzI2NjYtMHgyMDdlKSwoMHgxZDQrNjQxOS0weDFhYWEpLCgweDI1Mis3OTA3LTB4MjBmNyksCisoMHgxZDY2KzI1MDEtMHgyNmVjKSwoMHgzMTkrOTgzLTB4NmYwKSwoMHgxMzRmKzI0OTUtMHgxY2NkKSwoMHg0N2ErMjUzNi0weGUyMCksCisoMHg2OGMrNTE3LTB4ODRlKSwoMHgxNzE0KzMxMDQtMHgyMmYwKSwoMHhjZDQrNTExNi0weDIwOGIpLCgweDE3YmErMjk3My0weDIzMTEpLAorKDB4MjA2Mis3MzAtMHgyMmY1KSwoMHgyMDI3KzE3ODYtMHgyNmQ5KSwoMHgyMDNiKzkyLTB4MjA0ZSksKDB4MTgyOCs5MzQtMHgxYjg0KSwKKygweGJkMys0Njc2LTB4MWRjYyksKDB4MTM4KzYzNjItMHgxOWM2KSwoMHgzOGYrNDQ0MC0weDE0OWEpLCgweDE5ZmIrNDA5LTB4MWI0NiksCisoMHhiYzMrMzU5LTB4Y2RiKSwoMHgxYmI1KzEzMzMtMHgyMDlhKSwoMHhjNjcrMzg2MC0weDFiMmEpLCgweDJmMSs4MTM1LTB4MjI2NiksCisoMHgyM2YrNTAyMS0weDE1ODkpLCgweDEyNDcrMjY4Ni0weDFjNzEpLCgweGU3Nys2MjcxLTB4MjZhMSksCisoMHgxYjNhKzE2OTctMHgyMTg1KSwoMHg3YmYrNDY2OC0weDE5YTQpLCgweDEwZWMrNTI1OC0weDI1MWUpLAorKDB4MWJlMisxMzI5LTB4MjBiYSksKDB4MTE5NisxNDMyLTB4MTZkNCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKKygweGM3NSs0NTU2LTB4MWUzMCksTk9OX0dTTSwoMHgxNjY3KzM4NDMtMHgyNTA5KSwoMHgxNjFiKzExMjYtMHgxYTFmKSwKKygweDExZDErMzgxNS0weDIwNTUpLCgweDE4M2MrMjk4Ni0weDIzODIpLCgweDE4NSs2OTgwLTB4MWM2NCksCisoMHhjNjErNTQzNC0weDIxMzUpLCgweDE5ZmErMjI3LTB4MWE3NiksKDB4YTljKzMyNzQtMHgxNmZlKSwoMHgxMmUzKzM2MS0weDEzZTMpLAorKDB4MWI5YisyNTMxLTB4MjUxNCksKDB4MTE4YSsxODQzLTB4MTg1MiksKDB4MjI0Nis1NTMtMHgyNDAzKSwKKygweDEwNjgrNDI2Ny0weDIwYTYpLCgweGQ1YysxNzg4LTB4MTNlYSksKDB4MWRhKzk1NTctMHgyNmMwKSwoMHgzOGYrNTY4OC0weDE5NTcpCissKDB4ODBkKzMwNjEtMHgxMzkxKSwoMHgxNzk5KzI5NzAtMHgyMmMxKSwoMHg5YzErNjE3MS0weDIxNjkpLAorKDB4MTQwZiszMzU4LTB4MjBiOSksKDB4YjQ3KzE0OS0weGI2NyksKDB4NWY0KzU4MTktMHgxYzM5KSwoMHgxNDlmKzE1ODUtMHgxYTU5KSwKKygweDE0Yys2NTcxLTB4MWE3ZiksKDB4M2ZjKzEwNDctMHg3OWEpLCgweDYzOSs2MDQyLTB4MWQ1OSksTk9OX0dTTSxOT05fR1NNLAogTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4OWZkKzU0NzgtMHgxZjQ4KSwoMHg3Yis0MzU1LTB4MTEzZSksTk9OX0dTTSwoMHg4ZWYrMTk5Ni0weDEwYmEpLAotKDB4ZDAxKzExNjctMHgxMTZjKSwoMHgzN2IrMjEyNi0weGJjNiksTk9OX0dTTSwoMHgxNGI2Kzc2Mi0weDE3NTEpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTc2MCs1MjItMHgxOTRmKSwoMHg0YTErMjA2Mi0weGM2ZiksCitOT05fR1NNLCgweGEyOCs0NjU3LTB4MWM1OCksKDB4Mjk2Kzc1OTctMHgyMDFmKSwoMHg3YzMrMjE3OC0weDEwNDIpLE5PTl9HU00sCisoMHhlMTYrMzY3NS0weDFjMTIpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4NDAzKzI4NzEtMHhlZGEpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxMzQzKzI5MTktMHgxZTRmKSwoMHgxODYrMjE1MS0weDlkZiksCisoMHgxYjkxKzIzMTMtMHgyNDdlKSwoMHgxMWMxKzUyMDgtMHgyNjEwKSxOT05fR1NNLCgweDE4ZDMrMzA4Ni0weDI0YzIpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgyZDYrODE2MC0weDIyNTkpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHhiNTUrNDYwNi0weDFjZjcpLE5PTl9HU00sKDB4MTBkOSs0NzQ0LTB4MjM1NiksTk9OX0dTTQorLE5PTl9HU00sTk9OX0dTTSwoMHhjNDQrMjY3LTB4Y2YxKSxOT05fR1NNLE5PTl9HU00sKDB4NjUwKzM4Ni0weDdiNCksCisoMHgxNGY1KzEyNDItMHgxOTUwKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHhhNmErNzI0MS0weDI2MzgpLAorKDB4MTg0NisxMDktMHgxOGE0KSwoMHg0MDQrNjcxLTB4Njg2KSxOT05fR1NNLCgweGU3YiszNDMxLTB4MWJkZSksCisoMHgxYyszMDY3LTB4YzEyKSxOT05fR1NNLE5PTl9HU00sKDB4MTQyOCszODA0LTB4MjJmZCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLCgweDJiNSsyMzc2LTB4YjgwKSwoMHg2MjkrMTQxMy0weGJhNiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCisoMHgxMDM1KzExNjAtMHgxNDQxKSxOT05fR1NNLCgweDExNTErNTE1NS0weDI1NjgpLCgweDdiMCs3MjA4LTB4MjNkMiksTk9OX0dTTSwKK05PTl9HU00sKDB4MWMwKzQzNzAtMHgxMjU0KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTX07Y29uc3QgdW5zaWduZWQgc2hvcnQgCit6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4MjQxYSsxODUtMHgyNGQxKV09e3sKKygweDZhNiszMzExLTB4MTM5MCksKDB4MWE5ZCsxMTQtMHgxYTI1KX0seygweDExYzYrNTI5MS0weDI2NjgpLAorKDB4MTc2NSs1MDMtMHgxODc1KX0seygweGJmNysxNzIyLTB4MTJhNyksKDB4MmU0KzI1MTctMHhjYWQpfSx7CisoMHg3ODkrMzIzMy0weDE0MWYpLCgweDVkMCsyNjk5LTB4Zjg3KX0seygweDEzZDkrMTc0NS0weDFhOWUpLAorKDB4MWIwYSsxNjgwLTB4MjBhNil9LHsoMHhlY2MrMTM3MS0weDE0MWEpLCgweGRkNys0NjQxLTB4MWZlYil9LHsKKygweGRmNSsyNzY2LTB4MThiNSksKDB4ODE3KzI0MTItMHgxMGMyKX0seygweDU0OCs3NzA3LTB4MjM1NCksCisoMHgxYjVmKzMxMTgtMHgyNmFjKX0seygweDE1MSszNzI0LTB4ZmNiKSwoMHg0MzQrMjE1MS0weDhmNSl9LHsKKygweDZlZis0NjgyLTB4MTkyNiksKDB4YzNiKzM5NzYtMHgxODMwKX0seygweDE2ZTQrMTY2LTB4MTc3NiksCisoMHhiZDIrMzYxNi0weDE5OTQpfSx7KDB4MTI2Zis0MTEwLTB4MjI2OCksKDB4YTYzKzIwNjYtMHhlY2MpfSx7CisoMHgxY2RhKzg5NC0weDIwNDIpLCgweDE4ZDcrOTE3LTB4MThjYyl9LHsoMHgxNWNjKzE4MjctMHgxY2Q4KSwKKygweDEyNjQrMjQ2NC0weDE4NWMpfSx7KDB4MzNhKzkxMzUtMHgyNmQxKSwoMHg0N2ErNjQzNy0weDE5ZmMpfSx7CisoMHg5MmQrNDYxMy0weDFiMTkpLCgweDkyMys3OTI4LTB4MjQ4Myl9LHsoMHhmZTMrMTE0My0weDE0M2IpLAorKDB4OTAzKzM5MTctMHgxNzg2KX0seygweDE1NmQrNDI0Mi0weDI1ZDcpLCgweGFlZCs1MTQ4LTB4MWU4ZSl9LHsKKygweDY5YisyOTgwLTB4MTIxNiksKDB4ZDM4KzM2NDYtMHgxYWY5KX0seygweDIwZjIrNTY1LTB4MjJmOCksCisoMHg0MzcrNzI5NS0weDIwNWEpfSx7KDB4NDAyKzYyODItMHgxYzUwKSwoMHgyODYrMjk5OS0weGRlMil9LHsKKygweDM0Nis3OTE2LTB4MjFmNSksKDB4Njc5KzYyMDctMHgxZTNhKX0seygweDc4Mys1MjYwLTB4MWJkMSksCisoMHgxYTNiKzIyMDgtMHgyMjdlKX0seygweGJmYisyNjU3LTB4MTYxYyksKDB4NTk1KzY1ODEtMHgxZWNlKX0seworKDB4MTgyKzU3MTktMHgxNzk4KSwoMHgxMGZkKzU3NjEtMHgyNmJlKX0seygweDFmNjMrNTAzLTB4MjExMSksCisoMHhjZGYrNjAwMC0weDIzODIpfSx7KDB4NmQ2KzE3NTUtMHhkNjIpLCgweDE2MzcrMzg5OS0weDI0OWYpfSx7CisoMHgyNDk1Kzk1LTB4MjQ5ZiksKDB4MTAxMCsyMjAxLTB4MTdjZil9LHsoMHhhYjUrNDczMy0weDFjZDcpLCgweGVkZCs1MDMtMHgxMDExKQorfSx7KDB4NTRiKzIwNzQtMHhkMDkpLCgweDFmNzErMTkxNi0weDI2MTgpfSx7KDB4N2Y1KzY1NjQtMHgyMTM4KSwKKygweGY3NyszNjAyLTB4MWNjNyl9LHsoMHgxMTUrNjcxOC0weDFhZWUpLDgzNjR9LHsoMHhlNmErMzY4NC0weDFjNjUpLAorKDB4MTM3Yis1MjgtMHgxNDllKX0seygweGE0Zis2NjU2LTB4MjNlMCksKDB4NGExKzcxMzgtMHgxZjkwKX0seworKDB4MTQwOCs0MTUwLTB4MjNjOSksKDB4MWMxNCsyMjA4LTB4MjNiYSl9LHsoMHhlYTcrNDY5Mi0weDIwODApLAorKDB4MTQ4NysxMTg2LTB4MTg0Nil9LHsoMHgxZmU5KzE3MjktMHgyNjJlKSwoMHg1MTcrNDE4MS0weDE0NzcpfSx7CisoMHgxNWNiKzI5MzUtMHgyMGMzKSwoMHg0OTQrNDM1Ny0weDE0YjcpfSx9O2NvbnN0IHVuc2lnbmVkIHNob3J0IAorVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTW11bKDB4MWQ1OSsxNTM4LTB4MjM1OSldPXt7KDB4MjM5Zis3MzgtMHgyNjcxKSwKKygweDE1OTgrMjcyNS0weDFjYTkpfSx7KDB4NTM4Kzg1ODQtMHgyNmFiKSw4OTI5fSx7KDB4YjdhKzk1Ny0weGYxZiksODM2NH0seworKDB4NzdhKzc1MTctMHgyNDcyKSwoMHgyMzA3KzY2NDItMHgxYzRkKX0sfTtjb25zdCB1bnNpZ25lZCBjaGFyIAorVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW109e05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHhhZjgrMjc2OS0weDE1YmYpLE5PTl9HU00sTk9OX0dTTSwKKygweDdiNCszNzk5LTB4MTY3ZSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLCgweGExZCs0NTI0LTB4MWJhOSksKDB4YzM3KzY1ODEtMHgyNWNiKSwoMHgxYWU1KzIwNzctMHgyMmUwKSwKKygweDJhZis5MTk0LTB4MjY3NiksKDB4ZjA1KzQ1NTctMHgyMGQwKSwoMHgyMDMrNTc1LTB4NDFkKSwoMHgxMWYrMzkzMC0weDEwNTMpLAorKDB4YzliKzgzMi0weGZiNCksKDB4ZGRiKzU0NDAtMHgyMmYzKSwoMHgyNDYrMzIyOS0weGViYSksKDB4YjNjKzEzMDItMHgxMDI4KSwKKygweDEyN2YrMTM0Ni0weDE3OTYpLCgweDE2YTkrNDQwLTB4MTgzNSksKDB4MzNhKzkxMDYtMHgyNjlmKSwKKygweDFlYmErMTE3OC0weDIzMjYpLCgweGZhYyszNTAxLTB4MWQyYSksKDB4MTQxNis0NDczLTB4MjU1ZiksCisoMHg2NGMrNTc4OC0weDFjYjcpLCgweDE0ZGIrOTk2LTB4MTg4ZCksKDB4MjQ5KzIxMTYtMHhhNWEpLCgweDE0N2MrMzgxNy0weDIzMzEpLAorKDB4MmZmKzQzMzEtMHgxM2I1KSwoMHgxNDdjKzgyNS0weDE3N2YpLCgweDZjNSs1NjQxLTB4MWM5NyksKDB4MjliKzM1MTEtMHgxMDFhKSwKKygweDU4Nys4MzE0LTB4MjVjOCksKDB4MWFlMCsxODIyLTB4MjFjNCksKDB4MTQ5NysyMzY4LTB4MWQ5YyksCisoMHgxN2M4Kzc5MC0weDFhYTIpLCgweDE2NDIrNDAwMC0weDI1YTUpLCgweDlkNCs1ODI4LTB4MjA1YSksKDB4ZmE2KzM0ODQtMHgxZDAzKQorLCgweDI1MTcrNDkxLTB4MjcwMiksKDB4M2RjKzIwNjQtMHhiYWIpLCgweDRlOCs1MDQ3LTB4MTg1ZCksKDB4MjU1KzQ4NjctMHgxNTE1KSwKKygweDk4MysyOTg3LTB4MTRlYSksKDB4NjkwKzY0NDItMHgxZjc1KSwoMHgxODU3KzQ1NC0weDE5ZDcpLCgweDE3NTQrMjI2My0weDFmZTQpCissKDB4MTgzMSszMDI5LTB4MjNiZSksKDB4ODVmKzQxNDktMHgxODRiKSwoMHgxMTA5KzQzOTEtMHgyMWU2KSwKKygweDI5NCs3NjgzLTB4MjA0YyksKDB4ZTliKzEwNDItMHgxMjYxKSwoMHhjNjYrNTgwMS0weDIyYzIpLCgweDU0KzIxMy0weGRiKSwKKygweGJmNCs3Ni0weGJmMSksKDB4MTE3NCs1NDUtMHgxMzQ1KSwoMHgxYjE4Kzg5MC0weDFlNDEpLCgweGI4MCs0MDk3LTB4MWIyZiksCisoMHgyMjQwKzExMy0weDIyNWUpLCgweDc0NSs2Mi0weDcyZiksKDB4YTI3KzI0MzMtMHgxMzUzKSwoMHgxMGM1Kzk5Ny0weDE0NTQpLAorKDB4MWUwKzYzNDctMHgxYTU0KSwoMHgxMDc4KzM1MzItMHgxZGVjKSwoMHhhYjkrMjM1MS0weDEzOGYpLCgweDY1NSsyMzc0LTB4ZjQxKSwKK05PTl9HU00sKDB4MTY2YSsxNTgtMHgxNmYxKSxOT05fR1NNLCgweDE2YzMrMjg4My0weDIxZjApLCgweDgyNys5NC0weDg3NCksCisoMHgxM2QzKzUyNi0weDE1NjQpLCgweGFiMSszOTUyLTB4MTljMCksKDB4MTEyOCs1NjgzLTB4MjZmOSksCisoMHgxMjczKzE3OTAtMHgxOTBlKSwoMHgxMWMrODcyNC0weDIyY2MpLCgweDQ4MisyMDY0LTB4YzJkKSwoMHhkMDIrMjQ3MS0weDE2NDMpLAorKDB4MjYxMCsyMzctMHgyNjk2KSwoMHg4ODArODAxLTB4YjM5KSwoMHgyMTJhKzE0NDgtMHgyNjY5KSwoMHgyNDg0KzYwMy0weDI2NzUpLAorKDB4MmQxKzY3MTEtMHgxYzlkKSwoMHgzOWQrNTY5Ny0weDE5NzIpLCgweDE3MjQrNzE2LTB4MTk4MyksKDB4MWEzOSsyODEwLTB4MjRjNSkKKywoMHhjYzkrMTgyMy0weDEzNzkpLCgweDEzNjArNDcyNy0weDI1NjcpLCgweDFjZDkrMjAxNC0weDI0NDYpLAorKDB4MTA3NisxNjcxLTB4MTY4YiksKDB4OGU3KzI2ODYtMHgxMmYyKSwoMHg4YjgrNjE3LTB4YWFkKSwoMHhjZDcrNDQxMS0weDFkOWQpLAorKDB4MTU5ZisyNDk5LTB4MWVlYyksKDB4MTExMCsyMDk1LTB4MThjOCksKDB4ZjI2KzQwNzMtMHgxZTk3KSwKKygweDEzMTYrMzc3My0weDIxNWEpLCgweDYzNisxNjc0LTB4YzQ2KSxOT05fR1NNLCgweDEzZjIrMjcyMS0weDFlNzkpLE5PTl9HU00sCisoMHgxN2QrODEyNC0weDIwZDkpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAogTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSwoMHgxNmRiKzE0NDYtMHgxYzIxKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4MWU2OSsyMjcxLTB4MjZlZCksKDB4YzArNDY4OC0weDEzMDIpLCgweDE0NWIrMjM1Ny0weDFkNzQpLAotKDB4MTkwYisxOTMyLTB4MjA4ZSksTk9OX0dTTSwoMHg4ZGQrMTYyMC0weGYxMiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweGQxMisxMzQ2LTB4MTFmNyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLSgweDFhNDQrNzAzLTB4MWNhNyksTk9OX0dTTSwoMHhmOWQrMzI5OS0weDFjNzUpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4MTlhZCsxMjc3LTB4MWU0YyksTk9OX0dTTSxOT05fR1NNLCgweGQzZis1NjUwLTB4MjMzMyksKDB4ZDc0KzUzMS0weGYwOCksCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg4MTIrMTY4OC0weGUyZiksKDB4MTg1OCs1NzItMHgxYTg1KSwKLSgweDc5YisyNTc3LTB4MTE4ZiksTk9OX0dTTSwoMHgyNWMrNjI1MC0weDFhYzIpLCgweGMxZCs0NjQ5LTB4MWU0MSksTk9OX0dTTSwKLU5PTl9HU00sKDB4OGY4KzUyOTEtMHgxZDljKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDhjNys2OTY1LTB4MjM3ZiksCi0oMHg2NTcrMTA3NS0weGE4MiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTM4OCs0ODIwLTB4MjVlMCksTk9OX0dTTSwKLSgweGRjNysyNDUzLTB4MTc1MCksKDB4MWMxOSsyNDkzLTB4MjVkMCksTk9OX0dTTSxOT05fR1NNLCgweDQyNSs2MTkwLTB4MWJkNSksCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTX07Y29uc3QgdW5zaWduZWQgc2hvcnQgCi16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4Yzk5KzYzMjctMHgyNTRlKV09e3sKLSgweGQwOCs1NjgtMHhmM2IpLCgweDEwYzcrMTI3NC0weDE0ZDcpfSx7KDB4MTNmOCsyOTA0LTB4MWY0NyksCi0oMHgxNWY1KzkwOS0weDE4OWIpfSx7KDB4N2IrMzIxMS0weGNmYyksKDB4MThlNSs3NTYtMHgxYmNkKX0sewotKDB4MWVkZis1ODktMHgyMTIxKSwoMHhhNTgrNDE0Mi0weDE5YjIpfSx7KDB4MzU2KzQxNTQtMHgxMzg0KSwKLSgweDQ0Yys5MDk2LTB4MjZlMCl9LHsoMHgxNmI2KzM2NjktMHgyNGZlKSwoMHgxZDErNzkyMy0weDIwYjcpfSx7Ci0oMHg1MTQrMjAyMy0weGNlZCksKDB4ZTY2KzM2OTQtMHgxYzEzKX0seygweDExNjkrMTI3OS0weDE2NTkpLAotKDB4MTJkYSszNTk5LTB4MjAwOCl9LHsoMHg4ODIrNjI5OS0weDIxMGIpLCgweGE5Mis2NzA2LTB4MjExZSl9LHsKLSgweDE1NzUrMzc0Ni0weDI0MDQpLCgweDUxZiszNzE3LTB4MTAxMSl9LHsoMHgyNjRjKzYtMHgyNjNlKSwKLSgweDE4NDErMzIyOS0weDI0ODApfSx7KDB4NTQ3KzI5NzktMHgxMGQ1KSwoMHgxYmMxKzIzMDktMHgyMTFkKX0sewotKDB4OTQ4KzkyMS0weGNjYiksKDB4MjMxYisxMjIzLTB4MjQ0Mil9LHsoMHgyYTcrMTQ4Ni0weDg1ZSksKDB4NjQ4Kzc2NzEtMHgyMDk3KX0KLSx7KDB4Njg5Kzc4NzgtMHgyNTM3KSwoMHgxNjNhKzQ1NjctMHgyNDZlKX0seygweDJhZCs2MDQ1LTB4MWEzMSksCi0oMHgxZjAyKzI1MjAtMHgyNTQyKX0seygweDFlMzYrMTE1My0weDIyOTgpLCgweGZmYysyMzg1LTB4MTg4Myl9LHsKLSgweDc4Yys3NDg2LTB4MjRhMiksKDB4MTNmMCsyNzgtMHgxNDhiKX0seygweDk2ZisyNDE5LTB4MTJiOSksCi0oMHgyMDhjKzU2Ni0weDIyNDUpfSx7KDB4ZDNiKzIyODItMHgxNWY2KSwoMHhlMjErNDQyNS0weDFmMGUpfSx7Ci0oMHgxMDM3KzUxMjMtMHgyM2ZlKSwoMHgxNzRkKzEtMHgxNmYzKX0seygweGI1NCsyNDIwLTB4MTQ4YiksKDB4Yzg0KzE3MTAtMHgxMmI0KQotfSx7KDB4YmI0KzIyMC0weGM1MiksKDB4MTQwNSs4MzEtMHgxNmU3KX0seygweGM1Yis1NzE2LTB4MjI2ZiksCi0oMHgxZjcrNzQyMy0weDFlN2EpfSx7KDB4MTE0YSszNzE3LTB4MWY4ZSksKDB4ZjBkKzI2NjAtMHgxOGIxKX0sewotKDB4MjMyOCs5OTAtMHgyNmJkKSwoMHgxNzBjKzUyMi0weDE4NDkpfSx7KDB4ZTU1KzM4ODAtMHgxZDJlKSwKLSgweDIyOCs1MTM4LTB4MTU2Nyl9LHsoMHg4MWQrMTQ0Ny0weGQ2ZiksKDB4N2E1KzQ1MDEtMHgxODYwKX0sewotKDB4OWMyKzQyOTktMHgxYTMyKSwoMHgxYzQrMzQ5LTB4MjVlKX0seygweGM3OSs1NjA0LTB4MjIwMSksKDB4Y2RjKzUyODItMHgyMGE5KX0KLSx7KDB4MmIyKzEzNzQtMHg3YWYpLCgweDhkMys3NzQzLTB4MjY1MCl9LHsoMHhjMDErMjU0OS0weDE1OTEpLAotKDB4MjJiNCs2Njk5LTB4MWMzMyl9LHsoMHgxMDcrNTI0OC0weDE1MWUpLCgweGVkYSs2MDkwLTB4MjViNyl9LHsKLSgweDFmYjgrMTY2MC0weDI1YzUpLCgweDIwZCszNTY4LTB4ZjBhKX0seygweDRlMis2NzA1LTB4MWU5ZSksCi0oMHhhMDQrNDEwMi0weDE5MTApfSx7KDB4OWUwKzUyMzctMHgxZGRhKSwoMHgyMWQ4KzczLTB4MjEzZSl9LHsKLSgweDFjZCs4NDk2LTB4MjI4MSksKDB4ZjRiKzYwNzEtMHgyNjBkKX0seygweDNmZCszNjY3LTB4MTFkMSksCi0oMHgxYTRkKzExMzktMHgxZGRlKX0sfTtjb25zdCB1bnNpZ25lZCBzaG9ydCBVY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9VQ1NbXQotWygweGIyYysxMTU5LTB4ZmIxKV09e3soMHg4NGYrMTQzNC0weGRkOSksKDB4MTExNCsyOTk2LTB4MTkzNCl9LHsKLSgweDU1NisyNzEzLTB4ZmRhKSw4OTI5fSx7KDB4MTI3NCsyMjU1LTB4MWIyYiksODM2NH0seygweDE5OGErMzQ4OC0weDI2YzUpLDgzNjR9Ci0sfTtjb25zdCB1bnNpZ25lZCBjaGFyIFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX0FTQ1tdPXtOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHhkMTkrMTMxLTB4ZDkyKSxOT05fR1NNLE5PTl9HU00sKDB4ZTJmKzQ1MjAtMHgxZmNhKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDcyMysyNjI5LTB4MTE0ZCksTk9OX0dTTV9QLAorTk9OX0dTTSwoMHg4MGMrNzU4NS0weDI1YWMpLE5PTl9HU01fUCwoMHg2MCs2NTM5LTB4MTllOCksTk9OX0dTTSwKKygweDc2NisyODg2LTB4MTI0ZCksTk9OX0dTTSxOT05fR1NNLCgweDE1NzYrOTMxLTB4MTkwNyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sKDB4MWI2Mys0MTItMHgxY2RiKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweGY2NysyNzMzLTB4MTlmNCksKDB4NjRkKzQyNzItMHgxNmRjKSwKLSgweGZhMCs1OTI0LTB4MjZhMiksKDB4MTU1MysyMTk0LTB4MWRjMiksKDB4ZGZkKzMxMjUtMHgxYTMwKSwoMHg0YjkrMzUzNy0weDEyNjUpCi0sKDB4NmJjKzY2Ny0weDkzMSksKDB4MWE1ZisxODk0LTB4MjE5ZSksKDB4Y2NmKzE5OTktMHgxNDc2KSwoMHgyZGIrNDkzMi0weDE1ZjYpLAotKDB4MWM2OSsyMTc2LTB4MjRiZiksKDB4YmM1KzY4NDYtMHgyNjU4KSwoMHgxNTU2KzQ0NzEtMHgyNmExKSwKLSgweDEwMTIrMjkzMS0weDFiNTgpLCgweDE1MDIrMTY0MS0weDFiM2QpLCgweDc3YyszNTkxLTB4MTU1NCksKDB4YmQrNzE2My0weDFjODgpCi0sKDB4MTE2NiszNjItMHgxMjlmKSwoMHhmNGMrNjAwLTB4MTE3MiksKDB4NjcrNzI4Mi0weDFjYTYpLCgweDE1NjUrMjgwMC0weDIwMjEpLAotKDB4NTEyKzQ5NDQtMHgxODJkKSwoMHg3MWIrNDY0Mi0weDE5MDcpLCgweDdjMCsyMDUxLTB4ZjhjKSwoMHgyMjljKzQ5OC0weDI0NTYpLAotKDB4OGYzKzUyNDAtMHgxZDMyKSwoMHgxMzU1KzM4NjgtMHgyMjM3KSwoMHgzMjkrNDc3NS0weDE1OTUpLAotKDB4MTY4NysxMDc3LTB4MWE4MCksKDB4ZmFkKzU4MTQtMHgyNjI2KSwoMHg2NWIrMzI0OC0weDEyY2QpLCgweDIzMjUrNzItMHgyMzJlKSwKLSgweDEwZTQrNTk1LTB4MTMzNyksKDB4OTczKzQwNTgtMHgxOTBjKSwoMHgxYTA4KzE1NzgtMHgxZmYwKSwoMHgxOTEwKzYzMC0weDFiNDMpCi0sKDB4ODc3Kzc2MzktMHgyNjBhKSwoMHg1ZGQrNTM4OS0weDFhYTUpLCgweDE1YjErMzg4Ni0weDI0OTkpLAotKDB4MTY2NisyNzU4LTB4MjBlNSksKDB4MWYyKzIyMzEtMHhhNjEpLCgweDEwOTgrMjI4LTB4MTEzMyksKDB4NjAwKzM2ODUtMHgxNDFiKSwKLSgweGQxOCsxNzkyLTB4MTNjZCksKDB4NGYwKzcxNjgtMHgyMGE0KSwoMHg4MWMrNjMxNC0weDIwNzkpLCgweDQ0YSsxMzQyLTB4OTNhKSwKLSgweDEyZDErMTUyMi0weDE4NzQpLCgweDI1MzUrMjc4LTB4MjVmYiksKDB4NGM0KzY2ODgtMHgxZTkzKSwoMHhhNGIrMzgwMi0weDE4ZDMpCi0sKDB4NjUwKzMxMjAtMHgxMjJkKSwoMHg5ZjMrNTA5NS0weDFkODYpLCgweDEzYjMrODM4LTB4MTZhNCksKDB4OTEyKzE2NzktMHhmNGIpLAotKDB4ZjArNTExNi0weDE0OTUpLCgweDhmMCs2MzYyLTB4MjE3MiksKDB4NTg2KzEyMzUtMHhhMDApLCgweDEwMzUrNDkyMy0weDIzMTYpLAotTk9OX0dTTSwoMHg5MDgrMTEwNC0weGQ0MSksTk9OX0dTTSwoMHgyMjIwKzY1MS0weDI0OTUpLCgweDFmYjcrMTYwNC0weDI1ZWEpLAotKDB4MzNjKzE5OTItMHhhODcpLCgweGM2OCszNTM2LTB4MTlkNyksKDB4NTMyKzI5NS0weDVmNyksKDB4MTNkOCsxNzAwLTB4MWExOSksCi0oMHgyZmErNDc3NS0weDE1M2QpLCgweDE1ZmMrNDM3MC0weDI2YTkpLCgweDY0YysxMzkzLTB4YjU3KSwoMHgxNjY5KzExNTUtMHgxYTg1KQotLCgweDE1OTArMjUwMy0weDFlZWYpLCgweDVhOSsyNDE2LTB4ZWIwKSwoMHgyODYrNjIxMC0weDFhNWUpLCgweGIwYis0NjY2LTB4MWNkYSkKLSwoMHg1ZjkrNTY5OS0weDFiZDApLCgweDdmNiszMzgtMHg4ZGIpLCgweDE3NGQrMjM3Mi0weDIwMjMpLCgweDE0MzIrMzA1OC0weDFmYjUpCi0sKDB4M2EzKzg2NjEtMHgyNTA4KSwoMHhmYTQrMjkyMS0weDFhOWMpLCgweDExY2QrMTI0MC0weDE2MzMpLAotKDB4MzYzKzc1NDktMHgyMDZkKSwoMHgxMTA3KzUwODYtMHgyNDcxKSwoMHg2MTQrMjQyMS0weGYxNCksKDB4MTZkYisxMzQxLTB4MWJhMikKLSwoMHg4ODcrNDUzNy0weDE5YzkpLCgweDFmZjgrMzY0LTB4MjBlYyksKDB4ZjJhKzQyNzQtMHgxZjYzKSwoMHg4MDArMTUzMy0weGQ4MyksCi1OT05fR1NNLCgweGZiNCszNDk2LTB4MWQ0MiksTk9OX0dTTSwoMHhjNyszMzM5LTB4ZDcyKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKKygweGFlYisyNDI1LTB4MTQ1MCksKDB4OTdkKzI2NjctMHgxM2RhKSwoMHgxNDgzKzI1OS0weDE1NmEpLCgweDlmMyszNjQ5LTB4MTdkOSksCitOT05fR1NNX1AsTk9OX0dTTV9QLE5PTl9HU01fUCwoMHgyNWYrODczOC0weDI0NmUpLE5PTl9HU00sKDB4MWQ0ZisyNDg3LTB4MjZlNyksCisoMHgxNDdmKzQ1NzEtMHgyNjNjKSxOT05fR1NNLE5PTl9HU00sKDB4Mzc0KzExNDUtMHg3YWQpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTV9QLE5PTl9HU00sKDB4MjcrOTM0NC0weDI0OGUpLCgweDEzYWYrMzEyNC0weDFmZDgpLCgweDlmOCs2MTk3LTB4MjFkMSksCitOT05fR1NNX1AsTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTSwoMHgxODJkKzM3MDEtMHgyNjQ1KSxOT05fR1NNLAorKDB4ZTIrMTM3MC0weDVkZSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU01fUCwoMHhlMjUrMTg0LTB4ZTVlKSwKKygweDg4YSs0MDMzLTB4MTgzYyksKDB4OGY1KzcyNjEtMHgyNTM1KSwoMHgxMTRhKzM5MDEtMHgyMDBjKSxOT05fR1NNX1AsTk9OX0dTTV9QCissTk9OX0dTTV9QLCgweDE5MDMrMTUxMS0weDFlZTEpLE5PTl9HU01fUCwoMHg2MDErNTg1MS0weDFjZDcpLAorKDB4YmFkKzU0ODQtMHgyMTE1KSxOT05fR1NNLE5PTl9HU01fUCwoMHgxMzYrNDcxNi0weDEzOWIpLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTV9QLE5PTl9HU01fUCwoMHhkZGIrMzkzNi0weDFkMzMpLCgweGQxYyszNjIyLTB4MWIzNiksCisoMHgxNzkrMzA5NC0weGQxMyksTk9OX0dTTV9QLE5PTl9HU00sTk9OX0dTTV9QLE5PTl9HU01fUCwoMHhjMmMrMzQxMS0weDE5NzkpLAorTk9OX0dTTSwoMHgxY2RjKzE5MDMtMHgyM2NkKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTX07Y29uc3QgdW5zaWduZWQgc2hvcnQgCit6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtdWygweDgwYyszMzc2LTB4MTUzYSldPXt7KDB4ZDcyKzQ4MjctMHgyMDQzKQorLCgweDIzMSs3OTQwLTB4MjEyOSl9LHsoMHgxMGQxKzEzOTMtMHgxNjJlKSwoMHgxNTgrNDY3Ny0weDEzM2YpfSx7CisoMHhlNjArODI1LTB4MTE3MSksKDB4YWZmKzIwNjktMHgxMjk5KX0seygweGNmNis0MTczLTB4MWQxYSksCisoMHgxMDgxKzU4ODAtMHgyNmZjKX0seygweDI0MzMrMzU3LTB4MjU2OSksKDB4OGQ2KzIxNTQtMHgxMGU0KX0seworKDB4MTY2MiszMDcwLTB4MjIyNCksKDB4MWQ2NisxMDkxLTB4MjE0ZSl9LHsoMHg3ZTkrNDU4Mi0weDE5OTIpLAorKDB4MTVmYys4NzktMHgxOGVkKX0seygweDExMDErMjU2MS0weDFhYzQpLCgweDg3YysyMDQyLTB4MTAxOSl9LHsKKygweGVhYysyNjA4LTB4MTg5YyksKDB4MTI2ZCs0Njc4LTB4MjQzNyl9LHsoMHgxMTdmKzMzNTgtMHgxZTM4KSw4MzY0fSx9O2NvbnN0IAordW5zaWduZWQgc2hvcnQgVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbXVsoMHg3Yis4ODgtMHgzZjEpXT17eworKDB4NDM0KzM0MzItMHgxMThjKSwoMHgxNDg1KzU0MjUtMHgyNjIyKX0seygweGM5NCs0NDY4LTB4MWRmNiksCisoMHgxMTQ3KzQxMTctMHgxZGI2KX0seygweDE0ZTArMzM2Ni0weDIxZjMpLCgweDUyNis4NDEyLTB4MjI2Zil9LHsKKygweDRlMCs4NzYyLTB4MjcwNiksKDB4ZDEyKzU5MTgtMHgyMDk1KX0seygweDExMjQrMjg4MC0weDFjNGYpLAorKDB4NDZhKzE5MDktMHg4MzYpfSx7KDB4MTIyNCsyOTg0LTB4MWRiNiksKDB4MWM1Nys5NjctMHgxYzdlKX0seworKDB4ZDAxKzMwMTgtMHgxOGI0KSwoMHhhYjErNjU0Ni0weDIwOWIpfSx7KDB4MTUwNCsyMzI0LTB4MWUwMCksCisoMHgxNzAzKzEzNjctMHgxOGI3KX0seygweDRhMys0OTYtMHg2N2EpLCgweGRiNis3NDUtMHhkMDcpfSx7KDB4YzEyKzQwODAtMHgxYmU4KQorLCgweDEyN2MrNDg4OC0weDIxZjYpfSx9O2NvbnN0IHVuc2lnbmVkIGNoYXIgVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tdPXsKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCisoMHg5NDIrNjk5My0weDI0ODkpLE5PTl9HU00sTk9OX0dTTSwoMHgxZmYxKzk0NC0weDIzOTQpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgyMGQzKzU2NS0weDIyZTgpLCgweDJlYis0NjA3LTB4MTRjOSksCisoMHgxMTc1Kzk2MS0weDE1MTQpLCgweGYwMSsyMTI1LTB4MTcyYiksKDB4NzFjKzQ0NzAtMHgxODkwKSwoMHg3YWIrMjY4NS0weDEyMDMpLAorKDB4N2QzKzIyMzMtMHgxMDY2KSwoMHg4YWIrNTAyNy0weDFjMjcpLCgweDdmMiszNjE3LTB4MTVlYiksKDB4ZDNiKzEwOTMtMHgxMTU3KSwKKygweGViNSsxNzczLTB4MTU3OCksKDB4ZDY2KzQ5MjEtMHgyMDc0KSwoMHgyMjUrNzcwNy0weDIwMTQpLCgweDFkZCs1Njk5LTB4MTdmMyksCisoMHg3OGYrMzU0Ni0weDE1M2IpLCgweDQwOSs4Njg0LTB4MjVjNiksKDB4NzQ2KzE0NDItMHhjYjgpLCgweDEyOSszODM1LTB4ZmYzKSwKKygweGE5NSsyMzQwLTB4MTM4NyksKDB4YjQyKzI4MTctMHgxNjEwKSwoMHg5YmMrNDc1Mi0weDFjMTgpLCgweDFjNDgrMjMxNy0weDI1MjApCissKDB4MTY1NSszMjgyLTB4MjJmMSksKDB4MTE1Zis0NTIyLTB4MjJkMiksKDB4MTFmMCs1MDQxLTB4MjU2OSksCisoMHgxYWVmKzM4OS0weDFjM2IpLCgweGU1NCs1ODExLTB4MjRjZCksKDB4ZmMwKzI5MC0weDEwYTcpLCgweDEyZTErMTE0OC0weDE3MjEpLAorKDB4MTA2NCsxMjE1LTB4MTRlNiksKDB4NWE1KzYxMjAtMHgxZDRmKSwoMHgxNGZkKzE5MDEtMHgxYzJiKSwKKygweDg0Mis2MzA2LTB4MjBlNCksKDB4MTBmNisyMDc5LTB4MThkNCksKDB4MTEwZisxMjY4LTB4MTVjMSksKDB4N2E2KzEyNDUtMHhjNDApCissKDB4YjMrNjY5NS0weDFhOTYpLCgweGExOCszODkxLTB4MTkwNiksKDB4OGY0KzYwNTItMHgyMDUyKSwoMHhlOWIrNDE0OS0weDFlODkpLAorKDB4Y2FjKzE4OTUtMHgxM2NiKSwoMHhhYTkrNjE3LTB4Y2M5KSwoMHg3MjArMjY4LTB4N2UyKSwoMHg3OTErMzQ0OS0weDE0YmYpLAorKDB4MzkxKzg1OTEtMHgyNGQ0KSwoMHgxODY1KzMxNDItMHgyNDVlKSwoMHg3MTYrMzQ1Ni0weDE0NDgpLCgweGJlOSszNTIzLTB4MTk1ZCkKKywoMHg1NjIrMjgzOC0weDEwMjgpLCgweGRmZCs0MDUtMHhmNDEpLCgweDIyMCs5MjUtMHg1NmIpLCgweDFjYjUrMjMzLTB4MWQ0YiksCisoMHgzNDcrNDE5Ny0weDEzNTgpLCgweDZhYSs2NTAyLTB4MWZiYiksKDB4ODIrODU3NS0weDIxYWIpLCgweGZiYys0NTM5LTB4MjEyMCksCisoMHg1NmQrNTkzMC0weDFjM2YpLCgweDEyMGQrMzU0My0weDFmOGIpLCgweDgxYys1NjQtMHg5ZjYpLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSwoMHg1YzArNjI4NS0weDFlM2MpLE5PTl9HU00sKDB4MWYwMisxMzQ4LTB4MjNlNSksCisoMHhlOTYrNjcxLTB4MTBkMyksKDB4M2QyKzI0ODctMHhkMjYpLCgweGJlYys2MTcwLTB4MjNhMiksKDB4ZThmKzE3OTItMHgxNTJhKSwKKygweDE1N2IrMzE2Ni0weDIxNzMpLCgweDE5YTArMTE2NC0weDFkYzUpLCgweGU1OSszNDA3LTB4MWI0MCksCisoMHhhY2MrNTIyNS0weDFlY2MpLCgweDE2N2QrNDIwMC0weDI2N2IpLCgweDY2Mis3NDc5LTB4MjMyZSksKDB4NGE1KzEyMDMtMHg4ZWMpLAorKDB4YmYxKzE2MTItMHgxMWQwKSwoMHgxOTNjKzE2MDYtMHgxZjE0KSwoMHgxYTgxKzMyMTUtMHgyNmExKSwKKygweDVmZis2NDYwLTB4MWVjYiksKDB4OTlkKzYzNjgtMHgyMjBjKSwoMHg5NjcrNDIwNS0weDE5NjIpLCgweDExMWIrOTgtMHgxMTBhKSwKKygweDRmZis3NDI5LTB4MjE5MCksKDB4NWI1KzgwMi0weDg2MiksKDB4MmM3Kzc4NzYtMHgyMTE1KSwoMHg4ZmMrNzQ3OS0weDI1YmMpLAorKDB4Mzc0KzQxNDgtMHgxMzMwKSwoMHg4NWIrNDI5MS0weDE4YTUpLCgweGNjKzgwMzEtMHgxZmIxKSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAogTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHg4NmIrMzMxNS0weDE1NDMpLE5PTl9HU01fUCxOT05fR1NNLCgweDZjNis0OTk2LTB4MWE0OSksTk9OX0dTTV9QLAotKDB4MTc4ZiszMzYwLTB4MjRhYyksTk9OX0dTTSwoMHhlNTgrMzgtMHhlMWYpLE5PTl9HU00sTk9OX0dTTSwoMHgyMDMrMjc5NS0weGNkYykKLSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTBlNSs0MTU4LTB4MjBmZiksTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDUzNis2NjUyLTB4MWYxNyksKDB4MWM4YisxOTU4LTB4MjNmMSkKKyxOT05fR1NNLCgweGUyYSsyNjk4LTB4MThiMyksKDB4OWE4KzU5MC0weGJkMiksKDB4YWVkKzU5NzUtMHgyMjQxKSxOT05fR1NNLAorKDB4MWVkNys4MjktMHgyMWI1KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAogTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDkwYSs2ODAxLTB4MjM4NyksKDB4OWZiKzUyOTEtMHgxZTk4KSwKLSgweDI0Nis4NjAzLTB4MjNjNSksKDB4MTgxNSs3OTAtMHgxYWQwKSxOT05fR1NNX1AsTk9OX0dTTV9QLE5PTl9HU01fUCwKLSgweGMxKzM4ODAtMHhmZDYpLE5PTl9HU00sKDB4ZjkxKzEwNDMtMHgxMzg1KSwoMHhiZTcrNDQ4MS0weDFkNGEpLE5PTl9HU00sCi1OT05fR1NNLCgweDEwNDArMjIyNS0weDE4YjEpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU01fUCxOT05fR1NNLAotKDB4MTZlZiszNDI3LTB4MjQzOSksKDB4MWRkYisxNDE1LTB4MjM1NyksKDB4MTg2NSsyODc2LTB4MjM0NSksTk9OX0dTTV9QLE5PTl9HU00KLSxOT05fR1NNX1AsTk9OX0dTTSwoMHgzOTIrNDYyNi0weDE1NDcpLE5PTl9HU00sKDB4MWE4NyszMDMxLTB4MjYwMCksTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTV9QLCgweGI2NyszMC0weGIwNiksKDB4MTA2OSsxNTc1LTB4MTY4MSksKDB4M2UzKzYyNTUtMHgxYzM1KSwKLSgweGQwMis2NDktMHhmMTApLE5PTl9HU01fUCxOT05fR1NNX1AsTk9OX0dTTV9QLCgweGUwKzE3MjctMHg3OTYpLE5PTl9HU01fUCwKLSgweGM1KzMzMDAtMHhkYTQpLCgweDIyNSsxMzY2LTB4Nzc3KSxOT05fR1NNLE5PTl9HU01fUCwoMHgxYjQ0KzE5NTUtMHgyMmUwKSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU01fUCxOT05fR1NNX1AsKDB4MTg1Nis1OTgtMHgxYWE0KSwKLSgweDQ0NisyMTEzLTB4YzdiKSwoMHgxNTA3KzEzMTEtMHgxOWFhKSxOT05fR1NNX1AsTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTV9QLAotKDB4ZmIrNjA2OS0weDE4YWEpLE5PTl9HU00sKDB4NmRiKzYzNjktMHgxZjNlKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTX07Y29uc3QgCi11bnNpZ25lZCBzaG9ydCB6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtdWygweDNjMys1Mzk0LTB4MThkMyldPXt7Ci0oMHg0MWMrMzQtMHg0MzQpLCgweDNiYSsyODYtMHg0Y2MpfSx7KDB4MTg0MCsxMDQ4LTB4MWM0NCksKDB4MmViKzg4NC0weDYwMSl9LHsKLSgweDE3YzgrMzU1NS0weDI1ODMpLCgweDRhNys0MzMwLTB4MTUxNil9LHsoMHgxNzNkKzIzMjMtMHgyMDI3KSwKLSgweDRjYSs2OTkwLTB4MWY5Yil9LHsoMHgxNWM4KzMyOTItMHgyMjc1KSwoMHgxYTZhKzE2NDAtMHgyMDc2KX0sewotKDB4NzAyKzI0MzQtMHgxMDQ4KSwoMHgzYmIrNjUxOS0weDFjZDcpfSx7KDB4MTgwNSsyNTkxLTB4MjFlNyksCi0oMHg0NjgrNTg5My0weDFhZWYpfSx7KDB4YjI2KzY0NjYtMHgyNDJhKSwoMHg0MmQrNjQ2NC0weDFkMTApfSx7Ci0oMHg5NisyMjE0LTB4OGZjKSwoMHhlNDcrNTk4OC0weDI1MmYpfSx7KDB4YTkyKzgzNy0weGQ3MiksODM2NH0sfTtjb25zdCB1bnNpZ25lZAotIHNob3J0IFVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9VQ1MyW11bKDB4ZWY1KzQyNDctMHgxZjhhKV09e3sKLSgweDEwYTQrMTg3Ni0weDE3ZTgpLCgweDFmMGQrMjI3Ny0weDI0NWUpfSx7KDB4MTIzYys0NjA4LTB4MjQyYSksCi0oMHg3YTArMTE3Ni0weDg5Mil9LHsoMHhjNDMrNTM1OC0weDIxMWUpLCgweDE2MDkrMTYwNC0weDE4YmEpfSx7Ci0oMHhjOCs5MzkwLTB4MjU2MiksKDB4Y2I2KzU3MC0weGI1NSl9LHsoMHhlMzArMjQ2OC0weDE3YmYpLCgweDEwODQrMzI3OC0weDE5YTkpfQotLHsoMHgxMmUxKzQyMDEtMHgyMzM0KSwoMHg1MjUrOTIyOC0weDI1OTEpfSx7KDB4NmQrNDMxLTB4MjA1KSwoMHhiYTErMjY2LTB4OTAzKX0KLSx7KDB4MTRmYSsyMC0weDE0ZjYpLCgweDFiODcrOTc1LTB4MWJiMyl9LHsoMHgxNWQxKzM5OTYtMHgyNTU0KSwKLSgweDEyZjYrNDMyMi0weDIwNDApfSx7KDB4MWVhZis3Ni0weDFlZTEpLCgweDEyNmMrMTkxMS0weDE2NDUpfSx9O2NvbnN0IHVuc2lnbmVkCi0gY2hhciBVQ1MyX1RvX0dTTURlZmF1bHRfVGFibGVfQVNDW109e05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxNDBkKzEzOTMtMHgxOTc0KSxOT05fR1NNLE5PTl9HU00sCi0oMHhlNjkrMzA2LTB4ZjhlKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sKDB4MWRhNisxMzE0LTB4MjJhOCksKDB4NWMzKzM5OTMtMHgxNTNiKSwoMHg1MGErNTUxMy0weDFhNzEpLAotKDB4ZmQxKzI3OTAtMHgxYTk0KSwoMHgxMjIwKzQ3NTgtMHgyNGI0KSwoMHgxMWYrNTgzMy0weDE3YzMpLCgweGU3MisyNzI3LTB4MThmMykKLSwoMHgxMWEwKzUwOTUtMHgyNTYwKSwoMHgxNGI2KzEwNjctMHgxOGI5KSwoMHgxZDk5KzI0NS0weDFlNjUpLAotKDB4MjJjYSsxMDgyLTB4MjZkYSksKDB4MTI2YSs0OTkxLTB4MjViZSksKDB4MTQ5MysyMjUyLTB4MWQzMyksCi0oMHg1MCs4MDkzLTB4MWZjMCksKDB4MjczKzUxNDUtMHgxNjVlKSwoMHgxMmZhKzczNS0weDE1YWEpLCgweDM4MCs3NDA2LTB4MjAzZSksCi0oMHgyNzcrNjM3Mi0weDFiMmEpLCgweDQxMis3MTE4LTB4MWZhZSksKDB4M2I4KzMxOTAtMHhmZmIpLCgweGJiYSs5MTktMHhmMWQpLAotKDB4M2U3KzQ2MzgtMHgxNWQwKSwoMHgxMDhkKzQ4MTEtMHgyMzIyKSwoMHg1Zis1NTA1LTB4MTVhOSksKDB4MTBlMysxNzQzLTB4MTc3YSkKLSwoMHgxNzE3KzY3MC0weDE5N2MpLCgweDQyZCs3NzQ1LTB4MjIzNCksKDB4NWFjKzQ2NDAtMHgxNzkxKSwoMHgxYzkzKzg4My0weDFmY2EpCi0sKDB4MTE0NCsxMzU4LTB4MTY1NSksKDB4YmQzKzU0NzItMHgyMGY1KSwoMHg2ZDYrMjQ4Ny0weDEwNGUpLAotKDB4MTAzYSsyMjU2LTB4MTkwYSksKDB4OWU1KzE0MC0weGEzMCksKDB4ODgzKzQ3NTEtMHgxYWQwKSwoMHgxMDc4KzQ3MDMtMHgyMjk0KSwKLSgweDY2Nis2NzU0LTB4MjA4NCksKDB4MjBjNisxNjA2LTB4MjZjNyksKDB4NGQyKzQ1OTMtMHgxNjdkKSwoMHg0MjArNTQxMS0weDE4ZmMpCi0sKDB4ZTYrNDk3OC0weDE0MTApLCgweGE0MSs3MDE0LTB4MjU1ZSksKDB4NmMyKzM0NzYtMHgxNDBjKSwoMHg3MzYrNTY0MC0weDFjZjMpLAotKDB4MTBjYys0NjQ4LTB4MjJhOCksKDB4NTk1KzIzNjQtMHhlODQpLCgweDExMDQrMTA0MC0weDE0YzYpLCgweDJkZCs4NTE3LTB4MjNkMykKLSwoMHgxYWQrNjI1NC0weDE5Y2IpLCgweDExZjYrMzY3Ny0weDIwMDIpLCgweDEwYTArMzIwMi0weDFjZDApLAotKDB4MThjZisxNTg0LTB4MWVhYyksKDB4MTBmZCs0Mjk0LTB4MjE2ZiksKDB4MTE2MiszMTE0LTB4MWQzNyksCi0oMHhjNzErNTMwMC0weDIwY2YpLCgweDFiNiszNTk0LTB4ZjY5KSwoMHgxZDVkKzU2Ni0weDFmM2IpLCgweDFkZWErMTY4MS0weDI0MjIpLAotKDB4YzRjKzE4Ni0weGNhYyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg2ODYrNTQyMi0weDFiYTMpLE5PTl9HU00sCi0oMHhjNDErNjMwNC0weDI0ODApLCgweGM4Mys5Ny0weGM4MiksKDB4MWEyMSsyNzAyLTB4MjQ0YyksKDB4Mjc2KzI5MDgtMHhkNmUpLAotKDB4NjE1KzYyMjEtMHgxZGZkKSwoMHgxZWMwKzIxNzAtMHgyNmQ0KSwoMHhjNzYrNTI4Ni0weDIwYjUpLCgweDFmYzIrMjM1LTB4MjA0NSkKLSwoMHhhNzgrMjkyMy0weDE1N2EpLCgweDY3NCs3MzgtMHg4ZWMpLCgweGYzNSs0MTgxLTB4MWYxZiksKDB4ZWJmKzIzNjctMHgxNzkyKSwKLSgweDZlYys3MjI2LTB4MjJiOSksKDB4NzkxKzE1ODQtMHhkNTMpLCgweDEwZTIrMjM2Mi0weDE5YWQpLCgweDE1YzMrNDI3My0weDI2MDQpCi0sKDB4MTU3OSsxMjQzLTB4MTllMyksKDB4OGFjKzc4MTEtMHgyNmJkKSwoMHg2YjcrNDUxOS0weDE3ZWIpLAotKDB4NzIzKzY3NzktMHgyMTJhKSwoMHg1NWQrNTQ4LTB4NzBjKSwoMHgxNzVmKzcwMS0weDE5YTYpLCgweDEyNDkrNDAwNi0weDIxNzgpLAotKDB4MTE0ZCs1MzgxLTB4MjVkYSksKDB4NTMxKzEzODYtMHhhMjIpLCgweDVmMSs2MzcyLTB4MWU1YiksTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDM3NSs0MDI0LTB4MTMxMiksKDB4MWY2KzYwMzEtMHgxOTQ1KSwKLU5PTl9HU00sKDB4MjE5KzYyODEtMHgxYWExKSwoMHg1NTMrNTc5MS0weDFiY2UpLCgweDNkOSs5NjYtMHg3OWMpLE5PTl9HU00sCi0oMHgzMzQrMTE4OC0weDc3OSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxMjE4KzMzNzctMHgxZWU5KSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTEwNCs3OTktMHgxM2M4KSwoMHgyZTUrODU5Mi0weDI0NjcpLAotKDB4NDBhKzIxNy0weDRjNyksKDB4NTgrMzQ4Ni0weGRlZCksTk9OX0dTTSwoMHg3MSszNzYzLTB4ZjA1KSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTAzMSs1NTQ4LTB4MjU4MCksTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLCgweDFiNTYrNjA1LTB4MWQ1NyksTk9OX0dTTSwoMHhlMzcrMzk3Mi0weDFkYjApLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sKDB4MTRkNys5MzktMHgxODI0KSxOT05fR1NNLE5PTl9HU00sKDB4NmJiKzk5MC0weGE3YiksKDB4ODIzKzE0NzYtMHhkNjgpCi0sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MjA4MSsxMTM2LTB4MjQ3NiksKDB4OWU5KzE4MDEtMHgxMGUzKSwKLSgweGRlNis0OTkxLTB4MjE0OCksTk9OX0dTTSwoMHhmMzcrMjI5Mi0weDE4MjcpLCgweDlmNys3MTQxLTB4MjVkNyksTk9OX0dTTSwKLU5PTl9HU00sKDB4MjQ4Zis2MzMtMHgyNzAxKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweGEzOCsxNDAxLTB4ZjM0KSwKLSgweDE3ZjArMzA1OC0weDIzZGEpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDExNzkrMzUxMi0weDFlYjUpLE5PTl9HU00sCi0oMHg4NjArMTgyOS0weGY3OSksKDB4MTJmYys0NjEtMHgxNGMzKSxOT05fR1NNLE5PTl9HU00sKDB4MzkzKzMyODEtMHhmZTYpLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU019O2NvbnN0IHVuc2lnbmVkIHNob3J0IAotenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZVtdPXsoMHhmODMrMzM3Mi0weDFjNmYpLCgweDE2OWMrMzAyLTB4MTcyNykKLSwoMHhlMTgrNTYxNS0weDIzZTMpLCgweDEwNDQrNTE5LTB4MTFhNiksKDB4MTI2NCsyMTEzLTB4MTliYiksKDB4YzY1KzczMi0weGU1OCksCi0oMHhhOTUrNDE1NC0weDE5ZDUpLCgweDUwYys4MzUwLTB4MjRiZCksKDB4NGI2KzgzNTctMHgyNDY4KSwoMHhlY2IrMjU5MC0weDE4MDIpLAotKDB4MTVkNysyNjY0LTB4MjAzNSksKDB4MjI0YSsxMTk1LTB4MjYyMSksKDB4MTk0NCsyNTgzLTB4MjI2NyksCi0oMHgxMDc0KzIxNjItMHgxOGQ5KSwoMHhmMjIrNDY3NS0weDIwYTQpLCgweDY5ZCs4MzkyLTB4MjY4NCksKDB4M2JhKzgyNzUtMHgyMDc5KQotLCgweDcyYysxNDUzLTB4YzdhKSwoMHgxOWJhKzIzODctMHgyMjYzKSwoMHgxZjQrODcwNi0weDIzMmYpLCgweDhhNis0NDgzLTB4MTk2OSkKLSwoMHgyNjhkKzMzMjktMHgxMTcwKSwoMHgxMjY0KzM4NzMtMHgyMTI3KSwoMHg0MTcrMzQ3OS0weDExNTIpLAotKDB4MjMwMSs2MTkwLTB4MWE4MyksKDB4MTE1NCsyMDIzLTB4MTg2OCksKDB4NzQ1KzQ5NC0weDhiNyksKDB4ZmMrODc3OC0weDIyYTYpLAotKDB4OWMyKzUxMzYtMHgxZDEwKSwoMHgxNGQzKzE1NTYtMHgxYTA1KSwoMHg1NmIrMzUzNi0weDEyNzEpLAotKDB4MTI1Mis0NzE0LTB4MjNmMyksKDB4Njg5KzI2NS0weDc3MiksKDB4ODdhKzcxMzQtMHgyNDM3KSwoMHg3MmErMzk3Mi0weDE2OGMpLAotKDB4NGIwKzU4MjItMHgxYjRiKSwoMHg0MzArMzUyNS0weDExNDUpLCgweGRiNCsyODgwLTB4MThjZiksKDB4ZGYyKzMxODAtMHgxYTM4KSwKLSgweDE2ZGIrOTA0LTB4MWEzYyksKDB4YWNiKzcxNTktMHgyNjlhKSwoMHgxNzc4KzIyNi0weDE4MzEpLCgweDE3OGYrMTMwMS0weDFjN2EpCi0sKDB4MTU2MisxNjE4LTB4MWI4OSksKDB4MTAzZCs1MjAzLTB4MjQ2NCksKDB4M2QrODE3MC0weDFmZmEpLAotKDB4NDQ2KzY1MTQtMHgxZDhhKSwoMHg4NDArNDQ3MS0weDE5ODgpLCgweDFlN2QrMjE5MC0weDI2ZGIpLCgweGVmYyszMzQzLTB4MWJkYSkKLSwoMHgxMTA4KzUyNS0weDEyZTMpLCgweDEyYWQrMTA3MS0weDE2YTkpLCgweGE4KzQyNzQtMHgxMTI2KSwoMHg2MGMrNDczMi0weDE4NTMpCi0sKDB4YTNjKzQyNjUtMHgxYWFmKSwoMHhiMGErNjE2MC0weDIyZTMpLCgweDFiYTArMjcyNS0weDI2MGQpLAotKDB4YmYxKzI3ODItMHgxNjk2KSwoMHgxYWU3KzgwNS0weDFkZDIpLCgweDEyMCs3MDA2LTB4MWM0MyksKDB4MjI0Yis1OTYtMHgyNDYzKSwKLSgweDQwYys3MjItMHg2YTEpLCgweDE0ODYrOTc0LTB4MTgxNiksKDB4Nzc1Kzc0MzAtMHgyNDNjKSwoMHgxMWI4KzMyMzAtMHgxZDg5KSwKLSgweDFkOWYrMjI4OC0weDI2NGUpLCgweDE0MDArMzI5Mi0weDIwOWEpLCgweDgwOCs1NjktMHg5ZmUpLCgweDlhYSs2NjQxLTB4MjM1NyksCi0oMHg5N2IrMTcyMy0weGZmMSksKDB4NTJiKzY2MC0weDc3OSksKDB4MTZhYiszMTI1LTB4MjI5OSksKDB4MTIwMyszMzczLTB4MWVlOCksCi0oMHg2MGQrMjg4OS0weDExMGQpLCgweGJmMis0NzMxLTB4MWUyMyksKDB4MmQwKzU0MTItMHgxN2E5KSwoMHhmNzgrNDAyMy0weDFlZTMpLAotKDB4YmJjKzUwNTktMHgxZjMyKSwoMHgxMjk5KzE1MDktMHgxODMwKSwoMHgxNDVmKzg0NS0weDE3NWQpLCgweGMwOSs2NDI1LTB4MjRkMikKLSwoMHhlYjIrODYzLTB4MTFjMCksKDB4MjIyNiszNTEtMHgyMzMzKSwoMHg2OCsyNDIzLTB4OThjKSwoMHg0MTArMjgyMy0weGVjMyksCi0oMHgyNTYrNjQ2Mi0weDFiM2YpLCgweDFkNmYrMTkyNy0weDI0YTApLCgweGEwMSs1MDUxLTB4MWQ2NSksKDB4YmYwKzY0OTUtMHgyNGY3KQotLCgweDQyOCs2MTgzLTB4MWJmNiksKDB4ODQrNjgxMC0weDFhYzQpLCgweDFjYWYrODAxLTB4MWYwZCksKDB4MTA2MSs1MjMxLTB4MjNmYikKLSwoMHhiM2IrMTAzLTB4YWM4KSwoMHhlNzkrMTI1LTB4ZTFhKSwoMHhiMGYrMjc4LTB4YjdlKSwoMHgxZjU4KzY3OS0weDIxODEpLAotKDB4ZjA5KzI4NTktMHgxOWQzKSwoMHgxZWMxKzEyMjItMHgyMzI1KSwoMHgyZTUrMzExLTB4M2I5KSwoMHgxMjAxKzcwNy0weDE0NjApLAotKDB4OTgwKzE2NDAtMHhmODMpLCgweDk0Kzg4OTAtMHgyMmU4KSwoMHgxZTAyKzIwOTQtMHgyNWM5KSwoMHgxZGRkKzE3NjEtMHgyNDU2KSwKLSgweGZjNCs0ODM4LTB4MjI0MSksKDB4MTFiKzYxMDEtMHgxODg2KSwoMHg0YmQrMjQzOS0weGRkOSksKDB4ODMxKzEzNTAtMHhkMGIpLAotKDB4NmU4KzcyOTItMHgyMmY3KSwoMHgxNDZiKzMyOTctMHgyMGRlKSwoMHg3OTkrNDk5Ni0weDFhYWUpLCgweDNkMis4ODI0LTB4MjVkYSkKLSwoMHgxNmJhKzM1NTYtMHgyNDJkKSwoMHgxMWJkKzE4NzItMHgxODliKSwoMHg4MGErNDUzNy0weDE5NTApLAotKDB4MWJlYSs0NjctMHgxZDQ5KSwoMHhmZDYrMTYyLTB4MTAwMyksKDB4MWI4OCsyMzQ5LTB4MjQzZiksKDB4NDA1Kzc5MzktMHgyMjkxKSwKLSgweDEwYzcrMTg5Ny0weDE3YjgpLCgweDE0NTIrNDQ0MS0weDI1MzIpLCgweDE5ODYrOTUtMHgxOTZiKSwoMHhlZjcrMzkxOC0weDFkNjIpCi0sKDB4ZDQ0KzI3NTItMHgxNzBmKSwoMHgxYmU4Kzg4Ny0weDFlZmYpLCgweGE4MysyMTk4LTB4MTIxZCksKDB4MjdhKzY5NTctMHgxY2M3KQotfTtjb25zdCB1bnNpZ25lZCBzaG9ydCB6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZVtdPXsoMHg0NTQrNjAwNS0weDFiODkpLAotKDB4NGRhKzcyNDItMHgyMDgxKSwoMHgyYjErNDE4My0weDEyZTQpLCgweDE1MTErNTQ4LTB4MTY5MCksKDB4MTc1OSsxMDQ2LTB4MWE4NykKLSwoMHg2ZmErNTk1OC0weDFkNTcpLCgweDhmYSszMTQzLTB4MTQ0OCksKDB4OTE5KzYwNTMtMHgxZmQyKSwKLSgweDFjMzUrMjg3MS0weDI2N2EpLCgweDE5NTArMjU3Mi0weDIyOTUpLCgweDhlYys3MzUxLTB4MjU5OSksCi0oMHg2M2YrNDYwNC0weDE3NjMpLCgweGI5MSszMTA2LTB4MTZiYiksKDB4MTIwYisyMzY1LTB4MWIzYiksCi0oMHgxZjY3KzExNjgtMHgyMzMyKSwoMHhlZTgrMzkwNy0weDFkNDYpLCgweDE4MjQrNDE2NC0weDI0ZDQpLAotKDB4YTNjKzY2NjMtMHgyM2U0KSwoMHgxMWY5KzQwNTUtMHgxZTJhKSwoMHg2NGQrNDA0MS0weDEyODMpLAotKDB4MTdkZiszMTQ0LTB4MjA4YyksKDB4MWRlNiszMTQ2LTB4MjY4NyksKDB4OTYwKzI2MzgtMHgxMDBlKSwKLSgweDEzNjUrMzIyNy0weDFjNTgpLCgweDVhNCs0OTk5LTB4MTU4OCksKDB4MTQxNSs1NTYtMHgxMmE5KSwoMHg2NGErNjA3MS0weDFhNjMpCi0sKDB4MjIwKzUyNDQtMHgxNWZjKSwoMHhlMDErMzY5MC0weDFiYTUpLCgweGMxOSszNTQxLTB4MTkwOCksKDB4OTk5KzYwMzMtMHgyMDRiKQotLCgweDE2N2MrMTkzOC0weDFkNDUpLCgweDE5Yis4NDg2LTB4MjJhMSksKDB4NDY2Kzc1OTQtMHgyMWVmKSwoMHhhNSs3MDM4LTB4MWMwMSkKLSwoMHgxN2MyKzI5MTEtMHgyMmZlKSwoMHhiNDUrODUwLTB4ZGYzKSwoMHgxYTRhKzE3NzEtMHgyMTEwKSwKLSgweDFiYzcrMjQ5Ny0weDI1NjIpLCgweGM2Mys0NzQ5LTB4MWVjOSksKDB4OTY0KzcwMTEtMHgyNDlmKSwoMHgxZjAyKzY5MS0weDIxOGMpCi0sKDB4OTI4KzQ0MzgtMHgxYTU0KSwoMHhiZTUrNjIzNC0weDI0MTQpLCgweDEzZTQrMTcwOC0weDFhNjQpLAotKDB4MTdhNysyMDQyLTB4MWY3NCksKDB4ZjE0KzI2MDMtMHgxOTExKSwoMHhkMmMrMzAxMS0weDE4YzApLCgweDhmNSszMzQzLTB4MTVkNCkKLSwoMHgxMTYxKzI1NTYtMHgxYjJjKSwoMHhiZjkrNjExOS0weDIzYWUpLCgweGJlYisyMzYxLTB4MTRmMSksKDB4NTg4KzI2NTktMHhmYjcpCi0sKDB4MTBkMys4ODktMHgxNDE3KSwoMHg5Y2MrNjU0OS0weDIzMmIpLCgweDEwMGYrMTcyNC0weDE2OTQpLAotKDB4MWZhNCs0MTEtMHgyMTA3KSwoMHg5YTQrMjU4LTB4YTZkKSwoMHgxYzA0KzEyOTItMHgyMGQ2KSwoMHhhMjErNTc1MS0weDIwNWQpLAotKDB4M2FiKzg1OTQtMHgyNTAxKSwoMHg0ZjMrODU3My0weDI2MzMpLCgweDM1Nis0MjEzLTB4MTM4ZCksKDB4NzgzKzcyNS0weGExOSksCi0oMHhkNTErNDAzMi0weDFjNzApLCgweDQ1NisxNzc3LTB4YjA2KSwoMHgxZDg5KzExNzEtMHgyMWRhKSwoMHgxODk3KzI3NjQtMHgyMzIwKQotLCgweDQ2Nis1MzI2LTB4MThmMCksKDB4MzUyKzYzOTAtMHgxYzAzKSwoMHg3NTArMTM5MC0weGM3OCksKDB4YTU2KzE0NDctMHhmYjYpLAotKDB4MTJmMisyMTYzLTB4MWIxZCksKDB4NmMxKzY3MTktMHgyMGI3KSwoMHg3MGErNDU1OC0weDE4OGUpLCgweDEwN2YrOTUzLTB4MTNlZCkKLSwoMHhiYjgrMjYzMi0weDE1YjQpLCgweDE4OTArMzYwMi0weDI2NTUpLCgweDQxNysyMDM0LTB4YmJiKSwoMHgxYTM5KzE2Ni0weDFhOTApCi0sKDB4M2FjKzU0MzYtMHgxODk4KSwoMHhhNmErMzY1OC0weDE4NjMpLCgweDliNys0Nzg1LTB4MWMxNiksKDB4ZGI5KzI2MjYtMHgxN2E4KQotLCgweDY2NSs2NDQ4LTB4MWY0MSksKDB4MzlkKzM5OTMtMHgxMmUxKSwoMHhkNGMrMTUxMy0weDEyZGYpLAotKDB4MWYwMCsxMTkwLTB4MjM0ZiksKDB4NmUwKzc3OTctMHgyNGZkKSwoMHgxZjc0KzgyNi0weDIyNTUpLCgweDg4Nis0NDU2LTB4MTk5NCkKLSwoMHhkMzcrNTM4MS0weDIxNzgpLCgweDEwMTMrMTU2NS0weDE1NWEpLCgweDYyOSs0NTI5LTB4MTcwOSksCi0oMHgxMTgzKzM2MDUtMHgxZWJjKSwoMHhiMGMrNDUxNy0weDFjMGEpLCgweGFhOSszMjMxLTB4MTY4OSksKDB4MjU0YysxMjYtMHgyNTY5KQotLCgweGVmKzYxMDUtMHgxODY2KSwoMHgxMjVhKzQzNzEtMHgyMzBhKSwoMHhlZmQrNjAwOS0weDI2MTIpLCgweDFhYjcrODQ1LTB4MWQ5ZikKLSwoMHgxMzUwKzIzNjgtMHgxYzJhKSwoMHhlZjgrNDgwLTB4MTA3MSksKDB4MTE1Mys0OTktMHgxMmRlKSwoMHg0YjMrMzk0Ni0weDEzYjQpCi0sKDB4MTJjZCszMzYyLTB4MWY4NSksKDB4MTQ4OSsyNDY1LTB4MWRiZiksKDB4NWFhKzY4OTktMHgyMDMxKSwoMHhmYSsxMjgwLTB4NThkKQotLCgweDE0OTErMzI1MS0weDIwZDYpLCgweGIxMisxNjgxLTB4MTEzNCksKDB4NWMwKzI4OTQtMHgxMDllKSwKLSgweGE5ZCs2MTQ3LTB4MjIyZiksKDB4MThhNCsyMjk5LTB4MjEyZCksKDB4MWE2MSsyODQ5LTB4MjUwZiksCi0oMHg4ZjArMjkxNS0weDEzZGYpLCgweDFhN2MrMTE2Ny0weDFlOTYpLCgweDFhMDYrMjExMC0weDIxY2UpLAotKDB4MTI0NiszNTcwLTB4MWZjMSksKDB4MWQwNisxMjQyLTB4MjE2OCksKDB4Y2E1Kzc4My0weGYzYiksKDB4MTgzOCsxMjUzLTB4MWNhMykKLSwoMHgyMDk1KzEzNjEtMHgyNTAyKSwoMHgxNzc5KzQwNzMtMHgyNjZjKSwoMHg2YTQrNDI4NS0weDE2NzApLAotKDB4YzI1KzU4NDYtMHgyMWZmKSwoMHgxMmU3KzgxMC0weDE1MzEpfTtpbnQgQnl0ZXMyU3RyaW5nKGNvbnN0IHVuc2lnbmVkIGNoYXIqCi1wU3JjLGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7Y29uc3QgY2hhciB0YWJbXT0iMDEyMzQ1Njc4OUFCQ0RFRiI7aW50IGk9Ci0oMHgzZDUrNDM5NC0weDE0ZmYpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MjI2MSs3NDMtMHgyNTQ4KSl7Ci1yZXR1cm4tKDB4M2FiKzk3OC0weDc3Yyk7fWZvcihpPSgweDJmMis2OTE2LTB4MWRmNik7aTxuU3JjTGVuZ3RoO2krKyl7KnBEc3QrKz0KLXRhYlsqcFNyYz4+KDB4YzA0Kzk0My0weGZhZildOypwRHN0Kys9dGFiWypwU3JjJigweDJmYis2MzI1LTB4MWJhMSldO3BTcmMrKzt9KgotcERzdD0nXDAnO3JldHVybiBuU3JjTGVuZ3RoKigweDFlMCsxMjUtMHgyNWIpO31pbnQgU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYywKLXVuc2lnbmVkIGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IGk9KDB4MjI5KzU4MS0weDQ2ZSk7aWYocFNyYz09TlVMTHx8cERzdD09Ci1OVUxMfHxuU3JjTGVuZ3RoPCgweDE5MjErMTI4NS0weDFlMjYpKXtyZXR1cm4tKDB4NGQwKzUzMDEtMHgxOTg0KTt9Zm9yKGk9Ci0oMHgyZGIrMzg3MC0weDExZjkpO2k8blNyY0xlbmd0aDtpKz0oMHgxYjNkKzI5MjctMHgyNmFhKSl7aWYoKnBTcmM+PQotKChjaGFyKSgweDQwYysxNTY0LTB4OWY4KSkmJipwU3JjPD0oKGNoYXIpKDB4OGI1KzU3MjAtMHgxZWQ0KSkpeypwRHN0PSgqcFNyYy0KLSgoY2hhcikoMHgxM2YrNDk1Mi0weDE0NjcpKSk8PCgweDM0Kzg1MjgtMHgyMTgwKTt9ZWxzZXsqcERzdD0oKHRvdXBwZXIoKnBTcmMpLQotKChjaGFyKSgweGU2ZisyMDUyLTB4MTYzMikpKSsoMHg4YjErNTk3LTB4YWZjKSk8PCgweDM0OCszNzU5LTB4MTFmMyk7fXBTcmMrKztpZigKLSpwU3JjPj0oKGNoYXIpKDB4MTZhNiszMzkyLTB4MjNiNikpJiYqcFNyYzw9KChjaGFyKSgweGM4YisxMjM3LTB4MTEyNykpKXsqcERzdHw9Ci0qcFNyYy0oKGNoYXIpKDB4MTFkNCszMDgwLTB4MWRhYykpO31lbHNleypwRHN0fD0odG91cHBlcigqcFNyYyktCi0oKGNoYXIpKDB4MThhYyszNjAyLTB4MjY3ZCkpKSsoMHhiNGYrMjkwNS0weDE2OWUpO31wU3JjKys7cERzdCsrO31yZXR1cm4gCi1uU3JjTGVuZ3RoLygweGE4OCs1NzU5LTB4MjEwNSk7fWludCBFbmNvZGVVY3MyKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKgotcERzdCxpbnQgblNyY0xlbmd0aCl7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHg4YWErMzMzLTB4OWY3KSl7Ci1yZXR1cm4tKDB4MTI3MSszNjgzLTB4MjBkMyk7fSh2b2lkKVN0cmluZzJCeXRlcyhwU3JjLHBEc3QsKGludCluU3JjTGVuZ3RoKTsKLXJldHVybiBuU3JjTGVuZ3RoLygweDFlMjUrMTM1NC0weDIzNmQpO31pbnQgRW5jb2RlN2JpdChjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgCi1jaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBuU3JjO2ludCBuRHN0O2ludCBuQ2hhcjt1bnNpZ25lZCBjaGFyIG5MZWZ0PQotKDB4YWIzKzE5MTItMHgxMjJiKTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDRkNSszMTgyLTB4MTE0MykpewotcmV0dXJuLSgweDFhM2YrMTg4Ny0weDIxOWQpO31uU3JjPSgweDgxNCsxNDI3LTB4ZGE3KTtuRHN0PSgweDEwZmYrMzIyOS0weDFkOWMpOwotd2hpbGUoblNyYzxuU3JjTGVuZ3RoKXtuQ2hhcj1uU3JjJigweDFhMjgrMTYzOS0weDIwODgpO2lmKG5DaGFyPT0KLSgweDE2ZWYrMTU5Ni0weDFkMmIpKXtuTGVmdD0qcFNyYztpZigoZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2c+Ci0oMHgxOWJjKzI1OTYtMHgyM2RmKSkmJihuU3JjPT0oblNyY0xlbmd0aC0oMHgzNDcrNzI5Ny0weDFmYzcpKSkpe25Ec3QrKzt9fWVsc2V7KgotcERzdD0oKnBTcmM8PCgoMHg3YTArNDIwOC0weDE4MDgpLW5DaGFyKSl8bkxlZnQ7bkxlZnQ9KnBTcmM+Pm5DaGFyO3BEc3QrKztuRHN0KysKLTt9cFNyYysrO25TcmMrKzt9cmV0dXJuIG5Ec3Q7fVNJTlQzMiB6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KENIQVIqcERzdCwKLVVJTlQ4IFRQX0ZDUyl7U0lOVDMyIG5MZW5ndGg9KDB4MmE3KzYxLTB4MmU0KTtTSU5UMzIgbkRzdExlbmd0aD0KLSgweGUzYis2OTktMHgxMGY2KTtVSU5UOCBidWZbKDB4NDBiKzMzMjItMHgxMDA1KV09eygweDFlNGIrMjA2Ni0weDI2NWQpfTtpZihOVUxMCi09PXBEc3Qpe3JldHVybi0oMHgyOTUrNDUxMy0weDE0MzUpO31pZihUUF9GQ1MhPSgweGRjMSs1MTczLTB4MjFmNikpe2J1ZlsKLSgweDQzNisxODExLTB4YjQ5KV09KDB4OGVhKzUyNjYtMHgxZDdjKTtidWZbKDB4MTRiNisxOTgyLTB4MWM3MyldPVRQX0ZDUztidWZbCi0oMHgxMzEwKzg2MS0weDE2NmIpXT0oMHg3NDMrMTExOS0weGJhMik7bkRzdExlbmd0aCs9Qnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFsKLW5Ec3RMZW5ndGhdLCgweDczMCsxNjMtMHg3ZDApKTt9ZWxzZXtidWZbKDB4MTBmNysxMzM4LTB4MTYzMSldPQotKDB4MTIwMysxNTc1LTB4MTgyYSk7YnVmWygweDM3Mys4MDE5LTB4MjJjNSldPSgweDE5YTkrMTM2NC0weDFlZmQpO25Ec3RMZW5ndGgrPQotQnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFtuRHN0TGVuZ3RoXSwoMHg5MTUrNzI1MS0weDI1NjYpKTt9cmV0dXJuIG5Ec3RMZW5ndGg7fQorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MjI5YysxMTQyLTB4MjZiMiksTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweGQ3NCs2NDYtMHhmOWYpLCgweDQ4OSsyMDc0LTB4Yzk1KSwKKygweDEwMGIrNDY2Ny0weDIyMmEpLCgweDk5MSs1MDkzLTB4MWQ2ZCksTk9OX0dTTSwoMHhhNmErNDEzNC0weDFhNzEpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxOGUyKzI0NTEtMHgyMjE4KSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTk5YSsxMDAwLTB4MWQyNiksTk9OX0dTTSwoMHg0YjErMzE4NC0weDExMTYpLE5PTl9HU00KKyxOT05fR1NNLE5PTl9HU00sKDB4MWMzYysxNjcyLTB4MjI2NiksTk9OX0dTTSxOT05fR1NNLCgweDE3YzIrODM4LTB4MWFlYSksCisoMHgxMDAxKzQxNDgtMHgxZmI2KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg3MjIrMTg2Mi0weGRlZCksCisoMHgxNzA5KzQwNzctMHgyNmU3KSwoMHhkM2YrNjIxNS0weDI1NjkpLE5PTl9HU00sKDB4MTBhOCszMTU3LTB4MWNmOSksCisoMHhlMjQrMzA5MS0weDFhMzIpLE5PTl9HU00sTk9OX0dTTSwoMHgxZDYzKzEyOTEtMHgyMjY3KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTQorLE5PTl9HU00sKDB4ZWI0KzExNzMtMHgxMmNjKSwoMHgzZGIrMjQ4NS0weGQ4OCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCisoMHgxODBhKzEzODMtMHgxY2Y1KSxOT05fR1NNLCgweDU3MisxNDExLTB4YWU5KSwoMHgzMjcrNDk1My0weDE2N2EpLE5PTl9HU00sCitOT05fR1NNLCgweDIwOCs3MDQ4LTB4MWQxMiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU019O2NvbnN0IHVuc2lnbmVkIHNob3J0IAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZVtdPXsoMHgyMDFjKzE0MjEtMHgyNTY5KSwKKygweDVmMCszNjcyLTB4MTNhNSksKDB4MWFkOSsyNzEtMHgxYmM0KSwoMHgxYWErMzM4NS0weGUzZSksKDB4OTcxKzEzNjMtMHhkZGEpLAorKDB4MTJmKzI1NjUtMHhhNGIpLCgweDI1ZCs2MTktMHgzY2UpLCgweDE2NDIrMzEwNS0weDIxNzYpLCgweDMwNysyNjAzLTB4YzNmKSwKKygweDRlZCszNjk2LTB4MTI3NiksKDB4NmRmKzQ2MTktMHgxOGUwKSwoMHgxYWYzKzcwMC0weDFjZGIpLCgweDE2MmIrMTExMi0weDE5OGYpCissKDB4YWE3KzY4MS0weGQ0MyksKDB4MTFjKzI1NjAtMHhhNWIpLCgweDFmMmQrMTQ4MC0weDI0MTQpLCgweDU4YisyOTkwLTB4ZGE1KSwKKygweDlmNCs0MDg0LTB4MTk4OSksKDB4ZGM1KzE5MzAtMHgxNGE1KSwoMHgyMDI0KzgwOC0weDIyODUpLCgweDVkMSs1MTM1LTB4MTkyMCksCis4NzM0LCgweDEyNDMrMzM0My0weDFlZjQpLCgweDEwYmErMzU2LTB4MTFjMiksKDB4MjZlZis1NDc0LTB4MWJhNSksCisoMHgxNWIrOTM3MS0weDI1MjMpLCgweDE3ZTUrMzM2My0weDI0OGMpLCgweDVjNyszMjg3LTB4MTFmZSksCisoMHgxYmE3KzI2NjAtMHgyNTQ5KSwoMHgxMjgyKzQzMzUtMHgyMjhmKSwoMHgxOGMwKzMxNzUtMHgyNDVkKSwKKygweDMwMSs0NjEzLTB4MTQzZCksKDB4MTFkMCsyOTI4LTB4MWQyMCksKDB4YTErNTgxMS0weDE3MzMpLCgweDkyNSs0NjE4LTB4MWIwZCksCisoMHg1MjcrNDY0Ni0weDE3MmEpLCgweDEyMWErMzYwMy0weDFmN2QpLCgweDI3MiszNzY3LTB4MTEwNCksKDB4NjkrNzQ4NC0weDFkN2YpLAorKDB4MWNhMSsyMzY5LTB4MjViYiksKDB4YmQxKzUzNjAtMHgyMDk5KSwoMHhjOGYrMjM0Ny0weDE1OTEpLCgweDI0NSs3MTIzLTB4MWRlZSkKKywoMHg3NzcrNzE4LTB4YTFhKSwoMHg2YTYrNTg3MS0weDFkNjkpLCgweDE4MmQrMjc4Ny0weDIyZTMpLCgweDEwMzgrMTU0OC0weDE2MTYpCissKDB4MTFiMisxMzM2LTB4MTZiYiksKDB4MWI0ZCsyNTUzLTB4MjUxNiksKDB4ZWFiKzE1NTgtMHgxNDkwKSwKKygweDNiKzgwMTMtMHgxZjU2KSwoMHgxNDlkKzQzMDMtMHgyNTM5KSwoMHhmMzUrMjk1LTB4MTAyOCksKDB4ODE0KzIzMzgtMHgxMTAxKSwKKygweDkxYSs1MTM2LTB4MWNmNCksKDB4NDQrNTg5LTB4MjVhKSwoMHgxNmMzKzQ5Mi0weDE4NzcpLCgweDE1Nis0MDEzLTB4MTBjYSksCisoMHgxZDQrNTM5MS0weDE2YTkpLCgweDExMjUrMzg3MC0weDIwMDgpLCgweDg4OCs1MTE2LTB4MWM0OCksKDB4MWVkOSsxMDMtMHgxZjAzKQorLCgweDEyOGMrMTU0Mi0weDE4NTQpLCgweDYxMysyMjMwLTB4ZThhKSwoMHgxNmM5Kzc4MS0weDE5MDkpLCgweGE1Nys0MzY0LTB4MWIyMikKKywoMHgxNGM3KzQyMC0weDE2MjkpLCgweDE3OTkrMzA4NS0weDIzNjMpLCgweGY0MSsyNzgwLTB4MTlkOSksCisoMHg1YjErNzk0MC0weDI0NzApLCgweGMyMys1MjA5LTB4MjAzNiksKDB4MTg2ZisxMTIyLTB4MWM4YSksCisoMHgxMmI3KzQwMzQtMHgyMjMxKSwoMHg3ZWQrNzQ1MC0weDI0YmUpLCgweDMxNis5MDg2LTB4MjY0YSksKDB4NzkyKzMxNjgtMHgxM2E3KQorLCgweDg2YSs1NjEzLTB4MWUwYiksKDB4MjU0Mys0NjMtMHgyNmM1KSwoMHhhNWYrMTEyNy0weGU3OCksKDB4MTM5NSs0Mzk4LTB4MjQ3NCkKKywoMHgxZTkrMjU3NC0weGJhNyksKDB4MThiOSszMDIxLTB4MjQzNSksKDB4NmQxKzE3NjktMHhkNjgpLCgweDQ5ZCsyNzg5LTB4ZjJmKSwKKygweDZiOSszMzAxLTB4MTM0YSksKDB4OGQwKzU2NzgtMHgxZWE5KSwoMHg4MTIrNDQ4Ni0weDE5NDIpLCgweDU1MCs3ODM3LTB4MjM5NiksCisoMHg1ODErODI2NS0weDI1NzIpLCgweDhkNCsxNTEtMHg5MTIpLCgweDExMzUrNDE2MS0weDIxMWMpLCgweDE5MjMrMTk4NC0weDIwMjApLAorKDB4ODU5KzgwNTUtMHgyNmZiKSwoMHgxYWRjKzMwODEtMHgyNjBiKSwoMHgxY2M1KzI3MzktMHgyNjljKSwKKygweDc4MSs2NzQ5LTB4MjEzNyksKDB4MzU0KzcxNjUtMHgxZWQzKSwoMHg0N2ErNzAxMi0weDFmN2QpLCgweGMyKzQzNzUtMHgxMTc3KSwKKygweDM1MCszMjgyLTB4ZmJmKSwoMHg0OWQrNTUzNy0weDE5ZGEpLCgweDFkZDYrMjE5Mi0weDI2MDEpLCgweDZhYSs1Nzk2LTB4MWNlOCksCisoMHhkMzArNDgyOC0weDFmYTUpLCgweGE5Mis4NzUtMHhkOTUpLCgweDVmOCsyMy0weDVhNiksKDB4OTE0KzMzNi0weDlmYSksCisoMHhkODMrNDc0Mi0weDFmOWUpLCgweDFhYTIrMjgzOS0weDI1NGQpLCgweDE3YmYrMjY4MS0weDIxY2IpLAorKDB4NDRjKzY2MzktMHgxZGNkKSwoMHgyNDkrMjgzMy0weGNlYiksKDB4OGNjKzEwNTItMHhjNzgpLCgweGY5YiszOTQzLTB4MWU5MSksCisoMHgxZDY1KzEzMS0weDFkNzYpLCgweDczYis2NTItMHg5NTQpLCgweDEwMjArMjczNy0weDFhNWQpLCgweDEyZTQrNDAwMi0weDIyMTEpLAorKDB4MWYxKzU0MjYtMHgxNmFkKSwoMHgyMTIyKzEyNjQtMHgyNTliKSwoMHg5OTgrNTcwOS0weDFmNmQpLAorKDB4MWVmNCsxODQ0LTB4MjVhZiksKDB4ZDA3KzY1NjQtMHgyNjMxKSwoMHg5ODIrMzMyNy0weDE1OWUpLCgweDc2ZisyODcyLTB4MTFiMikKKywoMHgxODI3KzI0OTEtMHgyMTgyKSwoMHgxZTJhKzI0MzQtMHgyNmIwKSwoMHg1YjMrODM2Mi0weDI1N2QpfTtjb25zdCB1bnNpZ25lZCAKK3Nob3J0IHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlW109eygweDE4MzArMjcwMC0weDIyN2MpLAorKDB4ZjJiKzE4NTktMHgxNWNiKSwoMHhhMGMrNDg3Ni0weDFjZjQpLCgweDE2ZTErMzE4MC0weDIyYTgpLAorKDB4MTAzMisxNTA2LTB4MTUyYyksKDB4YzgxKzI1MjAtMHgxNTcwKSwoMHgzMmIrMTczOC0weDhmYyksKDB4MjAxZCs3MzctMHgyMjEyKSwKKygweGE0MyszMzg0LTB4MTY4OSksKDB4MWY0Mis5NzQtMHgyMjQ5KSwoMHgzYzQrMzA5My0weGZjZiksKDB4ZDAwKzE5NjItMHgxM2QyKSwKKygweDIyODUrNDg2LTB4MjM3MyksKDB4MTNiNSsxNzQ3LTB4MWE3YiksKDB4NWU1KzczODUtMHgyMWY5KSwoMHhjYTMrNzc3LTB4ZWM3KSwKKygweGFmYys1NzUzLTB4MWRlMSksKDB4MTM3MysyOTU0LTB4MWU5ZSksKDB4MWM2NCsxMzc3LTB4MWUxZiksCisoMHg4ZWQrODA1NC0weDI0ZDApLCgweDFkYTQrMjUxMC0weDIzZDcpLCgweGI3Mys3OTU4LTB4MjZlMCksCisoMHgyMDBiKzIyNDMtMHgyNTJlKSwoMHgxZWQ5KzEwMzYtMHgxZjNkKSwoMHhkZjYrMTA5LTB4YWMwKSwoMHgyMGM5KzE2NDgtMHgyM2ExKQorLCgweDEyMTkrODE4LTB4MTFhZCksKDB4MTU4NyszNzAwLTB4MjM1YiksKDB4MTc1MSs0MTAtMHgxODI1KSwKKygweDE1ZDArNDQxMS0weDI2MjUpLCgweDNhMys1MTgxLTB4MTcwMSksKDB4MjMxNSs5NzMtMHgyNjE5KSwoMHgxZWQrNDMwNy0weDEyYTApCissKDB4MTI2MisxMzQ4LTB4MTc4NSksKDB4ZmNhKzE1MTItMHgxNTkwKSwoMHg1YTcrNTEwNi0weDE5NzYpLAorKDB4ZTU5KzU0MDYtMHgyMmQzKSwoMHgyNjMrMzA5My0weGU1MyksKDB4ZTk4KzYwMDUtMHgyNWU3KSwoMHg2MzcrMjE3MC0weGU4YSksCisoMHgyNTQ4KzEyNy0weDI1OWYpLCgweDI1N2ErMTc2LTB4MjYwMSksKDB4MTQ0KzkzMjAtMHgyNTgyKSwoMHgxOGYrMTIwOC0weDYxYyksCisoMHgxNTI0KzEwMzAtMHgxOGZlKSwoMHgxZDRmKzE5OTgtMHgyNGYwKSwoMHgzMGMrMjEyNC0weGIyYSksKDB4NTE2KzgwMTItMHgyNDMzKQorLCgweGZlOSszMDkwLTB4MWJjYiksKDB4M2M5KzYyMDAtMHgxYmQwKSwoMHhiYjErNDU0NC0weDFkM2YpLCgweDJjNCs5NzYtMHg2NjEpLAorKDB4MTAwOCsyMTc0LTB4MTg1MiksKDB4OWYrMjUzMC0weGE0YyksKDB4MTVhZCszOTk2LTB4MjUxMyksKDB4OGYzKzMwOC0weDlmMCksCisoMHg0MWMrMTg5MS0weGI0NyksKDB4MTNmYis3NTMtMHgxNmIzKSwoMHgxZWFjKzE2NTYtMHgyNGVhKSwoMHgxYzY1KzIzMTMtMHgyNTMzKQorLCgweDIyMjYrNTYzLTB4MjQxZCksKDB4NWIyKzY1NDUtMHgxZjA2KSwoMHg4YisyNTE1LTB4YTIwKSwoMHgxMjgwKzExMjUtMHgxNmE2KSwKKygweDFhM2ErMjc3NC0weDI0NmYpLCgweDhiYSs1NzE2LTB4MWVjZCksKDB4ZTgyKzcyNy0weDExMTcpLCgweDc4MCs0MzgxLTB4MTg1YSksCisoMHg2Y2QrNDU4OS0weDE4NzYpLCgweDY2NysxMTY3LTB4YWIxKSwoMHgxZmViKzE0MDgtMHgyNTI1KSwoMHg0NzUrMzAyMC0weGZmYSksCisoMHg0OSs4MjU1LTB4MjA0MCksKDB4NTViKzIwMTEtMHhjZWQpLCgweDE2OGErMjA3NS0weDFlNWIpLCgweDE1NjErMTE5Ny0weDE5YzMpLAorKDB4MTlmZisyNDAzLTB4MjMxNiksKDB4MTI5ZisyODEyLTB4MWQ0ZSksKDB4OGU5KzEyMjctMHhkNjYpLCgweDU3ZCs1ODkzLTB4MWMzMykKKywoMHgyZmErNDM2My0weDEzYjUpLCgweDU5Nis4MDcwLTB4MjRjYiksKDB4MTVkOCsyNDQtMHgxNjdhKSwoMHg0NjQrNDE3NC0weDE0NWYpCissKDB4MzkyKzM5NjMtMHgxMmI5KSwoMHg2MDArNzQzLTB4ODkyKSwoMHgzZWYrNTEwNC0weDE3ODkpLCgweGExOSsyNTE1LTB4MTM5NSksCisoMHgzZDkrMjMzMy0weGM5ZSksKDB4NmErODc1OC0weDIyNDcpLCgweDhlOCsyMDYwLTB4MTA5YSksKDB4ZTViKzI0NzEtMHgxNzNlKSwKKygweDYwMCszMDg1LTB4MTEzNyksKDB4NGFmKzI4MDQtMHhlZDIpLCgweDg3ZCsxNTMxLTB4ZDljKSwoMHgxNjUwKzE4MDktMHgxY2JhKSwKKygweDFhMTArMTg5NC0weDIwYjcpLCgweGM1KzUzOTYtMHgxNTc4KSwoMHg3ODgrMjMwNS0weDEwMjcpLCgweDdmNSs0NzkyLTB4MWE0YSksCisoMHgxYTRiKzM5OC0weDFiNzUpLCgweDFiMzgrMjQ1Ny0weDI0NmMpLCgweDEzMTErNzEzLTB4MTU3NCksKDB4YTdjKzcyMzItMHgyNjU1KQorLCgweDE5MGErMTM3My0weDFkZmYpLCgweDkzOCsxNzIxLTB4Zjg4KSwoMHgyMTJhKzE0NzAtMHgyNjdlKSwKKygweDI0Yys5MDAxLTB4MjUwYSksKDB4YTk4KzYyNTktMHgyMjlmKSwoMHg2NDIrNDM2Ni0weDE2ZTMpLCgweDkzNCs3MjIyLTB4MjRmYyksCisoMHhlNWMrMTgwNS0weDE0ZmEpLCgweGQ5MCszOTAxLTB4MWM1ZCksKDB4M2JiKzM1OC0weDRiMCksKDB4YmY2KzI3NTgtMHgxNjRhKSwKKygweDljMCs3MDIxLTB4MjRiYSksKDB4MTBkNSszMTkwLTB4MWNkNyksKDB4MzgxKzY3NzQtMHgxZDgyKSwoMHg2MDMrNjA0My0weDFkMjgpCissKDB4ODM0KzMxMi0weDhmNSksKDB4MTI4Mys2NTQtMHgxNDk5KSwoMHg1MjQrMTQ2LTB4NTNkKSwoMHg2MWQrNjQwNy0weDFlYWEpLAorKDB4MWNiKzY4MzItMHgxYjk3KSwoMHg0MTgrNjQwNC0weDFjMjYpLCgweDE4ZWMrMzYwMy0weDI2MGUpLCgweDQ2OCs2Mzk2LTB4MWM2OCkKKywoMHg2ZTgrNDItMHg2MzIpfTtpbnQgQnl0ZXMyU3RyaW5nKGNvbnN0IHVuc2lnbmVkIGNoYXIqcFNyYyxjaGFyKnBEc3QsaW50IAorblNyY0xlbmd0aCl7Y29uc3QgY2hhciB0YWJbXT0iMDEyMzQ1Njc4OUFCQ0RFRiI7aW50IGk9KDB4NzVjKzcxNDctMHgyMzQ3KTtpZigKK3BTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MTkzKzM3OTUtMHgxMDY2KSl7cmV0dXJuLSgweDYzNCsxMDQtMHg2OWIpCis7fWZvcihpPSgweDE5OTUrMTkzNC0weDIxMjMpO2k8blNyY0xlbmd0aDtpKyspeypwRHN0Kys9dGFiWypwU3JjPj4KKygweDlhNiszMTA1LTB4MTVjMyldOypwRHN0Kys9dGFiWypwU3JjJigweDUyMSs3NjA0LTB4MjJjNildO3BTcmMrKzt9KnBEc3Q9J1wwJzsKK3JldHVybiBuU3JjTGVuZ3RoKigweDEwY2ErMzQwOC0weDFlMTgpO31pbnQgU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYywKK3Vuc2lnbmVkIGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IGk9KDB4NmVkKzM5ODktMHgxNjgyKTtpZihwU3JjPT1OVUxMfHxwRHN0Cis9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MTAwNCszODA2LTB4MWVlMikpe3JldHVybi0oMHhiMDQrMzQxNy0weDE4NWMpO31mb3IoaT0KKygweDZmNSs1NDYzLTB4MWM0Yyk7aTxuU3JjTGVuZ3RoO2krPSgweDY5NSszOTE4LTB4MTVlMSkpe2lmKCpwU3JjPj0KKygoY2hhcikoMHgxMmFmKzIzMDQtMHgxYjdmKSkmJipwU3JjPD0oKGNoYXIpKDB4MTRkKzc2MTYtMHgxZWQ0KSkpeypwRHN0PSgqcFNyYy0KKygoY2hhcikoMHgzZDcrMjIzNC0weGM2MSkpKTw8KDB4MjUzNCsxMDQtMHgyNTk4KTt9ZWxzZXsqcERzdD0oKHRvdXBwZXIoKnBTcmMpLQorKChjaGFyKSgweGQ2MisyNjE1LTB4MTc1OCkpKSsoMHgyMWJhKzE3NS0weDIyNWYpKTw8KDB4Mzc0KzY1MTUtMHgxY2UzKTt9cFNyYysrOworaWYoKnBTcmM+PSgoY2hhcikoMHgxYTczKzE2Mi0weDFhZTUpKSYmKnBTcmM8PSgoY2hhcikoMHgxNGEzKzExNDMtMHgxOGUxKSkpeyoKK3BEc3R8PSpwU3JjLSgoY2hhcikoMHhlZWQrMjE5OC0weDE3NTMpKTt9ZWxzZXsqcERzdHw9KHRvdXBwZXIoKnBTcmMpLQorKChjaGFyKSgweDU3ZCs4MzI4LTB4MjVjNCkpKSsoMHgxZGU4KzI4MS0weDFlZjcpO31wU3JjKys7cERzdCsrO31yZXR1cm4gCituU3JjTGVuZ3RoLygweDg5ZCszNDItMHg5ZjEpO31pbnQgRW5jb2RlVWNzMihjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgY2hhcipwRHN0LAoraW50IG5TcmNMZW5ndGgpe2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MTlkKzcwODEtMHgxZDQ2KSl7CityZXR1cm4tKDB4ZDI1KzQzMzEtMHgxZTBmKTt9KHZvaWQpU3RyaW5nMkJ5dGVzKHBTcmMscERzdCwoaW50KW5TcmNMZW5ndGgpO3JldHVybgorIG5TcmNMZW5ndGgvKDB4MTlhNSsxMTExLTB4MWRmYSk7fWludCBFbmNvZGU3Yml0KGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKgorcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IG5TcmM7aW50IG5Ec3Q7aW50IG5DaGFyO3Vuc2lnbmVkIGNoYXIgbkxlZnQ9CisoMHg0MTIrNDc4LTB4NWYwKTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDg4NSsxNDAxLTB4ZGZlKSl7CityZXR1cm4tKDB4MWI4Yys5My0weDFiZTgpO31uU3JjPSgweDJhNys3ODQ3LTB4MjE0ZSk7bkRzdD0oMHhkYTMrNDY0NC0weDFmYzcpOword2hpbGUoblNyYzxuU3JjTGVuZ3RoKXtuQ2hhcj1uU3JjJigweDE0NzIrMzc4Ni0weDIzMzUpO2lmKG5DaGFyPT0KKygweDI0NSs1ODc1LTB4MTkzOCkpe25MZWZ0PSpwU3JjO2lmKChnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZz4KKygweGU0NysyNzYtMHhmNWEpKSYmKG5TcmM9PShuU3JjTGVuZ3RoLSgweDZlMSsxNDM1LTB4YzdiKSkpKXtuRHN0Kys7fX1lbHNleypwRHN0Cis9KCpwU3JjPDwoKDB4MTgyKzUwMTctMHgxNTEzKS1uQ2hhcikpfG5MZWZ0O25MZWZ0PSpwU3JjPj5uQ2hhcjtwRHN0Kys7bkRzdCsrO30KK3BTcmMrKztuU3JjKys7fXJldHVybiBuRHN0O31TSU5UMzIgelVmaVNtc19FbmNvZGVQZHVfRGVsaXZlclJlcG9ydChDSEFSKnBEc3QsCitVSU5UOCBUUF9GQ1Mpe1NJTlQzMiBuTGVuZ3RoPSgweDUyNCsyOTc5LTB4MTBjNyk7U0lOVDMyIG5Ec3RMZW5ndGg9CisoMHg3ZDYrMjkzMS0weDEzNDkpO1VJTlQ4IGJ1ZlsoMHhkNzYrMjY0OS0weDE2Y2YpXT17KDB4NThmKzEzNjgtMHhhZTcpfTtpZihOVUxMCis9PXBEc3Qpe3JldHVybi0oMHg1ZTErMTc2MS0weGNjMSk7fWlmKFRQX0ZDUyE9KDB4ODQ5KzI3OTQtMHgxMzMzKSl7YnVmWworKDB4MTZiNysyMTA4LTB4MWVmMyldPSgweDViNCsyODE0LTB4MTBiMik7YnVmWygweDhmOSsyMTczLTB4MTE3NSldPVRQX0ZDUztidWZbCisoMHgxNjhkKzExMjgtMHgxYWYzKV09KDB4MThmNSsyNDc4LTB4MjJhMyk7bkRzdExlbmd0aCs9Qnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFsKK25Ec3RMZW5ndGhdLCgweDE0NTUrMTI1My0weDE5MzcpKTt9ZWxzZXtidWZbKDB4MTEzYSsyMzYyLTB4MWE3NCldPQorKDB4MWUwMCsxMDIzLTB4MjFmZik7YnVmWygweDg0YysyLTB4ODRkKV09KDB4MWU5OCs2NjktMHgyMTM1KTtuRHN0TGVuZ3RoKz0KK0J5dGVzMlN0cmluZyhidWYsJnBEc3RbbkRzdExlbmd0aF0sKDB4MWFlMCs1NTgtMHgxZDBjKSk7fXJldHVybiBuRHN0TGVuZ3RoO30KIHVuc2lnbmVkIGxvbmcgelVmaVNtc19Db252ZXJ0QXNjaWlUb0dzbURlZmF1bHQoY29uc3QgdW5zaWduZWQgY2hhcippbnB1dHMsCi11bnNpZ25lZCBjaGFyKm91dHB1dHMsdW5zaWduZWQgbG9uZyBsZW4pe3Vuc2lnbmVkIGxvbmcgaT0oMHgyZDkrMzEyLTB4NDExKTsKLXVuc2lnbmVkIGxvbmcgaj0oMHgzM2ErNjg4Mi0weDFlMWMpO3Vuc2lnbmVkIGxvbmcgaz0oMHg0ZmYrMTUzMi0weGFmYik7aWYoTlVMTD09Ci1pbnB1dHN8fE5VTEw9PW91dHB1dHMpe3ByaW50ZigKK3Vuc2lnbmVkIGNoYXIqb3V0cHV0cyx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPSgweGYwNCs1MDg2LTB4MjJlMik7Cit1bnNpZ25lZCBsb25nIGo9KDB4OWNkKzczNDItMHgyNjdiKTt1bnNpZ25lZCBsb25nIGs9KDB4MTQ0MSszMzg4LTB4MjE3ZCk7aWYoTlVMTAorPT1pbnB1dHN8fE5VTEw9PW91dHB1dHMpe3ByaW50ZigKICJceDczXHg2ZFx4NzNceDNhXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NFx4NzMiKTsKLXJldHVybigweDViYSs4NDAwLTB4MjY4YSk7fWZvcihpPSgweDE2YTcrMzY2Ny0weDI0ZmEpO2k8bGVuO2krKyl7aj1pbnB1dHNbaV07aWYoCi1nX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXTwoMHg4OWMrNzUxMS0weDI0ZjQpKXtvdXRwdXRzW2tdPQorcmV0dXJuKDB4NmE2KzMwMDYtMHgxMjY0KTt9Zm9yKGk9KDB4MTJmKzU0NTMtMHgxNjdjKTtpPGxlbjtpKyspe2o9aW5wdXRzW2ldO2lmKAorZ196VWZpU21zX0FzY2lpVG9Hc21kZWZhdWx0VGFibGVbal08KDB4MWYxKzkxNy0weDQ4Nykpe291dHB1dHNba109CiBnX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXTt9ZWxzZXtvdXRwdXRzW2tdPSgKLWdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW2pdJjY1MjgwKT4+KDB4MWIxMSszODctMHgxYzhjKTtrKys7b3V0cHV0c1trXT0oCi1nX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXSYoMHgzZGIrMzU5NS0weDEwZTcpKTt9aysrO31yZXR1cm4gazt9CitnX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXSY2NTI4MCk+PigweDFhNSsxMzExLTB4NmJjKTtrKys7b3V0cHV0c1trXT0oCitnX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXSYoMHhhZGQrNDk4Ni0weDFkNTgpKTt9aysrO31yZXR1cm4gazt9CiB1bnNpZ25lZCBsb25nIHpVZmlTbXNfQ29udmVydFVjczJUb1NwYW5pc2goY29uc3QgdW5zaWduZWQgY2hhcipkZWYsdW5zaWduZWQgY2hhcgotKmdzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4MTE0MSs1MDYxLTB4MjUwNik7dW5zaWduZWQgCi1sb25nIGs9KDB4MTY2Zis5NDQtMHgxYTFmKTt1bnNpZ25lZCBsb25nIHA9KDB4MTJmNSs0OTU4LTB4MjY1Myk7dW5zaWduZWQgbG9uZyAKLXRtcD0oMHg2M2QrNzMyMC0weDIyZDUpO3Vuc2lnbmVkIGxvbmcgczE9KDB4NDA3KzE1NzctMHhhMzApLHMyPQotKDB4NjMxKzQwNTYtMHgxNjA5KTt1bnNpZ25lZCBsb25nIHE9KDB4NzhkKzE0MDMtMHhkMDgpO3MxPXNpemVvZigKKypnc21fZGVmYXVsdCx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPSgweDE1OSsxMDU0LTB4NTc3KTt1bnNpZ25lZCBsb25nCisgaz0oMHhiNGMrMTI2Ni0weDEwM2UpO3Vuc2lnbmVkIGxvbmcgcD0oMHgxMmY2Kzc3MC0weDE1ZjgpO3Vuc2lnbmVkIGxvbmcgdG1wPQorKDB4Y2Y0KzUzOTktMHgyMjBiKTt1bnNpZ25lZCBsb25nIHMxPSgweDE5MisyNjkzLTB4YzE3KSxzMj0oMHg5OTQrMTc0MC0weDEwNjApOwordW5zaWduZWQgbG9uZyBxPSgweDZmYys3ODQ0LTB4MjVhMCk7czE9c2l6ZW9mKAogenRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAotenRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFsoMHhjYTUrMzU4OC0weDFhYTkpXSk7czI9c2l6ZW9mKAorenRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFsoMHg4ZjArNTk1Ny0weDIwMzUpXSk7czI9c2l6ZW9mKAogVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTKS9zaXplb2YoVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTWwotKDB4MTNkZCsxNzk2LTB4MWFlMSldKTtmb3IoaT0oMHg0ZWErMTIyMC0weDlhZSk7aTxsZW47aSsrKXtpZihkZWZbaV09PQotKDB4M2IyKzg1ODEtMHgyNTM3KSl7aSsrO2lmKFVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX0FTQ1tkZWZbaV1dIT1OT05fR1NNKXsKKygweDIzYWMrNjQxLTB4MjYyZCldKTtmb3IoaT0oMHhhNGErMjIzNS0weDEzMDUpO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KKygweDMwZis4Njg0LTB4MjRmYikpe2krKztpZihVY3MyX1RvX0dzbTdfU1BBTklTSF9UYWJsZV9BU0NbZGVmW2ldXSE9Tk9OX0dTTSl7CiBnc21fZGVmYXVsdFtrXT1VY3MyX1RvX0dzbTdfU1BBTklTSF9UYWJsZV9BU0NbZGVmW2ldXTtrKys7Y29udGludWU7fWVsc2UgaWYoKAotVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW2RlZltpXV09PU5PTl9HU00pJiYoZGVmW2ldPT0oMHhkNDErMTM0NC0weDEyNjEpKSkKLXtnc21fZGVmYXVsdFtrXT0oMHgxZjgrNzIwMS0weDFkZjkpO2srKztjb250aW51ZTt9Zm9yKHE9KDB4MTgzNCs2ODAtMHgxYWRjKTtxPHMxCi07cSsrKXtpZihkZWZbaV09PXp0ZV9zbXNfR1NNN19TUEFOSVNIX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4NTRhKzM5MTMtMHgxNDkyKV0pewotZ3NtX2RlZmF1bHRba109KDB4MTViNysxOTEyLTB4MWQxNCk7aysrO2dzbV9kZWZhdWx0W2tdPQotenRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFtxXVsoMHhhMTErMjQwOC0weDEzNzkpXTticmVhazt9fX1lbHNle3RtcD0KLShkZWZbaV08PCgweDE1ZmQrMzEzLTB4MTcyZSkpK2RlZltpKygweGJlOCs1OTc2LTB4MjMzZildO2krKztpZih0bXA9PTgzNjQpewotZ3NtX2RlZmF1bHRba109KDB4MTQ2KzE3ODEtMHg4MjApO2srKztnc21fZGVmYXVsdFtrXT0oMHg5YzErMzc2NS0weDE4MTEpO2srKzt9Ci1mb3IocD0oMHgxNTNiKzI2MjEtMHgxZjc4KTtwPHMyO3ArKyl7aWYodG1wPT1VY3MyX1RvX0dzbTdfU1BBTklTSF9UYWJsZV9VQ1NbcF1bCi0oMHg5OTArNDY1OS0weDFiYzIpXSl7Z3NtX2RlZmF1bHRba109VWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTW3BdWwotKDB4MTBiMisyNjQzLTB4MWIwNSldO2JyZWFrO319fWsrKzt9Z3NtX2RlZmF1bHRba109J1wwJztyZXR1cm4gazt9dW5zaWduZWQgbG9uZyAKK1VjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09KDB4YzAxKzI3MzgtMHgxNjkzKSkpCit7Z3NtX2RlZmF1bHRba109KDB4MTlhNisyOTgwLTB4MjUyYSk7aysrO2NvbnRpbnVlO31mb3IocT0oMHhjNjArNTIwOC0weDIwYjgpO3E8CitzMTtxKyspe2lmKGRlZltpXT09enRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFtxXVsoMHg2MmMrNzY1NC0weDI0MTEpXQorKXtnc21fZGVmYXVsdFtrXT0oMHg1OTkrMzg0Ni0weDE0ODQpO2srKztnc21fZGVmYXVsdFtrXT0KK3p0ZV9zbXNfR1NNN19TUEFOSVNIX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4M2YrNTQ4OS0weDE1YjApXTticmVhazt9fX1lbHNle3RtcD0oCitkZWZbaV08PCgweDFhMGErMjMxMC0weDIzMDgpKStkZWZbaSsoMHgxZTYrNjQ3LTB4NDZjKV07aSsrO2lmKHRtcD09ODM2NCl7Citnc21fZGVmYXVsdFtrXT0oMHg3Y2QrNzQxMy0weDI0YTcpO2srKztnc21fZGVmYXVsdFtrXT0oMHgxYTI3KzI5ODktMHgyNTZmKTtrKys7fQorZm9yKHA9KDB4MTJkOCsxNTY0LTB4MThmNCk7cDxzMjtwKyspe2lmKHRtcD09VWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTW3BdWworKDB4MWNmKzEyMDQtMHg2ODIpXSl7Z3NtX2RlZmF1bHRba109VWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTW3BdWworKDB4N2UwKzk3Mi0weGJhYyldO2JyZWFrO319fWsrKzt9Z3NtX2RlZmF1bHRba109J1wwJztyZXR1cm4gazt9dW5zaWduZWQgbG9uZyAKIHpVZmlTbXNfQ29udmVydFVjczJUb1BvcnR1Z3Vlc2UoY29uc3QgdW5zaWduZWQgY2hhcipkZWYsdW5zaWduZWQgY2hhcioKLWdzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4MTRmOSszNzkwLTB4MjNjNyk7dW5zaWduZWQgCi1sb25nIGs9KDB4NzQ1Kzc0MzctMHgyNDUyKTt1bnNpZ25lZCBsb25nIHA9KDB4MTY2OSs1MjktMHgxODdhKTt1bnNpZ25lZCBsb25nIHRtcAotPSgweDM2YSs1NTg1LTB4MTkzYik7dW5zaWduZWQgbG9uZyBzMT0oMHgxMmIyKzQ3MjItMHgyNTI0KSxzMj0KLSgweDhjMCs3MTk3LTB4MjRkZCk7dW5zaWduZWQgbG9uZyBxPSgweDE1NDMrNDM3OS0weDI2NWUpO3MxPXNpemVvZigKK2dzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4NDdkKzg0OTktMHgyNWIwKTt1bnNpZ25lZCBsb25nCisgaz0oMHg1Zis4MjkxLTB4MjBjMik7dW5zaWduZWQgbG9uZyBwPSgweDEwYTQrNzM0LTB4MTM4Mik7dW5zaWduZWQgbG9uZyB0bXA9CisoMHhlNmYrNzM3LTB4MTE1MCk7dW5zaWduZWQgbG9uZyBzMT0oMHgxNjgwKzI4ODctMHgyMWM3KSxzMj0oMHhjMjUrMTM2Ny0weDExN2MpOwordW5zaWduZWQgbG9uZyBxPSgweGQ0Mis4MDMtMHgxMDY1KTtzMT1zaXplb2YoCiB6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCi16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4WygweDEzNzErMzA3OS0weDFmNzgpXSk7czI9c2l6ZW9mKAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFsoMHgxNTI1KzIxODItMHgxZGFiKV0pO3MyPXNpemVvZigKIFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDUykvc2l6ZW9mKFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDU1sKLSgweDJlYisxNTYxLTB4OTA0KV0pO2ZvcihpPSgweGM4NSs2NTg5LTB4MjY0Mik7aTxsZW47aSsrKXtpZihkZWZbaV09PQotKDB4NGM5KzY4MDMtMHgxZjVjKSl7aSsrO2lmKFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX0FTQ1tkZWZbaV1dIT1OT05fR1NNKXsKKygweDE3ZjIrMTAzMi0weDFiZmEpXSk7Zm9yKGk9KDB4NzRkKzExMjQtMHhiYjEpO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KKygweGUyKzM3ODMtMHhmYTkpKXtpKys7aWYoVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW2RlZltpXV0hPU5PTl9HU00pewogZ3NtX2RlZmF1bHRba109VWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW2RlZltpXV07aysrO2NvbnRpbnVlO31lbHNlIGlmKCgKIFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09Ci0oMHg1NWMrNDIxMS0weDE1YWYpKSl7Z3NtX2RlZmF1bHRba109KDB4YzMrODc2NC0weDIyZGYpO2srKztjb250aW51ZTt9Zm9yKHE9Ci0oMHhhY2MrNzc1LTB4ZGQzKTtxPHMxO3ErKyl7aWYoZGVmW2ldPT16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4WwotcV1bKDB4MWM1NSsxNTI5LTB4MjI0ZCldKXtnc21fZGVmYXVsdFtrXT0oMHhiYzQrMzk5Mi0weDFiNDEpO2srKztnc21fZGVmYXVsdFtrXT0KLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4MzY5KzE3NzQtMHhhNTcpXTticmVhazt9fX1lbHNlewotdG1wPShkZWZbaV08PCgweDEwNis1NzEzLTB4MTc0ZikpK2RlZltpKygweDExN2IrMjQ5LTB4MTI3MyldO2krKztpZih0bXA9PTgzNjQpewotZ3NtX2RlZmF1bHRba109KDB4MTlhOCsxODkyLTB4MjBmMSk7aysrO2dzbV9kZWZhdWx0W2tdPSgweGJlMSs1MzU4LTB4MjA2YSk7aysrOwotY29udGludWU7fWZvcihwPSgweDEzYjYrNDA5NC0weDIzYjQpO3A8czI7cCsrKXtpZih0bXA9PQotVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTW3BdWygweDE1OGIrMjY4MS0weDIwMDMpXSl7Z3NtX2RlZmF1bHRba109Ci1VY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9VQ1NbcF1bKDB4MTUwYisyNzUtMHgxNjFlKV07YnJlYWs7fX19aysrO30KLWdzbV9kZWZhdWx0W2tdPSdcMCc7cmV0dXJuIGs7fXVuc2lnbmVkIGxvbmcgelVmaVNtc19Db252ZXJ0VWNzMlRvR3NtRGVmYXVsdCgKLWNvbnN0IHVuc2lnbmVkIGNoYXIqZGVmLHVuc2lnbmVkIGNoYXIqZ3NtX2RlZmF1bHQsdW5zaWduZWQgbG9uZyBsZW4pe3Vuc2lnbmVkIAotbG9uZyBpPSgweDI2MysyODE0LTB4ZDYxKTt1bnNpZ25lZCBsb25nIGs9KDB4MjRiKzM5NzYtMHgxMWQzKTt1bnNpZ25lZCBsb25nIHA9Ci0oMHgxNzhhKzE5OTItMHgxZjUyKTt1bnNpZ25lZCBsb25nIHRtcD0oMHhmMGIrNDQwMS0weDIwM2MpO3Vuc2lnbmVkIGxvbmcgczE9Ci0oMHgxYTYxKzEyNDMtMHgxZjNjKSxzMj0oMHgyMTA0KzE4Ni0weDIxYmUpO3Vuc2lnbmVkIGxvbmcgcT0oMHgxYTg4KzI3NjQtMHgyNTU0KQotO3MxPXNpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbKDB4NDg3KzgwNDItMHgyM2YxKV0pO3MyPXNpemVvZigKLVVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9VQ1MyKS9zaXplb2YoVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbCi0oMHgxMzExKzIxMzItMHgxYjY1KV0pO2ZvcihpPSgweDE1NTkrMTUxNy0weDFiNDYpO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KLSgweDZhKzE4NzEtMHg3YjkpKXtpKys7aWYoVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tkZWZbaV1dIT1OT05fR1NNKXsKLWdzbV9kZWZhdWx0W2tdPVVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9BU0NbZGVmW2ldXTtrKys7Y29udGludWU7fWVsc2UgaWYoKAotVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09KDB4MTg2MSs5NzgtMHgxYzEzKSkpewotZ3NtX2RlZmF1bHRba109KDB4ZWQ5KzIyODktMHgxN2FhKTtrKys7Y29udGludWU7fWZvcihxPSgweDE5NWMrMTkxNi0weDIwZDgpO3E8czEKLTtxKyspe2lmKGRlZltpXT09enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4MTNlYiszMDY4LTB4MWZlNildKXsKLWdzbV9kZWZhdWx0W2tdPSgweDgyNisyMjEzLTB4MTBiMCk7aysrO2dzbV9kZWZhdWx0W2tdPQotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4OGEzKzc1NzEtMHgyNjM2KV07YnJlYWs7fX19ZWxzZXt0bXA9KAotZGVmW2ldPDwoMHg3MzYrNzU5NS0weDI0ZDkpKStkZWZbaSsoMHg4Mys3NzY4LTB4MWVkYSldO2krKztpZih0bXA9PTgzNjQpewotZ3NtX2RlZmF1bHRba109KDB4MTNjOCszMTQtMHgxNGU3KTtrKys7Z3NtX2RlZmF1bHRba109KDB4MTQ2KzIwOTEtMHg5MGMpO2srKzsKLWNvbnRpbnVlO31mb3IocD0oMHhjOWQrMTgzNS0weDEzYzgpO3A8czI7cCsrKXtpZih0bXA9PQotVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4MTlkNCsyNDg5LTB4MjM4YyldKXtnc21fZGVmYXVsdFtrXT0KLVVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9VQ1MyW3BdWygweDEzNDYrNDI3MS0weDIzZjUpXTticmVhazt9fX1rKys7fWdzbV9kZWZhdWx0Ci1ba109J1wwJztyZXR1cm4gazt9VUlOVDggelVmaVNtc19Uc0ludFRvQmNkKGNvbnN0IFVJTlQ4IGkpe3JldHVybihVSU5UOCkoKChpJQotKDB4YTdjKzEwMC0weGFkNikpKygoaS8oMHg2NWYrODA3Ni0weDI1ZTEpKTw8KDB4NGI4KzIxNDgtMHhkMTgpKSkpO312b2lkIAorKDB4MTA2Mis0MjYtMHgxMWVjKSkpe2dzbV9kZWZhdWx0W2tdPSgweGE5KzU3ODktMHgxNzI2KTtrKys7Y29udGludWU7fWZvcihxPQorKDB4ZDljKzE2MzAtMHgxM2ZhKTtxPHMxO3ErKyl7aWYoZGVmW2ldPT0KK3p0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4YzFjKzQwNzAtMHgxYzAxKV0pe2dzbV9kZWZhdWx0W2tdCis9KDB4NzFiKzI3NTgtMHgxMWM2KTtrKys7Z3NtX2RlZmF1bHRba109enRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeAorW3FdWygweDMzYis1NTU3LTB4MThmMCldO2JyZWFrO319fWVsc2V7dG1wPShkZWZbaV08PCgweGIxMSs1Mzk3LTB4MjAxZSkpK2RlZltpKworKDB4NjcxKzUwNTYtMHgxYTMwKV07aSsrO2lmKHRtcD09ODM2NCl7Z3NtX2RlZmF1bHRba109KDB4ODUyKzcxOTItMHgyNDRmKTtrKys7Citnc21fZGVmYXVsdFtrXT0oMHhmOGYrMjg2OC0weDFhNWUpO2srKztjb250aW51ZTt9Zm9yKHA9KDB4ZjNiKzMwNDMtMHgxYjFlKTtwPHMyOworcCsrKXtpZih0bXA9PVVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDU1twXVsoMHg0NjIrNDE2My0weDE0YTQpXSl7Citnc21fZGVmYXVsdFtrXT1VY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9VQ1NbcF1bKDB4MTAxKzYwMzItMHgxODkxKV07YnJlYWs7fQorfX1rKys7fWdzbV9kZWZhdWx0W2tdPSdcMCc7cmV0dXJuIGs7fXVuc2lnbmVkIGxvbmcgCit6VWZpU21zX0NvbnZlcnRVY3MyVG9Hc21EZWZhdWx0KGNvbnN0IHVuc2lnbmVkIGNoYXIqZGVmLHVuc2lnbmVkIGNoYXIqCitnc21fZGVmYXVsdCx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPSgweDE3N2ErMzUzNC0weDI1NDgpO3Vuc2lnbmVkIAorbG9uZyBrPSgweGUxZis0ODU5LTB4MjExYSk7dW5zaWduZWQgbG9uZyBwPSgweDFlYzYrNDUwLTB4MjA4OCk7dW5zaWduZWQgbG9uZyB0bXAKKz0oMHgyMGRkKzQ3OC0weDIyYmIpO3Vuc2lnbmVkIGxvbmcgczE9KDB4NTczKzc4MjItMHgyNDAxKSxzMj0oMHhlYis0NDY0LTB4MTI1Yik7Cit1bnNpZ25lZCBsb25nIHE9KDB4NmIzKzc1MjEtMHgyNDE0KTtzMT1zaXplb2YoCit6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4WworKDB4OTNiKzU2MTctMHgxZjJjKV0pO3MyPXNpemVvZihVQ1MyX1RvX0dTTURlZmF1bHRfVGFibGVfVUNTMikvc2l6ZW9mKAorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbKDB4OTgrNTExMS0weDE0OGYpXSk7Zm9yKGk9KDB4MjI1ZisyMzItMHgyMzQ3KTtpPAorbGVuO2krKyl7aWYoZGVmW2ldPT0oMHg1Y2MrNDQ3NC0weDE3NDYpKXtpKys7aWYoVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tkZWYKK1tpXV0hPU5PTl9HU00pe2dzbV9kZWZhdWx0W2tdPVVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9BU0NbZGVmW2ldXTtrKys7Y29udGludWU7Cit9ZWxzZSBpZigoVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09CisoMHg5MWMrNDY4LTB4YWQwKSkpe2dzbV9kZWZhdWx0W2tdPSgweDkxMSs0MDgxLTB4MThlMik7aysrO2NvbnRpbnVlO31mb3IocT0KKygweDM3MSs1NzIzLTB4MTljYyk7cTxzMTtxKyspe2lmKGRlZltpXT09enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bCisoMHhkY2ErMjQxLTB4ZWJhKV0pe2dzbV9kZWZhdWx0W2tdPSgweDMzNSsxOS0weDMyZCk7aysrO2dzbV9kZWZhdWx0W2tdPQorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4NmIxKzM2NDktMHgxNGYyKV07YnJlYWs7fX19ZWxzZXt0bXA9KAorZGVmW2ldPDwoMHhiM2IrNDk1LTB4ZDIyKSkrZGVmW2krKDB4ZWU4KzU1NDgtMHgyNDkzKV07aSsrO2lmKHRtcD09ODM2NCl7Citnc21fZGVmYXVsdFtrXT0oMHgxODNmKzUwOS0weDFhMjEpO2srKztnc21fZGVmYXVsdFtrXT0oMHgxNGQ2KzU0My0weDE2OTApO2srKzsKK2NvbnRpbnVlO31mb3IocD0oMHg1NTMrMzUwNi0weDEzMDUpO3A8czI7cCsrKXtpZih0bXA9PQorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4MWEwNys3NzctMHgxZDBmKV0pe2dzbV9kZWZhdWx0W2tdPQorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4ZjFkKzI4NDktMHgxYTNlKV07YnJlYWs7fX19aysrO31nc21fZGVmYXVsdFsKK2tdPSdcMCc7cmV0dXJuIGs7fVVJTlQ4IHpVZmlTbXNfVHNJbnRUb0JjZChjb25zdCBVSU5UOCBpKXtyZXR1cm4oVUlOVDgpKCgoaSUKKygweDllYysxNjktMHhhOGIpKSsoKGkvKDB4ZjQ0KzIxNzktMHgxN2JkKSk8PCgweDEwNzUrNDg2MS0weDIzNmUpKSkpO312b2lkIAogelVmaVNtc19EZWNvZGVSZWxhdGl2ZVRpbWUoVUlOVDggaVZhbGlkVGltZSxUX3pVZmlTbXNfVGltZVN0YW1wKnB0VGltZVN0YW1wKXsKLXVpbnQzMiBpPSgweGI4MysxMDA2LTB4ZjcxKTtpZihwdFRpbWVTdGFtcCE9TlVMTCl7bWVtc2V0KCh2b2lkKilwdFRpbWVTdGFtcCwKLSgweDQ2YSs2MjUxLTB4MWNkNSksc2l6ZW9mKHdtc190aW1lc3RhbXBfc190eXBlKSk7aWYoaVZhbGlkVGltZTwKLSgweDExZjIrMjk0OC0weDFjZTYpKXtpPShpVmFsaWRUaW1lKygweDljYisxNDE0LTB4ZjUwKSkqKDB4Njg1KzM3OTctMHgxNTU1KTsKLXB0VGltZVN0YW1wLT5ob3VyPShVSU5UOCl6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpLygweDMyYys3MzEyLTB4MWY4MCkpKTsKLXB0VGltZVN0YW1wLT5taW51dGU9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGklKDB4MWY4MysxMjMzLTB4MjQxOCkpKTt9Ci1lbHNlIGlmKGlWYWxpZFRpbWU8KDB4MjBiZCsxMTA1LTB4MjQ2Nykpe2k9KGlWYWxpZFRpbWUtKDB4MTViOCsxMDA1LTB4MTkxNikpKgotKDB4MTY1MisyODgyLTB4MjE3Nik7cHRUaW1lU3RhbXAtPmhvdXI9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKAotKDB4N2RjKzY3MjgtMHgyMjE4KStpLygweDE5NzgrMTc0NC0weDIwMGMpKSk7cHRUaW1lU3RhbXAtPm1pbnV0ZT0oVUlOVDgpCi16VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpJSgweGRiOSszODI4LTB4MWM3MSkpKTt9ZWxzZSBpZihpVmFsaWRUaW1lPAotKDB4MTgzZCszOTUxLTB4MjZlNykpe2k9aVZhbGlkVGltZS0oMHhhMTIrMTgxMC0weDEwN2UpO3B0VGltZVN0YW1wLT5tb250aD0oVUlOVDgKLSl6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpLygweDExZDYrNTI3My0weDI2NTEpKSk7cHRUaW1lU3RhbXAtPmRheT0oVUlOVDgpCi16VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpJSgweDFiNjIrMTU3Ni0weDIxNmMpKSk7fWVsc2V7aT0oaVZhbGlkVGltZS0KLSgweGZkNiszMDEtMHgxMDQzKSkqKDB4MTE3NCszNTk5LTB4MWY3Yyk7cHRUaW1lU3RhbXAtPnllYXI9KFVJTlQ4KQotelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaS8oMHgxMTExKzU1ODMtMHgyNTczKSkpO3B0VGltZVN0YW1wLT5tb250aD0oVUlOVDgpCi16VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KSgoaSUoMHg2NzgrMzIxLTB4NjRjKSkvKDB4MTk5MiszMjEtMHgxYWI1KSkpOwotcHRUaW1lU3RhbXAtPmRheT0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoKGklKDB4MWFiMCsyMjkyLTB4MjIzNykpJQotKDB4Y2NiKzY2LTB4Y2VmKSkpO319ZWxzZXtwcmludGYoCit1aW50MzIgaT0oMHg4Yis1NzUwLTB4MTcwMSk7aWYocHRUaW1lU3RhbXAhPU5VTEwpe21lbXNldCgodm9pZCopcHRUaW1lU3RhbXAsCisoMHhlYWQrNTYxMC0weDI0OTcpLHNpemVvZih3bXNfdGltZXN0YW1wX3NfdHlwZSkpO2lmKGlWYWxpZFRpbWU8CisoMHg5NmIrNjM1MC0weDIxYTkpKXtpPShpVmFsaWRUaW1lKygweDI0MjErMjA0LTB4MjRlYykpKigweDVlMCs0NzU2LTB4MTg2Zik7CitwdFRpbWVTdGFtcC0+aG91cj0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaS8oMHg0MzYrMTIyNS0weDhjMykpKTsKK3B0VGltZVN0YW1wLT5taW51dGU9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGklKDB4YTM5KzU1NDUtMHgxZmE2KSkpO30KK2Vsc2UgaWYoaVZhbGlkVGltZTwoMHhmYWMrMTI4Mi0weDE0MDcpKXtpPShpVmFsaWRUaW1lLSgweDlhZisyNzg5LTB4MTQwNSkpKgorKDB4MTViMSszMjcwLTB4MjI1OSk7cHRUaW1lU3RhbXAtPmhvdXI9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKAorKDB4NTQ4KzU1NDItMHgxYWUyKStpLygweGNkMys1MjkzLTB4MjE0NCkpKTtwdFRpbWVTdGFtcC0+bWludXRlPShVSU5UOCkKK3pVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGklKDB4YmU5KzQxNzMtMHgxYmZhKSkpO31lbHNlIGlmKGlWYWxpZFRpbWU8CisoMHgyOGYrMzAwMi0weGQ4NCkpe2k9aVZhbGlkVGltZS0oMHg2ZGYrNzY1OS0weDI0MjQpO3B0VGltZVN0YW1wLT5tb250aD0oVUlOVDgpCit6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpLygweDU0Mys0Njk3LTB4MTc3ZSkpKTtwdFRpbWVTdGFtcC0+ZGF5PShVSU5UOCkKK3pVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGklKDB4NWE4Kzc1MjAtMHgyMmVhKSkpO31lbHNle2k9KGlWYWxpZFRpbWUtCisoMHhjYzUrNTMzMC0weDIwZDcpKSooMHgxNjkyKzQ2Ny0weDE4NWUpO3B0VGltZVN0YW1wLT55ZWFyPShVSU5UOCkKK3pVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGkvKDB4MmQ4KzE1NDUtMHg3NzQpKSk7cHRUaW1lU3RhbXAtPm1vbnRoPShVSU5UOCkKK3pVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKChpJSgweDE0NjErNTE0NS0weDI3MGQpKS8oMHhiNTUrMjMwMC0weDE0MzMpKSk7CitwdFRpbWVTdGFtcC0+ZGF5PShVSU5UOCl6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KSgoaSUoMHhmYmYrMjEwMC0weDE2ODYpKSUKKygweDEyMGMrNDA4OS0weDIxZTcpKSk7fX1lbHNle3ByaW50ZigKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDcyXHg2NVx4NmNceDYxXHg3NFx4NjlceDc2XHg2NVx4NWZceDc0XHg2OVx4NmRceDY1IgogKTt9fWludCB6VWZpU21zX0NoYXJUb0ludChjaGFyKnBDaGFyQXJyYXksaW50IGlMZW4sdW5zaWduZWQgY2hhcipwSW50QXJyYXkpe2ludCAKLWk9KDB4YzkrNjM4MS0weDE5YjYpO2lmKHBJbnRBcnJheT09TlVMTHx8cENoYXJBcnJheT09TlVMTCl7cmV0dXJuIFpVRklfRkFJTDt9Zm9yCi0oaT0oMHgyMWQyKzE1NC0weDIyNmMpO2k8aUxlbjtpKyspe3BJbnRBcnJheVtpXT1wQ2hhckFycmF5W2ldLQotKChjaGFyKSgweGQwKzQzNzctMHgxMWI5KSk7fXJldHVybiBaVUZJX1NVQ0M7fXZvaWQgelVmaVNtc19GaWxsR2xvYmFsVHB1ZEdzbTcoCitpPSgweDE0NjIrMTI2My0weDE5NTEpO2lmKHBJbnRBcnJheT09TlVMTHx8cENoYXJBcnJheT09TlVMTCl7cmV0dXJuIFpVRklfRkFJTDt9Citmb3IoaT0oMHhjZTgrMjIwOC0weDE1ODgpO2k8aUxlbjtpKyspe3BJbnRBcnJheVtpXT1wQ2hhckFycmF5W2ldLQorKChjaGFyKSgweDZjYSs0OTEzLTB4MTljYikpO31yZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfRmlsbEdsb2JhbFRwdWRHc203KAogVF96VWZpU21zX1N1Ym1pdFRwZHUqcHRTdWJtaXQsVF96VWZpU21zX0NvbmNhdEluZm8qcHRDb25jYXRTbXMsCi1UX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhKXtpbnQgaT0oMHgxMDNmKzIzNDItMHgxOTY1KTtpZihwdENvbmNhdFNtcy0+Ci10b3RhbF9tc2c+KDB4NGE3KzYzOTUtMHgxZGExKSl7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURIST0oMHg0ZDQrMTA1MS0weDhlZSk7Ci1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgxM2FkKzQwMjItMHgyMzYzKV09KDB4MTQ0Yis2OC0weDE0OGEpOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MTMxNisyMjAyLTB4MWJhZildPSgweDE2YjArMjMwNS0weDFmYWMpOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4ODgxKzE4NDQtMHhmYjMpXT0oMHgzMjIrMjQ5My0weGNkYyk7Ci1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgxMWIrODY3My0weDIyZjkpXT0oY2hhcilwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4MTJkYSsxNzAtMHgxMzg0KV0lKDB4NjIxKzg0OTEtMHgyNjRkKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsKLSgweDE0MWQrNDU2Ny0weDI1ZjApXT0oY2hhcilwdENvbmNhdFNtcy0+dG90YWxfbXNnO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWwotKDB4NTIrNTYwNC0weDE2MzEpXT0oY2hhcilwdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nKygweGMxOCs0OTM5LTB4MWY2Mik7Ci1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHg1MDArNTU3Mi0weDFhYmUpXT0oMHhhZTYrMTUzMC0weDEwZGEpO2ZvcihpPQotKDB4Mzc2KzQ5MTQtMHgxNmE4KTtpPHB0U3VibWl0LT51c2VyX2RhdGEuc21fbGVuO2krKyl7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVUQKLVtpKygweDIxNDIrNTMxLTB4MjM0ZSldPXB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YVtpXTt9Z196VWZpU21zX1NlbmRpbmdTbXMuCi1UUF9VRExlbmd0aD1wdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbisoMHgxMmE1KzM1OTEtMHgyMGE1KTt9ZWxzZXtmb3IoaT0KLSgweDEwNGMrMjA4OS0weDE4NzUpO2k8cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9sZW47aSsrKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy4KK1RfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2ludCBpPSgweDg5MSs2MjktMHhiMDYpO2lmKHB0Q29uY2F0U21zLT4KK3RvdGFsX21zZz4oMHhlMDkrNTU2OC0weDIzYzgpKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VREhJPSgweDE5MGIrMjQyNC0weDIyODIpCis7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4NTdkKzc3MTQtMHgyMzlmKV09KDB4MTU5NSsxNjczLTB4MWMxOSk7CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgzODkrNDE1OS0weDEzYzcpXT0oMHg0MjYrNjUxNi0weDFkOTUpOworZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4ZGYwKzI1OTItMHgxODBlKV09KDB4MjNhKzQxOTEtMHgxMjk2KTsKK2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDg1OSsxNzEwLTB4ZjA0KV09KGNoYXIpcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDM3Yys3ODQ0LTB4MjIyMCldJSgweGM5YSsxMDM4LTB4ZmE5KTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsKKygweDEwMTgrNTcwMC0weDI2NTgpXT0oY2hhcilwdENvbmNhdFNtcy0+dG90YWxfbXNnO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWworKDB4YTYzKzYxNTItMHgyMjY2KV09KGNoYXIpcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHgyMGMrNDc4OS0weDE0YzApOworZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MjQ0KzgwMTgtMHgyMTkwKV09KDB4ZDUyKzIxMS0weGUxZik7Zm9yKGk9CisoMHg4YjMrMjc0NC0weDEzNmIpO2k8cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9sZW47aSsrKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRAorW2krKDB4MTA1Zis0MzY4LTB4MjE2OCldPXB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YVtpXTt9Z196VWZpU21zX1NlbmRpbmdTbXMuCitUUF9VRExlbmd0aD1wdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbisoMHg0ODArNTIyNy0weDE4ZTQpO31lbHNle2ZvcihpPQorKDB4MTUwYys0MDg3LTB4MjUwMyk7aTxwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbjtpKyspe2dfelVmaVNtc19TZW5kaW5nU21zLgogVFBfVURbaV09cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9kYXRhW2ldO31nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRExlbmd0aD0KIHB0U3VibWl0LT51c2VyX2RhdGEuc21fbGVuO319dm9pZCB6VWZpU21zX0ZpbGxHbG9iYWxUcHVkVWNzMigKIFRfelVmaVNtc19TdWJtaXRUcGR1KnB0U3VibWl0LFRfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLAotVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSl7aWYocHRDb25jYXRTbXMtPnRvdGFsX21zZz4KLSgweDE4OTcrNTgyLTB4MWFkYykpe2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VESEk9KDB4NjM5KzM1ODAtMHgxNDM0KTsKLWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDk1NyszNTAtMHhhYjUpXT0oMHg3OWQrMjkyMC0weDEzMDApOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4NGIwKzI1NDYtMHhlYTEpXT0oMHgyMGZiKzQ4Mi0weDIyZDgpOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MWZhZCsxMjUyLTB4MjQ4ZildPSgweDEyZjErMzI4NC0weDFmYzIpOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4ZGY3KzU4ODQtMHgyNGYwKV09KGNoYXIpcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKLSgweDdhYys4NjItMHhiMGEpXSUoMHhhYTErNzUxLTB4YzkxKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsKLSgweDEwODgrMjg5Ny0weDFiZDUpXT0oY2hhcilwdENvbmNhdFNtcy0+dG90YWxfbXNnO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWwotKDB4ZDEwKzM3MDEtMHgxYjgwKV09KGNoYXIpcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHg2OTArMjUxLTB4NzhhKTsodm9pZCkKLUJ5dGVzMlN0cmluZyhwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2RhdGEsJmdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWwotKDB4OWE3KzM1NDQtMHgxNzc5KV0scHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9sZW4pO31lbHNleyh2b2lkKUJ5dGVzMlN0cmluZygKLXB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YSxnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRCxwdFN1Ym1pdC0+dXNlcl9kYXRhLgotc21fbGVuKTt9fXVuc2lnbmVkIGNoYXIgelVmaVNtc19Mb3cySGlnaCh1bnNpZ25lZCBjaGFyIHgpe2lmKHg+PQotKChjaGFyKSgweGE5MCs3MzMyLTB4MjZkMykpJiZ4PCgoY2hhcikoMHg1ZDArMjMzNC0weGU4NykpKXt4PSh4LQotKChjaGFyKSgweDE1YTArMTc1Ny0weDFjMWMpKSkrKChjaGFyKSgweDUzMys1MDIwLTB4MTg4ZSkpO31yZXR1cm4geDt9dW5zaWduZWQgCi1jaGFyIHpVZmlTbXNfQ2hhcjJEZWModW5zaWduZWQgY2hhciB4KXt1bnNpZ25lZCBjaGFyIGQ9KDB4MTJiMiszMDk4LTB4MWVjYyk7aWYoeAotPj0oKGNoYXIpKDB4MTUzMCsxOS0weDE1MDIpKSYmeDwoKGNoYXIpKDB4MWEyKzkxODAtMHgyNTM3KSkpe2Q9KHgtCi0oKGNoYXIpKDB4ZDQyKzI3NTktMHgxN2M4KSkpKygweDEzNGErNDUxNC0weDI0ZTIpO31lbHNle2Q9eC0KLSgoY2hhcikoMHhlZWYrMzAyNi0weDFhOTEpKTt9cmV0dXJuIGQ7fXVuc2lnbmVkIGNoYXIgelVmaVNtc19DaGFyMkJ5dGUodW5zaWduZWQgCi1jaGFyIGEsdW5zaWduZWQgY2hhciBiKXt1bnNpZ25lZCBjaGFyIGRhdGE9KDB4MWQzZCs3NTEtMHgyMDJjKTt1bnNpZ25lZCBjaGFyIGw9Ci0oMHgzYzQrMzQ1Mi0weDExNDApLGg9KDB4MTQyYys4NDEtMHgxNzc1KTthPXpVZmlTbXNfTG93MkhpZ2goYSk7Yj0KLXpVZmlTbXNfTG93MkhpZ2goYik7aD16VWZpU21zX0NoYXIyRGVjKGEpO2w9elVmaVNtc19DaGFyMkRlYyhiKTtkYXRhPWgqCi0oMHgxYWE4KzI4NTQtMHgyNWJlKStsO3JldHVybiBkYXRhO312b2lkIHpVZmlTbXNfU3RyMkJ5dGVzKHVuc2lnbmVkIGNoYXIqdGV4dCwKLWludCB0ZXh0X2xlbix1bnNpZ25lZCBjaGFyKmRhdGEsaW50IGRhdGFfbGVuKXtpbnQgaT0oMHgxYjA3KzE4MzUtMHgyMjMyKTt3aGlsZSgKLSgweDFkNjIrMTk4NS0weDI1MjEpKmkrKDB4NWYxKzY1ODYtMHgxZmFhKTx0ZXh0X2xlbil7ZGF0YVtpXT16VWZpU21zX0NoYXIyQnl0ZSgKLXRleHRbKDB4MjI1Nys2ODgtMHgyNTA1KSppXSx0ZXh0WygweDEzNGQrMjQ0MC0weDFjZDMpKmkrKDB4MTI0MiszNDk5LTB4MWZlYyldKTtpCi0rKzt9fWludCB6VWZpU21zX1NwbGl0U3RyaW5nKGNoYXIqaW5wdXQsY2hhcioqKm91dHB1dCxjaGFyIGNNYXRjaENoYXIpe2ludCBzcmM9Ci0oMHgxM2YyKzIyNDktMHgxY2JiKTtpbnQgZHN0PSgweDIxMiszNTgwLTB4MTAwZSk7aW50IGNvdW50PSgweDQ4MisyMDg2LTB4Y2E4KTsKLWludCBzaXplPSgweGZmMCs4MzUtMHgxMzJiKTtjaGFyIHF1b3RlZD0oMHgxZGIrNTQxMC0weDE2ZmQpO2NoYXIqKnRtcG91dD1OVUxMOyoKK1RfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2lmKHB0Q29uY2F0U21zLT50b3RhbF9tc2c+KDB4NjgwKzYzMi0weDhmNykpCit7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURIST0oMHg1MjArNTk1MS0weDFjNWUpO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWworKDB4NjNmKzE2NjItMHhjYmQpXT0oMHhmMDkrNTA0NC0weDIyYjgpO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWworKDB4Yjg1KzUyOTgtMHgyMDM2KV09KDB4MWJjMiszMjMtMHgxZDAwKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsKKygweGE2Mis3MzI5LTB4MjcwMSldPSgweDk1MisyNjM4LTB4MTM5ZCk7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbCisoMHgxMWYyKzEzMTgtMHgxNzE1KV09KGNoYXIpcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhhZDcrNDc2OS0weDFkNzgpXSUKKygweDY2NSszNDIzLTB4MTJjNSk7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4NzU4KzQyMzEtMHgxN2RiKV09KGNoYXIpCitwdENvbmNhdFNtcy0+dG90YWxfbXNnO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDg4OSs3MzE1LTB4MjUxNyldPShjaGFyKQorcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHgxNmMwKzMzNTYtMHgyM2RiKTsodm9pZClCeXRlczJTdHJpbmcocHRTdWJtaXQtPgordXNlcl9kYXRhLnNtX2RhdGEsJmdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDMyMCs2OTMxLTB4MWUyZCldLHB0U3VibWl0LT4KK3VzZXJfZGF0YS5zbV9sZW4pO31lbHNleyh2b2lkKUJ5dGVzMlN0cmluZyhwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2RhdGEsCitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRCxwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbik7fX11bnNpZ25lZCBjaGFyIAorelVmaVNtc19Mb3cySGlnaCh1bnNpZ25lZCBjaGFyIHgpe2lmKHg+PSgoY2hhcikoMHg5MzArMTg4MS0weDEwMjgpKSYmeDwKKygoY2hhcikoMHhhMDYrOTU1LTB4ZDVhKSkpe3g9KHgtKChjaGFyKSgweDE2N2YrNzEtMHgxNjY1KSkpKworKChjaGFyKSgweDE2ZDYrOTU4LTB4MWE1MykpO31yZXR1cm4geDt9dW5zaWduZWQgY2hhciB6VWZpU21zX0NoYXIyRGVjKHVuc2lnbmVkIAorY2hhciB4KXt1bnNpZ25lZCBjaGFyIGQ9KDB4MjA3KzE3NDYtMHg4ZDkpO2lmKHg+PSgoY2hhcikoMHgxYjUyKzgzOC0weDFlNTcpKSYmeDwKKygoY2hhcikoMHhiNDkrNTE4MC0weDFmM2UpKSl7ZD0oeC0oKGNoYXIpKDB4MTEzZCszODgzLTB4MjAyNykpKSsKKygweDEzMSs3NjI5LTB4MWVmNCk7fWVsc2V7ZD14LSgoY2hhcikoMHhkMGIrNjIxMi0weDI1MWYpKTt9cmV0dXJuIGQ7fXVuc2lnbmVkIAorY2hhciB6VWZpU21zX0NoYXIyQnl0ZSh1bnNpZ25lZCBjaGFyIGEsdW5zaWduZWQgY2hhciBiKXt1bnNpZ25lZCBjaGFyIGRhdGE9CisoMHg2YTQrMjUzNS0weDEwOGIpO3Vuc2lnbmVkIGNoYXIgbD0oMHgxNjkwKzEyNy0weDE3MGYpLGg9KDB4NzEwKzQ4MTYtMHgxOWUwKTthPQorelVmaVNtc19Mb3cySGlnaChhKTtiPXpVZmlTbXNfTG93MkhpZ2goYik7aD16VWZpU21zX0NoYXIyRGVjKGEpO2w9Cit6VWZpU21zX0NoYXIyRGVjKGIpO2RhdGE9aCooMHhlYTUrMjUyOC0weDE4NzUpK2w7cmV0dXJuIGRhdGE7fXZvaWQgCit6VWZpU21zX1N0cjJCeXRlcyh1bnNpZ25lZCBjaGFyKnRleHQsaW50IHRleHRfbGVuLHVuc2lnbmVkIGNoYXIqZGF0YSxpbnQgCitkYXRhX2xlbil7aW50IGk9KDB4MWUyMysxMjA2LTB4MjJkOSk7d2hpbGUoKDB4OWEzKzUyNTUtMHgxZTI4KSppKworKDB4NTgwKzc2MjgtMHgyMzRiKTx0ZXh0X2xlbil7ZGF0YVtpXT16VWZpU21zX0NoYXIyQnl0ZSh0ZXh0WworKDB4MTJmMisxNjc4LTB4MTk3ZSkqaV0sdGV4dFsoMHgxYjk3KzIzNzktMHgyNGUwKSppKygweDRhOSsxNTg2LTB4YWRhKV0pO2krKzt9fQoraW50IHpVZmlTbXNfU3BsaXRTdHJpbmcoY2hhcippbnB1dCxjaGFyKioqb3V0cHV0LGNoYXIgY01hdGNoQ2hhcil7aW50IHNyYz0KKygweDdjNSs2OTgxLTB4MjMwYSk7aW50IGRzdD0oMHgxMmRiKzQ0NS0weDE0OTgpO2ludCBjb3VudD0oMHgzOCsxNzc2LTB4NzI4KTtpbnQgCitzaXplPSgweDExM2ErMjQ0OS0weDFhYzMpO2NoYXIgcXVvdGVkPSgweDIxOCsxODA0LTB4OTI0KTtjaGFyKip0bXBvdXQ9TlVMTDsqCiBvdXRwdXQ9KGNoYXIqKiltYWxsb2Moc2l6ZW9mKGNoYXIqKSpzaXplKTtpZihOVUxMPT0qb3V0cHV0KXtyZXR1cm4tCi0oMHgxMzBjKzc2LTB4MTM1Nyk7fSgqb3V0cHV0KVtjb3VudCsrXT1pbnB1dDtmb3Ioc3JjPWRzdD0oMHgyOTIrOTIyOC0weDI2OWUpOworKDB4Mzg0KzU2MTctMHgxOTc0KTt9KCpvdXRwdXQpW2NvdW50KytdPWlucHV0O2ZvcihzcmM9ZHN0PSgweDc2Mys2MDIwLTB4MWVlNyk7CiBpbnB1dFtzcmNdOyl7Y2hhciBjSW5wdXRDaGFyPWlucHV0W3NyY107aWYoIXF1b3RlZCYmY0lucHV0Q2hhcj09Y01hdGNoQ2hhcil7Ci1pbnB1dFtkc3QrK109KDB4MmNiKzU0NTItMHgxODE3KTt3aGlsZShpbnB1dFsrK3NyY10mJihpbnQpaXNzcGFjZShpbnB1dFtzcmNdKSl7fQotO2lmKGNvdW50Pj1zaXplKXtzaXplKz0oMHg2NjErODI3MS0weDI2YTApO3RtcG91dD0oY2hhcioqKXJlYWxsb2MoKm91dHB1dCxzaXplb2YKLShjaGFyKikqc2l6ZSk7aWYoTlVMTD09dG1wb3V0KXtyZXR1cm4tKDB4YzVkKzUxNTYtMHgyMDgwKTt9Km91dHB1dD10bXBvdXQ7fSgqCi1vdXRwdXQpW2NvdW50KytdPWlucHV0K2RzdDt9ZWxzZSBpZighcXVvdGVkJiYoY0lucHV0Q2hhcj09J1wnJ3x8Y0lucHV0Q2hhcj09Ci0oKGNoYXIpKDB4NGZmKzQ3MTAtMHgxNzQzKSkpKXtxdW90ZWQ9Y0lucHV0Q2hhcjtzcmMrKzt9ZWxzZSBpZihjSW5wdXRDaGFyPT0KLXF1b3RlZCl7cXVvdGVkPSgweDFjZGErMjUwMy0weDI2YTEpO3NyYysrO31lbHNle2lmKGNJbnB1dENoYXI9PSdcXCcmJnF1b3RlZCE9Ci0nXCcnKXtzcmMrKztjSW5wdXRDaGFyPWlucHV0W3NyY107aWYoIWNJbnB1dENoYXIpe2ZyZWUoKm91dHB1dCk7Km91dHB1dD1OVUxMOwotcmV0dXJuLSgweDEwYTArMzkyNi0weDFmZjUpO319aW5wdXRbZHN0KytdPWNJbnB1dENoYXI7c3JjKys7fX1pbnB1dFtkc3RdPQotKDB4MTI2ZCs0MjI1LTB4MjJlZSk7aWYocXVvdGVkKXtmcmVlKCpvdXRwdXQpOypvdXRwdXQ9TlVMTDtyZXR1cm4tCi0oMHgyMGQrMjIwOC0weGFhYyk7fXJldHVybiBjb3VudDt9aW50IHpVZmlTbXNfYXRvaGV4KGNoYXIgYyl7aW50IHJlc3VsdD0KLSgweDgzNys0MTAxLTB4MTgzYyk7aWYoYz49KChjaGFyKSgweDE1YWYrMjUwOS0weDFmNGMpKSYmYzw9Ci0oKGNoYXIpKDB4Yjc0KzcwLTB4YjgxKSkpe3Jlc3VsdD1jLSgoY2hhcikoMHgxM2VjKzQ1OTctMHgyNWIxKSk7fWVsc2UgaWYoYz49Ci0oKGNoYXIpKDB4Mzg3KzQzOTAtMHgxNDRjKSkmJmM8PSgoY2hhcikoMHgxNzE5KzY4Mi0weDE5NWQpKSl7cmVzdWx0PShjLQotKChjaGFyKSgweGZiYisxOTI0LTB4MTZkZSkpKSsoMHg5YjYrNTQzMS0weDFlZTMpO31lbHNlIGlmKGM+PQotKChjaGFyKSgweDQzNSsyNjk1LTB4ZTdiKSkmJmM8PSgoY2hhcikoMHhjZmIrNTgzNS0weDIzODApKSl7cmVzdWx0PShjLQotKChjaGFyKSgweDE2NSsyNDYxLTB4YWMxKSkpKygweDM4YisxMzY1LTB4OGQ2KTt9ZWxzZXthdF9wcmludChMT0dfREVCVUcsCitpbnB1dFtkc3QrK109KDB4MTdlMSsyNTMwLTB4MjFjMyk7d2hpbGUoaW5wdXRbKytzcmNdJiYoaW50KWlzc3BhY2UoaW5wdXRbc3JjXSkpeworfTtpZihjb3VudD49c2l6ZSl7c2l6ZSs9KDB4MjZmKzY0MTktMHgxYjcyKTt0bXBvdXQ9KGNoYXIqKilyZWFsbG9jKCpvdXRwdXQsCitzaXplb2YoY2hhciopKnNpemUpO2lmKE5VTEw9PXRtcG91dCl7cmV0dXJuLSgweDZkMisxOTAtMHg3OGYpO30qb3V0cHV0PXRtcG91dDt9KAorKm91dHB1dClbY291bnQrK109aW5wdXQrZHN0O31lbHNlIGlmKCFxdW90ZWQmJihjSW5wdXRDaGFyPT0nXCcnfHxjSW5wdXRDaGFyPT0KKygoY2hhcikoMHgzYTYrNTk0OS0weDFhYzEpKSkpe3F1b3RlZD1jSW5wdXRDaGFyO3NyYysrO31lbHNlIGlmKGNJbnB1dENoYXI9PQorcXVvdGVkKXtxdW90ZWQ9KDB4NDUrNzgxMS0weDFlYzgpO3NyYysrO31lbHNle2lmKGNJbnB1dENoYXI9PSdcXCcmJnF1b3RlZCE9J1wnJykKK3tzcmMrKztjSW5wdXRDaGFyPWlucHV0W3NyY107aWYoIWNJbnB1dENoYXIpe2ZyZWUoKm91dHB1dCk7Km91dHB1dD1OVUxMO3JldHVybi0KKygweDJkNSs0NDA1LTB4MTQwOSk7fX1pbnB1dFtkc3QrK109Y0lucHV0Q2hhcjtzcmMrKzt9fWlucHV0W2RzdF09CisoMHgxNjhiKzM0NTAtMHgyNDA1KTtpZihxdW90ZWQpe2ZyZWUoKm91dHB1dCk7Km91dHB1dD1OVUxMO3JldHVybi0KKygweDIyZWYrMzcwLTB4MjQ2MCk7fXJldHVybiBjb3VudDt9aW50IHpVZmlTbXNfYXRvaGV4KGNoYXIgYyl7aW50IHJlc3VsdD0KKygweGE1NysyNTcxLTB4MTQ2Mik7aWYoYz49KChjaGFyKSgweDE3MGMrNjYwLTB4MTk3MCkpJiZjPD0KKygoY2hhcikoMHgxYzJiKzE3OTUtMHgyMmY1KSkpe3Jlc3VsdD1jLSgoY2hhcikoMHg3MiszNTY4LTB4ZTMyKSk7fWVsc2UgaWYoYz49CisoKGNoYXIpKDB4N2I2KzUyNzktMHgxYmY0KSkmJmM8PSgoY2hhcikoMHgxNzkrMTQzMS0weDZhYSkpKXtyZXN1bHQ9KGMtCisoKGNoYXIpKDB4YzM0KzQxODMtMHgxYzJhKSkpKygweDg5YSszNS0weDhiMyk7fWVsc2UgaWYoYz49CisoKGNoYXIpKDB4MTBkZis0Mzc4LTB4MjFiOCkpJiZjPD0oKGNoYXIpKDB4NzdmKzI2NTAtMHgxMTkzKSkpe3Jlc3VsdD0oYy0KKygoY2hhcikoMHg5YSs5MTMyLTB4MjQwNSkpKSsoMHg3MDgrNjQ1MC0weDIwMzApO31lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NjFceDc0XHg2Zlx4NjhceDY1XHg3OFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MmNceDYzXHg2MVx4NmVceDIwXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDYzXHg2OFx4NjFceDcyXHgzYVx4MjVceDYzIiAiXG4iCiAsYyk7cmV0dXJuIHJlc3VsdDt9cmV0dXJuIHJlc3VsdDt9aW50IHpVZmlTbXNfRGlzcGF0Y2hXdG9pKHVuc2lnbmVkIGNoYXIqaW5fcHRyLAotaW50IGlMZW5ndGgsdW5zaWduZWQgY2hhcipvdXRfcHRyKXtpbnQgbG93PSgweDIyZTQrNTY3LTB4MjUxYik7aW50IGhpZ2g9Ci0oMHg1ZmErMzg5My0weDE1MmYpO2lmKGluX3B0cj09TlVMTHx8b3V0X3B0cj09TlVMTCl7cHJpbnRmKAoraW50IGlMZW5ndGgsdW5zaWduZWQgY2hhcipvdXRfcHRyKXtpbnQgbG93PSgweDI0NWIrNTgxLTB4MjZhMCk7aW50IGhpZ2g9CisoMHgxNGJiKzE1MDYtMHgxYTlkKTtpZihpbl9wdHI9PU5VTEx8fG91dF9wdHI9PU5VTEwpe3ByaW50ZigKICJceDczXHg2ZFx4NzNceDNhXHg2OVx4NmVceDc2XHg2MVx4NjlceDZjXHg2NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzIiICJcbiIKLSk7cmV0dXJuIFpVRklfRkFJTDt9d2hpbGUoaUxlbmd0aD4oMHhlNTYrMTkzMy0weDE1ZTMpKXtsb3c9aW5fcHRyW2lMZW5ndGgtCi0oMHgxNTg5KzQzNjYtMHgyNjk2KV0mKDB4MzFkKzU3ODgtMHgxOWFhKTtoaWdoPShpbl9wdHJbaUxlbmd0aC0KLSgweGQ5Mys1MDI4LTB4MjEzNildJigweDE5MDMrMzE3NC0weDI0NzkpKT4+KDB4MTI4MCszMjMzLTB4MWYxZCk7b3V0X3B0clsKLSgweGNkNSszNTM4LTB4MWFhNSkqaUxlbmd0aC0oMHgxYzUrOTI3NC0weDI1ZmUpXT1nX3pVZmlTbXNfRGlnQXNjTWFwW2xvd107Ci1vdXRfcHRyWygweGEyYysyNDU1LTB4MTNjMSkqaUxlbmd0aC0oMHgzNzArMTQzMS0weDkwNSldPWdfelVmaVNtc19EaWdBc2NNYXBbaGlnaAotXTtpTGVuZ3RoLS07fXJldHVybiBaVUZJX1NVQ0M7fXVuc2lnbmVkIGludCB6dGVfd21zX2NvbnZlcnRfUE9SVFVHVUVTRV9Ub19VQ1MyKAorKTtyZXR1cm4gWlVGSV9GQUlMO313aGlsZShpTGVuZ3RoPigweDI4YSszNTA4LTB4MTAzZSkpe2xvdz1pbl9wdHJbaUxlbmd0aC0KKygweDE5NTArMjAwNS0weDIxMjQpXSYoMHhlNzArNTY0Ny0weDI0NzApO2hpZ2g9KGluX3B0cltpTGVuZ3RoLQorKDB4YmEwKzE2MzQtMHgxMjAxKV0mKDB4MTE4Mys0MzItMHgxMjQzKSk+PigweDEyODMrNDA2OC0weDIyNjMpO291dF9wdHJbCisoMHhmOTArNTY3OS0weDI1YmQpKmlMZW5ndGgtKDB4YmFhKzI5MDYtMHgxNzAzKV09Z196VWZpU21zX0RpZ0FzY01hcFtsb3ddOworb3V0X3B0clsoMHg4MmQrNzQ5OS0weDI1NzYpKmlMZW5ndGgtKDB4ZThhKzI1MzQtMHgxODZlKV09Z196VWZpU21zX0RpZ0FzY01hcFsKK2hpZ2hdO2lMZW5ndGgtLTt9cmV0dXJuIFpVRklfU1VDQzt9dW5zaWduZWQgaW50IAorenRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMihjb25zdCB1bnNpZ25lZCBjaGFyKmdzbWRlZix1bnNpZ25lZCBjaGFyKnVjczIKKyx1bnNpZ25lZCBpbnQgbGVuKXt1bnNpZ25lZCBpbnQgaT0oMHgxNjMzKzExMjctMHgxYTlhKTt1bnNpZ25lZCBpbnQgaj0KKygweDQxKzE3NzQtMHg3MmYpO3Vuc2lnbmVkIGludCBrPSgweDFlMDYrMTg5NC0weDI1NmMpO3Vuc2lnbmVkIGludCBwPQorKDB4YmY3KzQ0OTktMHgxZDhhKTt1bnNpZ25lZCBpbnQgcz0oMHhmOTkrNTMyMS0weDI0NjIpO3M9c2l6ZW9mKAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFsoMHg1YzArNTItMHg1ZjQpXSk7Zm9yKGk9CisoMHgxNzQ2KzE4NzItMHgxZTk2KTtpPGxlbjtpKyspe2o9Z3NtZGVmW2ldO2lmKGo9PSgweGU5MCszMzItMHhmYzEpKXtpKys7Zm9yKHA9CisoMHgxMmI2KzQ4NDktMHgyNWE3KTtwPHM7cCsrKXtpZih6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3BdWworKDB4MWIwYisxNzk1LTB4MjIwZSldPT1nc21kZWZbaV0pe3VjczJba109Cit6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweGJjZiszMTAyLTB4MTdlYyldPj4KKygweGEwMCs0NzA1LTB4MWM1OSk7aysrO3VjczJba109KHVuc2lnbmVkIGNoYXIpKAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxY2NhKzIxOTAtMHgyNTU3KV0pO2JyZWFrO319fWVsc2UKK3t1Y3MyW2tdPXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVbal0+PigweDIyNzIrMTE2Ny0weDI2ZjkpO2srKzt1Y3MyCitba109KHVuc2lnbmVkIGNoYXIpKHp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVbal0pO31rKys7fXVjczJba109J1wwJworO3JldHVybiBrO311bnNpZ25lZCBpbnQgenRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMl9VU0VfR1NNN19TU19QT1JUVV9MUygKIGNvbnN0IHVuc2lnbmVkIGNoYXIqZ3NtZGVmLHVuc2lnbmVkIGNoYXIqdWNzMix1bnNpZ25lZCBpbnQgbGVuKXt1bnNpZ25lZCBpbnQgaT0KLSgweDgyMys1OTI2LTB4MWY0OSk7dW5zaWduZWQgaW50IGo9KDB4MWI4OSsyNDQtMHgxYzdkKTt1bnNpZ25lZCBpbnQgaz0KLSgweDY4MCs0NjQxLTB4MThhMSk7dW5zaWduZWQgaW50IHA9KDB4NjdhKzE5NC0weDczYyk7dW5zaWduZWQgaW50IHM9Ci0oMHg0NjQrMjk5Mi0weDEwMTQpO3M9c2l6ZW9mKHp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXgpL3NpemVvZigKLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbKDB4MTg2Kzg5MDgtMHgyNDUyKV0pO2ZvcihpPQotKDB4ZDUxKzQyNjgtMHgxZGZkKTtpPGxlbjtpKyspe2o9Z3NtZGVmW2ldO2lmKGo9PSgweGJjOSsxNDA2LTB4MTEyYykpe2krKztmb3IocD0KLSgweDEzNzIrMjYwNy0weDFkYTEpO3A8cztwKyspe2lmKHp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcF1bCi0oMHgyNTUzKzI4Ny0weDI2NzIpXT09Z3NtZGVmW2ldKXt1Y3MyW2tdPQotenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxZDgzKzE2NTQtMHgyM2Y4KV0+PgotKDB4NWEzKzIzODMtMHhlZWEpO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCBjaGFyKSgKLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcF1bKDB4MzE2KzYzMjMtMHgxYmM4KV0pO2JyZWFrO319fWVsc2V7Ci11Y3MyW2tdPXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVbal0+PigweGQ4Zis2NDItMHgxMDA5KTtrKys7dWNzMltrXQotPSh1bnNpZ25lZCBjaGFyKSh6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7Ci1yZXR1cm4gazt9dW5zaWduZWQgaW50IHp0ZV93bXNfY29udmVydF9QT1JUVUdVRVNFX1RvX1VDUzJfVVNFX0dTTTdfU1NfUE9SVFVfTFMoCi1jb25zdCB1bnNpZ25lZCBjaGFyKmdzbWRlZix1bnNpZ25lZCBjaGFyKnVjczIsdW5zaWduZWQgaW50IGxlbil7dW5zaWduZWQgaW50IGk9Ci0oMHgxN2Q1KzM3NTktMHgyNjg0KTt1bnNpZ25lZCBpbnQgaj0oMHhjYTQrODE3LTB4ZmQ1KTt1bnNpZ25lZCBpbnQgaz0KLSgweDErMTkyOC0weDc4OSk7dW5zaWduZWQgaW50IHA9KDB4OTMrMzQ1Mi0weGUwZik7dW5zaWduZWQgaW50IHM9Ci0oMHg5OGMrNjQyMC0weDIyYTApO3M9c2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFsoMHg2OTYrNDU1My0weDE4NWYpXSk7Zm9yKGk9Ci0oMHhkMjgrNTI3LTB4ZjM3KTtpPGxlbjtpKyspe2o9Z3NtZGVmW2ldO2lmKGo9PSgweGFiNCs0ODE1LTB4MWQ2OCkpe2krKztmb3IocD0KLSgweGU2Mis1ODI3LTB4MjUyNSk7cDxzO3ArKyl7aWYoenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF1bCi0oMHg1OTQrNTk4NS0weDFjZjUpXT09Z3NtZGVmW2ldKXt1Y3MyW2tdPXp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWwotKDB4NDA5KzYzNDYtMHgxY2QyKV0+PigweGI5Yys2MDM3LTB4MjMyOSk7aysrO3VjczJba109KHVuc2lnbmVkIGNoYXIpKAotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF1bKDB4MWI2YSs1OTMtMHgxZGJhKV0pO2JyZWFrO319fWVsc2V7dWNzMlsKLWtdPXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVbal0+PigweDEwNzArNDcxOC0weDIyZDYpO2srKzt1Y3MyW2tdPSgKKygweGE4ZCszNTI4LTB4MTg1NSk7dW5zaWduZWQgaW50IGo9KDB4MzQ5KzIzMzEtMHhjNjQpO3Vuc2lnbmVkIGludCBrPQorKDB4ZmJhKzE4OTUtMHgxNzIxKTt1bnNpZ25lZCBpbnQgcD0oMHhiMjkrMzE4MC0weDE3OTUpO3Vuc2lnbmVkIGludCBzPQorKDB4OWU5KzUwMDctMHgxZDc4KTtzPXNpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbKDB4MjRlNisxMDYtMHgyNTUwKV0pO2ZvcihpPQorKDB4MTE5Yis1MzY0LTB4MjY4Zik7aTxsZW47aSsrKXtqPWdzbWRlZltpXTtpZihqPT0oMHhlNDkrMTkxMy0weDE1YTcpKXtpKys7Zm9yKHAKKz0oMHg5MzArMzY3OS0weDE3OGYpO3A8cztwKyspe2lmKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWworKDB4MTc3YSsyNzEyLTB4MjIxMildPT1nc21kZWZbaV0pe3VjczJba109enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF0KK1soMHg3NDcrNjU3NS0weDIwZjUpXT4+KDB4ZjIwKzQyNTUtMHgxZmI3KTtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoCit6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHg0ZDQrODExNC0weDI0ODUpXSk7YnJlYWs7fX19ZWxzZXt1Y3MyWwora109enRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZVtqXT4+KDB4MWJlNis2NjItMHgxZTc0KTtrKys7dWNzMltrXT0oCiB1bnNpZ25lZCBjaGFyKSh6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7CiByZXR1cm4gazt9dW5zaWduZWQgbG9uZyB6dGVfd21zX2NvbnZlcnRfR1NNRGVmYXVsdF90b19VQ1MyKGNvbnN0IHVuc2lnbmVkIGNoYXIqCi1nc21kZWYsdW5zaWduZWQgY2hhcip1Y3MyLHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4Mzg3Kzg5OTAtMHgyNmE1KQotO3Vuc2lnbmVkIGxvbmcgaj0oMHgzODArODIzNi0weDIzYWMpO3Vuc2lnbmVkIGxvbmcgaz0oMHg1NzUrMzk1MC0weDE0ZTMpOwotdW5zaWduZWQgbG9uZyBwPSgweDRhYysyNTU0LTB4ZWE2KTt1bnNpZ25lZCBsb25nIHM9KDB4MTEzMys1Mzc5LTB4MjYzNik7dW5zaWduZWQKLSBsb25nIGlzX2ZpbmQ9KDB4MjI3KzM3OTItMHgxMGY3KTtzPXNpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvCi1zaXplb2YoenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbKDB4MTY1ZCsxMDgyLTB4MWE5NyldKTtmb3IoaT0KLSgweDE1YTcrMzg2MS0weDI0YmMpO2k8bGVuO2krKyl7aj1nc21kZWZbaV07aWYoaj09KDB4YmEwKzYzMTctMHgyNDMyKSl7aSsrO2ZvcihwCi09KDB4YTMzKzQyNjQtMHgxYWRiKTtwPHM7cCsrKXtpZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsKLSgweDExM2MrNTQ0LTB4MTM1YyldPT1nc21kZWZbaV0pe3VjczJba109enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF1bCi0oMHg0ZmYrNDE3NS0weDE1NGQpXT4+KDB4YjA5KzIwMTUtMHgxMmUwKTtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxYjljKzMzNC0weDFjZTkpXSk7aXNfZmluZD0KLSgweGM3YSs0NjMtMHhlNDgpO2JyZWFrO319aWYoIWlzX2ZpbmQpe2F0X3ByaW50KExPR19ERUJVRywKK2dzbWRlZix1bnNpZ25lZCBjaGFyKnVjczIsdW5zaWduZWQgbG9uZyBsZW4pe3Vuc2lnbmVkIGxvbmcgaT0KKygweDIyYTcrMTExMi0weDI2ZmYpO3Vuc2lnbmVkIGxvbmcgaj0oMHhiNDIrOTQtMHhiYTApO3Vuc2lnbmVkIGxvbmcgaz0KKygweDg5NSs3MDYtMHhiNTcpO3Vuc2lnbmVkIGxvbmcgcD0oMHhhYTgrMzA5OC0weDE2YzIpO3Vuc2lnbmVkIGxvbmcgcz0KKygweGNmMSs1MTQ4LTB4MjEwZCk7dW5zaWduZWQgbG9uZyBpc19maW5kPSgweGQ3MisyOTcyLTB4MTkwZSk7cz1zaXplb2YoCit6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4WworKDB4ZmJkKzI4MzgtMHgxYWQzKV0pO2ZvcihpPSgweDE3NWQrMTYxNy0weDFkYWUpO2k8bGVuO2krKyl7aj1nc21kZWZbaV07aWYoaj09CisoMHg1MCs0NzgtMHgyMTMpKXtpKys7Zm9yKHA9KDB4NzgxKzYxNjctMHgxZjk4KTtwPHM7cCsrKXtpZigKK3p0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweDc1NSsxNDI1LTB4Y2U2KV09PWdzbWRlZltpXSl7dWNzMltrXT0KK3p0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweDc3ZCsyNzYzLTB4MTI0NyldPj4oMHhmYzIrNDQzNS0weDIxMGQpCis7aysrO3VjczJba109KHVuc2lnbmVkIGNoYXIpKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWworKDB4MWExMisyOTIxLTB4MjU3YSldKTtpc19maW5kPSgweDEwMzYrMzI3Ny0weDFkMDIpO2JyZWFrO319aWYoIWlzX2ZpbmQpeworYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzNceDZkXHg3M1x4M2FceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDNkXHgyMFx4MjVceDY0XHgyMFx4NmVceDZmXHg3NFx4MjBceDY2XHg2OVx4NmVceDY0XHgyMFx4NjlceDZlXHgyMFx4NjdceDczXHg2ZFx4NjRceDY1XHg2Nlx4NjFceDc1XHg2Y1x4NzRceDIwXHg2NVx4NzhceDc0XHg2NVx4NmVceDczXHg2OVx4NmZceDZlXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1IiAiXG4iCi0sZ3NtZGVmW2ldKTtpLS07dWNzMltrXT16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZVtqXT4+KDB4NGFkKzc3NTItMHgyMmVkKQorLGdzbWRlZltpXSk7aS0tO3VjczJba109enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbal0+PigweDliNSszMjg1LTB4MTY4MikKIDtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbal0pO319ZWxzZXt1Y3MyW2tdCi09enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbal0+PigweDJhNis0NDk2LTB4MTQyZSk7aysrO3VjczJba109KHVuc2lnbmVkIAorPXp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlW2pdPj4oMHhkNTcrMTc3OS0weDE0NDIpO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCAKIGNoYXIpKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7cmV0dXJuIGs7fXZvaWQgCiB6VWZpU21zX0NvbnZlcnRVY3MyKGNoYXIqZGF0YSxVSU5UMTYgc21zX2xlbixjaGFyKm91dF9jb250ZW50KXtjaGFyIAotYXNjaWlfY29udGVudFsoMHgzZDYrMzgzNC0weDEyY2UpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgrCi0oMHg2MzYrNTcxMS0weDFjODQpXT17KDB4MTdmYSsxMDMxLTB4MWMwMSl9O1VJTlQxNiBsZW49KDB4MTljYys3MzUtMHgxY2FiKTsKK2FzY2lpX2NvbnRlbnRbKDB4Nzc1KzI0MjAtMHgxMGU3KSpaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKworKDB4YmE4KzQ4MDYtMHgxZTZkKV09eygweDE0OWMrMjQ0Ni0weDFlMmEpfTtVSU5UMTYgbGVuPSgweGI0MSsxNTMxLTB4MTEzYyk7CiBzd2l0Y2goZ196VWZpU21zX0xhbmd1YWdlKXtjYXNlIERDU19QT1JUVUdVRVNFOmlmKGdfelVmaVNtc19Jc0xhbmd1YWdlU2hpZnQ9PQogV01TX1VESF9OQVRfTEFOR19TUyl7bGVuPXp0ZV93bXNfY29udmVydF9QT1JUVUdVRVNFX1RvX1VDUzIoKGNvbnN0IFVJTlQ4KilkYXRhLCgKIFVJTlQ4Kilhc2NpaV9jb250ZW50LHNtc19sZW4pO31lbHNlIGlmKGdfelVmaVNtc19Jc0xhbmd1YWdlU2hpZnQ9PQpAQCAtNjcwLDQ3ICs2NzQsNDcgQEAKIHNtc19sZW4pO2JyZWFrO30odm9pZCl6VWZpU21zX0Rpc3BhdGNoV3RvaSgoY2hhciopYXNjaWlfY29udGVudCxsZW4sKGNoYXIqKQogb3V0X2NvbnRlbnQpO31ib29sZWFuIHpVZmlTbXNfRGVjb2RlQ29udGVudChjaGFyKm1zZ19jb250ZW50LFVJTlQxNiBzbXNfbGVuLAogYm9vbGVhbiBpc0VzYyxjaGFyKm91dF9jb250ZW50KXtib29sZWFuIGVuZEVzYz1GQUxTRTtjaGFyKnA9TlVMTDtzdGF0aWMgY2hhciAKLWRhdGFbKDB4OTZiKzI5NjMtMHgxNGZkKSsoMHgxNzY5KzEzNDItMHgxYzA3KSsoMHhhYzYrNjI2OC0weDIzNDEpXT17Ci0oMHhjN2IrMzQ5Ni0weDFhMjMpfTtpbnQgbGVuPSgweDE1ODQrMjE0MS0weDFkZTEpO2lmKG1zZ19jb250ZW50PT1OVUxMfHwKLW91dF9jb250ZW50PT1OVUxMfHxzbXNfbGVuPigweGI5MSs0MTM4LTB4MWE3Yil8fHNtc19sZW48KDB4MTFkYSszMDAyLTB4MWQ5MikpewotcmV0dXJuIGVuZEVzYzt9bGVuPXNtc19sZW47bWVtc2V0KGRhdGEsKDB4YjY5KzYzNDItMHgyNDJmKSwoMHgxMDFkKzQ5NTMtMHgyMmQ0KSkKLTtwPWRhdGE7aWYoaXNFc2MpeypwPSgweDM0NisyMzEyLTB4YzMzKTtwKys7fXpVZmlTbXNfU3RyMkJ5dGVzKCh1bnNpZ25lZCBjaGFyKikKLW1zZ19jb250ZW50LGxlbiwodW5zaWduZWQgY2hhciopcCwoMHhlM2IrMjk4OC0weDE5NDcpKTtpZihwW2xlbi8KLSgweDY2Yis4MDU3LTB4MjVlMiktKDB4MTM4KzI3MjgtMHhiZGYpXT09KDB4OTQ4KzI3Ny0weGE0Mikpe2VuZEVzYz1UUlVFO30KLXpVZmlTbXNfQ29udmVydFVjczIoZGF0YSxsZW4vKDB4NmYyKzc0MjctMHgyM2YzKSsoaXNFc2M/KDB4MWE1Yys3ODctMHgxZDZlKToKLSgweDIwMys5MjY3LTB4MjYzNikpLShlbmRFc2M/KDB4NGQrMjY5NC0weGFkMik6KDB4YWMzKzQ4NDQtMHgxZGFmKSksb3V0X2NvbnRlbnQpCi07cmV0dXJuIGVuZEVzYzt9Ynl0ZSp6VWZpU21zX1Ntc2lVdGlsaXRvYSh1aW50MzIgdixieXRlKnMsVUlOVDE2IHIpe2J5dGUgYnVmWwotKDB4ZGMrNDI4NS0weDExNzgpXSxjO2ludCBuO249c2l6ZW9mKGJ1ZiktKDB4MTNjZCs0MDE0LTB4MjM3YSk7YnVmW25dPSdcMCc7ZG97Yz0KLShieXRlKSh2JXIpO2lmKG48PSgweGNhMys0MjQwLTB4MWQzMykpe3ByaW50ZigKLSJceDRmXHg1Nlx4NDVceDUyXHg0Nlx4NGNceDRmXHg1N1x4MjAiKTticmVhazt9YnVmWy0tbl09KGJ5dGUpKChjPgotKDB4NmRmKzE5MzAtMHhlNjApKT9jKygoY2hhcikoMHg4ZjQrNjM3NS0weDIxOWEpKS0oMHgzMjMrOTEzLTB4NmFhKTpjKwotKChjaGFyKSgweDVhOSs0OTEwLTB4MThhNykpKTt9d2hpbGUoKHYvPXIpPigweDM4YSs2NDI3LTB4MWNhNSkpO3doaWxlKCgqcysrPWJ1ZlsKLW4rK10pIT0oMHg3MjMrMTY1NC0weGQ5OSkpO3JldHVybihzLSgweGRiZCszODA4LTB4MWM5YykpO31ieXRlKgotelVmaVNtc19TbXNpQWRkclRvU3RyKHdtc19hZGRyZXNzX3NfdHlwZSBhZGRyLGJ5dGUqcmVzX3B0cixVSU5UOCp0eXBlX29mX2FkZHIpewotYnl0ZSBiY2RfaWR4PSgweDI1ZjUrMTg3LTB4MjZiMCk7VUlOVDggdGVtcD0oMHg2OWQrMTYyNC0weGNmNSk7KnR5cGVfb2ZfYWRkcj0KLSgweDJmZCszOTQxLTB4MTI2Mik7dGVtcD0oVUlOVDgpKCh1aW50MzIpYWRkci5udW1iZXJfdHlwZSYoMHgxMzIrOTU0OS0weDI2NzgpKTsqCi10eXBlX29mX2FkZHI9KFVJTlQ4KSgoKnR5cGVfb2ZfYWRkcnx0ZW1wKTw8KDB4NWI4KzY5NzItMHgyMGYwKSk7dGVtcD0oVUlOVDgpKCgKLXVpbnQzMilhZGRyLm51bWJlcl9wbGFuJigweDE3NDQrMzg4LTB4MThjMSkpOyp0eXBlX29mX2FkZHI9KnR5cGVfb2ZfYWRkcnx0ZW1wOyoKLXR5cGVfb2ZfYWRkcj0qdHlwZV9vZl9hZGRyfCgweGMyNis1MTU4LTB4MWZjYyk7d2hpbGUoYmNkX2lkeDxhZGRyLgotbnVtYmVyX29mX2RpZ2l0cyl7aWYoYWRkci5kaWdpdHNbYmNkX2lkeF09PSgweDE1MmQrMTAzNi0weDE5MmYpKXthZGRyLmRpZ2l0c1sKLWJjZF9pZHhdPSgweGM0ZCs0MzkzLTB4MWQ3Nik7fXJlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2EoKHVpbnQzMilhZGRyLmRpZ2l0c1sKLWJjZF9pZHhdLHJlc19wdHIsKDB4MTBkYyszMDQ2LTB4MWNiMikpO2JjZF9pZHgrKzt9cmV0dXJuIHJlc19wdHI7fWJ5dGUqCi16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwod29yZCB2LGJ5dGUqcmJfcHRyKXtpbnQgbjtieXRlIGMsKnB0cjtwdHI9cmJfcHRyKwotKDB4MWFmZisyOTQ2LTB4MjY3Zik7KnB0cj0nXDAnO2ZvcihuPSgweDE2OTcrNDEwMC0weDI2OWIpO248KDB4ZjBhKzE1ODktMHgxNTNkKTsKLSsrbil7Yz0oYnl0ZSkodiUoMHhiZTkrNDI3Mi0weDFjOGYpKTt2Lz0oMHhhNjArMjYxMS0weDE0ODkpOyotLXB0cj0oYysKLSgoY2hhcikoMHg0OGErMzkzMi0weDEzYjYpKSk7fXJldHVybiByYl9wdHIrKDB4MTJiZis0NDUtMHgxNDdhKTt9dm9pZCAKLXpVZmlTbXNfU3ByaW50ZlRpbWUoY2hhcipzdHJfdGltZSxpbnQgbGVuLGludCB0KXtpZih0PCgweGRkZisyNTg5LTB4MTdmMikpewotc25wcmludGYoc3RyX3RpbWUsbGVuLCJceDMwXHgyNVx4NzgiLHQpO31lbHNle3NucHJpbnRmKHN0cl90aW1lLGxlbiwiXHgyNVx4NzgiLHQKLSk7fX1zdGF0aWMgdm9pZCB6VWZpU21zX1BhcnNlRGVsaXZlckNvbmNhdDgoVF96VWZpU21zX1VkaENvbmNhdDgqY29uY2F0XzgsCi1UX3pVZmlTbXNfRGJTdG9yZURhdGEqZGJfZGF0YSl7aW50IG11eD0oMHgzZWIrNjIwMC0weDFjMjMpO2NvbmNhdF84LT5zZXFfbnVtLS07Ci1pZihjb25jYXRfOC0+dG90YWxfc20+WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCl7bXV4PShjb25jYXRfOC0+c2VxX251bS0KLWNvbmNhdF84LT5zZXFfbnVtJVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpL1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg7fQotZGJfZGF0YS0+Y29uY2F0X3Ntcz0oMHg2NiszNjY1LTB4ZWI2KTtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgzOTYrNjM5MS0weDFjOGQpXT0KLSgweDExOWErMzM1MS0weDFkYjIpKm11eCtjb25jYXRfOC0+bXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1sKLSgweDEwYTMrMTEzMi0weDE1MGQpXT1jb25jYXRfOC0+c2VxX251bSVaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKwotKDB4MmY5KzcyODktMHgxZjcxKTtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHhhYzErMzAwNC0weDE2N2MpXT1jb25jYXRfOC0+dG90YWxfc20KLS1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKm11eD5aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYLQotKDB4MTk4ZisxNDMwLTB4MWYyNCk/WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDooY29uY2F0XzgtPnRvdGFsX3NtJQorZGF0YVsoMHhiYWErMzI1MS0weDE4NWMpKygweDFjMmQrMjg0MC0weDI2YTUpKygweDU1OCs4NTgtMHg4YjEpXT17CisoMHhkZGErNDk4LTB4ZmNjKX07aW50IGxlbj0oMHg1NDUrNzc4OS0weDIzYjIpO2lmKG1zZ19jb250ZW50PT1OVUxMfHxvdXRfY29udGVudAorPT1OVUxMfHxzbXNfbGVuPigweDQ1ZCs2NDk3LTB4MWM3ZSl8fHNtc19sZW48KDB4YmExKzEzMTAtMHgxMGJkKSl7cmV0dXJuIGVuZEVzYzsKK31sZW49c21zX2xlbjttZW1zZXQoZGF0YSwoMHhiMjgrNjI1LTB4ZDk5KSwoMHgxOWMwKzIyMDUtMHgyMWJiKSk7cD1kYXRhO2lmKGlzRXNjCispeypwPSgweDcwMCszMjkzLTB4MTNjMik7cCsrO316VWZpU21zX1N0cjJCeXRlcygodW5zaWduZWQgY2hhciopbXNnX2NvbnRlbnQsbGVuLAorKHVuc2lnbmVkIGNoYXIqKXAsKDB4MWNmYSsxNzc2LTB4MjM0YSkpO2lmKHBbbGVuLygweDNiKzcxOTUtMHgxYzU0KS0KKygweDU5MyszMTQxLTB4MTFkNyldPT0oMHgzMDQrMTcwNi0weDk5Mykpe2VuZEVzYz1UUlVFO316VWZpU21zX0NvbnZlcnRVY3MyKGRhdGEsCitsZW4vKDB4MjgxKzg4MDYtMHgyNGU1KSsoaXNFc2M/KDB4ZWUyKzM1Ni0weDEwNDUpOigweDIxMGIrMTAzNC0weDI1MTUpKS0oZW5kRXNjPworKDB4MTA4Zis1MDM0LTB4MjQzOCk6KDB4Zjg5KzM2NTctMHgxZGQyKSksb3V0X2NvbnRlbnQpO3JldHVybiBlbmRFc2M7fWJ5dGUqCit6VWZpU21zX1Ntc2lVdGlsaXRvYSh1aW50MzIgdixieXRlKnMsVUlOVDE2IHIpe2J5dGUgYnVmWygweDM2KzQ1MDQtMHgxMWFkKV0sYzsKK2ludCBuO249c2l6ZW9mKGJ1ZiktKDB4NTBkKzY3NzEtMHgxZjdmKTtidWZbbl09J1wwJztkb3tjPShieXRlKSh2JXIpO2lmKG48PQorKDB4ZDQ3KzY2Ny0weGZlMikpe3ByaW50ZigiXHg0Zlx4NTZceDQ1XHg1Mlx4NDZceDRjXHg0Zlx4NTdceDIwIik7YnJlYWs7fWJ1ZlstLW4KK109KGJ5dGUpKChjPigweDlkYSszNzM3LTB4MTg2YSkpP2MrKChjaGFyKSgweDYxNSs0NjQxLTB4MTdmNSkpLQorKDB4MTE2YiszNDk1LTB4MWYwOCk6YysoKGNoYXIpKDB4NDk1KzE2MTYtMHhhYjUpKSk7fXdoaWxlKCh2Lz1yKT4KKygweGQ1KzYwNzYtMHgxODkxKSk7d2hpbGUoKCpzKys9YnVmW24rK10pIT0oMHhlMjQrMTQ1OC0weDEzZDYpKTtyZXR1cm4ocy0KKygweDE0NTIrMTIwMC0weDE5MDEpKTt9Ynl0ZSp6VWZpU21zX1Ntc2lBZGRyVG9TdHIod21zX2FkZHJlc3Nfc190eXBlIGFkZHIsYnl0ZSoKK3Jlc19wdHIsVUlOVDgqdHlwZV9vZl9hZGRyKXtieXRlIGJjZF9pZHg9KDB4YTJhKzQ5MDktMHgxZDU3KTtVSU5UOCB0ZW1wPQorKDB4MTJiKzczNjYtMHgxZGYxKTsqdHlwZV9vZl9hZGRyPSgweGVmNSs1MTUyLTB4MjMxNSk7dGVtcD0oVUlOVDgpKCh1aW50MzIpYWRkci4KK251bWJlcl90eXBlJigweDE1OGMrMjAzMS0weDFkNzQpKTsqdHlwZV9vZl9hZGRyPShVSU5UOCkoKCp0eXBlX29mX2FkZHJ8dGVtcCk8PAorKDB4N2M1KzExNDctMHhjM2MpKTt0ZW1wPShVSU5UOCkoKHVpbnQzMilhZGRyLm51bWJlcl9wbGFuJigweGQ5OSs5MzctMHgxMTNiKSk7KgordHlwZV9vZl9hZGRyPSp0eXBlX29mX2FkZHJ8dGVtcDsqdHlwZV9vZl9hZGRyPSp0eXBlX29mX2FkZHJ8KDB4N2QwKzc0OTItMHgyNDk0KTsKK3doaWxlKGJjZF9pZHg8YWRkci5udW1iZXJfb2ZfZGlnaXRzKXtpZihhZGRyLmRpZ2l0c1tiY2RfaWR4XT09CisoMHhiNWErMzczOC0weDE5ZWEpKXthZGRyLmRpZ2l0c1tiY2RfaWR4XT0oMHgxMTgzKzI3MTEtMHgxYzFhKTt9cmVzX3B0cj0KK3pVZmlTbXNfU21zaVV0aWxpdG9hKCh1aW50MzIpYWRkci5kaWdpdHNbYmNkX2lkeF0scmVzX3B0ciwoMHgxNDJkKzI0NDAtMHgxZGE1KSk7CitiY2RfaWR4Kys7fXJldHVybiByZXNfcHRyO31ieXRlKnpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCh3b3JkIHYsYnl0ZSpyYl9wdHIpe2ludAorIG47Ynl0ZSBjLCpwdHI7cHRyPXJiX3B0cisoMHgyN2ErODM4MC0weDIzMzQpOypwdHI9J1wwJztmb3Iobj0oMHg0ZWQrMTcyLTB4NTk5KTsKK248KDB4NzAxKzY5MDktMHgyMWZjKTsrK24pe2M9KGJ5dGUpKHYlKDB4MTZlMis0MzItMHgxODg4KSk7di89CisoMHgyMzczKzYyOS0weDI1ZGUpOyotLXB0cj0oYysoKGNoYXIpKDB4ODVmKzc2NjYtMHgyNjIxKSkpO31yZXR1cm4gcmJfcHRyKworKDB4NTJmKzQzOC0weDZlMyk7fXZvaWQgelVmaVNtc19TcHJpbnRmVGltZShjaGFyKnN0cl90aW1lLGludCBsZW4saW50IHQpe2lmKHQ8CisoMHhhKzYwMDctMHgxNzc3KSl7c25wcmludGYoc3RyX3RpbWUsbGVuLCJceDMwXHgyNVx4NzgiLHQpO31lbHNle3NucHJpbnRmKAorc3RyX3RpbWUsbGVuLCJceDI1XHg3OCIsdCk7fX1zdGF0aWMgdm9pZCB6VWZpU21zX1BhcnNlRGVsaXZlckNvbmNhdDgoCitUX3pVZmlTbXNfVWRoQ29uY2F0OCpjb25jYXRfOCxUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGJfZGF0YSl7aW50IG11eD0KKygweGIzZisyMzgzLTB4MTQ4ZSk7Y29uY2F0XzgtPnNlcV9udW0tLTtpZihjb25jYXRfOC0+dG90YWxfc20+CitaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXttdXg9KGNvbmNhdF84LT5zZXFfbnVtLWNvbmNhdF84LT5zZXFfbnVtJQorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCkvWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDt9ZGJfZGF0YS0+Y29uY2F0X3Ntcz0KKygweDgzMysxMTYzLTB4Y2JkKTtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHhkMDkrNTY5OC0weDIzNGIpXT0KKygweDEwZjgrMjA4Mi0weDE4MWIpKm11eCtjb25jYXRfOC0+bXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1sKKygweGQxOSszMjMzLTB4MTliOCldPWNvbmNhdF84LT5zZXFfbnVtJVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgrCisoMHgzZDkrMTkyNS0weGI1ZCk7ZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4MWZiKzc5OTAtMHgyMTMwKV09Y29uY2F0XzgtPnRvdGFsX3NtLQorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCptdXg+WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWC0KKygweDE1YTcrNDEwNy0weDI1YjEpP1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg6KGNvbmNhdF84LT50b3RhbF9zbSUKIFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpO31zdGF0aWMgdm9pZCB6VWZpU21zX1BhcnNlckxhbmdTcyh3bXNfdWRoX3NfdHlwZSoKIHVzZXJfZGF0YV9oZWFkZXIpe2lmKHVzZXJfZGF0YV9oZWFkZXI9PU5VTEwpe3JldHVybjt9c3dpdGNoKHVzZXJfZGF0YV9oZWFkZXItPnUuCiBuYXRfbGFuZ19zcy5uYXRfbGFuZ19pZCl7Y2FzZSBXTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U6Z196VWZpU21zX0xhbmd1YWdlPQpAQCAtNzE5LDI3ICs3MjMsMjcgQEAKIHVzZXJfZGF0YV9oZWFkZXItPnUubmF0X2xhbmdfc3MubmF0X2xhbmdfaWQpe2Nhc2UgV01TX1VESF9OQVRfTEFOR19QT1JUVUdVRVNFOgogZ196VWZpU21zX0xhbmd1YWdlPURDU19QT1JUVUdVRVNFO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX1zdGF0aWMgdm9pZCAKIHpVZmlTbXNfUGFyc2VEZWxpdmVyQ29uY2F0MTYoVF96VWZpU21zX1VkaENvbmNhdDE2KmNvbmNhdF8xNiwKLVRfelVmaVNtc19EYlN0b3JlRGF0YSpkYl9kYXRhKXtpbnQgbXV4PSgweDcwNSs1NDAtMHg5MjEpO2NvbmNhdF8xNi0+c2VxX251bS0tOwotZGJfZGF0YS0+Y29uY2F0X3Ntcz0oMHgzZmQrNjY3MC0weDFlMGEpOwotI2lmICgweDFiZDYrMzQyLTB4MWQyYykNCi1kYl9kYXRhLT5jb25jYXRfaW5mb1soMHhiYmIrNTI2Mi0weDIwNDkpXT1jb25jYXRfMTYtPm1zZ19yZWY7ZGJfZGF0YS0+Ci1jb25jYXRfaW5mb1soMHg5NzgrNTQ1OC0weDFlYzkpXT1jb25jYXRfMTYtPnRvdGFsX3NtO2RiX2RhdGEtPmNvbmNhdF9pbmZvWwotKDB4MTNjKzQ1NDgtMHgxMmZlKV09Y29uY2F0XzE2LT5zZXFfbnVtOworVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCBtdXg9KDB4Mjc1KzE1NzAtMHg4OTcpO2NvbmNhdF8xNi0+c2VxX251bS0tOworZGJfZGF0YS0+Y29uY2F0X3Ntcz0oMHg2Nys1MzQxLTB4MTU0Myk7CisjaWYgKDB4MTZiKzUwNDktMHgxNTI0KQ0KK2RiX2RhdGEtPmNvbmNhdF9pbmZvWygweDY5KzY1NjUtMHgxYTBlKV09Y29uY2F0XzE2LT5tc2dfcmVmO2RiX2RhdGEtPmNvbmNhdF9pbmZvCitbKDB4MjJjKzQ4MzktMHgxNTEyKV09Y29uY2F0XzE2LT50b3RhbF9zbTtkYl9kYXRhLT5jb25jYXRfaW5mb1sKKygweDE2OTErNDE1OC0weDI2Y2QpXT1jb25jYXRfMTYtPnNlcV9udW07CiAjZW5kaWYNCiBpZihjb25jYXRfMTYtPnRvdGFsX3NtPlpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpe211eD0oY29uY2F0XzE2LT5zZXFfbnVtLQogY29uY2F0XzE2LT5zZXFfbnVtJVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpL1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg7fQotZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4M2RiKzU2MDAtMHgxOWJiKV09KDB4YzhiKzUxMTUtMHgxZjg3KSptdXgrY29uY2F0XzE2LT4KLW1zZ19yZWY7ZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4MjZiKzcwMjgtMHgxZGRkKV09Y29uY2F0XzE2LT5zZXFfbnVtJQotWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCsoMHgxM2M0KzE3ODEtMHgxYWI4KTtkYl9kYXRhLT5jb25jYXRfaW5mb1sKLSgweDY2YSsyNzAzLTB4MTBmOCldPWNvbmNhdF8xNi0+dG90YWxfc20tWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCptdXg+Ci1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYLSgweDEzYmYrMjA2NC0weDFiY2UpP1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg6KAorZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4ZWJjKzE4OTctMHgxNjI1KV09KDB4NTgxKzEyMTctMHg5NDMpKm11eCtjb25jYXRfMTYtPgorbXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHhlMTMrNTI1Mi0weDIyOTUpXT1jb25jYXRfMTYtPnNlcV9udW0lCitaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKygweDJkOSs4NDU5LTB4MjNlMyk7ZGJfZGF0YS0+Y29uY2F0X2luZm9bCisoMHg3MisxNTA2LTB4NjUzKV09Y29uY2F0XzE2LT50b3RhbF9zbS1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKm11eD4KK1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgtKDB4NWEzKzYzNTgtMHgxZTc4KT9aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYOigKIGNvbmNhdF8xNi0+dG90YWxfc20lWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCk7fXN0YXRpYyBpbnQgCiB6VWZpU21zX1BhcnNlVWRoaURhdGEoVF96VWZpU21zX1VkaCp1c2VyX2RhdGFfaGVhZGVyLFRfelVmaVNtc19EYlN0b3JlRGF0YSoKIGRiX2RhdGEpe2lmKE5VTEw9PXVzZXJfZGF0YV9oZWFkZXJ8fE5VTEw9PWRiX2RhdGEpe3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3M1x4MmUiKTtyZXR1cm4gWlVGSV9GQUlMCiA7fXN3aXRjaCh1c2VyX2RhdGFfaGVhZGVyLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODpkYl9kYXRhLT5jb25jYXRfc21zPQotKDB4NmE3KzI3MC0weDdiNCk7elVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQ4KCYodXNlcl9kYXRhX2hlYWRlci0+dS5jb25jYXRfOCksCi1kYl9kYXRhKTticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2OmRiX2RhdGEtPmNvbmNhdF9zbXM9KDB4OTkyKzQ2MTAtMHgxYjkzKTsKKygweGU0YSsxMzI4LTB4MTM3OSk7elVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQ4KCYodXNlcl9kYXRhX2hlYWRlci0+dS5jb25jYXRfOCksCitkYl9kYXRhKTticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2OmRiX2RhdGEtPmNvbmNhdF9zbXM9KDB4YzMzKzIyNzUtMHgxNTE1KTsKIHpVZmlTbXNfUGFyc2VEZWxpdmVyQ29uY2F0MTYoJih1c2VyX2RhdGFfaGVhZGVyLT51LmNvbmNhdF8xNiksZGJfZGF0YSk7YnJlYWs7CiBjYXNlIFdNU19VREhfTkFUX0xBTkdfU1M6Z196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD1XTVNfVURIX05BVF9MQU5HX1NTOwogelVmaVNtc19QYXJzZXJMYW5nU3ModXNlcl9kYXRhX2hlYWRlcik7YnJlYWs7Y2FzZSBXTVNfVURIX05BVF9MQU5HX0xTOgpAQCAtNzQ5LDE1NSArNzUzLDE1NSBAQAogKTticmVhazt9cmV0dXJuIFpVRklfU1VDQzt9aW50IHpVZmlTbXNfRm9ybWF0RGVsaXZlckRiZGF0YSgKIFRfelVmaVNtc19DbGllbnRUc0RhdGEqdHNfZGF0YV9wdHIsVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCByZXN1bHQ9CiBaVUZJX1NVQ0M7d21zX2FkZHJlc3Nfc190eXBlKmFkZHJlc3NfcHRyPU5VTEw7d21zX2d3X2FscGhhYmV0X2VfdHlwZSB0cF9kY3M9Ci1XTVNfR1dfQUxQSEFCRVRfTUFYMzI7aW50IGk9KDB4MzhmKzM3NzAtMHgxMjQ5KTtpbnQgaW5kPSgweDQ2NSs3MTAxLTB4MjAyMik7aWYoKAorV01TX0dXX0FMUEhBQkVUX01BWDMyO2ludCBpPSgweDI4NSs4NTAwLTB4MjNiOSk7aW50IGluZD0oMHhhNSszNDUwLTB4ZTFmKTtpZigoCiBOVUxMPT10c19kYXRhX3B0cil8fChOVUxMPT1kYl9kYXRhKSl7cHJpbnRmKAogIlx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2OVx4NmVceDcwXHg3NVx4NzRceDczXHgyZSIpO3JldHVybiBaVUZJX0ZBSUwKIDt9YWRkcmVzc19wdHI9Jih0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIuYWRkcmVzcyk7aWYoCiBXTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUw9PWFkZHJlc3NfcHRyLT5udW1iZXJfdHlwZSl7bWVtc2V0KGRiX2RhdGEtPm51bWJlciwKLSgweDZkNis1MTI1LTB4MWFkYiksWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4N2UyKzE0NTEtMHhkOGMpKTtkYl9kYXRhLT5udW1iZXJbCi0oMHg4NWQrNjU2Ni0weDIyMDMpXT0oKGNoYXIpKDB4ODQ5KzM2MTAtMHgxNjM4KSk7Zm9yKGk9KDB4MjE0MisxMDA1LTB4MjUyZik7aTwKLWFkZHJlc3NfcHRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7aWYoKDB4MTY3MSsyMjkxLTB4MWY1YSk9PWFkZHJlc3NfcHRyLT5kaWdpdHNbCi1pXSl7ZGJfZGF0YS0+bnVtYmVyW2krKDB4MTIwOSsyMzUxLTB4MWIzNyldPSgoY2hhcikoMHhkMjMrMTc1My0weDEzY2MpKTt9ZWxzZXsKLWRiX2RhdGEtPm51bWJlcltpKygweDkxMis2NzI3LTB4MjM1OCldPSgoY2hhcikoMHgyZDArMTEwNy0weDZmMykpK2FkZHJlc3NfcHRyLT4KLWRpZ2l0c1tpXTt9fX1lbHNlIGlmKFdNU19OVU1CRVJfQUxQSEFOVU1FUklDPT1hZGRyZXNzX3B0ci0+bnVtYmVyX3R5cGUpe21lbWNweSgKLWRiX2RhdGEtPm51bWJlcixhZGRyZXNzX3B0ci0+ZGlnaXRzLGFkZHJlc3NfcHRyLT5udW1iZXJfb2ZfZGlnaXRzKTt9ZWxzZXtpZigKLWFkZHJlc3NfcHRyLT5kaWdpdF9tb2RlPT1XTVNfRElHSVRfTU9ERV84X0JJVCl7bWVtY3B5KCYoZGJfZGF0YS0+bnVtYmVyWwotKDB4MTg2Nys1NTQtMHgxYTkwKV0pLGFkZHJlc3NfcHRyLT5kaWdpdHMsYWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHMpO31lbHNlewotZm9yKGk9KDB4OTErNjk0Ny0weDFiYjQpO2k8YWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtpZigKLSgweDExNTgrMjc1Ny0weDFjMTMpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldKXtkYl9kYXRhLT5udW1iZXJbaV09Ci0oKGNoYXIpKDB4ZWQrNzAwNC0weDFjMTkpKTt9ZWxzZXtkYl9kYXRhLT5udW1iZXJbaV09KChjaGFyKSgweDFjNisyMTU0LTB4YTAwKSkrCi1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldO319fX0odm9pZCl6VWZpU21zX1V0aWxUaW1lU3RhbXAodHNfZGF0YV9wdHItPnUuZ3dfcHAudS4KLWRlbGl2ZXIudGltZXN0YW1wLGRiX2RhdGEtPnRwX3NjdHMsJmRiX2RhdGEtPmp1bGlhbl9kYXRlKTtpZih0c19kYXRhX3B0ci0+dS4KLWd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpe2RiX2RhdGEtPnRwX3VkaGk9KDB4ZDMzKzY1MzgtMHgyNmJjKTt9Ci1lbHNle2RiX2RhdGEtPnRwX3VkaGk9KDB4MWYyMisxNjUxLTB4MjU5NSk7fWlmKGRiX2RhdGEtPnRwX3VkaGk9PQotKDB4MzA5KzgzMjItMHgyMzhhKSl7Zm9yKGluZD0oMHgxMjhjKzI3NzMtMHgxZDYxKTtpbmQ8dHNfZGF0YV9wdHItPnUuZ3dfcHAudS4KLWRlbGl2ZXIudXNlcl9kYXRhLm51bV9oZWFkZXJzO2luZCsrKXtyZXN1bHQ9elVmaVNtc19QYXJzZVVkaGlEYXRhKCYodHNfZGF0YV9wdHIKLS0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLmhlYWRlcnNbaW5kXSksZGJfZGF0YSk7aWYoCi1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYPGRiX2RhdGEtPmNvbmNhdF9pbmZvWygweDFhMjgrOTYyLTB4MWRlOSldKXtwcmludGYoCisoMHgxOWEzKzE2NTEtMHgyMDE2KSxaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHhhY2MrNjU3My0weDI0NzgpKTtkYl9kYXRhLT4KK251bWJlclsoMHgyMzUrNDI2Mi0weDEyZGIpXT0oKGNoYXIpKDB4MWNiNSsxNTEzLTB4MjI3MykpO2ZvcihpPQorKDB4MTBiMSsyNDA4LTB4MWExOSk7aTxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmKCgweDQwKzE5NDYtMHg3ZDApPT0KK2FkZHJlc3NfcHRyLT5kaWdpdHNbaV0pe2RiX2RhdGEtPm51bWJlcltpKygweDE1MzYrMTcyMC0weDFiZWQpXT0KKygoY2hhcikoMHhjMDkrMTQ4OC0weDExYTkpKTt9ZWxzZXtkYl9kYXRhLT5udW1iZXJbaSsoMHg0NGYrNTAzLTB4NjQ1KV09CisoKGNoYXIpKDB4OTg4KzEzOTQtMHhlY2EpKSthZGRyZXNzX3B0ci0+ZGlnaXRzW2ldO319fWVsc2UgaWYoCitXTVNfTlVNQkVSX0FMUEhBTlVNRVJJQz09YWRkcmVzc19wdHItPm51bWJlcl90eXBlKXttZW1jcHkoZGJfZGF0YS0+bnVtYmVyLAorYWRkcmVzc19wdHItPmRpZ2l0cyxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cyk7fWVsc2V7aWYoYWRkcmVzc19wdHItPgorZGlnaXRfbW9kZT09V01TX0RJR0lUX01PREVfOF9CSVQpe21lbWNweSgmKGRiX2RhdGEtPm51bWJlclsoMHgxYjk2KzI5MzItMHgyNzA5KV0KKyksYWRkcmVzc19wdHItPmRpZ2l0cyxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cyk7fWVsc2V7Zm9yKGk9CisoMHgyMTMrMTcwNC0weDhiYik7aTxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmKCgweDExOTUrNDc4NC0weDI0M2IpCis9PWFkZHJlc3NfcHRyLT5kaWdpdHNbaV0pe2RiX2RhdGEtPm51bWJlcltpXT0oKGNoYXIpKDB4Y2IrMjIwLTB4MTc3KSk7fWVsc2V7CitkYl9kYXRhLT5udW1iZXJbaV09KChjaGFyKSgweDEwMDArNDU0Ni0weDIxOTIpKSthZGRyZXNzX3B0ci0+ZGlnaXRzW2ldO319fX0odm9pZAorKXpVZmlTbXNfVXRpbFRpbWVTdGFtcCh0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudGltZXN0YW1wLGRiX2RhdGEtPnRwX3NjdHMKKywmZGJfZGF0YS0+anVsaWFuX2RhdGUpO2lmKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci4KK3VzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCl7ZGJfZGF0YS0+dHBfdWRoaT0oMHhhMDkrMjI5Mi0weDEyZmMpO31lbHNle2RiX2RhdGEtPgordHBfdWRoaT0oMHgxMzcrOTU3Ni0weDI2OWYpO31pZihkYl9kYXRhLT50cF91ZGhpPT0oMHhjMzgrNTM1OC0weDIxMjUpKXtmb3IoaW5kPQorKDB4NGM1KzE0ODUtMHhhOTIpO2luZDx0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLm51bV9oZWFkZXJzO2luZAorKyspe3Jlc3VsdD16VWZpU21zX1BhcnNlVWRoaURhdGEoJih0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLgoraGVhZGVyc1tpbmRdKSxkYl9kYXRhKTtpZihaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYPGRiX2RhdGEtPmNvbmNhdF9pbmZvWworKDB4MzZjKzQ4NzAtMHgxNjcxKV0pe3ByaW50ZigKICJceDc0XHg2OFx4NjVceDIwXHg2M1x4NmZceDZlXHg2M1x4NjFceDc0XHgyMFx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NjdceDZkXHg2NVx4NmVceDc0XHgyMFx4NjlceDczXHgyMFx4MjVceDY0XHgyY1x4NjFceDZlXHg2NFx4MjBceDZjXHg2MVx4NzJceDY3XHg2NVx4NzJceDIwXHg3NFx4NjhceDY1XHg2ZVx4MjBceDc0XHg2OFx4NjVceDIwXHgyMFx4NzNceDc1XHg3MFx4NzBceDZmXHg3Mlx4NzRceDY1XHg2NFx4MjBceDI1XHg2NFx4MjBceDczXHg2NVx4NjdceDZkXHg2NVx4NmVceDc0XHg3M1x4MmNceDczXHg2Zlx4MjBceDY0XHg2OVx4NjRceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjRceDY1XHg2MVx4NmNceDIwXHg3NFx4NjhceDY1XHgyMFx4NjNceDZmXHg2ZVx4NjNceDYxXHg3NFx4MjBceDczXHg2ZFx4NzNceDJlXHgyMCIKLSxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHg5ZWMrMjEzNy0weDEyNDQpXSxaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKTtpZigKKyxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgxMWExKzExNTAtMHgxNjFlKV0sWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCk7aWYoCiBXTVNfU1RPUkFHRV9UWVBFX05WX1YwMT09ZGJfZGF0YS0+bWVtX3N0b3JlKXt6VWZpU21zX0RlbE1vZGVtU21zKGRiX2RhdGEtPmluZGV4KQogO31yZXN1bHQ9WlVGSV9GQUlMO319fXRwX2Rjcz10c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIuZGNzLmFscGhhYmV0O2RiX2RhdGEKIC0+c21zX2NsYXNzPXRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci5kY3MubXNnX2NsYXNzO2lmKAogV01TX0dXX0FMUEhBQkVUXzhfQklUPj10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0odW5zaWduZWQgY2hhcikKLSgweDExOWQrNTE5Ni0weDI1ZTgpO31lbHNlIGlmKFdNU19HV19BTFBIQUJFVF9VQ1MyPT10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0oCi11bnNpZ25lZCBjaGFyKSgweDhkMys2MTAxLTB4MjBhNik7fWVsc2V7cHJpbnRmKAorKDB4N2E1KzM4NDItMHgxNmE2KTt9ZWxzZSBpZihXTVNfR1dfQUxQSEFCRVRfVUNTMj09dHBfZGNzKXtkYl9kYXRhLT50cF9kY3M9KAordW5zaWduZWQgY2hhcikoMHhmZTIrNTMzMy0weDI0YjUpO31lbHNle3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NzRceDcwXHg1Zlx4NjRceDYzXHg3M1x4M2RceDI1XHg2NCIsdHBfZGNzKTt9CiBkYl9kYXRhLT50cF9waWQ9KHVuc2lnbmVkIGNoYXIpdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLnBpZDtpZih0c19kYXRhX3B0cgogLT51Lmd3X3BwLnUuZGVsaXZlci5kY3MuYWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF9VQ1MyKXtyZXN1bHQ9CiB6VWZpU21zX0Rpc3BhdGNoV3RvaSh0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLnNtX2RhdGEsCiB0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLnNtX2xlbixkYl9kYXRhLT5zbXNfY29udGVudCk7ZGJfZGF0YS0+CiBhbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfVUNTMjt9ZWxzZSBpZih0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIuZGNzLgotYWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF84X0JJVCl7Zm9yKGluZD0oMHgxNmNmKzEwMTYtMHgxYWM3KTtpbmQ8dHNfZGF0YV9wdHItPnUKLS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLnNtX2xlbjtpbmQrKyl7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCi0oMHgxMTM0KzU0NjAtMHgyNjg0KSppbmRdPSgoY2hhcikoMHgxMmYxKzUxMTgtMHgyNmJmKSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCi0oMHgxNjgrMzA1OC0weGQ1NikqaW5kKygweGZkYis1Njg3LTB4MjYxMSldPSgoY2hhcikoMHgzYjYrMzUxMS0weDExM2QpKTtkYl9kYXRhCi0tPnNtc19jb250ZW50WygweDMxNis3NjAtMHg2MGEpKmluZCsoMHgxNGI2KzE5ODQtMHgxYzc0KV09Z196VWZpU21zX0RpZ0FzY01hcFsoKAotdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLnVzZXJfZGF0YS5zbV9kYXRhW2luZF0mKDB4YjZkKzQxMS0weGMxOCkpPj4KLSgweGU3MSsxMTY1LTB4MTJmYSkpXTtkYl9kYXRhLT5zbXNfY29udGVudFsoMHg1NTMrMjI2NS0weGUyOCkqaW5kKwotKDB4YWU4KzMzMzAtMHgxN2U3KV09Z196VWZpU21zX0RpZ0FzY01hcFsodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLgotdXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHgxNWMrMTU0LTB4MWU3KSldO2RiX2RhdGEtPmFscGhhYmV0PQorYWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF84X0JJVCl7Zm9yKGluZD0oMHgxMmE5KzM3NzUtMHgyMTY4KTtpbmQ8dHNfZGF0YV9wdHItPnUKKy5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLnNtX2xlbjtpbmQrKyl7ZGJfZGF0YS0+c21zX2NvbnRlbnRbKDB4MTQyKzIyMDItMHg5ZDgpCisqaW5kXT0oKGNoYXIpKDB4Mjc2KzM5MDYtMHgxMTg4KSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbKDB4OTg0KzM2OC0weGFmMCkqaW5kKworKDB4MTFkYisxMjc3LTB4MTZkNyldPSgoY2hhcikoMHgxNmQrMjAzLTB4MjA4KSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCisoMHgxMDhhKzIzMDYtMHgxOTg4KSppbmQrKDB4MTMwMCszOTkyLTB4MjI5NildPWdfelVmaVNtc19EaWdBc2NNYXBbKCh0c19kYXRhX3B0cgorLT51Lmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fZGF0YVtpbmRdJigweDEwMWIrNTM2OC0weDI0MjMpKT4+CisoMHgxNGE0KzI2OTAtMHgxZjIyKSldO2RiX2RhdGEtPnNtc19jb250ZW50WygweGZlNCs4MTQtMHgxMzBlKSppbmQrCisoMHgxNDUyKzEwOTItMHgxODkzKV09Z196VWZpU21zX0RpZ0FzY01hcFsodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLgordXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHgxMDk5KzUzNDctMHgyNTZkKSldO2RiX2RhdGEtPmFscGhhYmV0PQogV01TX0dXX0FMUEhBQkVUX1VDUzI7fX1lbHNlIGlmKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci5kY3MuYWxwaGFiZXQ9PQogV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe3Jlc3VsdD16VWZpU21zX0Rpc3BhdGNoV3RvaSh0c19kYXRhX3B0ci0+dS5nd19wcC4KIHUuZGVsaXZlci51c2VyX2RhdGEuc21fZGF0YSx0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhLnNtX2xlbiwKIGRiX2RhdGEtPnNtc19jb250ZW50KTtkYl9kYXRhLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDtkYl9kYXRhLT4KLXRwX2Rjcz0odW5zaWduZWQgY2hhcikoMHgxZjUrMjcxNC0weGM4ZCk7fXJldHVybiByZXN1bHQ7fWludCAKK3RwX2Rjcz0odW5zaWduZWQgY2hhcikoMHhjZGIrMjM3NC0weDE2MWYpO31yZXR1cm4gcmVzdWx0O31pbnQgCiB6VWZpU21zX0Zvcm1hdFN1Ym1pdERiZGF0YShUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKnRzX2RhdGFfcHRyLAogVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCByZXN1bHQ9WlVGSV9TVUNDO3dtc19hZGRyZXNzX3NfdHlwZSoKIGFkZHJlc3NfcHRyPU5VTEw7d21zX2d3X2FscGhhYmV0X2VfdHlwZSB0cF9kY3M9V01TX0dXX0FMUEhBQkVUX01BWDMyO2ludCBpPQotKDB4YTJjKzEzMDEtMHhmNDEpO2ludCBpbmQ9KDB4MWY2Nys4ODAtMHgyMmQ3KTtpZigoTlVMTD09dHNfZGF0YV9wdHIpfHwoTlVMTD09CisoMHgxNDE0KzcyMS0weDE2ZTUpO2ludCBpbmQ9KDB4NzAwKzUxMzktMHgxYjEzKTtpZigoTlVMTD09dHNfZGF0YV9wdHIpfHwoTlVMTD09CiBkYl9kYXRhKSl7cHJpbnRmKCJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3M1x4MmUiKQogO3JldHVybiBaVUZJX0ZBSUw7fWFkZHJlc3NfcHRyPSYodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQuYWRkcmVzcyk7aWYoKAogV01TX05VTUJFUl9JTlRFUk5BVElPTkFMPT1hZGRyZXNzX3B0ci0+bnVtYmVyX3R5cGUpKXtkYl9kYXRhLT5udW1iZXJbCi0oMHg2ZjkrNDMwMy0weDE3YzgpXT0oKGNoYXIpKDB4ZWIwKzI3ODItMHgxOTYzKSk7Zm9yKGk9KDB4NzYzKzk0LTB4N2MxKTtpPAotYWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtpZigoMHhmNmErNDk4MS0weDIyZDUpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2kKLV0pe2RiX2RhdGEtPm51bWJlcltpKygweDU4MSsyMTU1LTB4ZGViKV09KChjaGFyKSgweDE3M2ErMTkzLTB4MTdjYikpO31lbHNlewotZGJfZGF0YS0+bnVtYmVyW2krKDB4NTQwKzUxNDktMHgxOTVjKV09KChjaGFyKSgweDFmMDQrMTkyNS0weDI2NTkpKSthZGRyZXNzX3B0cgotLT5kaWdpdHNbaV07fX19ZWxzZXtmb3IoaT0oMHgxOGQyKzE4NDItMHgyMDA0KTtpPGFkZHJlc3NfcHRyLT5udW1iZXJfb2ZfZGlnaXRzO2kKLSsrKXtpZigoMHhjNGYrMzIyNy0weDE4ZTApPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldKXtkYl9kYXRhLT5udW1iZXJbaV09Ci0oKGNoYXIpKDB4YzBjKzIzNTgtMHgxNTEyKSk7fWVsc2V7ZGJfZGF0YS0+bnVtYmVyW2ldPSgoY2hhcikoMHhiZmMrMTkzMS0weDEzNTcpKQotK2FkZHJlc3NfcHRyLT5kaWdpdHNbaV07fX19dHBfZGNzPXRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmRjcy5hbHBoYWJldDsKLWRiX2RhdGEtPnNtc19jbGFzcz10c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5kY3MubXNnX2NsYXNzO2lmKAotV01TX0dXX0FMUEhBQkVUXzhfQklUPj10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0odW5zaWduZWQgY2hhcikoMHg0NTkrMjA0OC0weGM1OCkKLTt9ZWxzZSBpZihXTVNfR1dfQUxQSEFCRVRfVUNTMj09dHBfZGNzKXtkYl9kYXRhLT50cF9kY3M9KHVuc2lnbmVkIGNoYXIpCi0oMHgxMTE0KzU3OC0weDEzNTQpO31lbHNle3ByaW50ZigKKygweGM4Mys0ODI5LTB4MWY2MCldPSgoY2hhcikoMHgxNWM1KzI4NDktMHgyMGJiKSk7Zm9yKGk9KDB4MjI3KzkxMjAtMHgyNWM3KTtpPAorYWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtpZigoMHgzM2ErMzY0MS0weDExNjkpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2kKK10pe2RiX2RhdGEtPm51bWJlcltpKygweDFmNGQrMTYtMHgxZjVjKV09KChjaGFyKSgweDdmYys0OTUyLTB4MWIyNCkpO31lbHNleworZGJfZGF0YS0+bnVtYmVyW2krKDB4ZTM2KzQwMzQtMHgxZGY3KV09KChjaGFyKSgweDIxNSszMzYwLTB4ZjA1KSkrYWRkcmVzc19wdHItPgorZGlnaXRzW2ldO319fWVsc2V7Zm9yKGk9KDB4MTVmOCs0MTY5LTB4MjY0MSk7aTxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKysKKyl7aWYoKDB4NmFjKzc2OTUtMHgyNGIxKT09YWRkcmVzc19wdHItPmRpZ2l0c1tpXSl7ZGJfZGF0YS0+bnVtYmVyW2ldPQorKChjaGFyKSgweDEyZjQrMTMxNC0weDE3ZTYpKTt9ZWxzZXtkYl9kYXRhLT5udW1iZXJbaV09CisoKGNoYXIpKDB4MWFiZisyNDQtMHgxYjgzKSkrYWRkcmVzc19wdHItPmRpZ2l0c1tpXTt9fX10cF9kY3M9dHNfZGF0YV9wdHItPnUuCitnd19wcC51LnN1Ym1pdC5kY3MuYWxwaGFiZXQ7ZGJfZGF0YS0+c21zX2NsYXNzPXRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmRjcworLm1zZ19jbGFzcztpZihXTVNfR1dfQUxQSEFCRVRfOF9CSVQ+PXRwX2Rjcyl7ZGJfZGF0YS0+dHBfZGNzPSh1bnNpZ25lZCBjaGFyKQorKDB4YjMrNDgxMS0weDEzN2QpO31lbHNlIGlmKFdNU19HV19BTFBIQUJFVF9VQ1MyPT10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0oCit1bnNpZ25lZCBjaGFyKSgweDEyOTYrMjgwOS0weDFkOGQpO31lbHNle3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NzRceDcwXHg1Zlx4NjRceDYzXHg3M1x4M2RceDI1XHg2NCIsdHBfZGNzKTt9CiBkYl9kYXRhLT50cF9waWQ9KHVuc2lnbmVkIGNoYXIpdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQucGlkO2RiX2RhdGEtPgogbXNnX3JlZj0odW5zaWduZWQgY2hhcil0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5tZXNzYWdlX3JlZmVyZW5jZTtpZigKIHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCl7ZGJfZGF0YS0+dHBfdWRoaT0KLSgweDEwOGIrMjI4Mi0weDE5NzQpO31lbHNle2RiX2RhdGEtPnRwX3VkaGk9KDB4MTJhZisxNjI0LTB4MTkwNyk7fWlmKGRiX2RhdGEtPgotdHBfdWRoaT09KDB4NTMzKzgxNTQtMHgyNTBjKSl7Zm9yKGluZD0oMHg5ZmYrNTgzLTB4YzQ2KTtpbmQ8dHNfZGF0YV9wdHItPnUuZ3dfcHAKLS51LnN1Ym1pdC51c2VyX2RhdGEubnVtX2hlYWRlcnM7aW5kKyspe3Jlc3VsdD16VWZpU21zX1BhcnNlVWRoaURhdGEoJigKKygweGRhZCsxNjQ3LTB4MTQxYik7fWVsc2V7ZGJfZGF0YS0+dHBfdWRoaT0oMHgxNjlmKzY2My0weDE5MzYpO31pZihkYl9kYXRhLT4KK3RwX3VkaGk9PSgweDE1NjkrMTYwNi0weDFiYWUpKXtmb3IoaW5kPSgweDFiNjcrMjEzMC0weDIzYjkpO2luZDx0c19kYXRhX3B0ci0+dS4KK2d3X3BwLnUuc3VibWl0LnVzZXJfZGF0YS5udW1faGVhZGVycztpbmQrKyl7cmVzdWx0PXpVZmlTbXNfUGFyc2VVZGhpRGF0YSgmKAogdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLmhlYWRlcnNbaW5kXSksZGJfZGF0YSk7aWYoCi1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYPGRiX2RhdGEtPmNvbmNhdF9pbmZvWygweGM0OSs1NjQyLTB4MjI1MildKXtwcmludGYoCitaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYPGRiX2RhdGEtPmNvbmNhdF9pbmZvWygweGU2MCsyMzUwLTB4MTc4ZCldKXtwcmludGYoCiAiXHg3NFx4NjhceDY1XHgyMFx4NjNceDZmXHg2ZVx4NjNceDYxXHg3NFx4MjBceDczXHg2ZFx4NzNceDIwXHg3M1x4NjVceDY3XHg2ZFx4NjVceDZlXHg3NFx4MjBceDY5XHg3M1x4MjBceDZjXHg2MVx4NzJceDY3XHg2NVx4NzJceDIwXHg3NFx4NjhceDY1XHg2ZVx4MjBceDc0XHg2OFx4NjVceDIwXHgyMFx4NzNceDc1XHg3MFx4NzBceDZmXHg3Mlx4NzRceDY1XHg2NFx4MjBceDczXHg2NVx4NjdceDZkXHg2NVx4NmVceDc0XHg3M1x4MmNceDczXHg2Zlx4MjBceDY0XHg2OVx4NjRceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjRceDY1XHg2MVx4NmNceDIwXHg3NFx4NjhceDY1XHgyMFx4NjNceDZmXHg2ZVx4NjNceDYxXHg3NFx4MjBceDczXHg2ZFx4NzNceDJlIgogKTtpZihXTVNfU1RPUkFHRV9UWVBFX05WX1YwMT09ZGJfZGF0YS0+bWVtX3N0b3JlKXt6VWZpU21zX0RlbE1vZGVtU21zKGRiX2RhdGEtPgogaW5kZXgpO31yZXN1bHQ9WlVGSV9GQUlMO319fWlmKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmRjcy5hbHBoYWJldD09CiBXTVNfR1dfQUxQSEFCRVRfVUNTMil7cmVzdWx0PXpVZmlTbXNfRGlzcGF0Y2hXdG9pKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LgogdXNlcl9kYXRhLnNtX2RhdGEsdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLnNtX2xlbixkYl9kYXRhLT4KIHNtc19jb250ZW50KTtkYl9kYXRhLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfVUNTMjt9ZWxzZSBpZih0c19kYXRhX3B0ci0+dS4KLWd3X3BwLnUuc3VibWl0LmRjcy5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzhfQklUKXtmb3IoaW5kPSgweDE3ZDErMTcxOS0weDFlODgpCi07aW5kPHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LnVzZXJfZGF0YS5zbV9sZW47aW5kKyspe2RiX2RhdGEtPnNtc19jb250ZW50WwotKDB4YjY5KzY4NTAtMHgyNjI3KSppbmRdPSgoY2hhcikoMHgxY2YzKzEyMTMtMHgyMTgwKSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCi0oMHgzZjErODItMHg0M2YpKmluZCsoMHg2MjYrNTI0OC0weDFhYTUpXT0oKGNoYXIpKDB4OWY0KzU1NTYtMHgxZjc4KSk7ZGJfZGF0YS0+Ci1zbXNfY29udGVudFsoMHgzYmErNzQwMi0weDIwYTApKmluZCsoMHg2ZjErNjgxNC0weDIxOGQpXT1nX3pVZmlTbXNfRGlnQXNjTWFwWygoCi10c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC51c2VyX2RhdGEuc21fZGF0YVtpbmRdJigweDFmOTMrMTQwNi0weDI0MjEpKT4+Ci0oMHgxNTY2KzIyMDktMHgxZTAzKSldO2RiX2RhdGEtPnNtc19jb250ZW50WygweGM5ZiszOTE2LTB4MWJlNykqaW5kKwotKDB4MTAzNSs0MjM4LTB4MjBjMCldPWdfelVmaVNtc19EaWdBc2NNYXBbKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LgotdXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHg5OWIrMjg3My0weDE0YzUpKV07ZGJfZGF0YS0+YWxwaGFiZXQ9Citnd19wcC51LnN1Ym1pdC5kY3MuYWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF84X0JJVCl7Zm9yKGluZD0oMHhhOCs1MDI4LTB4MTQ0Yyk7CitpbmQ8dHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLnNtX2xlbjtpbmQrKyl7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCisoMHgxMGQrOTg2LTB4NGUzKSppbmRdPSgoY2hhcikoMHg2ZTIrNjk0OC0weDIxZDYpKTtkYl9kYXRhLT5zbXNfY29udGVudFsKKygweGViYiszMTE5LTB4MWFlNikqaW5kKygweDcwMCsyNzM5LTB4MTFiMildPSgoY2hhcikoMHgyMDQ5KzcxOC0weDIyZTcpKTtkYl9kYXRhCistPnNtc19jb250ZW50WygweDM5MisyOTU4LTB4ZjFjKSppbmQrKDB4NmJiKzM5MjgtMHgxNjExKV09Z196VWZpU21zX0RpZ0FzY01hcFsoKAordHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHgxZmYrODA1OC0weDIwODkpKT4+CisoMHg0NDUrODYzMC0weDI1ZjcpKV07ZGJfZGF0YS0+c21zX2NvbnRlbnRbKDB4ZDViKzM3NDAtMHgxYmYzKSppbmQrCisoMHgxYWFiKzMwNS0weDFiZDkpXT1nX3pVZmlTbXNfRGlnQXNjTWFwWyh0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC4KK3VzZXJfZGF0YS5zbV9kYXRhW2luZF0mKDB4MTBlYysyMi0weDEwZjMpKV07ZGJfZGF0YS0+YWxwaGFiZXQ9CiBXTVNfR1dfQUxQSEFCRVRfVUNTMjt9fWVsc2UgaWYodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQuZGNzLmFscGhhYmV0PT0KIFdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUKXtyZXN1bHQ9elVmaVNtc19EaXNwYXRjaFd0b2kodHNfZGF0YV9wdHItPnUuZ3dfcHAuCiB1LnN1Ym1pdC51c2VyX2RhdGEuc21fZGF0YSx0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC51c2VyX2RhdGEuc21fbGVuLAogZGJfZGF0YS0+c21zX2NvbnRlbnQpO2RiX2RhdGEtPmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO2RiX2RhdGEtPgotdHBfZGNzPSh1bnNpZ25lZCBjaGFyKSgweDEyNzMrMzUzMS0weDIwM2MpO31yZXR1cm4gcmVzdWx0O31pbnQgSW52ZXJ0TnVtYmVycygKK3RwX2Rjcz0odW5zaWduZWQgY2hhcikoMHg0MDYrMzY0My0weDEyM2YpO31yZXR1cm4gcmVzdWx0O31pbnQgSW52ZXJ0TnVtYmVycygKIGNvbnN0IGNoYXIqcFNyYyxjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBuRHN0TGVuZ3RoO2NoYXIgY2g7aW50IGk9Ci0oMHhiNys5Mzk0LTB4MjU2OSk7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHhiZTErMjk3Mi0weDE3N2QpKXsKLXJldHVybi0oMHgyMWQ2KzUxNy0weDIzZGEpO31uRHN0TGVuZ3RoPW5TcmNMZW5ndGg7Zm9yKGk9KDB4ZTUxKzE5MzQtMHgxNWRmKTtpPAotblNyY0xlbmd0aDtpKz0oMHgxMWRhKzQxMC0weDEzNzIpKXtjaD0qcFNyYysrOypwRHN0Kys9KnBTcmMrKzsqcERzdCsrPWNoO31pZigKLW5TcmNMZW5ndGgmKDB4ZDAxKzQ3NTktMHgxZjk3KSl7KihwRHN0LSgweDU2NSsxODA1LTB4YzcwKSk9Ci0oKGNoYXIpKDB4MWMyZCsxNjE4LTB4MjIzOSkpO25Ec3RMZW5ndGgrKzt9KnBEc3Q9J1wwJztyZXR1cm4gbkRzdExlbmd0aDt9aW50IAorKDB4YzFhKzUyNzctMHgyMGI3KTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDZiMCs1ODcxLTB4MWQ5ZikpeworcmV0dXJuLSgweDFjMSs2MzUwLTB4MWE4ZSk7fW5Ec3RMZW5ndGg9blNyY0xlbmd0aDtmb3IoaT0oMHgxMGU1KzIzODctMHgxYTM4KTtpPAorblNyY0xlbmd0aDtpKz0oMHgxZisxNDE5LTB4NWE4KSl7Y2g9KnBTcmMrKzsqcERzdCsrPSpwU3JjKys7KnBEc3QrKz1jaDt9aWYoCituU3JjTGVuZ3RoJigweDQ2NysyMTU2LTB4Y2QyKSl7KihwRHN0LSgweDM1Yis2NDI0LTB4MWM3MSkpPQorKChjaGFyKSgweDEzODIrNDU5OS0weDI1MzMpKTtuRHN0TGVuZ3RoKys7fSpwRHN0PSdcMCc7cmV0dXJuIG5Ec3RMZW5ndGg7fWludCAKIGNvZGVfaXNfZ3NtNyhjb25zdCBTTVNfUEFSQU0qcFNyYyx1bnNpZ25lZCBjaGFyIGJ1ZltdLGludCBuTGVuZ3RoKXtpZihwU3JjLT4KLVRQX1VESEk9PSgweDFlN2MrMTI1MC0weDIzNWQpKXtidWZbKDB4Mjc4KzkzNTMtMHgyNmZlKV09KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDsKLWJ1ZlsoMHhhNTIrMTQ5NS0weDEwMjUpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgyM2Q3KzIwNC0weDI0YTMpXTtidWZbCi0oMHgxZmRhKzg0OC0weDIzMjUpXT0oMHgxNTI1KzM3OTYtMHgyM2Y5KTtidWZbKDB4ODE5KzE3NTItMHhlZWIpXT0odW5zaWduZWQgY2hhcgotKXBTcmMtPlRQX1VEWygweDExZjYrMjEwLTB4MTJjNildO2J1ZlsoMHg3MzIrNDg1MS0weDFhMWUpXT0odW5zaWduZWQgY2hhcilwU3JjLT4KLVRQX1VEWygweDUxMCs0MjgxLTB4MTVjNildO2J1ZlsoMHg3Y2ErNDQ4OS0weDE5NGIpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsKLSgweDM2Mys4NTk3LTB4MjRmNCldO2J1ZlsoMHgxMjYzKzYzMS0weDE0ZDEpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsKLSgweDljMysxNjktMHhhNjcpXTtidWZbKDB4ZmM4KzQ3MjItMHgyMjMwKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHhjYjYrMTY1My0weDEzMjQpXTtidWZbKDB4MTE3YSszNzg5LTB4MjAzZCldPSh1bnNpZ25lZCBjaGFyKShidWZbCi0oMHhmMzQrMjMyMi0weDE4M2MpXTw8KDB4MTM5Kzk1ODUtMHgyNmE5KSk7bkxlbmd0aD1uTGVuZ3RoLSgweDE2NTgrMzgxNC0weDI1MzcpOwotbkxlbmd0aD1FbmNvZGU3Yml0KCYocFNyYy0+VFBfVURbKDB4MWIzOSsyNzE5LTB4MjVkMCldKSwmYnVmWwotKDB4MTE2Yis0MzQyLTB4MjI1NildLG5MZW5ndGgrKDB4MThmMis2NzAtMHgxYjhmKSkrKDB4MzdiKzI3NTItMHhlMzcpKwotKDB4MWEzZCsyMTM2LTB4MjI4Zik7Ci0jaWYgKDB4OGMxKzI1MTItMHgxMjkxKQotbkxlbmd0aCs9KDB4MzU3KzM3OTgtMHgxMjJiKTsKK1RQX1VESEk9PSgweGRlNisyNjgxLTB4MTg1ZSkpe2J1ZlsoMHgyN2MrMzQ3LTB4M2Q0KV09KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDtidWZbCisoMHg0ZDkrODE0OS0weDI0YWEpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHhkNSsyNTI1LTB4YWIyKV07YnVmWworKDB4MTZiKzE2MTYtMHg3YjYpXT0oMHgxYWQ4KzE0MjktMHgyMDZkKTtidWZbKDB4MTArNjE4NS0weDE4MzMpXT0odW5zaWduZWQgY2hhcikKK3BTcmMtPlRQX1VEWygweDIxNTkrNDQ4LTB4MjMxNyldO2J1ZlsoMHgzNDArNDMyNy0weDE0MjApXT0odW5zaWduZWQgY2hhcilwU3JjLT4KK1RQX1VEWygweDFlYzcrMTYyOS0weDI1MjEpXTtidWZbKDB4ZDE1KzMwNjMtMHgxOTA0KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCisoMHhlY2YrNTk5MC0weDI2MzEpXTtidWZbKDB4N2EwKzE3NjUtMHhlN2MpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsKKygweDFmNmIrNTItMHgxZjlhKV07YnVmWygweDgwKzYxOTQtMHgxOGE4KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCisoMHgxMjg0KzEyNTktMHgxNzY4KV07YnVmWygweDEzZWIrMjAxMS0weDFiYmMpXT0odW5zaWduZWQgY2hhcikoYnVmWworKDB4ZmFiKzE5MTUtMHgxNzFjKV08PCgweDEwOGErMTQzMy0weDE2MjIpKTtuTGVuZ3RoPW5MZW5ndGgtKDB4YmE2KzMxNjUtMHgxN2ZjKTsKK25MZW5ndGg9RW5jb2RlN2JpdCgmKHBTcmMtPlRQX1VEWygweDc3OCsxNzQtMHg4MWUpXSksJmJ1ZlsoMHgxODQ2Kzc5NC0weDFiNTUpXSwKK25MZW5ndGgrKDB4MTE1OCs0MTQxLTB4MjE4NCkpKygweDQ2ZCs2MTA5LTB4MWM0NikrKDB4YjgrMTI1My0weDU5Nyk7CisjaWYgKDB4OGFiKzI0MzEtMHgxMjJhKQorbkxlbmd0aCs9KDB4NWM1KzU4MTAtMHgxYzc1KTsKICNlbmRpZg0KLX1lbHNle25MZW5ndGg9cFNyYy0+VFBfVURMZW5ndGg7YnVmWygweGJkZCszNDY0LTB4MTk2MildPW5MZW5ndGg7bkxlbmd0aD0KLUVuY29kZTdiaXQocFNyYy0+VFBfVUQsJmJ1ZlsoMHgyMzU3KzMyMS0weDI0OTQpXSxuTGVuZ3RoKygweDM5Nis4OTE3LTB4MjY2YSkpKwotKDB4MWRkYys5MjEtMHgyMTcxKTt9YXRfcHJpbnQoTE9HX0RFQlVHLAorfWVsc2V7bkxlbmd0aD1wU3JjLT5UUF9VRExlbmd0aDtidWZbKDB4YzU4KzIzOTAtMHgxNWFiKV09bkxlbmd0aDtuTGVuZ3RoPQorRW5jb2RlN2JpdChwU3JjLT5UUF9VRCwmYnVmWygweDE5Yis5NTc2LTB4MjZmZildLG5MZW5ndGgrKDB4MTM1NSs2MzYtMHgxNWQwKSkrCisoMHgxZGEzKzY2LTB4MWRlMSk7fWF0X3ByaW50KExPR19ERUJVRywKICJceDYyXHg3NVx4NjZceDIwXHg2OVx4NzNceDIwXHgyNVx4NzMiICJcbiIsYnVmKTtyZXR1cm4gbkxlbmd0aDt9aW50IAogY29kZV9pc191Y3MyKGNvbnN0IFNNU19QQVJBTSpwU3JjLHVuc2lnbmVkIGNoYXIgYnVmW10saW50IG5MZW5ndGgpe25MZW5ndGg9Ci1zdHJsZW4ocFNyYy0+VFBfVUQpO2lmKHBTcmMtPlRQX1VESEk9PSgweGQ3MCs0NzgtMHhmNGQpKXtidWZbCi0oMHgxMmQ1KzIwNTUtMHgxYWQ5KV09KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDtidWZbKDB4OTA2KzM1NzctMHgxNmZiKV09KHVuc2lnbmVkIAotY2hhcilwU3JjLT5UUF9VRFsoMHg2ODIrODMyLTB4OWMyKV07YnVmWygweDVkNCszMzY3LTB4MTJmNildPSgweDlmNiszNTU3LTB4MTdkYikKLTtidWZbKDB4YzdiKzY2NDctMHgyNjZjKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4ODRjKzYwNjgtMHgxZmZlKV07YnVmWwotKDB4NTMxKzMyNTktMHgxMWU1KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4MTVhNisyMDA5LTB4MWQ3YyldO2J1ZlsKLSgweGU1Mis0Mzc5LTB4MWY2NSldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDQzNisyOTItMHg1NTYpXTtidWZbCi0oMHgzYjcrODk1OS0weDI2YWQpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxY2MyKzE1NzItMHgyMmUxKV07YnVmWwotKDB4YjQyKzQ1NTUtMHgxZDBhKV09KHVuc2lnbmVkIGNoYXIpKEVuY29kZVVjczIoJihwU3JjLT5UUF9VRFsKLSgweGVmYSszMTI2LTB4MWIyYSldKSwmYnVmWygweGNmMCs1MTI0LTB4MjBlYSldLG5MZW5ndGgtKDB4MTFmKzQ1NTgtMHgxMmU3KSkrCi0oMHgxMDg4KzM4NzgtMHgxZmE4KSk7bkxlbmd0aD1idWZbKDB4MTBhMis3MDMtMHgxMzVlKV0rKDB4MTY4OSsxNjYyLTB4MWQwMyk7fQotZWxzZXtidWZbKDB4MTMwMys1ODAtMHgxNTQ0KV09RW5jb2RlVWNzMihwU3JjLT5UUF9VRCwmYnVmWygweGI3Yis0NzczLTB4MWUxYyldLAotbkxlbmd0aCk7bkxlbmd0aD1idWZbKDB4N2NjKzQ3OTAtMHgxYTdmKV0rKDB4ZTAyKzEwNy0weGU2OSk7fXJldHVybiBuTGVuZ3RoO31pbnQKLSBFbmNvZGU4Yml0KGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2lmKHBTcmM9PU5VTEx8fAotcERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHhhODArNjgzMS0weDI1MmYpKXtyZXR1cm4tKDB4MTVjOSsxOTQ2LTB4MWQ2Mik7fW1lbWNweSgKK3N0cmxlbihwU3JjLT5UUF9VRCk7aWYocFNyYy0+VFBfVURIST09KDB4MjI4MSs4MzctMHgyNWM1KSl7YnVmWworKDB4MjI2KzIyMTAtMHhhYzUpXT0odW5zaWduZWQgY2hhciluTGVuZ3RoO2J1ZlsoMHhjNTUrNTA1LTB4ZTRhKV09KHVuc2lnbmVkIGNoYXIKKylwU3JjLT5UUF9VRFsoMHgzYzIrNTQ5LTB4NWU3KV07YnVmWygweDc4Nys2MDM5LTB4MWYxOSldPSgweGQxYis0NDM2LTB4MWU2Zik7YnVmCitbKDB4MjNiNCs2MDAtMHgyNjA2KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4ZDMrMjQzNi0weGE1NSldO2J1ZlsKKygweDhmYSszNTg2LTB4MTZmNSldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDFjNys1NzMwLTB4MTgyNildO2J1ZlsKKygweDI4MCsxMjE0LTB4NzM2KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4Y2MwKzI4MTAtMHgxN2I2KV07YnVmWworKDB4NDM1KzczOTEtMHgyMTBiKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4YjY4KzE1MTYtMHgxMTRmKV07YnVmWworKDB4MWU2OCs4OTMtMHgyMWUyKV09KHVuc2lnbmVkIGNoYXIpKEVuY29kZVVjczIoJihwU3JjLT5UUF9VRFsoMHgyYSsxMDU4LTB4NDQ2KV0KKyksJmJ1ZlsoMHgxMWRkKzI5MjItMHgxZDNkKV0sbkxlbmd0aC0oMHgzMmYrMzgzNC0weDEyMjMpKSsoMHhhMWErMzgyMS0weDE5MDEpKTsKK25MZW5ndGg9YnVmWygweDEzN2MrNTg5LTB4MTVjNildKygweGVlYiszOTkxLTB4MWU3ZSk7fWVsc2V7YnVmWworKDB4YTE3KzE5NTQtMHgxMWI2KV09RW5jb2RlVWNzMihwU3JjLT5UUF9VRCwmYnVmWygweDhjYisxMjgxLTB4ZGM4KV0sbkxlbmd0aCk7CituTGVuZ3RoPWJ1ZlsoMHgxNGQrODA4MS0weDIwZGIpXSsoMHgxMTJmKzY2NC0weDEzYzMpO31yZXR1cm4gbkxlbmd0aDt9aW50IAorRW5jb2RlOGJpdChjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgY2hhcipwRHN0LGludCBuU3JjTGVuZ3RoKXtpZihwU3JjPT1OVUxMfHwKK3BEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4ZTA4KzUzMy0weDEwMWQpKXtyZXR1cm4tKDB4MjI0Nis2MzMtMHgyNGJlKTt9bWVtY3B5KAogcERzdCxwU3JjLG5TcmNMZW5ndGgpO3JldHVybiBuU3JjTGVuZ3RoO31pbnQgRW5jb2RlUGR1X1N1Ym1pdChjb25zdCBTTVNfUEFSQU0qCi1wU3JjLGNoYXIqcERzdCl7aW50IG5MZW5ndGg9KDB4MTc3Kzg0OC0weDRjNyk7aW50IG5Ec3RMZW5ndGg9KDB4MjcrNjYwNC0weDE5ZjMpOwotdW5zaWduZWQgY2hhciBidWZbKDB4Yjk4KzMwMTktMHgxNjYzKV09eygweDE1ODkrNzQ1LTB4MTg3Mil9O2NoYXIgdG1wU0NBWwotKDB4OWNhKzUxOTMtMHgxZGVmKV09eygweDE5OTErMjY3MS0weDI0MDApfTtpbnQgY2hlY2tfdWRsPSgweDI0YTgrNjAxLTB4MjcwMSk7Ci1tZW1zZXQodG1wU0NBLCgweGY2YysyMzgyLTB4MThiYSksc2l6ZW9mKHRtcFNDQSkpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEwpewotcmV0dXJuLSgweDgxOSsyNDI1LTB4MTE5MSk7fQotI2lmICgweDMwMis0OTUxLTB4MTY1OCkKK3BTcmMsY2hhcipwRHN0KXtpbnQgbkxlbmd0aD0oMHg5Nis0ODMwLTB4MTM3NCk7aW50IG5Ec3RMZW5ndGg9CisoMHgxNzQyKzMxMTYtMHgyMzZlKTt1bnNpZ25lZCBjaGFyIGJ1ZlsoMHhmZDArODI4LTB4MTIwYyldPXsoMHgyZCsxMjI3LTB4NGY4KX07CitjaGFyIHRtcFNDQVsoMHgxMzE3KzIxODEtMHgxYjc4KV09eygweDcyNysyNTI1LTB4MTEwNCl9O2ludCBjaGVja191ZGw9CisoMHgxOTViKzM0NS0weDFhYjQpO21lbXNldCh0bXBTQ0EsKDB4MTUxOSs0NTQ2LTB4MjZkYiksc2l6ZW9mKHRtcFNDQSkpO2lmKHBTcmM9PQorTlVMTHx8cERzdD09TlVMTCl7cmV0dXJuLSgweDk5NysxMzQ2LTB4ZWQ4KTt9CisjaWYgKDB4MTZmNyszMTY0LTB4MjM1MikKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHgyMFx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4NTBceDY0XHg3NVx4NWZceDUzXHg3NVx4NjJceDZkXHg2OVx4NzRceDIwXHg2ZFx4NjFceDZiXHg2NVx4MjBceDcwXHg2NFx4NzVceDIwXHg2NFx4NjFceDc0XHg2MSIgIlxuIgogKTtwcmludGYoCkBAIC05MDgsMzk0ICs5MTIsMzk0IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NzNceDYzXHg2MVx4M2FceDI1XHg3MyIgIlxuIixwU3JjLT4KIFNDQSk7CiAjZW5kaWYNCi1uTGVuZ3RoPXN0cmxlbihwU3JjLT5TQ0EpO2J1ZlsoMHg0YzMrODEwOC0weDI0NmYpXT0oY2hhcikoKChuTGVuZ3RoKSYKLSgweDE5MjcrMTA5My0weDFkNmIpKT09KDB4YzgwKzI1OTMtMHgxNmExKT8obkxlbmd0aCk6bkxlbmd0aCsKLSgweDEwZDYrNTA3MS0weDI0YTQpKS8oMHhiYjUrNzE0LTB4ZTdkKSsoMHg5MmQrODA3LTB4YzUzKTtidWZbCi0oMHgxYTBhKzEyNzgtMHgxZjA3KV09KDB4OTQxKzI0ODEtMHgxMjcxKTtzdHJuY3B5KHRtcFNDQSxwU3JjLT5TQ0Esc2l6ZW9mKHRtcFNDQQotKS0oMHgyM2EwKzUxMC0weDI1OWQpKTtpZighKHN0cm5jbXAocFNyYy0+U0NBLCJceDMwXHgzMFx4MzhceDM2IiwKLSgweDE2ZTcrOTUyLTB4MWE5YikpKSl7bWVtc2V0KHRtcFNDQSwoMHgxODIrNTAwNS0weDE1MGYpLHNpemVvZih0bXBTQ0EpKTtuTGVuZ3RoCi09bkxlbmd0aC0oMHgzYzArNTM2Mi0weDE4YjEpOwotI2lmICgweDFiOWMrMTcwLTB4MWM0NSkKLW5MZW5ndGg9bkxlbmd0aC0oMHg3NTQrMjkyNy0weDEyYzIpO3N0cm5jcHkodG1wU0NBLCYocFNyYy0+U0NBWwotKDB4YTUwKzY4MTQtMHgyNGVjKV0pLHNpemVvZih0bXBTQ0EpLSgweDE3Y2MrMTI2NS0weDFjYmMpKTsKK25MZW5ndGg9c3RybGVuKHBTcmMtPlNDQSk7YnVmWygweGI2YisyNDMwLTB4MTRlOSldPShjaGFyKSgoKG5MZW5ndGgpJgorKDB4MzU2KzcyODctMHgxZmNjKSk9PSgweDE0ZTUrMzU2OC0weDIyZDUpPyhuTGVuZ3RoKTpuTGVuZ3RoKygweDIxNWQrMzM0LTB4MjJhYSkKKykvKDB4NjIyKzc3NTctMHgyNDZkKSsoMHg2ZWQrNTk4Mi0weDFlNGEpO2J1ZlsoMHg0ZDErNTMwMi0weDE5ODYpXT0KKygweGQ2Zis1ODY4LTB4MjNkYSk7c3RybmNweSh0bXBTQ0EscFNyYy0+U0NBLHNpemVvZih0bXBTQ0EpLSgweGMyYys2MzA4LTB4MjRjZikpCis7aWYoIShzdHJuY21wKHBTcmMtPlNDQSwiXHgzMFx4MzBceDM4XHgzNiIsKDB4YWM1KzE5OTYtMHgxMjhkKSkpKXttZW1zZXQodG1wU0NBLAorKDB4MjA5KzY1MzgtMHgxYjkzKSxzaXplb2YodG1wU0NBKSk7bkxlbmd0aD1uTGVuZ3RoLSgweGM0Mys1MjIzLTB4MjBhOSk7CisjaWYgKDB4NzdjKzM2NDktMHgxNWJjKQorbkxlbmd0aD1uTGVuZ3RoLSgweDEwNWMrMjA0Ny0weDE4NWEpO3N0cm5jcHkodG1wU0NBLCYocFNyYy0+U0NBWworKDB4MWViKzQxODctMHgxMjQ0KV0pLHNpemVvZih0bXBTQ0EpLSgweDE5NzArMTM3MS0weDFlY2EpKTsKICNlbHNlDQotdG1wU0NBWygweDQyNCsxMDIzLTB4ODIzKV09KChjaGFyKSgweDIxNTErMjkyLTB4MjI0YSkpO3N0cmNweSgmKHRtcFNDQVsKLSgweDEyOTkrMTQxNS0weDE4MWYpXSksJihwU3JjLT5TQ0FbKDB4OWYwKzI2MTQtMHgxNDI0KV0pKTsKK3RtcFNDQVsoMHhhOTYrNDczMC0weDFkMTApXT0oKGNoYXIpKDB4ODBkKzcwMzQtMHgyMzVjKSk7c3RyY3B5KCYodG1wU0NBWworKDB4OGViKzY3MjUtMHgyMzJmKV0pLCYocFNyYy0+U0NBWygweDE2NDErMjA3MC0weDFlNTUpXSkpOwogI2VuZGlmDQotYnVmWygweDEyMzIrMjI2Mi0weDFiMDgpXT0oY2hhcikoKG5MZW5ndGgmKDB4NTdmKzMzMDItMHgxMjY0KSk9PQotKDB4MTIzYSs4NTYtMHgxNTkyKT9uTGVuZ3RoOm5MZW5ndGgrKDB4MTQwYys1MDMtMHgxNjAyKSkvKDB4MTM5Yys0NDM3LTB4MjRlZikrCi0oMHhiMWMrNjIyMy0weDIzNmEpO2J1ZlsoMHgyNjZkKzctMHgyNjczKV09KDB4M2Q0KzI4OTQtMHhlOTEpO31lbHNlIGlmKAotKChjaGFyKSgweDEzOGErNDQtMHgxMzhiKSk9PXBTcmMtPlNDQVsoMHgxMTgrODY4MS0weDIzMDEpXSl7bWVtc2V0KHRtcFNDQSwKLSgweDQ5Yys2MzgtMHg3MWEpLHNpemVvZih0bXBTQ0EpKTsKLSNpZiAoMHgyNTQrNDIzNS0weDEyZGUpCi1uTGVuZ3RoPW5MZW5ndGgtKDB4MTE5MCsxMzgzLTB4MTZmNik7c3RybmNweSh0bXBTQ0EsJihwU3JjLT5TQ0FbCi0oMHhhOTMrMzgwOS0weDE5NzMpXSksc2l6ZW9mKHRtcFNDQSktKDB4ZjJmKzE2OC0weGZkNikpOworYnVmWygweDMyNis0MTY0LTB4MTM2YSldPShjaGFyKSgobkxlbmd0aCYoMHgxNDBkKzIwMDYtMHgxYmUyKSk9PQorKDB4MTFlMis0MjQzLTB4MjI3NSk/bkxlbmd0aDpuTGVuZ3RoKygweDJhMCs0ODc2LTB4MTVhYikpLygweGRiMCsyMDUyLTB4MTViMikrCisoMHgxYTM0KzQzLTB4MWE1ZSk7YnVmWygweGMxNSs1MDAwLTB4MWY5YyldPSgweGUyMiszMzY2LTB4MWFiNyk7fWVsc2UgaWYoCisoKGNoYXIpKDB4ZTkrODE0LTB4M2VjKSk9PXBTcmMtPlNDQVsoMHhlMTkrMjI4Mi0weDE3MDMpXSl7bWVtc2V0KHRtcFNDQSwKKygweDJhYis4Mjc1LTB4MjJmZSksc2l6ZW9mKHRtcFNDQSkpOworI2lmICgweDY3YisxMDE4LTB4YTc0KQorbkxlbmd0aD1uTGVuZ3RoLSgweGVkMCs1MjQyLTB4MjM0OSk7c3RybmNweSh0bXBTQ0EsJihwU3JjLT5TQ0FbCisoMHgxMWY3KzE4MjctMHgxOTE5KV0pLHNpemVvZih0bXBTQ0EpLSgweGJjMys1ODUyLTB4MjI5ZSkpOwogI2Vsc2UNCiBzdHJjcHkodG1wU0NBLHBTcmMtPlNDQSk7CiAjZW5kaWYNCi1idWZbKDB4YzIzKzY3OTMtMHgyNmFjKV09KGNoYXIpKChuTGVuZ3RoJigweDJjNCs4MjEtMHg1ZjgpKT09KDB4Y2I1KzYxMjYtMHgyNGEzKQotPyhuTGVuZ3RoKTpuTGVuZ3RoKygweDE4MzErMTMzMC0weDFkNjIpKS8oMHhjMmYrMzE4LTB4ZDZiKSsoMHhjZmMrNjA0NC0weDI0OTcpOwotYnVmWygweDdmZCs2OTMtMHhhYjEpXT0oMHhiZDMrMzg5Ni0weDFhN2EpO30KLSNpZiAoMHgyYTkrMTQ3MS0weDg2NykKK2J1ZlsoMHhmNWQrNDgwNi0weDIyMjMpXT0oY2hhcikoKG5MZW5ndGgmKDB4OTgrMTEyLTB4MTA3KSk9PSgweDE1ZWQrMzMwLTB4MTczNyk/Cisobkxlbmd0aCk6bkxlbmd0aCsoMHhlYjgrMTUyMi0weDE0YTkpKS8oMHgxYTYrMzU0MS0weGY3OSkrKDB4OTcwKzUxMC0weGI2ZCk7YnVmWworKDB4MjVmKzg3ODQtMHgyNGFlKV09KDB4ODBiKzI5NzctMHgxMzFiKTt9CisjaWYgKDB4YmJmKzI2NTItMHgxNjFhKQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDcwXHg2NFx4NzNceDc0XHgzMlx4M2FceDI1XHg3MyIgIlxuIiwKIHBEc3QpOwogI2VuZGlmDQotaWYobkxlbmd0aDwoMHgxMDYzKzM1NDktMHgxZTNmKXx8bkxlbmd0aD49c2l6ZW9mKHRtcFNDQSkpcmV0dXJuLQotKDB4MTkzNSsxMTE2LTB4MWQ5MCk7bkRzdExlbmd0aD1CeXRlczJTdHJpbmcoYnVmLHBEc3QsKDB4MTQ0YSsyMzc5LTB4MWQ5MykpOworaWYobkxlbmd0aDwoMHg0ZGIrNTgyOS0weDFiOWYpfHxuTGVuZ3RoPj1zaXplb2YodG1wU0NBKSlyZXR1cm4tCisoMHhiOWQrMjE3OS0weDE0MWYpO25Ec3RMZW5ndGg9Qnl0ZXMyU3RyaW5nKGJ1ZixwRHN0LCgweGJmYSs3ODUtMHhmMDkpKTsKIG5Ec3RMZW5ndGgrPUludmVydE51bWJlcnModG1wU0NBLCZwRHN0W25Ec3RMZW5ndGhdLG5MZW5ndGgpOwotI2lmICgweDI1YzArMTcwLTB4MjY2OSkKKyNpZiAoMHgzNzkrMjUyMi0weGQ1MikKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3MFx4NjRceDczXHg3NFx4MzNceDNhXHgyNVx4NzMiICJcbiIsCiBwRHN0KTsKICNlbmRpZg0KLWlmKHBTcmMtPlRQQVsoMHhlYSs4MjMxLTB4MjExMSldPT0oKGNoYXIpKDB4MTJkYysxOTM4LTB4MWE0MykpKXtuTGVuZ3RoPXN0cmxlbigmCi0ocFNyYy0+VFBBWygweDYxOSsxNzAzLTB4Y2JmKV0pKTt9ZWxzZXtuTGVuZ3RoPXN0cmxlbihwU3JjLT5UUEEpO31pZihwU3JjLT4KLVRQX1VESEk9PSgweGQyMisxOTEtMHhkZTEpKXtpZihwU3JjLT5UUF9TUlI9PSgweGFiMis5NjItMHhlNzQpKXtidWZbCi0oMHhjOTUrNjk1LTB4ZjRjKV09KDB4NjM1KzM1MzctMHgxM2Y1KTt9aWYocFNyYy0+VFBfU1JSPT0oMHgzNTArNDMxLTB4NGZlKSl7YnVmWwotKDB4MWFmKzMxMzAtMHhkZTkpXT0oMHgxZGErMTg2My0weDhmMCk7fX1pZihwU3JjLT5UUF9VREhJPT0oMHg5NjMrNDU0OS0weDFiMjcpKXsKLWlmKHBTcmMtPlRQX1NSUj09KDB4ZTI0KzI0MDQtMHgxNzg4KSl7YnVmWygweDQxMis3MzE3LTB4MjBhNyldPQotKDB4MTczNCszMTY3LTB4MjM0Mik7fWlmKHBTcmMtPlRQX1NSUj09KDB4OTUzKzQwOTEtMHgxOTRkKSl7YnVmWwotKDB4ODI2KzUyNzctMHgxY2MzKV09KDB4MTA2ZisxMjcxLTB4MTRmNSk7fX1idWZbKDB4YzRjKzU2NjQtMHgyMjZiKV09Ci0oMHg3MGQrMTA1Ni0weGIyZCk7YnVmWygweDczNis0NTQxLTB4MThmMSldPShjaGFyKW5MZW5ndGg7aWYocFNyYy0+VFBBWwotKDB4MWJhYisxODE5LTB4MjJjNildPT0oKGNoYXIpKDB4MTU5YyszNzYyLTB4MjQyMykpKXtidWZbKDB4MTM4KzEwNzgtMHg1NmIpXT0KLSgweDdlNCsyMjk1LTB4MTA0YSk7bkRzdExlbmd0aCs9Qnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFtuRHN0TGVuZ3RoXSwKLSgweGY0OSsyMDczLTB4MTc1ZSkpO25Ec3RMZW5ndGgrPUludmVydE51bWJlcnMoJihwU3JjLT5UUEFbKDB4MTdlMysxNjI3LTB4MWUzZCldCi0pLCZwRHN0W25Ec3RMZW5ndGhdLG5MZW5ndGgpO31lbHNlIGlmKCEoc3RybmNtcChwU3JjLT5UUEEsIlx4MzBceDMwXHgzOFx4MzYiLAotKDB4ZTU4KzM0NTMtMHgxYmQxKSkpKXtidWZbKDB4MTk0NSsxMzcyLTB4MWU5ZildPShjaGFyKW5MZW5ndGgtCi0oMHhmMTUrMzAzNy0weDFhZjApO2J1ZlsoMHgxODhiKzMwMzctMHgyNDY1KV09KDB4MTVhOSsyNzk4LTB4MjAwNik7bkRzdExlbmd0aCs9Ci1CeXRlczJTdHJpbmcoYnVmLCZwRHN0W25Ec3RMZW5ndGhdLCgweDJiNysyNDQyLTB4YzNkKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycwotKCYocFNyYy0+VFBBWygweDIxMTcrNTA5LTB4MjMxMildKSwmcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoLSgweDVjOSs2NjY0LTB4MWZjZikKLSk7fWVsc2V7YnVmWygweGEwYys3MTEtMHhjZDApXT0oMHgxMTE0KzM2OTgtMHgxZjA1KTtuRHN0TGVuZ3RoKz1CeXRlczJTdHJpbmcoYnVmCi0sJnBEc3RbbkRzdExlbmd0aF0sKDB4NGNjKzMxNDItMHgxMTBlKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycyhwU3JjLT5UUEEsJgotcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9Ci0jaWYgKDB4M2U5KzQzNTgtMHgxNGVlKQoraWYocFNyYy0+VFBBWygweGZhKzcxNC0weDNjNCldPT0oKGNoYXIpKDB4MjI3NCs1OTUtMHgyNDljKSkpe25MZW5ndGg9c3RybGVuKCYoCitwU3JjLT5UUEFbKDB4MWUxZCszOTUtMHgxZmE3KV0pKTt9ZWxzZXtuTGVuZ3RoPXN0cmxlbihwU3JjLT5UUEEpO31pZihwU3JjLT4KK1RQX1VESEk9PSgweDEwYmYrMTI4Ni0weDE1YzUpKXtpZihwU3JjLT5UUF9TUlI9PSgweDEyMCszNTM0LTB4ZWVlKSl7YnVmWworKDB4ODkxKzQ0MzktMHgxOWU4KV09KDB4Y2ZkKzQ4NzctMHgxZmY5KTt9aWYocFNyYy0+VFBfU1JSPT0oMHgxMmQwKzMyNDgtMHgxZjdmKSkKK3tidWZbKDB4ZDczKzM3NjYtMHgxYzI5KV09KDB4NjIrNzQ2MC0weDFkNTUpO319aWYocFNyYy0+VFBfVURIST09CisoMHhkYWQrMTc4Ny0weDE0YTcpKXtpZihwU3JjLT5UUF9TUlI9PSgweDE1NWMrMzYyOS0weDIzODkpKXtidWZbCisoMHg5NjQrNjM1OC0weDIyM2EpXT0oMHgzMjMrMjI4OC0weGJjMik7fWlmKHBTcmMtPlRQX1NSUj09KDB4M2M5KzEyOTItMHg4ZDQpKXsKK2J1ZlsoMHgxNDg5KzMxMTctMHgyMGI2KV09KDB4MmRkKzMyMDktMHhlZjUpO319YnVmWygweDJmYisxMjM4LTB4N2QwKV09CisoMHg4ZDQrMjQ3MS0weDEyN2IpO2J1ZlsoMHhhM2QrMTUzMy0weDEwMzgpXT0oY2hhciluTGVuZ3RoO2lmKHBTcmMtPlRQQVsKKygweDUxZiszNTgyLTB4MTMxZCldPT0oKGNoYXIpKDB4MTQ4Nis0MjMxLTB4MjRlMikpKXtidWZbKDB4ZjNmKzI1NjctMHgxOTQzKV09CisoMHhhMjArNjc3OS0weDI0MGEpO25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbbkRzdExlbmd0aF0sCisoMHhiYmQrMjYzLTB4Y2MwKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycygmKHBTcmMtPlRQQVsoMHhhM2IrNjAzNi0weDIxY2UpXSksJgorcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9ZWxzZSBpZighKHN0cm5jbXAocFNyYy0+VFBBLCJceDMwXHgzMFx4MzhceDM2IiwKKygweDRjNSs4NjM3LTB4MjY3ZSkpKSl7YnVmWygweDJjOSs1MDQ3LTB4MTY3ZSldPShjaGFyKW5MZW5ndGgtCisoMHgxNjQ4KzI4Ny0weDE3NjUpO2J1ZlsoMHgxMDQ4KzQ5NzEtMHgyM2IwKV09KDB4NTMxKzUwOTQtMHgxODg2KTtuRHN0TGVuZ3RoKz0KK0J5dGVzMlN0cmluZyhidWYsJnBEc3RbbkRzdExlbmd0aF0sKDB4NDM5KzQ5NTEtMHgxNzhjKSk7bkRzdExlbmd0aCs9CitJbnZlcnROdW1iZXJzKCYocFNyYy0+VFBBWygweDQxNysyOTc4LTB4ZmI3KV0pLCZwRHN0W25Ec3RMZW5ndGhdLG5MZW5ndGgtCisoMHgyYWIrNDkwNS0weDE1ZDIpKTt9ZWxzZXtidWZbKDB4MWJiYSs4ODYtMHgxZjJkKV09KDB4ZThkKzIwMzktMHgxNjAzKTsKK25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbbkRzdExlbmd0aF0sKDB4YmFjKzU0MDgtMHgyMGM4KSk7bkRzdExlbmd0aCs9CitJbnZlcnROdW1iZXJzKHBTcmMtPlRQQSwmcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9CisjaWYgKDB4MTI2NCs0NzE4LTB4MjRkMSkKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3MFx4NjRceDczXHg3NFx4MzRceDNhXHgyNVx4NzMiICJcbiIsCiBwRHN0KTsKICNlbmRpZg0KLW5MZW5ndGg9KGludClwU3JjLT5UUF9VRExlbmd0aDtidWZbKDB4MTQ2YSs0MzMtMHgxNjFiKV09cFNyYy0+VFBfUElEO2J1ZlsKLSgweDI2ODMrNjAtMHgyNmJlKV09cFNyYy0+VFBfRENTO2J1ZlsoMHhmMGIrNDI2MC0weDFmYWQpXT1wU3JjLT5UUF9WUDtpZihwU3JjLT4KK25MZW5ndGg9KGludClwU3JjLT5UUF9VRExlbmd0aDtidWZbKDB4NzJiKzU2OC0weDk2MyldPXBTcmMtPlRQX1BJRDtidWZbCisoMHhmYzQrNTA1My0weDIzODApXT1wU3JjLT5UUF9EQ1M7YnVmWygweGRkNys1MzI0LTB4MjJhMSldPXBTcmMtPlRQX1ZQO2lmKHBTcmMtPgogVFBfRENTPT1DT0RFX0dTTTcpe25MZW5ndGg9Y29kZV9pc19nc203KHBTcmMsYnVmLG5MZW5ndGgpO31lbHNlIGlmKHBTcmMtPlRQX0RDUwogPT1DT0RFX1VDUzIpe25MZW5ndGg9Y29kZV9pc191Y3MyKHBTcmMsYnVmLG5MZW5ndGgpO31lbHNle25MZW5ndGg9c3RybGVuKHBTcmMtPgotVFBfVUQpO2lmKHBTcmMtPlRQX1VESEk9PSgweDJmNysxNzMxLTB4OWI5KSl7YnVmWygweDFiY2ErMjg0OC0weDI2ZTcpXT0odW5zaWduZWQKLSBjaGFyKW5MZW5ndGg7YnVmWygweDVmYSs3NzQ2LTB4MjQzOCldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWwotKDB4MTIyMys0Mzc0LTB4MjMzOSldO2J1ZlsoMHhhMWIrNTc3NC0weDIwYTQpXT0oMHgxNWYrNDc2My0weDEzZmEpO2J1ZlsKLSgweDRhZCsxNDUzLTB4YTU0KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4MTIzYys0NjUwLTB4MjQ2NCldO2J1ZlsKLSgweDIyY2MrMzkzLTB4MjQ0ZSldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDE2NzErMTA5My0weDFhYjMpXTtidWZbCi0oMHg1ZWIrMTM3OS0weGI0NildPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDM5YSs5NzYtMHg3NjYpXTtidWZbCi0oMHg3MTkrMzE4Ny0weDEzODMpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHg1ZTErNzI0Ny0weDIyMmIpXTtpZihuTGVuZ3RoLQotKDB4NGI0KzQxOTItMHgxNTBlKTw9KDB4YzE2KzU0NDUtMHgyMTViKXx8bkxlbmd0aC0oMHhmYzArMjIwNy0weDE4NTkpPj1zaXplb2YoCi1idWYpLSgweDFhMzIrMTUwMS0weDIwMDUpKXJldHVybi0oMHgxODg4KzM2NS0weDE5ZjQpO2J1ZlsoMHg2NzErNTI3MS0weDFiMDUpXT0oCi11bnNpZ25lZCBjaGFyKShFbmNvZGU4Yml0KCYocFNyYy0+VFBfVURbKDB4ZGQ4KzM5MDktMHgxZDE3KV0pLCZidWZbCi0oMHhhMGYrMjc5OC0weDE0ZjMpXSwodW5zaWduZWQgc2hvcnQpKG5MZW5ndGgtKDB4MTcwMCs0MDgzLTB4MjZlZCkpKSsKLSgweDE1ZTQrMzM4Ni0weDIzMTgpKTtuTGVuZ3RoPWJ1ZlsoMHg4NjIrMTk5LTB4OTI2KV0rKDB4MTI2OSsyMjEyLTB4MWIwOSk7fWVsc2V7Ci1pZihuTGVuZ3RoPD0oMHhjYzYrMjQ4MC0weDE2NzYpfHxuTGVuZ3RoPj1zaXplb2YoYnVmKS0oMHgyOGMrMjc3MC0weGQ1YSkpcmV0dXJuLQotKDB4MThhMisyMDQwLTB4MjA5OSk7YnVmWygweDY2NSs1NzkyLTB4MWQwMildPUVuY29kZThiaXQocFNyYy0+VFBfVUQsJmJ1ZlsKLSgweDZmZiszNDA5LTB4MTQ0YyldLG5MZW5ndGgpO25MZW5ndGg9YnVmWygweDE5Y2IrMjk1Ni0weDI1NTQpXSsKLSgweGM5YisxOTgtMHhkNWQpO319Y2hlY2tfdWRsPW5MZW5ndGgtKDB4OTMxKzY4NTgtMHgyM2Y3KTtuRHN0TGVuZ3RoKz0KK1RQX1VEKTtpZihwU3JjLT5UUF9VREhJPT0oMHhkNmErMjY2NS0weDE3ZDIpKXtidWZbKDB4ODUrNzc0Mi0weDFlYzApXT0odW5zaWduZWQgCitjaGFyKW5MZW5ndGg7YnVmWygweDQ1OSs1MDYzLTB4MTgxYyldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWworKDB4YWI3KzU4MDEtMHgyMTYwKV07YnVmWygweGM2YSs2NzI1LTB4MjZhYSldPSgweDUrNjM3MS0weDE4ZTgpO2J1ZlsKKygweDE1YzQrMTIwMC0weDFhNmUpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxOWViKzE2NTktMHgyMDY0KV07YnVmWworKDB4MzQ1Kzg5NDgtMHgyNjMyKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4MTZhMis1NzQtMHgxOGRkKV07YnVmWworKDB4MmNiKzM2MC0weDQyYildPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweGY4OSsxMDQ0LTB4MTM5OSldO2J1ZlsKKygweDFiNys5NTM1LTB4MjZlZCldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDE0YmYrMTMyNy0weDE5ZTkpXTtpZihuTGVuZ3RoCistKDB4ZDYwKzEwNTctMHgxMTdiKTw9KDB4OTE3KzY3NDYtMHgyMzcxKXx8bkxlbmd0aC0oMHhjZjMrMzM0OC0weDFhMDEpPj1zaXplb2YoCitidWYpLSgweDFlN2YrMTI5My0weDIzODIpKXJldHVybi0oMHgxYmYrNTY1OS0weDE3ZDkpO2J1ZlsoMHgxMTZhKzE3MTEtMHgxODE2KV09KAordW5zaWduZWQgY2hhcikoRW5jb2RlOGJpdCgmKHBTcmMtPlRQX1VEWygweDRhYis2NjY1LTB4MWVhZSldKSwmYnVmWworKDB4YzFjKzM0MzgtMHgxOTgwKV0sKHVuc2lnbmVkIHNob3J0KShuTGVuZ3RoLSgweDEyMGMrMzQ1Mi0weDFmODIpKSkrCisoMHhiNWMrNDAzOS0weDFiMWQpKTtuTGVuZ3RoPWJ1ZlsoMHhlYjArNjA4Ni0weDI2NzMpXSsoMHhiMSs2MTQ3LTB4MThiMCk7fWVsc2V7CitpZihuTGVuZ3RoPD0oMHhmZis2MTQzLTB4MThmZSl8fG5MZW5ndGg+PXNpemVvZihidWYpLSgweDVjMysyOTI4LTB4MTEyZikpcmV0dXJuLQorKDB4ODRiKzE3MzktMHhmMTUpO2J1ZlsoMHgyMDZmKzQyLTB4MjA5NildPUVuY29kZThiaXQocFNyYy0+VFBfVUQsJmJ1ZlsKKygweDE3NTcrMzgxMy0weDI2MzgpXSxuTGVuZ3RoKTtuTGVuZ3RoPWJ1ZlsoMHg0NzYrMzUzMS0weDEyM2UpXSsKKygweGVmZCs0MjcyLTB4MWZhOSk7fX1jaGVja191ZGw9bkxlbmd0aC0oMHgxZTUrNjE5MC0weDFhMGYpO25Ec3RMZW5ndGgrPQogQnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTtzY19jZmdfc2V0KE5WX0NIRUNLX1VETCwiIik7aWYoCi1jaGVja191ZGw+KDB4YTFmKzcxMjEtMHgyNTY0KSl7c2NfY2ZnX3NldChOVl9DSEVDS19VREwsIlx4NjVceDcyXHg3Mlx4NmZceDcyIik7fQotI2lmICgweDEwNzIrMjIwNC0weDE5MGQpCitjaGVja191ZGw+KDB4MWIwOCsxNTc2LTB4MjBhNCkpe3NjX2NmZ19zZXQoTlZfQ0hFQ0tfVURMLCJceDY1XHg3Mlx4NzJceDZmXHg3MiIpOworfQorI2lmICgweDI2NiszNzQ0LTB4MTEwNSkKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHgyMFx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4NTBceDY0XHg3NVx4NWZceDUzXHg3NVx4NjJceDZkXHg2OVx4NzRceDIwXHg2NVx4NmVceDY0XHgyMFx4NmRceDYxXHg2Ylx4NjVceDIwXHg3MFx4NjRceDc1XHgyMFx4NjRceDYxXHg3NFx4NjEiICJcbiIKICk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDZjXHg2NVx4NmVceDNhXHgyNVx4NjRceDJjXHgyMFx4NzRceDcwXHg3NVx4NjRceDNhXHgyNVx4NzMiICJcbiIKICxuRHN0TGVuZ3RoLHBTcmMtPlRQX1VEKTsKICNlbmRpZg0KLSNpZiAoMHhiMWYrNTg4MC0weDIyMTYpCisjaWYgKDB4ZWMrMTI3NC0weDVlNSkKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3MFx4NjRceDczXHg3NFx4MzVceDNhXHgyNVx4NzMiICJcbiIsCiBwRHN0KTsKICNlbmRpZg0KIHJldHVybiBuRHN0TGVuZ3RoO31pbnQgRGVjb2RlN2JpdChjb25zdCB1bnNpZ25lZCBjaGFyKnBTcmMsY2hhcipwRHN0LGludCAKIG5TcmNMZW5ndGgpe2ludCBuU3JjO2ludCBuRHN0O2ludCBuQnl0ZTt1bnNpZ25lZCBjaGFyIG5MZWZ0O2lmKHBTcmM9PU5VTEx8fHBEc3QKLT09TlVMTHx8blNyY0xlbmd0aDwoMHhiMTArMTQ5MS0weDEwZTMpKXtyZXR1cm4tKDB4ZmM2KzMzMTQtMHgxY2I3KTt9blNyYz0KLSgweDIwODgrODk3LTB4MjQwOSk7bkRzdD0oMHg5YjgrMTkxLTB4YTc3KTtuQnl0ZT0oMHhiNGQrMzk0Ny0weDFhYjgpO25MZWZ0PQotKDB4YTcwKzY5MDItMHgyNTY2KTt3aGlsZShuU3JjPG5TcmNMZW5ndGgpeypwRHN0PSgoKnBTcmM8PG5CeXRlKXxuTGVmdCkmCi0oMHgxZjAwKzIxMjQtMHgyNmNkKTtuTGVmdD0qcFNyYz4+KCgweGZjZiszODIwLTB4MWViNCktbkJ5dGUpO3BEc3QrKztuRHN0Kys7Ci1uQnl0ZSsrO2lmKG5CeXRlPT0oMHgxNmI2KzE0OTEtMHgxYzgyKSl7KnBEc3Q9bkxlZnQ7cERzdCsrO25Ec3QrKztuQnl0ZT0KLSgweDIxNjgrNzkxLTB4MjQ3Zik7bkxlZnQ9KDB4MTNiZiszOTkxLTB4MjM1Nik7fXBTcmMrKztuU3JjKys7fSpwRHN0PSdcMCc7cmV0dXJuCi0gbkRzdDt9aW50IERlY29kZVB1c2hQZHUoY29uc3QgY2hhcipwU3JjUGR1LFNNU19QQVJBTSpwRHN0KXtpbnQgbkRzdExlbmd0aD0KLSgweGY4Yys1NDAwLTB4MjRhNCk7dW5zaWduZWQgY2hhciB0bXA9KDB4MTcrODUyMS0weDIxNjApO2ludCB1ZF9sZW5ndGg9Ci0oMHgxMTIyKzIxMjktMHgxOTczKTt1bnNpZ25lZCBjaGFyIGJ1ZlsoMHgxMTQ2KzIxODgtMHgxOGQyKV09ewotKDB4MTA5MCsyNjQwLTB4MWFlMCl9O2NoYXIgdGVtcF9udW1bKDB4YWU3KzI5NjEtMHgxNjE0KV09eygweDZiMysyNTk2LTB4MTBkNyl9OwotdW5zaWduZWQgY2hhciBmaXJzdF9vY3RldD0oMHgzN2YrNDYxMi0weDE1ODMpO3Vuc2lnbmVkIGNoYXIgdWRobD0KLSgweDQ3Zis4MTYzLTB4MjQ2Mik7dW5zaWduZWQgaW50IGhhbGZ0bXA9KDB4Zjk2KzMxMzQtMHgxYmQ0KTtjaGFyIHRwX3JhWwotKDB4MTA2OCsyODAzLTB4MWI1OCldPXsoMHg4YzErMzg4MS0weDE3ZWEpfTtpbnQgdG1wbGVuPSgweDEwNGErMTAxNy0weDE0NDMpOwotdW5zaWduZWQgY2hhciBJRUlETDtpbnQgcHVzaFR5cGU9KDB4NzdhKzQzOTUtMHgxOGE1KTtjb25zdCBjaGFyKnBTcmM9cFNyY1BkdTtpZigKLXBTcmNQZHU9PU5VTEx8fHBEc3Q9PU5VTEwpe3ByaW50ZigKKz09TlVMTHx8blNyY0xlbmd0aDwoMHgxMGQ2KzUzNS0weDEyZWQpKXtyZXR1cm4tKDB4NjZhKzYxNzUtMHgxZTg4KTt9blNyYz0KKygweDE4Y2QrMTcyOC0weDFmOGQpO25Ec3Q9KDB4Yzk1KzU0MzEtMHgyMWNjKTtuQnl0ZT0oMHgxN2Q3KzI0ODMtMHgyMThhKTtuTGVmdD0KKygweDMyKzkyNy0weDNkMSk7d2hpbGUoblNyYzxuU3JjTGVuZ3RoKXsqcERzdD0oKCpwU3JjPDxuQnl0ZSl8bkxlZnQpJgorKDB4ZWQrNzM4Ni0weDFkNDgpO25MZWZ0PSpwU3JjPj4oKDB4N2IrODEwNi0weDIwMWUpLW5CeXRlKTtwRHN0Kys7bkRzdCsrO25CeXRlKysKKztpZihuQnl0ZT09KDB4YTY4KzI0NTQtMHgxM2Y3KSl7KnBEc3Q9bkxlZnQ7cERzdCsrO25Ec3QrKztuQnl0ZT0KKygweDFjMCs0MTMtMHgzNWQpO25MZWZ0PSgweDVlOSsyNTE0LTB4ZmJiKTt9cFNyYysrO25TcmMrKzt9KnBEc3Q9J1wwJztyZXR1cm4gCituRHN0O31pbnQgRGVjb2RlUHVzaFBkdShjb25zdCBjaGFyKnBTcmNQZHUsU01TX1BBUkFNKnBEc3Qpe2ludCBuRHN0TGVuZ3RoPQorKDB4MTYxNCsyOTgxLTB4MjFiOSk7dW5zaWduZWQgY2hhciB0bXA9KDB4ZDIxKzExNTktMHgxMWE4KTtpbnQgdWRfbGVuZ3RoPQorKDB4NzE3Kzc4MTgtMHgyNWExKTt1bnNpZ25lZCBjaGFyIGJ1ZlsoMHgxOWIxKzI2OTAtMHgyMzMzKV09eworKDB4MTcwMysyODAwLTB4MjFmMyl9O2NoYXIgdGVtcF9udW1bKDB4NjE4KzU3NTYtMHgxYzMwKV09eygweGQxZCs0ODk0LTB4MjAzYil9OwordW5zaWduZWQgY2hhciBmaXJzdF9vY3RldD0oMHhjOGIrMTIzMC0weDExNTkpO3Vuc2lnbmVkIGNoYXIgdWRobD0KKygweDE2NjgrMjg0LTB4MTc4NCk7dW5zaWduZWQgaW50IGhhbGZ0bXA9KDB4OTlkKzQwOTItMHgxOTk5KTtjaGFyIHRwX3JhWworKDB4MzhiKzU5OTEtMHgxYWVmKV09eygweDZkMys1NzU2LTB4MWQ0Zil9O2ludCB0bXBsZW49KDB4MTE1OCs0NjUwLTB4MjM4Mik7Cit1bnNpZ25lZCBjaGFyIElFSURMO2ludCBwdXNoVHlwZT0oMHgxYmMzKzI3NjEtMHgyNjhjKTtjb25zdCBjaGFyKnBTcmM9cFNyY1BkdTtpZgorKHBTcmNQZHU9PU5VTEx8fHBEc3Q9PU5VTEwpe3ByaW50ZigKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NzBceDYxXHg3Mlx4NjFceDIwXHg2ZVx4NzVceDZjXHg2Y1x4MmVceDIwIiAiXG4iCi0pO3JldHVybi0oMHhkOWIrMzY4OC0weDFjMDIpO31TdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweGQ3OSszNzY2LTB4MWMyZCkpOworKTtyZXR1cm4tKDB4MTE4Mys0MTM0LTB4MjFhOCk7fVN0cmluZzJCeXRlcyhwU3JjLCZ0bXAsKDB4MTdlYSsxOTgyLTB4MWZhNikpOwogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDY1XHg2M1x4NmZceDY0XHg2NVx4NTBceDc1XHg3M1x4NjhceDUwXHg2NFx4NzVceDIwXHg3NFx4NmRceDcwXHgyMFx4M2RceDIwXHgyNVx4NjRceDJlIiAiXG4iCi0sdG1wKTtpZih0bXA9PSgweGNlZiszNjkyLTB4MWI1Yikpe3BTcmMrPSgweGIwMSsxNDQ4LTB4MTBhNyk7fWVsc2V7dG1wPSh0bXAtCi0oMHhiNzYrMzg4LTB4Y2Y5KSkqKDB4NDErODAzNS0weDFmYTIpO3BTcmMrPSgweDFlMjkrMzgxLTB4MWZhMik7aWYodG1wPgotKDB4MTg3YSsyMDkyLTB4MjA4Nikpe1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+U0NBLCgweDE0MzIrMTE3OS0weDE4YWQpKTsKLXRtcD0oMHhmNjQrNzk3LTB4MTI2MSk7fWVsc2V7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5TQ0EsdG1wKTt9cFNyYys9dG1wCi07fVN0cmluZzJCeXRlcyhwU3JjLCZ0bXAsKDB4YjczKzcwMDQtMHgyNmNkKSk7Zmlyc3Rfb2N0ZXQ9dG1wO3BTcmMrPQotKDB4YWQzKzcxMjYtMHgyNmE3KTtTdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweDQzMyszNzkzLTB4MTMwMikpO2hhbGZ0bXA9dG1wO2lmKAotdG1wJigweDc1ZCs3OTctMHhhNzkpKXRtcCs9KDB4MTk5Nys3MzYtMHgxYzc2KTtwU3JjKz0oMHgxYzZjKzE5MjgtMHgyM2YyKTttZW1zZXQKLSh0cF9yYSwoMHgyMTlhKzk4NS0weDI1NzMpLHNpemVvZih0cF9yYSkpO1N0cmluZzJCeXRlcyhwU3JjLHRwX3JhLAotKDB4NzcwKzE2My0weDgxMSkpO3BTcmMrPSgweDhlNCs1NjcyLTB4MWYwYSk7aWYoKHRwX3JhWygweGJhKzQ5NTAtMHgxNDEwKV0mCi0oMHgxMWE4KzE3ODQtMHgxODUwKSk9PSgweDdkOCs1NTgzLTB4MWQ1Nykpe2NoYXIgdGVtcHJhWygweDIxMis3MDE0LTB4MWNmOCldOwotY2hhciBhY0FzY1soMHgxNDhmKzM0OTMtMHgyMWI0KV07aWYoaGFsZnRtcD49KDB4YTVmKzYxOTMtMHgyMjgyKSl7aGFsZnRtcD0odG1wLwotKDB4MTAxOSszMDE2LTB4MWJkZikpLygweDU5Yis2MDQxLTB4MWQyZCkrKHRtcC8oMHgyMmI4KzQwLTB4MjJkZSkpO31lbHNle2hhbGZ0bXAKLT10bXAvKDB4YTExKzMxNDYtMHgxNjU5KTt9bWVtc2V0KHRlbXByYSwoMHgxMjRjKzQ1NDctMHgyNDBmKSxzaXplb2YodGVtcHJhKSk7Ci1tZW1jcHkodGVtcHJhLHBTcmMsdG1wKTttZW1zZXQoYWNBc2MsKDB4MTA4NiszMDgtMHgxMWJhKSxzaXplb2YoYWNBc2MpKTsKLW5Ec3RMZW5ndGg9U3RyaW5nMkJ5dGVzKHRlbXByYSxidWYsaGFsZnRtcCYoMHg3ZmYrNzY1LTB4YWY1KT8oaW50KWhhbGZ0bXAqCi0oMHgxMTZhKzM3MzUtMHgxZmZhKS8oMHg2ODIrNDE3Ny0weDE2Y2YpKygweGZiMiszMDc0LTB4MWJiMik6KGludCloYWxmdG1wKgotKDB4MThjMys5MDUtMHgxYzQ1KS8oMHgzOSs0NjczLTB4MTI3NikpO2hhbGZ0bXA9RGVjb2RlN2JpdChidWYsYWNBc2MsbkRzdExlbmd0aCkKLTttZW1zZXQocERzdC0+VFBBLCgweDQ1KzI1NDItMHhhMzMpLHNpemVvZihwRHN0LT5UUEEpKTtpZihoYWxmdG1wPgotKDB4MTQ2NysxODY3LTB4MWI5Mikpe21lbWNweShwRHN0LT5UUEEsYWNBc2MsKDB4YzA4KzI5MTgtMHgxNzRlKSk7dG1wPQotKDB4N2ZjKzIyOC0weDhjMCk7fWVsc2V7bWVtY3B5KHBEc3QtPlRQQSxhY0FzYyxoYWxmdG1wKTt9fWVsc2V7aWYodG1wPgotKDB4MWI4NCsyNjgzLTB4MjVkZikpe1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+VFBBLCgweGQ3NCs1NzM1LTB4MjNiYikpO30KLWVsc2V7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5UUEEsdG1wKTt9aWYoKHRwX3JhWygweGIzOCsyNzQ0LTB4MTVmMCldJgotKDB4MTg5NSs3OTctMHgxYjIxKSk9PSgweDEzMSsxMTQzLTB4NTE3KSl7bWVtc2V0KHRlbXBfbnVtLCgweDg3ZCsyOTU5LTB4MTQwYyksCi1zaXplb2YodGVtcF9udW0pKTtpZihwRHN0LT5UUEFbKDB4M2ExKzc1OTgtMHgyMTRmKV0hPSgoY2hhcikoMHhiYjQrMzU0Ny0weDE5NjQpKQotKXtzbnByaW50Zih0ZW1wX251bSxzaXplb2YodGVtcF9udW0pLCJceDI1XHg3M1x4MjVceDczIiwiXHgyYiIscERzdC0+VFBBKTtpZigKLXN0cmxlbih0ZW1wX251bSk+KDB4MTQwYys0MDA4LTB4MjM5NCkpe3NucHJpbnRmKHBEc3QtPlRQQSxzaXplb2YocERzdC0+VFBBKSwKKyx0bXApO2lmKHRtcD09KDB4ODEzKzE0OTEtMHhkZTYpKXtwU3JjKz0oMHg4YmMrNTgzNC0weDFmODQpO31lbHNle3RtcD0odG1wLQorKDB4Y2MyKzUxOTctMHgyMTBlKSkqKDB4MTI3Mis5NzUtMHgxNjNmKTtwU3JjKz0oMHgxMDczKzM0MTUtMHgxZGM2KTtpZih0bXA+CisoMHgxNDhmKzM0NTAtMHgyMWU5KSl7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5TQ0EsKDB4MTA4NCs1NjE3LTB4MjY1NSkpOwordG1wPSgweDE3ZmErMTAzMy0weDFiZTMpO31lbHNle1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+U0NBLHRtcCk7fXBTcmMrPQordG1wO31TdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweDE1MzYrNzM4LTB4MTgxNikpO2ZpcnN0X29jdGV0PXRtcDtwU3JjKz0KKygweDE2YzYrODcwLTB4MWEyYSk7U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHhjYSs3MDU0LTB4MWM1NikpO2hhbGZ0bXA9dG1wO2lmKAordG1wJigweDk5Yis1NzU2LTB4MjAxNikpdG1wKz0oMHg0ZDkrMzM0NS0weDExZTkpO3BTcmMrPSgweDExYys5NDM3LTB4MjVmNyk7CittZW1zZXQodHBfcmEsKDB4NzErNzYwNC0weDFlMjUpLHNpemVvZih0cF9yYSkpO1N0cmluZzJCeXRlcyhwU3JjLHRwX3JhLAorKDB4MjczKzc3NTktMHgyMGMwKSk7cFNyYys9KDB4MWI5ZisyMzk3LTB4MjRmYSk7aWYoKHRwX3JhWygweDFlOTErODg2LTB4MjIwNyldJgorKDB4MTcwZiszMzEwLTB4MjNhZCkpPT0oMHgxN2Y2KzM4MTYtMHgyNjhlKSl7Y2hhciB0ZW1wcmFbKDB4NTU2KzQzMS0weDY4NSldO2NoYXIKKyBhY0FzY1soMHhlNjYrMjUzMy0weDE3Y2IpXTtpZihoYWxmdG1wPj0oMHgyNTgrMzkzNy0weDExYWIpKXtoYWxmdG1wPSh0bXAvCisoMHg2NWIrMTc0NC0weGQyOSkpLygweDQ5ZCszMTI4LTB4MTBjZSkrKHRtcC8oMHg3ZDErNjA5Mi0weDFmOWIpKTt9ZWxzZXtoYWxmdG1wPQordG1wLygweDE4ZTIrMTY4LTB4MTk4OCk7fW1lbXNldCh0ZW1wcmEsKDB4MWU0Yis1MzYtMHgyMDYzKSxzaXplb2YodGVtcHJhKSk7CittZW1jcHkodGVtcHJhLHBTcmMsdG1wKTttZW1zZXQoYWNBc2MsKDB4MjQ3MisxNjItMHgyNTE0KSxzaXplb2YoYWNBc2MpKTsKK25Ec3RMZW5ndGg9U3RyaW5nMkJ5dGVzKHRlbXByYSxidWYsaGFsZnRtcCYoMHhmNzQrMTA3MC0weDEzOWIpPyhpbnQpaGFsZnRtcCoKKygweDRlZis2NTk1LTB4MWVhYikvKDB4YThiKzE5MzEtMHgxMjEyKSsoMHgyMzNkKzc2OC0weDI2M2IpOihpbnQpaGFsZnRtcCoKKygweGQ3Zis0MTItMHhmMTQpLygweDE5Mys3MzczLTB4MWU1YykpO2hhbGZ0bXA9RGVjb2RlN2JpdChidWYsYWNBc2MsbkRzdExlbmd0aCk7CittZW1zZXQocERzdC0+VFBBLCgweGNkOSsxNjAzLTB4MTMxYyksc2l6ZW9mKHBEc3QtPlRQQSkpO2lmKGhhbGZ0bXA+CisoMHgzYzYrMTYyLTB4NDQ4KSl7bWVtY3B5KHBEc3QtPlRQQSxhY0FzYywoMHgxODk5KzI2Mi0weDE5N2YpKTt0bXA9CisoMHgzM2MrNzMzOS0weDFmYzcpO31lbHNle21lbWNweShwRHN0LT5UUEEsYWNBc2MsaGFsZnRtcCk7fX1lbHNle2lmKHRtcD4KKygweDE3MzcrMzA1MS0weDIzMDIpKXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlRQQSwoMHgxZDZjKzQ1NS0weDFmMTMpKTt9CitlbHNle1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+VFBBLHRtcCk7fWlmKCh0cF9yYVsoMHgxNjk4KzMyMDQtMHgyMzFjKV0mCisoMHg1MzMrNjkzOS0weDFmYmQpKT09KDB4MTRlNCsyNDQzLTB4MWRkZSkpe21lbXNldCh0ZW1wX251bSwoMHg1NmErNjQ4MS0weDFlYmIpLAorc2l6ZW9mKHRlbXBfbnVtKSk7aWYocERzdC0+VFBBWygweDFlYSsyMDU3LTB4OWYzKV0hPSgoY2hhcikoMHhlMiszODM1LTB4ZmIyKSkpeworc25wcmludGYodGVtcF9udW0sc2l6ZW9mKHRlbXBfbnVtKSwiXHgyNVx4NzNceDI1XHg3MyIsIlx4MmIiLHBEc3QtPlRQQSk7aWYoCitzdHJsZW4odGVtcF9udW0pPigweDM1Nis4OTI5LTB4MjYxNykpe3NucHJpbnRmKHBEc3QtPlRQQSxzaXplb2YocERzdC0+VFBBKSwKICJceDI1XHgzM1x4MzJceDczIix0ZW1wX251bSk7fWVsc2V7c25wcmludGYocERzdC0+VFBBLHNpemVvZihwRHN0LT5UUEEpLAogIlx4MjVceDczIix0ZW1wX251bSk7fX19fXBTcmMrPXRtcDtTdHJpbmcyQnl0ZXMocFNyYywodW5zaWduZWQgY2hhciopJnBEc3QtPgotVFBfUElELCgweGRjOSsyODg3LTB4MTkwZSkpO3BTcmMrPSgweGFkNCsyMDM1LTB4MTJjNSk7U3RyaW5nMkJ5dGVzKHBTcmMsKAotdW5zaWduZWQgY2hhciopJnBEc3QtPlRQX0RDUywoMHgxZDErMjI1NS0weGE5ZSkpO3BTcmMrPSgweGRkOCs0NjcxLTB4MjAxNSk7Ci1TZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlRQX1NDVFMsKDB4MTk5YysyNTE2LTB4MjM2MikpO3BTcmMrPQotKDB4MTcwYSs0MDc5LTB4MjZlYik7U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHgxOTFmKzE4NzEtMHgyMDZjKSk7cFNyYys9Ci0oMHhiZmIrNDI3LTB4ZGE0KTttZW1zZXQocERzdC0+VFBfVUQsKDB4MTU0MCsyNzQ5LTB4MWZmZCksc2l6ZW9mKHBEc3QtPlRQX1VEKSk7CitUUF9QSUQsKDB4ODQ5KzQ2Mi0weGExNSkpO3BTcmMrPSgweDE4YWErMjM5MS0weDIxZmYpO1N0cmluZzJCeXRlcyhwU3JjLCh1bnNpZ25lZAorIGNoYXIqKSZwRHN0LT5UUF9EQ1MsKDB4YWQxKzI5ODUtMHgxNjc4KSk7cFNyYys9KDB4NzBkKzI5MzUtMHgxMjgyKTsKK1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+VFBfU0NUUywoMHgyZjkrMTgzNS0weGExNikpO3BTcmMrPQorKDB4MjcyKzg1ODItMHgyM2VhKTtTdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweDcwNiszMTE2LTB4MTMzMCkpO3BTcmMrPQorKDB4N2QxKzM5ODgtMHgxNzYzKTttZW1zZXQocERzdC0+VFBfVUQsKDB4NGNjKzUwMzQtMHgxODc2KSxzaXplb2YocERzdC0+VFBfVUQpKTsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NjZceDY5XHg3Mlx4NzNceDc0XHg1Zlx4NmZceDYzXHg3NFx4NjVceDc0XHgyMFx4M2RceDIwXHgzMFx4NzhceDI1XHgzMFx4MzJceDc4XHgyZSIgIlxuIgotLGZpcnN0X29jdGV0KTtpZihmaXJzdF9vY3RldCYoMHgxMDQ1KzQ5MDAtMHgyMzI5KSl7Y29uc3QgY2hhcip0ZW1wPXBTcmM7dW5zaWduZWQKLSBjaGFyIHBkdVR5cGU7dW5zaWduZWQgY2hhciB3c3BMZW47dW5zaWduZWQgY2hhciB1ZGhMZW47dW5zaWduZWQgY2hhciBEZXN0UG9ydDE7CissZmlyc3Rfb2N0ZXQpO2lmKGZpcnN0X29jdGV0JigweDk0Nys4NTgtMHhjNjEpKXtjb25zdCBjaGFyKnRlbXA9cFNyYzt1bnNpZ25lZCAKK2NoYXIgcGR1VHlwZTt1bnNpZ25lZCBjaGFyIHdzcExlbjt1bnNpZ25lZCBjaGFyIHVkaExlbjt1bnNpZ25lZCBjaGFyIERlc3RQb3J0MTsKIHVuc2lnbmVkIGNoYXIgRGVzdFBvcnQyO3Vuc2lnbmVkIGNoYXIgUmVmTnVtMTt1bnNpZ25lZCBjaGFyIFJlZk51bTI7cHVzaFR5cGU9Ci1TTVNfTk9fUFVTSDtTdHJpbmcyQnl0ZXModGVtcCwmdWRobCwoMHg0MTcrODQ4Ny0weDI1M2MpKTt0ZW1wKz0KLSgweDdiMSszMDQ2LTB4MTM5NSk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9JRUksKDB4NWI2KzE1ODgtMHhiZTgpKTsKLWF0X3ByaW50KExPR19ERUJVRywKK1NNU19OT19QVVNIO1N0cmluZzJCeXRlcyh0ZW1wLCZ1ZGhsLCgweGE3Mys1NDUwLTB4MWZiYikpO3RlbXArPQorKDB4MTA1NSs1MDAyLTB4MjNkZCk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9JRUksKDB4NjA3KzcxNjMtMHgyMjAwKSkKKzthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDU0XHg1MFx4NWZceDQ5XHg0NVx4NDlceDIwXHgzZFx4MjBceDMwXHg3OFx4MjVceDMwXHgzMlx4NzhceDJlIiAiXG4iCi0scERzdC0+VFBfSUVJKTtpZihwRHN0LT5UUF9JRUk9PSgweDEwYyszOTAtMHgyOGQpKXt0ZW1wKz0oMHgxN2MxKzQ3OC0weDE5OWQpKgotdG1wbGVuKygweGMzMis2NjIxLTB4MjYwZCk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZEZXN0UG9ydDEsCi0oMHgxNmExKzI1MTYtMHgyMDczKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorLHBEc3QtPlRQX0lFSSk7aWYocERzdC0+VFBfSUVJPT0oMHhjMTIrNjE0MS0weDI0MGEpKXt0ZW1wKz0oMHhhNTArMTUwMC0weDEwMmEpKgordG1wbGVuKygweDE0NjIrMTc3NS0weDFiNGYpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmRGVzdFBvcnQxLAorKDB4ZmJjKzIzOS0weDEwYTkpKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDQ0XHg2NVx4NzNceDc0XHg1MFx4NmZceDcyXHg3NFx4MzFceDIwXHgzZFx4MjBceDMwXHg3OFx4MjVceDMwXHgzMlx4NzhceDJlIiAiXG4iCi0sRGVzdFBvcnQxKTt0ZW1wKz0oMHgxZWErMzU1MC0weGZjNikqdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmRGVzdFBvcnQyLAotKDB4MTIzYiszNzMzLTB4MjBjZSkpO2F0X3ByaW50KExPR19ERUJVRywKKyxEZXN0UG9ydDEpO3RlbXArPSgweDE4OTMrMzMxOS0weDI1ODgpKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJgorRGVzdFBvcnQyLCgweDgwNys3NTY2LTB4MjU5MykpO2F0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NDRceDY1XHg3M1x4NzRceDUwXHg2Zlx4NzJceDc0XHgzMlx4MjBceDNkXHgyMFx4MzBceDc4XHgyNVx4MzBceDMyXHg3OFx4MmUiICJcbiIKLSxEZXN0UG9ydDIpO2lmKChEZXN0UG9ydDE9PSgweDQ5Nys1OTc5LTB4MWJlNykpJiYoKERlc3RQb3J0Mj09Ci0oMHgxNTQwKzIyMTItMHgxZDYwKSl8fChEZXN0UG9ydDI9PSgweDRiZCs3NzA1LTB4MjI1MSkpKSl7cHVzaFR5cGU9U01TX1BVU0g7fX1pZgotKFNNU19QVVNIIT1wdXNoVHlwZSl7cmV0dXJuIHB1c2hUeXBlO310ZW1wPXBTcmMrdWRobCooMHgyNjkrNDM3LTB4NDFjKSsKLSgweGYyYSs1MDI4LTB4MjJjYSk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwZHVUeXBlLCgweDI4MysxMjQ1LTB4NzVlKSk7aWYoCi1wZHVUeXBlPT0oMHgzNTkrMjM4MS0weGNhMCkpe3B1c2hUeXBlPVNNU19QVVNIO3RlbXArPSgweDM1Mis3OTgzLTB4MjI3ZCk7dG1wbGVuPQotU3RyaW5nMkJ5dGVzKHRlbXAsJnBkdVR5cGUsKDB4ODBiKzI1NDAtMHgxMWY1KSk7aWYocGR1VHlwZT09KDB4NDY0KzUwNTEtMHgxNzViKSkKLXtwdXNoVHlwZT1TTVNfTk9USUZJQ0FUSU9OO31lbHNle3RlbXArPSgweGU2OSsxNjgzLTB4MTRmOCk7dG1wbGVuPVN0cmluZzJCeXRlcygKLXRlbXAsJnBkdVR5cGUsKDB4YmQzKzIwMTItMHgxM2FkKSk7aWYoKHBkdVR5cGU9PSgweDEzOCs0MjAyLTB4MTBlMCkpfHwocGR1VHlwZT09Ci0oMHgzYjgrOTE5OS0weDI2ZjEpKSl7cHVzaFR5cGU9U01TX0JPT1RTVFJBUDt9fX1pZigocERzdC0+VFBfSUVJPT0KLSgweDdjMSsyMDYwLTB4ZmM5KSl8fChwRHN0LT5UUF9JRUk9PSgweDM4Kzk1MDEtMHgyNTUwKSl8fChwRHN0LT5UUF9JRUk9PQotKDB4ZjRhKzMwNC0weDEwNzIpKSl7dGVtcD1wU3JjKygweDhiZisxNDEyLTB4ZTNmKTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJgotSUVJREwsKDB4ZWNkKzU3NjMtMHgyNTRlKSk7aWYoSUVJREw9PSh1ZGhsLSgweGFkNis0NDAyLTB4MWMwNikpKXt9ZWxzZXt0ZW1wKz0KLSgweDE2ZTMrMzQxNy0weDI0M2EpKigweDE1OTYrMTc4OS0weDFjOGQpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmdWRoTGVuLAotKDB4OGQwKzQzODctMHgxOWYxKSk7aWYodWRoTGVuPT0oMHg2NmErNjE3OC0weDFlODkpKXt0ZW1wKz0oMHg3N2QrMzc3OC0weDE2M2QpKgotdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmUmVmTnVtMSwoMHhjMzMrNDMwMy0weDFkMDApKTtwRHN0LT5UUF9SZWZlck51bT0KLVJlZk51bTE7dGVtcCs9KDB4NzMxKzQzNzYtMHgxODQ3KSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT4KLVRQX0FsbFBpZWNlTnVtLCgweGVlYisxNTE2LTB4MTRkNSkpO3RlbXArPSgweGQ3KzU2NjgtMHgxNmY5KSp0bXBsZW47dG1wbGVuPQotU3RyaW5nMkJ5dGVzKHRlbXAsJnBEc3QtPlRQX0N1cnJlbnRQaWVjZU51bSwoMHhlNzkrMjc5Ny0weDE5NjQpKTt0ZW1wKz0KLSgweGQxOSs1OTQxLTB4MjQ0YykqdG1wbGVuO31lbHNlIGlmKHVkaExlbj09KDB4MTg4KzYyMDEtMHgxOWJkKSl7dGVtcCs9Ci0oMHg1NTUrNzExMC0weDIxMTkpKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJlJlZk51bTEsKDB4MTMxKzI5MjEtMHhjOTgpKQotO3RlbXArPSgweDdhOCs2MDQtMHhhMDIpKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJlJlZk51bTIsCi0oMHg4NzQrMzgxNi0weDE3NWEpKTtpbnQgUmVmZXJOdW09UmVmTnVtMitSZWZOdW0xKigweDIyNTgrMTMzOC0weDI2OTIpO3BEc3QtPgotVFBfUmVmZXJOdW09UmVmZXJOdW07dGVtcCs9KDB4Yzg5KzE5ODQtMHgxNDQ3KSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCYKLXBEc3QtPlRQX0FsbFBpZWNlTnVtLCgweDliYSs0NTUyLTB4MWI4MCkpO3RlbXArPSgweDJmZCs0MjYyLTB4MTNhMSkqdG1wbGVuOwotdG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0sKDB4MTNlYyszNTc2LTB4MjFlMikpO3RlbXArPQotKDB4MTAwZCs3MjctMHgxMmUyKSp0bXBsZW47fX19YXRfcHJpbnQoTE9HX0RFQlVHLAorLERlc3RQb3J0Mik7aWYoKERlc3RQb3J0MT09KDB4MTU4KzgyNDItMHgyMTdmKSkmJigoRGVzdFBvcnQyPT0KKygweDFhNjgrMTcxMi0weDIwOTQpKXx8KERlc3RQb3J0Mj09KDB4MThlOCsxMjI1LTB4MWQyYykpKSl7cHVzaFR5cGU9U01TX1BVU0g7fX0KK2lmKFNNU19QVVNIIT1wdXNoVHlwZSl7cmV0dXJuIHB1c2hUeXBlO310ZW1wPXBTcmMrdWRobCooMHhhMmErNTQyNy0weDFmNWIpKworKDB4NWIrMTkxMC0weDdjZCk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwZHVUeXBlLCgweDExOTUrMzE3Ni0weDFkZmIpKTtpZigKK3BkdVR5cGU9PSgweDNkMSszNzQyLTB4MTI2OSkpe3B1c2hUeXBlPVNNU19QVVNIO3RlbXArPSgweGZlMSs1ODQxLTB4MjZhZSk7dG1wbGVuCis9U3RyaW5nMkJ5dGVzKHRlbXAsJnBkdVR5cGUsKDB4YzA2KzQ5OTItMHgxZjg0KSk7aWYocGR1VHlwZT09KDB4YTY1KzkzMy0weGQ0NikpeworcHVzaFR5cGU9U01TX05PVElGSUNBVElPTjt9ZWxzZXt0ZW1wKz0oMHgyMjY2Kzc0OC0weDI1NGUpO3RtcGxlbj1TdHJpbmcyQnl0ZXMoCit0ZW1wLCZwZHVUeXBlLCgweDFlMjkrMjAyNS0weDI2MTApKTtpZigocGR1VHlwZT09KDB4MWIyKzk5MS0weDRjZikpfHwocGR1VHlwZT09CisoMHg1MmYrNzU3LTB4NzZlKSkpe3B1c2hUeXBlPVNNU19CT09UU1RSQVA7fX19aWYoKHBEc3QtPlRQX0lFST09CisoMHgzOGQrNDg3Ni0weDE2OTUpKXx8KHBEc3QtPlRQX0lFST09KDB4MjlkKzQwMTMtMHgxMjQ1KSl8fChwRHN0LT5UUF9JRUk9PQorKDB4MTU1MyszNzQ1LTB4MjNlYykpKXt0ZW1wPXBTcmMrKDB4NGQrNzk4Ni0weDFmN2IpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmCitJRUlETCwoMHgxZTEzKzU5MC0weDIwNWYpKTtpZihJRUlETD09KHVkaGwtKDB4NGY5KzYzMTAtMHgxZDlkKSkpe31lbHNle3RlbXArPQorKDB4MTJmNCsyMzA1LTB4MWJmMykqKDB4MTJiNCsyMjY0LTB4MWI4Nik7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZ1ZGhMZW4sCisoMHgxMDkzKzIzMzUtMHgxOWIwKSk7aWYodWRoTGVuPT0oMHgxMmQ3KzI2ODItMHgxZDRlKSl7dGVtcCs9KDB4MmM5Kzg3NzgtMHgyNTExKQorKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJlJlZk51bTEsKDB4ZDcxKzEzOTMtMHgxMmUwKSk7cERzdC0+VFBfUmVmZXJOdW0KKz1SZWZOdW0xO3RlbXArPSgweDE4MWMrOTQ5LTB4MWJjZikqdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmcERzdC0+CitUUF9BbGxQaWVjZU51bSwoMHhkZDQrNTk1Ny0weDI1MTcpKTt0ZW1wKz0oMHg0ZjErNDgyMi0weDE3YzUpKnRtcGxlbjt0bXBsZW49CitTdHJpbmcyQnl0ZXModGVtcCwmcERzdC0+VFBfQ3VycmVudFBpZWNlTnVtLCgweGM2Nys0MTIwLTB4MWM3ZCkpO3RlbXArPQorKDB4MWUzZisxMTYwLTB4MjJjNSkqdG1wbGVuO31lbHNlIGlmKHVkaExlbj09KDB4ODMrOTM5LTB4NDJhKSl7dGVtcCs9CisoMHgxMjAzKzM0NzAtMHgxZjhmKSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZSZWZOdW0xLAorKDB4MjI5YSs5NTUtMHgyNjUzKSk7dGVtcCs9KDB4MTZjNysxMTczLTB4MWI1YSkqdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwKKyZSZWZOdW0yLCgweDE0MWMrMjM1MS0weDFkNDkpKTtpbnQgUmVmZXJOdW09UmVmTnVtMitSZWZOdW0xKigweDE5ZGQrMTAzMS0weDFjZTQpCis7cERzdC0+VFBfUmVmZXJOdW09UmVmZXJOdW07dGVtcCs9KDB4MTQzNyszOTYtMHgxNWMxKSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcworKHRlbXAsJnBEc3QtPlRQX0FsbFBpZWNlTnVtLCgweDFiNzArNjkwLTB4MWUyMCkpO3RlbXArPSgweDE2YyszODgyLTB4MTA5NCkqCit0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0sKDB4MTVmMCs1MzQtMHgxODA0KSk7Cit0ZW1wKz0oMHhhZGErNjM5Mi0weDIzZDApKnRtcGxlbjt9fX1hdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDUyXHg2NVx4NjZceDY1XHg3Mlx4NGVceDc1XHg2ZFx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4NDFceDZjXHg2Y1x4NGVceDc1XHg2ZFx4MjBceDNkXHgyNVx4NjRceDJjXHg0M1x4NzVceDcyXHg0ZVx4NzVceDZkXHgyMFx4M2RceDI1XHg2NFx4MmUiICJcbiIKICxwRHN0LT5UUF9SZWZlck51bSxwRHN0LT5UUF9BbGxQaWVjZU51bSxwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0pO2lmKAotU01TX05PVElGSUNBVElPTj09cHVzaFR5cGUpe3RlbXA9cFNyYyt1ZGhsKigweGYyMisxOTgtMHhmZTYpKygweDhjNys0NTcwLTB4MWE5YikKLTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJndzcExlbiwoMHgyMmE4Kzc5OC0weDI1YzQpKTt0ZW1wPXRlbXArd3NwTGVuKgotKDB4ZWMrMjUwLTB4MWU0KSsoMHgxNTA2KzEwOTUtMHgxOTRiKTt9ZWxzZXt0ZW1wPXBTcmMrdWRobCooMHg0MTQrNTQ1LTB4NjMzKSsKLSgweDExYzQrMjY0MC0weDFjMTIpO31uRHN0TGVuZ3RoPSgoc3RybGVuKHRlbXApPHNpemVvZihwRHN0LT5UUF9VRCkpP3N0cmxlbih0ZW1wCi0pOihzaXplb2YocERzdC0+VFBfVUQpLSgweDEwMSs2NjgyLTB4MWIxYSkpKTttZW1jcHkocERzdC0+VFBfVUQsdGVtcCxuRHN0TGVuZ3RoKQotO2F0X3ByaW50KExPR19ERUJVRywKK1NNU19OT1RJRklDQVRJT049PXB1c2hUeXBlKXt0ZW1wPXBTcmMrdWRobCooMHgxMWU3KzEyNTItMHgxNmM5KSsKKygweGU4ZCsyOTQ5LTB4MWEwYyk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZ3c3BMZW4sKDB4NGY0KzEyMjEtMHg5YjcpKTt0ZW1wPQordGVtcCt3c3BMZW4qKDB4NTcrMTQwMC0weDVjZCkrKDB4MjcyKzQzNC0weDQyMik7fWVsc2V7dGVtcD1wU3JjK3VkaGwqCisoMHgxYjk5KzI2OTQtMHgyNjFkKSsoMHg1Yys4MTAwLTB4MWZmZSk7fW5Ec3RMZW5ndGg9KChzdHJsZW4odGVtcCk8c2l6ZW9mKHBEc3QtPgorVFBfVUQpKT9zdHJsZW4odGVtcCk6KHNpemVvZihwRHN0LT5UUF9VRCktKDB4ZWU3KzE4MzQtMHgxNjEwKSkpO21lbWNweShwRHN0LT4KK1RQX1VELHRlbXAsbkRzdExlbmd0aCk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDY1XHg2M1x4NmZceDY0XHg2NVx4NTBceDc1XHg3M1x4NjhceDUwXHg2NFx4NzVceDIwXHg3MFx4NDRceDczXHg3NFx4MmRceDNlXHg1NFx4NTBceDVmXHg1NVx4NDRceDIwXHgzZFx4MjBceDI1XHg3M1x4MmUiICJcbiIKICxwRHN0LT5UUF9VRCk7fWF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NzBceDc1XHg3M1x4NjhceDU0XHg3OVx4NzBceDY1XHgyMFx4M2RceDIwXHgyNVx4NjRceDJlIiAiXG4iCiAscHVzaFR5cGUpO3JldHVybiBwdXNoVHlwZTt9c3RhdGljIGludCBTZXJpYWxpemVOdW1iZXJzX3Ntcyhjb25zdCBjaGFyKnBTcmMsY2hhcgotKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBuRHN0TGVuZ3RoO2NoYXIgY2g7aW50IGk9KDB4YmVmKzI3NjEtMHgxNmI4KTtpZihwU3JjPT0KLU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4ZTFhKzQwNzAtMHgxZTAwKSl7cmV0dXJuLSgweDM2Mys1MjM1LTB4MTdkNSk7fQotbkRzdExlbmd0aD1uU3JjTGVuZ3RoO2ZvcihpPSgweGFlNSsxODYtMHhiOWYpO2k8blNyY0xlbmd0aDtpKz0KLSgweDE4ZGQrMjgzNi0weDIzZWYpKXtjaD0qcFNyYysrOypwRHN0Kys9KnBTcmMrKzsqcERzdCsrPWNoO31pZigqKHBEc3QtCi0oMHgxNjIzKzMwMTQtMHgyMWU4KSk9PSgoY2hhcikoMHgxOWQ0KzUzNy0weDFiYTcpKSl7cERzdC0tO25Ec3RMZW5ndGgtLTt9KnBEc3Q9CisqcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IG5Ec3RMZW5ndGg7Y2hhciBjaDtpbnQgaT0oMHgxMDNkKzEyNjAtMHgxNTI5KTtpZihwU3JjCis9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4YmQ5KzEwMjItMHhmZDcpKXtyZXR1cm4tKDB4NDBiKzI0NS0weDRmZik7fQorbkRzdExlbmd0aD1uU3JjTGVuZ3RoO2ZvcihpPSgweGNjOCs2MjA4LTB4MjUwOCk7aTxuU3JjTGVuZ3RoO2krPQorKDB4MWM3OSsyMDc1LTB4MjQ5Mikpe2NoPSpwU3JjKys7KnBEc3QrKz0qcFNyYysrOypwRHN0Kys9Y2g7fWlmKCoocERzdC0KKygweDE1N2QrMTUwOC0weDFiNjApKT09KChjaGFyKSgweDM1ZiszOTQ4LTB4MTI4NSkpKXtwRHN0LS07bkRzdExlbmd0aC0tO30qcERzdD0KICdcMCc7cmV0dXJuIG5Ec3RMZW5ndGg7fVVJTlQxNiB3bXNfdHNfcGFja19nd183X2JpdF9jaGFycyhjb25zdCBVSU5UOCppbixVSU5UMTYgCi1pbl9sZW4sVUlOVDE2IHNoaWZ0LFVJTlQxNiBvdXRfbGVuX21heCxVSU5UOCpvdXQpe1VJTlQxNiBpPSgweGRjOCs2MzgzLTB4MjZiNyk7Ci1VSU5UMTYgcG9zPSgweDE5MDYrMTY5My0weDFmYTMpO2lmKGluPT1OVUxMfHxvdXQ9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKK2luX2xlbixVSU5UMTYgc2hpZnQsVUlOVDE2IG91dF9sZW5fbWF4LFVJTlQ4Km91dCl7VUlOVDE2IGk9KDB4YTkwKzcwODItMHgyNjNhKTsKK1VJTlQxNiBwb3M9KDB4ODMzKzU4NDctMHgxZjBhKTtpZihpbj09TlVMTHx8b3V0PT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDcwXHg2MVx4NjNceDZiXHg1Zlx4NjdceDc3XHg1Zlx4MzdceDVmXHg2Mlx4NjlceDc0XHg1Zlx4NjNceDY4XHg2MVx4NzJceDczIgotKTtyZXR1cm4oMHg2ZCsyNjc3LTB4YWUyKTt9c2hpZnQlPSgweDE4ZTcrNTI3LTB4MWFlZik7aWYoc2hpZnQhPQotKDB4MTcyOSs0OTEtMHgxOTE0KSl7b3V0W3Bvc118PShVSU5UOCkoaW5baV08PHNoaWZ0KTtzaGlmdD0oKDB4MmQ4KzUyMjItMHgxNzM3KS0KLXNoaWZ0KSsoMHgxM2Y3KzM5MTgtMHgyMzQ0KTtpZihzaGlmdD09KDB4MTU0Nis5MzMtMHgxOGU0KSl7c2hpZnQ9Ci0oMHg1ZWQrMzIwMy0weDEyNzApO2krKzt9cG9zKys7fWZvcig7cG9zPG91dF9sZW5fbWF4JiZpPGluX2xlbjtwb3MrKyxpKyspe291dFsKLXBvc109aW5baV0+PnNoaWZ0O2lmKGkrKDB4NjkrNjIyMS0weDE4YjUpPGluX2xlbil7b3V0W3Bvc118PShVSU5UOCkoaW5baSsKLSgweDEyY2ErMTAyNC0weDE2YzkpXTw8KCgweDVmOCs0MTU1LTB4MTYyYyktc2hpZnQpKTtzaGlmdCsrO2lmKHNoaWZ0PT0KLSgweDljMCs1MTM5LTB4MWRjYykpe3NoaWZ0PSgweDZjNCszNjIxLTB4MTRlOSk7aSsrO319fXJldHVybiBwb3M7fVVJTlQ4IAorKTtyZXR1cm4oMHg0NzcrNzIyNC0weDIwYWYpO31zaGlmdCU9KDB4MTcxYSsxMzU1LTB4MWM1ZSk7aWYoc2hpZnQhPQorKDB4YzM0KzQ3NDAtMHgxZWI4KSl7b3V0W3Bvc118PShVSU5UOCkoaW5baV08PHNoaWZ0KTtzaGlmdD0oKDB4MjAzKzkzMDItMHgyNjUyKS0KK3NoaWZ0KSsoMHhiZjArNjUzNy0weDI1NzgpO2lmKHNoaWZ0PT0oMHgxM2RkKzIwMi0weDE0YTApKXtzaGlmdD0KKygweDNkYisxNzQxLTB4YWE4KTtpKys7fXBvcysrO31mb3IoO3BvczxvdXRfbGVuX21heCYmaTxpbl9sZW47cG9zKyssaSsrKXtvdXRbcG9zCitdPWluW2ldPj5zaGlmdDtpZihpKygweDNhOCs3MDU2LTB4MWYzNyk8aW5fbGVuKXtvdXRbcG9zXXw9KFVJTlQ4KShpbltpKworKDB4Nzc0KzcxNDEtMHgyMzU4KV08PCgoMHg1MmMrNzM1MS0weDIxZGMpLXNoaWZ0KSk7c2hpZnQrKztpZihzaGlmdD09CisoMHgzNjMrMjc0Ni0weGUxNikpe3NoaWZ0PSgweDgyMCs3NzY5LTB4MjY3OSk7aSsrO319fXJldHVybiBwb3M7fVVJTlQ4IAogd21zX3RzX2VuY29kZV9hZGRyZXNzKGNvbnN0IHdtc19hZGRyZXNzX3NfdHlwZSphZGRyLFVJTlQ4KmRhdGEpe1VJTlQ4IGkscG9zPQotKDB4YmRkKzQ5NTItMHgxZjM1KTtpZihhZGRyLT5udW1iZXJfb2ZfZGlnaXRzPldNU19HV19BRERSRVNTX01BWCl7YXRfcHJpbnQoCisoMHgxMTIwKzQ1MzctMHgyMmQ5KTtpZihhZGRyLT5udW1iZXJfb2ZfZGlnaXRzPldNU19HV19BRERSRVNTX01BWCl7YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg0MVx4NjRceDY0XHg3Mlx4MjBceDZjXHg2NVx4NmVceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDZmXHg2ZVx4NjdceDNhXHgyMFx4MjVceDY0IgotLGFkZHItPm51bWJlcl9vZl9kaWdpdHMpO3JldHVybigweDhkNSs0MzU1LTB4MTlkOCk7fWlmKGFkZHItPm51bWJlcl90eXBlPT0KKyxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzKTtyZXR1cm4oMHg5M2IrNjc3My0weDIzYjApO31pZihhZGRyLT5udW1iZXJfdHlwZT09CiBXTVNfTlVNQkVSX0FMUEhBTlVNRVJJQyl7ZGF0YVtwb3NdPShVSU5UOCkoKGFkZHItPm51bWJlcl9vZl9kaWdpdHMqCi0oMHgxNGYrNzQyMC0weDFlNDQpKygweDFjZTErMjE1MC0weDI1NDQpKS8oMHgyMDViKzM4Ni0weDIxZDkpKTt9ZWxzZXtkYXRhW3Bvc109Ci1hZGRyLT5udW1iZXJfb2ZfZGlnaXRzO31wb3MrKztkYXRhW3Bvc109KDB4NGY5KzI1MDUtMHhlNDIpO2RhdGFbcG9zXXw9KFVJTlQ4KSgoCi1VSU5UOClhZGRyLT5udW1iZXJfdHlwZTw8KDB4ZGZkKzIwMC0weGVjMSkpO2RhdGFbcG9zXXw9KFVJTlQ4KWFkZHItPm51bWJlcl9wbGFuOwotcG9zKys7aWYoYWRkci0+bnVtYmVyX3R5cGU9PVdNU19OVU1CRVJfQUxQSEFOVU1FUklDKXtwb3MrPShVSU5UOCkKKygweDI1Mis4MTg4LTB4MjI0NykrKDB4ODk3KzQ3NzEtMHgxYjM3KSkvKDB4N2UxKzQ1ODAtMHgxOWMxKSk7fWVsc2V7ZGF0YVtwb3NdPQorYWRkci0+bnVtYmVyX29mX2RpZ2l0czt9cG9zKys7ZGF0YVtwb3NdPSgweDhmYys2NTA0LTB4MjFlNCk7ZGF0YVtwb3NdfD0oVUlOVDgpKCgKK1VJTlQ4KWFkZHItPm51bWJlcl90eXBlPDwoMHgxOTQxKzg4OC0weDFjYjUpKTtkYXRhW3Bvc118PShVSU5UOClhZGRyLT4KK251bWJlcl9wbGFuO3BvcysrO2lmKGFkZHItPm51bWJlcl90eXBlPT1XTVNfTlVNQkVSX0FMUEhBTlVNRVJJQyl7cG9zKz0oVUlOVDgpCiB3bXNfdHNfcGFja19nd183X2JpdF9jaGFycyhhZGRyLT5kaWdpdHMsYWRkci0+bnVtYmVyX29mX2RpZ2l0cywKLSgweGQzZCs0NTY1LTB4MWYxMiksV01TX0dXX0FERFJFU1NfTUFYLCZkYXRhW3Bvc10pO31lbHNle2ZvcihpPQotKDB4MTYyKzQ3MzMtMHgxM2RmKTtpPGFkZHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtkYXRhW3Bvc109KFVJTlQ4KShhZGRyLT5kaWdpdHMKLVtpKytdJigweDM0NCs4NjYtMHg2OTcpKTt7ZGF0YVtwb3NdfD0oVUlOVDgpKGFkZHItPmRpZ2l0c1tpXTw8Ci0oMHgxM2Y1KzMwMDQtMHgxZmFkKSk7fXBvcysrO319cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2VuY29kZV9kY3MoY29uc3QgCi13bXNfZ3dfZGNzX3NfdHlwZSpkY3MsVUlOVDgqZGF0YSl7VUlOVDggcG9zPSgweGJkKzc5NjUtMHgxZmRhKTtpZihkY3MtPgorKDB4MmE3KzUyMzAtMHgxNzE1KSxXTVNfR1dfQUREUkVTU19NQVgsJmRhdGFbcG9zXSk7fWVsc2V7Zm9yKGk9CisoMHgyODYrNzUxMC0weDFmZGMpO2k8YWRkci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2RhdGFbcG9zXT0oVUlOVDgpKGFkZHItPmRpZ2l0cworW2krK10mKDB4ZmM1KzMwMzYtMHgxYjkyKSk7e2RhdGFbcG9zXXw9KFVJTlQ4KShhZGRyLT5kaWdpdHNbaV08PAorKDB4MjBhNSs0NDctMHgyMjYwKSk7fXBvcysrO319cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2VuY29kZV9kY3MoY29uc3QgCit3bXNfZ3dfZGNzX3NfdHlwZSpkY3MsVUlOVDgqZGF0YSl7VUlOVDggcG9zPSgweDI0NSszNzY3LTB4MTBmYyk7aWYoZGNzLT4KIG1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfTk9ORSl7ZGF0YVtwb3NdPWRjcy0+aXNfY29tcHJlc3NlZD8KLSgweGMzMSs2NDc1LTB4MjU1Yyk6KDB4ZDFhKzEzMTItMHgxMjNhKTtkYXRhW3Bvc118PShkY3MtPm1zZ19jbGFzcyE9Ci1XTVNfTUVTU0FHRV9DTEFTU19OT05FKT8oMHgyNzgrOTc4LTB4NjNhKTooMHgxMGRmKzM2Mi0weDEyNDkpO2RhdGFbcG9zXXw9ZGNzLT4KLWFscGhhYmV0PDwoMHg3Yys5MjI4LTB4MjQ4Nik7ZGF0YVtwb3NdfD1kY3MtPm1zZ19jbGFzcyYoMHg3ODcrMTE3NS0weGMxYik7fWVsc2UgCi1pZihkY3MtPm1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfTk9ORV8xMTExKXtkYXRhW3Bvc109Ci0oMHgxNGYwKzE1NDEtMHgxYTA1KTtpZihkY3MtPmFscGhhYmV0PT1XTVNfR1dfQUxQSEFCRVRfOF9CSVQpZGF0YVtwb3NdfD0KLSgweDUzMCs0MzQtMHg2ZGUpO2RhdGFbcG9zXXw9ZGNzLT5tc2dfY2xhc3MmKDB4YjRjKzMxODktMHgxN2JlKTt9ZWxzZXtpZihkY3MtPgotbXNnX3dhaXRpbmc9PVdNU19HV19NU0dfV0FJVElOR19ESVNDQVJEKXtkYXRhW3Bvc109KDB4MjM5ZisyMjMtMHgyM2JlKTt9ZWxzZSBpZigKKygweDE1Mis1OTk3LTB4MTg5Zik6KDB4MTAzYSsxMTM1LTB4MTRhOSk7ZGF0YVtwb3NdfD0oZGNzLT5tc2dfY2xhc3MhPQorV01TX01FU1NBR0VfQ0xBU1NfTk9ORSk/KDB4ZDBjKzU0NTYtMHgyMjRjKTooMHgzOWMrODA1Ny0weDIzMTUpO2RhdGFbcG9zXXw9ZGNzLT4KK2FscGhhYmV0PDwoMHg2NTUrMjQ2NC0weGZmMyk7ZGF0YVtwb3NdfD1kY3MtPm1zZ19jbGFzcyYoMHhkN2QrMzE1Ni0weDE5Y2UpO31lbHNlCisgaWYoZGNzLT5tc2dfd2FpdGluZz09V01TX0dXX01TR19XQUlUSU5HX05PTkVfMTExMSl7ZGF0YVtwb3NdPQorKDB4YmE0KzQ4NDctMHgxZGEzKTtpZihkY3MtPmFscGhhYmV0PT1XTVNfR1dfQUxQSEFCRVRfOF9CSVQpZGF0YVtwb3NdfD0KKygweGJiNCsyODg3LTB4MTZmNyk7ZGF0YVtwb3NdfD1kY3MtPm1zZ19jbGFzcyYoMHg3YjYrNzI5MC0weDI0MmQpO31lbHNle2lmKGRjcy0+Cittc2dfd2FpdGluZz09V01TX0dXX01TR19XQUlUSU5HX0RJU0NBUkQpe2RhdGFbcG9zXT0oMHgxNGIrMTQ0NS0weDYzMCk7fWVsc2UgaWYoCiBkY3MtPm1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfU1RPUkUmJmRjcy0+YWxwaGFiZXQ9PQotV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2RhdGFbcG9zXT0oMHgyODYrMTMzNy0weDZlZik7fWVsc2V7ZGF0YVtwb3NdPQotKDB4ZDUzKzMyMTktMHgxOTA2KTt9ZGF0YVtwb3NdfD0oZGNzLT5tc2dfd2FpdGluZ19hY3RpdmU9PVRSVUUpPwotKDB4OWZiKzQ1MjEtMHgxYjljKTooMHgxNmQrNTI3OC0weDE2MGIpO2RhdGFbcG9zXXw9ZGNzLT5tc2dfd2FpdGluZ19raW5kJgotKDB4MTRmOSsxMzY3LTB4MWE0ZCk7fXBvcysrO3JldHVybiBwb3M7fVVJTlQ4IHdtc190c19iY2RfdG9faW50KGNvbnN0IFVJTlQ4IGJjZCwKLVVJTlQ4KnJlc3VsdCl7dW5zaWduZWQgY2hhciBsb3dfYml0PShiY2QmKDB4MTA2Zis0NjQ0LTB4MjI4NCkpO3Vuc2lnbmVkIGNoYXIgCi1oaWdoX2JpdD0oKGJjZCYoMHg3ZTYrNTczNC0weDFkNWMpKT4+KDB4YTUxKzEwMzUtMHhlNTgpKTtpZihsb3dfYml0PgotKDB4MTI0ZCsxMDM5LTB4MTY1Myl8fGhpZ2hfYml0PigweGM2MCsyODQ0LTB4MTc3Mykpe2F0X3ByaW50KExPR19ERUJVRywKK1dNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUKXtkYXRhW3Bvc109KDB4YjAyKzY4NzYtMHgyNTBlKTt9ZWxzZXtkYXRhW3Bvc109CisoMHg5NmErNDc5Mi0weDFiNDIpO31kYXRhW3Bvc118PShkY3MtPm1zZ193YWl0aW5nX2FjdGl2ZT09VFJVRSk/CisoMHgxMDk1KzUwMDEtMHgyNDE2KTooMHgxMDY2KzQ1NTktMHgyMjM1KTtkYXRhW3Bvc118PWRjcy0+bXNnX3dhaXRpbmdfa2luZCYKKygweGMyOCsyMzc5LTB4MTU3MCk7fXBvcysrO3JldHVybiBwb3M7fVVJTlQ4IHdtc190c19iY2RfdG9faW50KGNvbnN0IFVJTlQ4IGJjZCwKK1VJTlQ4KnJlc3VsdCl7dW5zaWduZWQgY2hhciBsb3dfYml0PShiY2QmKDB4MTQ3NCsxMzEtMHgxNGU4KSk7dW5zaWduZWQgY2hhciAKK2hpZ2hfYml0PSgoYmNkJigweDYyNis1MzU4LTB4MWEyNCkpPj4oMHg1YzkrNzc0NC0weDI0MDUpKTtpZihsb3dfYml0PgorKDB4NDYrODUyNi0weDIxOGIpfHxoaWdoX2JpdD4oMHhjNmErMTc3Mi0weDEzNGQpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDQyXHg0M1x4NDRceDIwXHg2NFx4NjlceDY3XHg2OVx4NzRceDIxIik7KgotcmVzdWx0PSgweGJmYys2Nzk1LTB4MjY4Nyk7cmV0dXJuIEZBTFNFO31lbHNleypyZXN1bHQ9KChiY2QmKDB4Mjk1KzY2MjYtMHgxYzY4KSkKLSsoKChiY2QmKDB4MTAzYSsxMzEwLTB4MTQ2OCkpPj4oMHg3ZjkrMzkwMC0weDE3MzEpKSooMHhmNzYrNzM4LTB4MTI0ZSkpKTtyZXR1cm4gCi1UUlVFO319VUlOVDggd21zX3RzX2VuY29kZV90aW1lc3RhbXAoY29uc3Qgd21zX3RpbWVzdGFtcF9zX3R5cGUqdGltZXN0YW1wLFVJTlQ4KgotZGF0YSl7c2ludDcgaTtVSU5UOCBwb3M9KDB4MWY2ZisxMjY2LTB4MjQ2MSksajtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT4KLXllYXIsJmopKXtyZXR1cm4oMHhiOTIrNDYwNS0weDFkOGYpO31kYXRhW3Bvc109KCh0aW1lc3RhbXAtPnllYXImCi0oMHg0MGMrNjM3NS0weDFjZTQpKTw8KDB4Yzc3KzYzMDgtMHgyNTE3KSkrKCh0aW1lc3RhbXAtPnllYXImCi0oMHgxZmI0KzE2MjUtMHgyNTFkKSk+PigweDg5Nys0OTE2LTB4MWJjNykpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcAotLT5tb250aCwmaikpe2lmKGo+KDB4OTg2KzU1NTYtMHgxZjJlKXx8ajwoMHgxNTE1KzMzNzYtMHgyMjQ0KSl7YXRfcHJpbnQoCi1MT0dfREVCVUcsCityZXN1bHQ9KDB4MWMyNSsyMDI3LTB4MjQxMCk7cmV0dXJuIEZBTFNFO31lbHNleypyZXN1bHQ9KChiY2QmKDB4OTcxKzIwMTEtMHgxMTNkKQorKSsoKChiY2QmKDB4MTE4Zis1MDkzLTB4MjQ4NCkpPj4oMHgxNzYrMTYyMy0weDdjOSkpKigweGM1NSszMDA2LTB4MTgwOSkpKTtyZXR1cm4KKyBUUlVFO319VUlOVDggd21zX3RzX2VuY29kZV90aW1lc3RhbXAoY29uc3Qgd21zX3RpbWVzdGFtcF9zX3R5cGUqdGltZXN0YW1wLFVJTlQ4CisqZGF0YSl7c2ludDcgaTtVSU5UOCBwb3M9KDB4MWYxMCs0ODQtMHgyMGY0KSxqO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPgoreWVhciwmaikpe3JldHVybigweDY4ZCs2MzA3LTB4MWYzMCk7fWRhdGFbcG9zXT0oKHRpbWVzdGFtcC0+eWVhciYKKygweDQ2MCs4NDgxLTB4MjU3MikpPDwoMHhiNGYrODIzLTB4ZTgyKSkrKCh0aW1lc3RhbXAtPnllYXImKDB4MTk1NysyNTE1LTB4MjIzYSkpCis+PigweGQ0NSs0NTI1LTB4MWVlZSkpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bW9udGgsJmopKXtpZihqPgorKDB4MWVjNis0ODUtMHgyMDlmKXx8ajwoMHhmNmErMTI0My0weDE0NDQpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0ZFx4NmZceDZlXHg3NFx4NjhceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7cmV0dXJuKDB4OGY5KzU4MjYtMHgxZmJiKTt9fWVsc2V7cmV0dXJuKDB4OGJhKzM0ODYtMHgxNjU4KTt9ZGF0YVtwb3NdPSgoCi10aW1lc3RhbXAtPm1vbnRoJigweDU5Zis1NjA4LTB4MWI3OCkpPDwoMHgxZjAzKzI5OC0weDIwMjkpKSsoKHRpbWVzdGFtcC0+bW9udGgmCi0oMHgxNGEyKzM2NjctMHgyMjA1KSk+PigweDQyYSsxNTYzLTB4YTQxKSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wCi0tPmRheSwmaikpe2lmKGo+KDB4MTcwNCszMDItMHgxODEzKXx8ajwoMHhmN2MrMjA3Mi0weDE3OTMpKXthdF9wcmludChMT0dfREVCVUcsCissaik7cmV0dXJuKDB4MTg5MisyMzk1LTB4MjFlZCk7fX1lbHNle3JldHVybigweGNjNCsxNy0weGNkNSk7fWRhdGFbcG9zXT0oKAordGltZXN0YW1wLT5tb250aCYoMHgxOGNjKzE0MzYtMHgxZTU5KSk8PCgweDEzYjkrMjUyNi0weDFkOTMpKSsoKHRpbWVzdGFtcC0+bW9udGgKKyYoMHhmZDcrMTE4LTB4ZjVkKSk+PigweDFmZGErNjgyLTB4MjI4MCkpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+CitkYXksJmopKXtpZihqPigweDIxMjQrMTUwMC0weDI2ZTEpfHxqPCgweDE3ZDYrMTQ3NC0weDFkOTcpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjFceDc5XHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IixqKTsKLXJldHVybigweDEyMWYrODgxLTB4MTU5MCk7fX1lbHNle3JldHVybigweDEyMDYrODUyLTB4MTU1YSk7fWRhdGFbcG9zXT0oKAotdGltZXN0YW1wLT5kYXkmKDB4MTZkZCszNTE5LTB4MjQ4ZCkpPDwoMHg1YzgrMzE4My0weDEyMzMpKSsoKHRpbWVzdGFtcC0+ZGF5JgotKDB4ZjdjKzI3ODQtMHgxOTZjKSk+PigweDE4OTErMTA4Ni0weDFjY2IpKTtwb3MrKztpZih3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAKLS0+aG91ciwmaikpe2lmKGo+KDB4NmY1KzgwMS0weDlmZikpe2F0X3ByaW50KExPR19ERUJVRywKK3JldHVybigweGExNSsyMjEyLTB4MTJiOSk7fX1lbHNle3JldHVybigweGM0NSszMjc0LTB4MTkwZik7fWRhdGFbcG9zXT0oKAordGltZXN0YW1wLT5kYXkmKDB4MWQ4OCs4NDQtMHgyMGM1KSk8PCgweGQ0KzgxMjAtMHgyMDg4KSkrKCh0aW1lc3RhbXAtPmRheSYKKygweGRiOCs1MzEzLTB4MjE4OSkpPj4oMHg0YjkrODY1Mi0weDI2ODEpKTtwb3MrKztpZih3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAKKy0+aG91ciwmaikpe2lmKGo+KDB4OGZhKzUxMzktMHgxY2Y2KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDhceDZmXHg3NVx4NzJceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiLGoKLSk7cmV0dXJuKDB4ODM3KzUxMTEtMHgxYzJlKTt9fWVsc2V7cmV0dXJuKDB4NmU0KzQ5MDQtMHgxYTBjKTt9ZGF0YVtwb3NdPSgoCi10aW1lc3RhbXAtPmhvdXImKDB4MThmMisyODk0LTB4MjQzMSkpPDwoMHgyNTgrNDQ5MS0weDEzZGYpKSsoKHRpbWVzdGFtcC0+aG91ciYKLSgweDExNTQrMzM4LTB4MTFiNikpPj4oMHg5MTkrMTExNC0weGQ2ZikpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+Ci1taW51dGUsJmopKXtpZihqPigweDU4OCs1Njk1LTB4MWI4Yykpe2F0X3ByaW50KExPR19ERUJVRywKKyk7cmV0dXJuKDB4ZmZmKzM5NjgtMHgxZjdmKTt9fWVsc2V7cmV0dXJuKDB4Y2Y1KzQ3Ni0weGVkMSk7fWRhdGFbcG9zXT0oKAordGltZXN0YW1wLT5ob3VyJigweDE3YzMrMzgxMy0weDI2OTkpKTw8KDB4YjM4KzMwMjYtMHgxNzA2KSkrKCh0aW1lc3RhbXAtPmhvdXImCisoMHg1NDgrNjM1My0weDFkMjkpKT4+KDB4MTIyNys1MzAwLTB4MjZkNykpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcAorLT5taW51dGUsJmopKXtpZihqPigweDhmMSs0Mjg4LTB4MTk3Nikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7cmV0dXJuKDB4MTI2NSs0Njk0LTB4MjRiYik7fX1lbHNle3JldHVybigweDE3ZCsyNjk2LTB4YzA1KTt9ZGF0YVtwb3NdPSgoCi10aW1lc3RhbXAtPm1pbnV0ZSYoMHhhNmYrNjM0OS0weDIzMmQpKTw8KDB4MTc1YiszMzE5LTB4MjQ0ZSkpKygodGltZXN0YW1wLT4KLW1pbnV0ZSYoMHgxN2QwKzM3OS0weDE4NWIpKT4+KDB4MTBlZCs1MDY5LTB4MjRiNikpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KAotdGltZXN0YW1wLT5zZWNvbmQsJmopKXtpZihqPigweDE3MjIrNjA0LTB4MTk0Mykpe2F0X3ByaW50KExPR19ERUJVRywKKyxqKTtyZXR1cm4oMHg3YSsxNTQwLTB4NjdlKTt9fWVsc2V7cmV0dXJuKDB4ZWM4KzI3MDgtMHgxOTVjKTt9ZGF0YVtwb3NdPSgoCit0aW1lc3RhbXAtPm1pbnV0ZSYoMHgxNjcxKzM3MTUtMHgyNGU1KSk8PCgweDE3NjgrMzY4OS0weDI1Y2QpKSsoKHRpbWVzdGFtcC0+CittaW51dGUmKDB4NzA4Kzc5MjgtMHgyNTEwKSk+PigweDZmMCsxNjEyLTB4ZDM4KSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQoCit0aW1lc3RhbXAtPnNlY29uZCwmaikpe2lmKGo+KDB4MjBiKzc0Ni0weDRiYSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg2NVx4NjNceDZmXHg2ZVx4NjRceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7cmV0dXJuKDB4MTQyZCs0MDMyLTB4MjNlZCk7fX1lbHNle3JldHVybigweDE3YzErMTI0OC0weDFjYTEpO31kYXRhW3Bvc109KCgKLXRpbWVzdGFtcC0+c2Vjb25kJigweDFjYjgrMTA3My0weDIwZGEpKTw8KDB4MzY4KzI0NTUtMHhjZmIpKSsoKHRpbWVzdGFtcC0+c2Vjb25kCi0mKDB4MTBlMis0NDQtMHgxMWFlKSk+PigweDc2MSszMTg4LTB4MTNkMSkpO3BvcysrO2k9KHNpbnQ3KXRpbWVzdGFtcC0+dGltZXpvbmU7Ci1pZihpPigweDkwNSs5MzItMHhjNzkpfHxpPC0oMHgxMzY0KzUwMzQtMHgyNmRlKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorLGopO3JldHVybigweDhiMiszNjA3LTB4MTZjOSk7fX1lbHNle3JldHVybigweDkyMiszNTk4LTB4MTczMCk7fWRhdGFbcG9zXT0oKAordGltZXN0YW1wLT5zZWNvbmQmKDB4OGUxKzY5NzktMHgyNDE1KSk8PCgweDI5OSszNTU2LTB4MTA3OSkpKygodGltZXN0YW1wLT5zZWNvbmQKKyYoMHhlMzgrOTAzLTB4MTBjZikpPj4oMHhkMTgrMzQyNy0weDFhNzcpKTtwb3MrKztpPShzaW50Nyl0aW1lc3RhbXAtPnRpbWV6b25lO2lmCisoaT4oMHhkMGQrNzcwLTB4ZmRmKXx8aTwtKDB4ZGI4KzUwNzktMHgyMTVmKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTRceDY5XHg2ZFx4NjVceDdhXHg2Zlx4NmVceDY1XHgyMFx4NjlceDczXHgyMFx4NmZceDc1XHg3NFx4MjBceDZmXHg2Nlx4MjBceDYyXHg2Zlx4NzVceDZlXHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saSk7cmV0dXJuKDB4MWY1MisxMTItMHgxZmMyKTt9aWYoaT49KDB4OWI2KzY1MS0weGM0MSkpe2RhdGFbcG9zXT0oVUlOVDgpKCgoCi1VSU5UOCkoaSUoMHgyOGQrNjgxNS0weDFkMjIpKSk8PCgweDE1OTYrMjY4MS0weDIwMGIpKTtkYXRhW3Bvc118PShpLwotKDB4N2QzKzIyMjItMHgxMDc3KSk7fWVsc2V7aSo9KC0oMHg4ZTcrNjY4Mi0weDIzMDApKTtkYXRhW3Bvc109KFVJTlQ4KSgoKFVJTlQ4KSgKLWklKDB4MTE4MysyMDE2LTB4MTk1OSkpKTw8KDB4NzhkKzM4MDctMHgxNjY4KSk7ZGF0YVtwb3NdfD0oaS8oMHg0Zis5MjE3LTB4MjQ0NikpCi07ZGF0YVtwb3NdfD0oMHg1OTQrMTMyNy0weGFiYik7fXBvcysrO3JldHVybiBwb3M7fVVJTlQ4IHdtc190c19nZXRfdWRoX2xlbmd0aCgKLWNvbnN0IHdtc191ZGhfc190eXBlKnVkaCl7VUlOVDggbGVuZ3RoPSgweDE3ZmYrNzc2LTB4MWIwNyk7aWYodWRoIT1OVUxMKXtzd2l0Y2goCi11ZGgtPmhlYWRlcl9pZCl7Y2FzZSBXTVNfVURIX0NPTkNBVF84Omxlbmd0aD0oMHgxMWUxKzMzNTAtMHgxZWY2KSsKLSgweDE3NDMrNDc3LTB4MTkxZikrV01TX1VESF9PQ1RFVFNfQ09OQ0FUODticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2Omxlbmd0aD0KLSgweDlhNCs5NzctMHhkNzQpKygweDIyNzgrNDUzLTB4MjQzYykrV01TX1VESF9PQ1RFVFNfQ09OQ0FUMTY7YnJlYWs7Y2FzZSAKLVdNU19VREhfU1BFQ0lBTF9TTTpsZW5ndGg9KDB4MTM0MSszMjMxLTB4MWZkZikrKDB4MjFkKzIxMy0weDJmMSkrCi1XTVNfVURIX09DVEVUU19TUEVDSUFMX1NNO2JyZWFrO2Nhc2UgV01TX1VESF9QT1JUXzg6bGVuZ3RoPSgweDEyNDYrMzM5OS0weDFmOGMpKwotKDB4ODgzKzI2MDYtMHgxMmIwKStXTVNfVURIX09DVEVUU19QT1JUODticmVhaztjYXNlIFdNU19VREhfUE9SVF8xNjpsZW5ndGg9Ci0oMHg3OCs2ODAtMHgzMWYpKygweDEyNyszODg0LTB4MTA1MikrV01TX1VESF9PQ1RFVFNfUE9SVDE2O2JyZWFrO2Nhc2UgCi1XTVNfVURIX1NNU0NfQ09OVFJPTDpsZW5ndGg9KDB4MWMwYis2MjgtMHgxZTdlKSsoMHgxYzIwKzE1NDctMHgyMjJhKSt1ZGgtPnUuCi1vdGhlci5oZWFkZXJfbGVuZ3RoO2JyZWFrO2Nhc2UgV01TX1VESF9TT1VSQ0U6bGVuZ3RoPSgweDFhODgrMTM0NS0weDFmYzgpKwotKDB4MTg0KzcwODktMHgxZDM0KSt1ZGgtPnUub3RoZXIuaGVhZGVyX2xlbmd0aDticmVhaztjYXNlIFdNU19VREhfV0NNUDpsZW5ndGg9Ci0oMHgzNmQrMzQ4My0weDExMDcpKygweDE3ZDIrMzY1LTB4MTkzZSkrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSAKLVdNU19VREhfVEVYVF9GT1JNQVRJTkc6aWYoIXVkaC0+dS50ZXh0X2Zvcm1hdGluZy5pc19jb2xvcl9wcmVzZW50KXtsZW5ndGg9Ci0oMHgxMmYyKzI0MC0weDEzZTEpKygweGRhMCs1NTgyLTB4MjM2ZCkrV01TX1VESF9PQ1RFVFNfVEVYVF9GT1JNQVRUSU5HO31lbHNlewotbGVuZ3RoPSgweDEzYSs2NjU5LTB4MWIzYykrKDB4ZDU4KzI2NDUtMHgxN2FjKStXTVNfVURIX09DVEVUU19URVhUX0ZPUk1BVFRJTkcrCi0oMHg4ZGErNzg3LTB4YmVjKTt9YnJlYWs7Y2FzZSBXTVNfVURIX1BSRV9ERUZfU09VTkQ6bGVuZ3RoPSgweDE1YSszODU3LTB4MTA2YSkrCi0oMHgxNDczKzEyMDktMHgxOTJiKStXTVNfVURIX09DVEVUU19QUkVfREVGO2JyZWFrO2Nhc2UgV01TX1VESF9VU0VSX0RFRl9TT1VORDoKLWxlbmd0aD0oMHhhNmYrMjUxOS0weDE0NDUpKygweDY3KzMxNzQtMHhjY2MpK3VkaC0+dS51c2VyX2RlZl9zb3VuZC5kYXRhX2xlbmd0aCsKLSgweGMyYis1NTIxLTB4MjFiYik7YnJlYWs7Y2FzZSBXTVNfVURIX1BSRV9ERUZfQU5JTTpsZW5ndGg9KDB4ZTRiKzE0ODMtMHgxNDE1KSsKLSgweGVhOSsxMjg2LTB4MTNhZSkrV01TX1VESF9PQ1RFVFNfUFJFX0RFRjticmVhaztjYXNlIFdNU19VREhfTEFSR0VfQU5JTTpsZW5ndGg9Ci0oMHhjMWErMTYyMi0weDEyNmYpKygweDExMis0MjMwLTB4MTE5NykrV01TX1VESF9MQVJHRV9CSVRNQVBfU0laRSoKLVdNU19VREhfQU5JTV9OVU1fQklUTUFQUysoMHg2Y2QrNDkwNS0weDE5ZjUpO2JyZWFrO2Nhc2UgV01TX1VESF9TTUFMTF9BTklNOgotbGVuZ3RoPSgweDEwYzgrMzYzLTB4MTIzMikrKDB4MjFhKzg0MDctMHgyMmYwKStXTVNfVURIX1NNQUxMX0JJVE1BUF9TSVpFKgotV01TX1VESF9BTklNX05VTV9CSVRNQVBTKygweGExYSsxNzgwLTB4MTEwZCk7YnJlYWs7Y2FzZSBXTVNfVURIX0xBUkdFX1BJQ1RVUkU6Ci1sZW5ndGg9KDB4ODc2KzIyNDAtMHgxMTM1KSsoMHgzZGQrNTcwNS0weDFhMjUpK1dNU19VREhfTEFSR0VfUElDX1NJWkUrCi0oMHgzOWIrMzQ2Mi0weDExMjApO2JyZWFrO2Nhc2UgV01TX1VESF9TTUFMTF9QSUNUVVJFOmxlbmd0aD0oMHg3Y2QrNjE5OC0weDIwMDIpKwotKDB4MmI4Kzc0MDgtMHgxZmE3KStXTVNfVURIX1NNQUxMX1BJQ19TSVpFKygweDE3NCs4MTY2LTB4MjE1OSk7YnJlYWs7Y2FzZSAKLVdNU19VREhfVkFSX1BJQ1RVUkU6bGVuZ3RoPSgweDIxOSs2MzY5LTB4MWFmOSkrKDB4MTEwNys2My0weDExNDUpKyhVSU5UOCkodWRoLT51Ci0udmFyX3BpY3R1cmUuaGVpZ2h0KnVkaC0+dS52YXJfcGljdHVyZS53aWR0aC8oMHg1Y2IrNzYwNS0weDIzNzgpKSsKLSgweGI4Mis0NzE0LTB4MWRlOSk7YnJlYWs7Y2FzZSBXTVNfVURIX1JGQzgyMjpsZW5ndGg9KDB4YjE5KzI4MjktMHgxNjI1KSsKLSgweDY4MCsyODcxLTB4MTFiNikrV01TX1VESF9PQ1RFVFNfUkZDODIyO2JyZWFrO2Nhc2UgV01TX1VESF9OQVRfTEFOR19TUzpsZW5ndGg9Ci0oMHgxYmMrNjAyLTB4NDE1KSsoMHhiOTErMTYxNi0weDExZTApK1dNU19VREhfT0NURVRTX05BVF9MQU5HX1NTO2JyZWFrO2Nhc2UgCi1XTVNfVURIX05BVF9MQU5HX0xTOmxlbmd0aD0oMHgyNTArNzYxNS0weDIwMGUpKygweGVjOSsyMjk5LTB4MTdjMykrCi1XTVNfVURIX09DVEVUU19OQVRfTEFOR19MUzticmVhaztjYXNlIFdNU19VREhfVVNFUl9QUk9NUFQ6bGVuZ3RoPQotKDB4YjY3KzI4OTUtMHgxNmI1KSsoMHg2ZGQrNzM1OC0weDIzOWEpK1dNU19VREhfT0NURVRTX1VTRVJfUFJPTVBUO2JyZWFrO2Nhc2UgCi1XTVNfVURIX0VYVEVOREVEX09CSkVDVDpsZW5ndGg9KDB4OTYzKzE3NS0weGExMSkrKDB4ZDY2KzM3NDEtMHgxYzAyKSt1ZGgtPnUuZW8uCi1jb250ZW50Lmxlbmd0aDtpZih1ZGgtPnUuZW8uZmlyc3Rfc2VnbWVudD09VFJVRSl7bGVuZ3RoKz0KLVdNU19VREhfT0NURVRTX0VPX0hFQURFUjt9YnJlYWs7ZGVmYXVsdDpsZW5ndGg9KDB4NWEzKzM1ODQtMHgxM2EyKSsKLSgweDFlNzUrNTk5LTB4MjBjYikrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7fX1yZXR1cm4gbGVuZ3RoO311aW50MzIgCi13bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aChjb25zdCBVSU5UOCBudW1faGVhZGVycyxjb25zdCAKLXdtc191ZGhfc190eXBlKmhlYWRlcnMpe3VpbnQzMiBsZW5ndGg9KDB4MTg1NyszMjQtMHgxOTliKTt1aW50MzIgaTtpZihoZWFkZXJzPT0KLU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyxpKTtyZXR1cm4oMHgxNzYrMzMzNC0weGU3Yyk7fWlmKGk+PSgweDI0MysyMTAzLTB4YTdhKSl7ZGF0YVtwb3NdPShVSU5UOCkoKCgKK1VJTlQ4KShpJSgweDEwYjIrMjcyMy0weDFiNGIpKSk8PCgweDIxNCs4OC0weDI2OCkpO2RhdGFbcG9zXXw9KGkvCisoMHg1ZTMrNzYzOS0weDIzYjApKTt9ZWxzZXtpKj0oLSgweDE3ZTMrMjU3MS0weDIxZWQpKTtkYXRhW3Bvc109KFVJTlQ4KSgoKFVJTlQ4KQorKGklKDB4MTQ1ZisyMzY0LTB4MWQ5MSkpKTw8KDB4ZmVjKzIxNzgtMHgxODZhKSk7ZGF0YVtwb3NdfD0oaS8KKygweDE5YzgrMjM0MS0weDIyZTMpKTtkYXRhW3Bvc118PSgweDFkMzUrMjI0Ni0weDI1ZjMpO31wb3MrKztyZXR1cm4gcG9zO31VSU5UOCAKK3dtc190c19nZXRfdWRoX2xlbmd0aChjb25zdCB3bXNfdWRoX3NfdHlwZSp1ZGgpe1VJTlQ4IGxlbmd0aD0oMHgxZGY5Kzc1MS0weDIwZTgpCis7aWYodWRoIT1OVUxMKXtzd2l0Y2godWRoLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODpsZW5ndGg9CisoMHgxMDMyKzIzMzYtMHgxOTUxKSsoMHg3OGYrNDE3OS0weDE3ZTEpK1dNU19VREhfT0NURVRTX0NPTkNBVDg7YnJlYWs7Y2FzZSAKK1dNU19VREhfQ09OQ0FUXzE2Omxlbmd0aD0oMHhhZmIrMTM2OS0weDEwNTMpKygweDFlMjMrNDg1LTB4MjAwNykrCitXTVNfVURIX09DVEVUU19DT05DQVQxNjticmVhaztjYXNlIFdNU19VREhfU1BFQ0lBTF9TTTpsZW5ndGg9KDB4ZmMrMjMzOC0weGExZCkrCisoMHgzNCs1NTQ5LTB4MTVlMCkrV01TX1VESF9PQ1RFVFNfU1BFQ0lBTF9TTTticmVhaztjYXNlIFdNU19VREhfUE9SVF84Omxlbmd0aD0KKygweGZhOSs0MDEyLTB4MWY1NCkrKDB4MTEwZis1NDA3LTB4MjYyZCkrV01TX1VESF9PQ1RFVFNfUE9SVDg7YnJlYWs7Y2FzZSAKK1dNU19VREhfUE9SVF8xNjpsZW5ndGg9KDB4MTJiYisyNjE4LTB4MWNmNCkrKDB4ZDU3KzI2NjEtMHgxN2JiKSsKK1dNU19VREhfT0NURVRTX1BPUlQxNjticmVhaztjYXNlIFdNU19VREhfU01TQ19DT05UUk9MOmxlbmd0aD0KKygweDE0ZmMrMTk2OC0weDFjYWIpKygweDIzOWIrNzg4LTB4MjZhZSkrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSAKK1dNU19VREhfU09VUkNFOmxlbmd0aD0oMHgyMjZiKzEwMTAtMHgyNjVjKSsoMHg3NjErMjY3MC0weDExY2UpK3VkaC0+dS5vdGhlci4KK2hlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSBXTVNfVURIX1dDTVA6bGVuZ3RoPSgweGUwZCsyMjY0LTB4MTZlNCkrCisoMHg0ZGErNDU4Ni0weDE2YzMpK3VkaC0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2JyZWFrO2Nhc2UgV01TX1VESF9URVhUX0ZPUk1BVElORworOmlmKCF1ZGgtPnUudGV4dF9mb3JtYXRpbmcuaXNfY29sb3JfcHJlc2VudCl7bGVuZ3RoPSgweDExMDUrNDMxMC0weDIxZGEpKworKDB4MWJkYSsxMzg4LTB4MjE0NSkrV01TX1VESF9PQ1RFVFNfVEVYVF9GT1JNQVRUSU5HO31lbHNle2xlbmd0aD0KKygweGM0YisyMDAzLTB4MTQxZCkrKDB4MTNkNysyNDg1LTB4MWQ4YikrV01TX1VESF9PQ1RFVFNfVEVYVF9GT1JNQVRUSU5HKworKDB4OTM4KzUwMTktMHgxY2QyKTt9YnJlYWs7Y2FzZSBXTVNfVURIX1BSRV9ERUZfU09VTkQ6bGVuZ3RoPSgweDdhNCs1ODE1LTB4MWU1YSkKKysoMHgyMmQwKzc0Ny0weDI1YmEpK1dNU19VREhfT0NURVRTX1BSRV9ERUY7YnJlYWs7Y2FzZSBXTVNfVURIX1VTRVJfREVGX1NPVU5EOgorbGVuZ3RoPSgweDExYWErNDI3Mi0weDIyNTkpKygweDE0YTArNDUxMi0weDI2M2YpK3VkaC0+dS51c2VyX2RlZl9zb3VuZC4KK2RhdGFfbGVuZ3RoKygweDYzYSszNDkwLTB4MTNkYik7YnJlYWs7Y2FzZSBXTVNfVURIX1BSRV9ERUZfQU5JTTpsZW5ndGg9CisoMHg2ZGYrMTQwOS0weGM1ZikrKDB4MjcrNjY5MC0weDFhNDgpK1dNU19VREhfT0NURVRTX1BSRV9ERUY7YnJlYWs7Y2FzZSAKK1dNU19VREhfTEFSR0VfQU5JTTpsZW5ndGg9KDB4MTI2MisxODI4LTB4MTk4NSkrKDB4NDQ2KzI2MzQtMHhlOGYpKworV01TX1VESF9MQVJHRV9CSVRNQVBfU0laRSpXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFMrKDB4MTkwYisxODYtMHgxOWM0KTticmVhazsKK2Nhc2UgV01TX1VESF9TTUFMTF9BTklNOmxlbmd0aD0oMHhmMmMrMzc1Ny0weDFkZDgpKygweDFlOTUrMTMzNC0weDIzY2EpKworV01TX1VESF9TTUFMTF9CSVRNQVBfU0laRSpXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFMrKDB4MWExZCsyNDgtMHgxYjE0KTticmVhazsKK2Nhc2UgV01TX1VESF9MQVJHRV9QSUNUVVJFOmxlbmd0aD0oMHhhNmYrNTUxOS0weDFmZmQpKygweGM3OCs2MjM1LTB4MjRkMikrCitXTVNfVURIX0xBUkdFX1BJQ19TSVpFKygweDE3ZjUrMjE2NS0weDIwNjkpO2JyZWFrO2Nhc2UgV01TX1VESF9TTUFMTF9QSUNUVVJFOgorbGVuZ3RoPSgweDE5YjErMjAwOS0weDIxODkpKygweDg5MiszMDc1LTB4MTQ5NCkrV01TX1VESF9TTUFMTF9QSUNfU0laRSsKKygweDRkNysxMjUwLTB4OWI4KTticmVhaztjYXNlIFdNU19VREhfVkFSX1BJQ1RVUkU6bGVuZ3RoPSgweDk2MysyMjAxLTB4MTFmYikrCisoMHgxNzlmKzMwMzUtMHgyMzc5KSsoVUlOVDgpKHVkaC0+dS52YXJfcGljdHVyZS5oZWlnaHQqdWRoLT51LnZhcl9waWN0dXJlLndpZHRoLworKDB4OWRjKzQ3NTMtMHgxYzY1KSkrKDB4MThiYyszMjQzLTB4MjU2NCk7YnJlYWs7Y2FzZSBXTVNfVURIX1JGQzgyMjpsZW5ndGg9CisoMHgxYTYrNjk4My0weDFjZWMpKygweDZjZisxNy0weDZkZikrV01TX1VESF9PQ1RFVFNfUkZDODIyO2JyZWFrO2Nhc2UgCitXTVNfVURIX05BVF9MQU5HX1NTOmxlbmd0aD0oMHgxYzgrNzQxMS0weDFlYmEpKygweGMxMSs0OTc4LTB4MWY4MikrCitXTVNfVURIX09DVEVUU19OQVRfTEFOR19TUzticmVhaztjYXNlIFdNU19VREhfTkFUX0xBTkdfTFM6bGVuZ3RoPQorKDB4OGErNzQxMy0weDFkN2UpKygweDM2Nys0MDQ1LTB4MTMzMykrV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfTFM7YnJlYWs7Y2FzZSAKK1dNU19VREhfVVNFUl9QUk9NUFQ6bGVuZ3RoPSgweDE0ODUrMzM5MC0weDIxYzIpKygweGEzMSs0NjA0LTB4MWMyYykrCitXTVNfVURIX09DVEVUU19VU0VSX1BST01QVDticmVhaztjYXNlIFdNU19VREhfRVhURU5ERURfT0JKRUNUOmxlbmd0aD0KKygweDEwNzYrNzE3LTB4MTM0MikrKDB4MjU3Kzc3NTctMHgyMGEzKSt1ZGgtPnUuZW8uY29udGVudC5sZW5ndGg7aWYodWRoLT51LmVvLgorZmlyc3Rfc2VnbWVudD09VFJVRSl7bGVuZ3RoKz1XTVNfVURIX09DVEVUU19FT19IRUFERVI7fWJyZWFrO2RlZmF1bHQ6bGVuZ3RoPQorKDB4NmZkKzQ1NDQtMHgxOGJjKSsoMHhhMGErMTI3NC0weGYwMykrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7fX1yZXR1cm4KKyBsZW5ndGg7fXVpbnQzMiB3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aChjb25zdCBVSU5UOCBudW1faGVhZGVycywKK2NvbnN0IHdtc191ZGhfc190eXBlKmhlYWRlcnMpe3VpbnQzMiBsZW5ndGg9KDB4YjYwKzI0MzMtMHgxNGUxKTt1aW50MzIgaTtpZigKK2hlYWRlcnM9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjNceDZmXHg2ZFx4NzBceDc1XHg3NFx4NjVceDVmXHg3NVx4NzNceDY1XHg3Mlx4NWZceDY0XHg2MVx4NzRceDYxXHg1Zlx4NjhceDY1XHg2MVx4NjRceDY1XHg3Mlx4NWZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIxIgotKTtyZXR1cm4oMHg4MSs3NjkzLTB4MWU4ZSk7fWlmKG51bV9oZWFkZXJzPigweDliMCsyODAtMHhhYzgpKXtsZW5ndGgrPQotKDB4MTAyOCszODg3LTB4MWY1Nik7Zm9yKGk9KDB4MTUxOCs0NDcyLTB4MjY5MCk7aTxudW1faGVhZGVycyYmaTwKKyk7cmV0dXJuKDB4MWJmZCsxNDk5LTB4MjFkOCk7fWlmKG51bV9oZWFkZXJzPigweDFhKzc1MTQtMHgxZDc0KSl7bGVuZ3RoKz0KKygweDEzODYrNTM4LTB4MTU5Zik7Zm9yKGk9KDB4ZTI3KzU2NTItMHgyNDNiKTtpPG51bV9oZWFkZXJzJiZpPAogV01TX01BWF9VRF9IRUFERVJTO2krKyl7bGVuZ3RoKz0odWludDMyKXdtc190c19nZXRfdWRoX2xlbmd0aCgmaGVhZGVyc1tpXSk7fX0KIHJldHVybiBsZW5ndGg7fXVpbnQzMiB3bXNfdHNfY29tcHV0ZV9nd191c2VyX2RhdGFfbGVuZ3RoKGNvbnN0IHdtc19nd19kY3Nfc190eXBlCi0qZGNzLGNvbnN0IHdtc19nd191c2VyX2RhdGFfc190eXBlKnVzZXJfZGF0YSl7dWludDMyIGxlbmd0aD0oMHgyNGMrMzY5OS0weDEwYmYpOwotaWYoZGNzPT1OVUxMfHx1c2VyX2RhdGE9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKypkY3MsY29uc3Qgd21zX2d3X3VzZXJfZGF0YV9zX3R5cGUqdXNlcl9kYXRhKXt1aW50MzIgbGVuZ3RoPSgweDE0OTYrMTE5Ny0weDE5NDMpCis7aWYoZGNzPT1OVUxMfHx1c2VyX2RhdGE9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjNceDZmXHg2ZFx4NzBceDc1XHg3NFx4NjVceDVmXHg2N1x4NzdceDVmXHg3NVx4NzNceDY1XHg3Mlx4NWZceDY0XHg2MVx4NzRceDYxXHg1Zlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjEiCi0pO3JldHVybigweGQwZCsxMDQ4LTB4MTEyNSk7fWxlbmd0aCs9d21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgoCispO3JldHVybigweDE1MjUrMjg0MC0weDIwM2QpO31sZW5ndGgrPXdtc190c19jb21wdXRlX3VzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKAogdXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPmhlYWRlcnMpO2lmKGRjcy0+YWxwaGFiZXQ9PQotV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2xlbmd0aCs9KCh1c2VyX2RhdGEtPnNtX2xlbiooMHgxMDY2KzEyNjItMHgxNTRkKSkKLSsoMHhjY2MrMjY0Mi0weDE3MTcpKS8oMHhjN2ErNDY5NC0weDFlYzgpO31lbHNle2xlbmd0aCs9dXNlcl9kYXRhLT5zbV9sZW47fQorV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2xlbmd0aCs9KCh1c2VyX2RhdGEtPnNtX2xlbiooMHhiZCsyOTMyLTB4YzJhKSkrCisoMHgxMjZhKzM5NTktMHgyMWRhKSkvKDB4YjljKzI5NzktMHgxNzM3KTt9ZWxzZXtsZW5ndGgrPXVzZXJfZGF0YS0+c21fbGVuO30KIHJldHVybiBsZW5ndGg7fXN0YXRpYyBpbnQgd21zX3RzX2VuY29kZV91ZGhfY29uY2F0XzgoVUlOVDgqdWRoKXtpbnQgcG9zPQotKDB4MTk4OCszMzUtMHgxYWQ3KTtpZihjb25zdF9oZWFkZXItPnUuY29uY2F0XzgudG90YWxfc209PSgweDE3YjMrMzc3LTB4MTkyYyl8fAotY29uc3RfaGVhZGVyLT51LmNvbmNhdF84LnNlcV9udW09PSgweDIxYisxMDg0LTB4NjU3KXx8Y29uc3RfaGVhZGVyLT51LmNvbmNhdF84Lgotc2VxX251bT5jb25zdF9oZWFkZXItPnUuY29uY2F0XzgudG90YWxfc20pe2F0X3ByaW50KExPR19ERUJVRywKKygweDFkZGYrMjI4OC0weDI2Y2YpO2lmKGNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC50b3RhbF9zbT09KDB4MTdhNSs0NzEtMHgxOTdjKXx8Citjb25zdF9oZWFkZXItPnUuY29uY2F0Xzguc2VxX251bT09KDB4MTBiYSs1NDI1LTB4MjVlYil8fGNvbnN0X2hlYWRlci0+dS5jb25jYXRfOAorLnNlcV9udW0+Y29uc3RfaGVhZGVyLT51LmNvbmNhdF84LnRvdGFsX3NtKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg2OVx4NjRceDIwXHgyNVx4NjRceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NmVceDZmXHgyMFx4NDRceDYxXHg3NFx4NjEiCi0sY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpO3JldHVybigweDIwYmIrMjcxLTB4MjFjYSk7fXVkaFtwb3MrK109KFVJTlQ4KQorLGNvbnN0X2hlYWRlci0+aGVhZGVyX2lkKTtyZXR1cm4oMHg2NGQrMzg2My0weDE1NjQpO311ZGhbcG9zKytdPShVSU5UOCkKIFdNU19VREhfQ09OQ0FUXzg7dWRoW3BvcysrXT0oVUlOVDgpV01TX1VESF9PQ1RFVFNfQ09OQ0FUODt1ZGhbcG9zKytdPQogY29uc3RfaGVhZGVyLT51LmNvbmNhdF84Lm1zZ19yZWY7dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPnUuY29uY2F0XzgudG90YWxfc207CiB1ZGhbcG9zKytdPWNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC5zZXFfbnVtO3JldHVybiBwb3M7fXN0YXRpYyBpbnQgCi13bXNfdHNfZW5jb2RlX3VkaF9jb25jYXQxNihVSU5UOCp1ZGgpe2ludCBwb3M9KDB4MTA3Yys0NjU2LTB4MjJhYyk7aWYoCi1jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnRvdGFsX3NtPT0oMHgzODYrNzc3NS0weDIxZTUpfHxjb25zdF9oZWFkZXItPnUuCi1jb25jYXRfMTYuc2VxX251bT09KDB4YWY3KzY1LTB4YjM4KXx8Y29uc3RfaGVhZGVyLT51LmNvbmNhdF8xNi5zZXFfbnVtPgord21zX3RzX2VuY29kZV91ZGhfY29uY2F0MTYoVUlOVDgqdWRoKXtpbnQgcG9zPSgweDIxMTkrNjM1LTB4MjM5NCk7aWYoCitjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnRvdGFsX3NtPT0oMHgxNjQ5KzI5ODgtMHgyMWY1KXx8Y29uc3RfaGVhZGVyLT51LgorY29uY2F0XzE2LnNlcV9udW09PSgweDg0MSs1NzEtMHhhN2MpfHxjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnNlcV9udW0+CiBjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnRvdGFsX3NtKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg2OVx4NjRceDIwXHgyNVx4NjRceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NmVceDZmXHgyMFx4NDRceDYxXHg3NFx4NjEiCi0sY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpO3JldHVybigweDMyOSszNDA0LTB4MTA3NSk7fXVkaFtwb3MrK109KFVJTlQ4KQorLGNvbnN0X2hlYWRlci0+aGVhZGVyX2lkKTtyZXR1cm4oMHg1MWErNzY3MC0weDIzMTApO311ZGhbcG9zKytdPShVSU5UOCkKIFdNU19VREhfQ09OQ0FUXzE2O3VkaFtwb3MrK109KFVJTlQ4KVdNU19VREhfT0NURVRTX0NPTkNBVDE2O3VkaFtwb3MrK109KFVJTlQ4KSgoCi1jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2Lm1zZ19yZWYmNjUyODApPj4oMHgxYTcrMTUzMC0weDc5OSkpO3VkaFtwb3MrK109KFVJTlQ4KQotKGNvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYubXNnX3JlZiYoMHg1MmMrNDE5Mi0weDE0OGQpKTt1ZGhbcG9zKytdPWNvbnN0X2hlYWRlcgotLT51LmNvbmNhdF8xNi50b3RhbF9zbTt1ZGhbcG9zKytdPWNvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYuc2VxX251bTtyZXR1cm4gcG9zO30KLWludCB3bXNfdHNfZW5jb2RlX3VkaF9uYXRfbGFuZ19zcyhVSU5UOCp1ZGgpe2ludCBwb3M9KDB4NmE4KzUyNzYtMHgxYjQ0KTt1ZGhbcG9zCi0rK109KFVJTlQ4KVdNU19VREhfTkFUX0xBTkdfU1M7dWRoW3BvcysrXT0oVUlOVDgpV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1M7dWRoWwotcG9zKytdPShVSU5UOCljb25zdF9oZWFkZXItPnUubmF0X2xhbmdfc3MubmF0X2xhbmdfaWQ7cmV0dXJuIHBvczt9aW50IAotd21zX3RzX2VuY29kZV91ZGhfbmF0X2xhbmdfbHMoVUlOVDgqdWRoKXtpbnQgcG9zPSgweGJiNCs2NDYxLTB4MjRmMSk7dWRoW3BvcysrXT0KK2NvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYubXNnX3JlZiY2NTI4MCk+PigweDJmZis1ODI0LTB4MTliNykpO3VkaFtwb3MrK109KFVJTlQ4CispKGNvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYubXNnX3JlZiYoMHhkN2QrMjk4LTB4ZGE4KSk7dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPgordS5jb25jYXRfMTYudG90YWxfc207dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnNlcV9udW07cmV0dXJuIHBvczt9CitpbnQgd21zX3RzX2VuY29kZV91ZGhfbmF0X2xhbmdfc3MoVUlOVDgqdWRoKXtpbnQgcG9zPSgweDFiYmErMTU0My0weDIxYzEpO3VkaFsKK3BvcysrXT0oVUlOVDgpV01TX1VESF9OQVRfTEFOR19TUzt1ZGhbcG9zKytdPShVSU5UOClXTVNfVURIX09DVEVUU19OQVRfTEFOR19TUzsKK3VkaFtwb3MrK109KFVJTlQ4KWNvbnN0X2hlYWRlci0+dS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZDtyZXR1cm4gcG9zO31pbnQgCit3bXNfdHNfZW5jb2RlX3VkaF9uYXRfbGFuZ19scyhVSU5UOCp1ZGgpe2ludCBwb3M9KDB4YjZjKzE5ODItMHgxMzJhKTt1ZGhbcG9zKytdPQogKFVJTlQ4KVdNU19VREhfTkFUX0xBTkdfTFM7dWRoW3BvcysrXT0oVUlOVDgpV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfTFM7dWRoW3BvcwogKytdPShVSU5UOCljb25zdF9oZWFkZXItPnUubmF0X2xhbmdfbHMubmF0X2xhbmdfaWQ7cmV0dXJuIHBvczt9aW50IAogd21zX3RzX2VuY29kZV91ZGhfb3RoZXIoVUlOVDgqdWRoLHdtc191ZGhfaWRfZV90eXBlIGhlYWRlcl9pZCl7aW50IGk9Ci0oMHg1NzErNzYwMi0weDIzMjMpO2ludCBwb3M9KDB4N2ErODA3My0weDIwMDMpO3VkaFtwb3MrK109KFVJTlQ4KWNvbnN0X2hlYWRlci0+dQotLm90aGVyLmhlYWRlcl9pZDt1ZGhbcG9zKytdPWNvbnN0X2hlYWRlci0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2ZvcihpPQotKDB4ZjlmKzE4MTQtMHgxNmI1KTtpPGNvbnN0X2hlYWRlci0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2krKyl7dWRoW3BvcysrXT0KKygweDEzOTYrNDcyLTB4MTU2ZSk7aW50IHBvcz0oMHgxNTYzKzIxNDAtMHgxZGJmKTt1ZGhbcG9zKytdPShVSU5UOCljb25zdF9oZWFkZXIKKy0+dS5vdGhlci5oZWFkZXJfaWQ7dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPnUub3RoZXIuaGVhZGVyX2xlbmd0aDtmb3IoaT0KKygweDc3Nys4NC0weDdjYik7aTxjb25zdF9oZWFkZXItPnUub3RoZXIuaGVhZGVyX2xlbmd0aDtpKyspe3VkaFtwb3MrK109CiBjb25zdF9oZWFkZXItPnUub3RoZXIuZGF0YVtpXTt9cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2VuY29kZV91c2VyX2RhdGFfaGVhZGVyKAogVUlOVDggbnVtX2hlYWRlcnMsY29uc3Qgd21zX3VkaF9zX3R5cGUqaGVhZGVycyxVSU5UOCpkYXRhKXtpbnQgaSxwb3M9Ci0oMHhlZisxMjU1LTB4NWQ2KTtpZihudW1faGVhZGVycz09KDB4OTU5KzE1OTAtMHhmOGYpKXJldHVybigweDViMys2ODgyLTB4MjA5NSk7Ci0rK3Bvcztmb3IoaT0oMHhmNzcrNS0weGY3Yyk7aTxXTVNfTUFYX1VEX0hFQURFUlMmJmk8bnVtX2hlYWRlcnM7aSsrKXsKLWNvbnN0X2hlYWRlcj0maGVhZGVyc1tpXTtzd2l0Y2goY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODoKLXBvcys9d21zX3RzX2VuY29kZV91ZGhfY29uY2F0XzgoZGF0YStwb3MpO2JyZWFrO2Nhc2UgV01TX1VESF9DT05DQVRfMTY6cG9zKz0KLXdtc190c19lbmNvZGVfdWRoX2NvbmNhdDE2KGRhdGErcG9zKTticmVhazsKLSNpZiAoMHgxMDlkKzQyNTctMHgyMTNlKQ0KKygweDRlYis4NDAwLTB4MjViYik7aWYobnVtX2hlYWRlcnM9PSgweDE4NGErMjc4NC0weDIzMmEpKXJldHVybgorKDB4ODJiKzMzODctMHgxNTY2KTsrK3Bvcztmb3IoaT0oMHg0NTgrMTQ2Mi0weGEwZSk7aTxXTVNfTUFYX1VEX0hFQURFUlMmJmk8CitudW1faGVhZGVycztpKyspe2NvbnN0X2hlYWRlcj0maGVhZGVyc1tpXTtzd2l0Y2goY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpe2Nhc2UgCitXTVNfVURIX0NPTkNBVF84OnBvcys9d21zX3RzX2VuY29kZV91ZGhfY29uY2F0XzgoZGF0YStwb3MpO2JyZWFrO2Nhc2UgCitXTVNfVURIX0NPTkNBVF8xNjpwb3MrPXdtc190c19lbmNvZGVfdWRoX2NvbmNhdDE2KGRhdGErcG9zKTticmVhazsKKyNpZiAoMHg0YjIrMjQ1My0weGU0NykNCiBjYXNlIFdNU19VREhfU1BFQ0lBTF9TTTpwb3MrPXdtc190c19lbmNvZGVfdWRoX3NwZWNpYWxfc20oZGF0YStwb3MpO2JyZWFrO2Nhc2UgCiBXTVNfVURIX1BPUlRfODpwb3MrPXdtc190c19lbmNvZGVfdWRoX3BvcnRfOChkYXRhK3Bvcyk7YnJlYWs7Y2FzZSAKIFdNU19VREhfUE9SVF8xNjpwb3MrPXdtc190c19lbmNvZGVfdWRoX3BvcnQxNihkYXRhK3Bvcyk7YnJlYWs7Y2FzZSAKQEAgLTEzMTUsNDkgKzEzMTksNDkgQEAKIGNhc2UgV01TX1VESF9OQVRfTEFOR19TUzpwb3MrPXdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX3NzKGRhdGErcG9zKTticmVhaztjYXNlCiAgV01TX1VESF9OQVRfTEFOR19MUzpwb3MrPXdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX2xzKGRhdGErcG9zKTticmVhaztkZWZhdWx0OgogcG9zKz13bXNfdHNfZW5jb2RlX3VkaF9vdGhlcihkYXRhK3Bvcyxjb25zdF9oZWFkZXItPmhlYWRlcl9pZCk7fX1kYXRhWwotKDB4NjIwKzE0MTAtMHhiYTIpXT0oVUlOVDgpKHBvcy0oMHhlYWErMzUxMi0weDFjNjEpKTtyZXR1cm4oKFVJTlQ4KShwb3MtCi0oMHgxNDU3KzQyMDctMHgyNGM1KSkpO31VSU5UOCB3bXNfdHNfZW5jb2RlX2d3X3VzZXJfZGF0YShjb25zdCB3bXNfZ3dfZGNzX3NfdHlwZQotKmRjcyxjb25zdCB3bXNfZ3dfdXNlcl9kYXRhX3NfdHlwZSp1c2VyX2RhdGEsVUlOVDgqZGF0YSl7VUlOVDE2IGkscG9zPQotKDB4M2Y1KzkzMS0weDc5OCk7VUlOVDggZmlsbF9iaXRzPSgweDczYisyNjc5LTB4MTFiMik7VUlOVDE2IHRvdGFsX2JpdHNfb2NjdXBpZWQKLTtVSU5UOCB1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aDtVSU5UMTYgdXNlcl9kYXRhX2xlbmd0aDtkYXRhW3Bvc109KFVJTlQ4KQotdXNlcl9kYXRhLT5zbV9sZW47cG9zKys7aWYoZGNzLT5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKAotdXNlcl9kYXRhLT5udW1faGVhZGVycz4oMHgzZWIrODQ1MS0weDI0ZWUpKXtpZigKLXdtc190c19jb21wdXRlX3VzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKHVzZXJfZGF0YS0+bnVtX2hlYWRlcnMsdXNlcl9kYXRhLT5oZWFkZXJzCi0pPD1XTVNfU01TX1VETF9NQVhfOF9CSVQpe3VzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPXdtc190c19lbmNvZGVfdXNlcl9kYXRhX2hlYWRlcgotKHVzZXJfZGF0YS0+bnVtX2hlYWRlcnMsdXNlcl9kYXRhLT5oZWFkZXJzLGRhdGErcG9zKTtwb3MrPQotdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4MTdlNisxOTA4LTB4MWY1OSk7dG90YWxfYml0c19vY2N1cGllZD0oCi11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHgxZDI5KzEyMTQtMHgyMWU2KSkqKDB4MTJhNCszMzI5LTB4MWY5ZCk7ZmlsbF9iaXRzPSgKLXRvdGFsX2JpdHNfb2NjdXBpZWQlKDB4MTA5NCsxODYtMHgxMTQ3KSk7aWYoZmlsbF9iaXRzIT0oMHgyNmQ3KzU0LTB4MjcwZCkpewotZmlsbF9iaXRzPSgweDExZGErMjM4OC0weDFiMjcpLWZpbGxfYml0czt9dXNlcl9kYXRhX2xlbmd0aD0odG90YWxfYml0c19vY2N1cGllZCsKLWZpbGxfYml0cysodXNlcl9kYXRhLT5zbV9sZW4qKDB4MjA5MSsxNjAtMHgyMTJhKSkpLygweDEyMTIrODU0LTB4MTU2MSk7ZGF0YVsKLSgweDFiNzgrMTU5Ni0weDIxYjQpXT0oVUlOVDgpdXNlcl9kYXRhX2xlbmd0aDtkYXRhWygweDEwOSsxMDkzLTB4NTRkKV09CisoMHgzMDQrMzcwLTB4NDc2KV09KFVJTlQ4KShwb3MtKDB4MTE5MisxNjItMHgxMjMzKSk7cmV0dXJuKChVSU5UOCkocG9zLQorKDB4NjQ1KzE0NDctMHhiZWIpKSk7fVVJTlQ4IHdtc190c19lbmNvZGVfZ3dfdXNlcl9kYXRhKGNvbnN0IHdtc19nd19kY3Nfc190eXBlKgorZGNzLGNvbnN0IHdtc19nd191c2VyX2RhdGFfc190eXBlKnVzZXJfZGF0YSxVSU5UOCpkYXRhKXtVSU5UMTYgaSxwb3M9CisoMHgxNzcxKzEwMTYtMHgxYjY5KTtVSU5UOCBmaWxsX2JpdHM9KDB4NWViKzUzNjQtMHgxYWRmKTtVSU5UMTYgCit0b3RhbF9iaXRzX29jY3VwaWVkO1VJTlQ4IHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoO1VJTlQxNiB1c2VyX2RhdGFfbGVuZ3RoO2RhdGFbCitwb3NdPShVSU5UOCl1c2VyX2RhdGEtPnNtX2xlbjtwb3MrKztpZihkY3MtPmFscGhhYmV0PT0KK1dNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUKXtpZih1c2VyX2RhdGEtPm51bV9oZWFkZXJzPigweGU3Yis2MDUxLTB4MjYxZSkpe2lmCisod21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgodXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPgoraGVhZGVycyk8PVdNU19TTVNfVURMX01BWF84X0JJVCl7dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg9Cit3bXNfdHNfZW5jb2RlX3VzZXJfZGF0YV9oZWFkZXIodXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPmhlYWRlcnMsZGF0YSsKK3Bvcyk7cG9zKz11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHg5NjQrNDAxNy0weDE5MTQpO3RvdGFsX2JpdHNfb2NjdXBpZWQ9KAordXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4ODE5KzczMjEtMHgyNGIxKSkqKDB4Y2FhKzUzMzQtMHgyMTc4KTtmaWxsX2JpdHM9KAordG90YWxfYml0c19vY2N1cGllZCUoMHg2Y2QrMjAwOC0weGU5ZSkpO2lmKGZpbGxfYml0cyE9KDB4NDkyKzcyNTMtMHgyMGU3KSl7CitmaWxsX2JpdHM9KDB4ZTQxKzQ3MTUtMHgyMGE1KS1maWxsX2JpdHM7fXVzZXJfZGF0YV9sZW5ndGg9KHRvdGFsX2JpdHNfb2NjdXBpZWQrCitmaWxsX2JpdHMrKHVzZXJfZGF0YS0+c21fbGVuKigweDY0Kzk1MzAtMHgyNTk3KSkpLygweDIyMTkrNTQtMHgyMjQ4KTtkYXRhWworKDB4MThjNisyMjIyLTB4MjE3NCldPShVSU5UOCl1c2VyX2RhdGFfbGVuZ3RoO2RhdGFbKDB4OTg1KzQxNDMtMHgxOWIzKV09CiB1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aDt9ZWxzZXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHgyMFx4NTVceDczXHg2NVx4NzJceDIwXHg0NFx4NjFceDc0XHg2MVx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0NVx4NzhceDYzXHg2NVx4NjVceDY0XHg3M1x4MjBceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4MjBceDJkXHgyMFx4NTNceDZiXHg2OVx4NzBceDcwXHg2OVx4NmVceDY3XHgyMFx4NTVceDQ0XHg0OCIKICk7fX1pPXdtc190c19wYWNrX2d3XzdfYml0X2NoYXJzKHVzZXJfZGF0YS0+c21fZGF0YSx1c2VyX2RhdGEtPnNtX2xlbixmaWxsX2JpdHMsCiAoVUlOVDE2KShXTVNfTUFYX0xFTi1wb3MpLCZkYXRhW3Bvc10pO3Bvcys9aTt9ZWxzZXtpZih1c2VyX2RhdGEtPm51bV9oZWFkZXJzPgotKDB4ZmRhKzUzMjItMHgyNGE0KSl7aWYod21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgodXNlcl9kYXRhLT4KKygweDE0MTQrNDY2My0weDI2NGIpKXtpZih3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCh1c2VyX2RhdGEtPgogbnVtX2hlYWRlcnMsdXNlcl9kYXRhLT5oZWFkZXJzKTw9V01TX1NNU19VRExfTUFYXzhfQklUKXt1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD0KIHdtc190c19lbmNvZGVfdXNlcl9kYXRhX2hlYWRlcih1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+aGVhZGVycyxkYXRhKwotcG9zKTtkYXRhWygweDFkYmIrMTc2NS0weDI0YTApXT0oVUlOVDgpKHVzZXJfZGF0YS0+c21fbGVuKwotdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4MWNhMCsxMDQ2LTB4MjBiNSkpO3Bvcys9dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrCi0oMHgxNDc5KzI2OTAtMHgxZWZhKTt9ZWxzZXthdF9wcmludChMT0dfREVCVUcsCitwb3MpO2RhdGFbKDB4YTM5KzQ2MjEtMHgxYzQ2KV09KFVJTlQ4KSh1c2VyX2RhdGEtPnNtX2xlbit1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aAorKygweDEzN2QrMTAwNC0weDE3NjgpKTtwb3MrPXVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDExZGIrNDc3OS0weDI0ODUpO31lbHNleworYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4MjBceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NDVceDc4XHg2M1x4NjVceDY1XHg2NFx4NzNceDIwXHg0M1x4NjFceDcwXHg2MVx4NjNceDY5XHg3NFx4NzlceDIwXHgyZFx4MjBceDUzXHg2Ylx4NjlceDcwXHg3MFx4NjlceDZlXHg2N1x4MjBceDU1XHg0NFx4NDgiCiApO319bWVtY3B5KCZkYXRhW3Bvc10sdXNlcl9kYXRhLT5zbV9kYXRhLHVzZXJfZGF0YS0+c21fbGVuKTtwb3MrPXVzZXJfZGF0YS0+CiBzbV9sZW47fXJldHVybihVSU5UOClwb3M7fXdtc19zdGF0dXNfZV90eXBlIHdtc190c19lbmNvZGVfZGVsaXZlcihjb25zdCAKIHdtc19nd19kZWxpdmVyX3NfdHlwZSpkZWxpdmVyLFRfelVmaVNtc19SYXdUc0RhdGEqcmF3X3RzX2RhdGFfcHRyKXsKLXdtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO1VJTlQ4KmRhdGE7VUlOVDggcG9zPSgweGNiZiszMjExLTB4MTk0YSksaTtpZigKK3dtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO1VJTlQ4KmRhdGE7VUlOVDggcG9zPSgweDJmNCszNDM4LTB4MTA2MiksaTtpZigKIGRlbGl2ZXI9PU5VTEx8fHJhd190c19kYXRhX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjRceDY1XHg2Y1x4NjlceDc2XHg2NVx4NzJceDIxIgogKTtyZXR1cm4gV01TX05VTExfUFRSX1M7fWRhdGE9cmF3X3RzX2RhdGFfcHRyLT5kYXRhOyh2b2lkKW1lbXNldChkYXRhLAotKDB4MTVjMisyODUwLTB4MjBlNCksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHgxYTgwKzIxMzMtMHgyMmQ1KTtkYXRhW3Bvc118PQotZGVsaXZlci0+bW9yZT8oMHgxODA0KzEyODMtMHgxZDA3KTooMHgxMDA3KzU2MTItMHgyNWVmKTtkYXRhW3Bvc118PWRlbGl2ZXItPgotc3RhdHVzX3JlcG9ydF9lbmFibGVkPygweDU0NyszMjIyLTB4MTFiZCk6KDB4OGQ1Kzc2LTB4OTIxKTtkYXRhW3Bvc118PWRlbGl2ZXItPgotdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PygweDczMCs3NDU5LTB4MjQxMyk6KDB4MTdhZCsyNTE0LTB4MjE3Zik7ZGF0YVtwb3NdfD0KLWRlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD8oMHhiNzcrNTExMC0weDFlZWQpOigweDhmMis3MjA2LTB4MjUxOCk7cG9zKys7aT0KLXdtc190c19lbmNvZGVfYWRkcmVzcygmZGVsaXZlci0+YWRkcmVzcywmZGF0YVtwb3NdKTtpZihpPT0oMHg1YmMrMjI5NS0weGViMykpewotcmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7ZGF0YVtwb3NdPWRlbGl2ZXItPnBpZDtwb3MrKztwb3MrPQorKDB4NDFmKzg2ODktMHgyNjEwKSxXTVNfTUFYX0xFTik7ZGF0YVtwb3NdPSgweDU0OSszMzAxLTB4MTIyZSk7ZGF0YVtwb3NdfD0KK2RlbGl2ZXItPm1vcmU/KDB4MjMyNysxOTAtMHgyM2U1KTooMHgxYWVkKzE5MTctMHgyMjY2KTtkYXRhW3Bvc118PWRlbGl2ZXItPgorc3RhdHVzX3JlcG9ydF9lbmFibGVkPygweDE2OWErMjU0MC0weDIwNjYpOigweDQxYys3MjU2LTB4MjA3NCk7ZGF0YVtwb3NdfD0KK2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHgxNzQ2KzMzNC0weDE4NTQpOigweDc2MSs2MTAwLTB4MWYzNSk7ZGF0YVsKK3Bvc118PWRlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD8oMHgxNjAxKzE0MzItMHgxYjE5KTooMHgyM2E2Kzc4My0weDI2YjUpO3BvcysrCis7aT13bXNfdHNfZW5jb2RlX2FkZHJlc3MoJmRlbGl2ZXItPmFkZHJlc3MsJmRhdGFbcG9zXSk7aWYoaT09KDB4ZWFkKzUwODUtMHgyMjhhKQorKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9TSVpFX1M7fXBvcys9aTtkYXRhW3Bvc109ZGVsaXZlci0+cGlkO3BvcysrO3Bvcys9CiB3bXNfdHNfZW5jb2RlX2RjcygmZGVsaXZlci0+ZGNzLGRhdGErcG9zKTtpPXdtc190c19lbmNvZGVfdGltZXN0YW1wKCZkZWxpdmVyLT4KLXRpbWVzdGFtcCxkYXRhK3Bvcyk7aWYoaT09KDB4OTMrOTc5NS0weDI2ZDYpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO30KK3RpbWVzdGFtcCxkYXRhK3Bvcyk7aWYoaT09KDB4OTIxKzE3MDYtMHhmY2IpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO30KIHBvcys9aTtpZih3bXNfdHNfY29tcHV0ZV9nd191c2VyX2RhdGFfbGVuZ3RoKCZkZWxpdmVyLT5kY3MsJmRlbGl2ZXItPnVzZXJfZGF0YSk+CiBXTVNfU01TX1VETF9NQVhfOF9CSVQpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OSIKQEAgLTEzNjUsNTYgKzEzNjksNTYgQEAKIGRjcywmZGVsaXZlci0+dXNlcl9kYXRhLGRhdGErcG9zKTtwb3MrPWk7fXJhd190c19kYXRhX3B0ci0+dHBkdV90eXBlPQogV01TX1RQRFVfREVMSVZFUjtyYXdfdHNfZGF0YV9wdHItPmxlbj1wb3M7cmV0dXJuIHN0O31VSU5UOCAKIHdtc190c19lbmNvZGVfcmVsYXRpdmVfdGltZShjb25zdCB3bXNfdGltZXN0YW1wX3NfdHlwZSp0aW1lc3RhbXApe3VpbnQzMiBpO1VJTlQ4Ci0gdj0oMHg4Y2IrNDgwOC0weDFiOTMpLGo7aWYodGltZXN0YW1wIT1OVUxMKXtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT4KKyB2PSgweDFlMzUrMTYzLTB4MWVkOCksajtpZih0aW1lc3RhbXAhPU5VTEwpe2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPgogeWVhciwmaikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU5XHg2NVx4NjFceDcyXHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IixqCi0pO31pPWoqKDB4MzRkKzUzODMtMHgxNmU3KTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5tb250aCwmaikpe2F0X3ByaW50KAorKTt9aT1qKigweGQwNisyMjk5LTB4MTQ5NCk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bW9udGgsJmopKXthdF9wcmludCgKIExPR19ERUJVRywKICJceDRkXHg2Zlx4NmVceDc0XHg2OFx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIKLSxqKTt9aT1pK2oqKDB4NTUxKzI5OTYtMHgxMGU3KTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5kYXksJmopKXsKKyxqKTt9aT1pK2oqKDB4MTY2KzUwOTctMHgxNTMxKTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5kYXksJmopKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2MVx4NzlceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiLGopO31pCi0rPWo7aWYoaT4oMHg2MGMrNDk4Ny0weDE5NjkpKXt2PShVSU5UOCkoKGkrKDB4MTUxZisxMDA1LTB4MTkwNikpLwotKDB4ODA5KzQ3OTUtMHgxYWJkKSsoMHgxNDNmKzIwMDUtMHgxYjU0KSk7fWVsc2UgaWYoaT49KDB4NDE2KzQxNjctMHgxNDVjKSl7dj0oCi1VSU5UOCkoaSsoMHgxODU4KzIyOTYtMHgyMGFhKSk7fWVsc2V7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+ZGF5LCZqKSl7CisrPWo7aWYoaT4oMHg4MDIrNDAzNy0weDE3YTkpKXt2PShVSU5UOCkoKGkrKDB4NTk1KzY1MDktMHgxZWZjKSkvCisoMHhiOTkrNTIxNi0weDFmZjIpKygweDE4NmYrMjI3MS0weDIwOGUpKTt9ZWxzZSBpZihpPj0oMHhhZDkrNTQ0Mi0weDIwMWEpKXt2PSgKK1VJTlQ4KShpKygweDUyNyszNjQwLTB4MTJiOSkpO31lbHNle2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPmRheSwmaikpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDYxXHg3OVx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIsaik7fWkKLT1qKigweDIxYjYrMTQ4LTB4MjIzMikqKDB4YTMwKzIxMy0weGFjOSk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+aG91ciwmCi1qKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorPWoqKDB4MTFkMSs1MTQtMHgxM2JiKSooMHgxMzIzKzE5NzMtMHgxYTljKTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT4KK2hvdXIsJmopKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0OFx4NmZceDc1XHg3Mlx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIsagotKTt9aT1pK2oqKDB4MWIxMisyNDYyLTB4MjQ3NCk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bWludXRlLCZqKSl7CispO31pPWkraiooMHgxNWI3KzMwNTgtMHgyMTZkKTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5taW51dGUsJmopKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7fWkrPWo7aWYoaT4oMHgxMDc1KzEzODEtMHgxNWNlKSooMHhkNmErMzM2LTB4ZTdlKSl7dj0oVUlOVDgpKChpLSgoCi0oMHhmYzErNTIwMC0weDI0MDUpKigweDlkYys2OTQ4LTB4MjRjNCkpKygweDE0OWYrMTAxMS0weDE4NzUpKSkvCi0oMHhhYis5MzY2LTB4MjUyMykrKDB4YWYxKzE3MzctMHgxMTJiKSk7fWVsc2V7dj0oVUlOVDgpKChpKygweGVhYysxNjE0LTB4MTRmNikpLwotKDB4NWI2KzY4NjktMHgyMDg2KS0oMHgyNTcrMzg4OS0weDExODcpKTt9fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKKyxqKTt9aSs9ajtpZihpPigweDEyOWErMjMzMi0weDFiYWEpKigweDFlOCs1ODAtMHgzZjApKXt2PShVSU5UOCkoKGktKCgKKygweDc0OCs5NzMtMHhiMDkpKigweDE2Yys0MjE3LTB4MTFhOSkpKygweDNhMys4NzM4LTB4MjVhOCkpKS8KKygweDE1MjgrMzYyOC0weDIzMzYpKygweDJlNys3MDM2LTB4MWRkNCkpO31lbHNle3Y9KFVJTlQ4KSgoaSsoMHg1NDMrMTk5NS0weGQwYSkpCisvKDB4MWFkKzUzMzctMHgxNjgxKS0oMHgxNmY2KzI0MzUtMHgyMDc4KSk7fX19ZWxzZXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDVmXHg3Mlx4NjVceDZjXHg2MVx4NzRceDY5XHg3Nlx4NjVceDVmXHg3NFx4NjlceDZkXHg2NSIKICk7fXJldHVybiB2O31VSU5UOCB3bXNfdHNfZW5jb2RlX2d3X3ZhbGlkaXR5KGNvbnN0IHdtc19nd192YWxpZGl0eV9zX3R5cGUqCi12YWxpZGl0eSxVSU5UOCpkYXRhKXtVSU5UOCBpLHBvcz0oMHgxMTQyKzUwNTctMHgyNTAzKTtzd2l0Y2godmFsaWRpdHktPmZvcm1hdCl7Cit2YWxpZGl0eSxVSU5UOCpkYXRhKXtVSU5UOCBpLHBvcz0oMHhlMTIrMTgyNi0weDE1MzQpO3N3aXRjaCh2YWxpZGl0eS0+Zm9ybWF0KXsKIGNhc2UgV01TX0dXX1ZBTElESVRZX05PTkU6YnJlYWs7Y2FzZSBXTVNfR1dfVkFMSURJVFlfUkVMQVRJVkU6ZGF0YVtwb3NdPQogd21zX3RzX2VuY29kZV9yZWxhdGl2ZV90aW1lKCZ2YWxpZGl0eS0+dS50aW1lKTtwb3MrKzticmVhaztjYXNlIAogV01TX0dXX1ZBTElESVRZX0FCU09MVVRFOmk9d21zX3RzX2VuY29kZV90aW1lc3RhbXAoJnZhbGlkaXR5LT51LnRpbWUsZGF0YStwb3MpOwotaWYoaT09KDB4MWYwZisxMzU5LTB4MjQ1ZSkpe2F0X3ByaW50KExPR19ERUJVRywKK2lmKGk9PSgweGQ1Mys1MjQzLTB4MjFjZSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDQ1XHg3Mlx4NzJceDZmXHg3Mlx4MjBceDc3XHg2OFx4NjlceDZjXHg2NVx4MjBceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjlceDZlXHg2N1x4MjBceDQxXHg2Mlx4NzNceDZmXHg2Y1x4NzVceDc0XHg2NVx4MjBceDU2XHg2MVx4NmNceDY5XHg2NFx4NjlceDc0XHg3OVx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzAiCiApO31wb3MrPWk7YnJlYWs7Y2FzZSBXTVNfR1dfVkFMSURJVFlfRU5IQU5DRUQ6YnJlYWs7ZGVmYXVsdDpicmVhazt9cmV0dXJuIHBvczt9CiB3bXNfc3RhdHVzX2VfdHlwZSB3bXNfdHNfZW5jb2RlX3N1Ym1pdChjb25zdCB3bXNfZ3dfc3VibWl0X3NfdHlwZSpzdWJtaXQsCiBUX3pVZmlTbXNfUmF3VHNEYXRhKnJhd190c19kYXRhX3B0cil7d21zX3N0YXR1c19lX3R5cGUgc3Q9V01TX09LX1M7VUlOVDgqZGF0YTsKLVVJTlQ4IHBvcz0oMHgxYjkzKzIzNzktMHgyNGRlKSxpO2lmKHN1Ym1pdD09TlVMTHx8cmF3X3RzX2RhdGFfcHRyPT1OVUxMKXsKK1VJTlQ4IHBvcz0oMHgyMDZjKzE0MTItMHgyNWYwKSxpO2lmKHN1Ym1pdD09TlVMTHx8cmF3X3RzX2RhdGFfcHRyPT1OVUxMKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjVceDZlXHg2M1x4NmZceDY0XHg2NVx4NWZceDczXHg3NVx4NjJceDZkXHg2OVx4NzRceDIxIgogKTtyZXR1cm4gV01TX05VTExfUFRSX1M7fWRhdGE9cmF3X3RzX2RhdGFfcHRyLT5kYXRhOyh2b2lkKW1lbXNldChkYXRhLAotKDB4MTFkKzg4MzAtMHgyMzliKSxXTVNfTUFYX0xFTik7ZGF0YVtwb3NdPSgweDRmMys1ODU2LTB4MWJkMik7ZGF0YVtwb3NdfD1zdWJtaXQKLS0+cmVqZWN0X2R1cGxpY2F0ZXM/KDB4MTFlNCsxNzI1LTB4MTg5ZCk6KDB4NmYrOTMzNy0weDI0ZTgpO2lmKHN1Ym1pdC0+dmFsaWRpdHkuCi1mb3JtYXQ+KDB4NmU3KzIyOTQtMHhmZGEpKXtyZXR1cm4gc3Q9V01TX0lOVkFMSURfVkFMSURJVFlfRk9STUFUX1M7fWRhdGFbcG9zXXw9Ci1zdWJtaXQtPnZhbGlkaXR5LmZvcm1hdDw8KDB4OTIyKzE5NS0weDllMik7ZGF0YVtwb3NdfD1zdWJtaXQtPgotc3RhdHVzX3JlcG9ydF9lbmFibGVkPygweDE0OGErMzg0NC0weDIzNmUpOigweDEzMzcrNDc2My0weDI1ZDIpO2RhdGFbcG9zXXw9Ci1zdWJtaXQtPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHgxYzk3KzM4MS0weDFkZDQpOigweDE4Mis1MTc0LTB4MTViOCk7ZGF0YVsKLXBvc118PXN1Ym1pdC0+cmVwbHlfcGF0aF9wcmVzZW50PygweDM5MysxNDE3LTB4ODljKTooMHgxN2YwKzYwLTB4MTgyYyk7cG9zKys7Ci1kYXRhW3Bvc109KFVJTlQ4KXN1Ym1pdC0+bWVzc2FnZV9yZWZlcmVuY2U7cG9zKys7aT13bXNfdHNfZW5jb2RlX2FkZHJlc3MoJnN1Ym1pdAotLT5hZGRyZXNzLCZkYXRhW3Bvc10pO2lmKGk9PSgweDYwOSs2NTgyLTB4MWZiZikpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzsKLX1wb3MrPWk7ZGF0YVtwb3NdPXN1Ym1pdC0+cGlkO3BvcysrO3Bvcys9d21zX3RzX2VuY29kZV9kY3MoJnN1Ym1pdC0+ZGNzLGRhdGErcG9zCi0pO3Bvcys9d21zX3RzX2VuY29kZV9nd192YWxpZGl0eSgmc3VibWl0LT52YWxpZGl0eSxkYXRhK3Bvcyk7aWYoCisoMHgxNDQyKzM1OTMtMHgyMjRiKSxXTVNfTUFYX0xFTik7ZGF0YVtwb3NdPSgweDc3OSs1MTUyLTB4MWI5OCk7ZGF0YVtwb3NdfD0KK3N1Ym1pdC0+cmVqZWN0X2R1cGxpY2F0ZXM/KDB4MTA1OSs1NDA1LTB4MjU3Mik6KDB4MTYyYisyMS0weDE2NDApO2lmKHN1Ym1pdC0+Cit2YWxpZGl0eS5mb3JtYXQ+KDB4OGJhKzUxODQtMHgxY2Y3KSl7cmV0dXJuIHN0PVdNU19JTlZBTElEX1ZBTElESVRZX0ZPUk1BVF9TO30KK2RhdGFbcG9zXXw9c3VibWl0LT52YWxpZGl0eS5mb3JtYXQ8PCgweGVmZCs1OTAxLTB4MjYwNyk7ZGF0YVtwb3NdfD1zdWJtaXQtPgorc3RhdHVzX3JlcG9ydF9lbmFibGVkPygweDc2NSszMTItMHg4N2QpOigweDlhZCs1MzIzLTB4MWU3OCk7ZGF0YVtwb3NdfD1zdWJtaXQtPgordXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PygweDE5OCs5MTQyLTB4MjUwZSk6KDB4NTE5KzQxMjQtMHgxNTM1KTtkYXRhW3Bvc118PQorc3VibWl0LT5yZXBseV9wYXRoX3ByZXNlbnQ/KDB4MTAyNCsyNzQ2LTB4MWE1ZSk6KDB4YmNjKzEyODAtMHgxMGNjKTtwb3MrKztkYXRhWworcG9zXT0oVUlOVDgpc3VibWl0LT5tZXNzYWdlX3JlZmVyZW5jZTtwb3MrKztpPXdtc190c19lbmNvZGVfYWRkcmVzcygmc3VibWl0LT4KK2FkZHJlc3MsJmRhdGFbcG9zXSk7aWYoaT09KDB4OThmKzY1MjAtMHgyMzA3KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO30KK3Bvcys9aTtkYXRhW3Bvc109c3VibWl0LT5waWQ7cG9zKys7cG9zKz13bXNfdHNfZW5jb2RlX2Rjcygmc3VibWl0LT5kY3MsZGF0YStwb3MpCis7cG9zKz13bXNfdHNfZW5jb2RlX2d3X3ZhbGlkaXR5KCZzdWJtaXQtPnZhbGlkaXR5LGRhdGErcG9zKTtpZigKIHdtc190c19jb21wdXRlX2d3X3VzZXJfZGF0YV9sZW5ndGgoJnN1Ym1pdC0+ZGNzLCZzdWJtaXQtPnVzZXJfZGF0YSk+CiBXTVNfU01TX1VETF9NQVhfOF9CSVQpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OSIKQEAgLTE0MjMsMjEgKzE0MjcsMjEgQEAKIFdNU19UUERVX1NVQk1JVDtyYXdfdHNfZGF0YV9wdHItPmxlbj1wb3M7cmV0dXJuIHN0O313bXNfc3RhdHVzX2VfdHlwZSAKIHdtc190c19lbmNvZGVfc3RhdHVzX3JlcG9ydChjb25zdCB3bXNfZ3dfc3RhdHVzX3JlcG9ydF9zX3R5cGUqc3RhdHVzX3JlcG9ydCwKIFRfelVmaVNtc19SYXdUc0RhdGEqcmF3X3RzX2RhdGFfcHRyKXt3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUztVSU5UOCpkYXRhOwotVUlOVDggcG9zPSgweDEwNys1MTU3LTB4MTUyYyksaTtpZihzdGF0dXNfcmVwb3J0PT1OVUxMfHxyYXdfdHNfZGF0YV9wdHI9PU5VTEwpeworVUlOVDggcG9zPSgweDQ2MCs0NTM5LTB4MTYxYiksaTtpZihzdGF0dXNfcmVwb3J0PT1OVUxMfHxyYXdfdHNfZGF0YV9wdHI9PU5VTEwpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzNceDc0XHg2MVx4NzRceDc1XHg3M1x4NWZceDcyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDIxIgogKTtyZXR1cm4gV01TX05VTExfUFRSX1M7fWRhdGE9cmF3X3RzX2RhdGFfcHRyLT5kYXRhOyh2b2lkKW1lbXNldChkYXRhLAotKDB4MWI0NyszMzUtMHgxYzk2KSxXTVNfTUFYX0xFTik7ZGF0YVtwb3NdPSgweDg3KzE0OTEtMHg2NGEpO2RhdGFbcG9zXXw9Ci1zdGF0dXNfcmVwb3J0LT5tb3JlPygweDI4YSs2ODUtMHg1MzcpOigweDk5NiszNTM0LTB4MTc2MCk7ZGF0YVtwb3NdfD0KLXN0YXR1c19yZXBvcnQtPnN0YXR1c19yZXBvcnRfcXVhbGlmaWVyPygweDI3YisyMzE1LTB4YjY2KTooMHhiMTMrMTI2OS0weDEwMDgpOwotZGF0YVtwb3NdfD1zdGF0dXNfcmVwb3J0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ/KDB4MTMwMyszNzctMHgxNDNjKToKLSgweDI4Mys4OTEyLTB4MjU1Myk7cG9zKys7ZGF0YVtwb3NdPShVSU5UOClzdGF0dXNfcmVwb3J0LT5tZXNzYWdlX3JlZmVyZW5jZTtwb3MKLSsrO2k9d21zX3RzX2VuY29kZV9hZGRyZXNzKCZzdGF0dXNfcmVwb3J0LT5hZGRyZXNzLCZkYXRhW3Bvc10pO2lmKGk9PQotKDB4ZDQzKzQ5MTctMHgyMDc4KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7aT0KKygweDExMmIrMjM1LTB4MTIxNiksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHgxZDZkKzQ0LTB4MWQ4OSk7ZGF0YVtwb3NdfD0KK3N0YXR1c19yZXBvcnQtPm1vcmU/KDB4MWE5YysyMDg2LTB4MjJjMik6KDB4MTZmOSsxOTI4LTB4MWU3ZCk7ZGF0YVtwb3NdfD0KK3N0YXR1c19yZXBvcnQtPnN0YXR1c19yZXBvcnRfcXVhbGlmaWVyPygweDhkOSszMTQ5LTB4MTUwNik6KDB4MTBmMysyMTktMHgxMWNlKTsKK2RhdGFbcG9zXXw9c3RhdHVzX3JlcG9ydC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PygweDQyYisxNzkwLTB4YWU5KToKKygweDdhNisxODk1LTB4ZjBkKTtwb3MrKztkYXRhW3Bvc109KFVJTlQ4KXN0YXR1c19yZXBvcnQtPm1lc3NhZ2VfcmVmZXJlbmNlO3BvcysrCis7aT13bXNfdHNfZW5jb2RlX2FkZHJlc3MoJnN0YXR1c19yZXBvcnQtPmFkZHJlc3MsJmRhdGFbcG9zXSk7aWYoaT09CisoMHgxMSs0MDk2LTB4MTAxMSkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzt9cG9zKz1pO2k9CiB3bXNfdHNfZW5jb2RlX3RpbWVzdGFtcCgmc3RhdHVzX3JlcG9ydC0+dGltZXN0YW1wLGRhdGErcG9zKTtpZihpPT0KLSgweDE4MDMrMTQ2Ni0weDFkYmQpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7aT0KKygweDlhKzgzNTktMHgyMTQxKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2k9CiB3bXNfdHNfZW5jb2RlX3RpbWVzdGFtcCgmc3RhdHVzX3JlcG9ydC0+ZGlzY2hhcmdlX3RpbWUsZGF0YStwb3MpO2lmKGk9PQotKDB4NDk5KzYzNzUtMHgxZDgwKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2RhdGFbcG9zXT0KKygweGMzNis1NzI3LTB4MjI5NSkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtkYXRhW3Bvc109CiBzdGF0dXNfcmVwb3J0LT50cF9zdGF0dXM7cG9zKys7ZGF0YVtwb3NdPShVSU5UOClzdGF0dXNfcmVwb3J0LT5tYXNrO3BvcysrO2lmKAogc3RhdHVzX3JlcG9ydC0+bWFzayZXTVNfVFBEVV9NQVNLX1BJRCl7ZGF0YVtwb3NdPXN0YXR1c19yZXBvcnQtPnBpZDtwb3MrKzt9aWYoCiBzdGF0dXNfcmVwb3J0LT5tYXNrJldNU19UUERVX01BU0tfRENTKXtwb3MrPXdtc190c19lbmNvZGVfZGNzKCZzdGF0dXNfcmVwb3J0LT4KQEAgLTE0NTIsNyArMTQ1Niw3IEBACiBUX3pVZmlTbXNfUmF3VHNEYXRhKnB0UmF3VHNEYXRhKXt3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUztjb25zdCAKIHdtc19nd19wcF90c19kYXRhX3NfdHlwZSptc2c7aWYocHRDbGllbnRUc0RhdGE9PU5VTEx8fHB0UmF3VHNEYXRhPT1OVUxMKXtyZXR1cm4gCiBXTVNfTlVMTF9QVFJfUzt9bXNnPSZwdENsaWVudFRzRGF0YS0+dS5nd19wcDtzd2l0Y2gocHRDbGllbnRUc0RhdGEtPmZvcm1hdCl7Ci0jaWYgKDB4MWE4OSsyOTc3LTB4MjYyYSkNCisjaWYgKDB4YThjKzEyMjItMHhmNTIpDQogY2FzZSBXTVNfRk9STUFUX0NETUE6Y2FzZSBXTVNfRk9STUFUX0FOQUxPR19BV0lTTVM6Y2FzZSBXTVNfRk9STUFUX0FOQUxPR19DTEk6CiBjYXNlIFdNU19GT1JNQVRfQU5BTE9HX1ZPSUNFX01BSUw6Y2FzZSBXTVNfRk9STUFUX0FOQUxPR19TTVM6Y2FzZSBXTVNfRk9STUFUX01XSQogOnN0PXdtc190c19lbmNvZGVfYmVhcmVyX2RhdGEoJnB0Q2xpZW50VHNEYXRhLT51LmNkbWEscHRSYXdUc0RhdGEpO2JyZWFrOwpAQCAtMTQ2Miw3ICsxNDY2LDcgQEAKIHB0UmF3VHNEYXRhKTticmVhaztjYXNlIFdNU19UUERVX1NVQk1JVDpzdD13bXNfdHNfZW5jb2RlX3N1Ym1pdCgmbXNnLT51LnN1Ym1pdCwKIHB0UmF3VHNEYXRhKTticmVhaztjYXNlIFdNU19UUERVX1NUQVRVU19SRVBPUlQ6c3Q9d21zX3RzX2VuY29kZV9zdGF0dXNfcmVwb3J0KCYKIG1zZy0+dS5zdGF0dXNfcmVwb3J0LHB0UmF3VHNEYXRhKTticmVhazsKLSNpZiAoMHhiMjMrMzE1Mi0weDE3NzMpDQorI2lmICgweDVkOCs1MzI1LTB4MWFhNSkNCiBjYXNlIFdNU19UUERVX1NVQk1JVF9SRVBPUlRfQUNLOnN0PXdtc190c19lbmNvZGVfc3VibWl0X3JlcG9ydF9hY2soJm1zZy0+dS4KIHN1Ym1pdF9yZXBvcnRfYWNrLHB0UmF3VHNEYXRhKTticmVhaztjYXNlIFdNU19UUERVX1NVQk1JVF9SRVBPUlRfRVJST1I6c3Q9CiB3bXNfdHNfZW5jb2RlX3N1Ym1pdF9yZXBvcnRfZXJyb3IoJm1zZy0+dS5zdWJtaXRfcmVwb3J0X2Vycm9yLHB0UmF3VHNEYXRhKTticmVhawpAQCAtMTQ3OSwzNjAgKzE0ODMsMzU4IEBACiAiXHg0OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDNhXHgyMFx4MjVceDY0IiwKIHB0Q2xpZW50VHNEYXRhLT5mb3JtYXQpO2JyZWFrO31wdFJhd1RzRGF0YS0+Zm9ybWF0PXB0Q2xpZW50VHNEYXRhLT5mb3JtYXQ7cmV0dXJuCiAgc3Q7fVVJTlQ4IHdtc190c191bnBhY2tfZ3dfN19iaXRfY2hhcnMoY29uc3QgVUlOVDgqaW4sVUlOVDggaW5fbGVuLFVJTlQ4IAotb3V0X2xlbl9tYXgsVUlOVDE2IHNoaWZ0LFVJTlQ4Km91dCl7aW50IGk9KDB4MTNkNyszMzg0LTB4MjEwZik7VUlOVDE2IHBvcz0KLSgweDEwNTErNTE5NS0weDI0OWMpO2lmKGluPT1OVUxMfHxvdXQ9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKK291dF9sZW5fbWF4LFVJTlQxNiBzaGlmdCxVSU5UOCpvdXQpe2ludCBpPSgweGNiNCsyNzk1LTB4MTc5Zik7VUlOVDE2IHBvcz0KKygweDIzOSs0MDA5LTB4MTFlMik7aWYoaW49PU5VTEx8fG91dD09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg3NVx4NmVceDcwXHg2MVx4NjNceDZiXHg1Zlx4NjdceDc3XHg1Zlx4MzdceDVmXHg2Mlx4NjlceDc0XHg1Zlx4NjNceDY4XHg2MVx4NzJceDczIgotKTtyZXR1cm4oMHgxNGFkKzgwLTB4MTRmZCk7fWlmKHNoaWZ0IT0oMHhiODErNDI0Ny0weDFjMTgpKXBvcz1wb3MrCi0oMHgxMmQ2KzQ1NDEtMHgyNDkyKTtpZihzaGlmdD09KDB4Nzg1KzcyNzMtMHgyM2U3KSl7b3V0WygweDNiOCszODE1LTB4MTI5ZildPWluWwotKDB4MzFmKzI0MDctMHhjODYpXT4+KDB4MTM5OCs0OTI5LTB4MjZkOCk7c2hpZnQ9KDB4MzhhKzc4OTUtMHgyMjYxKTtpPQotKDB4ZDAyKzIwMzYtMHgxNGY1KTt9Zm9yKGk9aTtpPG91dF9sZW5fbWF4JiZpPGluX2xlbjtpKysscG9zKyspe291dFtpXT0oaW5bcG9zXQotPDxzaGlmdCkmKDB4MjZmKzk5Ny0weDVkNSk7aWYocG9zIT0oMHgxMWM1KzIxMjgtMHgxYTE1KSl7Ci0jaWYgKDB4MmFkKzMzNzQtMHhmZGEpICAgICAgIAotaWYoc2hpZnQ9PSgweGM3NyszNy0weGM5Yykpe291dFtpXXw9KDB4NWU0KzI2OTYtMHgxMDZjKTt9ZWxzZXtvdXRbaV18PWluW3Bvcy0KLSgweDYxMSs3MjM4LTB4MjI1NildPj4oKDB4MTA3OSs0NjM1LTB4MjI4Yyktc2hpZnQpO30KKyk7cmV0dXJuKDB4YmU5KzQwNjUtMHgxYmNhKTt9aWYoc2hpZnQhPSgweDE2MGErODEtMHgxNjViKSlwb3M9cG9zKworKDB4MTU4Yys0MjAxLTB4MjVmNCk7aWYoc2hpZnQ9PSgweGY1ZCszNDg3LTB4MWNmNSkpe291dFsoMHgxZGJjKzIzNDItMHgyNmUyKV09aW4KK1soMHhmNjIrOTY5LTB4MTMyYildPj4oMHg1YWYrMzg4LTB4NzMyKTtzaGlmdD0oMHhjOWQrMjA1OS0weDE0YTgpO2k9CisoMHhhNDgrMjY5My0weDE0Y2MpO31mb3IoaT1pO2k8b3V0X2xlbl9tYXgmJmk8aW5fbGVuO2krKyxwb3MrKyl7b3V0W2ldPShpbltwb3NdCis8PHNoaWZ0KSYoMHg3ODQrMzg5NC0weDE2M2IpO2lmKHBvcyE9KDB4MTc1OSsxOTIyLTB4MWVkYikpeworI2lmICgweDFkZjQrNTM0LTB4MjAwOSkgICAgICAgCitpZihzaGlmdD09KDB4MTFlYSs0NzczLTB4MjQ4Zikpe291dFtpXXw9KDB4MTBkZCszOTQ5LTB4MjA0YSk7fWVsc2V7b3V0W2ldfD1pblsKK3Bvcy0oMHhiZDkrNTM3Ni0weDIwZDgpXT4+KCgweGI3MCs1NDYzLTB4MjBiZiktc2hpZnQpO30KICNlbHNlDQotb3V0W2ldfD1pbltwb3MtKDB4MThkOSsxMDk1LTB4MWQxZildPj4oKDB4MWM1NSsxODA1LTB4MjM1YSktc2hpZnQpOworb3V0W2ldfD1pbltwb3MtKDB4YzJiKzU0NTctMHgyMTdiKV0+PigoMHg0OTYrNDA5Ny0weDE0OGYpLXNoaWZ0KTsKICNlbmRpZg0KLX1zaGlmdCsrO2lmKHNoaWZ0PT0oMHgyMjUzKzk5NS0weDI2MmYpKXtzaGlmdD0oMHgzYjQrODMzOC0weDI0NDYpO2krKztpZihpPj0KK31zaGlmdCsrO2lmKHNoaWZ0PT0oMHhjYzMrNDIzNS0weDFkNDcpKXtzaGlmdD0oMHgzZWIrMzExNS0weDEwMTYpO2krKztpZihpPj0KIG91dF9sZW5fbWF4KXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0ZVx4NmZceDc0XHgyMFx4NjVceDZlXHg2Zlx4NzVceDY3XHg2OFx4MjBceDZmXHg3NVx4NzRceDcwXHg3NVx4NzRceDIwXHg2Mlx4NzVceDY2XHg2Nlx4NjVceDcyXHgyMFx4NjZceDZmXHg3Mlx4MjBceDc1XHg2ZVx4NzBceDYxXHg2M1x4NmJceDY5XHg2ZVx4NjdceDIxIgotKTticmVhazt9b3V0W2ldPWluW3Bvc10+PigweDFiYis2Njg5LTB4MWJkYik7fX1yZXR1cm4oVUlOVDgpKHBvcyk7fVVJTlQ4IAorKTticmVhazt9b3V0W2ldPWluW3Bvc10+PigweDExYTgrMTI3OC0weDE2YTUpO319cmV0dXJuKFVJTlQ4KShwb3MpO31VSU5UOCAKIHdtc190c19kZWNvZGVfYWRkcmVzcyhjb25zdCBVSU5UOCpkYXRhLHdtc19hZGRyZXNzX3NfdHlwZSphZGRyKXtVSU5UOCBpLHBvcz0KLSgweGY3OCs2MDA0LTB4MjZlYyk7aT1kYXRhW3Bvc107aWYoaT5XTVNfR1dfQUREUkVTU19NQVgpe2F0X3ByaW50KExPR19ERUJVRywKKygweDQ5Mys2MzM0LTB4MWQ1MSk7aT1kYXRhW3Bvc107aWYoaT5XTVNfR1dfQUREUkVTU19NQVgpe2F0X3ByaW50KExPR19ERUJVRywKICJceDQxXHg2NFx4NjRceDcyXHgyMFx4NmNceDY1XHg2ZVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDIwXHgyNVx4NjQiCi0saSk7cmV0dXJuKDB4NjVhKzYxMzUtMHgxZTUxKTt9YWRkci0+bnVtYmVyX29mX2RpZ2l0cz1pO3BvcysrO2FkZHItPmRpZ2l0X21vZGU9CissaSk7cmV0dXJuKDB4MTBjYysyMTUwLTB4MTkzMik7fWFkZHItPm51bWJlcl9vZl9kaWdpdHM9aTtwb3MrKzthZGRyLT5kaWdpdF9tb2RlPQogV01TX0RJR0lUX01PREVfNF9CSVQ7YWRkci0+bnVtYmVyX3R5cGU9KHdtc19udW1iZXJfdHlwZV9lX3R5cGUpKChkYXRhW3Bvc10mCi0oMHgxNDhmKzY2NS0weDE2YjgpKT4+KDB4Mjc2KzgwOTUtMHgyMjExKSk7YWRkci0+bnVtYmVyX3BsYW49KAotd21zX251bWJlcl9wbGFuX2VfdHlwZSkoZGF0YVtwb3NdJigweDE0MmYrMTQ5Mi0weDE5ZjQpKTtwb3MrKztpZihhZGRyLT4KLW51bWJlcl90eXBlPT1XTVNfTlVNQkVSX0FMUEhBTlVNRVJJQyl7VUlOVDggYnl0ZXNfaW5jcmVtZW50PSgweDc2YyszNTY1LTB4MTU1OSk7Ci1hZGRyLT5kaWdpdF9tb2RlPVdNU19ESUdJVF9NT0RFXzhfQklUO2J5dGVzX2luY3JlbWVudD0oYWRkci0+bnVtYmVyX29mX2RpZ2l0cysKLSgweDE3M2MrMTY5Mi0weDFkZDcpKS8oMHhlYmErNDcwMi0weDIxMTYpO2FkZHItPm51bWJlcl9vZl9kaWdpdHM9KFVJTlQ4KShhZGRyLT4KLW51bWJlcl9vZl9kaWdpdHMqKDB4MTliZCsyMzU0LTB4MjJlYikvKDB4MTY5MysyODUxLTB4MjFhZikpOyh2b2lkKQorKDB4NDhkKzcwMjMtMHgxZjhjKSk+PigweDIwNTcrMTYwNS0weDI2OTgpKTthZGRyLT5udW1iZXJfcGxhbj0oCit3bXNfbnVtYmVyX3BsYW5fZV90eXBlKShkYXRhW3Bvc10mKDB4MjI2KzUxNDItMHgxNjJkKSk7cG9zKys7aWYoYWRkci0+CitudW1iZXJfdHlwZT09V01TX05VTUJFUl9BTFBIQU5VTUVSSUMpe1VJTlQ4IGJ5dGVzX2luY3JlbWVudD0oMHgxODQ1KzI3MTYtMHgyMmUxKQorO2FkZHItPmRpZ2l0X21vZGU9V01TX0RJR0lUX01PREVfOF9CSVQ7Ynl0ZXNfaW5jcmVtZW50PShhZGRyLT5udW1iZXJfb2ZfZGlnaXRzKworKDB4N2Q4KzQ2NTYtMHgxYTA3KSkvKDB4MzljKzU5MDgtMHgxYWFlKTthZGRyLT5udW1iZXJfb2ZfZGlnaXRzPShVSU5UOCkoYWRkci0+CitudW1iZXJfb2ZfZGlnaXRzKigweDFjMzQrMjUzMS0weDI2MTMpLygweDk0ZCs2MzMyLTB4MjIwMikpOyh2b2lkKQogd21zX3RzX3VucGFja19nd183X2JpdF9jaGFycygmZGF0YVtwb3NdLGFkZHItPm51bWJlcl9vZl9kaWdpdHMsCi1XTVNfR1dfQUREUkVTU19NQVgsKDB4MWQzYSsxODQ5LTB4MjQ3MyksYWRkci0+ZGlnaXRzKTtwb3MrPWJ5dGVzX2luY3JlbWVudDt9ZWxzZQote2ZvcihpPSgweDE2YTUrMjMxMy0weDFmYWUpO2k8YWRkci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2FkZHItPmRpZ2l0c1tpKytdPWRhdGEKLVtwb3NdJigweDFjMTcrMjc5OC0weDI2ZjYpO2FkZHItPmRpZ2l0c1tpXT0oZGF0YVtwb3NdJigweDViMis3NzMxLTB4MjJmNSkpPj4KLSgweDQ2YSszMDM3LTB4MTA0Myk7cG9zKys7fX1yZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZGVjb2RlX2Rjcyhjb25zdCBVSU5UOCpkYXRhCi0sd21zX2d3X2Rjc19zX3R5cGUqZGNzKXtVSU5UOCBwb3M9KDB4NGQ1KzU5NzYtMHgxYzJkKTtVSU5UOCBpO2lmKGRhdGE9PU5VTEx8fGRjcworV01TX0dXX0FERFJFU1NfTUFYLCgweDE1ZjgrMjQwNC0weDFmNWMpLGFkZHItPmRpZ2l0cyk7cG9zKz1ieXRlc19pbmNyZW1lbnQ7fWVsc2UKK3tmb3IoaT0oMHg2NmIrNjI3MS0weDFlZWEpO2k8YWRkci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2FkZHItPmRpZ2l0c1tpKytdPWRhdGFbCitwb3NdJigweDQ0MSs4ODY1LTB4MjZkMyk7YWRkci0+ZGlnaXRzW2ldPShkYXRhW3Bvc10mKDB4ODAxKzE3MDctMHhkYmMpKT4+CisoMHg3YzgrMTcyNy0weGU4Myk7cG9zKys7fX1yZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZGVjb2RlX2Rjcyhjb25zdCBVSU5UOCpkYXRhLAord21zX2d3X2Rjc19zX3R5cGUqZGNzKXtVSU5UOCBwb3M9KDB4N2VkKzYwNTUtMHgxZjk0KTtVSU5UOCBpO2lmKGRhdGE9PU5VTEx8fGRjcwogPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2NFx4NjNceDczIgotKTtyZXR1cm4oMHhjMTArNjU4MS0weDI1YzUpO31kY3MtPm1zZ19jbGFzcz1XTVNfTUVTU0FHRV9DTEFTU19OT05FO2Rjcy0+CispO3JldHVybigweDkxOSs0NTg5LTB4MWIwNik7fWRjcy0+bXNnX2NsYXNzPVdNU19NRVNTQUdFX0NMQVNTX05PTkU7ZGNzLT4KIG1zZ193YWl0aW5nPVdNU19HV19NU0dfV0FJVElOR19OT05FO2Rjcy0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ7Ci1kY3MtPmlzX2NvbXByZXNzZWQ9RkFMU0U7aT0oZGF0YVtwb3NdJigweGEwYSs0NjY1LTB4MWI4MykpPj4oMHhkNSs0MzQ0LTB4MTFjNyk7Ci1zd2l0Y2goaSl7Y2FzZSgweDIxMzErMjg1LTB4MjI0ZSk6ZGNzLT5pc19jb21wcmVzc2VkPWRhdGFbcG9zXSYKLSgweDNiZis1NDQwLTB4MThkZik7aWYoZGF0YVtwb3NdJigweGQ2KzQ5MTMtMHgxM2Y3KSl7ZGNzLT5tc2dfY2xhc3M9KAotd21zX21lc3NhZ2VfY2xhc3NfZV90eXBlKShkYXRhW3Bvc10mKDB4MmNhKzIzMzAtMHhiZTEpKTt9ZWxzZXtkY3MtPm1zZ19jbGFzcz0KK2Rjcy0+aXNfY29tcHJlc3NlZD1GQUxTRTtpPShkYXRhW3Bvc10mKDB4MWYyNCs1MjctMHgyMDczKSk+PigweDFjYys0MDY3LTB4MTFhOSk7Citzd2l0Y2goaSl7Y2FzZSgweDEyNWIrNzgwLTB4MTU2Nyk6ZGNzLT5pc19jb21wcmVzc2VkPWRhdGFbcG9zXSYKKygweDEyN2QrMzEzMC0weDFlOTcpO2lmKGRhdGFbcG9zXSYoMHhiZTIrMjA4OS0weDEzZmIpKXtkY3MtPm1zZ19jbGFzcz0oCit3bXNfbWVzc2FnZV9jbGFzc19lX3R5cGUpKGRhdGFbcG9zXSYoMHgzZGMrNTk1NC0weDFiMWIpKTt9ZWxzZXtkY3MtPm1zZ19jbGFzcz0KIFdNU19NRVNTQUdFX0NMQVNTX05PTkU7fWRjcy0+YWxwaGFiZXQ9KHdtc19nd19hbHBoYWJldF9lX3R5cGUpKChkYXRhW3Bvc10mCi0oMHhkYTgrNTY4OS0weDIzZDUpKT4+KDB4YTg0KzU1MDctMHgyMDA1KSk7YnJlYWs7Y2FzZSgweDVmNSs2NzU1LTB4MjA1NSk6aWYoKAotZGF0YVtwb3NdJigweDEwMCs0NzY2LTB4MTM2ZSkpPT0oMHgxNmZhKzEwMzAtMHgxYWQwKSl7ZGNzLT5hbHBoYWJldD0oZGF0YVtwb3NdJgotKDB4YjEwKzI4MDYtMHgxNjAyKSk/V01TX0dXX0FMUEhBQkVUXzhfQklUOldNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO2Rjcy0+Ci1tc2dfY2xhc3M9KHdtc19tZXNzYWdlX2NsYXNzX2VfdHlwZSkoZGF0YVtwb3NdJigweDM4YSs0MDA4LTB4MTMyZikpO2Rjcy0+CisoMHgxMDMxKzM4MDMtMHgxZjAwKSk+PigweDYzOCs2ODc4LTB4MjExNCkpO2JyZWFrO2Nhc2UoMHgxNTBiKzQzMDQtMHgyNWQ4KTppZigoCitkYXRhW3Bvc10mKDB4ZmEzKzIzMjgtMHgxODhiKSk9PSgweDIxNjkrMjAtMHgyMTRkKSl7ZGNzLT5hbHBoYWJldD0oZGF0YVtwb3NdJgorKDB4ZmM0KzU0NDMtMHgyNTAzKSk/V01TX0dXX0FMUEhBQkVUXzhfQklUOldNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO2Rjcy0+Cittc2dfY2xhc3M9KHdtc19tZXNzYWdlX2NsYXNzX2VfdHlwZSkoZGF0YVtwb3NdJigweDJiYSs2NzA5LTB4MWNlYykpO2Rjcy0+CiBpc19jb21wcmVzc2VkPUZBTFNFO2Rjcy0+bXNnX3dhaXRpbmc9V01TX0dXX01TR19XQUlUSU5HX05PTkVfMTExMTt9ZWxzZXtkY3MtPgogaXNfY29tcHJlc3NlZD1GQUxTRTtkY3MtPm1zZ19jbGFzcz1XTVNfTUVTU0FHRV9DTEFTU19OT05FO2lmKChkYXRhW3Bvc10mCi0oMHg2ZCs0NzAwLTB4MTI5OSkpPT0oMHgxODdmKzEyMDItMHgxZDMxKSl7ZGNzLT5tc2dfd2FpdGluZz0KKygweDU0MCs3MDcxLTB4MjBhZikpPT0oMHgxMjE5KzExOTEtMHgxNmMwKSl7ZGNzLT5tc2dfd2FpdGluZz0KIFdNU19HV19NU0dfV0FJVElOR19ESVNDQVJEO2Rjcy0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ7fWVsc2UgaWYoCi0oZGF0YVtwb3NdJigweDEwNDMrNzEyLTB4MTJkYikpPT0oMHgxMWQ4KzQ4NDktMHgyNGI5KSl7ZGNzLT5tc2dfd2FpdGluZz0KKyhkYXRhW3Bvc10mKDB4MmVhKzc2MTUtMHgyMDc5KSk9PSgweDc0MCs2MjI4LTB4MWY4NCkpe2Rjcy0+bXNnX3dhaXRpbmc9CiBXTVNfR1dfTVNHX1dBSVRJTkdfU1RPUkU7ZGNzLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDt9ZWxzZXtkY3MtPgogbXNnX3dhaXRpbmc9V01TX0dXX01TR19XQUlUSU5HX1NUT1JFO2Rjcy0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUX1VDUzI7fWRjcy0+Ci1tc2dfd2FpdGluZ19hY3RpdmU9KGRhdGFbcG9zXSYoMHgxNzQ4KzMxMjgtMHgyMzc4KSk/VFJVRTpGQUxTRTtkY3MtPgotbXNnX3dhaXRpbmdfa2luZD0od21zX2d3X21zZ193YWl0aW5nX2tpbmRfZV90eXBlKShkYXRhW3Bvc10mKDB4MjQxKzQ2MS0weDQwYikpO30KLWJyZWFrO2RlZmF1bHQ6YXRfcHJpbnQoTE9HX0RFQlVHLAorbXNnX3dhaXRpbmdfYWN0aXZlPShkYXRhW3Bvc10mKDB4MjJmKzEwODUtMHg2NjQpKT9UUlVFOkZBTFNFO2Rjcy0+Cittc2dfd2FpdGluZ19raW5kPSh3bXNfZ3dfbXNnX3dhaXRpbmdfa2luZF9lX3R5cGUpKGRhdGFbcG9zXSYoMHg5ZGIrNDE5My0weDFhMzkpKQorO31icmVhaztkZWZhdWx0OmF0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDRceDQzXHg1M1x4M2FceDIwXHgyNVx4NzgiLGRhdGFbcG9zXSk7ZGNzLT4KIGFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO2Rjcy0+aXNfY29tcHJlc3NlZD1GQUxTRTtkY3MtPm1zZ193YWl0aW5nCiA9V01TX0dXX01TR19XQUlUSU5HX05PTkU7ZGNzLT5tc2dfY2xhc3M9V01TX01FU1NBR0VfQ0xBU1NfTk9ORTticmVhazt9aWYoZGNzLT4KIGFscGhhYmV0PldNU19HV19BTFBIQUJFVF9VQ1MyKXtkY3MtPmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO31kY3MKIC0+cmF3X2Rjc19kYXRhPWRhdGFbcG9zXTtwb3MrKztyZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZGVjb2RlX3RpbWVzdGFtcChjb25zdCAKLVVJTlQ4KmRhdGEsd21zX3RpbWVzdGFtcF9zX3R5cGUqdGltZXN0YW1wKXtVSU5UOCBwb3M9KDB4MTRiYysxNjIzLTB4MWIxMyksaSxqO2lmCi0oZGF0YT09TlVMTHx8dGltZXN0YW1wPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCitVSU5UOCpkYXRhLHdtc190aW1lc3RhbXBfc190eXBlKnRpbWVzdGFtcCl7VUlOVDggcG9zPSgweDFhMSsyMjU2LTB4YTcxKSxpLGo7aWYoCitkYXRhPT1OVUxMfHx0aW1lc3RhbXA9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDc0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzAiCi0pO3JldHVybigweDgyMSs2NjA2LTB4MjFlZik7fWk9KChkYXRhW3Bvc10mKDB4NWI0Kzg0NTctMHgyNmFlKSk8PAotKDB4NGM5KzI5MjktMHgxMDM2KSkrKChkYXRhW3Bvc10mKDB4NDY2KzE0ODUtMHg5NDMpKT4+KDB4ZGU4KzIwNTktMHgxNWVmKSk7aWYoIQorKTtyZXR1cm4oMHgxOGY3KzE5MDUtMHgyMDY4KTt9aT0oKGRhdGFbcG9zXSYoMHgyY2QrNzY3Ni0weDIwYmEpKTw8CisoMHhjYTArMzc5Ny0weDFiNzEpKSsoKGRhdGFbcG9zXSYoMHgxNmQ5KzI0MS0weDE2ZGEpKT4+KDB4ODA0KzI5NzQtMHgxMzllKSk7aWYoIQogd21zX3RzX2JjZF90b19pbnQoaSwmaikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg1OVx4NjVceDYxXHg3Mlx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHgyYjErNzM1LTB4NTkwKTt9dGltZXN0YW1wLT55ZWFyPWk7cG9zKys7aT0oKGRhdGFbcG9zXSYKLSgweGI4OCs1ODk0LTB4MjI3ZikpPDwoMHhhZmIrNTE1My0weDFmMTgpKSsoKGRhdGFbcG9zXSYoMHgxODUwKzI3MTEtMHgyMWY3KSk+PgotKDB4ZDNiKzMxODUtMHgxOWE4KSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4MTY1YSszMDM2LTB4MjIyYSl8fGo8Ci0oMHgxMjRmKzMzODItMHgxZjg0KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorLGRhdGFbcG9zXSk7aT0oMHgyN2MrNzM5Mi0weDFmNWMpO310aW1lc3RhbXAtPnllYXI9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgorKDB4ZDYwKzI2NjAtMHgxN2I1KSk8PCgweDhkMSszMDItMHg5ZmIpKSsoKGRhdGFbcG9zXSYoMHg0MTErNTEyNC0weDE3MjUpKT4+CisoMHhlNis1Mjg1LTB4MTU4NykpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweGZjYysxMjg4LTB4MTRjOCl8fGo8CisoMHg1YzIrMjk0MS0weDExM2UpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0ZFx4NmZceDZlXHg3NFx4NjhceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7aT0oMHgxOGRkKzIyNDItMHgyMTllKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAorLGopO2k9KDB4Y2U3KzU2OTItMHgyMzIyKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg0Mlx4NDNceDQ0XHgyMFx4NDRceDY5XHg2N1x4NjlceDc0XHg3M1x4MjBceDY5XHg2ZVx4MjBceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MFx4MjBceDRkXHg2Zlx4NmVceDc0XHg2OFx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHhhN2ErMjg0MC0weDE1OTEpO310aW1lc3RhbXAtPm1vbnRoPWk7cG9zKys7aT0oKGRhdGFbcG9zXSYKLSgweDFmZTArNDQ1LTB4MjE4ZSkpPDwoMHhkOWQrMjMxOC0weDE2YTcpKSsoKGRhdGFbcG9zXSYoMHgxNjYrNzEwOC0weDFjM2EpKT4+Ci0oMHgxNDdjKzM4NzktMHgyMzlmKSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4NDM4KzQ5MjgtMHgxNzU5KXx8ajwKLSgweDFjMCsyNzEyLTB4YzU3KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorLGRhdGFbcG9zXSk7aT0oMHgxM2IxKzExNzgtMHgxODRhKTt9dGltZXN0YW1wLT5tb250aD1pO3BvcysrO2k9KChkYXRhW3Bvc10mCisoMHg3NWMrMzU2My0weDE1MzgpKTw8KDB4Y2I0KzQwNDAtMHgxYzc4KSkrKChkYXRhW3Bvc10mKDB4ZmY4KzQxNDItMHgxZjM2KSk+PgorKDB4YWM2KzY5ODgtMHgyNjBlKSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4NTUzKzU3NTAtMHgxYmFhKXx8ajwKKygweDEyMDArNTA1MS0weDI1YmEpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjFceDc5XHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IixqKTtpPQotKDB4MTJkYyszNzgyLTB4MjFhMSk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKKygweDg5Mis0NzUxLTB4MWIyMCk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg0NFx4NjFceDc5XHgyMFx4M2FceDIwXHgyNVx4NjQiCi0sZGF0YVtwb3NdKTtpPSgweGIzMCszNDMxLTB4MTg5Nik7fXRpbWVzdGFtcC0+ZGF5PWk7cG9zKys7aT0oKGRhdGFbcG9zXSYKLSgweDEwMDgrNTg1LTB4MTI0MikpPDwoMHgxOTcrMzM3NS0weGVjMikpKygoZGF0YVtwb3NdJigweDNmZisxMDgxLTB4NzQ4KSk+PgotKDB4OTgxKzc1MjktMHgyNmU2KSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4MjRmMys0ODQtMHgyNmMwKSl7CissZGF0YVtwb3NdKTtpPSgweDFlNTYrMTIyNS0weDIzMWUpO310aW1lc3RhbXAtPmRheT1pO3BvcysrO2k9KChkYXRhW3Bvc10mCisoMHgyNTUwKzE2Mi0weDI1ZTMpKTw8KDB4MWNmZCs5ODMtMHgyMGQwKSkrKChkYXRhW3Bvc10mKDB4MjMzMSsxMTA0LTB4MjY5MSkpPj4KKygweGNlNCszMjcwLTB4MTlhNikpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweGIwYis0MTAxLTB4MWFmOSkpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDhceDZmXHg3NVx4NzJceDIwXHg2OVx4NzNceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHgzYVx4MjBceDI1XHg2NCIKLSxqKTtpPSgweGFmMyszNzY2LTB4MTlhOSk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKKyxqKTtpPSgweDg4OSs1MzQ2LTB4MWQ2Yik7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg0OFx4NmZceDc1XHg3Mlx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHhhYys0OTg0LTB4MTQyNCk7fXRpbWVzdGFtcC0+aG91cj1pO3BvcysrO2k9KChkYXRhW3Bvc10mCi0oMHgxNzE0KzM3MzYtMHgyNTlkKSk8PCgweDEwYys4NDgtMHg0NTgpKSsoKGRhdGFbcG9zXSYoMHg4MmIrMTY3Ni0weGRjNykpPj4KLSgweGQ5NyszMjA2LTB4MWExOSkpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweDIwMDArMTgxMy0weDI2ZGEpKXsKKyxkYXRhW3Bvc10pO2k9KDB4OGIrODAxNC0weDFmZDkpO310aW1lc3RhbXAtPmhvdXI9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgorKDB4MTRmZisxMTU1LTB4MTk3MykpPDwoMHg0YmErMTQxLTB4NTQzKSkrKChkYXRhW3Bvc10mKDB4NTc2KzU5NzItMHgxYmRhKSk+PgorKDB4M2RjKzEyNDgtMHg4YjgpKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHhjODYrNjQ2Mi0weDI1ODkpKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHg2OVx4NzNceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHgzYVx4MjBceDI1XHg2NCIKLSxqKTtpPSgweDFkYWYrMTc3Ni0weDI0OWYpO319ZWxzZXthdF9wcmludChMT0dfREVCVUcsCissaik7aT0oMHgxOTkyKzMxNzktMHgyNWZkKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg0Mlx4NDNceDQ0XHgyMFx4NDRceDY5XHg2N1x4NjlceDc0XHg3M1x4MjBceDY5XHg2ZVx4MjBceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MFx4MjBceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHgzYVx4MjBceDI1XHg2NCIKLSxkYXRhW3Bvc10pO2k9KDB4YzFhKzQ5MTYtMHgxZjRlKTt9dGltZXN0YW1wLT5taW51dGU9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgotKDB4MzA4Kzc2NzgtMHgyMGY3KSk8PCgweDE4ZTQrOTMyLTB4MWM4NCkpKygoZGF0YVtwb3NdJigweGE1MSsyMzE1LTB4MTI2YykpPj4KLSgweGEyNCs1ODkzLTB4MjEyNSkpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweGEwZis0MDQ2LTB4MTlhMikpeworLGRhdGFbcG9zXSk7aT0oMHg2NDQrNTU2My0weDFiZmYpO310aW1lc3RhbXAtPm1pbnV0ZT1pO3BvcysrO2k9KChkYXRhW3Bvc10mCisoMHgxZjgrODY0MS0weDIzYWEpKTw8KDB4MTg2KzM3NjYtMHgxMDM4KSkrKChkYXRhW3Bvc10mKDB4M2Y1KzIzNTAtMHhjMzMpKT4+CisoMHhjNGMrNTMyMC0weDIxMTApKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHhiOTgrNDI3OS0weDFjMTQpKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg2NVx4NjNceDZmXHg2ZVx4NjRceDIwXHg2OVx4NzNceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHgzYVx4MjBceDI1XHg2NCIKLSxpKTtpPSgweDNlZCs4ODc3LTB4MjY5YSk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKKyxpKTtpPSgweDE5YmMrMTY4OS0weDIwNTUpO319ZWxzZXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDQyXHg0M1x4NDRceDIwXHg0NFx4NjlceDY3XHg2OVx4NzRceDczXHgyMFx4NjlceDZlXHgyMFx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4NjRceDIwXHg1NFx4NjlceDZkXHg2NVx4NzNceDc0XHg2MVx4NmRceDcwXHgyMFx4NTNceDY1XHg2M1x4NmZceDZlXHg2NFx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHgyNTErMjk0Ny0weGRkNCk7fXRpbWVzdGFtcC0+c2Vjb25kPWk7cG9zKys7aWYoZGF0YVtwb3NdJgotKDB4MWEzYSsxMzI2LTB4MWY2MCkpe3RpbWVzdGFtcC0+dGltZXpvbmU9KGRhdGFbcG9zXSYoMHgxNWU1KzMyMTMtMHgyMjZiKSkqCi0oMHgxZDlhKzIyODEtMHgyNjc5KSsoKGRhdGFbcG9zXSYoMHgyMTErNTUwNS0weDE2YTIpKT4+KDB4OWQ2KzU2MjAtMHgxZmM2KSk7Ci10aW1lc3RhbXAtPnRpbWV6b25lKj0oLSgweDEyZCsyMDMwLTB4OTFhKSk7fWVsc2V7dGltZXN0YW1wLT50aW1lem9uZT0oc2ludDcpKCgKLWRhdGFbcG9zXSYoMHhlZTgrMzUwNS0weDFjOGEpKSooMHgxNDhhKzQ2OTctMHgyNmQ5KSsoKGRhdGFbcG9zXSYKLSgweDFmNTMrNTMzLTB4MjA3OCkpPj4oMHgxOWEyKzExNDMtMHgxZTE1KSkpO31pZih0aW1lc3RhbXAtPnRpbWV6b25lPgotKDB4MWFiMCs3NzItMHgxZDg0KXx8dGltZXN0YW1wLT50aW1lem9uZTwtKDB4MWY2YyszODktMHgyMGMxKSl7YXRfcHJpbnQoCi1MT0dfREVCVUcsCissZGF0YVtwb3NdKTtpPSgweDVmNis1NzI4LTB4MWM1Nik7fXRpbWVzdGFtcC0+c2Vjb25kPWk7cG9zKys7aWYoZGF0YVtwb3NdJgorKDB4ODAxKzE4MDMtMHhmMDQpKXt0aW1lc3RhbXAtPnRpbWV6b25lPShkYXRhW3Bvc10mKDB4NDUrMzk1Mi0weGZhZSkpKgorKDB4NzM4KzY2MzktMHgyMTFkKSsoKGRhdGFbcG9zXSYoMHgyMTY2KzQ0Ni0weDIyMzQpKT4+KDB4YTQwKzM0NjktMHgxN2M5KSk7Cit0aW1lc3RhbXAtPnRpbWV6b25lKj0oLSgweDFkMDcrMjQ1Mi0weDI2OWEpKTt9ZWxzZXt0aW1lc3RhbXAtPnRpbWV6b25lPShzaW50NykoKAorZGF0YVtwb3NdJigweGQ3MiszMjYwLTB4MWExZikpKigweDYwKzc3MjktMHgxZTg3KSsoKGRhdGFbcG9zXSYKKygweDNkYSs1MDIxLTB4MTY4NykpPj4oMHgxMTQwKzk4Mi0weDE1MTIpKSk7fWlmKHRpbWVzdGFtcC0+dGltZXpvbmU+CisoMHgyYTErNzA0Ny0weDFkZjgpfHx0aW1lc3RhbXAtPnRpbWV6b25lPC0oMHhiZTYrNzI5LTB4ZThmKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTRceDY5XHg2ZFx4NjVceDdhXHg2Zlx4NmVceDY1XHgyMFx4NjlceDczXHgyMFx4NmZceDc1XHg3NFx4MjBceDZmXHg2Nlx4MjBceDYyXHg2Zlx4NzVceDZlXHg2NFx4M2FceDIwXHgyNVx4NjQiCi0sdGltZXN0YW1wLT50aW1lem9uZSk7dGltZXN0YW1wLT50aW1lem9uZT0oMHhlOTIrNDQ3NS0weDIwMGQpO31wb3MrKztyZXR1cm4gcG9zOworLHRpbWVzdGFtcC0+dGltZXpvbmUpO3RpbWVzdGFtcC0+dGltZXpvbmU9KDB4YzRhKzIwNzYtMHgxNDY2KTt9cG9zKys7cmV0dXJuIHBvczsKIH1zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfY29uY2F0XzgoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKgotaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGRiMCsyODUzLTB4MThkNSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXsKLWF0X3ByaW50KExPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4KLSgweDllOCs0NTgwLTB4MWJjYyk7fWlmKHVkaFtwb3NdPCgweDdiKzIzMDQtMHg5NzgpKXthdF9wcmludChMT0dfREVCVUcsCitoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4ZDM3KzQ1Ny0weGYwMCk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludAorKExPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4KKygweDEyMWMrMzU2NS0weDIwMDkpO31pZih1ZGhbcG9zXTwoMHgyNDc3KzE4My0weDI1MmIpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHgzOFx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHgxYmErNTA5Mi0weDE1OWUpO31pZih1ZGhbcG9zKygweGQ3Yis0NDc4LTB4MWVmNyldPT0KLSgweDg2NCs3Mzc4LTB4MjUzNil8fHVkaFtwb3MrKDB4ZDQ0KzI3NzctMHgxODFhKV0+dWRoW3BvcysoMHgxMDdjKzM2NjEtMHgxZWM3KV0pCissdWRoW3Bvc10pO3JldHVybigweDFmNSsyMTY2LTB4YTZiKTt9aWYodWRoW3BvcysoMHg1ZjIrNTcwMy0weDFjMzcpXT09CisoMHg1NDYrNTE5NS0weDE5OTEpfHx1ZGhbcG9zKygweDE0MTMrMjczNy0weDFlYzEpXT51ZGhbcG9zKygweDE3OTIrNDc5LTB4MTk2ZildKQoge2F0X3ByaW50KExPR19ERUJVRywKICJceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NDNceDZmXHg2ZVx4NzRceDYxXHg2M1x4NzRceDIwXHgzOFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NmZceDc1XHg3NFx4MjBceDZmXHg2Nlx4MjBceDYyXHg2Zlx4NzVceDZlXHg2NFx4MjBceDZkXHg2MVx4NzhceDIwXHg2ZFx4NjVceDczXHg3M1x4NjFceDY3XHg2NVx4NzMiCi0pO3JldHVybigweDVmZis4MTU1LTB4MjVkYSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX0NPTkNBVF84OworKTtyZXR1cm4oMHgxNmNhKzUyMy0weDE4ZDUpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9DT05DQVRfODsKIGhlYWRlcl9wdHItPnUuY29uY2F0XzgubXNnX3JlZj11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0XzgudG90YWxfc209dWRoWwotcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0Xzguc2VxX251bT11ZGhbcG9zKytdO3JldHVybih1ZGhbKDB4ZDUxKzI5NjAtMHgxOGUxKV0KLSsoMHgyYzIrNDA2MS0weDEyOWUpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX2NvbmNhdDE2KGNvbnN0IFVJTlQ4KnVkaCwKLXdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHg0NmYrNjQ4Ni0weDFkYzUpO2lmKHVkaD09TlVMTHx8Ci1oZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgyMGYrNjY4OS0weDFjMzApO31pZigKLXVkaFtwb3NdPCgweDE3NzkrODUyLTB4MWFjOSkpe2F0X3ByaW50KExPR19ERUJVRywKK3BvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF84LnNlcV9udW09dWRoW3BvcysrXTtyZXR1cm4odWRoWygweGVhZis0Nzg4LTB4MjE2MyldCisrKDB4M2JiKzMxMTAtMHhmZTApKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX2NvbmNhdDE2KGNvbnN0IFVJTlQ4KnVkaCwKK3dtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHg4N2QrNDQ3LTB4YTNjKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHIKKz09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLCJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpOworcmV0dXJuKDB4OTIxKzM4MjktMHgxODE2KTt9aWYodWRoW3Bvc108KDB4NjY1KzQ0MTgtMHgxN2EzKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4MzFceDM2XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDRjNSs2MzMtMHg3M2UpO31pZih1ZGhbcG9zKygweGQ5OCszOTc4LTB4MWQxZildPT0KLSgweGMyMCsyNDgtMHhkMTgpfHx1ZGhbcG9zKygweDFiNmQrMTk4LTB4MWMyZildPT0oMHgxMjkrMjk2MC0weGNiOSl8fHVkaFtwb3MrCi0oMHgxODcwKzI0MzMtMHgyMWVkKV0+dWRoW3BvcysoMHhlMzErMzE2OC0weDFhOGUpXSlyZXR1cm4oMHgzMisyNzMxLTB4YWRkKTsKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MzFjKzU4NjItMHgxYTAyKTt9aWYodWRoW3BvcysoMHhhMmErMTA0Mi0weGUzOSldPT0KKygweDc5YysxODAwLTB4ZWE0KXx8dWRoW3BvcysoMHg5MjYrMTA4LTB4OThlKV09PSgweDJmOSs0MjIxLTB4MTM3Nil8fHVkaFtwb3MrCisoMHgxNzgrNzE5MC0weDFkOGEpXT51ZGhbcG9zKygweDYyOCsxMDg2LTB4YTYzKV0pcmV0dXJuKDB4MTU0OCszNjc1LTB4MjNhMyk7CiBoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9DT05DQVRfMTY7cG9zKys7aGVhZGVyX3B0ci0+dS5jb25jYXRfMTYubXNnX3JlZj0KIHVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5jb25jYXRfMTYubXNnX3JlZj0oVUlOVDE2KShoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi4KLW1zZ19yZWY8PCgweDcxNSs1ODQtMHg5NTUpKXx1ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0XzE2LnRvdGFsX3NtPXVkaFtwb3MKLSsrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi5zZXFfbnVtPXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHgxMjUrMTYwNi0weDc2YildKwotKDB4MWJjNCszMTItMHgxY2ZiKSk7fXN0YXRpYyBVSU5UOCB3bXNfdHNfdWRoX2RlY29kZV9maXJzdF9zZWdfY2hlY2soY29uc3QgVUlOVDgKLSBsZW4sY29uc3QgVUlOVDgqZGF0YSxVSU5UOCppc19maXJzdF9zZWdtZW50X3B0cil7VUlOVDggcG9zPSgweDdjNCszMzIxLTB4MTRiZCk7Ci1VSU5UOCBudW1faGVhZGVycz0oMHg3OTErMjEyNy0weGZlMCk7VUlOVDggdWRobD0oMHgxZWY2Kzk0MC0weDIyYTIpO1VJTlQ4IGllZGw9Ci0oMHg4NjkrMjY0MS0weDEyYmEpO1VJTlQ4IGllaT0oMHgxMjJjKzIxNjUtMHgxYWExKTsqaXNfZmlyc3Rfc2VnbWVudF9wdHI9VFJVRTtpZgotKGRhdGE9PU5VTEx8fGRhdGFbcG9zXT09KDB4MzYwKzQ2NDUtMHgxNTg1KXx8bGVuPT0oMHg0MDUrMTI3LTB4NDg0KSl7YXRfcHJpbnQoCi1MT0dfREVCVUcsCittc2dfcmVmPDwoMHg5NmQrNjYzNC0weDIzNGYpKXx1ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0XzE2LnRvdGFsX3NtPXVkaFsKK3BvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi5zZXFfbnVtPXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHg0ZWQrNzA1MC0weDIwNzcpCitdKygweDExOWQrMzI0OS0weDFlNGQpKTt9c3RhdGljIFVJTlQ4IHdtc190c191ZGhfZGVjb2RlX2ZpcnN0X3NlZ19jaGVjayhjb25zdCAKK1VJTlQ4IGxlbixjb25zdCBVSU5UOCpkYXRhLFVJTlQ4KmlzX2ZpcnN0X3NlZ21lbnRfcHRyKXtVSU5UOCBwb3M9CisoMHhhMys0Nzk0LTB4MTM1ZCk7VUlOVDggbnVtX2hlYWRlcnM9KDB4NWU5KzYyMzctMHgxZTQ2KTtVSU5UOCB1ZGhsPQorKDB4MTQ2NCs1OTYtMHgxNmI4KTtVSU5UOCBpZWRsPSgweGFiMSsyNzAtMHhiYmYpO1VJTlQ4IGllaT0oMHg3OTgrNTA1My0weDFiNTUpOyoKK2lzX2ZpcnN0X3NlZ21lbnRfcHRyPVRSVUU7aWYoZGF0YT09TlVMTHx8ZGF0YVtwb3NdPT0oMHg4MmErMTQ5Ni0weGUwMil8fGxlbj09CisoMHgxMWJkKzE4ODktMHgxOTFlKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NzVceDY0XHg2OFx4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2Nlx4NjlceDcyXHg3M1x4NzRceDVmXHg3M1x4NjVceDY3XHg1Zlx4NjNceDY4XHg2NVx4NjNceDZiIgogKTtyZXR1cm4gRkFMU0U7fXVkaGw9ZGF0YVtwb3NdO3BvcysrO3doaWxlKChwb3M8dWRobCkmJihudW1faGVhZGVyczwKLVdNU19NQVhfVURfSEVBREVSUykpe2llaT1kYXRhW3Bvc107aWVkbD1kYXRhW3BvcysoMHgxNmY1KzIwNjUtMHgxZjA1KV07aWYoaWVpPT0KLVdNU19VREhfQ09OQ0FUXzE2KXtpZihkYXRhW3BvcysoMHgyYTArNjk2OS0weDFkZDQpXSE9KDB4MWE4YysxMDY4LTB4MWViNykpeworV01TX01BWF9VRF9IRUFERVJTKSl7aWVpPWRhdGFbcG9zXTtpZWRsPWRhdGFbcG9zKygweGQ2ZisyODExLTB4MTg2OSldO2lmKGllaT09CitXTVNfVURIX0NPTkNBVF8xNil7aWYoZGF0YVtwb3MrKDB4MTBmYis1NTMyLTB4MjY5MildIT0oMHgzYWMrMTM3LTB4NDM0KSl7CiBhdF9wcmludChMT0dfREVCVUcsCiAiXHg1N1x4NGRceDUzXHg1Zlx4NTVceDQ0XHg0OFx4NWZceDQzXHg0Zlx4NGVceDQzXHg0MVx4NTRceDVmXHgzMVx4MzZceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyMFx4NzNceDY1XHg2N1x4NmRceDY1XHg2ZVx4NzRceDIxIgogKTsqaXNfZmlyc3Rfc2VnbWVudF9wdHI9RkFMU0U7cmV0dXJuIFRSVUU7fWVsc2V7cmV0dXJuIFRSVUU7fX1lbHNle251bV9oZWFkZXJzKysKLTtwb3MrPSgoMHgyOWYrNjg1OS0weDFkNjgpK2llZGwpO319cmV0dXJuIFRSVUU7fXN0YXRpYyBVSU5UOCAKKztwb3MrPSgoMHhhYjQrMTA4OS0weGVmMykraWVkbCk7fX1yZXR1cm4gVFJVRTt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfc3BlY2lhbF9zbShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCi1wb3M9KDB4MTAwNSsyNTg4LTB4MWEyMSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHg4OWYrMTI3OC0weGQ5ZCk7fWlmKHVkaAotW3Bvc108KDB4MmU2KzEwMDgtMHg2ZDQpKXthdF9wcmludChMT0dfREVCVUcsCitwb3M9KDB4MTg0NSsyOTgwLTB4MjNlOSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHg4MWIrNDg1My0weDFiMTApO31pZigKK3VkaFtwb3NdPCgweGMxMSs1MzYxLTB4MjEwMCkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUzXHg3MFx4NjVceDYzXHg2OVx4NjFceDZjXHgyMFx4NTNceDRkXHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweGExKzg4OTctMHgyMzYyKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQorLHVkaFtwb3NdKTtyZXR1cm4oMHgxMzc1KzM3NC0weDE0ZWIpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CiBXTVNfVURIX1NQRUNJQUxfU007aGVhZGVyX3B0ci0+dS5zcGVjaWFsX3NtLm1zZ193YWl0aW5nPSgKLXdtc19nd19tc2dfd2FpdGluZ19lX3R5cGUpKCh1ZGhbcG9zXT4+KDB4Nzk5Kzc0MDItMHgyNDdjKT09KDB4YWU4KzY5Ni0weGRhMCkpPword21zX2d3X21zZ193YWl0aW5nX2VfdHlwZSkoKHVkaFtwb3NdPj4oMHg1NTErNTg0Mi0weDFjMWMpPT0oMHhlNTcrMjc5OS0weDE5NDYpKT8KIFdNU19HV19NU0dfV0FJVElOR19ESVNDQVJEOldNU19HV19NU0dfV0FJVElOR19TVE9SRSk7aGVhZGVyX3B0ci0+dS5zcGVjaWFsX3NtLgotbXNnX3dhaXRpbmdfa2luZD0od21zX2d3X21zZ193YWl0aW5nX2tpbmRfZV90eXBlKSh1ZGhbcG9zKytdJigweGY2Kzg3NDUtMHgyMmEwKSkKLTtoZWFkZXJfcHRyLT51LnNwZWNpYWxfc20ubWVzc2FnZV9jb3VudD11ZGhbcG9zKytdO3JldHVybih1ZGhbKDB4NTIyKzE4MDYtMHhjMzApCi1dKygweGFkOCsyMDk2LTB4MTMwNykpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfcG9ydF84KGNvbnN0IFVJTlQ4KnVkaCwKLXdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgyM2ErMTg5MS0weDk5ZCk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyCi09PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTsKLXJldHVybigweDFkZDUrMTY4My0weDI0NjgpO31pZih1ZGhbcG9zXTwoMHgxNTgyKzQxMjktMHgyNWExKSl7YXRfcHJpbnQoTE9HX0RFQlVHCi0sCittc2dfd2FpdGluZ19raW5kPSh3bXNfZ3dfbXNnX3dhaXRpbmdfa2luZF9lX3R5cGUpKHVkaFtwb3MrK10mKDB4ODJiKzQ4MzItMHgxYThjKQorKTtoZWFkZXJfcHRyLT51LnNwZWNpYWxfc20ubWVzc2FnZV9jb3VudD11ZGhbcG9zKytdO3JldHVybih1ZGhbCisoMHgxMGErNzY1NS0weDFlZjEpXSsoMHg3ZCs0NzU3LTB4MTMxMSkpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfcG9ydF84KAorY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgyMzUrNjgwMi0weDFjYzcpO2lmKHVkaAorPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxMDU2KzE0NDUtMHgxNWZiKTt9aWYoCit1ZGhbcG9zXTwoMHgzYWQrNjUxNi0weDFkMWYpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUwXHg2Zlx4NzJceDc0XHgyMFx4MzhceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4YzArMTM5Ni0weDYzNCk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1BPUlRfODsKLWhlYWRlcl9wdHItPnUud2FwXzguZGVzdF9wb3J0PXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS53YXBfOC5vcmlnX3BvcnQ9dWRoW3BvcysrCi1dO3JldHVybih1ZGhbKDB4NjdmKzUwMDMtMHgxYTBhKV0rKDB4MWFkYysxMjIzLTB4MWZhMikpO31zdGF0aWMgVUlOVDggCi13bXNfdHNfZGVjb2RlX3VkaF9wb3J0MTYoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0KLSgweDJmYSs5MTY5LTB4MjZjYik7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxODYrMjQ1MS0weGIxOSk7fWlmKHVkaAotW3Bvc108KDB4YjQrMzI1Ni0weGQ2OCkpe2F0X3ByaW50KExPR19ERUJVRywKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MTZmMSszODcyLTB4MjYxMSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KK1dNU19VREhfUE9SVF84O2hlYWRlcl9wdHItPnUud2FwXzguZGVzdF9wb3J0PXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS53YXBfOC4KK29yaWdfcG9ydD11ZGhbcG9zKytdO3JldHVybih1ZGhbKDB4MWE3MCsxMzg2LTB4MWZkYSldKygweDRiOSsxMDIzLTB4OGI3KSk7fQorc3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3BvcnQxNihjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cikKK3tVSU5UOCBwb3M9KDB4OTMyKzE4ODUtMHgxMDhmKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KAorTE9HX0RFQlVHLCJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybgorKDB4MTJjMCszNTE1LTB4MjA3Yik7fWlmKHVkaFtwb3NdPCgweDY3OSs1Mjc4LTB4MWIxMykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUwXHg2Zlx4NzJceDc0XHgzMVx4MzZceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4NTMwKzIwMDUtMHhkMDUpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9QT1JUXzE2O3BvcysrCi07aGVhZGVyX3B0ci0+dS53YXBfMTYuZGVzdF9wb3J0PXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS53YXBfMTYuZGVzdF9wb3J0PSgKLVVJTlQxNikoaGVhZGVyX3B0ci0+dS53YXBfMTYuZGVzdF9wb3J0PDwoMHg4ZDUrNTM3Ni0weDFkY2QpKXx1ZGhbcG9zKytdOworLHVkaFtwb3NdKTtyZXR1cm4oMHgxNmM4KzQwMjUtMHgyNjgxKTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfUE9SVF8xNjtwb3MKKysrO2hlYWRlcl9wdHItPnUud2FwXzE2LmRlc3RfcG9ydD11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUud2FwXzE2LmRlc3RfcG9ydD0oCitVSU5UMTYpKGhlYWRlcl9wdHItPnUud2FwXzE2LmRlc3RfcG9ydDw8KDB4Mzk3KzgyMTAtMHgyM2ExKSl8dWRoW3BvcysrXTsKIGhlYWRlcl9wdHItPnUud2FwXzE2Lm9yaWdfcG9ydD11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUud2FwXzE2Lm9yaWdfcG9ydD0oVUlOVDE2Ci0pKGhlYWRlcl9wdHItPnUud2FwXzE2Lm9yaWdfcG9ydDw8KDB4MTQwYys0NTE2LTB4MjVhOCkpfHVkaFtwb3MrK107cmV0dXJuKHVkaFsKLSgweDcwYys1NzY3LTB4MWQ5MyldKygweGMzOCsxMTYwLTB4MTBiZikpO31zdGF0aWMgVUlOVDggCispKGhlYWRlcl9wdHItPnUud2FwXzE2Lm9yaWdfcG9ydDw8KDB4ODc4KzQ1NDAtMHgxYTJjKSl8dWRoW3BvcysrXTtyZXR1cm4odWRoWworKDB4MTdmOCsxNjkyLTB4MWU5NCldKygweGYzMisxMDM4LTB4MTMzZikpO31zdGF0aWMgVUlOVDggCiB3bXNfdHNfZGVjb2RlX3VkaF90ZXh0X2Zvcm1hdHRpbmcoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpewotVUlOVDggcG9zPSgweGU0OCszODI2LTB4MWQzYSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcKLSwiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgzODUrNTk5NC0weDFhZWYpO31pZigKLXVkaFtwb3NdPCgweGEzYis2OTUwLTB4MjU1ZSkpe2F0X3ByaW50KExPR19ERUJVRywKK1VJTlQ4IHBvcz0oMHgxM2Q0KzMxOTYtMHgyMDUwKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KAorTE9HX0RFQlVHLCJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybgorKDB4MTc4NiszNTI0LTB4MjU0YSk7fWlmKHVkaFtwb3NdPCgweDE0ZjkrMTIyLTB4MTU3MCkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDU0XHg2NVx4NzhceDc0XHgyMFx4NDZceDZmXHg3Mlx4NmRceDYxXHg3NFx4NzRceDY5XHg2ZVx4NjdceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4MTc4MCs0NTItMHgxOTQ0KTt9aWYodWRoW3Bvc10+PSgweDQxMys0MDU3LTB4MTNlOCkpeworLHVkaFtwb3NdKTtyZXR1cm4oMHgxMzEwKzE1OTItMHgxOTQ4KTt9aWYodWRoW3Bvc10+PSgweDc3YSsyNDg1LTB4MTEyYikpewogaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy5pc19jb2xvcl9wcmVzZW50PVRSVUU7fWVsc2V7aGVhZGVyX3B0ci0+dS4KIHRleHRfZm9ybWF0aW5nLmlzX2NvbG9yX3ByZXNlbnQ9RkFMU0U7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KIFdNU19VREhfVEVYVF9GT1JNQVRJTkc7aGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy5zdGFydF9wb3NpdGlvbj11ZGhbcG9zKytdOwogaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy50ZXh0X2Zvcm1hdHRpbmdfbGVuZ3RoPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS4KIHRleHRfZm9ybWF0aW5nLmFsaWdubWVudF90eXBlPSh3bXNfdWRoX2FsaWdubWVudF9lX3R5cGUpKHVkaFtwb3NdJgotKDB4MThhYSsxNjE1LTB4MWVmNikpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuZm9udF9zaXplPSgKLXdtc191ZGhfZm9udF9zaXplX2VfdHlwZSkoKHVkaFtwb3NdJigweDEzOTIrMzQ3NS0weDIxMTkpKT4+KDB4MTg1YSs3MTUtMHgxYjIzKSk7Ci1oZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLnN0eWxlX2JvbGQ9KHVkaFtwb3NdJigweGZhYys0NjktMHgxMTcxKSk+PgotKDB4MTQ4OCs5MTMtMHgxODE1KTtoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLnN0eWxlX2l0YWxpYz0odWRoW3Bvc10mCi0oMHg3ZDcrNTg1Ni0weDFlOTcpKT4+KDB4YzI0KzI4NzEtMHgxNzU2KTtoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLgotc3R5bGVfdW5kZXJsaW5lZD0odWRoW3Bvc10mKDB4YTMzKzU3NjQtMHgyMDc3KSk+PigweGU4Nis0NTcyLTB4MjA1Yyk7aGVhZGVyX3B0cgotLT51LnRleHRfZm9ybWF0aW5nLnN0eWxlX3N0cmlrZXRocm91Z2g9KHVkaFtwb3NdJigweDFlOCszNzQwLTB4MTAwNCkpPj4KLSgweDhmYSsxNTU4LTB4ZjA5KTtwb3MrKztpZihoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmlzX2NvbG9yX3ByZXNlbnQpeworKDB4Y2U3KzE5OC0weGRhYSkpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuZm9udF9zaXplPSgKK3dtc191ZGhfZm9udF9zaXplX2VfdHlwZSkoKHVkaFtwb3NdJigweDg2OSs2MTcwLTB4MjA3NykpPj4oMHgxZmQrNDE0Ny0weDEyMmUpKTsKK2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfYm9sZD0odWRoW3Bvc10mKDB4ODJhKzY4NC0weGFjNikpPj4KKygweDkwNCs0NzUtMHhhZGIpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfaXRhbGljPSh1ZGhbcG9zXSYKKygweDM4OCs5OTMtMHg3NDkpKT4+KDB4NDIrMzI4OS0weGQxNik7aGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy4KK3N0eWxlX3VuZGVybGluZWQ9KHVkaFtwb3NdJigweDU4YysxODk2LTB4Y2I0KSk+PigweDIyNzgrNTQzLTB4MjQ5MSk7aGVhZGVyX3B0ci0+Cit1LnRleHRfZm9ybWF0aW5nLnN0eWxlX3N0cmlrZXRocm91Z2g9KHVkaFtwb3NdJigweDM3ZisyODM0LTB4ZTExKSk+PgorKDB4NTQ5KzI5NjUtMHgxMGQ3KTtwb3MrKztpZihoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmlzX2NvbG9yX3ByZXNlbnQpewogaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy50ZXh0X2NvbG9yX2ZvcmVncm91bmQ9KHdtc191ZGhfdGV4dF9jb2xvcl9lX3R5cGUpKAotdWRoW3Bvc10mKDB4YTE4KzM2NjEtMHgxODU2KSk7aGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy50ZXh0X2NvbG9yX2JhY2tncm91bmQKLT0od21zX3VkaF90ZXh0X2NvbG9yX2VfdHlwZSkoKHVkaFtwb3NdJigweDE1ZTArODcxLTB4MTg1NykpPj4KLSgweDEwZWIrMzkwMS0weDIwMjQpKTtwb3MrKzt9cmV0dXJuKHVkaFsoMHhjMmIrNjI2Ni0weDI0YTUpXSsoMHgyMmFhKzM3OC0weDI0MjMpCi0pO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfcHJlX2RlZl9zb3VuZChjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqCi1oZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4ODgzKzU3MzYtMHgxZWViKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpewotYXRfcHJpbnQoTE9HX0RFQlVHLCJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybgotKDB4NzZjKzIwMjUtMHhmNTUpO31pZih1ZGhbcG9zXTwoMHg2NzYrMjY1NS0weDEwZDMpKXthdF9wcmludChMT0dfREVCVUcsCit1ZGhbcG9zXSYoMHgxNTdjKzg5MC0weDE4ZTcpKTtoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLnRleHRfY29sb3JfYmFja2dyb3VuZAorPSh3bXNfdWRoX3RleHRfY29sb3JfZV90eXBlKSgodWRoW3Bvc10mKDB4MTg2YysyOTE4LTB4MjJlMikpPj4oMHg4ZmErMTQyNy0weGU4OSkKKyk7cG9zKys7fXJldHVybih1ZGhbKDB4MjhiKzE2NjUtMHg5MGMpXSsoMHg5YWQrNDgwNS0weDFjNzEpKTt9c3RhdGljIFVJTlQ4IAord21zX3RzX2RlY29kZV91ZGhfcHJlX2RlZl9zb3VuZChjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDgKKyBwb3M9KDB4MWM1KzI2OTAtMHhjNDcpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4OGE2KzQwNTEtMHgxODc5KTt9aWYoCit1ZGhbcG9zXTwoMHgzMTgrMTQ0OC0weDhiZSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUwXHg3Mlx4NjVceDIwXHg0NFx4NjVceDY2XHg2OVx4NmVceDY1XHg2NFx4MjBceDUzXHg2Zlx4NzVceDZlXHg2NFx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHhkNTMrNjQ2OC0weDI2OTcpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CissdWRoW3Bvc10pO3JldHVybigweDM3MisxNzEyLTB4YTIyKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9QUkVfREVGX1NPVU5EO2hlYWRlcl9wdHItPnUucHJlX2RlZl9zb3VuZC5wb3NpdGlvbj11ZGhbcG9zKytdO2hlYWRlcl9wdHIKLS0+dS5wcmVfZGVmX3NvdW5kLnNuZF9udW1iZXI9dWRoW3BvcysrXTtyZXR1cm4odWRoWygweDE4MjErMjUzNS0weDIyMDgpXSsKLSgweDMzNSs4MjcxLTB4MjM4MykpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfdXNlcl9kZWZfc291bmQoY29uc3QgVUlOVDgqCi11ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDI2Mis1MTM3LTB4MTY3MyksajtpZih1ZGg9PU5VTEx8fAorLT51LnByZV9kZWZfc291bmQuc25kX251bWJlcj11ZGhbcG9zKytdO3JldHVybih1ZGhbKDB4NWEyKzIwMTYtMHhkODIpXSsKKygweGRhYisxNDQtMHhlM2EpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3VzZXJfZGVmX3NvdW5kKGNvbnN0IFVJTlQ4KgordWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHhjYTQrNDI3LTB4ZTRmKSxqO2lmKHVkaD09TlVMTHx8CiBoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxMDE0KzMzNzMtMHgxZDQxKTt9aWYoCi11ZGhbcG9zXT09KDB4Yjg1KzQxMDAtMHgxYjg5KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MWFmNyszMDAtMHgxYzIzKTt9aWYoCit1ZGhbcG9zXT09KDB4MTc5ZCs4NzItMHgxYjA1KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTVceDczXHg2NVx4NzJceDIwXHg0NFx4NjVceDY2XHg2OVx4NmVceDY1XHg2NFx4MjBceDUzXHg2Zlx4NzVceDZlXHg2NFx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2ZVx4NmZceDIwXHg0NFx4NjFceDc0XHg2MSIKLSk7cmV0dXJuKDB4M2U2KzM1MTYtMHgxMWEyKTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfVVNFUl9ERUZfU09VTkQ7Ci1oZWFkZXJfcHRyLT51LnVzZXJfZGVmX3NvdW5kLmRhdGFfbGVuZ3RoPXVkaFtwb3MrK10tKDB4MTk2ZiszMDY5LTB4MjU2Yik7CispO3JldHVybigweDIyODcrMTE0MC0weDI2ZmIpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9VU0VSX0RFRl9TT1VORDsKK2hlYWRlcl9wdHItPnUudXNlcl9kZWZfc291bmQuZGF0YV9sZW5ndGg9dWRoW3BvcysrXS0oMHhkNTArNTA3OS0weDIxMjYpOwogaGVhZGVyX3B0ci0+dS51c2VyX2RlZl9zb3VuZC5wb3NpdGlvbj11ZGhbcG9zKytdO2lmKGhlYWRlcl9wdHItPnUudXNlcl9kZWZfc291bmQKIC5kYXRhX2xlbmd0aD5XTVNfVURIX01BWF9TTkRfU0laRSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGRceDYxXHg3OFx4MjBceDUzXHg2OVx4N2FceDY1XHgyMFx4NDVceDc4XHg2M1x4NjVceDY1XHg2NFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg2OVx4NjRceDIwXHgyNVx4NjRceDIwIgotLGhlYWRlcl9wdHItPmhlYWRlcl9pZCk7cmV0dXJuKDB4MTc4OSsyNjA2LTB4MjFiNyk7fW1lbXNldChoZWFkZXJfcHRyLT51LgotdXNlcl9kZWZfc291bmQudXNlcl9kZWZfc291bmQsKDB4ZjYwKzU3MDQtMHgyNGE5KSxXTVNfVURIX01BWF9TTkRfU0laRSk7Zm9yKGo9Ci0oMHhkOSs5MDQwLTB4MjQyOSk7ajxoZWFkZXJfcHRyLT51LnVzZXJfZGVmX3NvdW5kLmRhdGFfbGVuZ3RoO2orKyloZWFkZXJfcHRyLT51LgotdXNlcl9kZWZfc291bmQudXNlcl9kZWZfc291bmRbal09dWRoW3BvcysrXTtyZXR1cm4gcG9zO31zdGF0aWMgVUlOVDggCissaGVhZGVyX3B0ci0+aGVhZGVyX2lkKTtyZXR1cm4oMHgxNzMrMzc5NS0weDEwNDYpO31tZW1zZXQoaGVhZGVyX3B0ci0+dS4KK3VzZXJfZGVmX3NvdW5kLnVzZXJfZGVmX3NvdW5kLCgweDRjZis2NjYxLTB4MWRkNSksV01TX1VESF9NQVhfU05EX1NJWkUpO2ZvcihqPQorKDB4OTY1KzM3NjItMHgxODE3KTtqPGhlYWRlcl9wdHItPnUudXNlcl9kZWZfc291bmQuZGF0YV9sZW5ndGg7aisrKWhlYWRlcl9wdHItPnUKKy51c2VyX2RlZl9zb3VuZC51c2VyX2RlZl9zb3VuZFtqXT11ZGhbcG9zKytdO3JldHVybiBwb3M7fXN0YXRpYyBVSU5UOCAKIHdtc190c19kZWNvZGVfdWRoX3ByZV9kZWZfYW5pbShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCi1wb3M9KDB4ZTBkKzUxNTAtMHgyMjJiKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKLSJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweGE1Mys1OTE1LTB4MjE2ZSk7fWlmKAotdWRoW3Bvc10hPSgweDE2ZWYrMzQzMy0weDI0NTYpKXthdF9wcmludChMT0dfREVCVUcsCitwb3M9KDB4YWE5KzcxODMtMHgyNmI4KTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweGUzKzQyOTYtMHgxMWFiKTt9aWYodWRoCitbcG9zXSE9KDB4MmY4Kzg5NjktMHgyNWZmKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTBceDcyXHg2NVx4MjBceDQ0XHg2NVx4NjZceDY5XHg2ZVx4NjVceDY0XHgyMFx4NDFceDZlXHg2OVx4NmRceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHgxNWFhKzQ2Ni0weDE3N2MpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CissdWRoW3Bvc10pO3JldHVybigweDgyNis3Mjk5LTB4MjRhOSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KIFdNU19VREhfUFJFX0RFRl9BTklNO2hlYWRlcl9wdHItPnUucHJlX2RlZl9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+CiB1LnByZV9kZWZfYW5pbS5hbmltYXRpb25fbnVtYmVyPXVkaFtwb3MrK107cmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfbGFyZ2VfYW5pbShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCi1wb3M9KDB4ODlhKzY3MjMtMHgyMmRkKSxqLGs7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxNDEwKzI0MTktMHgxZDgzKTt9aWYoCitwb3M9KDB4MTdjMSsxMjItMHgxODNiKSxqLGs7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxODRiKzIyNzYtMHgyMTJmKTt9aWYoCiB1ZGhbcG9zXSE9KFdNU19VREhfQU5JTV9OVU1fQklUTUFQUypXTVNfVURIX0xBUkdFX0JJVE1BUF9TSVpFKwotKDB4MTFhMysyOTQ2LTB4MWQyNCkpKXthdF9wcmludChMT0dfREVCVUcsCisoMHhmMmErNDgyNC0weDIyMDEpKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NGNceDYxXHg3Mlx4NjdceDY1XHgyMFx4NDRceDY1XHg2Nlx4NjlceDZlXHg2NVx4NjRceDIwXHg0MVx4NmVceDY5XHg2ZFx4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDE3NDUrMjEwNC0weDFmN2QpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9MQVJHRV9BTklNOwotcG9zKys7aGVhZGVyX3B0ci0+dS5sYXJnZV9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKGo9KDB4MmY3KzQ1NzMtMHgxNGQ0KTtqPAotV01TX1VESF9BTklNX05VTV9CSVRNQVBTO2orKylmb3Ioaz0oMHgxOWY3KzExOTEtMHgxZTllKTtrPAorLHVkaFtwb3NdKTtyZXR1cm4oMHg1OSs1NzI5LTB4MTZiYSk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX0xBUkdFX0FOSU07Citwb3MrKztoZWFkZXJfcHRyLT51LmxhcmdlX2FuaW0ucG9zaXRpb249dWRoW3BvcysrXTtmb3Ioaj0oMHgxZmFmKzEwNTMtMHgyM2NjKTtqPAorV01TX1VESF9BTklNX05VTV9CSVRNQVBTO2orKylmb3Ioaz0oMHgxNWNjKzM1ODAtMHgyM2M4KTtrPAogV01TX1VESF9MQVJHRV9CSVRNQVBfU0laRTtrKyspaGVhZGVyX3B0ci0+dS5sYXJnZV9hbmltLmRhdGFbal1ba109dWRoW3BvcysrXTsKIHJldHVybiBwb3M7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9zbWFsbF9hbmltKGNvbnN0IFVJTlQ4KnVkaCwKLXdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgyMGIrMjE2MC0weGE3YiksaixrO2lmKHVkaD09TlVMTHx8Cit3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MTVmKzIyMjQtMHhhMGYpLGosaztpZih1ZGg9PU5VTEx8fAogaGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4YWFhKzQwNDEtMHgxYTczKTt9aWYoCi11ZGhbcG9zXSE9KFdNU19VREhfQU5JTV9OVU1fQklUTUFQUypXTVNfVURIX1NNQUxMX0JJVE1BUF9TSVpFKwotKDB4MzM1KzQ3NDMtMHgxNWJiKSkpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDIxNis0NDI5LTB4MTM2Myk7fWlmKAordWRoW3Bvc10hPShXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFMqV01TX1VESF9TTUFMTF9CSVRNQVBfU0laRSsoMHgzNGIrMjc4Ny0weGUyZCkKKykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDRjXHg2MVx4NzJceDY3XHg2NVx4MjBceDQ0XHg2NVx4NjZceDY5XHg2ZVx4NjVceDY0XHgyMFx4NDFceDZlXHg2OVx4NmRceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHhjZCs0NjY3LTB4MTMwOCk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1NNQUxMX0FOSU07Ci1wb3MrKztoZWFkZXJfcHRyLT51LnNtYWxsX2FuaW0ucG9zaXRpb249dWRoW3BvcysrXTtmb3Ioaj0oMHgyOTIrNjQyMy0weDFiYTkpO2o8Ci1XTVNfVURIX0FOSU1fTlVNX0JJVE1BUFM7aisrKWZvcihrPSgweDdiMSsyNTkzLTB4MTFkMik7azwKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MTQ4OSsyMjg2LTB4MWQ3Nyk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1NNQUxMX0FOSU07Citwb3MrKztoZWFkZXJfcHRyLT51LnNtYWxsX2FuaW0ucG9zaXRpb249dWRoW3BvcysrXTtmb3Ioaj0oMHg2MjkrNDc3MS0weDE4Y2MpO2o8CitXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFM7aisrKWZvcihrPSgweGQ1MysxOTA1LTB4MTRjNCk7azwKIFdNU19VREhfU01BTExfQklUTUFQX1NJWkU7aysrKWhlYWRlcl9wdHItPnUuc21hbGxfYW5pbS5kYXRhW2pdW2tdPXVkaFtwb3MrK107CiByZXR1cm4gcG9zO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfbGFyZ2VfcGljdHVyZShjb25zdCBVSU5UOCp1ZGgsCi13bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MTZkNCszNTkzLTB4MjRkZCksajtpZih1ZGg9PU5VTEx8fAord21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDk4MysyOTgwLTB4MTUyNyksajtpZih1ZGg9PU5VTEx8fAogaGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4Njk1KzU2NzktMHgxY2M0KTt9aWYoCi11ZGhbcG9zXSE9V01TX1VESF9MQVJHRV9QSUNfU0laRSsoMHgxNjcrMjg5OC0weGNiOCkpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweGEzMis2NTM2LTB4MjNiYSk7fWlmKAordWRoW3Bvc10hPVdNU19VREhfTEFSR0VfUElDX1NJWkUrKDB4NmM3KzIxMzAtMHhmMTgpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0Y1x4NjFceDcyXHg2N1x4NjVceDIwXHg1MFx4NjlceDYzXHg3NFx4NzVceDcyXHg2NVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHg4MTQrNTc1OC0weDFlOTIpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9Ci1XTVNfVURIX0xBUkdFX1BJQ1RVUkU7cG9zKys7aGVhZGVyX3B0ci0+dS5sYXJnZV9waWN0dXJlLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKAotaj0oMHgxOTE2KzE3NC0weDE5YzQpO2o8V01TX1VESF9MQVJHRV9QSUNfU0laRTtqKyspaGVhZGVyX3B0ci0+dS5sYXJnZV9waWN0dXJlLgotZGF0YVtqXT11ZGhbcG9zKytdO3JldHVybiBwb3M7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9zbWFsbF9waWN0dXJlKAotY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgxMzQwKzMyOC0weDE0ODgpLGo7aWYoCi11ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKLSJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDE3NjArMTYxOC0weDFkYjIpO31pZigKLXVkaFtwb3NdIT1XTVNfVURIX1NNQUxMX1BJQ19TSVpFKygweDk0Nis2MTc5LTB4MjE2OCkpe2F0X3ByaW50KExPR19ERUJVRywKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MCs5MzY4LTB4MjQ5OCk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX0xBUkdFX1BJQ1RVUkU7Citwb3MrKztoZWFkZXJfcHRyLT51LmxhcmdlX3BpY3R1cmUucG9zaXRpb249dWRoW3BvcysrXTtmb3Ioaj0oMHhmNTkrNDQzMy0weDIwYWEpOworajxXTVNfVURIX0xBUkdFX1BJQ19TSVpFO2orKyloZWFkZXJfcHRyLT51LmxhcmdlX3BpY3R1cmUuZGF0YVtqXT11ZGhbcG9zKytdOworcmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3NtYWxsX3BpY3R1cmUoY29uc3QgVUlOVDgqdWRoLAord21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDE0NDIrMTA1MC0weDE4NWMpLGo7aWYodWRoPT1OVUxMfHwKK2hlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDFiYTUrMjY2My0weDI2MGMpO31pZigKK3VkaFtwb3NdIT1XTVNfVURIX1NNQUxMX1BJQ19TSVpFKygweDFlZCs3Mjc0LTB4MWU1Nikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUzXHg2ZFx4NjFceDZjXHg2Y1x4MjBceDUwXHg2OVx4NjNceDc0XHg3NVx4NzJceDY1XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDY3XHg2ZVx4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweGNlNys2NTIxLTB4MjY2MCk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MTkyMys5MzgtMHgxY2NkKTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9TTUFMTF9QSUNUVVJFO3BvcysrO2hlYWRlcl9wdHItPnUuc21hbGxfcGljdHVyZS5wb3NpdGlvbj11ZGhbcG9zKytdO2ZvcigKLWo9KDB4OWM1KzQ2NDctMHgxYmVjKTtqPFdNU19VREhfU01BTExfUElDX1NJWkU7aisrKWhlYWRlcl9wdHItPnUuc21hbGxfcGljdHVyZS4KK2o9KDB4MjFmKzM4MzYtMHgxMTFiKTtqPFdNU19VREhfU01BTExfUElDX1NJWkU7aisrKWhlYWRlcl9wdHItPnUuc21hbGxfcGljdHVyZS4KIGRhdGFbal09dWRoW3BvcysrXTtyZXR1cm4gcG9zO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfdmFyX3BpY3R1cmUoY29uc3QgCi1VSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDEyMTYrMzQ4MS0weDFmYWYpLGoscGljX3NpemU7CitVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDFjYjkrMjIxMi0weDI1NWQpLGoscGljX3NpemU7CiBpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKLSJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDEzY2YrMjc0LTB4MTRlMSk7fWlmKAotdWRoW3Bvc10+V01TX1VESF9WQVJfUElDX1NJWkUrKDB4NjNkKzgyNDUtMHgyNjZmKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTIyMSsyNTUtMHgxMzIwKTt9aWYoCit1ZGhbcG9zXT5XTVNfVURIX1ZBUl9QSUNfU0laRSsoMHgxODY3KzMyMy0weDE5YTcpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg1Nlx4NjFceDcyXHgyMFx4NTBceDY5XHg2M1x4NzRceDc1XHg3Mlx4NjVceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4NzVhKzUyNTUtMHgxYmUxKTt9aWYoKHVkaFtwb3NdLSgweDE0NzQrMjU1NC0weDFlNmIpKSE9KHVkaFsKLXBvcysoMHgxNmIwKzMwMTAtMHgyMjcwKV0qdWRoW3BvcysoMHgzYTUrODMzLTB4NmUzKV0pKXthdF9wcmludChMT0dfREVCVUcsCissdWRoW3Bvc10pO3JldHVybigweGRmMyszMDU0LTB4MTllMSk7fWlmKCh1ZGhbcG9zXS0oMHhiOWMrNjM5MC0weDI0OGYpKSE9KHVkaFsKK3BvcysoMHgxYjQrNDY3OS0weDEzZjkpXSp1ZGhbcG9zKygweDg3MCsxNDU2LTB4ZTFkKV0pKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg1Nlx4NjFceDcyXHgyMFx4NTBceDY5XHg2M1x4NzRceDc1XHg3Mlx4NjVceDJjXHgyMFx4NzBceDY5XHg2M1x4MjBceDczXHg2OVx4N2FceDY1XHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgyMFx4NmRceDY5XHg3M1x4NmRceDYxXHg3NFx4NjNceDY4XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OFx4NjVceDY5XHg2N1x4NzRceDIwXHg2MVx4NmVceDY0XHgyMFx4NzdceDY1XHg2OVx4NjdceDY4XHg3NCIKLSk7cmV0dXJuKDB4MWM4ZisxNjMyLTB4MjJlZik7fXBpY19zaXplPXVkaFtwb3MrK10tKDB4YjVkKzUzOTktMHgyMDcxKTtoZWFkZXJfcHRyCispO3JldHVybigweDMyZis0Mjc4LTB4MTNlNSk7fXBpY19zaXplPXVkaFtwb3MrK10tKDB4YjQ5KzMxOTItMHgxN2JlKTtoZWFkZXJfcHRyCiAtPmhlYWRlcl9pZD1XTVNfVURIX1ZBUl9QSUNUVVJFO2hlYWRlcl9wdHItPnUudmFyX3BpY3R1cmUucG9zaXRpb249dWRoW3BvcysrXTsKLWhlYWRlcl9wdHItPnUudmFyX3BpY3R1cmUud2lkdGg9KFVJTlQ4KSh1ZGhbcG9zKytdKigweDEyNmQrOTA5LTB4MTVmMikpOwotaGVhZGVyX3B0ci0+dS52YXJfcGljdHVyZS5oZWlnaHQ9dWRoW3BvcysrXTtmb3Ioaj0oMHgyYTErMjY4NC0weGQxZCk7ajxwaWNfc2l6ZQoraGVhZGVyX3B0ci0+dS52YXJfcGljdHVyZS53aWR0aD0oVUlOVDgpKHVkaFtwb3MrK10qKDB4ODExKzEyMjQtMHhjZDEpKTsKK2hlYWRlcl9wdHItPnUudmFyX3BpY3R1cmUuaGVpZ2h0PXVkaFtwb3MrK107Zm9yKGo9KDB4NGQ1KzgxOTEtMHgyNGQ0KTtqPHBpY19zaXplCiAmJmo8V01TX1VESF9WQVJfUElDX1NJWkU7aisrKWhlYWRlcl9wdHItPnUudmFyX3BpY3R1cmUuZGF0YVtqXT11ZGhbcG9zKytdO3JldHVybgogIHBvczt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3VzZXJfcHJvbXB0KGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSoKLWhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHg2NjcrNTY2MC0weDFjODMpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7CitoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4Mjg2KzE1NTEtMHg4OTUpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7CiBhdF9wcmludChMT0dfREVCVUcsIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuCi0oMHgzMDIrNDM5OS0weDE0MzEpO31pZih1ZGhbcG9zXTwoMHgxZmVkKzE1MDQtMHgyNWNjKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4NDcyKzYzNDQtMHgxZDNhKTt9aWYodWRoW3Bvc108KDB4NGYyKzc2OTUtMHgyMzAwKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg1NVx4NzNceDY1XHg3Mlx4MjBceDUwXHg3Mlx4NmZceDZkXHg3MFx4NzRceDIwXHg3MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4NzYwKzY0ODktMHgyMGI5KTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQorLHVkaFtwb3NdKTtyZXR1cm4oMHhhNSs3MjctMHgzN2MpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CiBXTVNfVURIX1VTRVJfUFJPTVBUO2hlYWRlcl9wdHItPnUudXNlcl9wcm9tcHQubnVtYmVyX29mX29iamVjdHM9dWRoW3BvcysrXTsKLXJldHVybih1ZGhbKDB4MjQ3MisyNTUtMHgyNTcxKV0rKDB4MTEyYSs0ODE4LTB4MjNmYikpO31zdGF0aWMgVUlOVDggCityZXR1cm4odWRoWygweDUwZis3MTY2LTB4MjEwZCldKygweDE1YWMrMTA5NS0weDE5ZjIpKTt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfZW8oY29uc3QgVUlOVDgqdWRoLFVJTlQ4IGZpcnN0X3NlZ21lbnQsd21zX3VkaF9zX3R5cGUqCi1oZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4ZDkzKzYxNDAtMHgyNThmKSx1ZGhfbGVuZ3RoO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09CitoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4Yjg5KzM2NjAtMHgxOWQ1KSx1ZGhfbGVuZ3RoO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09CiBOVUxMKXthdF9wcmludChMT0dfREVCVUcsIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuCi0oMHgxNzY1KzM1MzctMHgyNTM2KTt9aWYodWRoW3Bvc109PSgweDEzYjQrNDM1NS0weDI0YjcpKXthdF9wcmludChMT0dfREVCVUcsCisoMHgyNjYrNjE4MS0weDFhOGIpO31pZih1ZGhbcG9zXT09KDB4OWErNzYyNy0weDFlNjUpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ1XHg3OFx4NzRceDY1XHg2ZVx4NjRceDY1XHg2NFx4MjBceDRmXHg2Mlx4NmFceDY1XHg2M1x4NzRceDIwXHg3MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NmVceDZmXHgyMFx4NDRceDYxXHg3NFx4NjEiCi0pO3JldHVybigweDg0NSsxMTUyLTB4Y2M1KTt9dWRoX2xlbmd0aD11ZGhbcG9zKytdO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyk7cmV0dXJuKDB4MTQ2OSsyOTAyLTB4MWZiZik7fXVkaF9sZW5ndGg9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CiBXTVNfVURIX0VYVEVOREVEX09CSkVDVDtoZWFkZXJfcHRyLT51LmVvLmZpcnN0X3NlZ21lbnQ9Zmlyc3Rfc2VnbWVudDtpZigKIGZpcnN0X3NlZ21lbnQ9PVRSVUUpe2lmKHVkaF9sZW5ndGg8V01TX1VESF9PQ1RFVFNfRU9fSEVBREVSKXtyZXR1cm4KLSgweDdlNys3NTA2LTB4MjUzOSk7fWhlYWRlcl9wdHItPnUuZW8ucmVmZXJlbmNlPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5lby4KLWxlbmd0aD11ZGhbcG9zKytdPDwoMHgxODFhKzM2LTB4MTgzNik7aGVhZGVyX3B0ci0+dS5lby5sZW5ndGh8PXVkaFtwb3MrK107CisoMHgyZDUrMjMzNC0weGJmMyk7fWhlYWRlcl9wdHItPnUuZW8ucmVmZXJlbmNlPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5lby4KK2xlbmd0aD11ZGhbcG9zKytdPDwoMHgxMDIxKzIwNzEtMHgxODMwKTtoZWFkZXJfcHRyLT51LmVvLmxlbmd0aHw9dWRoW3BvcysrXTsKIGhlYWRlcl9wdHItPnUuZW8uY29udHJvbD11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuZW8udHlwZT0od21zX3VkaF9lb19pZF9lX3R5cGUpCi11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuZW8ucG9zaXRpb249dWRoW3BvcysrXTw8KDB4MTY4NSszMzM2LTB4MjM4NSk7aGVhZGVyX3B0cgotLT51LmVvLnBvc2l0aW9ufD11ZGhbcG9zKytdO31oZWFkZXJfcHRyLT51LmVvLmNvbnRlbnQubGVuZ3RoPSh1ZGhfbGVuZ3RoLXBvcykrCi0oMHgxOWY2KzEyMjQtMHgxZWJkKTttZW1jcHkoaGVhZGVyX3B0ci0+dS5lby5jb250ZW50LmRhdGEsdWRoK3BvcyxoZWFkZXJfcHRyLT51LgordWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LmVvLnBvc2l0aW9uPXVkaFtwb3MrK108PCgweDIxKzc0NzctMHgxZDRlKTtoZWFkZXJfcHRyLT4KK3UuZW8ucG9zaXRpb258PXVkaFtwb3MrK107fWhlYWRlcl9wdHItPnUuZW8uY29udGVudC5sZW5ndGg9KHVkaF9sZW5ndGgtcG9zKSsKKygweDI2OGErMTEzLTB4MjZmYSk7bWVtY3B5KGhlYWRlcl9wdHItPnUuZW8uY29udGVudC5kYXRhLHVkaCtwb3MsaGVhZGVyX3B0ci0+dS4KIGVvLmNvbnRlbnQubGVuZ3RoKTtwb3MrPWhlYWRlcl9wdHItPnUuZW8uY29udGVudC5sZW5ndGg7cmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4CiAgd21zX3RzX2RlY29kZV91ZGhfcmZjODIyKGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9Ci0oMHhlMWYrMzIzMC0weDFhYmQpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4NzQrODYyMi0weDIyMjIpO31pZih1ZGgKLVtwb3NdPCgweGZjNSsxNjQtMHgxMDY4KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4Nzg1KzM4NDctMHgxNjhjKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDEzYzQrMzk3LTB4MTU1MSk7fWlmKAordWRoW3Bvc108KDB4NWMyKzY3NTctMHgyMDI2KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTJceDY2XHg2M1x4MzhceDMyXHgzMlx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHhlYzgrMjY2Ni0weDE5MzIpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9SRkM4MjIKLTtoZWFkZXJfcHRyLT51LnJmYzgyMi5oZWFkZXJfbGVuZ3RoPXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHgyNjRmKzE0My0weDI2ZGUpXSsKLSgweGE0YSsyOTczLTB4MTVlNikpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfbmF0X2xhbmdfc3MoY29uc3QgVUlOVDgqdWRoCi0sd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDM0YisyMzQ1LTB4Yzc0KTtpZih1ZGg9PU5VTEx8fAotaGVhZGVyX3B0cj09TlVMTCl7cmV0dXJuKDB4OWMwKzE5MS0weGE3Zik7fWlmKHVkaFtwb3NdIT0KLVdNU19VREhfT0NURVRTX05BVF9MQU5HX1NTKXtyZXR1cm4oMHgxMjNmKzMzOTctMHgxZjg0KTt9cG9zKys7aGVhZGVyX3B0ci0+Ci1oZWFkZXJfaWQ9V01TX1VESF9OQVRfTEFOR19TUztpZigoV01TX1VESF9OQVRfTEFOR19UVVJLSVNIPnVkaFtwb3NdKXx8KAotV01TX1VESF9OQVRfTEFOR19QT1JUVUdVRVNFPHVkaFtwb3NdKSl7cmV0dXJuKDB4MTVjYis0MjExLTB4MjYzZSk7fWhlYWRlcl9wdHItPnUKLS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZD0od21zX3VkaF9uYXRfbGFuZ19pZF9lX3R5cGUpdWRoW3BvcysrXTtyZXR1cm4odWRoWwotKDB4NzJiKzU3MzEtMHgxZDhlKV0rKDB4MTFiOSsxODgwLTB4MTkxMCkpO31zdGF0aWMgVUlOVDggCissdWRoW3Bvc10pO3JldHVybigweDE0NDcrNDMzNS0weDI1MzYpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CitXTVNfVURIX1JGQzgyMjtoZWFkZXJfcHRyLT51LnJmYzgyMi5oZWFkZXJfbGVuZ3RoPXVkaFtwb3MrK107cmV0dXJuKHVkaFsKKygweDU0YSsyODY3LTB4MTA3ZCldKygweDE4ZCs0MDIxLTB4MTE0MSkpO31zdGF0aWMgVUlOVDggCit3bXNfdHNfZGVjb2RlX3VkaF9uYXRfbGFuZ19zcyhjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCitwb3M9KDB4ZTM4KzMwNDMtMHgxYTFiKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe3JldHVybigweDYwKzUzOTEtMHgxNTZmKQorO31pZih1ZGhbcG9zXSE9V01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1Mpe3JldHVybigweGM2OCs2MDA2LTB4MjNkZSk7fXBvcysrOworaGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfTkFUX0xBTkdfU1M7aWYoKFdNU19VREhfTkFUX0xBTkdfVFVSS0lTSD51ZGhbcG9zXSkKK3x8KFdNU19VREhfTkFUX0xBTkdfUE9SVFVHVUVTRTx1ZGhbcG9zXSkpe3JldHVybigweDljOSszNjE0LTB4MTdlNyk7fWhlYWRlcl9wdHIKKy0+dS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZD0od21zX3VkaF9uYXRfbGFuZ19pZF9lX3R5cGUpdWRoW3BvcysrXTtyZXR1cm4odWRoWworKDB4NTc0KzcxNDgtMHgyMTYwKV0rKDB4MzU0KzgzODgtMHgyNDE3KSk7fXN0YXRpYyBVSU5UOCAKIHdtc190c19kZWNvZGVfdWRoX25hdF9sYW5nX2xzKGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCAKLXBvcz0oMHgxMGZmKzQ5MjAtMHgyNDM3KTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe3JldHVybgotKDB4ZDNhKzIxNzktMHgxNWJkKTt9aWYodWRoW3Bvc10hPVdNU19VREhfT0NURVRTX05BVF9MQU5HX0xTKXtyZXR1cm4KLSgweDFmZWIrNjg0LTB4MjI5Nyk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX05BVF9MQU5HX0xTO2lmKCgKK3Bvcz0oMHgxZGIyKzE1MzctMHgyM2IzKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe3JldHVybgorKDB4MTJkYisyODkwLTB4MWUyNSk7fWlmKHVkaFtwb3NdIT1XTVNfVURIX09DVEVUU19OQVRfTEFOR19MUyl7cmV0dXJuCisoMHgzOTArMjUyMi0weGQ2YSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX05BVF9MQU5HX0xTO2lmKCgKIFdNU19VREhfTkFUX0xBTkdfVFVSS0lTSD51ZGhbcG9zXSl8fChXTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U8dWRoW3Bvc10pKXsKLXJldHVybigweDdhNSs2MDQwLTB4MWYzZCk7fWhlYWRlcl9wdHItPnUubmF0X2xhbmdfbHMubmF0X2xhbmdfaWQ9KAotd21zX3VkaF9uYXRfbGFuZ19pZF9lX3R5cGUpdWRoW3BvcysrXTtyZXR1cm4odWRoWygweDQwNisyNTU1LTB4ZTAxKV0rCi0oMHgxNis0NjQ2LTB4MTIzYikpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfb3RoZXIoY29uc3QgVUlOVDgqdWRoLAotd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDg3NSs1ODQ5LTB4MWY0ZSksaT0oMHhiNys5NTIwLTB4MjVlNyk7aWYKLSh1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKLSJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweGNjMysxMTcxLTB4MTE1Nik7fWlmKAotdWRoW3BvcysoMHhkOGIrMjM2OS0weDE2Y2IpXT5XTVNfVURIX09USEVSX1NJWkUpe2F0X3ByaW50KExPR19ERUJVRywKK3JldHVybigweDEyNGQrMjkyMy0weDFkYjgpO31oZWFkZXJfcHRyLT51Lm5hdF9sYW5nX2xzLm5hdF9sYW5nX2lkPSgKK3dtc191ZGhfbmF0X2xhbmdfaWRfZV90eXBlKXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHhiNzErNTk0Mi0weDIyYTcpXSsKKygweDRlZCs4MjczLTB4MjUzZCkpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfb3RoZXIoY29uc3QgVUlOVDgqdWRoLAord21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDVjYys2Njg0LTB4MWZlOCksaT0oMHg4NjgrNTcwMi0weDFlYWUpOworaWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxNDhmKzIzMDctMHgxZDkyKTt9aWYoCit1ZGhbcG9zKygweDE5NGMrMjQ5Ny0weDIzMGMpXT5XTVNfVURIX09USEVSX1NJWkUpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDRmXHg3NFx4NjhceDY1XHg3Mlx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY5XHg2ZVx4NjdceDIwXHgzMlx4MzJceDM2IgotKTtyZXR1cm4oMHgxMjYxKzE5NDMtMHgxOWY4KTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPSh3bXNfdWRoX2lkX2VfdHlwZSl1ZGhbcG9zXTsKKyk7cmV0dXJuKDB4ODNjKzg3Ni0weGJhOCk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD0od21zX3VkaF9pZF9lX3R5cGUpdWRoW3Bvc107CiBoZWFkZXJfcHRyLT51Lm90aGVyLmhlYWRlcl9pZD0od21zX3VkaF9pZF9lX3R5cGUpdWRoW3BvcysrXTtoZWFkZXJfcHRyLT51Lm90aGVyLgotaGVhZGVyX2xlbmd0aD11ZGhbcG9zKytdO2ZvcihpPSgweDhmYyszNTU1LTB4MTZkZik7aTxoZWFkZXJfcHRyLT51Lm90aGVyLgoraGVhZGVyX2xlbmd0aD11ZGhbcG9zKytdO2ZvcihpPSgweDVlYys1MjQ4LTB4MWE2Yyk7aTxoZWFkZXJfcHRyLT51Lm90aGVyLgogaGVhZGVyX2xlbmd0aDtpKyspe2hlYWRlcl9wdHItPnUub3RoZXIuZGF0YVtpXT11ZGhbcG9zKytdO31yZXR1cm4gcG9zO31VSU5UOCAKIHdtc190c19kZWNvZGVfdXNlcl9kYXRhX2hlYWRlcihjb25zdCBVSU5UOCBsZW4sY29uc3QgVUlOVDgqZGF0YSxVSU5UOCoKLW51bV9oZWFkZXJzX3B0cix3bXNfdWRoX3NfdHlwZSp1ZGhfcHRyKXtVSU5UOCBwb3M9KDB4NTZhKzc2MDctMHgyMzIxKTtVSU5UOCAKLWhlYWRlcl9sZW5ndGg9KDB4OGE4KzUwOTMtMHgxYzhkKSxudW1faGVhZGVycz0oMHg4ZTUrMzMtMHg5MDYpO1VJTlQ4IHVkaGw7VUlOVDggCi1maXJzdF9zZWdtZW50PVRSVUU7aWYoZGF0YT09TlVMTHx8bGVuPT0oMHgyMjI2KzQxOS0weDIzYzkpfHxkYXRhW3Bvc109PQotKDB4MjFmKzY3MjAtMHgxYzVmKXx8bnVtX2hlYWRlcnNfcHRyPT1OVUxMfHx1ZGhfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCitudW1faGVhZGVyc19wdHIsd21zX3VkaF9zX3R5cGUqdWRoX3B0cil7VUlOVDggcG9zPSgweDU5ZisyNjkxLTB4MTAyMik7VUlOVDggCitoZWFkZXJfbGVuZ3RoPSgweDYyKzI5NDAtMHhiZGUpLG51bV9oZWFkZXJzPSgweDExYzYrNDUwNC0weDIzNWUpO1VJTlQ4IHVkaGw7CitVSU5UOCBmaXJzdF9zZWdtZW50PVRSVUU7aWYoZGF0YT09TlVMTHx8bGVuPT0oMHgyZmIrODkzLTB4Njc4KXx8ZGF0YVtwb3NdPT0KKygweDk2Mis2OTUtMHhjMTkpfHxudW1faGVhZGVyc19wdHI9PU5VTEx8fHVkaF9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDc1XHg3M1x4NjVceDcyXHg1Zlx4NjRceDYxXHg3NFx4NjFceDVmXHg2OFx4NjVceDYxXHg2NFx4NjVceDcyIgotKTtyZXR1cm4oMHgxZDQxKzEwNS0weDFkYWEpO311ZGhsPWRhdGFbcG9zXTtwb3MrKzt3aGlsZSgocG9zPHVkaGwpJiYobnVtX2hlYWRlcnMKKyk7cmV0dXJuKDB4NmE0KzY1ODUtMHgyMDVkKTt9dWRobD1kYXRhW3Bvc107cG9zKys7d2hpbGUoKHBvczx1ZGhsKSYmKG51bV9oZWFkZXJzCiA8V01TX01BWF9VRF9IRUFERVJTKSl7c3dpdGNoKGRhdGFbcG9zKytdKXtjYXNlIFdNU19VREhfQ09OQ0FUXzg6aGVhZGVyX2xlbmd0aD0KIHdtc190c19kZWNvZGVfdWRoX2NvbmNhdF84KGRhdGErcG9zLCZ1ZGhfcHRyW251bV9oZWFkZXJzXSk7YnJlYWs7Y2FzZSAKIFdNU19VREhfQ09OQ0FUXzE2OmhlYWRlcl9sZW5ndGg9d21zX3RzX2RlY29kZV91ZGhfY29uY2F0MTYoZGF0YStwb3MsJnVkaF9wdHJbCkBAIC0xODY2LDY2ICsxODY4LDY2IEBACiBkYXRhK3BvcywmdWRoX3B0cltudW1faGVhZGVyc10pO2JyZWFrO31pZigoVUlOVDE2KXBvcysoVUlOVDE2KWhlYWRlcl9sZW5ndGg+CiBXTVNfTUFYX0xFTil7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4MjBceDZmXHg2Nlx4MjBceDYyXHg3OVx4NzRceDY1XHg3M1x4MjBceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDU1XHg0NFx4NDhceDRjXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgyMFx4NmZceDY2XHgyMFx4MjVceDY0IgotLHVkaGwpO3JldHVybigweGEzMis3MTEzLTB4MjVmYik7fWVsc2UgaWYoaGVhZGVyX2xlbmd0aCE9KDB4YmQ0KzMyNTktMHgxODhmKSl7CissdWRobCk7cmV0dXJuKDB4ODBhKzQzMTQtMHgxOGU0KTt9ZWxzZSBpZihoZWFkZXJfbGVuZ3RoIT0oMHhiMmIrMzYyNi0weDE5NTUpKXsKIHBvcys9aGVhZGVyX2xlbmd0aDtudW1faGVhZGVycysrO31lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDQyXHg2MVx4NjRceDIwXHg1NVx4NDRceDQ4XHgzYVx4MjBceDcwXHg2Zlx4NzNceDNkXHgyNVx4NjRceDJjXHgyMFx4NjRceDYxXHg3NFx4NjFceDViXHg3MFx4NmZceDczXHg1ZFx4M2RceDI1XHg2NCIKLSxwb3MsZGF0YVtwb3NdKTsqbnVtX2hlYWRlcnNfcHRyPSgweDlkYSs2MDU5LTB4MjE4NSk7cmV0dXJuKDB4MWRkMSs1OC0weDFlMGIpO319Ci1pZihudW1faGVhZGVycz49V01TX01BWF9VRF9IRUFERVJTKXthdF9wcmludChMT0dfREVCVUcsCisscG9zLGRhdGFbcG9zXSk7Km51bV9oZWFkZXJzX3B0cj0oMHg0MmIrNTU1NS0weDE5ZGUpO3JldHVybigweDExNis5NTk3LTB4MjY5Myk7fQorfWlmKG51bV9oZWFkZXJzPj1XTVNfTUFYX1VEX0hFQURFUlMpe2F0X3ByaW50KExPR19ERUJVRywKICJceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg3NVx4NjRceDY4XHgzYVx4MjBceDRlXHg3NVx4NmRceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHg3M1x4MjBceDY4XHg2MVx4NzNceDIwXHg2NVx4NzhceDYzXHg2NVx4NjVceDY0XHg2NVx4NjRceDIwXHg1N1x4NGRceDUzXHg1Zlx4NGRceDQxXHg1OFx4NWZceDU1XHg0NFx4NWZceDQ4XHg0NVx4NDFceDQ0XHg0NVx4NTJceDUzIgotKTtwb3M9dWRobCsoMHg4Y2ErNjYxNS0weDIyYTApO31pZihwb3MhPSh1ZGhsKygweDEyMjkrMTY5OS0weDE4Y2IpKSl7YXRfcHJpbnQoCispO3Bvcz11ZGhsKygweDY5MSs3MDQwLTB4MjIxMCk7fWlmKHBvcyE9KHVkaGwrKDB4NDU2KzY3MTItMHgxZThkKSkpe2F0X3ByaW50KAogTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg2M1x4NmZceDc1XHg2Y1x4NjRceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjJceDY1XHgyMFx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NjQiCi0pO251bV9oZWFkZXJzPSgweDZmMCsyMTE5LTB4ZjM3KTt1ZGhsPSgweGU2NisyNDU1LTB4MTdmZCk7fWlmKG51bV9oZWFkZXJzPgotKDB4MTY4MisyOTY4LTB4MjIxYSkpeypudW1faGVhZGVyc19wdHI9bnVtX2hlYWRlcnM7fXJldHVybiB1ZGhsO31VSU5UOCAKKyk7bnVtX2hlYWRlcnM9KDB4MmJmKzM0OTQtMHgxMDY1KTt1ZGhsPSgweGE5YisyODgxLTB4MTVkYyk7fWlmKG51bV9oZWFkZXJzPgorKDB4ZWNhKzMwOTItMHgxYWRlKSl7Km51bV9oZWFkZXJzX3B0cj1udW1faGVhZGVyczt9cmV0dXJuIHVkaGw7fVVJTlQ4IAogd21zX3RzX2RlY29kZV9nd191c2VyX2RhdGEoY29uc3Qgd21zX2d3X2Rjc19zX3R5cGUqZGNzLGNvbnN0IFVJTlQ4IGxlbixjb25zdCAKIFVJTlQ4KmRhdGEsY29uc3QgVUlOVDggdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50LHdtc19nd191c2VyX2RhdGFfc190eXBlKgotdXNlcl9kYXRhKXtVSU5UOCBpLHBvcz0oMHhhZis5NDg3LTB4MjViZSk7VUlOVDggZmlsbF9iaXRzPSgweGE5ZCsyNjc4LTB4MTUxMyk7Ci1VSU5UOCB1c2VyX2RhdGFfbGVuZ3RoO1VJTlQ4IHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPSgweDZhZCs0OTM2LTB4MTlmNSk7aWYoZGNzCit1c2VyX2RhdGEpe1VJTlQ4IGkscG9zPSgweDJhMys0ODM2LTB4MTU4Nyk7VUlOVDggZmlsbF9iaXRzPSgweDY3MCs2MjY1LTB4MWVlOSk7CitVSU5UOCB1c2VyX2RhdGFfbGVuZ3RoO1VJTlQ4IHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPSgweGQwOSs1OTI0LTB4MjQyZCk7aWYoZGNzCiA9PU5VTEx8fGRhdGE9PU5VTEx8fHVzZXJfZGF0YT09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjdceDc3XHg1Zlx4NzVceDczXHg2NVx4NzJceDVmXHg2NFx4NjFceDc0XHg2MSIKLSk7cmV0dXJuKDB4MTA1NisyNTEyLTB4MWEyNik7fSh2b2lkKW1lbXNldCh1c2VyX2RhdGEsKDB4YmVmKzU5NzgtMHgyMzQ5KSxzaXplb2YoCi13bXNfZ3dfdXNlcl9kYXRhX3NfdHlwZSkpO2lmKGxlbj09KDB4MmQyKzY4MDItMHgxZDY0KSl7cmV0dXJuCi0oMHgxMzAxKzQ4MTUtMHgyNWQwKTt9aWYoZGNzLT5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKGxlbj4KKyk7cmV0dXJuKDB4MWE0YisyNDUtMHgxYjQwKTt9KHZvaWQpbWVtc2V0KHVzZXJfZGF0YSwoMHg3ZTIrNTg2MC0weDFlYzYpLHNpemVvZigKK3dtc19nd191c2VyX2RhdGFfc190eXBlKSk7aWYobGVuPT0oMHgxNWQyKzEyMjQtMHgxYTlhKSl7cmV0dXJuCisoMHgxMjIrODUwMy0weDIyNTkpO31pZihkY3MtPmFscGhhYmV0PT1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVCl7aWYobGVuPgogV01TX1NNU19VRExfTUFYXzdfQklUKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg3NVx4NzNceDY1XHg3Mlx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNlXHgyMFx4NmRceDYxXHg3OFx4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4MjBceDY2XHg2Zlx4NzJceDIwXHg2N1x4NzdceDIwXHgzN1x4MmRceDYyXHg2OVx4NzRceDIwXHg2MVx4NmNceDcwXHg2OFx4NjFceDYyXHg2NVx4NzQiCi0pO3JldHVybigweDg0OSs3NjczLTB4MjY0Mik7fXVzZXJfZGF0YV9sZW5ndGg9bGVuO2lmKHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCl7CispO3JldHVybigweDZmNSszNjM3LTB4MTUyYSk7fXVzZXJfZGF0YV9sZW5ndGg9bGVuO2lmKHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCl7CiB1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD13bXNfdHNfZGVjb2RlX3VzZXJfZGF0YV9oZWFkZXIoZGF0YVtwb3NdLGRhdGErcG9zLCYKIHVzZXJfZGF0YS0+bnVtX2hlYWRlcnMsdXNlcl9kYXRhLT5oZWFkZXJzKTt9aWYodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg+bGVuKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDc1XHg3M1x4NjVceDcyXHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNlXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OCIKLSk7cmV0dXJuKDB4MzMwKzgwMDAtMHgyMjcwKTt9aWYodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg+KDB4MTRiNysxOTEyLTB4MWMyZikpewotZmlsbF9iaXRzPSgobGVuKigweGFjKzIxMDYtMHg4ZGYpKS0oKHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDEyNjUrNTY1LTB4MTQ5OSkKLSkqKDB4MWQ1KzM3NjItMHgxMDdmKSkpJSgweDFkY2MrMTYxOS0weDI0MTgpO3VzZXJfZGF0YV9sZW5ndGg9KFVJTlQ4KSgoKGxlbioKLSgweDUyYysxNTYwLTB4YjNkKSktKCh1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHhiMjkrNDk1Ny0weDFlODUpKSoKLSgweDE4ZDcrMjU3NS0weDIyZGUpKSkvKDB4MWJhMCsyMzA5LTB4MjQ5ZSkpO3Bvcz11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsKLSgweGJhMSs0NzQtMHhkN2EpO2lmKGZpbGxfYml0cyE9KDB4MTA2ZiszNTg2LTB4MWU3MSkpe2ZpbGxfYml0cz0KLSgweDE5NzgrMzI3Mi0weDI2MzgpLWZpbGxfYml0czt9fWk9d21zX3RzX3VucGFja19nd183X2JpdF9jaGFycygmZGF0YVtwb3NdLAorKTtyZXR1cm4oMHgxNTNjKzEwODgtMHgxOTdjKTt9aWYodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg+KDB4NmYwKzExMTItMHhiNDgpKXsKK2ZpbGxfYml0cz0oKGxlbiooMHg3ZDUrNTQ3Ni0weDFkMzIpKS0oKHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDFjMSsxNTktMHgyNWYpCispKigweDFhNjErMTI0LTB4MWFkNSkpKSUoMHg1MjkrNTgtMHg1NWMpO3VzZXJfZGF0YV9sZW5ndGg9KFVJTlQ4KSgoKGxlbioKKygweDFmNSs3NjYyLTB4MWZkYykpLSgodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4MTFlYisyNjU1LTB4MWM0OSkpKgorKDB4MTYyKzQzNDAtMHgxMjRlKSkpLygweDY0OSszNjU2LTB4MTQ4YSkpO3Bvcz11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsKKygweDE1OTErMjg3My0weDIwYzkpO2lmKGZpbGxfYml0cyE9KDB4MWIwOCsyNTEwLTB4MjRkNikpe2ZpbGxfYml0cz0KKygweGEwMis0MDg5LTB4MTlmMyktZmlsbF9iaXRzO319aT13bXNfdHNfdW5wYWNrX2d3XzdfYml0X2NoYXJzKCZkYXRhW3Bvc10sCiB1c2VyX2RhdGFfbGVuZ3RoLFdNU19NQVhfTEVOLGZpbGxfYml0cyx1c2VyX2RhdGEtPnNtX2RhdGEpO3VzZXJfZGF0YS0+c21fbGVuPQogdXNlcl9kYXRhX2xlbmd0aDt9ZWxzZXtpZihsZW4+V01TX1NNU19VRExfTUFYXzhfQklUKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg3NVx4NzNceDY1XHg3Mlx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNlXHgyMFx4NmRceDYxXHg3OFx4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4MjBceDY2XHg2Zlx4NzJceDIwXHgzOFx4MmRceDYyXHg2OVx4NzRceDIwXHg2M1x4NjhceDYxXHg3Mlx4NjFceDcyXHg2MVx4NjNceDc0XHg2NVx4NzJceDczIgotKTtyZXR1cm4oMHgxMGFkKzk0OC0weDE0NjEpO311c2VyX2RhdGFfbGVuZ3RoPWxlbjtpZih1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpeworKTtyZXR1cm4oMHgxNDkwKzQzMDAtMHgyNTVjKTt9dXNlcl9kYXRhX2xlbmd0aD1sZW47aWYodXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50KXsKIHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPXdtc190c19kZWNvZGVfdXNlcl9kYXRhX2hlYWRlcihkYXRhW3Bvc10sZGF0YStwb3MsJgogdXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPmhlYWRlcnMpO2lmKHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPmxlbil7CiBhdF9wcmludChMT0dfREVCVUcsCiAiXHg3NVx4NzNceDY1XHg3Mlx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NjhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZVx4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjgiCi0pO3JldHVybigweGE3Nys4NTMtMHhkY2MpO31wb3MrPXVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDFjYTUrNjk1LTB4MWY1Yik7Ci11c2VyX2RhdGFfbGVuZ3RoPShsZW4tdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgpLSgweGIxOSs2MTE1LTB4MjJmYik7fW1lbWNweSgKKyk7cmV0dXJuKDB4MjFiKzM0MS0weDM3MCk7fXBvcys9dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4NTc2KzY2MDMtMHgxZjQwKTsKK3VzZXJfZGF0YV9sZW5ndGg9KGxlbi11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCktKDB4ZTU3KzEwMzctMHgxMjYzKTt9bWVtY3B5KAogdXNlcl9kYXRhLT5zbV9kYXRhLGRhdGErcG9zLHVzZXJfZGF0YV9sZW5ndGgpO3VzZXJfZGF0YS0+c21fbGVuPXVzZXJfZGF0YV9sZW5ndGgKIDtpPShVSU5UOCl1c2VyX2RhdGEtPnNtX2xlbjt9cG9zKz1pO3JldHVybiBwb3M7fXdtc19zdGF0dXNfZV90eXBlIAogd21zX3RzX2RlY29kZV9kZWxpdmVyKGNvbnN0IFRfelVmaVNtc19SYXdUc0RhdGEqcHRSYXdUc0RhdGEsCiB3bXNfZ3dfZGVsaXZlcl9zX3R5cGUqZGVsaXZlcil7d21zX3N0YXR1c19lX3R5cGUgc3Q9V01TX09LX1M7dWludDMyIHBvcz0KLSgweDEzZWYrNTkxLTB4MTYzZSksaTtjb25zdCBVSU5UOCpkYXRhPXB0UmF3VHNEYXRhLT5kYXRhO2lmKHB0UmF3VHNEYXRhPT1OVUxMfHwKKygweDEwYTYrMTA3NS0weDE0ZDkpLGk7Y29uc3QgVUlOVDgqZGF0YT1wdFJhd1RzRGF0YS0+ZGF0YTtpZihwdFJhd1RzRGF0YT09TlVMTHx8CiBkZWxpdmVyPT1OVUxMKXtwcmludGYoCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2NFx4NjVceDZjXHg2OVx4NzZceDY1XHg3MiIKLSk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31lbHNlIGlmKChkYXRhW3Bvc10mKDB4YTQxKzY0MTYtMHgyMzRlKSkhPQotKDB4Yzg2KzUyMTYtMHgyMGU2KSl7cHJpbnRmKAorKTtyZXR1cm4gV01TX05VTExfUFRSX1M7fWVsc2UgaWYoKGRhdGFbcG9zXSYoMHgyMzcrNDA5Ny0weDEyMzUpKSE9CisoMHg3MzIrMjc0MC0weDExZTYpKXtwcmludGYoCiAiXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDc0XHg3MFx4NjRceDc1XHgyMFx4NzRceDc5XHg3MFx4NjVceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDY0XHg2NVx4NmNceDY5XHg3Nlx4NjVceDcyIgogKTtyZXR1cm4gV01TX0lOVkFMSURfVFBEVV9UWVBFX1M7fWVsc2V7ZGVsaXZlci0+bW9yZT0oZGF0YVtwb3NdJgotKDB4NWY4KzMyOTAtMHgxMmNlKSk/RkFMU0U6VFJVRTtkZWxpdmVyLT5zdGF0dXNfcmVwb3J0X2VuYWJsZWQ9KGRhdGFbcG9zXSYKLSgweDE5ZTErMzI0Ni0weDI2NmYpKT9UUlVFOkZBTFNFO2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD0oZGF0YVtwb3NdJgotKDB4MjZmKzc2ODUtMHgyMDM0KSk/VFJVRTpGQUxTRTtkZWxpdmVyLT5yZXBseV9wYXRoX3ByZXNlbnQ9KGRhdGFbcG9zXSYKLSgweGY0NSs3NC0weGYwZikpP1RSVUU6RkFMU0U7cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbcG9zXSwmZGVsaXZlci0+Ci1hZGRyZXNzKTtpZihpPT0oMHhiOTUrNDA0NS0weDFiNjIpKXtwcmludGYoCisoMHg4NzErMTA2NC0weGM5NSkpP0ZBTFNFOlRSVUU7ZGVsaXZlci0+c3RhdHVzX3JlcG9ydF9lbmFibGVkPShkYXRhW3Bvc10mCisoMHhkMjQrNDEwMS0weDFkMDkpKT9UUlVFOkZBTFNFO2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD0oZGF0YVtwb3NdJgorKDB4NGJiKzM3ODEtMHgxMzQwKSk/VFJVRTpGQUxTRTtkZWxpdmVyLT5yZXBseV9wYXRoX3ByZXNlbnQ9KGRhdGFbcG9zXSYKKygweDcyZisyNjY1LTB4MTExOCkpP1RSVUU6RkFMU0U7cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbcG9zXSwmCitkZWxpdmVyLT5hZGRyZXNzKTtpZihpPT0oMHgxNSszNjM1LTB4ZTQ4KSl7cHJpbnRmKAogIlx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDIwXHg3M1x4NjlceDdhXHg2NVx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjRceDY1XHg2Y1x4NjlceDc2XHg2NVx4NzIiCiApO3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzt9cG9zKz1pO2RlbGl2ZXItPnBpZD0od21zX3BpZF9lX3R5cGUpZGF0YVtwb3NdOwogcG9zKys7cG9zKz13bXNfdHNfZGVjb2RlX2RjcyhkYXRhK3BvcywmZGVsaXZlci0+ZGNzKTtpZihkZWxpdmVyLT5kY3MuCkBAIC0xOTMzLDc0ICsxOTM1LDc0IEBACiBXTVNfUElEX1JFVFVSTl9DQUxMKXtkZWxpdmVyLT5kY3MubXNnX3dhaXRpbmc9V01TX0dXX01TR19XQUlUSU5HX1NUT1JFO2RlbGl2ZXItPgogZGNzLm1zZ193YWl0aW5nX2FjdGl2ZT1UUlVFO2RlbGl2ZXItPmRjcy5tc2dfd2FpdGluZ19raW5kPQogV01TX0dXX01TR19XQUlUSU5HX1ZPSUNFTUFJTDt9fWk9d21zX3RzX2RlY29kZV90aW1lc3RhbXAoZGF0YStwb3MsJmRlbGl2ZXItPgotdGltZXN0YW1wKTtpZihpPT0oMHgxNmVhKzMwODMtMHgyMmY1KSl7cHJpbnRmKAordGltZXN0YW1wKTtpZihpPT0oMHgxZDE3KzI0MjctMHgyNjkyKSl7cHJpbnRmKAogIlx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDY0XHg2NVx4NmNceDY5XHg3Nlx4NjVceDcyIgogKTtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7cG9zKys7aT13bXNfdHNfZGVjb2RlX2d3X3VzZXJfZGF0YSgmCi1kZWxpdmVyLT5kY3MsZGF0YVtwb3MtKDB4MTc1NCsxMTg5LTB4MWJmOCldLGRhdGErcG9zLGRlbGl2ZXItPgorZGVsaXZlci0+ZGNzLGRhdGFbcG9zLSgweDE5MDQrMjI3MC0weDIxZTEpXSxkYXRhK3BvcyxkZWxpdmVyLT4KIHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCwmZGVsaXZlci0+dXNlcl9kYXRhKTtpZihpPldNU19TTVNfVURMX01BWF84X0JJVCl7cHJpbnRmCiAoCiAiXHg1NVx4NzNceDY1XHg3Mlx4MjBceDQ0XHg2MVx4NzRceDYxXHgyMFx4NGNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDY4XHg2MVx4NzNceDIwXHg2NVx4NzhceDYzXHg2NVx4NjVceDY0XHg2NVx4NjRceDIwXHg2M1x4NjFceDcwXHg2MVx4NjNceDY5XHg3NFx4NzlceDNhXHgyMFx4NTVceDQ0XHg0Y1x4MjBceDNkXHgyMFx4MjVceDZjXHg3NSIKICxpKTtzdD1XTVNfSU5WQUxJRF9VU0VSX0RBVEFfU0laRV9TO31wb3MrPWk7cmV0dXJuIHN0O319VUlOVDggCiB3bXNfdHNfZGVjb2RlX2d3X3ZhbGlkaXR5KGNvbnN0IFVJTlQ4KmRhdGEsd21zX2d3X3ZhbGlkaXR5X3NfdHlwZSp2YWxpZGl0eSl7Ci1VSU5UOCBpLHBvcz0oMHhlOGIrNjIwOC0weDI2Y2IpO2lmKGRhdGE9PU5VTEx8fHZhbGlkaXR5PT1OVUxMKXthdF9wcmludCgKK1VJTlQ4IGkscG9zPSgweDE0OGIrMzg1NC0weDIzOTkpO2lmKGRhdGE9PU5VTEx8fHZhbGlkaXR5PT1OVUxMKXthdF9wcmludCgKIExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDY3XHg3N1x4NWZceDc2XHg2MVx4NmNceDY5XHg2NFx4NjlceDc0XHg3OSIKLSk7cmV0dXJuKDB4MTAzYis1MDU0LTB4MjNmOSk7fWVsc2V7c3dpdGNoKHZhbGlkaXR5LT5mb3JtYXQpe2Nhc2UgCi1XTVNfR1dfVkFMSURJVFlfTk9ORTptZW1zZXQodmFsaWRpdHksKDB4NDEwKzM5MjctMHgxMzY3KSxzaXplb2YoCispO3JldHVybigweDMyNSs2MDkyLTB4MWFmMSk7fWVsc2V7c3dpdGNoKHZhbGlkaXR5LT5mb3JtYXQpe2Nhc2UgCitXTVNfR1dfVkFMSURJVFlfTk9ORTptZW1zZXQodmFsaWRpdHksKDB4MjYxMysyMTYtMHgyNmViKSxzaXplb2YoCiB3bXNfZ3dfdmFsaWRpdHlfc190eXBlKSk7YnJlYWs7Y2FzZSBXTVNfR1dfVkFMSURJVFlfUkVMQVRJVkU6CiB6VWZpU21zX0RlY29kZVJlbGF0aXZlVGltZShkYXRhW3Bvc10sJnZhbGlkaXR5LT51LnRpbWUpO3BvcysrO2JyZWFrO2Nhc2UgCiBXTVNfR1dfVkFMSURJVFlfQUJTT0xVVEU6aT13bXNfdHNfZGVjb2RlX3RpbWVzdGFtcChkYXRhK3BvcywmdmFsaWRpdHktPnUudGltZSk7CiBwb3MrPWk7YnJlYWs7Y2FzZSBXTVNfR1dfVkFMSURJVFlfRU5IQU5DRUQ6YnJlYWs7ZGVmYXVsdDpicmVhazt9cmV0dXJuIHBvczt9fQogd21zX3N0YXR1c19lX3R5cGUgd21zX3RzX2RlY29kZV9zdWJtaXQoY29uc3QgVF96VWZpU21zX1Jhd1RzRGF0YSpwdFJhd1RzRGF0YSwKIHdtc19nd19zdWJtaXRfc190eXBlKnN1Ym1pdCl7d21zX3N0YXR1c19lX3R5cGUgc3Q9V01TX09LX1M7dWludDMyIHBvcz0KLSgweDQxNys2MjAyLTB4MWM1MSksaTtjb25zdCBVSU5UOCpkYXRhO2lmKHB0UmF3VHNEYXRhPT1OVUxMfHxzdWJtaXQ9PU5VTEwpeworKDB4YjU2KzMwMDAtMHgxNzBlKSxpO2NvbnN0IFVJTlQ4KmRhdGE7aWYocHRSYXdUc0RhdGE9PU5VTEx8fHN1Ym1pdD09TlVMTCl7CiBwcmludGYoCiAiXHg0ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg3M1x4NzVceDYyXHg2ZFx4NjlceDc0XHgyMSIKICk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31kYXRhPXB0UmF3VHNEYXRhLT5kYXRhO3N1Ym1pdC0+cmVqZWN0X2R1cGxpY2F0ZXM9KGRhdGFbCi1wb3NdJigweDIxKzkzNjQtMHgyNGIxKSk/VFJVRTpGQUxTRTtzdWJtaXQtPnZhbGlkaXR5LmZvcm1hdD0oCi13bXNfZ3dfdmFsaWRpdHlfZm9ybWF0X2VfdHlwZSkoKGRhdGFbcG9zXSYoMHhkN2QrODc0LTB4MTBjZikpPj4oMHg2YSsyODQ3LTB4Yjg2KQotKTtzdWJtaXQtPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0oZGF0YVtwb3NdJigweGJiMiszNzY1LTB4MWE0NykpP1RSVUU6RkFMU0U7Ci1zdWJtaXQtPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD0oZGF0YVtwb3NdJigweGNkZisyNzgtMHhkYjUpKT9UUlVFOkZBTFNFO3N1Ym1pdAotLT5yZXBseV9wYXRoX3ByZXNlbnQ9KGRhdGFbcG9zXSYoMHhmOTkrMjUyNy0weDE4ZjgpKT9UUlVFOkZBTFNFO3BvcysrO3N1Ym1pdC0+Ci1tZXNzYWdlX3JlZmVyZW5jZT1kYXRhW3Bvc107cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbcG9zXSwmc3VibWl0LT4KLWFkZHJlc3MpO2lmKGk9PSgweDNjZisxMjMzLTB4OGEwKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7c3VibWl0Ci0tPnBpZD0od21zX3BpZF9lX3R5cGUpZGF0YVtwb3NdO3BvcysrO3Bvcys9d21zX3RzX2RlY29kZV9kY3MoZGF0YStwb3MsJnN1Ym1pdC0+Ci1kY3MpO2k9d21zX3RzX2RlY29kZV9nd192YWxpZGl0eShkYXRhK3Bvcywmc3VibWl0LT52YWxpZGl0eSk7aWYoKHN1Ym1pdC0+Ci12YWxpZGl0eS5mb3JtYXQhPVdNU19HV19WQUxJRElUWV9OT05FKSYmKGk9PSgweDVmOCsyNzUzLTB4MTBiOSkpKXtyZXR1cm4gCi1XTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtwb3MrKztpPXdtc190c19kZWNvZGVfZ3dfdXNlcl9kYXRhKCZzdWJtaXQtPmRjcwotLGRhdGFbcG9zLSgweDFmMmQrMTc2MS0weDI2MGQpXSxkYXRhK3BvcyxzdWJtaXQtPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCwmCitwb3NdJigweGI5YisyODgxLTB4MTZkOCkpP1RSVUU6RkFMU0U7c3VibWl0LT52YWxpZGl0eS5mb3JtYXQ9KAord21zX2d3X3ZhbGlkaXR5X2Zvcm1hdF9lX3R5cGUpKChkYXRhW3Bvc10mKDB4MTg2KzEwMjItMHg1NmMpKT4+CisoMHgyMjYrMjQyNS0weGI5YykpO3N1Ym1pdC0+c3RhdHVzX3JlcG9ydF9lbmFibGVkPShkYXRhW3Bvc10mKDB4M2Q2KzE1NjYtMHg5ZDQpKQorP1RSVUU6RkFMU0U7c3VibWl0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9KGRhdGFbcG9zXSYoMHhiNDIrMjE0My0weDEzNjEpKT8KK1RSVUU6RkFMU0U7c3VibWl0LT5yZXBseV9wYXRoX3ByZXNlbnQ9KGRhdGFbcG9zXSYoMHg3YzcrMjcyNS0weDExZWMpKT9UUlVFOkZBTFNFCis7cG9zKys7c3VibWl0LT5tZXNzYWdlX3JlZmVyZW5jZT1kYXRhW3Bvc107cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbCitwb3NdLCZzdWJtaXQtPmFkZHJlc3MpO2lmKGk9PSgweDJmYysxMTE3LTB4NzU5KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TOworfXBvcys9aTtzdWJtaXQtPnBpZD0od21zX3BpZF9lX3R5cGUpZGF0YVtwb3NdO3BvcysrO3Bvcys9d21zX3RzX2RlY29kZV9kY3MoZGF0YSsKK3Bvcywmc3VibWl0LT5kY3MpO2k9d21zX3RzX2RlY29kZV9nd192YWxpZGl0eShkYXRhK3Bvcywmc3VibWl0LT52YWxpZGl0eSk7aWYoKAorc3VibWl0LT52YWxpZGl0eS5mb3JtYXQhPVdNU19HV19WQUxJRElUWV9OT05FKSYmKGk9PSgweGRmNSsyNTc4LTB4MTgwNykpKXtyZXR1cm4KKyBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtwb3MrKztpPXdtc190c19kZWNvZGVfZ3dfdXNlcl9kYXRhKCZzdWJtaXQtPgorZGNzLGRhdGFbcG9zLSgweDliYSszMzg1LTB4MTZmMildLGRhdGErcG9zLHN1Ym1pdC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50LCYKIHN1Ym1pdC0+dXNlcl9kYXRhKTtpZihpPldNU19TTVNfVURMX01BWF84X0JJVCl7cHJpbnRmKAogIlx4NTVceDczXHg2NVx4NzJceDIwXHg0NFx4NjFceDc0XHg2MVx4MjBceDRjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHg2OFx4NjFceDczXHgyMFx4NjVceDc4XHg2M1x4NjVceDY1XHg2NFx4NjVceDY0XHgyMFx4NjNceDYxXHg3MFx4NjFceDYzXHg2OVx4NzRceDc5XHgzYVx4MjBceDU1XHg0NFx4NGNceDIwXHgzZFx4MjBceDI1XHg2Y1x4NzUiCiAsaSk7c3Q9V01TX0lOVkFMSURfVVNFUl9EQVRBX1NJWkVfUzt9cG9zKz1pO3JldHVybiBzdDt9d21zX3N0YXR1c19lX3R5cGUgCiB3bXNfdHNfZGVjb2RlX3N0YXR1c19yZXBvcnQoY29uc3QgVF96VWZpU21zX1Jhd1RzRGF0YSpwdFJhd1RzRGF0YSwKIHdtc19nd19zdGF0dXNfcmVwb3J0X3NfdHlwZSpzdGF0dXNfcmVwb3J0KXt3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUzt1aW50MzIgCi1wb3M9KDB4MTcwNys0ODUtMHgxOGVjKSxpO2NvbnN0IFVJTlQ4KmRhdGE7aWYocHRSYXdUc0RhdGE9PU5VTEx8fHN0YXR1c19yZXBvcnQ9PQorcG9zPSgweDU2OCs2NTU0LTB4MWYwMiksaTtjb25zdCBVSU5UOCpkYXRhO2lmKHB0UmF3VHNEYXRhPT1OVUxMfHxzdGF0dXNfcmVwb3J0PT0KIE5VTEwpe3ByaW50ZigKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDczXHg3NFx4NjFceDc0XHg3NVx4NzNceDVmXHg3Mlx4NjVceDcwXHg2Zlx4NzJceDc0XHgyMSIKICk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31kYXRhPXB0UmF3VHNEYXRhLT5kYXRhO3N0YXR1c19yZXBvcnQtPm1vcmU9ZGF0YVtwb3NdJgotKDB4NDMrNDQzLTB4MWZhKT9GQUxTRTpUUlVFO3N0YXR1c19yZXBvcnQtPnN0YXR1c19yZXBvcnRfcXVhbGlmaWVyPWRhdGFbcG9zXSYKLSgweDhhMCs3NDU0LTB4MjU5ZSk/VFJVRTpGQUxTRTtzdGF0dXNfcmVwb3J0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9KGRhdGFbcG9zCi1dJigweDZkYSsyOTc2LTB4MTIzYSkpP1RSVUU6RkFMU0U7cG9zKys7c3RhdHVzX3JlcG9ydC0+bWVzc2FnZV9yZWZlcmVuY2U9ZGF0YVsKKygweDIxMWYrNTU5LTB4MjM0YSk/RkFMU0U6VFJVRTtzdGF0dXNfcmVwb3J0LT5zdGF0dXNfcmVwb3J0X3F1YWxpZmllcj1kYXRhW3Bvc10mCisoMHgxZmIxKzI5LTB4MWZhZSk/VFJVRTpGQUxTRTtzdGF0dXNfcmVwb3J0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9KGRhdGFbcG9zXQorJigweDFhNmErMjQ2NC0weDIzY2EpKT9UUlVFOkZBTFNFO3BvcysrO3N0YXR1c19yZXBvcnQtPm1lc3NhZ2VfcmVmZXJlbmNlPWRhdGFbCiBwb3NdO3BvcysrO2k9d21zX3RzX2RlY29kZV9hZGRyZXNzKCZkYXRhW3Bvc10sJnN0YXR1c19yZXBvcnQtPmFkZHJlc3MpO2lmKGk9PQotKDB4MTdlMSsxMzc5LTB4MWQ0NCkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzt9cG9zKz1pO2k9CisoMHhmZWYrMTMyNy0weDE1MWUpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9TSVpFX1M7fXBvcys9aTtpPQogd21zX3RzX2RlY29kZV90aW1lc3RhbXAoZGF0YStwb3MsJnN0YXR1c19yZXBvcnQtPnRpbWVzdGFtcCk7aWYoaT09Ci0oMHgxNzdmKzExOTQtMHgxYzI5KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2k9CisoMHhmOTQrNTcwNy0weDI1ZGYpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7aT0KIHdtc190c19kZWNvZGVfdGltZXN0YW1wKGRhdGErcG9zLCZzdGF0dXNfcmVwb3J0LT5kaXNjaGFyZ2VfdGltZSk7aWYoaT09Ci0oMHg0MDUrNTgwNy0weDFhYjQpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7c3RhdHVzX3JlcG9ydC0+CisoMHhhZCsyNjA1LTB4YWRhKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO3N0YXR1c19yZXBvcnQtPgogdHBfc3RhdHVzPSh3bXNfdHBfc3RhdHVzX2VfdHlwZSlkYXRhW3Bvc107cG9zKys7c3RhdHVzX3JlcG9ydC0+bWFzaz1kYXRhW3Bvc107Ci1zdGF0dXNfcmVwb3J0LT5waWQ9KHdtc19waWRfZV90eXBlKSgweDIwNjYrMTI1MS0weDI1NDkpO3N0YXR1c19yZXBvcnQtPnVzZXJfZGF0YQotLnNtX2xlbj0oMHg5MjUrNTgtMHg5NWYpO3N0YXR1c19yZXBvcnQtPm1hc2smPSgweDIwMDkrMTk0OC0weDI2YTYpO2lmKCgKLXN0YXR1c19yZXBvcnQtPm1hc2shPSgweGNjMSs0MjgtMHhkNmUpKSYmKHN0YXR1c19yZXBvcnQtPm1hc2shPQotKDB4NzU1Kzc3ODMtMHgyNWJjKSkpe3BvcysrO2lmKHN0YXR1c19yZXBvcnQtPm1hc2smV01TX1RQRFVfTUFTS19QSUQpeworc3RhdHVzX3JlcG9ydC0+cGlkPSh3bXNfcGlkX2VfdHlwZSkoMHgxM2YrMjMyMy0weGE1Mik7c3RhdHVzX3JlcG9ydC0+dXNlcl9kYXRhLgorc21fbGVuPSgweDRlMCsxMTczLTB4OTc1KTtzdGF0dXNfcmVwb3J0LT5tYXNrJj0oMHg3ODkrMTEwOS0weGFkZik7aWYoKAorc3RhdHVzX3JlcG9ydC0+bWFzayE9KDB4M2I4KzcxMDktMHgxZTdlKSkmJihzdGF0dXNfcmVwb3J0LT5tYXNrIT0KKygweDRkYys3NzQzLTB4MjMxYikpKXtwb3MrKztpZihzdGF0dXNfcmVwb3J0LT5tYXNrJldNU19UUERVX01BU0tfUElEKXsKIHN0YXR1c19yZXBvcnQtPnBpZD0od21zX3BpZF9lX3R5cGUpZGF0YVtwb3NdO3BvcysrO31pZihzdGF0dXNfcmVwb3J0LT5tYXNrJgogV01TX1RQRFVfTUFTS19EQ1Mpe3Bvcys9d21zX3RzX2RlY29kZV9kY3MoZGF0YStwb3MsJnN0YXR1c19yZXBvcnQtPmRjcyk7fWlmKAogc3RhdHVzX3JlcG9ydC0+bWFzayZXTVNfVFBEVV9NQVNLX1VTRVJfREFUQSl7cG9zKys7aT13bXNfdHNfZGVjb2RlX2d3X3VzZXJfZGF0YSgKLSZzdGF0dXNfcmVwb3J0LT5kY3MsZGF0YVtwb3MtKDB4N2M0KzcxMzYtMHgyM2EzKV0sZGF0YStwb3Msc3RhdHVzX3JlcG9ydC0+Cismc3RhdHVzX3JlcG9ydC0+ZGNzLGRhdGFbcG9zLSgweDgwNSs1Nzk4LTB4MWVhYSldLGRhdGErcG9zLHN0YXR1c19yZXBvcnQtPgogdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50LCZzdGF0dXNfcmVwb3J0LT51c2VyX2RhdGEpO2lmKGk+V01TX1NNU19VRExfTUFYXzhfQklUKXsKIHByaW50ZigKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4M2FceDIwXHg1NVx4NDRceDRjXHgyMFx4M2RceDIwXHgyNVx4NmNceDc1IgogLGkpO3N0PVdNU19JTlZBTElEX1VTRVJfREFUQV9TSVpFX1M7fXBvcys9aTt9fWVsc2V7c3RhdHVzX3JlcG9ydC0+bWFzaz0KLSgweDFlN2YrMjEwMi0weDI2YjUpO31yZXR1cm4gc3Q7fXdtc19zdGF0dXNfZV90eXBlIHdtc190c19kZWNvZGUoY29uc3QgCisoMHgxY2Y0KzExMTItMHgyMTRjKTt9cmV0dXJuIHN0O313bXNfc3RhdHVzX2VfdHlwZSB3bXNfdHNfZGVjb2RlKGNvbnN0IAogVF96VWZpU21zX1Jhd1RzRGF0YSpwdFJhd1RzRGF0YSxUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKnB0Q2xpZW50VHNEYXRhKXsKIHdtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO3dtc19nd19wcF90c19kYXRhX3NfdHlwZSptc2c7aWYocHRSYXdUc0RhdGE9PU5VTEwKIHx8cHRDbGllbnRUc0RhdGE9PU5VTEwpe3JldHVybiBXTVNfTlVMTF9QVFJfUzt9bXNnPSZwdENsaWVudFRzRGF0YS0+dS5nd19wcDsKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19kYi5jIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKaW5kZXggYTMyNDZiMC4uNzljYzNkYyAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKQEAgLTEwMSw4NSArMTAxLDg0IEBACiAjZGVmaW5lIE9VVERBVEVJTlRFUlZBTCA3Nzc2MDAwDQogdHlwZWRlZiBzdHJ1Y3R7Y2hhcipidWZfYWRkcjtpbnQgYnVmX2xlbjt9VF96VWZpU21zX0J1ZkluZm87dHlwZWRlZiBzdHJ1Y3R7aW50IAogdmFsaWQ7Y2hhcipzdHJTUUw7fVRfelVmaVNtc19TUUxNYXA7c3FsaXRlMypnX3pVZmlTbXNfRGJQb2ludGVyPQotKDB4MjI3KzkwMzAtMHgyNTZkKTtleHRlcm4gVF96VWZpU21zX1BhcmFJbmZvIGdfelVmaVNtc19DdXJTbXNQYXJhO2V4dGVybiAKKygweDE1ZCs0NDg3LTB4MTJlNCk7ZXh0ZXJuIFRfelVmaVNtc19QYXJhSW5mbyBnX3pVZmlTbXNfQ3VyU21zUGFyYTtleHRlcm4gCiB1bnNpZ25lZCBsb25nIGdfelVmaVNtc19TdG9yZUNhcGFibGl0eVtaVEVfV01TX01FTU9SWV9NQVhdO2V4dGVybiAKIFRfelVmaVNtc19EZWxTbXMgZ196VWZpU21zX0RlbE1zZztzdGF0aWMgaW50IGlzU3VjZXNzKFRfelVmaVNtc19EYlJlc3VsdCBkYlJzdCl7CiByZXR1cm4gZGJSc3Q9PVpURV9XTVNfREJfT0s/WlVGSV9TVUNDOlpVRklfRkFJTDt9dGltZV90IHp0ZV9nZXRzZWNvbmQoCi1UX3pVZmlTbXNfRGF0ZSBkYXRlKXt0aW1lX3QgdGltZXQ7c3RydWN0IHRtIHRtdGltZT17KDB4YmRjKzI3NzQtMHgxNmIyKX07aW50IAotdG1wX2k9KDB4MTNlYSsxNjU5LTB4MWE2NSk7Ci0jaWYgKDB4M2QxKzU5ODctMHgxYjM0KQ0KLWlmKGF0b2koZGF0ZS55ZWFyKT4oMHg1YjkrMC0weDU1Nil8fGF0b2koZGF0ZS55ZWFyKTwoMHg2NCszMjQ0LTB4ZDEwKSl7cHJpbnRmKAotIltTTVNdIGdldHNlY29uZCBlcnJvciwgeWVhciBvdXQgb2YgcmFuZ2U6ICVkISEhIixhdG9pKGRhdGUueWVhcikpO3JldHVybgotKDB4MzZiKzY5MzItMHgxZTdmKTt9CitUX3pVZmlTbXNfRGF0ZSBkYXRlKXt0aW1lX3QgdGltZXQ7c3RydWN0IHRtIHRtdGltZT17KDB4MWNmKzUzOTgtMHgxNmU1KX07aW50IAordG1wX2k9KDB4MTgxOCsxOTcyLTB4MWZjYyk7CisjaWYgKDB4ZDU3KzI4NTEtMHgxODdhKQ0KK2lmKGF0b2koZGF0ZS55ZWFyKT4oMHgxMzIwKzM4OS0weDE0NDIpfHxhdG9pKGRhdGUueWVhcik8KDB4MjliKzU1NTgtMHgxODUxKSl7CitwcmludGYoIltTTVNdIGdldHNlY29uZCBlcnJvciwgeWVhciBvdXQgb2YgcmFuZ2U6ICVkISEhIixhdG9pKGRhdGUueWVhcikpO3JldHVybgorKDB4MTFmYSsxNjQ0LTB4MTg2Nik7fQogI2VuZGlmDQotdG1wX2k9YXRvaShkYXRlLnllYXIpO2lmKHRtcF9pPCgweDFjZWQrNjg5LTB4MWY5ZSl8fHRtcF9pPklOVF9NQVgtCi0oMHgxZTU2KzQyNi0weDFmZmYpKXthdF9wcmludChMT0dfRVJSLAordG1wX2k9YXRvaShkYXRlLnllYXIpO2lmKHRtcF9pPCgweGMzNSs2MDY0LTB4MjNlNSl8fHRtcF9pPklOVF9NQVgtCisoMHhjNDErMTU5MC0weDEyNzYpKXthdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2NFx4NjFceDc0XHg2NVx4MmVceDc5XHg2NVx4NjFceDcyXHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4oMHhmZDcrMzc4NS0weDFlYTApO310bXRpbWUudG1feWVhcj10bXBfaSsoMHgyNWQzKzEyNzMtMHgyMmZjKS0KLSgweDEzYmErNjM1MS0weDI1MWQpO3RtcF9pPWF0b2koZGF0ZS5tb250aCk7aWYodG1wX2k8KDB4Yjc2KzY4OTItMHgyNjYyKXx8dG1wX2k+Ci1JTlRfTUFYLSgweGVhZCs0MzItMHgxMDVjKSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4YTM0KzczMzItMHgyNmQ4KTt9dG10aW1lLnRtX3llYXI9dG1wX2krKDB4MTg5Yys1NjYxLTB4MjZlOSktCisoMHgxNDViKzYzNDgtMHgyNWJiKTt0bXBfaT1hdG9pKGRhdGUubW9udGgpO2lmKHRtcF9pPCgweDdkOSs2ODUtMHhhODYpfHx0bXBfaT4KK0lOVF9NQVgtKDB4ZTE0KzYyNTYtMHgyNjgzKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2ZFx4NmZceDZlXHg3NFx4NjhceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweDg4ZCs1ODUzLTB4MWY2YSk7fXRtdGltZS50bV9tb249dG1wX2ktKDB4Y2ExKzIwODMtMHgxNGMzKTt0bXBfaQotPWF0b2koZGF0ZS5kYXkpO2lmKHRtcF9pPCgweDliYSs2ODE4LTB4MjQ1Yyl8fHRtcF9pPklOVF9NQVgtKDB4MTMwZCszNzEyLTB4MjE4YykKLSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4NDkxKzUyMjItMHgxOGY3KTt9dG10aW1lLnRtX21vbj10bXBfaS0oMHg5MWMrNzEyLTB4YmUzKTt0bXBfaT0KK2F0b2koZGF0ZS5kYXkpO2lmKHRtcF9pPCgweDEyNjgrMzMxOC0weDFmNWUpfHx0bXBfaT5JTlRfTUFYLSgweDJmNysxMjA2LTB4N2FjKSl7CithdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2NFx4NjFceDc0XHg2NVx4MmVceDY0XHg2MVx4NzlceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweGFiZisyMTA3LTB4MTJmYSk7fXRtdGltZS50bV9tZGF5PXRtcF9pO3RtcF9pPWF0b2koZGF0ZS5ob3VyKTtpZgotKHRtcF9pPCgweDJiZCsxNDk1LTB4ODk0KXx8dG1wX2k+SU5UX01BWC0oMHg2NTErMzA4NS0weDEyNWQpKXthdF9wcmludChMT0dfRVJSLAorLHRtcF9pKTtyZXR1cm4oMHg2OTQrNTgzMi0weDFkNWMpO310bXRpbWUudG1fbWRheT10bXBfaTt0bXBfaT1hdG9pKGRhdGUuaG91cik7aWYKKyh0bXBfaTwoMHhjZTMrMjQ4Mi0weDE2OTUpfHx0bXBfaT5JTlRfTUFYLSgweGFmNys2NTcwLTB4MjRhMCkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDY0XHg2MVx4NzRceDY1XHgyZVx4NjhceDZmXHg3NVx4NzJceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweDEyNyszNTI3LTB4ZWVlKTt9dG10aW1lLnRtX2hvdXI9dG1wX2k7dG1wX2k9YXRvaShkYXRlLm1pbik7aWYoCi10bXBfaTwoMHgxODI5KzI1MjctMHgyMjA4KXx8dG1wX2k+SU5UX01BWC0oMHgxMTcwKzMwNjItMHgxZDY1KSl7YXRfcHJpbnQoTE9HX0VSUgotLAorLHRtcF9pKTtyZXR1cm4oMHhkOGQrNTkzMC0weDI0YjcpO310bXRpbWUudG1faG91cj10bXBfaTt0bXBfaT1hdG9pKGRhdGUubWluKTtpZigKK3RtcF9pPCgweDFkYTIrOTkyLTB4MjE4Mil8fHRtcF9pPklOVF9NQVgtKDB4OGE5KzI2MjQtMHgxMmU4KSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2ZFx4NjlceDZlXHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4oMHgxZTBmKzE0MjgtMHgyM2EzKTt9dG10aW1lLnRtX21pbj10bXBfaTt0bXBfaT1hdG9pKGRhdGUuc2VjKTtpZigKLXRtcF9pPCgweDJhMys4MTMwLTB4MjI2NSl8fHRtcF9pPklOVF9NQVgtKDB4NDQwKzE4MDQtMHhiNGIpKXthdF9wcmludChMT0dfRVJSLAorLHRtcF9pKTtyZXR1cm4oMHg4NWIrMjc5My0weDEzNDQpO310bXRpbWUudG1fbWluPXRtcF9pO3RtcF9pPWF0b2koZGF0ZS5zZWMpO2lmKAordG1wX2k8KDB4MTAzKzQ5NTItMHgxNDViKXx8dG1wX2k+SU5UX01BWC0oMHgxNzk5KzI1NTYtMHgyMTk0KSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg3M1x4NjVceDYzXHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4oMHgxNDBkKzIwMzQtMHgxYmZmKTt9dG10aW1lLnRtX3NlYz10bXBfaTt0aW1ldD1ta3RpbWUoJnRtdGltZSk7CissdG1wX2kpO3JldHVybigweDIxNiszNDI1LTB4Zjc3KTt9dG10aW1lLnRtX3NlYz10bXBfaTt0aW1ldD1ta3RpbWUoJnRtdGltZSk7CiByZXR1cm4gdGltZXQ7fVRfelVmaVNtc19EYlJlc3VsdCB6VWZpU21zX09wZW5EYih2b2lkKXtpbnQgcmV0cnlfdGltZXM9Ci0oMHgxNTc0KzM3NTEtMHgyNDFiKTtpbnQgb3Blbl9yc3Q9U1FMSVRFX0VSUk9SO2lmKGdfelVmaVNtc19EYlBvaW50ZXIhPU5VTEwpeworKDB4NTZhKzI4ODgtMHgxMGIyKTtpbnQgb3Blbl9yc3Q9U1FMSVRFX0VSUk9SO2lmKGdfelVmaVNtc19EYlBvaW50ZXIhPU5VTEwpewogc3FsaXRlM19jbG9zZShnX3pVZmlTbXNfRGJQb2ludGVyKTtnX3pVZmlTbXNfRGJQb2ludGVyPU5VTEw7fWRve29wZW5fcnN0PQogc3FsaXRlM19vcGVuKFpURV9XTVNfREJfUEFUSCwmZ196VWZpU21zX0RiUG9pbnRlcik7fXdoaWxlKG9wZW5fcnN0PT0KLVNRTElURV9DQU5UT1BFTiYmcmV0cnlfdGltZXMrKzwoMHhkNWIrNTYzLTB4Zjg0KSk7cHJpbnRmKAorU1FMSVRFX0NBTlRPUEVOJiZyZXRyeV90aW1lcysrPCgweDIzMis4NjgzLTB4MjQxMykpO3ByaW50ZigKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NGZceDcwXHg2NVx4NmVceDQ0XHg2Mlx4M2FceDIwXHg3Mlx4NjVceDc0XHg3Mlx4NzlceDVmXHg3NFx4NjlceDZkXHg2NVx4NzNceDIwXHgzZFx4MjBceDI1XHg2NFx4MmNceDIwXHg2Zlx4NzBceDY1XHg2ZVx4NWZceDcyXHg3M1x4NzRceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLHJldHJ5X3RpbWVzLG9wZW5fcnN0KTtyZXR1cm4gb3Blbl9yc3Q9PVNRTElURV9PSz9aVEVfV01TX0RCX09LOgogWlRFX1NNU19EQl9FUlJPUl9OT1RfT1BFTl9EQjt9VF96VWZpU21zX0RiUmVzdWx0IHpVZmlTbXNfQ2xvc2VEYih2b2lkKXtpZigKIHNxbGl0ZTNfY2xvc2UoZ196VWZpU21zX0RiUG9pbnRlcikhPVNRTElURV9PSyl7cmV0dXJuIFpURV9TTVNfREJfRVJST1I7fQogZ196VWZpU21zX0RiUG9pbnRlcj1OVUxMO3JldHVybiBaVEVfV01TX0RCX09LO31UX3pVZmlTbXNfRGJSZXN1bHQgCiB6VWZpU21zX0V4ZWNTcWwoY29uc3QgY2hhcipleGVjX3NxbCx6dGVfd21zX2RiX2NhbGxiYWNrIGNhbGxiYWNrLHZvaWQqZnZhcmcpe2ludAotIHRyeV90aW1lcz0oMHhkZjcrMTY1Ni0weDE0NmYpO2ludCBzcWxSc3Q9U1FMSVRFX0VSUk9SO3doaWxlKHRyeV90aW1lcysrPAotKDB4OWYwKzQ3NDUtMHgxYzZmKSl7c3FsUnN0PXNxbGl0ZTNfZXhlYyhnX3pVZmlTbXNfRGJQb2ludGVyLGV4ZWNfc3FsLGNhbGxiYWNrLAorIHRyeV90aW1lcz0oMHhiNisxODQwLTB4N2U2KTtpbnQgc3FsUnN0PVNRTElURV9FUlJPUjt3aGlsZSh0cnlfdGltZXMrKzwKKygweDEwMmQrMjEyMi0weDE4NmQpKXtzcWxSc3Q9c3FsaXRlM19leGVjKGdfelVmaVNtc19EYlBvaW50ZXIsZXhlY19zcWwsY2FsbGJhY2ssCiBmdmFyZyxOVUxMKTtpZihzcWxSc3QhPVNRTElURV9CVVNZJiZzcWxSc3QhPVNRTElURV9MT0NLRUQmJnNxbFJzdCE9U1FMSVRFX0lPRVJSKQoge2JyZWFrO31wcmludGYoCiAiXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ1XHg3OFx4NjVceDYzXHg1M1x4NzFceDZjXHgzYVx4MjBceDc0XHg3Mlx4NzlceDVmXHg3NFx4NjlceDZkXHg2NVx4NzNceDNkXHgyNVx4NjRceDJjXHgyMFx4NTNceDUxXHg0Y1x4M2RceDI1XHg3M1x4MmNceDIwXHg0NVx4NzJceDcyXHg2ZFx4NzNceDY3XHgzZFx4MjVceDczIiAiXG4iCiAsdHJ5X3RpbWVzLGV4ZWNfc3FsLHNxbGl0ZTNfZXJybXNnKGdfelVmaVNtc19EYlBvaW50ZXIpKTtzbGVlcCgKLSgweDIwMDkrMTYwMS0weDI2NDkpKTt9aWYoc3FsUnN0IT1TUUxJVEVfT0spe3ByaW50ZigKKygweDgyZis1MTIwLTB4MWMyZSkpO31pZihzcWxSc3QhPVNRTElURV9PSyl7cHJpbnRmKAogIlx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NVx4NzhceDY1XHg2M1x4NTNceDcxXHg2Y1x4M2FceDIwXHg3NFx4NzJceDc5XHg1Zlx4NzRceDY5XHg2ZFx4NjVceDczXHgzZFx4MjVceDY0XHgyY1x4MjBceDUzXHg1MVx4NGNceDNkXHgyNVx4NzNceDJjXHgyMFx4NDVceDcyXHg3Mlx4NmRceDczXHg2N1x4M2RceDI1XHg3MyIgIlxuIgogLHRyeV90aW1lcyxleGVjX3NxbCxzcWxpdGUzX2Vycm1zZyhnX3pVZmlTbXNfRGJQb2ludGVyKSk7cmV0dXJuIFpURV9TTVNfREJfRVJST1IKIDt9ZWxzZXsKICNpZmRlZiBXRUJTX1NFQ1VSSVRZDQotaWYoYWNjZXNzKFpURV9XTVNfVE1QMV9QQVRILEZfT0spPT0oMHg5MWYrOTIxLTB4Y2I4KSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK2lmKGFjY2VzcyhaVEVfV01TX1RNUDFfUEFUSCxGX09LKT09KDB4MTQyMisyMjE4LTB4MWNjYykpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ1XHg3OFx4NjVceDYzXHg1M1x4NzFceDZjXHgyMFx4NjRceDYyXHgyMFx4NzNceDc0XHg2MVx4NzkiCi0pO2lmKHJlbW92ZShaVEVfV01TX1RNUDFfUEFUSCkhPSgweGMxYisxMzQ0LTB4MTE1Yikpe3Nsb2coU01TX1BSSU5ULFNMT0dfRVJSLAorKTtpZihyZW1vdmUoWlRFX1dNU19UTVAxX1BBVEgpIT0oMHgxNzJhKzI2MzAtMHgyMTcwKSl7c2xvZyhTTVNfUFJJTlQsU0xPR19FUlIsCiAiXHg3Mlx4NjVceDZkXHg2Zlx4NzZceDY1XHgyMFx4NTdceDRkXHg1M1x4NWZceDU0XHg0ZFx4NTBceDMxXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2YyIKLSk7fX17Y2hhciBybnVtX2J1ZlsoMHgxYTgwKzE0MzgtMHgyMDA2KV09eygweDc5MSs1OTQtMHg5ZTMpfTtjaGFyIGNtZFsKLSgweDk2YysxMzk4LTB4ZTYyKV09eygweDFjMTcrNzIwLTB4MWVlNyl9O3NjX2NmZ19nZXQoCispO319e2NoYXIgcm51bV9idWZbKDB4MWExMysyMjIzLTB4MjJhYSldPXsoMHg4YSsxMTk5LTB4NTM5KX07Y2hhciBjbWRbCisoMHhkYzUrMTgxMi0weDE0NTkpXT17KDB4MmMzKzYwODctMHgxYThhKX07c2NfY2ZnX2dldCgKICJceDcyXHg2ZVx4NzVceDZkXHg1Zlx4NjFceDc0IixybnVtX2J1ZixzaXplb2Yocm51bV9idWYpKTtzbnByaW50ZihjbWQsc2l6ZW9mKAogY21kKSwKICJceDJmXHg2Mlx4NjlceDZlXHgyZlx4NmZceDcwXHg2NVx4NmVceDczXHg3M1x4NmNceDIwXHg2NVx4NmVceDYzXHgyMFx4MmRceDY1XHgyMFx4MmRceDYxXHg2NVx4NzNceDMyXHgzNVx4MzZceDIwXHgyZFx4NzNceDYxXHg2Y1x4NzRceDIwXHgyZFx4NjlceDZlXHgyMFx4MjVceDczXHgyMFx4MmRceDZmXHg3NVx4NzRceDIwXHgyNVx4NzNceDIwXHgyZFx4NzBceDYxXHg3M1x4NzNceDIwXHg3MFx4NjFceDczXHg3M1x4M2FceDI1XHg3MyIKICxaVEVfV01TX0RCX1BBVEgsWlRFX1dNU19UTVAxX1BBVEgscm51bV9idWYpO3p4aWNfc3lzdGVtKGNtZCk7aWYoYWNjZXNzKAotWlRFX1dNU19UTVAxX1BBVEgsRl9PSyk9PSgweGIzMCs0NjUxLTB4MWQ1Yikpe2lmKHJlbW92ZShaVEVfV01TX1NFQ19QQVRIKSE9Ci0oMHg5YTQrNjQwOS0weDIyYWQpKXtzbG9nKFNNU19QUklOVCxTTE9HX0VSUiwKK1pURV9XTVNfVE1QMV9QQVRILEZfT0spPT0oMHg0NDUrNTM4NS0weDE5NGUpKXtpZihyZW1vdmUoWlRFX1dNU19TRUNfUEFUSCkhPQorKDB4MTYyZisyOTQ4LTB4MjFiMykpe3Nsb2coU01TX1BSSU5ULFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDU3XHg0ZFx4NTNceDVmXHg1M1x4NDVceDQzXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2YyIKLSk7fWlmKHJlbmFtZShaVEVfV01TX1RNUDFfUEFUSCxaVEVfV01TX1NFQ19QQVRIKSE9KDB4YjNmKzUzMTItMHgxZmZmKSl7c2xvZygKKyk7fWlmKHJlbmFtZShaVEVfV01TX1RNUDFfUEFUSCxaVEVfV01TX1NFQ19QQVRIKSE9KDB4OTdhKzIwMzgtMHgxMTcwKSl7c2xvZygKIFNNU19QUklOVCxTTE9HX0VSUiwKICJceDcyXHg2NVx4NmVceDYxXHg2ZFx4NjVceDIwXHg1N1x4NGRceDUzXHg1Zlx4NTRceDRkXHg1MFx4MzFceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgogKTt9fX0KICNlbmRpZgkNCiByZXR1cm4gWlRFX1dNU19EQl9PSzt9fWludCB6VWZpU21zX0dldEZpcnN0Q29sdW1uSW50KHZvaWQqZnZhcmcsaW50IGNvbHVtbnMsY2hhcgotKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtpZihjb2x1bW5zPj0oMHg0N2IrMzEtMHg0OTkpKXtpZih6cmVzdWx0WwotKDB4MWZiZCs0OTMtMHgyMWFhKV09PU5VTEwpeyooaW50KilmdmFyZz0oMHgxYmQrNzA0LTB4NDdkKTt9ZWxzZXsqKGludCopZnZhcmc9Ci1hdG9pKHpyZXN1bHRbKDB4ZTFiKzQxMzctMHgxZTQ0KV0pO31yZXR1cm4gU1FMSVRFX09LO31lbHNle3JldHVybiBTUUxJVEVfRVJST1I7fQotfWludCB6VWZpU21zX1NldENtZFN0YXR1cyhUX3pVZmlTbXNfU3RhdHVzSW5mbypwdFNldFN0YXR1cyl7VF96VWZpU21zX0RiUmVzdWx0IAotcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtwcmludGYoCisqKnpyZXN1bHQsY2hhcioqbG5hbWUpe2lmKGNvbHVtbnM+PSgweGU0OCsyNTE4LTB4MTgxZCkpe2lmKHpyZXN1bHRbCisoMHgxN2I0KzExNTgtMHgxYzNhKV09PU5VTEwpeyooaW50KilmdmFyZz0oMHhlMjErNDM2OC0weDFmMzEpO31lbHNleyooaW50KilmdmFyZworPWF0b2koenJlc3VsdFsoMHgxMzlkKzQ3ODMtMHgyNjRjKV0pO31yZXR1cm4gU1FMSVRFX09LO31lbHNle3JldHVybiBTUUxJVEVfRVJST1IKKzt9fWludCB6VWZpU21zX1NldENtZFN0YXR1cyhUX3pVZmlTbXNfU3RhdHVzSW5mbypwdFNldFN0YXR1cyl7VF96VWZpU21zX0RiUmVzdWx0CisgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NzRceDQzXHg2ZFx4NjRceDUzXHg3NFx4NjFceDc0XHg3NVx4NzNceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDJlIiAiXG4iCiApO3N0clNRTD1zcWxpdGUzX21wcmludGYoCiAiXHg0OVx4NGVceDUzXHg0NVx4NTJceDU0XHgyMFx4NGZceDUyXHgyMFx4NTJceDQ1XHg1MFx4NGNceDQxXHg0M1x4NDVceDIwXHg0OVx4NGVceDU0XHg0Zlx4MjBceDI1XHg3M1x4MjhceDQzXHg2ZFx4NjRceDJjXHg0M1x4NmRceDY0XHg1Zlx4NTNceDc0XHg2MVx4NzRceDc1XHg3M1x4MmNceDQ1XHg3Mlx4NzJceDVmXHg0M1x4NmZceDY0XHg2NVx4MmNceDUzXHg2NVx4NmVceDY0XHg1Zlx4NDZceDYxXHg2OVx4NmNceDVmXHg0M1x4NmZceDc1XHg2ZVx4NzRceDJjXHg0NFx4NjVceDZjXHg1Zlx4NDNceDZmXHg3NVx4NmVceDc0XHgyOVx4MjAiCkBAIC0xODgsMjggKzE4NywyOCBAQAogcHRTZXRTdGF0dXMtPmVycl9jb2RlLHB0U2V0U3RhdHVzLT5zZW5kX2ZhaWxlZF9jb3VudCxwdFNldFN0YXR1cy0+CiBkZWxldGVfZmFpbGVkX2NvdW50KTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsKHN0clNRTCxOVUxMLE5VTEwpO3NxbGl0ZTNfZnJlZSgKIHN0clNRTCk7cmV0dXJuIGlzU3VjZXNzKHJlc3VsdCk7fXZvaWQgelVmaVNtc19TZXRQYXJhbWV0ZXJOdihUX3pVZmlTbXNfUGFyYUluZm8qCi1wYXJhKXtpZigoMHhlMCszNTI0LTB4ZWE0KT09KGludClwYXJhLT5zdGF0dXNfcmVwb3J0X29uKXtzY19jZmdfc2V0KAorcGFyYSl7aWYoKDB4ZTQrOTYzLTB4NGE3KT09KGludClwYXJhLT5zdGF0dXNfcmVwb3J0X29uKXtzY19jZmdfc2V0KAogTlZfUkVQT1JUX0VOQUJMRSwiXHgzMCIpO31lbHNle3NjX2NmZ19zZXQoTlZfUkVQT1JUX0VOQUJMRSwiXHgzMSIpO31pZigKLSgweDc1NisxMjUxLTB4YzM5KT09KGludClwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbil7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwKLSJceDMwIik7fWVsc2V7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwiXHgzMSIpO31pZigoMHgzMjErNjgwLTB4NWM5KT09KGludCkKKygweDM1ZCsxNjMwLTB4OWJiKT09KGludClwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbil7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwKKyJceDMwIik7fWVsc2V7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwiXHgzMSIpO31pZigoMHgxYzIrMjYwNi0weGJmMCk9PShpbnQpCiBwYXJhLT5vdXRkYXRlX2RlbGV0ZV9vbil7c2NfY2ZnX3NldChOVl9PVVREQVRFX0RFTEVURSwiXHgzMCIpO31lbHNle3NjX2NmZ19zZXQoCiBOVl9PVVREQVRFX0RFTEVURSwiXHgzMSIpO31pZigqKHBhcmEtPmRlZmF1bHRfc3RvcmUpIT0nXDAnKXtzY19jZmdfc2V0KAotTlZfREVGQVVMVF9TVE9SRSwoY2hhciopcGFyYS0+ZGVmYXVsdF9zdG9yZSk7fWlmKCgweGIwMCs1NjU1LTB4MjExNyk9PShpbnQpcGFyYQorTlZfREVGQVVMVF9TVE9SRSwoY2hhciopcGFyYS0+ZGVmYXVsdF9zdG9yZSk7fWlmKCgweDQ4NyszNzExLTB4MTMwNik9PShpbnQpcGFyYQogLT5tZW1fc3RvcmUpe3NjX2NmZ19zZXQoTlZfUFJBX01FTVNUT1JFLCJceDMwIik7fWVsc2V7c2NfY2ZnX3NldChOVl9QUkFfTUVNU1RPUkUKLSwiXHgzMSIpO31pZigoMHgzZTUrMzEyMC0weGYxNik9PShpbnQpcGFyYS0+dHBfdmFsaWRpdHlfcGVyaW9kKXtzY19jZmdfc2V0KAotTlZfU01TX1ZQLCJceDZjXHg2Zlx4NmVceDY3XHg2NVx4NzNceDc0Iik7fWVsc2UgaWYoKDB4YjNkKzY2OTctMHgyNGI5KT09KGludCkKKywiXHgzMSIpO31pZigoMHgxMGMrNjYzOC0weDE5ZmIpPT0oaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldCgKK05WX1NNU19WUCwiXHg2Y1x4NmZceDZlXHg2N1x4NjVceDczXHg3NCIpO31lbHNlIGlmKCgweGMxMCszNjY5LTB4MTliOCk9PShpbnQpCiBwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Qpe3NjX2NmZ19zZXQoTlZfU01TX1ZQLCJceDZmXHg2ZVx4NjVceDc3XHg2NVx4NjVceDZiIik7fQotZWxzZSBpZigoMHhiYjMrNjU3My0weDI0YjkpPT0oaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldChOVl9TTVNfVlAKLSwiXHg2Zlx4NmVceDY1XHg1Zlx4NjRceDYxXHg3OSIpO31lbHNlIGlmKCgweGI2MiszMTMyLTB4MTcwZik9PShpbnQpcGFyYS0+CitlbHNlIGlmKCgweDEwYis5MDgwLTB4MjNkYyk9PShpbnQpcGFyYS0+dHBfdmFsaWRpdHlfcGVyaW9kKXtzY19jZmdfc2V0KE5WX1NNU19WUAorLCJceDZmXHg2ZVx4NjVceDVmXHg2NFx4NjFceDc5Iik7fWVsc2UgaWYoKDB4ZDM5KzQ2MzQtMHgxZWM0KT09KGludClwYXJhLT4KIHRwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldChOVl9TTVNfVlAsIlx4NzRceDc3XHg2NVx4NmNceDc2XHg2NVx4NjgiKTt9cHJpbnRmCiAoCiAiXHg3N1x4NmRceDczXHg1Zlx4NjRceDYyXHg1Zlx4NzNceDY1XHg3NFx4NWZceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyMFx4M2FceDNhXHgyMFx4NzNceDY1XHg3NFx4MjBceDc0XHg3MFx4NWZceDc2XHg2MVx4NmNceDY5XHg2NFx4NjlceDc0XHg3OVx4NWZceDcwXHg2NVx4NzJceDY5XHg2Zlx4NjRceDIwXHgyNVx4NjQiICJcbiIKICwoaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCk7fWludCB6VWZpU21zX1NldERiUGFyYW1ldGVycyhUX3pVZmlTbXNfUGFyYUluZm8qCiBwYXJhKXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtpbnQgY291bnQ9Ci0oMHhkNmYrNDQ0NC0weDFlY2IpO2lmKE5VTEw9PXBhcmEpe3JldHVybi0oMHhkZjIrMjk5LTB4ZjFjKTt9elVmaVNtc19FeGVjU3FsKAorKDB4ZGE4KzE1MzUtMHgxM2E3KTtpZihOVUxMPT1wYXJhKXtyZXR1cm4tKDB4MjY5Mis1OC0weDI2Y2IpO316VWZpU21zX0V4ZWNTcWwoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwIgogIFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFIlx4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDMxXHgzYiIsCi16VWZpU21zX0dldEZpcnN0Q29sdW1uSW50LCZjb3VudCk7aWYoY291bnQ+KDB4MmIzKzU2MzAtMHgxOGIxKSl7c3RyU1FMPQorelVmaVNtc19HZXRGaXJzdENvbHVtbkludCwmY291bnQpO2lmKGNvdW50PigweDljOSs0NjAzLTB4MWJjNCkpe3N0clNRTD0KIHNxbGl0ZTNfbXByaW50ZigKICJceDU1XHg1MFx4NDRceDQxXHg1NFx4NDVceDIwXHgyNVx4NzNceDIwXHg1M1x4NDVceDU0XHgyMFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDNkXHgyN1x4MjVceDY0XHgyN1x4MmNceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjNceDYxXHgzZFx4MjdceDI1XHg3MVx4MjdceDJjXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg2NFx4MjdceDJjXHg1NFx4NzBceDVmXHg1Nlx4NjFceDZjXHg2OVx4NjRceDY5XHg3NFx4NzlceDNkXHgyN1x4MjVceDY0XHgyN1x4MmNceDUzXHg2NVx4NmVceDY0XHg1Zlx4NTJceDY1XHg3NFx4NzJceDc5XHgzZFx4MjdceDI1XHg2NFx4MjdceDJjXHg0Zlx4NzVceDc0XHg2NFx4NjFceDc0XHg2NVx4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDNkXHgyN1x4MjVceDY0XHgyN1x4MmNceDQ0XHg2NVx4NjZceDYxXHg3NVx4NmNceDc0XHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3MVx4MjdceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgzMVx4M2IiCiAsWlRFX1dNU19EQl9QQVJBTUVURVJfVEFCTEUsKGludClwYXJhLT5zdGF0dXNfcmVwb3J0X29uLHBhcmEtPnNjYSwoaW50KXBhcmEtPgpAQCAtMjIyLDEzICsyMjEsMTMgQEAKIG1lbV9zdG9yZSwoaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCwoaW50KXBhcmEtPnNlbmRmYWlsX3JldHJ5X29uLChpbnQpcGFyYS0+CiBvdXRkYXRlX2RlbGV0ZV9vbixwYXJhLT5kZWZhdWx0X3N0b3JlKTt9cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzdHJTUUwsTlVMTCxOVUxMKQogO3NxbGl0ZTNfZnJlZShzdHJTUUwpO2lmKHJlc3VsdD09WlRFX1dNU19EQl9PSyl7elVmaVNtc19TZXRQYXJhbWV0ZXJOdihwYXJhKTsKLXJldHVybigweDE0MDErNDYwMC0weDI1ZjkpO31yZXR1cm4tKDB4YWFhKzI1MTMtMHgxNDdhKTt9aW50IAorcmV0dXJuKDB4N2E3KzI0NjYtMHgxMTQ5KTt9cmV0dXJuLSgweDEwNjArMzIzMS0weDFjZmUpO31pbnQgCiB6VWZpU21zX0dldFRvdGFsQ291bnQoY29uc3QgY2hhcipwRGJUYWJsZSxpbnQqcFRvdGFsQ291bnQpe1RfelVmaVNtc19EYlJlc3VsdCAKIHJlc3VsdD1aVEVfV01TX0RCX09LO2NoYXIqc3RyU1FMPU5VTEw7c3RyU1FMPXNxbGl0ZTNfbXByaW50ZigKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3MVx4MjdceDNiIgogLHBEYlRhYmxlKTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsKHN0clNRTCx6VWZpU21zX0dldEZpcnN0Q29sdW1uSW50LHBUb3RhbENvdW50KTsKIHNxbGl0ZTNfZnJlZShzdHJTUUwpO3JldHVybiBpc1N1Y2VzcyhyZXN1bHQpO31pbnQgelVmaVNtc19HZXRTbXNNYXhSZWZlckluRGIoCi12b2lkKXtpbnQgbWF4X3Ntc19yZWY9LSgweGErNzIwNC0weDFjMmQpO3pVZmlTbXNfRXhlY1NxbCgKK3ZvaWQpe2ludCBtYXhfc21zX3JlZj0tKDB4ZWYwKzQyMzMtMHgxZjc4KTt6VWZpU21zX0V4ZWNTcWwoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NGRceDYxXHg3OFx4NWZceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDY2XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwIgogIFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFCiAiXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgyMFx4M2RceDIwXHgzMVx4M2IiLApAQCAtMjM3LDE5ICsyMzYsMTkgQEAKIGNvbnRlbnQsaW50IGxlbil7c3FsaXRlM19zdG10KnN0bXQ9TlVMTDtjaGFyKnN0clNRTD1zcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjlceDZlXHg2NFx4MmNceDQzXHg2M1x4NWZceDUzXHg2NVx4NzFceDJjXHg0M1x4NjNceDVmXHg0M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDcxXHgyN1x4M2IiCiAsaWQsbWVtX3N0b3JlKTsodm9pZClzcWxpdGUzX3ByZXBhcmUoZ196VWZpU21zX0RiUG9pbnRlcixzdHJTUUwsLQotKDB4MTE1YysxNTQtMHgxMWY1KSwmc3RtdCwoMHhhZDgrMTEwNS0weGYyOSkpO3doaWxlKFNRTElURV9ST1c9PXNxbGl0ZTNfc3RlcCgKLXN0bXQpKXtjaGFyKmNvbHVtbl90ZXh0PU5VTEw7bWVtc2V0KHBhYy0+SW5kU3RyLCgweDQ5Yys0NDIwLTB4MTVlMCksc2l6ZW9mKHBhYy0+Ci1JbmRTdHIpKTttZW1zZXQocGFjLT5TZWdfU2VxLCgweDE4ZGYrMTY0OC0weDFmNGYpLHNpemVvZihwYWMtPlNlZ19TZXEpKTtpZigoCi1jb2x1bW5fdGV4dD1zcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4MTU1OSs0OTUtMHgxNzQ4KSkpIT1OVUxMKXN0cm5jcHkocGFjLT4KLUluZFN0cixjb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRJbmQpLSgweGNkYisyODUtMHhkZjcpKTtpZigoY29sdW1uX3RleHQ9Ci1zcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4ZGI4KzU5NjAtMHgyNGZmKSkpIT1OVUxMKXN0cm5jcHkocGFjLT5TZWdfU2VxLAotY29sdW1uX3RleHQsc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS0oMHgxYisyMDE0LTB4N2Y4KSk7aWYoKGNvbHVtbl90ZXh0PQotc3FsaXRlM19jb2x1bW5fdGV4dChzdG10LCgweDViNCs2Njk5LTB4MWZkZCkpKSE9TlVMTClzdHJuY3B5KGNvbnRlbnQsY29sdW1uX3RleHQKLSxsZW4tKDB4MTRhMSsyNTM0LTB4MWU4NikpO3ByaW50ZigKKygweDEwMTYrMTgzOS0weDE3NDQpLCZzdG10LCgweDk4MisxNjYzLTB4MTAwMSkpO3doaWxlKFNRTElURV9ST1c9PXNxbGl0ZTNfc3RlcCgKK3N0bXQpKXtjaGFyKmNvbHVtbl90ZXh0PU5VTEw7bWVtc2V0KHBhYy0+SW5kU3RyLCgweGU2ZCsxNDMxLTB4MTQwNCksc2l6ZW9mKHBhYy0+CitJbmRTdHIpKTttZW1zZXQocGFjLT5TZWdfU2VxLCgweGIwOCs2OTk1LTB4MjY1Yiksc2l6ZW9mKHBhYy0+U2VnX1NlcSkpO2lmKCgKK2NvbHVtbl90ZXh0PXNxbGl0ZTNfY29sdW1uX3RleHQoc3RtdCwoMHgxNmQ1KzE1NTYtMHgxY2U5KSkpIT1OVUxMKXN0cm5jcHkocGFjLT4KK0luZFN0cixjb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRJbmQpLSgweDk5Nis3MjQ1LTB4MjVlMikpO2lmKChjb2x1bW5fdGV4dD0KK3NxbGl0ZTNfY29sdW1uX3RleHQoc3RtdCwoMHhiMTYrNjQ4Ni0weDI0NmIpKSkhPU5VTEwpc3RybmNweShwYWMtPlNlZ19TZXEsCitjb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRTZXEpLSgweDEzZGErMjAwMC0weDFiYTkpKTtpZigoY29sdW1uX3RleHQ9CitzcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4MTI3KzUxMTAtMHgxNTFiKSkpIT1OVUxMKXN0cm5jcHkoY29udGVudCxjb2x1bW5fdGV4dAorLGxlbi0oMHg0ODIrNDYzNC0weDE2OWIpKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3NFx4NjVceDY1XHg3NFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDdceDY1XHg3NFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NDlceDZlXHg2Nlx4NmZceDNhXHgyNVx4NzNceDJjXHgyNVx4NzMiICJcbiIKICxwYWMtPkluZFN0cixwYWMtPlNlZ19TZXEpO30odm9pZClzcWxpdGUzX2ZpbmFsaXplKHN0bXQpO3NxbGl0ZTNfZnJlZShzdHJTUUwpOwotcmV0dXJuKDB4MmJiKzI3NjktMHhkOGMpO31pbnQgelVmaVNtc19VcGRhdGVDb25jYXRTbXNUb0RiKFRfelVmaVNtc19EYlN0b3JlRGF0YSoKLWRiX2RhdGEsY29uc3QgY2hhciptZW1fc3RvcmUsY2hhcipmb3JtYXRfY29uY2F0LGNoYXIqY29udGVudCwKK3JldHVybigweGNhMys2MTU1LTB4MjRhZSk7fWludCB6VWZpU21zX1VwZGF0ZUNvbmNhdFNtc1RvRGIoVF96VWZpU21zX0RiU3RvcmVEYXRhCisqZGJfZGF0YSxjb25zdCBjaGFyKm1lbV9zdG9yZSxjaGFyKmZvcm1hdF9jb25jYXQsY2hhcipjb250ZW50LAogVF96VWZpU21zX0RiU3RvcmVTdHIqcGFjLGludCBjb25jYXRfbnVtLGxvbmcgaWQpe2NoYXIqc3FsPU5VTEw7CiBUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7c3FsPXNxbGl0ZTNfbXByaW50ZigKICJceDU1XHg1MFx4NDRceDQxXHg1NFx4NDVceDIwXHg3M1x4NmRceDczXHgyMFx4NTNceDQ1XHg1NFx4MjBceDY5XHg2ZVx4NjRceDNkXHgyN1x4MjVceDczXHgyN1x4MmNceDU0XHg2MVx4NjdceDNkXHgyN1x4MjVceDY0XHgyN1x4MmNceDQzXHg2M1x4NWZceDUzXHg2NVx4NzFceDNkXHgyN1x4MjVceDczXHgyN1x4MmNceDQzXHg2M1x4NWZceDRlXHg3NVx4NmRceDNkXHgyN1x4MjVceDY0XHgyN1x4MmNceDIwIgpAQCAtMjcwLDMxICsyNjksMzMgQEAKICJceDQzXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHgyY1x4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDVmXHg1Mlx4NjVceDYzXHg2OVx4NzZceDY1XHg2NFx4MmNceDQ0XHg3Mlx4NjFceDY2XHg3NFx4NWZceDQ3XHg3Mlx4NmZceDc1XHg3MFx4NWZceDQ5XHg2NFx4MmNceDU5XHg2NVx4NjFceDcyXHgyY1x4NGRceDZmXHg2ZVx4NzRceDY4XHgyY1x4NDRceDYxXHg3OVx4MmNceDQ4XHg2Zlx4NzVceDcyXHgyY1x4NGRceDY5XHg2ZVx4NzVceDc0XHg2NVx4MmNceDUzXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJjXHg1NFx4NjlceDZkXHg2NVx4NWFceDZmXHg2ZVx4NjVceDJjXHg0ZFx4NmJceDc0XHg2OVx4NmRceDY1XHgyY1x4NDRceDY5XHg3M1x4NzBceDZjXHg2MVx4NzlceDRkXHg2Zlx4NjRceDY1XHgyOVx4MjAiCiAiXHg1Nlx4NDFceDRjXHg1NVx4NDVceDUzXHgyOCIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjXHgyMFx4MjdceDI1XHg2NFx4MjdceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjBceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDIwIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDIwXHgyN1x4MjVceDY0XHgyN1x4MjlceDNiIgogLHBhYy0+Rm9ybWF0SW5kLG1lbV9zdG9yZSxkYl9kYXRhLT50YWcsZGJfZGF0YS0+bnVtYmVyLGRiX2RhdGEtPmNvbmNhdF9zbXMsCi1kYl9kYXRhLT5jb25jYXRfaW5mb1soMHhmNCs4NjQtMHg0NTQpXSxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHhhYTUrNjI1My0weDIzMTEpXQotLHBhYy0+Rm9ybWF0U2VxLGNvbmNhdF9udW0sZm9ybWF0X2NvbmNhdCxkYl9kYXRhLT50cF9kY3MsZGJfZGF0YS0+bXNnX3JlZiwKLWNvbnRlbnQsIlx4MzAiLGRiX2RhdGEtPmRyYWZ0X2dyb3VwX2lkLGRiX2RhdGEtPmp1bGlhbl9kYXRlLnllYXIsZGJfZGF0YS0+Ci1qdWxpYW5fZGF0ZS5tb250aCxkYl9kYXRhLT5qdWxpYW5fZGF0ZS5kYXksZGJfZGF0YS0+anVsaWFuX2RhdGUuaG91cixkYl9kYXRhLT4KLWp1bGlhbl9kYXRlLm1pbixkYl9kYXRhLT5qdWxpYW5fZGF0ZS5zZWMsZGJfZGF0YS0+anVsaWFuX2RhdGUudGltZXpvbmUsKHVuc2lnbmVkCi0gaW50KXp0ZV9nZXRzZWNvbmQoZGJfZGF0YS0+anVsaWFuX2RhdGUpLGRiX2RhdGEtPm1zZ19kaXNwbGF5bW9kZSk7cHJpbnRmKAorZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4MWMzNCsyNTAzLTB4MjVmYildLGRiX2RhdGEtPmNvbmNhdF9pbmZvWworKDB4MTM0NyszODIyLTB4MjIzNCldLHBhYy0+Rm9ybWF0U2VxLGNvbmNhdF9udW0sZm9ybWF0X2NvbmNhdCxkYl9kYXRhLT50cF9kY3MsCitkYl9kYXRhLT5tc2dfcmVmLGNvbnRlbnQsIlx4MzAiLGRiX2RhdGEtPmRyYWZ0X2dyb3VwX2lkLGRiX2RhdGEtPmp1bGlhbl9kYXRlLgoreWVhcixkYl9kYXRhLT5qdWxpYW5fZGF0ZS5tb250aCxkYl9kYXRhLT5qdWxpYW5fZGF0ZS5kYXksZGJfZGF0YS0+anVsaWFuX2RhdGUuCitob3VyLGRiX2RhdGEtPmp1bGlhbl9kYXRlLm1pbixkYl9kYXRhLT5qdWxpYW5fZGF0ZS5zZWMsZGJfZGF0YS0+anVsaWFuX2RhdGUuCit0aW1lem9uZSwodW5zaWduZWQgaW50KXp0ZV9nZXRzZWNvbmQoZGJfZGF0YS0+anVsaWFuX2RhdGUpLGRiX2RhdGEtPgorbXNnX2Rpc3BsYXltb2RlKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ5XHg2ZVx4NzNceDY1XHg3Mlx4NzRceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NzNceDcxXHg2Y1x4M2RceDI1XHg3M1x4MmUiICJcbiIKICxzcWwpO3Jlc3VsdD16VWZpU21zX0V4ZWNTcWwoc3FsLE5VTEwsTlVMTCk7c3FsaXRlM19mcmVlKHNxbCk7cmV0dXJuIGlzU3VjZXNzKAogcmVzdWx0KTt9aW50IHpVZmlTbXNfR2V0Q29uY2F0TWF4UmVmZXJJbkRiKHZvaWQpe2ludCBDb25jYXRNYXhSZWZlcj0KLSgweDRlNys2ODQ4LTB4MWZhNyk7aW50IHJlc3VsdD0oMHgyMWYxKzU4Ny0weDI0M2MpO3Jlc3VsdD16VWZpU21zX0V4ZWNTcWwoCisoMHg2NjkrNjM3Ny0weDFmNTIpO2ludCByZXN1bHQ9KDB4MTBkZisxMzIzLTB4MTYwYSk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbCgKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg0ZFx4NjFceDc4XHg1Zlx4NDNceDYzXHg1Zlx4NTJceDY1XHg2Nlx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMCIKICBaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRQogIlx4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4MjBceDNkXHgyMFx4MzFceDNiIiwKIHpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5JbnQsJkNvbmNhdE1heFJlZmVyKTtpZihaVEVfV01TX0RCX09LIT1yZXN1bHQpe3JldHVybi0KLSgweDExOTYrMTYxMC0weDE3ZGYpO31yZXR1cm4gQ29uY2F0TWF4UmVmZXI7fWludCB6VWZpU21zX0NyZWF0ZVRhYmxlcygpe2ludCBpTWFwCi09KDB4YWQxKzQ4MjgtMHgxZGFkKTtjb25zdCBUX3pVZmlTbXNfU1FMTWFwIFNRTF9NQVBbXT17eygweDEwZGQrNDIzOC0weDIxNmEpLAotWlRFX1dNU19DUkVBVEVfVEFCTEVfU01TX1NRTH0seygweGRhMysxOTc4LTB4MTU1YyksWlRFX1dNU19ERUxfU0lNX1NRTH0sewotKDB4ZjYrNTYwMy0weDE2ZDgpLFpURV9XTVNfQ1JFQVRFX0NNRF9TVEFUVVNfU1FMfSx7KDB4MjJhKzE4NTMtMHg5NjYpLAotWlRFX1dNU19DUkVBVEVfU01TX1JFUF9TUUx9LHsoMHg2ZmErMTMwMy0weGMxMCksWlRFX1dNU19DUkVBVEVfUEFSX1NRTH0sewotKDB4OWM5KzQ4OTUtMHgxY2U3KSxaVEVfV01TX0NSRUFURV9JTkZPX1NRTH0seygweDZjYis4MTIyLTB4MjY4NCksCi1aVEVfV01TX0NSRUFURV9DRUxMX0JST19TUUx9LHsoMHgyMWYrMzM5Ni0weGY2MiksWlRFX1dNU19DUkVBVEVfU0VORF9DT05URU5UX1NRTAotfSx9O2ZvcihpTWFwPSgweDEwNDIrMjMzNC0weDE5NjApO2lNYXA8c2l6ZW9mKFNRTF9NQVApL3NpemVvZihUX3pVZmlTbXNfU1FMTWFwKTsKLWlNYXArKyl7aWYoU1FMX01BUFtpTWFwXS52YWxpZD09KDB4YmIzKzMwODAtMHgxN2JhKSl7aWYoelVmaVNtc19FeGVjU3FsKFNRTF9NQVBbCi1pTWFwXS5zdHJTUUwsTlVMTCxOVUxMKSE9WlRFX1dNU19EQl9PSyl7cmV0dXJuIFpVRklfRkFJTDt9fX1yZXR1cm4gWlVGSV9TVUNDO30KLWludCB6VWZpU21zX0NyZWF0ZUFsbFRhYmxlKHZvaWQpe2lmKFpURV9XTVNfREJfT0shPXpVZmlTbXNfT3BlbkRiKCkpe3ByaW50ZigKKygweDU2YisxMzE4LTB4YTkwKTt9cmV0dXJuIENvbmNhdE1heFJlZmVyO31pbnQgelVmaVNtc19DcmVhdGVUYWJsZXMoKXtpbnQgaU1hcD0KKygweDY4Nis3ODQ3LTB4MjUyZCk7Y29uc3QgVF96VWZpU21zX1NRTE1hcCBTUUxfTUFQW109e3soMHhlY2YrNTI2MS0weDIzNWIpLAorWlRFX1dNU19DUkVBVEVfVEFCTEVfU01TX1NRTH0seygweGVjZCsyOTg5LTB4MWE3OSksWlRFX1dNU19ERUxfU0lNX1NRTH0seworKDB4MTVjNSszODg0LTB4MjRmMCksWlRFX1dNU19DUkVBVEVfQ01EX1NUQVRVU19TUUx9LHsoMHgzODYrMjE5NC0weGMxNyksCitaVEVfV01TX0NSRUFURV9TTVNfUkVQX1NRTH0seygweGVkKzExMzktMHg1NWYpLFpURV9XTVNfQ1JFQVRFX1BBUl9TUUx9LHsKKygweDFiZmMrMTMzMC0weDIxMmQpLFpURV9XTVNfQ1JFQVRFX0lORk9fU1FMfSx7KDB4NGU2KzMyOTMtMHgxMWMyKSwKK1pURV9XTVNfQ1JFQVRFX0NFTExfQlJPX1NRTH0seygweGUwNSs0OTUzLTB4MjE1ZCksCitaVEVfV01TX0NSRUFURV9TRU5EX0NPTlRFTlRfU1FMfSx9O2ZvcihpTWFwPSgweGVkZCsxMjk3LTB4MTNlZSk7aU1hcDxzaXplb2YoCitTUUxfTUFQKS9zaXplb2YoVF96VWZpU21zX1NRTE1hcCk7aU1hcCsrKXtpZihTUUxfTUFQW2lNYXBdLnZhbGlkPT0KKygweDQyZCs0NzMxLTB4MTZhNykpe2lmKHpVZmlTbXNfRXhlY1NxbChTUUxfTUFQW2lNYXBdLnN0clNRTCxOVUxMLE5VTEwpIT0KK1pURV9XTVNfREJfT0spe3JldHVybiBaVUZJX0ZBSUw7fX19cmV0dXJuIFpVRklfU1VDQzt9aW50IHpVZmlTbXNfQ3JlYXRlQWxsVGFibGUoCit2b2lkKXtpZihaVEVfV01TX0RCX09LIT16VWZpU21zX09wZW5EYigpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDZmXHg3MFx4NjVceDZlXHgyMFx4NjRceDYxXHg3NFx4NjFceDYyXHg2MVx4NzNceDY1XHgyZVx4NzJceDY1XHg3NFx4NzVceDcyXHg2ZVx4MmUiICJcbiIKICk7cmV0dXJuIFpURV9TTVNfREJfRVJST1JfTk9UX09QRU5fREI7fXJldHVybiB6VWZpU21zX0NyZWF0ZVRhYmxlcygpO31pbnQgCiB6VWZpU21zX0Ryb3BBbGxUYWJsZSh2b2lkKXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7aWYoCkBAIC0zMjMsOSArMzI0LDkgQEAKICJceDI3XHgyNVx4NjRceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjAiCiAiXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg3NVx4MjdceDJjXHgyMFx4MjdceDI1XHg2NFx4MjdceDI5XHgzYiIKICxwdERiU2F2ZURhdGEtPmluZGV4LHBTdG9yZVBvcyxwdERiU2F2ZURhdGEtPnRhZyxwdERiU2F2ZURhdGEtPm51bWJlciwKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X3NtcyxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDE1NGMrMzM1MC0weDIyNjIpXSwKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTZlNys4NC0weDE3M2EpXSxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4YmRiKzY4NTItMHgyNjlkKV0scHREYlNhdmVEYXRhLT50cF9kY3MscHREYlNhdmVEYXRhLT5tc2dfcmVmLHBDb250ZW50LCJceDMwIiwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X3NtcyxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDg0Nis1MDIxLTB4MWJlMyldLAorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxNDJmKzctMHgxNDM1KV0scHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweGI5Mis2NzEzLTB4MjVjOSldLHB0RGJTYXZlRGF0YS0+dHBfZGNzLHB0RGJTYXZlRGF0YS0+bXNnX3JlZixwQ29udGVudCwiXHgzMCIsCiBwdERiU2F2ZURhdGEtPmRyYWZ0X2dyb3VwX2lkLHB0RGJTYXZlRGF0YS0+anVsaWFuX2RhdGUueWVhcixwdERiU2F2ZURhdGEtPgoganVsaWFuX2RhdGUubW9udGgscHREYlNhdmVEYXRhLT5qdWxpYW5fZGF0ZS5kYXkscHREYlNhdmVEYXRhLT5qdWxpYW5fZGF0ZS5ob3VyLAogcHREYlNhdmVEYXRhLT5qdWxpYW5fZGF0ZS5taW4scHREYlNhdmVEYXRhLT5qdWxpYW5fZGF0ZS5zZWMscHREYlNhdmVEYXRhLT4KQEAgLTM0NywyNSArMzQ4LDI1IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU1XHg3MFx4NjRceDYxXHg3NFx4NjVceDRlXHg2Zlx4NzJceDZkXHg2MVx4NmNceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NzNceDcxXHg2Y1x4M2RceDI1XHg3MyIgIlxuIgogLHN0clNRTCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzdHJTUUwsTlVMTCxOVUxMKTtzcWxpdGUzX2ZyZWUoc3RyU1FMKTtyZXR1cm4gCiBpc1N1Y2VzcyhyZXN1bHQpO31pbnQgelVmaVNtc19HZXRGaXJzdENvbHVtblN0cih2b2lkKmZ2YXJnLGludCBjb2x1bW5zLGNoYXIqKgotenJlc3VsdCxjaGFyKipsbmFtZSl7aWYoY29sdW1ucz49KDB4Y2I3KzQ4MzAtMHgxZjk0KSYmZnZhcmchPU5VTEwpe2lmKHpyZXN1bHRbCi0oMHgxNDFiKzEwNzUtMHgxODRlKV0hPU5VTEwpe1RfelVmaVNtc19CdWZJbmZvKnBhcmE9KFRfelVmaVNtc19CdWZJbmZvKilmdmFyZzsKLXN0cm5jcHkocGFyYS0+YnVmX2FkZHIsenJlc3VsdFsoMHgxMzQzKzMxNjMtMHgxZjllKV0scGFyYS0+YnVmX2xlbi0KLSgweGYwKzkxNTUtMHgyNGIyKSk7cmV0dXJuIFNRTElURV9PSzt9fXJldHVybiBTUUxJVEVfRVJST1I7fWludCAKK3pyZXN1bHQsY2hhcioqbG5hbWUpe2lmKGNvbHVtbnM+PSgweDVkZCs2NTg5LTB4MWY5OSkmJmZ2YXJnIT1OVUxMKXtpZih6cmVzdWx0WworKDB4ZjU0KzQwNzAtMHgxZjNhKV0hPU5VTEwpe1RfelVmaVNtc19CdWZJbmZvKnBhcmE9KFRfelVmaVNtc19CdWZJbmZvKilmdmFyZzsKK3N0cm5jcHkocGFyYS0+YnVmX2FkZHIsenJlc3VsdFsoMHg4OTgrNDE3OS0weDE4ZWIpXSxwYXJhLT5idWZfbGVuLQorKDB4NjcxKzI0NzEtMHgxMDE3KSk7cmV0dXJuIFNRTElURV9PSzt9fXJldHVybiBTUUxJVEVfRVJST1I7fWludCAKIHpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKGNoYXIqaXRlbSxjaGFyKml0ZW1fZGF0YSxpbnQgaXRlbV9sZW4saW50IGlkKXsKIFRfelVmaVNtc19EYlJlc3VsdCByZXN1bHQ9WlRFX1dNU19EQl9PSztUX3pVZmlTbXNfQnVmSW5mbyBidWZfaW5mbz17Ci0oMHg4ZWYrNDUzNi0weDFhYTcpfTtjaGFyKnN0clNRTD1OVUxMO2lmKE5VTEw9PWl0ZW18fE5VTEw9PWl0ZW1fZGF0YSl7cmV0dXJuIAorKDB4MTk1OCsyMTk5LTB4MjFlZil9O2NoYXIqc3RyU1FMPU5VTEw7aWYoTlVMTD09aXRlbXx8TlVMTD09aXRlbV9kYXRhKXtyZXR1cm4gCiBaVUZJX0ZBSUw7fWJ1Zl9pbmZvLmJ1Zl9hZGRyPWl0ZW1fZGF0YTtidWZfaW5mby5idWZfbGVuPWl0ZW1fbGVuO3N0clNRTD0KIHNxbGl0ZTNfbXByaW50ZigKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHgyNVx4NzFceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsaXRlbSxpZCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzdHJTUUwselVmaVNtc19HZXRGaXJzdENvbHVtblN0ciwmYnVmX2luZm8pOwotc3FsaXRlM19mcmVlKHN0clNRTCk7aWYoKFpURV9XTVNfREJfT0shPXJlc3VsdCl8fCgoMHhiNWQrNjMxNC0weDI0MDcpPT1zdHJjbXAoCitzcWxpdGUzX2ZyZWUoc3RyU1FMKTtpZigoWlRFX1dNU19EQl9PSyE9cmVzdWx0KXx8KCgweDE2MCs0NzIwLTB4MTNkMCk9PXN0cmNtcCgKIGl0ZW1fZGF0YSwiIikpKXthdF9wcmludChMT0dfRVJSLAogIlx4NjdceDY1XHg3NFx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4NWZceDZkXHg2NVx4NmRceDYyXHg2NVx4NzJceDIwXHg2Mlx4NzlceDIwXHg2OVx4NjRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO31yZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19EZWxldGVTbXNJbkRiKHZvaWQpe2NoYXIgc3FsWwotKDB4MjBkKzYwNDYtMHgxOTJiKV09eygweDEyMTErMTE1Ni0weDE2OTUpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCisoMHgyOTQrMzQ0NC0weGY4OCldPXsoMHhiOWIrMjEyNC0weDEzZTcpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCiAiXHg0NFx4NDVceDRjXHg0NVx4NTRceDQ1XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NjFceDZlXHg2NFx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX1NJTV9UQUJMRSxnX3pVZmlTbXNfRGVsTXNnLnNpbV9pZFtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleC0KLSgweDE2MGIrNDc0LTB4MTdlNCldKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKTt9aW50IAorKDB4MjMxYSs2MTItMHgyNTdkKV0pO3JldHVybiBpc1N1Y2Vzcyh6VWZpU21zX0V4ZWNTcWwoc3FsLE5VTEwsTlVMTCkpO31pbnQgCiB6VWZpU21zX0RlbGV0ZUFsbFNpbVNtc0luRGIodm9pZCl7cmV0dXJuIGlzU3VjZXNzKHpVZmlTbXNfRXhlY1NxbCgKICJceDQ0XHg0NVx4NGNceDQ1XHg1NFx4NDVceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjciCiAgWlRFX1dNU19EQl9TSU1fVEFCTEUiXHgyN1x4M2IiLE5VTEwsTlVMTCkpO31pbnQgelVmaVNtc19EZWxldGVOdlNtcyh2b2lkKXtpZigKQEAgLTM3NCwxMSArMzc1LDExIEBACiAiXHg0NFx4NDVceDRjXHg0NVx4NTRceDQ1XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3IgogIFpURV9XTVNfREJfTlZfVEFCTEUiXHgyN1x4M2IiLE5VTEwsTlVMTCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4NGVceDc2XHg1M1x4NmRceDczXHgzYVx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg2MVx4NjlceDZjIiAiXG4iCi0pO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWVsc2V7aW50IGk9KDB4MjVmKzk5NC0weDY0MSk7cHJpbnRmKAorKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX1lbHNle2ludCBpPSgweDIwNCs2ODk4LTB4MWNmNik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0ZVx4NzZceDUzXHg2ZFx4NzNceDNhXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NmVceDc2XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0XHgzZFx4MjVceDY0IiAiXG4iCi0sZ196VWZpU21zX0RlbE1zZy5udl9jb3VudCk7Zm9yKGk9KDB4N2MrNzMxNy0weDFkMTEpO2k8Z196VWZpU21zX0RlbE1zZy5udl9jb3VudAotO2krKyl7Y2hhciBzcWxbKDB4MjM5YisxMTgtMHgyMzkxKV09eygweGJkMSsxNjAxLTB4MTIxMil9O3NucHJpbnRmKHNxbCxzaXplb2YoCi1zcWwpLAorLGdfelVmaVNtc19EZWxNc2cubnZfY291bnQpO2ZvcihpPSgweGE5NSs1Njg3LTB4MjBjYyk7aTxnX3pVZmlTbXNfRGVsTXNnLgorbnZfY291bnQ7aSsrKXtjaGFyIHNxbFsoMHg0MTIrODEwLTB4NmJjKV09eygweDEwMjkrNjc5LTB4MTJkMCl9O3NucHJpbnRmKHNxbCwKK3NpemVvZihzcWwpLAogIlx4NDRceDQ1XHg0Y1x4NDVceDU0XHg0NVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4MjBceDYxXHg2ZVx4NjRceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9OVl9UQUJMRSxnX3pVZmlTbXNfRGVsTXNnLm52X2lkW2ldKTtpZihaVEVfV01TX0RCX09LIT0KIHpVZmlTbXNfRXhlY1NxbChzcWwsTlVMTCxOVUxMKSl7cHJpbnRmKApAQCAtMzg2LDM4ICszODcsMzkgQEAKICxpKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX19cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0ZVx4NzZceDUzXHg2ZFx4NzNceDNhXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NzNceDc1XHg2M1x4NjNceDY1XHg3M1x4NzMiICJcbiIKICk7cmV0dXJuIFdNU19DTURfU1VDQ0VTUzt9aW50IHpVZmlTbXNfR2V0U21zSW5kZXgoaW50IGlkLFRfelVmaVNtc19Nb2RpZnlUYWcqCi1wdE1vZGlmeVRhZyxpbnQgaXNfY2Mpe2NoYXIgc3FsWygweDFlMTUrMzgtMHgxZGJiKV09eygweDkyNSs1NjI1LTB4MWYxZSl9OwotVF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89eygweDRhZisyNDIzLTB4ZTI2KX07Y2hhciBzdHJfaW5kZXhbCi0oMHgzZDYrNTk4OC0weDFiMzgpKldNU19NRVNTQUdFX0xJU1RfTUFYXT17KDB4ZGIwKzYwMzEtMHgyNTNmKX07YnVmX2luZm8uCi1idWZfYWRkcj1zdHJfaW5kZXg7YnVmX2luZm8uYnVmX2xlbj1zaXplb2Yoc3RyX2luZGV4KTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCitwdE1vZGlmeVRhZyxpbnQgaXNfY2Mpe2NoYXIgc3FsWygweGQwNiszMzczLTB4MTliMyldPXsoMHgxMThiKzMwNTEtMHgxZDc2KX07CitUX3pVZmlTbXNfQnVmSW5mbyBidWZfaW5mbz17KDB4ZWE2KzE5NjMtMHgxNjUxKX07Y2hhciBzdHJfaW5kZXhbCisoMHgzMWIrMjM2NC0weGM1NSkqV01TX01FU1NBR0VfTElTVF9NQVhdPXsoMHhiNis4NjYxLTB4MjI4Yil9O2J1Zl9pbmZvLmJ1Zl9hZGRyPQorc3RyX2luZGV4O2J1Zl9pbmZvLmJ1Zl9sZW49c2l6ZW9mKHN0cl9pbmRleCk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDY5XHg2ZVx4NjRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsaWQpO2lmKHpVZmlTbXNfRXhlY1NxbChzcWwselVmaVNtc19HZXRGaXJzdENvbHVtblN0ciwmYnVmX2luZm8pIT1aVEVfV01TX0RCX09LKQoge2F0X3ByaW50KExPR19FUlIsCiAiXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IgotKTtyZXR1cm4gWlVGSV9GQUlMO31pZigoMHgyNTQrNjY3Ny0weDFjNjgpPT1pc19jYyl7aW50IGk9KDB4N2ViKzg1Mi0weGIzZik7aW50IGoKLT0oMHhmNTMrODAyLTB4MTI3NSk7aW50IGNvdW50PSgweGQ1MSs0NDgwLTB4MWVkMSk7Y2hhcioqb3V0X3Jlc3VsdD1OVUxMO2NvdW50PQotelVmaVNtc19TcGxpdFN0cmluZyhzdHJfaW5kZXgsJm91dF9yZXN1bHQsKChjaGFyKSgweGRhYiszNzM1LTB4MWMwNykpKTtmb3IoaT0KLSgweDFmMys4NjU1LTB4MjNjMik7aTxjb3VudDtpKyspe2lmKCgweDE1YTErMTIyMC0weDFhNjUpIT1zdHJjbXAob3V0X3Jlc3VsdFtpXSwKLSIiKSl7cHRNb2RpZnlUYWctPmluZGljZXNbaisrXT1hdG9pKG91dF9yZXN1bHRbaV0pO319cHRNb2RpZnlUYWctPm51bV9vZl9pbmRpY2VzCi09ajtmcmVlKG91dF9yZXN1bHQpO31lbHNle3B0TW9kaWZ5VGFnLT5pbmRpY2VzWygweDEzZTgrMzExOC0weDIwMTYpXT1hdG9pKAotc3RyX2luZGV4KTtwdE1vZGlmeVRhZy0+bnVtX29mX2luZGljZXM9KDB4MWIwYysxNjYyLTB4MjE4OSk7fXB0TW9kaWZ5VGFnLT4KLXRvdGFsX2luZGljZXM9cHRNb2RpZnlUYWctPm51bV9vZl9pbmRpY2VzO3ByaW50ZigKKyk7cmV0dXJuIFpVRklfRkFJTDt9aWYoKDB4MTlmNys5NzAtMHgxZGMwKT09aXNfY2Mpe2ludCBpPSgweDExNis5NTU4LTB4MjY2Yyk7aW50Cisgaj0oMHhkYWQrNDA1Ny0weDFkODYpO2ludCBjb3VudD0oMHgxODkrMTE4Ni0weDYyYik7Y2hhcioqb3V0X3Jlc3VsdD1OVUxMO2NvdW50PQorelVmaVNtc19TcGxpdFN0cmluZyhzdHJfaW5kZXgsJm91dF9yZXN1bHQsKChjaGFyKSgweGZkYyszMjAtMHgxMGUxKSkpO2ZvcihpPQorKDB4MmJkKzU1OTktMHgxODljKTtpPGNvdW50O2krKyl7aWYoKDB4NzUxKzY3ODQtMHgyMWQxKSE9c3RyY21wKG91dF9yZXN1bHRbaV0sIiIKKykpe3B0TW9kaWZ5VGFnLT5pbmRpY2VzW2orK109YXRvaShvdXRfcmVzdWx0W2ldKTt9fXB0TW9kaWZ5VGFnLT5udW1fb2ZfaW5kaWNlcz1qCis7ZnJlZShvdXRfcmVzdWx0KTt9ZWxzZXtwdE1vZGlmeVRhZy0+aW5kaWNlc1soMHhiODQrNjUzNy0weDI1MGQpXT1hdG9pKHN0cl9pbmRleAorKTtwdE1vZGlmeVRhZy0+bnVtX29mX2luZGljZXM9KDB4NzRmKzcxMzAtMHgyMzI4KTt9cHRNb2RpZnlUYWctPnRvdGFsX2luZGljZXM9CitwdE1vZGlmeVRhZy0+bnVtX29mX2luZGljZXM7cHJpbnRmKAogIlx4NmRceDZmXHg2NFx4NjlceDY2XHg3OVx4NWZceDc0XHg2MVx4NjdceDVmXHg3MFx4NzRceDcyXHgyZFx4M2VceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NWZceDY5XHg2ZVx4NjRceDY5XHg2M1x4NjVceDczXHgzZFx4MjVceDY0IiAiXG4iCiAscHRNb2RpZnlUYWctPnRvdGFsX2luZGljZXMpO3JldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX0lzQ29uY2F0U21zKGludCBpZCl7Ci1jaGFyIHNxbFsoMHhmMisxOTgzLTB4ODMxKV09eygweGU5MisyOTU1LTB4MWExZCl9O2ludCBpc19jYz0oMHgxMzc5KzQ1MTUtMHgyNTFjKQotO1RfelVmaVNtc19EYlJlc3VsdCByZXN1bHQ9WlRFX1dNU19EQl9PSztzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCitjaGFyIHNxbFsoMHg2YmErMzI5Ni0weDEzMWEpXT17KDB4MmQxKzUyOTktMHgxNzg0KX07aW50IGlzX2NjPQorKDB4MTg1NyszNjgzLTB4MjZiYSk7VF96VWZpU21zX0RiUmVzdWx0IHJlc3VsdD1aVEVfV01TX0RCX09LO3NucHJpbnRmKHNxbCxzaXplb2YKKyhzcWwpLAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDQzXHg2M1x4NWZceDUzXHg2ZFx4NzNceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX1NNU19UQUJMRSxpZCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzcWwselVmaVNtc19HZXRGaXJzdENvbHVtbkludCwmCiBpc19jYyk7aWYoWlRFX1dNU19EQl9PSyE9cmVzdWx0KXthdF9wcmludChMT0dfRVJSLAogIlx4NmZceDcwXHg2NVx4NmVceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IgotLFpURV9XTVNfREJfU01TX1RBQkxFKTtyZXR1cm4tKDB4MmZiKzY5ODktMHgxZTQ3KTt9cmV0dXJuIGlzX2NjO31pbnQgCissWlRFX1dNU19EQl9TTVNfVEFCTEUpO3JldHVybi0oMHgxMmZkKzM2NzQtMHgyMTU2KTt9cmV0dXJuIGlzX2NjO31pbnQgCiB6VWZpU21zX1VwZGF0ZVNtc1RhZ0luRGIodW5zaWduZWQgbG9uZyBpZCx1bnNpZ25lZCBpbnQgdGFncyl7Y2hhciBzcWxbCi0oMHgxMDI0KzIwNjUtMHgxN2I1KV09eygweDJkMCs3OTMwLTB4MjFjYSl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKKygweDhmOCszMTAxLTB4MTQ5NSldPXsoMHg3MTIrNzczMS0weDI1NDUpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCiAiXHg1NVx4NTBceDQ0XHg0MVx4NTRceDQ1XHgyMFx4MjVceDczXHgyMFx4NTNceDQ1XHg1NFx4MjBceDU0XHg2MVx4NjdceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX1NNU19UQUJMRSx0YWdzLGlkKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKTt9CiBpbnQgelVmaVNtc19HZXRUYWdDb3VudEluRGIoVF96VWZpU21zX01lbW9yeVR5cGUgbWVtX3N0b3JlLHVuc2lnbmVkIGludCB0YWdzLGludAogKnBUb3RhbENvdW50KXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhciBzcWxbCi0oMHgxMDcxKzQ2OTgtMHgyMjRiKV09eygweDQ1NCsxMzg4LTB4OWMwKX07aWYocFRvdGFsQ291bnQ9PU5VTEwpe3JldHVybiAKKygweDE4NDErMzgyLTB4MTkzZildPXsoMHgxMGIzKzQ2MDEtMHgyMmFjKX07aWYocFRvdGFsQ291bnQ9PU5VTEwpe3JldHVybiAKIFpVRklfRkFJTDt9aWYobWVtX3N0b3JlPT1aVEVfV01TX01FTU9SWV9NQVgpe3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDU0XHg2MVx4NjdceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9TTVNfVEFCTEUsdGFncyk7fWVsc2UgaWYobWVtX3N0b3JlPT1aVEVfV01TX01FTU9SWV9OVil7c25wcmludGYoc3FsLApAQCAtNDI3LDE3ICs0MjksMTcgQEAKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg1NFx4NjFceDY3XHgzZFx4MjdceDI1XHg2NFx4MjdceDNiIgogLFpURV9XTVNfREJfU01TX1RBQkxFLFpURV9XTVNfREJfU0lNX1RBQkxFLHRhZ3MpO31yZXN1bHQ9elVmaVNtc19FeGVjU3FsKHNxbCwoCiB6dGVfd21zX2RiX2NhbGxiYWNrKXpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5JbnQscFRvdGFsQ291bnQpO3JldHVybiBpc1N1Y2VzcygKLXJlc3VsdCk7fWludCB6VWZpU21zX0RlbGV0ZURyYWZ0U21zKGxvbmcgaVNtc0lkKXtjaGFyIHNxbFsoMHgyMzA1KzI1MC0weDIzN2YpXT17Ci0oMHgxNmM4KzIxMC0weDE3OWEpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCityZXN1bHQpO31pbnQgelVmaVNtc19EZWxldGVEcmFmdFNtcyhsb25nIGlTbXNJZCl7Y2hhciBzcWxbKDB4YTdjKzU3OTctMHgyMGExKV09eworKDB4OTI4KzY2MzMtMHgyMzExKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NDRceDQ1XHg0Y1x4NDVceDU0XHg0NVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4MjVceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgzZFx4MjdceDI1XHg2Y1x4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX1NNU19UQUJMRSxpU21zSWQpO3JldHVybiBpc1N1Y2Vzcyh6VWZpU21zX0V4ZWNTcWwoc3FsLE5VTEwsTlVMTCkpO30KLWludCB6VWZpU21zX1NldENvbmNhdE1heFJlZmVyKGludCByZWYpe2NoYXIgc3FsWygweDIwZjArMTMxOS0weDI1OTcpXT17Ci0oMHhiYzIrMjA3LTB4YzkxKX07aWYoWlRFX1dNU19NQVhfQ09OQ0FUX1JFRjxyZWYpe3JlZj0oMHhmZTArNTE2NC0weDI0MGMpO30KK2ludCB6VWZpU21zX1NldENvbmNhdE1heFJlZmVyKGludCByZWYpe2NoYXIgc3FsWygweDk2Yis1MjAzLTB4MWQzZSldPXsKKygweDIwYis4MDIxLTB4MjE2MCl9O2lmKFpURV9XTVNfTUFYX0NPTkNBVF9SRUY8cmVmKXtyZWY9KDB4ZGQ0KzYxMDAtMHgyNWE4KTt9CiBzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCiAiXHg1NVx4NTBceDQ0XHg0MVx4NTRceDQ1XHgyMFx4MjVceDczXHgyMFx4NTNceDQ1XHg1NFx4MjBceDRkXHg2MVx4NzhceDVmXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgzMVx4M2IiCiAsWlRFX1dNU19EQl9QQVJBTUVURVJfVEFCTEUscmVmKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKQotO31pbnQgelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoaW50IHJlZil7Y2hhciBzcWxbKDB4YWRmKzM4OTItMHgxOTkzKV09ewotKDB4MWUwNCsxMDAtMHgxZTY4KX07aWYoWlRFX1dNU19NQVhfU01TX1JFRjxyZWYpe3JlZj0oMHg1OTcrMjkwNy0weDEwZjIpO30KKzt9aW50IHpVZmlTbXNfU2V0TWF4UmVmZXJlbmNlKGludCByZWYpe2NoYXIgc3FsWygweDEyMmQrMjMzOS0weDFhZDApXT17CisoMHgyMTg5KzE4OS0weDIyNDYpfTtpZihaVEVfV01TX01BWF9TTVNfUkVGPHJlZil7cmVmPSgweDFkYWMrMTMyMy0weDIyZDcpO30KIHNucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDU1XHg1MFx4NDRceDQxXHg1NFx4NDVceDIwXHgyNVx4NzNceDIwXHg1M1x4NDVceDU0XHgyMFx4NGRceDYxXHg3OFx4NWZceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgzMVx4M2IiCiAsWlRFX1dNU19EQl9QQVJBTUVURVJfVEFCTEUscmVmKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKQpAQCAtNDUwLDc2ICs0NTIsNzYgQEAKIC0+aG91cixwdFNtc0RhdGUtPm1pbixwdFNtc0RhdGUtPnNlYyxwdFNtc0RhdGUtPnRpbWV6b25lKTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsCiAoc3RyU1FMLE5VTEwsTlVMTCk7c3FsaXRlM19mcmVlKHN0clNRTCk7cmV0dXJuIGlzU3VjZXNzKHJlc3VsdCk7fWludCAKIHpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5QYXJhSW5mbyh2b2lkKmZ2YXJnLGludCBjb2x1bW5zLGNoYXIqKnpyZXN1bHQsY2hhcioqbG5hbWUpCi17aWYoY29sdW1ucz49KDB4ZTM5KzU4MDUtMHgyNGU1KSYmZnZhcmchPU5VTEwpe2lmKHpyZXN1bHRbKDB4MTM3NSszMTc0LTB4MWZkYildCit7aWYoY29sdW1ucz49KDB4NjM1Kzc2MDUtMHgyM2U5KSYmZnZhcmchPU5VTEwpe2lmKHpyZXN1bHRbKDB4MjA4MisxNjUyLTB4MjZmNildCiAhPU5VTEwpe1RfelVmaVNtc19QYXJhSW5mbypwYXJhPShUX3pVZmlTbXNfUGFyYUluZm8qKWZ2YXJnO3N0cm5jcHkocGFyYS0+c2NhLAotenJlc3VsdFsoMHhiYjcrNzYyLTB4ZWIxKV0sc2l6ZW9mKHBhcmEtPnNjYSktKDB4MTg2MisxNy0weDE4NzIpKTtwYXJhLT5tZW1fc3RvcmUKLT1hdG9pKHpyZXN1bHRbKDB4NDFmKzMxNzEtMHgxMDgxKV0pO3BhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZD1hdG9pKHpyZXN1bHRbCi0oMHgxODBkKzMyMDctMHgyNDkyKV0pO3BhcmEtPnN0YXR1c19yZXBvcnRfb249YXRvaSh6cmVzdWx0WygweDQ0MCs1ODUxLTB4MWIxOCldKQotO3BhcmEtPnNlbmRmYWlsX3JldHJ5X29uPWF0b2koenJlc3VsdFsoMHg1NWErNjI4OS0weDFkZTcpXSk7cGFyYS0+Ci1vdXRkYXRlX2RlbGV0ZV9vbj1hdG9pKHpyZXN1bHRbKDB4NjI2KzYxNDktMHgxZTI2KV0pOyh2b2lkKXN0cm5jcHkocGFyYS0+Ci1kZWZhdWx0X3N0b3JlLHpyZXN1bHRbKDB4ZDQxKzQ4MzQtMHgyMDFkKV0sc2l6ZW9mKHBhcmEtPmRlZmF1bHRfc3RvcmUpLQotKDB4NjFmKzI1NzAtMHgxMDI4KSk7cmV0dXJuIFNRTElURV9PSzt9fXJldHVybiBTUUxJVEVfRVJST1I7fWludCAKK3pyZXN1bHRbKDB4NSs3NzUwLTB4MWU0YildLHNpemVvZihwYXJhLT5zY2EpLSgweDM5OSszODkyLTB4MTJjYykpO3BhcmEtPgorbWVtX3N0b3JlPWF0b2koenJlc3VsdFsoMHg4MysyNzM5LTB4YjM1KV0pO3BhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZD1hdG9pKHpyZXN1bHQKK1soMHg5ODMrNjM3OS0weDIyNmMpXSk7cGFyYS0+c3RhdHVzX3JlcG9ydF9vbj1hdG9pKHpyZXN1bHRbKDB4NmI3KzMxNDItMHgxMmZhKV0pCis7cGFyYS0+c2VuZGZhaWxfcmV0cnlfb249YXRvaSh6cmVzdWx0WygweDFmMCsxODE4LTB4OTA2KV0pO3BhcmEtPgorb3V0ZGF0ZV9kZWxldGVfb249YXRvaSh6cmVzdWx0WygweDI2MTArMjM4LTB4MjZmOSldKTsodm9pZClzdHJuY3B5KHBhcmEtPgorZGVmYXVsdF9zdG9yZSx6cmVzdWx0WygweDE0ZjUrMjY5OS0weDFmN2EpXSxzaXplb2YocGFyYS0+ZGVmYXVsdF9zdG9yZSktCisoMHgxOTZjKzE3MC0weDFhMTUpKTtyZXR1cm4gU1FMSVRFX09LO319cmV0dXJuIFNRTElURV9FUlJPUjt9aW50IAogelVmaVNtc19HZXREYlBhcmFtZXRlcnModm9pZCl7Y2hhcipzdHJTUUw9CiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NTNceDZkXHg3M1x4NWZceDUzXHg2M1x4NjFceDJjXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgyY1x4NTRceDcwXHg1Zlx4NTZceDYxXHg2Y1x4NjlceDY0XHg2OVx4NzRceDc5XHgyY1x4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDJjXHg1M1x4NjVceDZlXHg2NFx4NWZceDUyXHg2NVx4NzRceDcyXHg3OVx4MmNceDRmXHg3NVx4NzRceDY0XHg2MVx4NzRceDY1XHg1Zlx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MmNceDQ0XHg2NVx4NjZceDYxXHg3NVx4NmNceDc0XHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwIgotIFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFIlx4M2IiO21lbXNldCgmZ196VWZpU21zX0N1clNtc1BhcmEsKDB4N2EyKzc1Ni0weGE5NikKLSxzaXplb2YoVF96VWZpU21zX1BhcmFJbmZvKSk7cmV0dXJuIGlzU3VjZXNzKHpVZmlTbXNfRXhlY1NxbChzdHJTUUwsCi16VWZpU21zX0dldEZpcnN0Q29sdW1uUGFyYUluZm8sJmdfelVmaVNtc19DdXJTbXNQYXJhKSk7fWludCAKKyBaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRSJceDNiIjttZW1zZXQoJmdfelVmaVNtc19DdXJTbXNQYXJhLAorKDB4NDUwKzI5ODgtMHhmZmMpLHNpemVvZihUX3pVZmlTbXNfUGFyYUluZm8pKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKAorc3RyU1FMLHpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5QYXJhSW5mbywmZ196VWZpU21zX0N1clNtc1BhcmEpKTt9aW50IAogelVmaVNtc19HZXRTZW5kQ29udGVudCh2b2lkKmZ2YXJnLGludCBjb2x1bW4sY2hhcioqenJlc3VsdCxjaGFyKipsbmFtZSl7Ci1UX3pVZmlTbXNfQnVmSW5mbypwYXJhPShUX3pVZmlTbXNfQnVmSW5mbyopZnZhcmc7aWYoY29sdW1uPj0oMHhjZDkrNTY2Ny0weDIyZmIpCi0mJnBhcmEhPU5VTEwpKHZvaWQpc3RybmNweShwYXJhLT5idWZfYWRkcix6cmVzdWx0WygweDFiMSszNDkxLTB4ZjU0KV0scGFyYS0+Ci1idWZfbGVuLSgweDE1NmMrNDIyNi0weDI1ZWQpKTtyZXR1cm4oMHgxMjViKzMyNDgtMHgxZjBiKTt9aW50IAorVF96VWZpU21zX0J1ZkluZm8qcGFyYT0oVF96VWZpU21zX0J1ZkluZm8qKWZ2YXJnO2lmKGNvbHVtbj49KDB4Y2IrNDEzOC0weDEwZjQpJiYKK3BhcmEhPU5VTEwpKHZvaWQpc3RybmNweShwYXJhLT5idWZfYWRkcix6cmVzdWx0WygweDE1MCsxNjY3LTB4N2QzKV0scGFyYS0+CitidWZfbGVuLSgweDJhYys1Mzg1LTB4MTdiNCkpO3JldHVybigweGY0NyszMDQ5LTB4MWIzMCk7fWludCAKIHpVZmlTbXNfR2V0U21zQ29udGVudChjaGFyKnBTbXNCdWYsaW50IGxlbil7VF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89ewotKDB4MWY0MCszMDUtMHgyMDcxKX07Y2hhcipzdHJTUUw9CisoMHgyMTc5KzQ2Ny0weDIzNGMpfTtjaGFyKnN0clNRTD0KICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg2ZFx4NzNceDY3XHg1Zlx4NjNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjAiCiAgWlRFX1dNU19EQl9TRU5EX0NPTlRFTlRfVEFCTEUiXHgzYiI7YnVmX2luZm8uYnVmX2FkZHI9cFNtc0J1ZjtidWZfaW5mby5idWZfbGVuPQotbGVuO21lbXNldChidWZfaW5mby5idWZfYWRkciwoMHhlMjgrMTc4OS0weDE1MjUpLGxlbik7cmV0dXJuIGlzU3VjZXNzKAorbGVuO21lbXNldChidWZfaW5mby5idWZfYWRkciwoMHg5OGIrNzQ3NC0weDI2YmQpLGxlbik7cmV0dXJuIGlzU3VjZXNzKAogelVmaVNtc19FeGVjU3FsKHN0clNRTCx6VWZpU21zX0dldFNlbmRDb250ZW50LCZidWZfaW5mbykpO31pbnQgCiB6VWZpU21zX1NlYXJjaENvbmNhdFNtc0luRGIoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxjaGFyKnBNZW1TdG9yZSl7Ci1jaGFyKnNxbD1OVUxMO3NxbGl0ZTNfc3RtdCpzdG10PU5VTEw7aW50IGlkPS0oMHhhYWQrMjM0Ni0weDEzZDYpO3N3aXRjaCgKK2NoYXIqc3FsPU5VTEw7c3FsaXRlM19zdG10KnN0bXQ9TlVMTDtpbnQgaWQ9LSgweDEyYjMrMzQ5NS0weDIwNTkpO3N3aXRjaCgKIHB0RGJTYXZlRGF0YS0+dGFnKXtjYXNlIFdNU19UQUdfVFlQRV9NT19TRU5UX1YwMTpjYXNlIAogV01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTp7c3FsPXNxbGl0ZTNfbXByaW50ZigKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg0M1x4NjNceDVmXHg1M1x4NjVceDcxXHgyY1x4NjlceDY0XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3M1x4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4MjhceDU0XHg2MVx4NjdceDIwXHgzZFx4MjBceDI3XHgyNVx4NjRceDI3XHgyMFx4NGZceDUyXHgyMFx4NTRceDYxXHg2N1x4M2RceDIwXHgyN1x4MjVceDY0XHgyN1x4MjlceDNiIgotLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4NGMyKzQ2NTgtMHgxNmY0KV0sCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDIxZDArMTMwMy0weDI2ZTYpXSxwTWVtU3RvcmUsCisscHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg3MjYrNTMxNi0weDFiZWEpXSwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTkwNSs5MzctMHgxY2FkKV0scE1lbVN0b3JlLAogV01TX1RBR19UWVBFX01PX1NFTlRfVjAxLFdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDEpO2JyZWFrO31jYXNlCi0oMHhjODMrNDg4Ny0weDFmOTYpOntzcWw9c3FsaXRlM19tcHJpbnRmKAorKDB4OTViKzUxODYtMHgxZDk5KTp7c3FsPXNxbGl0ZTNfbXByaW50ZigKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg0M1x4NjNceDVmXHg1M1x4NjVceDcxXHgyY1x4NjlceDY0XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3M1x4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NTRceDYxXHg2N1x4MjBceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDNiIgotLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MWQ5NCs2ODYtMHgyMDQyKV0sCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDc1Yis2MzgwLTB4MjA0NildLHBNZW1TdG9yZSwoMHhhMTkrMzQ4Mi0weDE3YWYpKTsKLWJyZWFrO31jYXNlIFdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTpjYXNlIFdNU19UQUdfVFlQRV9NVF9OT1RfUkVBRF9WMDE6e3NxbD0KKyxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDE3MzErMzA2NS0weDIzMmEpXSwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MWM5KzY0LTB4MjA4KV0scE1lbVN0b3JlLCgweGJjKzk1ODMtMHgyNjI3KSk7YnJlYWs7Cit9Y2FzZSBXTVNfVEFHX1RZUEVfTVRfUkVBRF9WMDE6Y2FzZSBXTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxOntzcWw9CiBzcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4MmNceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRlXHg3NVx4NmRceDYyXHg2NVx4NzJceDNkXHgyN1x4MjVceDcxXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDI4XHg1NFx4NjFceDY3XHgyMFx4M2RceDIwXHgyN1x4MjVceDY0XHgyN1x4MjBceDRmXHg1Mlx4MjBceDU0XHg2MVx4NjdceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDI5XHgzYiIKLSxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDdhNis0ODI4LTB4MWE4MildLAotcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg5MTkrNjU5NC0weDIyZGEpXSxwTWVtU3RvcmUsCisscHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhkZjQrNDc0Ny0weDIwN2YpXSwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTAzYSs0NTc2LTB4MjIxOSldLHBNZW1TdG9yZSwKIFdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMSxXTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxKTticmVhazt9ZGVmYXVsdDp7c3FsPQogc3FsaXRlM19tcHJpbnRmKAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDQzXHg2M1x4NWZceDUzXHg2NVx4NzFceDJjXHg2OVx4NjRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg0ZVx4NzVceDZkXHg2Mlx4NjVceDcyXHgzZFx4MjdceDI1XHg3MVx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTJceDY1XHg2Nlx4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4M2IiCi0scHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxMTg4KzM4MTEtMHgyMDZiKV0sCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDM5ZisxMDg4LTB4N2RlKV0scE1lbVN0b3JlKTthdF9wcmludChMT0dfRVJSLAorLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTI1Zis0MzkwLTB4MjM4NSldLAorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg2MDYrNzkyNy0weDI0ZmMpXSxwTWVtU3RvcmUpO2F0X3ByaW50KExPR19FUlIsCiAiXHg3NFx4NjFceDY3XHgyMFx4MjVceDY0XHgyMFx4NjlceDczXHgyMFx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmUiLAogcHREYlNhdmVEYXRhLT50YWcpO2JyZWFrO319cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzRceDY1XHg2NVx4NzRceDNhXHgyNVx4NzMiICJcbiIsc3FsKTtpZigKLXNxbGl0ZTNfcHJlcGFyZShnX3pVZmlTbXNfRGJQb2ludGVyLHNxbCwtKDB4Y2RkKzQ5NDctMHgyMDJmKSwmc3RtdCwKLSgweGUzNiszNTExLTB4MWJlZCkpIT1TUUxJVEVfT0spe2F0X3ByaW50KExPR19FUlIsCitzcWxpdGUzX3ByZXBhcmUoZ196VWZpU21zX0RiUG9pbnRlcixzcWwsLSgweDQ0Zis0OTE5LTB4MTc4NSksJnN0bXQsCisoMHgxOGNkKzEyNTMtMHgxZGIyKSkhPVNRTElURV9PSyl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDYzXHg2MVx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjVceDc4XHg2NVx4NjNceDIwXHg3M1x4NzFceDZjXHgyY1x4NzNceDcxXHg2Y1x4NjlceDc0XHg2NVx4MzNceDVmXHg2NVx4NzJceDcyXHg2ZFx4NzNceDY3XHgzYVx4MjVceDczXHgyZSIgIlxuIgotLHNxbGl0ZTNfZXJybXNnKGdfelVmaVNtc19EYlBvaW50ZXIpKTtzcWxpdGUzX2ZyZWUoc3FsKTtyZXR1cm4tKDB4ZDIwKzIwNC0weGRlYikKLTt9d2hpbGUoU1FMSVRFX1JPVz09c3FsaXRlM19zdGVwKHN0bXQpKXtpbnQgaj0oMHhjZDgrMzE4MC0weDE5NDQpO2NoYXIqKgotb3V0X3Jlc3VsdD1OVUxMO2NoYXIqY29sdW1uX3RleHQ9c3FsaXRlM19jb2x1bW5fdGV4dChzdG10LCgweDQyNSs2MC0weDQ2MSkpO2ludCAKLWNvdW50PS0oMHgyNDA3KzUxNi0weDI2MGEpO2lmKGNvbHVtbl90ZXh0IT1OVUxMKWNvdW50PXpVZmlTbXNfU3BsaXRTdHJpbmcoCi1jb2x1bW5fdGV4dCwmb3V0X3Jlc3VsdCwoKGNoYXIpKDB4YmNjKzExOTgtMHgxMDNmKSkpO2ZvcihqPSgweDE2Nys2NDI3LTB4MWE4Mik7agotPGNvdW50O2orKyl7aWYoKDB4ZWMyKzc0Ny0weDExYWQpPT1zdHJjbXAob3V0X3Jlc3VsdFtqXSwiIikpe2lmKGorCi0oMHhjMWIrNjU3My0weDI1YzcpPT1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDYxNysxMDMzLTB4YTFlKV0pe2lkPQotc3FsaXRlM19jb2x1bW5faW50KHN0bXQsKDB4MWIwYSs0NjItMHgxY2Q3KSk7YnJlYWs7fX19aWYob3V0X3Jlc3VsdCE9TlVMTCl7ZnJlZSgKLW91dF9yZXN1bHQpO291dF9yZXN1bHQ9TlVMTDt9aWYoLSgweDE3MisxNzQ4LTB4ODQ1KSE9aWQpe2JyZWFrO319KHZvaWQpCi1zcWxpdGUzX2ZpbmFsaXplKHN0bXQpO3NxbGl0ZTNfZnJlZShzcWwpO3JldHVybiBpZDt9aW50IAorLHNxbGl0ZTNfZXJybXNnKGdfelVmaVNtc19EYlBvaW50ZXIpKTtzcWxpdGUzX2ZyZWUoc3FsKTtyZXR1cm4tCisoMHg3NzQrNzMwNy0weDIzZmUpO313aGlsZShTUUxJVEVfUk9XPT1zcWxpdGUzX3N0ZXAoc3RtdCkpe2ludCBqPQorKDB4MWI2MisyMTMtMHgxYzM3KTtjaGFyKipvdXRfcmVzdWx0PU5VTEw7Y2hhcipjb2x1bW5fdGV4dD1zcWxpdGUzX2NvbHVtbl90ZXh0KAorc3RtdCwoMHgxZjQwKzEwMjMtMHgyMzNmKSk7aW50IGNvdW50PS0oMHgyNjkrMzEzOC0weGVhYSk7aWYoY29sdW1uX3RleHQhPU5VTEwpCitjb3VudD16VWZpU21zX1NwbGl0U3RyaW5nKGNvbHVtbl90ZXh0LCZvdXRfcmVzdWx0LCgoY2hhcikoMHgxN2VkKzMzMjktMHgyNGIzKSkpOworZm9yKGo9KDB4MTZiNisxMzI1LTB4MWJlMyk7ajxjb3VudDtqKyspe2lmKCgweDE0YmErMTkyOC0weDFjNDIpPT1zdHJjbXAoCitvdXRfcmVzdWx0W2pdLCIiKSl7aWYoaisoMHgxYjUrNTQ5OC0weDE3MmUpPT1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWworKDB4YjVhKzYxNTYtMHgyMzY0KV0pe2lkPXNxbGl0ZTNfY29sdW1uX2ludChzdG10LCgweDE0ZiszNDcyLTB4ZWRlKSk7YnJlYWs7fX19aWYKKyhvdXRfcmVzdWx0IT1OVUxMKXtmcmVlKG91dF9yZXN1bHQpO291dF9yZXN1bHQ9TlVMTDt9aWYoLSgweDExYjcrNTMyOC0weDI2ODYpIT0KK2lkKXticmVhazt9fSh2b2lkKXNxbGl0ZTNfZmluYWxpemUoc3RtdCk7c3FsaXRlM19mcmVlKHNxbCk7cmV0dXJuIGlkO31pbnQgCiB6VWZpU21zX0NoZWNrRGJPdXRkYXRlU21zX0NhbGxiYWNrKHZvaWQqZnZhcmcsaW50IGNvbHVtbnMsY2hhcioqenJlc3VsdCxjaGFyKioKLWxuYW1lKXtpZihmdmFyZyE9TlVMTCYmY29sdW1ucz49KDB4NjMxKzY5NDQtMHgyMTUwKSl7aWYoenJlc3VsdFsKLSgweGI4Mis2Mjg4LTB4MjQxMildIT1OVUxMKXtUX3pVZmlTbXNfRGVsUmVxKnJlc3VsdD0oVF96VWZpU21zX0RlbFJlcSopZnZhcmc7Ci1yZXN1bHQtPmlkW3Jlc3VsdC0+YWxsX29yX2NvdW50XT1hdG9pKHpyZXN1bHRbKDB4ZjFjKzI1NzktMHgxOTJmKV0pO3Jlc3VsdC0+CitsbmFtZSl7aWYoZnZhcmchPU5VTEwmJmNvbHVtbnM+PSgweDUwYys4NzA3LTB4MjcwZSkpe2lmKHpyZXN1bHRbCisoMHgxODNjKzI3MjAtMHgyMmRjKV0hPU5VTEwpe1RfelVmaVNtc19EZWxSZXEqcmVzdWx0PShUX3pVZmlTbXNfRGVsUmVxKilmdmFyZzsKK3Jlc3VsdC0+aWRbcmVzdWx0LT5hbGxfb3JfY291bnRdPWF0b2koenJlc3VsdFsoMHhjODYrMTY4MS0weDEzMTcpXSk7cmVzdWx0LT4KIGFsbF9vcl9jb3VudCsrO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31WT0lEIAogelVmaVNtc19DaGVja0RiT3V0ZGF0ZVNtcyhjb25zdCBjaGFyKnBEYlRhYmxlLFRfelVmaVNtc19EZWxSZXEqcFNtc0RlbCl7Y2hhciAKLWFjU3FsWygweDE2YjkrNDIzLTB4MTdlMCldPXsoMHhkNys2NDE1LTB4MTllNil9O3N0cnVjdCB0aW1ldmFsIHRwO2lmKAotKDB4MWEwOSs0NDktMHgxYmNhKSE9Z2V0dGltZW9mZGF5KCZ0cCxOVUxMKSl7cHJpbnRmKAorYWNTcWxbKDB4NzBjKzczNjUtMHgyMzUxKV09eygweDFiNis4NTY5LTB4MjMyZil9O3N0cnVjdCB0aW1ldmFsIHRwO2lmKAorKDB4Mzg0KzU3MzYtMHgxOWVjKSE9Z2V0dGltZW9mZGF5KCZ0cCxOVUxMKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjdceDY1XHg3NFx4NzRceDY5XHg2ZFx4NjVceDZmXHg2Nlx4NjRceDYxXHg3OVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjFceDIxXHgyMSIKICk7cmV0dXJuO31pZih0cC50dl9zZWM8PU9VVERBVEVJTlRFUlZBTCl7cmV0dXJuO31zbnByaW50ZihhY1NxbCxzaXplb2YoYWNTcWwpLAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4MjVceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDZiXHg3NFx4NjlceDZkXHg2NVx4M2NceDI3XHgyNVx4NzVceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4M2IiCkBAIC01MjksMjEgKzUzMSwyMSBAQAogIlx4NmZceDcwXHg2NVx4NmVceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IgogLFpURV9XTVNfREJfQ01EX1NUQVRVU19UQUJMRSk7fXJldHVybjt9aW50IAogelVmaVNtc19HZXRDdXJyZW50UmVjdlRvdGFsU2VxX0NhbGxiYWNrKHZvaWQqZnZhcmcsaW50IGNvbHVtbixjaGFyKip6cmVzdWx0LGNoYXIKLSoqbG5hbWUpe2lmKGZ2YXJnIT1OVUxMJiZjb2x1bW4+PSgweGRlNys2MTMtMHgxMDRhKSl7aWYoenJlc3VsdFsKLSgweGExNCs0MjAzLTB4MWE3ZildIT1OVUxMJiZ6cmVzdWx0WygweDE1ZjQrNDctMHgxNjIyKV0hPU5VTEwpe1NNU19NU0dfSU5GTyptc2c9Ci0oU01TX01TR19JTkZPKilmdmFyZzttZW1zZXQobXNnLT5pZCwoMHgyYjcrMjUwLTB4M2IxKSxzaXplb2YobXNnLT5pZCkpO21lbXNldCgKLW1zZy0+dG90YWxfc2VxLCgweGQ4Yis1Mzk1LTB4MjI5ZSksc2l6ZW9mKG1zZy0+dG90YWxfc2VxKSk7c3RybmNweShtc2ctPmlkLAotenJlc3VsdFsoMHhhOSs0OTYxLTB4MTQwYSldLHNpemVvZihtc2ctPmlkKS0oMHhhMTYrNjAwNi0weDIxOGIpKTtzdHJuY3B5KG1zZy0+Ci10b3RhbF9zZXEsenJlc3VsdFsoMHgyZTArMTU2NC0weDhmYildLHNpemVvZihtc2ctPnRvdGFsX3NlcSktCi0oMHgxYWU3KzI1MzctMHgyNGNmKSk7cHJpbnRmKAorKipsbmFtZSl7aWYoZnZhcmchPU5VTEwmJmNvbHVtbj49KDB4MTgzMyszMjctMHgxOTc4KSl7aWYoenJlc3VsdFsKKygweGI0OCsxMTQzLTB4ZmJmKV0hPU5VTEwmJnpyZXN1bHRbKDB4MTA5NCsxMzI4LTB4MTVjMyldIT1OVUxMKXtTTVNfTVNHX0lORk8qbXNnCis9KFNNU19NU0dfSU5GTyopZnZhcmc7bWVtc2V0KG1zZy0+aWQsKDB4OTkzKzE3MjgtMHgxMDUzKSxzaXplb2YobXNnLT5pZCkpO21lbXNldAorKG1zZy0+dG90YWxfc2VxLCgweDIwNzArMTMzMi0weDI1YTQpLHNpemVvZihtc2ctPnRvdGFsX3NlcSkpO3N0cm5jcHkobXNnLT5pZCwKK3pyZXN1bHRbKDB4MWVmZCsxNTA0LTB4MjRkZCldLHNpemVvZihtc2ctPmlkKS0oMHhhODYrMzYzOC0weDE4YmIpKTtzdHJuY3B5KG1zZy0+Cit0b3RhbF9zZXEsenJlc3VsdFsoMHhjNzcrNDg4Ny0weDFmOGQpXSxzaXplb2YobXNnLT50b3RhbF9zZXEpLQorKDB4ZGVjKzEzNDgtMHgxMzJmKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg1Ylx4NzRceDcyXHg2MVx4NjZceDY2XHg2OVx4NjNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg0M1x4NzVceDcyXHg3Mlx4NjVceDZlXHg3NFx4NTJceDY1XHg2M1x4NzZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NTNceDY1XHg3MVx4NWZceDQzXHg2MVx4NmNceDZjXHg2Mlx4NjFceDYzXHg2Ylx4MjBceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDczXHgyY1x4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NWZceDczXHg2NVx4NzFceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgogLG1zZy0+aWQsbXNnLT50b3RhbF9zZXEpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCiB6VWZpU21zX0dldEN1cnJlbnRSZWN2VG90YWxTZXEoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxTTVNfTVNHX0lORk8qCiBwbXNnKXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtzdHJTUUw9CiBzcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjlceDY0XHgyY1x4MjBceDQzXHg2M1x4NWZceDRlXHg3NVx4NmRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHgyMFx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCi0scHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxMzU5KzkxNi0weDE2ZWQpXSwKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4OWEyKzU1NDctMHgxZjRjKV0pO3ByaW50ZigKKyxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDEyMWIrMTYyOC0weDE4NzcpXSwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTc4OSsyOTQyLTB4MjMwNildKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ3XHg2NVx4NzRceDQzXHg3NVx4NzJceDcyXHg2NVx4NmVceDc0XHg1Mlx4NjVceDYzXHg3Nlx4NTRceDZmXHg3NFx4NjFceDZjXHg1M1x4NjVceDcxXHgyMFx4NzNceDcxXHg2Y1x4MjBceDNhXHgyMFx4MjVceDczXHgyMCIgIlxuIgogLHN0clNRTCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzdHJTUUwselVmaVNtc19HZXRDdXJyZW50UmVjdlRvdGFsU2VxX0NhbGxiYWNrLAogcG1zZyk7c3FsaXRlM19mcmVlKHN0clNRTCk7cmV0dXJuIGlzU3VjZXNzKHJlc3VsdCk7fQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2ZuYy5jIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2ZuYy5jCmluZGV4IDA2YzM0NzMuLjE0NmEwMWQgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19mbmMuYworKysgYi9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfZm5jLmMKQEAgLTgsNDIgKzgsNDMgQEAKICNpbmNsdWRlICJzbXNfZm5jLmgiDQogI2luY2x1ZGUgInNtc19kYi5oIg0KICNpbmNsdWRlICJzbXNfY29kZS5oIg0KLSNkZWZpbmUgU01TX1JFVFJZX0NPVU5UICgweDIwMDErMzk0LTB4MjE4OCkNCi0jZGVmaW5lIFNIT1JUX0lOVF9MRU4gKDB4MjFmKzU1ODMtMHgxN2U4KQ0KKyNkZWZpbmUgU01TX1JFVFJZX0NPVU5UICgweDExNTUrNDQ2NS0weDIyYzMpDQorI2RlZmluZSBTSE9SVF9JTlRfTEVOICgweDEwMDcrNTE0NC0weDI0MTkpDQogU01TX0xPQ0FUSU9OIGdfelVmaVNtc19DdXJMb2NhdGlvbj1TTVNfTE9DQVRJT05fU0lNO2ludCAKLWdfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2U9KDB4NDZmKzExMTktMHg4Y2UpO1RfelVmaVNtc19QYXJhSW5mbyAKK2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2U9KDB4M2Q5KzQzNTgtMHgxNGRmKTtUX3pVZmlTbXNfUGFyYUluZm8gCiBnX3pVZmlTbXNfQ3VyU21zUGFyYT17IiIsV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxLAotWlRFX1dNU19TTVNfREVGQVVMVF9UUF9WQUxJRElUWV9QRVJJT0RfR1csKDB4YzAyKzM2NzAtMHgxYTU4KSwoMHgxM2U3KzczLTB4MTQzMCkKLSwoMHgxZTk2Kzc0My0weDIxN2QpLCJceDZlXHg3NiJ9O2ludCBnX3pVZmlTbXNfTGFuZ3VhZ2U9Tk9UX0RFRklORV9MQU5HVUFHRTtpbnQgCi1nX3pVZmlTbXNfRGNzPSgweDExNzIrMzg0My0weDIwNzUpO3Vuc2lnbmVkIGxvbmcgZ196VWZpU21zX1N0b3JlQ2FwYWJsaXR5WwotWlRFX1dNU19NRU1PUllfTUFYXT17KDB4NWYxKzgxNTEtMHgyNTY0KSxaVEVfV01TX0RCX01TR19DT1VOVF9NQVh9OwotVF96U21zX1NlbmRTbXNSZXEgZ196VWZpU21zX0ZpbmFsQ21nc0J1ZjtTTVNfUEFSQU0gZ196VWZpU21zX1NlbmRpbmdTbXM7VUlOVDE2IAotZ196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD0oMHhiYWMrNzEwLTB4ZTcyKTtleHRlcm4gaW50IGdfelVmaVNtc19Nc2dSZWZlcjtleHRlcm4KLSBUX3pVZmlTbXNfRGVsU21zIGdfelVmaVNtc19EZWxNc2c7ZXh0ZXJuIFRfelVmaVNtc19EZWxJbmRleEluZm8gZ19kZWxldGVJbmRleDsKLWV4dGVybiBUX3pVZmlTbXNfTW9kaWZ5SW5kZXhJbmZvIGdfbW9kaWZ5SW5kZXg7ZXh0ZXJuIFRfelVmaVNtc19Nb2RpZnlTbXMgCi1nX3pVZmlTbXNfbW9kaWZ5TXNnO2V4dGVybiBVSU5UOCBnX3pVZmlTbXNfTWVtRnVsbEZsYWdbWlRFX1dNU19NRU1PUllfTUFYXTsKLWV4dGVybiBpbnQgZ196VWZpU21zX0NvbmNhdFRvdGFsTnVtO2V4dGVybiBUX3pVZmlTbXNfQ29uY2F0SW5mbyAKLWdfelVmaVNtc19Db25jYXRTbXM7ZXh0ZXJuIFRfelVmaVNtc19Hcm91cEluZm8gZ196VWZpU21zX0dyb3VwU21zO2V4dGVybiBpbnQgCi1nX3pVZmlTbXNfVW5pdExlbjtleHRlcm4gVUlOVDggZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1YztleHRlcm4gaW50IAotZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudDtleHRlcm4gVF96VWZpU21zX0RiU3RvcmVEYXRhIGdfelVmaVNtc19EYlN0b3JlRGF0YVsKLVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVhdO2V4dGVybiBpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRSZXRyeTt2b2lkIAotelVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT04gZUxvY2F0aW9uKXtzd2l0Y2goZUxvY2F0aW9uKXtjYXNlIAotU01TX0xPQ0FUSU9OX1NJTTp7Z196VWZpU21zX0N1ckxvY2F0aW9uPVNNU19MT0NBVElPTl9TSU07YnJlYWs7fWNhc2UgCi1TTVNfTE9DQVRJT05fTUU6e2dfelVmaVNtc19DdXJMb2NhdGlvbj1TTVNfTE9DQVRJT05fTUU7YnJlYWs7fWRlZmF1bHQ6e3JldHVybjt9fQotfWludCB6VWZpU21zX1NldERlbGV0ZUluZm8oVF96VWZpU21zX0RlbFJlcSpwdERlbE1zZyl7Y2hhciBhY1N0b3JlUG9zWwotKDB4ODFiKzc2MjUtMHgyNWIyKV07aW50IGk9KDB4ZDg2KzMyNDUtMHgxYTMzKTtnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50PQotKDB4NWZmKzI5OTYtMHgxMWIzKTtnX3pVZmlTbXNfRGVsTXNnLm52X2luZGV4PSgweGVmNis0MzE2LTB4MWZkMik7Ci1nX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudD0oMHgxMjNmKzM0MjUtMHgxZmEwKTtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleD0KLSgweDFlM2QrMTI4LTB4MWViZCk7Zm9yKGk9KDB4ZjFiKzU2ODktMHgyNTU0KTtpPHB0RGVsTXNnLT5hbGxfb3JfY291bnQ7aSsrKXsKLW1lbXNldChhY1N0b3JlUG9zLCgweGQ5Mys0NjctMHhmNjYpLHNpemVvZihhY1N0b3JlUG9zKSk7aWYoWlVGSV9GQUlMPT0KLXpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKCJNZW1fU3RvcmUiLGFjU3RvcmVQb3Msc2l6ZW9mKGFjU3RvcmVQb3MpLHB0RGVsTXNnLT5pZFtpCi1dKSl7cmV0dXJuIFpVRklfRkFJTDt9aWYoKDB4MTBkZis5MC0weDExMzkpPT1zdHJjbXAoYWNTdG9yZVBvcywKLVpURV9XTVNfREJfTlZfVEFCTEUpKXtnX3pVZmlTbXNfRGVsTXNnLm52X2lkW2dfelVmaVNtc19EZWxNc2cubnZfY291bnRdPXB0RGVsTXNnCi0tPmlkW2ldO2dfelVmaVNtc19EZWxNc2cubnZfY291bnQrKztnX3pVZmlTbXNfRGVsTXNnLm52X2luZGV4X2NvdW50Kys7fWVsc2UgaWYoCi0oMHgxOTRjKzMwMzYtMHgyNTI4KT09c3RyY21wKGFjU3RvcmVQb3MsWlRFX1dNU19EQl9TSU1fVEFCTEUpKXtnX3pVZmlTbXNfRGVsTXNnLgotc2ltX2lkW2dfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50XT1wdERlbE1zZy0+aWRbaV07Z196VWZpU21zX0RlbE1zZy5zaW1fY291bnQrKzsKLWdfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4X2NvdW50Kys7fX1yZXR1cm4gWlVGSV9TVUNDO312b2lkIAotelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoVF96VWZpU21zX01haW5TdGF0ZSBpTmV3U3RhdGUpe2NoYXIqcHRTdHJTbXNTdGF0ZVtdPXsKK1pURV9XTVNfU01TX0RFRkFVTFRfVFBfVkFMSURJVFlfUEVSSU9EX0dXLCgweDE3MDQrNTk1LTB4MTk1NyksCisoMHgxNzcwKzcwNC0weDFhMzApLCgweGNhMSsxNjc3LTB4MTMyZSksIlx4NmVceDc2In07aW50IGdfelVmaVNtc19MYW5ndWFnZT0KK05PVF9ERUZJTkVfTEFOR1VBR0U7aW50IGdfelVmaVNtc19EY3M9KDB4MmIwKzI5MzMtMHhlMjUpO3Vuc2lnbmVkIGxvbmcgCitnX3pVZmlTbXNfU3RvcmVDYXBhYmxpdHlbWlRFX1dNU19NRU1PUllfTUFYXT17KDB4MTM0OCsyNjU3LTB4MWQ0NSksCitaVEVfV01TX0RCX01TR19DT1VOVF9NQVh9O1RfelNtc19TZW5kU21zUmVxIGdfelVmaVNtc19GaW5hbENtZ3NCdWY7U01TX1BBUkFNIAorZ196VWZpU21zX1NlbmRpbmdTbXM7VUlOVDE2IGdfelVmaVNtc19Jc0xhbmd1YWdlU2hpZnQ9KDB4NjdmKzExODEtMHhiMWMpO2V4dGVybiAKK2ludCBnX3pVZmlTbXNfTXNnUmVmZXI7ZXh0ZXJuIFRfelVmaVNtc19EZWxTbXMgZ196VWZpU21zX0RlbE1zZztleHRlcm4gCitUX3pVZmlTbXNfRGVsSW5kZXhJbmZvIGdfZGVsZXRlSW5kZXg7ZXh0ZXJuIFRfelVmaVNtc19Nb2RpZnlJbmRleEluZm8gCitnX21vZGlmeUluZGV4O2V4dGVybiBUX3pVZmlTbXNfTW9kaWZ5U21zIGdfelVmaVNtc19tb2RpZnlNc2c7ZXh0ZXJuIFVJTlQ4IAorZ196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX01BWF07ZXh0ZXJuIGludCBnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW07CitleHRlcm4gVF96VWZpU21zX0NvbmNhdEluZm8gZ196VWZpU21zX0NvbmNhdFNtcztleHRlcm4gVF96VWZpU21zX0dyb3VwSW5mbyAKK2dfelVmaVNtc19Hcm91cFNtcztleHRlcm4gaW50IGdfelVmaVNtc19Vbml0TGVuO2V4dGVybiBVSU5UOCAKK2dfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM7ZXh0ZXJuIGludCBnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50O2V4dGVybiAKK1RfelVmaVNtc19EYlN0b3JlRGF0YSBnX3pVZmlTbXNfRGJTdG9yZURhdGFbWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWF07ZXh0ZXJuCisgaW50IGdfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk7dm9pZCB6VWZpU21zX1NldFNtc0xvY2F0aW9uKFNNU19MT0NBVElPTiAKK2VMb2NhdGlvbil7c3dpdGNoKGVMb2NhdGlvbil7Y2FzZSBTTVNfTE9DQVRJT05fU0lNOntnX3pVZmlTbXNfQ3VyTG9jYXRpb249CitTTVNfTE9DQVRJT05fU0lNO2JyZWFrO31jYXNlIFNNU19MT0NBVElPTl9NRTp7Z196VWZpU21zX0N1ckxvY2F0aW9uPQorU01TX0xPQ0FUSU9OX01FO2JyZWFrO31kZWZhdWx0OntyZXR1cm47fX19aW50IHpVZmlTbXNfU2V0RGVsZXRlSW5mbygKK1RfelVmaVNtc19EZWxSZXEqcHREZWxNc2cpe2NoYXIgYWNTdG9yZVBvc1soMHhhMjUrNDU2MC0weDFiYzMpXTtpbnQgaT0KKygweDU5NisyNDkxLTB4ZjUxKTtnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50PSgweDFiODUrMTg3Mi0weDIyZDUpOworZ196VWZpU21zX0RlbE1zZy5udl9pbmRleD0oMHgyZjQrNjQzNC0weDFjMTYpO2dfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50PQorKDB4YWU2KzQ3MzctMHgxZDY3KTtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleD0oMHhjMjcrNTkyNC0weDIzNGIpO2ZvcihpPQorKDB4ODg1KzQyMzAtMHgxOTBiKTtpPHB0RGVsTXNnLT5hbGxfb3JfY291bnQ7aSsrKXttZW1zZXQoYWNTdG9yZVBvcywKKygweGU1NSszNzE5LTB4MWNkYyksc2l6ZW9mKGFjU3RvcmVQb3MpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKAorIk1lbV9TdG9yZSIsYWNTdG9yZVBvcyxzaXplb2YoYWNTdG9yZVBvcykscHREZWxNc2ctPmlkW2ldKSl7cmV0dXJuIFpVRklfRkFJTDt9aWYKKygoMHg3MzgrMjI5LTB4ODFkKT09c3RyY21wKGFjU3RvcmVQb3MsWlRFX1dNU19EQl9OVl9UQUJMRSkpe2dfelVmaVNtc19EZWxNc2cuCitudl9pZFtnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50XT1wdERlbE1zZy0+aWRbaV07Z196VWZpU21zX0RlbE1zZy5udl9jb3VudCsrOworZ196VWZpU21zX0RlbE1zZy5udl9pbmRleF9jb3VudCsrO31lbHNlIGlmKCgweDVkMis1OTg5LTB4MWQzNyk9PXN0cmNtcCgKK2FjU3RvcmVQb3MsWlRFX1dNU19EQl9TSU1fVEFCTEUpKXtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pZFtnX3pVZmlTbXNfRGVsTXNnLgorc2ltX2NvdW50XT1wdERlbE1zZy0+aWRbaV07Z196VWZpU21zX0RlbE1zZy5zaW1fY291bnQrKztnX3pVZmlTbXNfRGVsTXNnLgorc2ltX2luZGV4X2NvdW50Kys7fX1yZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKAorVF96VWZpU21zX01haW5TdGF0ZSBpTmV3U3RhdGUpe2NoYXIqcHRTdHJTbXNTdGF0ZVtdPXsKICJceDczXHg2ZFx4NzNceDVmXHg2OVx4NmVceDY5XHg3NFx4NjlceDZlXHg2NyIsCiAiXHg3M1x4NmRceDczXHg1Zlx4NjlceDZlXHg2OVx4NzRceDY1XHg2NCIsCiAiXHg3M1x4NmRceDczXHg1Zlx4NmNceDZmXHg2MVx4NjRceDY5XHg2ZVx4NjciLApAQCAtNjgsOTUgKzY5LDk2IEBACiBTTVNfU1RBVEVfUkVDVklORzpjYXNlIFNNU19TVEFURV9SRUNWRUQ6Y2FzZSBTTVNfU1RBVEVfREVMU0FWSU5HOmNhc2UgCiBTTVNfU1RBVEVfREVMU0FWRUQ6e2JyZWFrO31kZWZhdWx0OntyZXR1cm47fX1zY19jZmdfc2V0KE5WX1NNU19TVEFURSwKIHB0U3RyU21zU3RhdGVbaU5ld1N0YXRlXSk7fWludCB6VWZpU21zX0NoZWNrU3RvcmVEaXIodm9pZCl7aWYoLQotKDB4MWMyKzQ0NDMtMHgxMzFjKT09YWNjZXNzKFpURV9XTVNfREJfRElSLEZfT0spKXtwcmludGYoCisoMHgxNWMrMjIwNC0weDlmNyk9PWFjY2VzcyhaVEVfV01TX0RCX0RJUixGX09LKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4M2FceDI1XHg3M1x4MjBceDY0XHg2Zlx4NjVceDczXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjlceDczXHg3NFx4MmNceDczXHg2Zlx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDY5XHg3NFx4MmUiICJcbiIKLSxaVEVfV01TX0RCX0RJUik7aWYoLSgweDExYjArNTQ0Ny0weDI2ZjYpPT1ta2RpcihaVEVfV01TX0RCX0RJUiwKLSgweGEyMCs1ODM3LTB4MWVlZSkpKXtwcmludGYoCissWlRFX1dNU19EQl9ESVIpO2lmKC0oMHgyMzdkKzg3My0weDI2ZTUpPT1ta2RpcihaVEVfV01TX0RCX0RJUiwKKygweDE2YjMrNDItMHgxNGRlKSkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2ZFx4NzNceDNhXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyMFx4NzRceDZmXHgyMFx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDY0XHg2Mlx4MjBceDY0XHg2OVx4NzJceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX0ZBSUw7fX1yZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19DaGVja1Ntc0RiKHZvaWQpe2lmKC0KLSgweDE5MjArOTQtMHgxOTdkKT09YWNjZXNzKFpURV9XTVNfREJfUEFUSCxGX09LKSl7cHJpbnRmKAorKDB4NWM2KzQ4NzUtMHgxOGQwKT09YWNjZXNzKFpURV9XTVNfREJfUEFUSCxGX09LKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4M2FceDI1XHg3M1x4MjBceDY0XHg2Zlx4NjVceDczXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjlceDczXHg3NFx4MmNceDczXHg2Zlx4MjBceDY3XHg2NVx4NzRceDIwXHg2NFx4NjVceDY2XHg2MVx4NzVceDZjXHg3NFx4MjBceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjdceDJlIiAiXG4iCiAsWlRFX1dNU19EQl9QQVRIKTtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHgzZFx4M2RceDNkXHgzZFx4M2RceDNkXHgyNVx4NzNceDIwXHg2NVx4NzhceDY5XHg3M1x4NzRceDJlIiAiXG4iCiAsWlRFX1dNU19EQl9QQVRIKTtyZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfR2V0RGVmYXVsdENmZ1BhcmEodm9pZCl7Ci11bnNpZ25lZCBjaGFyIHN0c19mbGFnPSgweDc2OSs3NTI5LTB4MjRkMik7dW5zaWduZWQgY2hhciBtZW1fc3RvcmVfZmxhZz0KLSgweDZjMCs1MjMzLTB4MWIzMSk7dW5zaWduZWQgaW50IHRwX3ZhbGlkaXR5X3BlcmlvZD0oMHgxMSszMzY4LTB4ZDM5KTtjaGFyIAotVGVtcF9zbXNfdnBbKDB4ZTQ1KzIwMTgtMHgxNjFmKV09eygweDU2NysxMzAwLTB4YTdiKX07Q0hBUiByZXBvcnRFbmFibGVbCi0oMHgzM2IrNzYyNC0weDIwZDEpXT17KDB4YjUzKzQ5Ny0weGQ0NCl9O0NIQVIgc21zTG9jYXRpb25bKDB4NjJhKzU4NDAtMHgxY2M4KV09ewotKDB4OTIxKzE0NDQtMHhlYzUpfTtDSEFSIHNlbmRmYWlsUmV0cnlbKDB4N2I2KzE3MjgtMHhlNDQpXT17KDB4MTc4ZCsxMDc2LTB4MWJjMSkKLX07Q0hBUiBvdXRkYXRlRGVsZXRlWygweGExNis3MTkxLTB4MjVmYildPXsoMHhiMTQrNDA4Mi0weDFiMDYpfTtDSEFSIAotZGVmYXVsdFN0b3JlWygweDIwZWErMTEyOS0weDI1MjEpXT17KDB4OWMwKzI5NTctMHgxNTRkKX07c2NfY2ZnX2dldCgKLU5WX1JFUE9SVF9FTkFCTEUscmVwb3J0RW5hYmxlLHNpemVvZihyZXBvcnRFbmFibGUpKTtzY19jZmdfZ2V0KAordW5zaWduZWQgY2hhciBzdHNfZmxhZz0oMHgxMTE5KzI0NDktMHgxYWFhKTt1bnNpZ25lZCBjaGFyIG1lbV9zdG9yZV9mbGFnPQorKDB4MzU5Kzc3MTYtMHgyMTdkKTt1bnNpZ25lZCBpbnQgdHBfdmFsaWRpdHlfcGVyaW9kPSgweDEwMTYrMzUyNi0weDFkZGMpO2NoYXIgCitUZW1wX3Ntc192cFsoMHgxMDArMTkyOC0weDg4MCldPXsoMHhjYys3MDctMHgzOGYpfTtDSEFSIHJlcG9ydEVuYWJsZVsKKygweDEwY2ErMjI0Mi0weDE5NWEpXT17KDB4MjVmKzcyMzUtMHgxZWEyKX07Q0hBUiBzbXNMb2NhdGlvblsoMHgxODJiKzc3OC0weDFiMDMpCitdPXsoMHhkNTkrMjkyNy0weDE4YzgpfTtDSEFSIHNlbmRmYWlsUmV0cnlbKDB4OGEwKzY5MTQtMHgyMzcwKV09eworKDB4ZmEzKzU4MzYtMHgyNjZmKX07Q0hBUiBvdXRkYXRlRGVsZXRlWygweDdlZisyNzQxLTB4MTI3MildPXsKKygweDZlNiszMzAyLTB4MTNjYyl9O0NIQVIgZGVmYXVsdFN0b3JlWygweDExODMrMjIwNy0weDE5ZjApXT17KDB4NWJiKzEwNzYtMHg5ZWYpCit9O3NjX2NmZ19nZXQoTlZfUkVQT1JUX0VOQUJMRSxyZXBvcnRFbmFibGUsc2l6ZW9mKHJlcG9ydEVuYWJsZSkpO3NjX2NmZ19nZXQoCiBOVl9TTVNfTE9DQVRJT05fU0VULHNtc0xvY2F0aW9uLHNpemVvZihzbXNMb2NhdGlvbikpO3NjX2NmZ19nZXQoCiBOVl9TRU5ERkFJTF9SRVRSWSxzZW5kZmFpbFJldHJ5LHNpemVvZihzZW5kZmFpbFJldHJ5KSk7c2NfY2ZnX2dldCgKIE5WX09VVERBVEVfREVMRVRFLG91dGRhdGVEZWxldGUsc2l6ZW9mKG91dGRhdGVEZWxldGUpKTtzY19jZmdfZ2V0KAotTlZfREVGQVVMVF9TVE9SRSxkZWZhdWx0U3RvcmUsc2l6ZW9mKGRlZmF1bHRTdG9yZSkpO2lmKCgweDcxOSs1NDM2LTB4MWM1NSk9PQotc3RyY21wKHJlcG9ydEVuYWJsZSwiXHgzMSIpKXtzdHNfZmxhZz0oMHgxOTMxKzk4My0weDFkMDcpO31nX3pVZmlTbXNfQ3VyU21zUGFyYS4KLXN0YXR1c19yZXBvcnRfb249c3RzX2ZsYWc7aWYoKDB4MTFiNys0NTAxLTB4MjM0Yyk9PXN0cmNtcChzbXNMb2NhdGlvbiwiXHg0ZFx4NDUiCi0pKXttZW1fc3RvcmVfZmxhZz0oMHgxMGNmKzg1MC0weDE0MjEpO31lbHNle21lbV9zdG9yZV9mbGFnPSgweDRkMSs3NTI5LTB4MjIzOSk7fQotZ196VWZpU21zX0N1clNtc1BhcmEubWVtX3N0b3JlPSh1bnNpZ25lZCBpbnQpKCgweDE3MTkrMzM5Ny0weDI0NWUpPT0KLW1lbV9zdG9yZV9mbGFnP1dNU19TVE9SQUdFX1RZUEVfTlZfVjAxOldNU19TVE9SQUdFX1RZUEVfVUlNX1YwMSk7c2NfY2ZnX2dldCgKLU5WX1NNU19WUCxUZW1wX3Ntc192cCxzaXplb2YoVGVtcF9zbXNfdnApKTt0cF92YWxpZGl0eV9wZXJpb2Q9Ci0oMHgxNTFmKzIyNDQtMHgxY2U0KTtpZigoMHg2NGYrNTUyOC0weDFiZTcpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAotIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiLCgweDE0ZDMrMzYwNy0weDIyZTMpKSl7dHBfdmFsaWRpdHlfcGVyaW9kPQotKDB4ZWIyKzQ4MjItMHgyMDg5KTt9aWYoKDB4MTc3NSszNjMwLTB4MjVhMyk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCi0iXHg2Zlx4NmVceDY1XHg1Zlx4NjRceDYxXHg3OSIsKDB4MTk0YysyMTg5LTB4MjFkMikpKXt0cF92YWxpZGl0eV9wZXJpb2Q9Ci0oMHgxMzk0KzQ5ODYtMHgyNjY3KTt9aWYoKDB4MjQxKzE4MzQtMHg5NmIpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAotIlx4NmZceDZlXHg2NVx4NzdceDY1XHg2NVx4NmIiLCgweGRlNSs0NjI2LTB4MWZmMCkpKXt0cF92YWxpZGl0eV9wZXJpb2Q9Ci0oMHg3YTYrMjA1NS0weGYwMCk7fWlmKCgweGRhMCs0MjUyLTB4MWUzYyk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCi0iXHg3NFx4NzdceDY1XHg2Y1x4NzZceDY1XHg2OCIsKDB4MTFmKzU1NTgtMHgxNmNlKSkpe3RwX3ZhbGlkaXR5X3BlcmlvZD0KLSgweDFlOGErMjI4Ny0weDI2ZWEpO31nX3pVZmlTbXNfQ3VyU21zUGFyYS50cF92YWxpZGl0eV9wZXJpb2Q9dHBfdmFsaWRpdHlfcGVyaW9kCi07aWYoKDB4YSs0OTI3LTB4MTM0OSk9PXN0cmNtcChzZW5kZmFpbFJldHJ5LCJceDMxIikpe2dfelVmaVNtc19DdXJTbXNQYXJhLgotc2VuZGZhaWxfcmV0cnlfb249KDB4ZTRiKzUwNTUtMHgyMjA5KTt9ZWxzZXtnX3pVZmlTbXNfQ3VyU21zUGFyYS4KLXNlbmRmYWlsX3JldHJ5X29uPSgweGI3ZCsxMTcwLTB4MTAwZik7fWlmKCgweDgyMiszOTQwLTB4MTc4Nik9PXN0cmNtcCgKK05WX0RFRkFVTFRfU1RPUkUsZGVmYXVsdFN0b3JlLHNpemVvZihkZWZhdWx0U3RvcmUpKTtpZigoMHgyNDk4KzgzLTB4MjRlYik9PQorc3RyY21wKHJlcG9ydEVuYWJsZSwiXHgzMSIpKXtzdHNfZmxhZz0oMHhiNGErNTI1LTB4ZDU2KTt9Z196VWZpU21zX0N1clNtc1BhcmEuCitzdGF0dXNfcmVwb3J0X29uPXN0c19mbGFnO2lmKCgweDE3NDErODY5LTB4MWFhNik9PXN0cmNtcChzbXNMb2NhdGlvbiwiXHg0ZFx4NDUiKQorKXttZW1fc3RvcmVfZmxhZz0oMHhlOTIrMjc0NS0weDE5NGIpO31lbHNle21lbV9zdG9yZV9mbGFnPSgweDdkKzE5NTktMHg4MjMpO30KK2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZT0odW5zaWduZWQgaW50KSgoMHg4NSs3Nzc5LTB4MWVlOCk9PW1lbV9zdG9yZV9mbGFnCis/V01TX1NUT1JBR0VfVFlQRV9OVl9WMDE6V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxKTtzY19jZmdfZ2V0KE5WX1NNU19WUCwKK1RlbXBfc21zX3ZwLHNpemVvZihUZW1wX3Ntc192cCkpO3RwX3ZhbGlkaXR5X3BlcmlvZD0oMHhjNzArMzU3MS0weDE5NjQpO2lmKAorKDB4NDNkKzY3ODUtMHgxZWJlKT09c3RybmNtcChUZW1wX3Ntc192cCwiXHg2Y1x4NmZceDZlXHg2N1x4NjVceDczXHg3NCIsCisoMHgxY2MrMTMxOS0weDZlYykpKXt0cF92YWxpZGl0eV9wZXJpb2Q9KDB4NDdiKzg5OTUtMHgyNjlmKTt9aWYoCisoMHg0MmErMTc5NC0weGIyYyk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiLAorKDB4NDcwKzExMjAtMHg4YzkpKSl7dHBfdmFsaWRpdHlfcGVyaW9kPSgweDEzMDQrNzI5LTB4MTUzNik7fWlmKAorKDB4ZWI3KzIxMjYtMHgxNzA1KT09c3RybmNtcChUZW1wX3Ntc192cCwiXHg2Zlx4NmVceDY1XHg3N1x4NjVceDY1XHg2YiIsCisoMHgxYzVmKzU5MS0weDFlYTcpKSl7dHBfdmFsaWRpdHlfcGVyaW9kPSgweDRiYys4NjQ2LTB4MjVkNSk7fWlmKAorKDB4ZmQwKzM3MzUtMHgxZTY3KT09c3RybmNtcChUZW1wX3Ntc192cCwiXHg3NFx4NzdceDY1XHg2Y1x4NzZceDY1XHg2OCIsCisoMHgyMjNiKzEwMS0weDIyOTkpKSl7dHBfdmFsaWRpdHlfcGVyaW9kPSgweDEwOGErNTM3Ny0weDI0ZmMpO30KK2dfelVmaVNtc19DdXJTbXNQYXJhLnRwX3ZhbGlkaXR5X3BlcmlvZD10cF92YWxpZGl0eV9wZXJpb2Q7aWYoCisoMHg2NzcrNTIwNi0weDFhY2QpPT1zdHJjbXAoc2VuZGZhaWxSZXRyeSwiXHgzMSIpKXtnX3pVZmlTbXNfQ3VyU21zUGFyYS4KK3NlbmRmYWlsX3JldHJ5X29uPSgweDE1NjYrMjkwNC0weDIwYmQpO31lbHNle2dfelVmaVNtc19DdXJTbXNQYXJhLgorc2VuZGZhaWxfcmV0cnlfb249KDB4MSs2OTkyLTB4MWI1MSk7fWlmKCgweDEwMWErMjkyOS0weDFiOGIpPT1zdHJjbXAoCiBvdXRkYXRlRGVsZXRlLCJceDMxIikpe2dfelVmaVNtc19DdXJTbXNQYXJhLm91dGRhdGVfZGVsZXRlX29uPQotKDB4YzQ0KzQ3ODQtMHgxZWYzKTt9ZWxzZXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5vdXRkYXRlX2RlbGV0ZV9vbj0KLSgweDFkNCszMTE3LTB4ZTAxKTt9aWYoKDB4MTRjMiszMzctMHgxNjEzKT09c3RyY21wKGRlZmF1bHRTdG9yZSwiXHg3M1x4NjlceDZkIikpCi17c3RybmNweShnX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlLCJceDczXHg2OVx4NmQiLHNpemVvZigKLWdfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUpLSgweDE4MDkrMjEzNC0weDIwNWUpKTt9ZWxzZXtzdHJuY3B5KAorKDB4N2UwKzMxMDctMHgxNDAyKTt9ZWxzZXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5vdXRkYXRlX2RlbGV0ZV9vbj0KKygweDFmNTYrMTYxMi0weDI1YTIpO31pZigoMHgxZGIzKzE1OTItMHgyM2ViKT09c3RyY21wKGRlZmF1bHRTdG9yZSwKKyJceDczXHg2OVx4NmQiKSl7c3RybmNweShnX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlLCJceDczXHg2OVx4NmQiLAorc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUpLSgweDZmMys0MjczLTB4MTdhMykpO31lbHNle3N0cm5jcHkoCiBnX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlLCJceDZlXHg3NiIsc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLgotZGVmYXVsdF9zdG9yZSktKDB4MTA5NSs1NjU4LTB4MjZhZSkpO319dm9pZCB6VWZpU21zX0dldERlZmF1bHRQYXJhKHZvaWQpe21lbXNldCgKLSZnX3pVZmlTbXNfQ3VyU21zUGFyYSwoMHgyMDdjKzI3LTB4MjA5Nyksc2l6ZW9mKFRfelVmaVNtc19QYXJhSW5mbykpOwotZ196VWZpU21zX0N1clNtc1BhcmEuc3RhdHVzX3JlcG9ydF9vbj0oMHgxNTdjKzEwMDUtMHgxOTY5KTtnX3pVZmlTbXNfQ3VyU21zUGFyYS4KK2RlZmF1bHRfc3RvcmUpLSgweDE4NmYrMTg0Ni0weDFmYTQpKTt9fXZvaWQgelVmaVNtc19HZXREZWZhdWx0UGFyYSh2b2lkKXttZW1zZXQoCismZ196VWZpU21zX0N1clNtc1BhcmEsKDB4MjE3NSs0NTgtMHgyMzNmKSxzaXplb2YoVF96VWZpU21zX1BhcmFJbmZvKSk7CitnX3pVZmlTbXNfQ3VyU21zUGFyYS5zdGF0dXNfcmVwb3J0X29uPSgweDIzZDcrNjk2LTB4MjY4Zik7Z196VWZpU21zX0N1clNtc1BhcmEuCiBtZW1fc3RvcmU9V01TX1NUT1JBR0VfVFlQRV9OVl9WMDE7Z196VWZpU21zX0N1clNtc1BhcmEudHBfdmFsaWRpdHlfcGVyaW9kPQogWlRFX1dNU19TTVNfREVGQVVMVF9UUF9WQUxJRElUWV9QRVJJT0RfR1c7Z196VWZpU21zX0N1clNtc1BhcmEuc2VuZGZhaWxfcmV0cnlfb24KLT0oMHgxY2Q2KzEyNjctMHgyMWM5KTtnX3pVZmlTbXNfQ3VyU21zUGFyYS5vdXRkYXRlX2RlbGV0ZV9vbj0oMHg0ZjUrNjYzMy0weDFlZGUpCi07c3RybmNweShnX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlLCJceDZlXHg3NiIsc2l6ZW9mKAotZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSktKDB4MzE1KzE0Ny0weDNhNykpO30KLSNpZiAoMHgzZjUrNjYtMHg0MzcpDQorPSgweGI3MSs0NTQwLTB4MWQyZCk7Z196VWZpU21zX0N1clNtc1BhcmEub3V0ZGF0ZV9kZWxldGVfb249KDB4OWErOTQwLTB4NDQ2KTsKK3N0cm5jcHkoZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSwiXHg2ZVx4NzYiLHNpemVvZigKK2dfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUpLSgweGRkYysxNTMwLTB4MTNkNSkpO30KKyNpZiAoMHgxNjIwKzM0MjctMHgyMzgzKQ0KIFRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19TZXRQYXJhbWV0ZXJzKFRfelVmaVNtc19DbWRNc2dCdWZmKnB0U21zQnVmZmVyKXsKIFRfelVmaVNtc19QYXJhSW5mbypwdFNtc1BhcmFtZXRlcj1OVUxMO1RfelVmaVNtc19QYXJhSW5mbyB0TmV3U21zUGFyYW1ldGVyPXsKLSgweDEzYjYrODEyLTB4MTZlMil9O2lmKE5VTEw9PXB0U21zQnVmZmVyKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fXB0U21zUGFyYW1ldGVyCi09KFRfelVmaVNtc19QYXJhSW5mbyopKCYocHRTbXNCdWZmZXItPmNtZF9pbmZvLnNldF9zbXNfcGFyYSkpO21lbWNweSgodm9pZCopJgotdE5ld1Ntc1BhcmFtZXRlciwodm9pZCopcHRTbXNQYXJhbWV0ZXIsc2l6ZW9mKFRfelVmaVNtc19QYXJhSW5mbykpOworKDB4MTg0YSsyODQyLTB4MjM2NCl9O2lmKE5VTEw9PXB0U21zQnVmZmVyKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fQorcHRTbXNQYXJhbWV0ZXI9KFRfelVmaVNtc19QYXJhSW5mbyopKCYocHRTbXNCdWZmZXItPmNtZF9pbmZvLnNldF9zbXNfcGFyYSkpOworbWVtY3B5KCh2b2lkKikmdE5ld1Ntc1BhcmFtZXRlciwodm9pZCopcHRTbXNQYXJhbWV0ZXIsc2l6ZW9mKFRfelVmaVNtc19QYXJhSW5mbykKKyk7CiAjaWZuZGVmIFRTUF9NT0RFTA0KIGlmKChnX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmUhPXB0U21zUGFyYW1ldGVyLT5tZW1fc3RvcmUpKXtpZigKIFpVRklfU01TX0ZBSUxVUkU9PXpVZmlTbXNfU2V0Q3BtcyhwdFNtc1BhcmFtZXRlcikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg3M1x4NjVceDc0XHgyMFx4NjNceDY2XHg2N1x4MjBceDcyXHg2Zlx4NzVceDc0XHg2NVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIKICk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319CiAjZW5kaWYNCi1pZihzdHJsZW4ocHRTbXNQYXJhbWV0ZXItPnNjYSkhPSgweDIzMGQrNDAzLTB4MjRhMCkpe2lmKFpVRklfU01TX0ZBSUxVUkU9PQoraWYoc3RybGVuKHB0U21zUGFyYW1ldGVyLT5zY2EpIT0oMHgyZTQrNTczOS0weDE5NGYpKXtpZihaVUZJX1NNU19GQUlMVVJFPT0KIHpVZmlTbXNfU2V0Q3NjYShwdFNtc1BhcmFtZXRlcikpe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWlmKFpVRklfU01TX0ZBSUxVUkU9PQogelVmaVNtc19TZXREYlBhcmFtZXRlcnMocHRTbXNQYXJhbWV0ZXIpKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWVsc2V7c2NfY2ZnX3NldCgKICJceDczXHg2ZFx4NzNceDVmXHg2M1x4NjVceDZlXHg3NFx4NjVceDcyXHg1Zlx4NmVceDc1XHg2ZCIscHRTbXNQYXJhbWV0ZXItPnNjYSk7CiB9bWVtY3B5KCh2b2lkKikmZ196VWZpU21zX0N1clNtc1BhcmEsKHZvaWQqKSZ0TmV3U21zUGFyYW1ldGVyLHNpemVvZigKIFRfelVmaVNtc19QYXJhSW5mbykpO3JldHVybiBXTVNfQ01EX1NVQ0NFU1M7fQogI2VuZGlmDQotaW50IHpVZmlTbXNfTG9hZFNtc1BhcmEoKXtpbnQgY291bnQ9KDB4MzA4KzE3ODMtMHg5ZmYpO2lmKFpVRklfU1VDQyE9CitpbnQgelVmaVNtc19Mb2FkU21zUGFyYSgpe2ludCBjb3VudD0oMHgzYzArMjE5Ni0weGM1NCk7aWYoWlVGSV9TVUNDIT0KIHpVZmlTbXNfSXNEYkVtcHR5KFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFLCZjb3VudCkpe3JldHVybiBaVUZJX0ZBSUw7fWlmKGNvdW50Ci09PSgweDEzODIrMzczMC0weDIyMTQpKXt6VWZpU21zX0dldERlZmF1bHRDZmdQYXJhKCk7aWYoKDB4Yzg2KzQzMDctMHgxZDU5KSE9Cis9PSgweGYwNis1ODk5LTB4MjYxMSkpe3pVZmlTbXNfR2V0RGVmYXVsdENmZ1BhcmEoKTtpZigoMHgyNjUrOTExMC0weDI1ZmIpIT0KIHpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKCZnX3pVZmlTbXNfQ3VyU21zUGFyYSkpe3JldHVybiBaVUZJX0ZBSUw7fX1lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDY4XHg2MVx4NzZceDY1XHgyMFx4NjRceDY1XHg2Nlx4NjFceDc1XHg2Y1x4NzRceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDY1XHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NjRceDYxXHg3NFx4NjFceDYyXHg2MVx4NzNceDY1XHgyZSIgIlxuIgogKTtpZihaVUZJX1NVQ0MhPXpVZmlTbXNfR2V0RGJQYXJhbWV0ZXJzKCkpe3JldHVybiBaVUZJX0ZBSUw7fWlmKAogV01TX1NUT1JBR0VfVFlQRV9OVl9WMDEhPWdfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZSYmCiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEhPWdfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZSl7elVmaVNtc19HZXREZWZhdWx0UGFyYQotKCk7aWYoKDB4OTcxKzI0OTAtMHgxMzJiKSE9elVmaVNtc19TZXREYlBhcmFtZXRlcnMoJmdfelVmaVNtc19DdXJTbXNQYXJhKSl7CisoKTtpZigoMHgxMWJiKzU0OS0weDEzZTApIT16VWZpU21zX1NldERiUGFyYW1ldGVycygmZ196VWZpU21zX0N1clNtc1BhcmEpKXsKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2NVx4NzRceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDY1XHg3NFx4NjVceDcyXHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg3M1x4MjBceDMyXHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO319fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NGNceDZmXHg2MVx4NjRceDUzXHg2ZFx4NzNceDUwXHg2MVx4NzJceDYxXHgyMFx4NzNceDc1XHg2M1x4NjNceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChUX3pVZmlTbXNfTWVtb3J5VHlwZSBtZW1fc3RvcmUpewotaW50IHRvdGFsX2NvdW50PSgweDIyNSs4MjUxLTB4MjI2MCk7aWYoKFpURV9XTVNfTUVNT1JZX1NJTT09bWVtX3N0b3JlKXx8KAoraW50IHRvdGFsX2NvdW50PSgweDM0Mis1NDI2LTB4MTg3NCk7aWYoKFpURV9XTVNfTUVNT1JZX1NJTT09bWVtX3N0b3JlKXx8KAogWlRFX1dNU19NRU1PUllfTUFYPT1tZW1fc3RvcmUpKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0VG90YWxDb3VudCgKIFpURV9XTVNfREJfU0lNX1RBQkxFLCZ0b3RhbF9jb3VudCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2ZFx4NzNceDNhXHg2N1x4NjVceDc0XHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiICJcbiIKQEAgLTE3Myw1NCArMTc1LDU1IEBACiAsdG90YWxfY291bnQpO2lmKHRvdGFsX2NvdW50Pj0oaW50KWdfelVmaVNtc19TdG9yZUNhcGFibGl0eVsKIFdNU19TVE9SQUdFX1RZUEVfTlZfVjAxXSl7Z196VWZpU21zX01lbUZ1bGxGbGFnW1dNU19TVE9SQUdFX1RZUEVfTlZfVjAxXT1UUlVFO30KIGVsc2V7Z196VWZpU21zX01lbUZ1bGxGbGFnW1dNU19TVE9SQUdFX1RZUEVfTlZfVjAxXT1GQUxTRTt9fXJldHVybiBaVUZJX1NVQ0M7fQotaW50IHpVZmlTbXNfU2V0U3RvcmVQYXJhKGNoYXIqbWVtX3N0b3JlKXtpZigoMHg1OGMrNDg5NS0weDE4YWIpPT1zdHJjbXAoCi1tZW1fc3RvcmUsIlx4NTNceDRkIikpe2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZT0odW5zaWduZWQgaW50KQoraW50IHpVZmlTbXNfU2V0U3RvcmVQYXJhKGNoYXIqbWVtX3N0b3JlKXtpZigoMHgxYjNmKzg5LTB4MWI5OCk9PXN0cmNtcChtZW1fc3RvcmUKKywiXHg1M1x4NGQiKSl7Z196VWZpU21zX0N1clNtc1BhcmEubWVtX3N0b3JlPSh1bnNpZ25lZCBpbnQpCiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE7KHZvaWQpc2NfY2ZnX3NldChOVl9TTVNfTE9DQVRJT05fU0VULCJceDMwIik7fWVsc2UgaWYoCi0oMHgxNWE4KzU2My0weDE3ZGIpPT1zdHJjbXAobWVtX3N0b3JlLCJceDRkXHg0NSIpKXtnX3pVZmlTbXNfQ3VyU21zUGFyYS4KLW1lbV9zdG9yZT0odW5zaWduZWQgaW50KVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxOyh2b2lkKXNjX2NmZ19zZXQoCi1OVl9TTVNfTE9DQVRJT05fU0VULCJceDMxIik7fWVsc2UgaWYoKDB4N2JmKzQ2NTMtMHgxOWVjKT09c3RyY21wKG1lbV9zdG9yZSwKLSJceDUzXHg1MiIpKXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmU9KHVuc2lnbmVkIGludCkoMHg4MTErMTY1LTB4OGI0KTsoCi12b2lkKXNjX2NmZ19zZXQoTlZfU01TX0xPQ0FUSU9OX1NFVCwiXHgzMiIpO31lbHNle2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZQotPSh1bnNpZ25lZCBpbnQpV01TX1NUT1JBR0VfVFlQRV9OT05FX1YwMTsodm9pZClzY19jZmdfc2V0KE5WX1NNU19MT0NBVElPTl9TRVQsCisoMHhlMzYrNTI5LTB4MTA0Nyk9PXN0cmNtcChtZW1fc3RvcmUsIlx4NGRceDQ1Iikpe2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZQorPSh1bnNpZ25lZCBpbnQpV01TX1NUT1JBR0VfVFlQRV9OVl9WMDE7KHZvaWQpc2NfY2ZnX3NldChOVl9TTVNfTE9DQVRJT05fU0VULAorIlx4MzEiKTt9ZWxzZSBpZigoMHhjYzQrNDIyOS0weDFkNDkpPT1zdHJjbXAobWVtX3N0b3JlLCJceDUzXHg1MiIpKXsKK2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZT0odW5zaWduZWQgaW50KSgweGJhYisxMzEwLTB4MTBjNyk7KHZvaWQpCitzY19jZmdfc2V0KE5WX1NNU19MT0NBVElPTl9TRVQsIlx4MzIiKTt9ZWxzZXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmU9KAordW5zaWduZWQgaW50KVdNU19TVE9SQUdFX1RZUEVfTk9ORV9WMDE7KHZvaWQpc2NfY2ZnX3NldChOVl9TTVNfTE9DQVRJT05fU0VULAogIlx4MmRceDMxIik7fWlmKFpVRklfRkFJTD09elVmaVNtc19TZXREYlBhcmFtZXRlcnMoJmdfelVmaVNtc19DdXJTbXNQYXJhKSl7CiBhdF9wcmludChMT0dfRVJSLAogIlx4NjNceDYxXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzBceDYxXHg3Mlx4NjFceDZkXHg2NVx4NzRceDY1XHg3Mlx4NzNceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX0ZBSUw7fXJldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX1NldFNjYVBhcmEoY2hhcipzY2Epe3N0cm5jcHkoCi1nX3pVZmlTbXNfQ3VyU21zUGFyYS5zY2Esc2NhLHNpemVvZihnX3pVZmlTbXNfQ3VyU21zUGFyYS5zY2EpLSgweDk5MSsxODctMHhhNGIpKQotO2lmKFpVRklfRkFJTD09elVmaVNtc19TZXREYlBhcmFtZXRlcnMoJmdfelVmaVNtc19DdXJTbXNQYXJhKSl7YXRfcHJpbnQoTE9HX0VSUiwKK2dfelVmaVNtc19DdXJTbXNQYXJhLnNjYSxzY2Esc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSktCisoMHgzMGIrMzc4My0weDExZDEpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKCZnX3pVZmlTbXNfQ3VyU21zUGFyYQorKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDYzXHg2MVx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NzNceDY1XHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO31yZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfU2V0R2xvYmFsRGNzTGFuZyh1bnNpZ25lZCAKLWNoYXIgY0Rjcyl7aWYoY0Rjcz09KDB4N2IxKzE0NTAtMHhkNWEpKXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlCi09Tk9UX0RFRklORV9MQU5HVUFHRTt9ZWxzZSBpZihjRGNzPT0oMHhiMDUrMTY2OC0weDExODcpKXtnX3pVZmlTbXNfRGNzPURDU19VU0M7Ci1nX3pVZmlTbXNfTGFuZ3VhZ2U9Tk9UX0RFRklORV9MQU5HVUFHRTt9ZWxzZSBpZihjRGNzPT0oMHg5YjYrNjQzNC0weDIyZDUpKXsKLWdfelVmaVNtc19EY3M9RENTX0FTQztnX3pVZmlTbXNfTGFuZ3VhZ2U9RENTX0dTTTdfU1BBTklTSDt9ZWxzZSBpZihjRGNzPT0KLSgweDEyYzMrNDYzOS0weDI0ZGQpKXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlPQorY2hhciBjRGNzKXtpZihjRGNzPT0oMHg3N2YrNjg0OS0weDIyM2YpKXtnX3pVZmlTbXNfRGNzPURDU19BU0M7CitnX3pVZmlTbXNfTGFuZ3VhZ2U9Tk9UX0RFRklORV9MQU5HVUFHRTt9ZWxzZSBpZihjRGNzPT0oMHg1NmQrMTA4Mi0weDlhNSkpeworZ196VWZpU21zX0Rjcz1EQ1NfVVNDO2dfelVmaVNtc19MYW5ndWFnZT1OT1RfREVGSU5FX0xBTkdVQUdFO31lbHNlIGlmKGNEY3M9PQorKDB4MTVmMisyNTQwLTB4MWZkYikpe2dfelVmaVNtc19EY3M9RENTX0FTQztnX3pVZmlTbXNfTGFuZ3VhZ2U9RENTX0dTTTdfU1BBTklTSDsKK31lbHNlIGlmKGNEY3M9PSgweDRjKzE3MDUtMHg2ZjApKXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlPQogRENTX0dTTTdfUE9SVFVHVUVTRTt9ZWxzZXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlPQogRENTX0dTTTdfREVGQVVMVDt9fWludCB6VWZpU21zX0ZpbGxHcm91cFNtcyhUX3pVZmlTbXNfU2VuZFJlcSpwdFNlbmRNc2csCiBUX3pVZmlTbXNfR3JvdXBJbmZvKnB0R3JvdXBTbXMpe2ludCBpO2lmKE5VTEw9PXB0U2VuZE1zZ3x8TlVMTD09cHRHcm91cFNtc3x8CiBaVEVfV01TX1NFTkRfTlVNX01BWDxwdFNlbmRNc2ctPnJlY2VpdmVyX2NvdW50KXtyZXR1cm4gWlVGSV9GQUlMO31wdEdyb3VwU21zLT4KLXRvdGFsX3JlY2VpdmVyPXB0U2VuZE1zZy0+cmVjZWl2ZXJfY291bnQ7Zm9yKGk9KDB4MTUwKzgzMDYtMHgyMWMyKTtpPHB0R3JvdXBTbXMKLS0+dG90YWxfcmVjZWl2ZXI7aSsrKXtzdHJuY3B5KHB0R3JvdXBTbXMtPnJlY2VpdmVyc1tpXSxwdFNlbmRNc2ctPmRlc3RfbnVtW2ldLAordG90YWxfcmVjZWl2ZXI9cHRTZW5kTXNnLT5yZWNlaXZlcl9jb3VudDtmb3IoaT0oMHgzMDUrMjkxMy0weGU2Nik7aTxwdEdyb3VwU21zLT4KK3RvdGFsX3JlY2VpdmVyO2krKyl7c3RybmNweShwdEdyb3VwU21zLT5yZWNlaXZlcnNbaV0scHRTZW5kTXNnLT5kZXN0X251bVtpXSwKIFpURV9XTVNfQUREUkVTU19MRU5fTUFYKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ2XHg2OVx4NmNceDZjXHg0N1x4NzJceDZmXHg3NVx4NzBceDUzXHg2ZFx4NzNceDIwXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NzJceDczXHg1Ylx4MjVceDY0XHg1ZFx4M2RceDI1XHg3MyIgIlxuIgotLGkscHRHcm91cFNtcy0+cmVjZWl2ZXJzW2ldKTt9cHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcj0oMHg2MmMrMjAxMi0weGUwOCk7CissaSxwdEdyb3VwU21zLT5yZWNlaXZlcnNbaV0pO31wdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyPSgweDE1YTArMjg2Ni0weDIwZDIpOwogcmV0dXJuIFpVRklfU1VDQzt9aW50IHpVZmlTbXNfRmlsbENvbmNhdFNtcyhUX3pVZmlTbXNfU2VuZFJlcSpwU2VuZFNyY01zZywKLVRfelVmaVNtc19Db25jYXRJbmZvKnBEZXN0Q29uY2F0TXNnKXtpbnQgaVRvdGFsTGVuPSgweDE1MjIrMjE0LTB4MTVmOCk7aW50IAotaVVuaXRsZW49KDB4MTI4YysxNTMwLTB4MTg4Nik7aW50IGlTZWdObz0oMHhkYTIrMTkwOC0weDE1MTYpO3Vuc2lnbmVkIGNoYXIqCitUX3pVZmlTbXNfQ29uY2F0SW5mbypwRGVzdENvbmNhdE1zZyl7aW50IGlUb3RhbExlbj0oMHhhZDMrMjE2Mi0weDEzNDUpO2ludCAKK2lVbml0bGVuPSgweDFiZjErMjU3Mi0weDI1ZmQpO2ludCBpU2VnTm89KDB4M2M4KzcyNDAtMHgyMDEwKTt1bnNpZ25lZCBjaGFyKgogcFNtc0NvbnZlcnRlZD1OVUxMO3Vuc2lnbmVkIGNoYXIgYWNDb252ZXJ0Q29udGVudFsKIFpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgqWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCoKLSgweDEwMjYrNTQ3Ny0weDI1ODcpKygweDIxNTErODU2LTB4MjRhNSldPXsoMHgxOTY0KzIzOTYtMHgyMmMwKX07dW5zaWduZWQgY2hhciAKKygweDE2NjQrMzg4MS0weDI1ODkpKygweGYzOSszOTkzLTB4MWVjZSldPXsoMHg1NGErMTc2Mi0weGMyYyl9O3Vuc2lnbmVkIGNoYXIgCiBhY1RtcENvbnRlbnRbWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKgotKDB4M2NkKzczNDUtMHgyMDdhKSsoMHg4NTArMjc4OS0weDEzMzEpXT17KDB4MjE5KzczNzEtMHgxZWU0KX07aW50IGlUaW1lWm9uZT0KLSgweDRmZCs3MjI2LTB4MjEzNyk7aW50IHRtcF9pPSgweDIyMDgrMjg0LTB4MjMyNCk7aWYoTlVMTD09cFNlbmRTcmNNc2d8fE5VTEw9PQotcERlc3RDb25jYXRNc2cpe3JldHVybi0oMHgxOTU2KzMzNTAtMHgyNjZiKTt9aVRvdGFsTGVuPXBTZW5kU3JjTXNnLT5tc2dfbGVuO2lmKAorKDB4MWYwZisxNjI4LTB4MjU2NykrKDB4ODc0Kzc1MDQtMHgyNWMwKV09eygweGQxOSs0NTU5LTB4MWVlOCl9O2ludCBpVGltZVpvbmU9CisoMHgyNDFiKzYyOS0weDI2OTApO2ludCB0bXBfaT0oMHgxZDkwKzE0MjEtMHgyMzFkKTtpZihOVUxMPT1wU2VuZFNyY01zZ3x8TlVMTD09CitwRGVzdENvbmNhdE1zZyl7cmV0dXJuLSgweDEwZmYrNDcwOC0weDIzNjIpO31pVG90YWxMZW49cFNlbmRTcmNNc2ctPm1zZ19sZW47aWYoCiBaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U21zQ29udGVudChhY1RtcENvbnRlbnQsc2l6ZW9mKGFjVG1wQ29udGVudCkpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ3XHg2NVx4NzRceDUzXHg2ZFx4NzNceDQzXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHgyMFx4NDZceDYxXHg2OVx4NmNceDJlIiAiXG4iCi0pO3JldHVybi0oMHg0ZDgrMjUyOS0weGViOCk7fXByaW50ZigKKyk7cmV0dXJuLSgweGE1YisxNjg4LTB4MTBmMik7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDdceDY1XHg3NFx4NTNceDZkXHg3M1x4NDNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDNhXHgyNVx4NzNceDJlIiAiXG4iCiAsYWNUbXBDb250ZW50KTsodm9pZClTdHJpbmcyQnl0ZXMoYWNUbXBDb250ZW50LGFjQ29udmVydENvbnRlbnQsKGludClzdHJsZW4oCi1hY1RtcENvbnRlbnQpKTttZW1zZXQoYWNUbXBDb250ZW50LCgweDdjOCs2Mjg1LTB4MjA1NSksc2l6ZW9mKGFjVG1wQ29udGVudCkpO2lmKAotRENTX1VTQz09Z196VWZpU21zX0Rjcyl7cFNtc0NvbnZlcnRlZD1hY0NvbnZlcnRDb250ZW50O31lbHNle2lmKAorYWNUbXBDb250ZW50KSk7bWVtc2V0KGFjVG1wQ29udGVudCwoMHgxOTIxKzEwNDQtMHgxZDM1KSxzaXplb2YoYWNUbXBDb250ZW50KSk7aWYKKyhEQ1NfVVNDPT1nX3pVZmlTbXNfRGNzKXtwU21zQ29udmVydGVkPWFjQ29udmVydENvbnRlbnQ7fWVsc2V7aWYoCiBOT1RfREVGSU5FX0xBTkdVQUdFPT1nX3pVZmlTbXNfTGFuZ3VhZ2Upe2lUb3RhbExlbj0KIHpVZmlTbXNfQ29udmVydEFzY2lpVG9Hc21EZWZhdWx0KGFjQ29udmVydENvbnRlbnQsYWNUbXBDb250ZW50LHBTZW5kU3JjTXNnLT4KIG1zZ19sZW4pO31lbHNlIGlmKERDU19HU003X1NQQU5JU0g9PWdfelVmaVNtc19MYW5ndWFnZSl7aVRvdGFsTGVuPQpAQCAtMjI5LDU1ICsyMzIsNTYgQEAKIHpVZmlTbXNfQ29udmVydFVjczJUb1BvcnR1Z3Vlc2UoYWNDb252ZXJ0Q29udGVudCxhY1RtcENvbnRlbnQscFNlbmRTcmNNc2ctPgogbXNnX2xlbik7fWVsc2V7aVRvdGFsTGVuPXpVZmlTbXNfQ29udmVydFVjczJUb0dzbURlZmF1bHQoYWNDb252ZXJ0Q29udGVudCwKIGFjVG1wQ29udGVudCxwU2VuZFNyY01zZy0+bXNnX2xlbik7fXBTZW5kU3JjTXNnLT5tc2dfbGVuPWlUb3RhbExlbjtwU21zQ29udmVydGVkCi09YWNUbXBDb250ZW50O31pZihpVG90YWxMZW4+KHNpemVvZihhY0NvbnZlcnRDb250ZW50KS0oMHg5ZGMrMzY0MC0weDE4MTMpKSl7Ci1pVG90YWxMZW49c2l6ZW9mKGFjQ29udmVydENvbnRlbnQpLSgweDg0NCsxNjUtMHg4ZTgpO31wRGVzdENvbmNhdE1zZy0+c21zX2xlbj0KLWlUb3RhbExlbjtpZigoaVRvdGFsTGVuPlpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgpfHwoZ196VWZpU21zX0xhbmd1YWdlPT0KLURDU19QT1JUVUdVRVNFJiZpVG90YWxMZW4+KDB4NGY0KzQ3OTMtMHgxNzEyKSl8fCgoZ196VWZpU21zX0Rjcz09RENTX1VTQykmJgorPWFjVG1wQ29udGVudDt9aWYoaVRvdGFsTGVuPihzaXplb2YoYWNDb252ZXJ0Q29udGVudCktKDB4MWNhYisyMzU2LTB4MjVkZSkpKXsKK2lUb3RhbExlbj1zaXplb2YoYWNDb252ZXJ0Q29udGVudCktKDB4MTkyMysyMzc3LTB4MjI2Yik7fXBEZXN0Q29uY2F0TXNnLT5zbXNfbGVuCis9aVRvdGFsTGVuO2lmKChpVG90YWxMZW4+WlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCl8fChnX3pVZmlTbXNfTGFuZ3VhZ2U9PQorRENTX1BPUlRVR1VFU0UmJmlUb3RhbExlbj4oMHg1MDUrNDYyMC0weDE2NzYpKXx8KChnX3pVZmlTbXNfRGNzPT1EQ1NfVVNDKSYmCiBpVG90YWxMZW4+WlRFX1dNU19TTVNfTVNHX0NIQVJfTUFYKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4M2RceDNkXHgzZFx4M2RceDNkXHg3M1x4NjVceDZlXHg2NFx4MjBceDYzXHg2Zlx4NmVceDc0XHg2MVx4NjNceDc0XHgyMFx4NzNceDZkXHg3M1x4MmUiICJcbiIKICk7aWYoZ196VWZpU21zX0Rjcz09RENTX1VTQyl7aVVuaXRsZW49WlRFX1dNU19TTVNfQ09OQ0FUX0VMRU1OVF9VQ1NfTEVOKgotKDB4ZmUzKzI5MDMtMHgxYjM4KTt9ZWxzZXtpZihnX3pVZmlTbXNfTGFuZ3VhZ2U9PU5PVF9ERUZJTkVfTEFOR1VBR0V8fAorKDB4MjRkYys1MzctMHgyNmYzKTt9ZWxzZXtpZihnX3pVZmlTbXNfTGFuZ3VhZ2U9PU5PVF9ERUZJTkVfTEFOR1VBR0V8fAogZ196VWZpU21zX0xhbmd1YWdlPT1EQ1NfR1NNN19ERUZBVUxUKXtpVW5pdGxlbj1aVEVfV01TX1NNU19DT05DQVRfRUxFTU5UX0FTQ19MRU4KIDt9ZWxzZXtpVW5pdGxlbj1aVEVfV01TX1NNU19DT05DQVRfRUxFTU5UX0xBTkdVQUdFX0xFTjt9fXdoaWxlKGlUb3RhbExlbj4KLSgweDEyODUrNTk5LTB4MTRkYykmJmlTZWdObzxaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXttZW1jcHkocERlc3RDb25jYXRNc2cKLS0+bXNnX2NvbnRlbnRzW2lTZWdOb10scFNtc0NvbnZlcnRlZCxpVW5pdGxlbik7aVRvdGFsTGVuLT1pVW5pdGxlbjtwU21zQ29udmVydGVkCi0rPWlVbml0bGVuO2lTZWdObysrO31wRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnPWlTZWdObzt9ZWxzZXtpVW5pdGxlbj1pVG90YWxMZW47Ci1wRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnPSgweDJlMyszNTczLTB4MTBkNyk7bWVtY3B5KHBEZXN0Q29uY2F0TXNnLT4KLW1zZ19jb250ZW50c1soMHgxZWViKzEzMTgtMHgyNDExKV0scFNtc0NvbnZlcnRlZCxpVG90YWxMZW4pO3ByaW50ZigKKygweGU0YSsxOS0weGU1ZCkmJmlTZWdObzxaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXttZW1jcHkocERlc3RDb25jYXRNc2ctPgorbXNnX2NvbnRlbnRzW2lTZWdOb10scFNtc0NvbnZlcnRlZCxpVW5pdGxlbik7aVRvdGFsTGVuLT1pVW5pdGxlbjtwU21zQ29udmVydGVkKz0KK2lVbml0bGVuO2lTZWdObysrO31wRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnPWlTZWdObzt9ZWxzZXtpVW5pdGxlbj1pVG90YWxMZW47CitwRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnPSgweDgxNSszMDE0LTB4MTNkYSk7bWVtY3B5KHBEZXN0Q29uY2F0TXNnLT4KK21zZ19jb250ZW50c1soMHgxMTlmKzI0MjMtMHgxYjE2KV0scFNtc0NvbnZlcnRlZCxpVG90YWxMZW4pO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDNkXHgzZFx4M2RceDNkXHgzZFx4NzNceDY1XHg2ZVx4NjRceDIwXHg2ZVx4NmZceDcyXHg2ZFx4NjFceDZjXHgyMFx4NzNceDZkXHg3M1x4MmVceDZjXHg2NVx4NmVceDNhXHgyNVx4NjRceDJlXHg2M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4M2FceDI1XHg3M1x4MmUiICJcbiIKLSxpVW5pdGxlbixwRGVzdENvbmNhdE1zZy0+bXNnX2NvbnRlbnRzWygweDEwODMrMjgwNS0weDFiNzgpXSk7fQorLGlVbml0bGVuLHBEZXN0Q29uY2F0TXNnLT5tc2dfY29udGVudHNbKDB4Y2U4KzEzOTYtMHgxMjVjKV0pO30KIGdfelVmaVNtc19Db25jYXRUb3RhbE51bT1wRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnO3BEZXN0Q29uY2F0TXNnLT4KLWN1cnJlbnRfc2VuZGluZz0oMHg3MDYrNzk2MS0weDI2MWYpO21lbWNweSgmKHBEZXN0Q29uY2F0TXNnLT5kYXRlKSwmKHBTZW5kU3JjTXNnCi0tPmRhdGUpLHNpemVvZihUX3pVZmlTbXNfRGF0ZSkpO3RtcF9pPWF0b2kocERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUpO2lmKAotdG1wX2k8SU5UX01JTisoMHgxNzcrMTY3NC0weDgwMCl8fHRtcF9pPklOVF9NQVgtKDB4MzliKzgyMjEtMHgyM2I3KSl7cHJpbnRmKAorY3VycmVudF9zZW5kaW5nPSgweDE5OWErMjE3Ny0weDIyMWIpO21lbWNweSgmKHBEZXN0Q29uY2F0TXNnLT5kYXRlKSwmKAorcFNlbmRTcmNNc2ctPmRhdGUpLHNpemVvZihUX3pVZmlTbXNfRGF0ZSkpO3RtcF9pPWF0b2kocERlc3RDb25jYXRNc2ctPmRhdGUuCit0aW1lem9uZSk7aWYodG1wX2k8SU5UX01JTisoMHgxNmQ5KzIwODQtMHgxZWZjKXx8dG1wX2k+SU5UX01BWC0KKygweDc0OSs2MDI4LTB4MWVkNCkpe3ByaW50ZigKICJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NzBceDQ0XHg2NVx4NzNceDc0XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg0ZFx4NzNceDY3XHgyMFx4NzRceDY5XHg2ZFx4NjVceDdhXHg2Zlx4NmVceDY1XHgzYVx4MjVceDY0XHgyZSIgIlxuIgotLHRtcF9pKTtyZXR1cm4gWlVGSV9GQUlMO31pVGltZVpvbmU9dG1wX2kqKDB4OTNiKzcwMTgtMHgyNGExKTttZW1zZXQoCi1wRGVzdENvbmNhdE1zZy0+ZGF0ZS50aW1lem9uZSwoMHgxZTIrNzkwNS0weDIwYzMpLHNpemVvZihwRGVzdENvbmNhdE1zZy0+ZGF0ZS4KLXRpbWV6b25lKSk7aWYoaVRpbWVab25lPigweDdjMCsxOTI2LTB4ZjQ2KSl7c25wcmludGYocERlc3RDb25jYXRNc2ctPmRhdGUuCissdG1wX2kpO3JldHVybiBaVUZJX0ZBSUw7fWlUaW1lWm9uZT10bXBfaSooMHgyMTIrNDI1OS0weDEyYjEpO21lbXNldCgKK3BEZXN0Q29uY2F0TXNnLT5kYXRlLnRpbWV6b25lLCgweGQzZCs2MjEyLTB4MjU4MSksc2l6ZW9mKHBEZXN0Q29uY2F0TXNnLT5kYXRlLgordGltZXpvbmUpKTtpZihpVGltZVpvbmU+KDB4MWUyMis2LTB4MWUyOCkpe3NucHJpbnRmKHBEZXN0Q29uY2F0TXNnLT5kYXRlLgogdGltZXpvbmUsc2l6ZW9mKHBEZXN0Q29uY2F0TXNnLT5kYXRlLnRpbWV6b25lKSwiXHgyYlx4MjVceDY0IixpVGltZVpvbmUpO31lbHNlewogc25wcmludGYocERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUsc2l6ZW9mKHBEZXN0Q29uY2F0TXNnLT5kYXRlLnRpbWV6b25lKSwKICJceDI1XHg2NCIsaVRpbWVab25lKTt9cFNtc0NvbnZlcnRlZD1OVUxMO3JldHVybiBpVW5pdGxlbjt9dm9pZCAKIHpVZmlTbXNfRmlsbERhdGVoZWFkZXIoVF96VWZpU21zX1N1Ym1pdFRwZHUqcHRTdWJtaXQsVF96VWZpU21zX0NvbmNhdEluZm8qCiBwdENvbmNhdFNtcyxUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhKXt1bnNpZ25lZCBjaGFyIGlIZWFkZXJOdW09Ci0oMHgxMjNhKzM5NDItMHgyMWEwKTtpSGVhZGVyTnVtPXB0U3VibWl0LT51c2VyX2RhdGEubnVtX2hlYWRlcnM7cHRTdWJtaXQtPgotdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7aWYoKDB4MTZhMSsyMDM4LTB4MWU5Nyk9PXB0Q29uY2F0U21zLT4KKygweDMxZis5MzEtMHg2YzIpO2lIZWFkZXJOdW09cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycztwdFN1Ym1pdC0+Cit1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9VFJVRTtpZigoMHgxNjA0Kzg1OC0weDE5NWUpPT1wdENvbmNhdFNtcy0+CiBjdXJyZW50X3NlbmRpbmcpe2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2UrKzsodm9pZCl6VWZpU21zX1NldENvbmNhdE1heFJlZmVyKAogZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZSk7fXB0U3VibWl0LT51c2VyX2RhdGEuaGVhZGVyc1tpSGVhZGVyTnVtXS5oZWFkZXJfaWQKID1XTVNfVURIX0NPTkNBVF84O3B0U3VibWl0LT51c2VyX2RhdGEuaGVhZGVyc1tpSGVhZGVyTnVtXS51LmNvbmNhdF84LnRvdGFsX3NtPQogcHRDb25jYXRTbXMtPnRvdGFsX21zZztwdFN1Ym1pdC0+dXNlcl9kYXRhLmhlYWRlcnNbaUhlYWRlck51bV0udS5jb25jYXRfOC4KLXNlcV9udW09cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHhlNDArNjE2MC0weDI2NGYpO3B0U3VibWl0LT51c2VyX2RhdGEuCitzZXFfbnVtPXB0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmcrKDB4MzdhKzIyODgtMHhjNjkpO3B0U3VibWl0LT51c2VyX2RhdGEuCiBoZWFkZXJzW2lIZWFkZXJOdW1dLnUuY29uY2F0XzgubXNnX3JlZj1nX3pVZmlTbXNfQ29uY2F0U21zUmVmZXJlbmNlJQotKDB4M2IwKzE1MjYtMHg4YTcpO3B0U3VibWl0LT51c2VyX2RhdGEubnVtX2hlYWRlcnMrKztwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9Ci0oMHg5YTArNjIxOS0weDIxZWEpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4ZTIzKzIwMjUtMHgxNjBjKV09CisoMHgxNzBiKzM2Ni0weDE3N2EpO3B0U3VibWl0LT51c2VyX2RhdGEubnVtX2hlYWRlcnMrKztwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9CisoMHgxNGFjKzE4ODktMHgxYzBjKTtwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDNlNCs0MTUyLTB4MTQxYyldPQogZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZTt9aW50IHpVZmlTbXNfTWFrZUZpbmFsQ21nc0J1Zigpe1NNU19QQVJBTSB0U21zRGF0YTsKLWludCBpUGR1TGVuZ3RoPSgweDgxNCs2NjIwLTB4MjFmMCk7aW50IG5TbXNjTGVuZ3RoPSgweDE0MDErMTQ0NS0weDE5YTYpO2NoYXIgCi1UZW1wc3RyclsoMHg4YWMrNTQ3NC0weDFlMGMpXT17KDB4Njg5KzQ5NDMtMHgxOWQ4KX07Y2hhciBUZW1wX3Ntc192cFsKLSgweDNkZCs3MDAxLTB4MWYyZSldPXsoMHhjZmErNDQ0Ni0weDFlNTgpfTtjaGFyIHRtcEJ1ZjFbKDB4Y2RiKzI0NTktMHgxNjczKV09ewotKDB4ZmQ1KzQ0MDYtMHgyMTBiKX07Y2hhciB0bXBCdWYyWygweDFlYTQrNDU1LTB4MjA2NSldPXsoMHg1OSszMDIxLTB4YzI2KX07Q0hBUiAKLXNtc0NlbnRlclsoMHgxY2IrNTI0MC0weDE2MTEpXT17KDB4MTQyZCsyODU4LTB4MWY1Nyl9O21lbXNldCgmdFNtc0RhdGEsCi0oMHgxMGE1KzEwOTAtMHgxNGU3KSxzaXplb2YoU01TX1BBUkFNKSk7bWVtc2V0KCZnX3pVZmlTbXNfRmluYWxDbWdzQnVmLAotKDB4MTVhKzk1OTktMHgyNmQ5KSxzaXplb2YoVF96U21zX1NlbmRTbXNSZXEpKTtpZihDT0RFX0dTTTc9PQotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfRENTKXtpbnQgaT0oMHgxNWYzKzEzOTktMHgxYjZhKTtmb3IoO2k8CitpbnQgaVBkdUxlbmd0aD0oMHhlNmErMzIyNS0weDFiMDMpO2ludCBuU21zY0xlbmd0aD0oMHgxNjYzKzc3Ny0weDE5NmMpO2NoYXIgCitUZW1wc3RyclsoMHhjMzgrMzE4NC0weDE4YTYpXT17KDB4MTM1NCsyMDcwLTB4MWI2YSl9O2NoYXIgVGVtcF9zbXNfdnBbCisoMHgxMGU3KzIxMDItMHgxOTE1KV09eygweGFlNis2Mjg3LTB4MjM3NSl9O2NoYXIgdG1wQnVmMVsoMHg0OTkrMTM0NS0weDlkNyldPXsKKygweDI1OSsxMjYyLTB4NzQ3KX07Y2hhciB0bXBCdWYyWygweDE3YzcrMzQ5Ni0weDI1NjkpXT17KDB4NTE0KzQzMzctMHgxNjA1KX07CitDSEFSIHNtc0NlbnRlclsoMHg4MmYrMjE1OS0weDEwNmMpXT17KDB4NTY1Kzc0NzUtMHgyMjk4KX07bWVtc2V0KCZ0U21zRGF0YSwKKygweDE1MTUrMzU0NC0weDIyZWQpLHNpemVvZihTTVNfUEFSQU0pKTttZW1zZXQoJmdfelVmaVNtc19GaW5hbENtZ3NCdWYsCisoMHgyODQrOTE3Mi0weDI2NTgpLHNpemVvZihUX3pTbXNfU2VuZFNtc1JlcSkpO2lmKENPREVfR1NNNz09CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9EQ1Mpe2ludCBpPSgweDMwYSs2NDYwLTB4MWM0Nik7Zm9yKDtpPAogZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURMZW5ndGg7aSsrKXt0U21zRGF0YS5UUF9VRFtpXT1nX3pVZmlTbXNfU2VuZGluZ1Ntcy4KIFRQX1VEW2ldO310U21zRGF0YS5UUF9VRExlbmd0aD1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRExlbmd0aDt9ZWxzZXtzbnByaW50ZigKIHRTbXNEYXRhLlRQX1VELHNpemVvZih0U21zRGF0YS5UUF9VRCksIlx4MjVceDczIixnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRCk7CkBAIC0yODUsNDAgKzI4OSw0MCBAQAogc21zQ2VudGVyLHNpemVvZihzbXNDZW50ZXIpKTtzbnByaW50Zih0U21zRGF0YS5TQ0Esc2l6ZW9mKHRTbXNEYXRhLlNDQSksCiAiXHgyNVx4NzMiLHNtc0NlbnRlcik7c25wcmludGYodFNtc0RhdGEuVFBBLHNpemVvZih0U21zRGF0YS5UUEEpLCJceDI1XHg3MyIsCiBnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUEEpO3RTbXNEYXRhLlRQX0RDUz1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9EQ1M7c2NfY2ZnX2dldAotKE5WX1JFUE9SVF9FTkFCTEUsVGVtcHN0cnIsc2l6ZW9mKFRlbXBzdHJyKSk7aWYoKCgweGIwMSsyNzg2LTB4MTVlMyk9PXN0cm5jbXAoCi1UZW1wc3RyciwiXHgzMSIsKDB4ZmQxKzQyNTItMHgyMDZjKSkpJiYoZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc9PQotZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2ctKDB4MjhjKzYxNjktMHgxYWE0KSkpe3RTbXNEYXRhLlRQX1NSUj0KLSgweDE1NmMrMjYxMC0weDFmOWQpO31lbHNle3RTbXNEYXRhLlRQX1NSUj0oMHgyMDBmKzU0OC0weDIyMzMpO310U21zRGF0YS5UUF9VREhJCi09Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURISTt0U21zRGF0YS5UUF9WUD0oMHg2NmYrNjU2Mi0weDFmMTIpO3NjX2NmZ19nZXQoCi1OVl9TTVNfVlAsVGVtcF9zbXNfdnAsc2l6ZW9mKFRlbXBfc21zX3ZwKSk7aWYoKDB4MTdjNSszNzA4LTB4MjY0MSk9PXN0cm5jbXAoCi1UZW1wX3Ntc192cCwiXHg2Y1x4NmZceDZlXHg2N1x4NjVceDczXHg3NCIsKDB4MTdkOCszNTAxLTB4MjU3ZSkpKXt0U21zRGF0YS5UUF9WUAotPSgweDI5Zis5MTI5LTB4MjU0OSk7fWVsc2UgaWYoKDB4M2IrNTk3My0weDE3OTApPT1zdHJuY21wKFRlbXBfc21zX3ZwLAotIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiLCgweDQ0Mys3NTE0LTB4MjE5NikpKXt0U21zRGF0YS5UUF9WUD0KLSgweDE5OTUrMTUzOS0weDFlZjEpO31lbHNlIGlmKCgweDE0NGQrMjU5Ni0weDFlNzEpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAotIlx4NmZceDZlXHg2NVx4NzdceDY1XHg2NVx4NmIiLCgweDE4KzMwMDgtMHhiZDEpKSl7dFNtc0RhdGEuVFBfVlA9Ci0oMHg0MTQrNjY1Mi0weDFkNjMpO31lbHNlIGlmKCgweDExNTErMzMwLTB4MTI5Yik9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCi0iXHg3NFx4NzdceDY1XHg2Y1x4NzZceDY1XHg2OCIsKDB4MjUwKzcyNDUtMHgxZTk2KSkpe3RTbXNEYXRhLlRQX1ZQPQotKDB4N2IwKzMxMC0weDg1Nyk7fXRTbXNEYXRhLlRQX1BJRD0oMHhiZjMrMzQ5MC0weDE5OTUpOwotI2lmICgweGMxYiszMDI1LTB4MTdlYikKKyhOVl9SRVBPUlRfRU5BQkxFLFRlbXBzdHJyLHNpemVvZihUZW1wc3RycikpO2lmKCgoMHgxMzI4KzEzNC0weDEzYWUpPT1zdHJuY21wKAorVGVtcHN0cnIsIlx4MzEiLCgweDM3Zis3MTQ3LTB4MWY2OSkpKSYmKGdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nPT0KK2dfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnLSgweGU2OCs1MzQ2LTB4MjM0OSkpKXt0U21zRGF0YS5UUF9TUlI9CisoMHgzYjkrNjI4My0weDFjNDMpO31lbHNle3RTbXNEYXRhLlRQX1NSUj0oMHgxNjcrMzQ2NC0weGVlZik7fXRTbXNEYXRhLlRQX1VESEk9CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VREhJO3RTbXNEYXRhLlRQX1ZQPSgweGFkMysyMzItMHhhYmMpO3NjX2NmZ19nZXQoCitOVl9TTVNfVlAsVGVtcF9zbXNfdnAsc2l6ZW9mKFRlbXBfc21zX3ZwKSk7aWYoKDB4MWE2KzQzMjktMHgxMjhmKT09c3RybmNtcCgKK1RlbXBfc21zX3ZwLCJceDZjXHg2Zlx4NmVceDY3XHg2NVx4NzNceDc0IiwoMHgzZTMrOTg1LTB4N2I1KSkpe3RTbXNEYXRhLlRQX1ZQPQorKDB4MjE4KzcyOTYtMHgxZDk5KTt9ZWxzZSBpZigoMHhhYys1MTgzLTB4MTRlYik9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCisiXHg2Zlx4NmVceDY1XHg1Zlx4NjRceDYxXHg3OSIsKDB4MTM1ZCsxNzYxLTB4MWEzNykpKXt0U21zRGF0YS5UUF9WUD0KKygweDlmMSs2ODA5LTB4MjNlMyk7fWVsc2UgaWYoKDB4MTE1YyszOTc2LTB4MjBlNCk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCisiXHg2Zlx4NmVceDY1XHg3N1x4NjVceDY1XHg2YiIsKDB4MWNkYisxMDM2LTB4MjBlMCkpKXt0U21zRGF0YS5UUF9WUD0KKygweDk0ZCsxMjY3LTB4ZDkzKTt9ZWxzZSBpZigoMHhhNzIrMzg1Ny0weDE5ODMpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NzRceDc3XHg2NVx4NmNceDc2XHg2NVx4NjgiLCgweDExMGQrMTc1NS0weDE3ZTEpKSl7dFNtc0RhdGEuVFBfVlA9CisoMHg1MDQrMTgyNi0weGI5Nyk7fXRTbXNEYXRhLlRQX1BJRD0oMHgxNDQ5KzQzODAtMHgyNTY1KTsKKyNpZiAoMHgxNTFjKzEyNi0weDE1OTkpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NjJceDY1XHg2N1x4NjlceDZlXHgzYVx4MjVceDczIiAiXG4iLAogZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUpOwogI2VuZGlmICAgIAogaVBkdUxlbmd0aD1FbmNvZGVQZHVfU3VibWl0KCZ0U21zRGF0YSxnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk7Ci0jaWYgKDB4MTFjMiszMzEyLTB4MWViMSkKKyNpZiAoMHgxNGFiKzE5NzctMHgxYzYzKQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRkXHg2MVx4NmJceDY1XHg0Nlx4NjlceDZlXHg2MVx4NmNceDQzXHg2ZFx4NjdceDczXHg0Mlx4NzVceDY2XHgyMFx4NmRceDYxXHg2Ylx4NjVceDIwXHg3MFx4NjRceDc1XHgyMFx4NjRceDYxXHg3NFx4NjEiICJcbiIKICk7cHJpbnRmKCJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHgyNVx4NzMiICJcbiIsCiBnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk7CiAjZW5kaWYNCi0odm9pZClTdHJpbmcyQnl0ZXMoZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUsdG1wQnVmMSwoMHgxMjNjKzIwMjctMHgxYTI1KSk7Cisodm9pZClTdHJpbmcyQnl0ZXMoZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUsdG1wQnVmMSwoMHg2YWYrNjkyNC0weDIxYjkpKTsKIEJ5dGVzMlN0cmluZyh0bXBCdWYxLHRtcEJ1ZjIsc3RybGVuKHRtcEJ1ZjEpKTtuU21zY0xlbmd0aD1hdG9pKHRtcEJ1ZjIpO2lmKAotblNtc2NMZW5ndGg8KDB4MjlhKzIxMjMtMHhhZTUpfHxuU21zY0xlbmd0aD5JTlRfTUFYLSgweDEwNDIrNDAwNS0weDFmZTYpKXsKK25TbXNjTGVuZ3RoPCgweDY0NyszMjc2LTB4MTMxMyl8fG5TbXNjTGVuZ3RoPklOVF9NQVgtKDB4NmE3Kzc0MTctMHgyMzlmKSl7CiBhdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2ZVx4NTNceDZkXHg3M1x4NjNceDRjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sblNtc2NMZW5ndGgpO25TbXNjTGVuZ3RoPSgweDYxYys3MTI2LTB4MjFmMik7O31uU21zY0xlbmd0aCsrOwotZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5sZW5ndGg9aVBkdUxlbmd0aC8oMHhhZmErMjE4MS0weDEzN2QpLW5TbXNjTGVuZ3RoOwotI2lmICgweGExMCszMjgxLTB4MTZlMCkKKyxuU21zY0xlbmd0aCk7blNtc2NMZW5ndGg9KDB4MmU5KzgyNzYtMHgyMzNkKTs7fW5TbXNjTGVuZ3RoKys7CitnX3pVZmlTbXNfRmluYWxDbWdzQnVmLmxlbmd0aD1pUGR1TGVuZ3RoLygweDFmYTUrODk5LTB4MjMyNiktblNtc2NMZW5ndGg7CisjaWYgKDB4M2I4KzI5MzktMHhmMzIpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NGRceDYxXHg2Ylx4NjVceDQ2XHg2OVx4NmVceDYxXHg2Y1x4NDNceDZkXHg2N1x4NzNceDQyXHg3NVx4NjZceDIwXHg2ZFx4NjFceDZiXHg2NVx4MjBceDY1XHg2ZVx4NjRceDIwXHg3MFx4NjRceDc1XHgyMFx4NjRceDYxXHg3NFx4NjEiICJcbiIKICk7cHJpbnRmKApAQCAtMzI4LDUxICszMzIsNTEgQEAKIHJldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX0ZpbGxTdWJtaXRUcGR1KFRfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLAogVF96VWZpU21zX0dyb3VwSW5mbypwdEdyb3VwU21zLGludCBpU21zTGVuLFRfelVmaVNtc19TdWJtaXRUcGR1KnB0U3VibWl0LAogVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSl7aWYoTlVMTD09cHRTdWJtaXR8fE5VTEw9PXB0Q29uY2F0U21zfHxOVUxMPT0KLXB0R3JvdXBTbXN8fE5VTEw9PXB0RGJTYXZlRGF0YSl7cmV0dXJuLSgweDUzMis0MjQ5LTB4MTVjYSk7fXB0U3VibWl0LT4KK3B0R3JvdXBTbXN8fE5VTEw9PXB0RGJTYXZlRGF0YSl7cmV0dXJuLSgweDY3NyszODg1LTB4MTVhMyk7fXB0U3VibWl0LT4KIHJlamVjdF9kdXBsaWNhdGVzPUZBTFNFO3B0U3VibWl0LT5yZXBseV9wYXRoX3ByZXNlbnQ9RkFMU0U7cHRTdWJtaXQtPgogdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PUZBTFNFO3B0U3VibWl0LT5zdGF0dXNfcmVwb3J0X2VuYWJsZWQ9Ci1nX3pVZmlTbXNfQ3VyU21zUGFyYS5zdGF0dXNfcmVwb3J0X29uO2lmKCgoMHgxMmNiKzIxOTctMHgxYjVmKTxwdENvbmNhdFNtcy0+Ci10b3RhbF9tc2cpJiYocHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHg0ZCs4NDM4LTB4MjE0Mik8cHRDb25jYXRTbXMtPgotdG90YWxfbXNnKSl7cHRTdWJtaXQtPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0oMHhkNjErMTg0Mi0weDE0OTMpO31wdFN1Ym1pdC0+CitnX3pVZmlTbXNfQ3VyU21zUGFyYS5zdGF0dXNfcmVwb3J0X29uO2lmKCgoMHgxNmE5KzM0NzktMHgyNDNmKTxwdENvbmNhdFNtcy0+Cit0b3RhbF9tc2cpJiYocHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHg3MGQrNzM2NC0weDIzZDApPHB0Q29uY2F0U21zLT4KK3RvdGFsX21zZykpe3B0U3VibWl0LT5zdGF0dXNfcmVwb3J0X2VuYWJsZWQ9KDB4YjhmKzI3OS0weGNhNik7fXB0U3VibWl0LT4KIG1lc3NhZ2VfcmVmZXJlbmNlPWdfelVmaVNtc19Nc2dSZWZlcjtwdFN1Ym1pdC0+cGlkPVdNU19QSURfREVGQVVMVDtwdFN1Ym1pdC0+ZGNzCi0ubXNnX2NsYXNzPSh3bXNfbWVzc2FnZV9jbGFzc19lX3R5cGUpKDB4ZTA2KzYyOTgtMHgyNjljKTtwdFN1Ym1pdC0+ZGNzLgotaXNfY29tcHJlc3NlZD0oMHhkMzArMTM2Mi0weDEyODIpO3B0U3VibWl0LT5kY3MuYWxwaGFiZXQ9KGdfelVmaVNtc19EY3M9PURDU19BU0MKLSk/V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ6V01TX0dXX0FMUEhBQkVUX1VDUzI7cHRTdWJtaXQtPnZhbGlkaXR5LmZvcm1hdD0KLVdNU19HV19WQUxJRElUWV9SRUxBVElWRTt6VWZpU21zX0RlY29kZVJlbGF0aXZlVGltZShnX3pVZmlTbXNfQ3VyU21zUGFyYS4KKy5tc2dfY2xhc3M9KHdtc19tZXNzYWdlX2NsYXNzX2VfdHlwZSkoMHg3YTMrNjAxNi0weDFmMWYpO3B0U3VibWl0LT5kY3MuCitpc19jb21wcmVzc2VkPSgweDEyNTQrMzM1OC0weDFmNzIpO3B0U3VibWl0LT5kY3MuYWxwaGFiZXQ9KGdfelVmaVNtc19EY3M9PQorRENTX0FTQyk/V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ6V01TX0dXX0FMUEhBQkVUX1VDUzI7cHRTdWJtaXQtPnZhbGlkaXR5LgorZm9ybWF0PVdNU19HV19WQUxJRElUWV9SRUxBVElWRTt6VWZpU21zX0RlY29kZVJlbGF0aXZlVGltZShnX3pVZmlTbXNfQ3VyU21zUGFyYS4KIHRwX3ZhbGlkaXR5X3BlcmlvZCwmcHRTdWJtaXQtPnZhbGlkaXR5LnUudGltZSk7cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycz0KLSgweDExNTkrNDkwLTB4MTM0Myk7aWYocHRDb25jYXRTbXMtPnRvdGFsX21zZz4oMHhjNjIrMTQzMS0weDExZjgpKXsKKygweDEzYis2MTQtMHgzYTEpO2lmKHB0Q29uY2F0U21zLT50b3RhbF9tc2c+KDB4ZmUyKzU0OTgtMHgyNTViKSl7CiB6VWZpU21zX0ZpbGxEYXRlaGVhZGVyKHB0U3VibWl0LHB0Q29uY2F0U21zLHB0RGJTYXZlRGF0YSk7cHREYlNhdmVEYXRhLT4KLWNvbmNhdF9pbmZvWygweDFjOGMrMTc5My0weDIzOGIpXT1wdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nKwotKDB4MTNhYis5OTQtMHgxNzhjKTtwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDNiNisxNTI3LTB4OWFjKV09cHRDb25jYXRTbXMtPgotdG90YWxfbXNnO31pZihnX3pVZmlTbXNfTGFuZ3VhZ2U9PURDU19QT1JUVUdVRVNFKXtVSU5UOCBpPXB0U3VibWl0LT51c2VyX2RhdGEuCitjb25jYXRfaW5mb1soMHgxYmM2KzE5MTEtMHgyMzNiKV09cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysKKygweGJmZisyMTkwLTB4MTQ4Yyk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxOWUwKzEzMzYtMHgxZjE3KV09cHRDb25jYXRTbXMKKy0+dG90YWxfbXNnO31pZihnX3pVZmlTbXNfTGFuZ3VhZ2U9PURDU19QT1JUVUdVRVNFKXtVSU5UOCBpPXB0U3VibWl0LT51c2VyX2RhdGEuCiBudW1faGVhZGVycztwdFN1Ym1pdC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7cHRTdWJtaXQtPnVzZXJfZGF0YS5oZWFkZXJzWwogaV0uaGVhZGVyX2lkPVdNU19VREhfTkFUX0xBTkdfU1M7cHRTdWJtaXQtPnVzZXJfZGF0YS5oZWFkZXJzW3B0U3VibWl0LT51c2VyX2RhdGEKIC5udW1faGVhZGVyc10udS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZD1XTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U7cHRTdWJtaXQtPgogdXNlcl9kYXRhLm51bV9oZWFkZXJzKys7Z196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD1XTVNfVURIX05BVF9MQU5HX1NTO31wdFN1Ym1pdAogLT51c2VyX2RhdGEuc21fbGVuPWlTbXNMZW47bWVtY3B5KHB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YSxwdENvbmNhdFNtcy0+CiBtc2dfY29udGVudHNbcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZ10saVNtc0xlbik7aWYocHRHcm91cFNtcy0+cmVjZWl2ZXJzWwotcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4MWU3Kzg3MzctMHgyNDA4KV09PSgoY2hhcikoMHg0M2MrMTkxNi0weGI4ZCkpKXsKLSh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KHB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSsKLSgweDE0ZjYrMTQ2My0weDFhYWMpLHN0cmxlbihwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pCi0tKDB4ZTY2KzU2NzMtMHgyNDhlKSxwdFN1Ym1pdC0+YWRkcmVzcy5kaWdpdHMpO3B0U3VibWl0LT5hZGRyZXNzLm51bWJlcl90eXBlPQorcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4MWNhYysxNzMwLTB4MjM2ZSldPT0oKGNoYXIpKDB4ZGQwKzYxNDAtMHgyNWExKSkKKyl7KHZvaWQpelVmaVNtc19DaGFyVG9JbnQocHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKworKDB4YzJiKzI5NDctMHgxN2FkKSxzdHJsZW4ocHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0KKygweDE5YSszMzU2LTB4ZWI1KSxwdFN1Ym1pdC0+YWRkcmVzcy5kaWdpdHMpO3B0U3VibWl0LT5hZGRyZXNzLm51bWJlcl90eXBlPQogV01TX05VTUJFUl9JTlRFUk5BVElPTkFMO3B0U3VibWl0LT5hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM9c3RybGVuKHB0R3JvdXBTbXMtPgotcmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHg1NWErNzA2My0weDIwZjApO31lbHNlIGlmKHB0R3JvdXBTbXMKLS0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdWygweGY3MCsxMTQ3LTB4MTNlYildPT0KLSgoY2hhcikoMHg2MTYrNDQ1Mi0weDE3NGEpKSYmcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdCi1bKDB4MjZmKzU0ODgtMHgxN2RlKV09PSgoY2hhcikoMHg1NzIrNzcyLTB4ODQ2KSkpeyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KAotcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKygweDc2NCs3MDMtMHhhMjEpLHN0cmxlbigKLXB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSktKDB4MTVmZCsyNjM4LTB4MjA0OSksCityZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLSgweGRmKzg1MDQtMHgyMjE2KTt9ZWxzZSBpZihwdEdyb3VwU21zCistPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXVsoMHg2MjArMjY4NS0weDEwOWQpXT09CisoKGNoYXIpKDB4NDRiKzQyMi0weDVjMSkpJiZwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bCisoMHg0YjgrMzc3My0weDEzNzQpXT09KChjaGFyKSgweDgwYSszNzU1LTB4MTY4NSkpKXsodm9pZCl6VWZpU21zX0NoYXJUb0ludCgKK3B0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSsoMHgxMjErMjczNi0weGJjZiksc3RybGVuKAorcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHgxNzlmKzEwODYtMHgxYmRiKSwKIHB0U3VibWl0LT5hZGRyZXNzLmRpZ2l0cyk7cHRTdWJtaXQtPmFkZHJlc3MubnVtYmVyX3R5cGU9V01TX05VTUJFUl9JTlRFUk5BVElPTkFMCiA7cHRTdWJtaXQtPmFkZHJlc3MubnVtYmVyX29mX2RpZ2l0cz1zdHJsZW4ocHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPgotY3VycmVudF9yZWNlaXZlcl0pLSgweDIwYzgrNzY2LTB4MjNjNCk7fWVsc2V7KHZvaWQpelVmaVNtc19DaGFyVG9JbnQocHRHcm91cFNtcworY3VycmVudF9yZWNlaXZlcl0pLSgweDUzMysyOTI4LTB4MTBhMSk7fWVsc2V7KHZvaWQpelVmaVNtc19DaGFyVG9JbnQocHRHcm91cFNtcwogLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0sc3RybGVuKHB0R3JvdXBTbXMtPnJlY2VpdmVyc1sKIHB0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKSxwdFN1Ym1pdC0+YWRkcmVzcy5kaWdpdHMpO3B0U3VibWl0LT5hZGRyZXNzLgogbnVtYmVyX3R5cGU9V01TX05VTUJFUl9VTktOT1dOO3B0U3VibWl0LT5hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM9c3RybGVuKAogcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKTt9cHRTdWJtaXQtPmFkZHJlc3MuCi1kaWdpdF9tb2RlPSh3bXNfZGlnaXRfbW9kZV9lX3R5cGUpKDB4ZTU5KzIyMjctMHgxNzBjKTtwdFN1Ym1pdC0+YWRkcmVzcy4KLW51bWJlcl9tb2RlPSh3bXNfbnVtYmVyX21vZGVfZV90eXBlKSgweGJiYSszNjgtMHhkMmEpO3B0U3VibWl0LT5hZGRyZXNzLgorZGlnaXRfbW9kZT0od21zX2RpZ2l0X21vZGVfZV90eXBlKSgweGQwYSs0Nzk0LTB4MWZjNCk7cHRTdWJtaXQtPmFkZHJlc3MuCitudW1iZXJfbW9kZT0od21zX251bWJlcl9tb2RlX2VfdHlwZSkoMHhmNDIrNDE3MS0weDFmOGQpO3B0U3VibWl0LT5hZGRyZXNzLgogbnVtYmVyX3BsYW49V01TX05VTUJFUl9QTEFOX1RFTEVQSE9OWTttZW1zZXQoJmdfelVmaVNtc19TZW5kaW5nU21zLAotKDB4MTJlMys0MDk3LTB4MjJlNCksc2l6ZW9mKFNNU19QQVJBTSkpO3NucHJpbnRmKGdfelVmaVNtc19TZW5kaW5nU21zLlRQQSxzaXplb2YKKygweDEwNDQrMzM0MS0weDFkNTEpLHNpemVvZihTTVNfUEFSQU0pKTtzbnByaW50ZihnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUEEsc2l6ZW9mCiAoZ196VWZpU21zX1NlbmRpbmdTbXMuVFBBKSwiXHgyNVx4NzMiLHB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT4KIGN1cnJlbnRfcmVjZWl2ZXJdKTtpZihnX3pVZmlTbXNfTGFuZ3VhZ2UhPU5PVF9ERUZJTkVfTEFOR1VBR0UpewogZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfRENTPUNPREVfR1NNNzt9ZWxzZXtpZihnX3pVZmlTbXNfRGNzPT1EQ1NfVVNDKXsKQEAgLTM4MiwzNiArMzg2LDM2IEBACiB6VWZpU21zX0ZpbGxHbG9iYWxUcHVkVWNzMihwdFN1Ym1pdCxwdENvbmNhdFNtcyxwdERiU2F2ZURhdGEpO30odm9pZCkKIHpVZmlTbXNfTWFrZUZpbmFsQ21nc0J1ZigpO3JldHVybiBaVUZJX1NVQ0M7fXZvaWQgelVmaVNtc19GaWxsU2NhKAogVF96VWZpU21zX0NsaWVudE1zZypwdENsaWVudE1zZyl7Y2hhciBzY2FbWlRFX1dNU19TQ0FfTEVOX01BWF09ewotKDB4NjUrOTY2NC0weDI2MjUpfTtpbnQgaT0oMHgxNjUxKzQ1Ni0weDE4MTkpO2lmKE5VTEw9PXB0Q2xpZW50TXNnKXtyZXR1cm47fQorKDB4MjExKzg5NC0weDU4Zil9O2ludCBpPSgweDU0OSszODMxLTB4MTQ0MCk7aWYoTlVMTD09cHRDbGllbnRNc2cpe3JldHVybjt9CiBtZW1jcHkoKHZvaWQqKXNjYSwodm9pZCopKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSksc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLgotc2NhKSk7aWYoc2NhWygweGUxNis0NjY4LTB4MjA1MildPT0oKGNoYXIpKDB4NzcrNDcxNC0weDEyYjYpKSl7cHRDbGllbnRNc2ctPnUuCitzY2EpKTtpZihzY2FbKDB4ODE4KzU1MTctMHgxZGE1KV09PSgoY2hhcikoMHgxNTYwKzIwNTEtMHgxZDM4KSkpe3B0Q2xpZW50TXNnLT51LgogZ3dfbWVzc2FnZS5zY19hZGRyZXNzLm51bWJlcl90eXBlPVdNU19OVU1CRVJfSU5URVJOQVRJT05BTDt9cHRDbGllbnRNc2ctPnUuCiBnd19tZXNzYWdlLnNjX2FkZHJlc3MuZGlnaXRfbW9kZT1XTVNfRElHSVRfTU9ERV84X0JJVDtwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgogc2NfYWRkcmVzcy5udW1iZXJfcGxhbj1XTVNfTlVNQkVSX1BMQU5fVEVMRVBIT05ZO3B0Q2xpZW50TXNnLT51Lmd3X21lc3NhZ2UuCi1zY19hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM9c3RybGVuKHNjYSk7aWYoc2NhWygweDVmMys0NTY3LTB4MTdjYSldPT0KLSgoY2hhcikoMHgxNzkrNDY4Ny0weDEzOWQpKSl7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgotbnVtYmVyX29mX2RpZ2l0cy0tO2ZvcihpPSgweDExMWYrNDk3NS0weDI0OGUpO2k8cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS4KLXNjX2FkZHJlc3MubnVtYmVyX29mX2RpZ2l0cztpKyspe3NjYVtpXT1zY2FbaSsoMHhmMzMrNTg3OS0weDI2MjkpXTt9fWVsc2UgaWYoc2NhCi1bKDB4MWVkKzM3NDYtMHgxMDhmKV09PSgoY2hhcikoMHhjZTcrMjYyMy0weDE2ZjYpKSYmc2NhWygweDFjNjkrNDEwLTB4MWUwMildPT0KLSgoY2hhcikoMHhkMGQrMTcwOC0weDEzODkpKSl7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgotbnVtYmVyX29mX2RpZ2l0cy09KDB4MWMxMisyMjgxLTB4MjRmOSk7Zm9yKGk9KDB4MjNjMys1MzktMHgyNWRlKTtpPHB0Q2xpZW50TXNnLT4KLXUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM7aSsrKXtzY2FbaV09c2NhW2krKDB4MTZkYysyMzU2LTB4MjAwZSldCi07fX0odm9pZCl6VWZpU21zX0NoYXJUb0ludChzY2EscHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgotbnVtYmVyX29mX2RpZ2l0cyxwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLnNjX2FkZHJlc3MuZGlnaXRzKTt9dm9pZCAKLXpVZmlTbXNfRmlsbERiU2F2ZURhdGEoVF96VWZpU21zX0NsaWVudE1zZypwdENsaWVudE1zZyxUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKgotcHRDbGllbnREYXRhLFRfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLFRfelVmaVNtc19Hcm91cEluZm8qcHRHcm91cFNtcyxpbnQKLSBpU21zTGVuLFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2lmKE5VTEw9PXB0Q2xpZW50TXNnfHxOVUxMPT0KLXB0Q2xpZW50RGF0YXx8TlVMTD09cHRDb25jYXRTbXN8fE5VTEw9PXB0R3JvdXBTbXN8fE5VTEw9PXB0RGJTYXZlRGF0YSl7YXRfcHJpbnQoCi1MT0dfRVJSLCJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3MyIgIlxuIik7cmV0dXJuOwotfXB0RGJTYXZlRGF0YS0+bWVtX3N0b3JlPXB0Q2xpZW50TXNnLT5tc2dfaGRyLm1lbV9zdG9yZTtwdERiU2F2ZURhdGEtPmluZGV4PQorc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzPXN0cmxlbihzY2EpO2lmKHNjYVsoMHhjM2QrNDgyNC0weDFmMTUpXT09CisoKGNoYXIpKDB4MTZhZiszMDQ2LTB4MjI2YSkpKXtwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLnNjX2FkZHJlc3MuCitudW1iZXJfb2ZfZGlnaXRzLS07Zm9yKGk9KDB4MTc4NSsxODM2LTB4MWViMSk7aTxwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgorc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzO2krKyl7c2NhW2ldPXNjYVtpKygweGZkNCsxNjM3LTB4MTYzOCldO319ZWxzZSBpZihzY2EKK1soMHgxZTMxKzkyNy0weDIxZDApXT09KChjaGFyKSgweDYwMSs1NjgtMHg4MDkpKSYmc2NhWygweGFiNis3MDM4LTB4MjYzMyldPT0KKygoY2hhcikoMHg0MGIrODI1LTB4NzE0KSkpe3B0Q2xpZW50TXNnLT51Lmd3X21lc3NhZ2Uuc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzCistPSgweDEwOTgrMTU2Ni0weDE2YjQpO2ZvcihpPSgweDljYys2NTEyLTB4MjMzYyk7aTxwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgorc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzO2krKyl7c2NhW2ldPXNjYVtpKygweDFkYis3Mzk0LTB4MWViYildO319KHZvaWQpCit6VWZpU21zX0NoYXJUb0ludChzY2EscHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHMsCitwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLnNjX2FkZHJlc3MuZGlnaXRzKTt9dm9pZCB6VWZpU21zX0ZpbGxEYlNhdmVEYXRhKAorVF96VWZpU21zX0NsaWVudE1zZypwdENsaWVudE1zZyxUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKnB0Q2xpZW50RGF0YSwKK1RfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLFRfelVmaVNtc19Hcm91cEluZm8qcHRHcm91cFNtcyxpbnQgaVNtc0xlbiwKK1RfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2lmKE5VTEw9PXB0Q2xpZW50TXNnfHxOVUxMPT1wdENsaWVudERhdGF8fAorTlVMTD09cHRDb25jYXRTbXN8fE5VTEw9PXB0R3JvdXBTbXN8fE5VTEw9PXB0RGJTYXZlRGF0YSl7YXRfcHJpbnQoTE9HX0VSUiwKKyJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3MyIgIlxuIik7cmV0dXJuO30KK3B0RGJTYXZlRGF0YS0+bWVtX3N0b3JlPXB0Q2xpZW50TXNnLT5tc2dfaGRyLm1lbV9zdG9yZTtwdERiU2F2ZURhdGEtPmluZGV4PQogcHRDbGllbnRNc2ctPm1zZ19oZHIuaW5kZXg7cHREYlNhdmVEYXRhLT5tb2RlPXB0Q2xpZW50TXNnLT5tc2dfaGRyLm1lc3NhZ2VfbW9kZTsKIHB0RGJTYXZlRGF0YS0+dGFnPXB0Q2xpZW50TXNnLT5tc2dfaGRyLnRhZzttZW1zZXQocHREYlNhdmVEYXRhLT5udW1iZXIsCi0oMHgxY2Y2KzEyNDItMHgyMWQwKSxaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHhjNzcrNDA2Ni0weDFjNTgpKTttZW1jcHkoCisoMHgxNTQrMTA0OC0weDU2YyksWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4MTE4MCsyOTE2LTB4MWNlMykpO21lbWNweSgKIHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSxzdHJsZW4oCiBwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pKTtwdERiU2F2ZURhdGEtPnRwX2Rjcz0KIERDU19VU0M7cHREYlNhdmVEYXRhLT50cF9waWQ9cHRDbGllbnREYXRhLT51Lmd3X3BwLnUuc3VibWl0LnBpZDtwdERiU2F2ZURhdGEtPgogbXNnX3JlZj1wdENsaWVudERhdGEtPnUuZ3dfcHAudS5zdWJtaXQubWVzc2FnZV9yZWZlcmVuY2U7bWVtc2V0KHB0RGJTYXZlRGF0YS0+Ci1zbXNfY29udGVudCwoMHgxNTE5KzE2OTktMHgxYmJjKSxzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKAorc21zX2NvbnRlbnQsKDB4NWUwKzI3NjktMHgxMGIxKSxzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKAogZ196VWZpU21zX0Rjcz09RENTX1VTQyl7cHREYlNhdmVEYXRhLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfVUNTMjt9ZWxzZSBpZigKIGdfelVmaVNtc19EY3M9PURDU19BU0Mpe3B0RGJTYXZlRGF0YS0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ7fSgKIHZvaWQpelVmaVNtc19EaXNwYXRjaFd0b2kocHRDb25jYXRTbXMtPm1zZ19jb250ZW50c1twdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nCkBAIC00MjIsNyArNDI2LDcgQEAKIHB0RGJTYXZlRGF0YSl7VF96VWZpU21zX0NsaWVudFRzRGF0YSB0Q2xpZW50VHNEYXRhO3B0Q2xpZW50TXNnLT5tc2dfaGRyLgogbWVtX3N0b3JlPVdNU19NRU1PUllfU1RPUkVfTlZfR1c7cHRDbGllbnRNc2ctPm1zZ19oZHIudGFnPVdNU19UQUdfTU9fTk9UX1NFTlQ7CiBwdENsaWVudE1zZy0+bXNnX2hkci5tZXNzYWdlX21vZGU9V01TX01FU1NBR0VfTU9ERV9HVztwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgotaXNfYnJvYWRjYXN0PUZBTFNFO21lbXNldCgodm9pZCopJnRDbGllbnRUc0RhdGEsKDB4NzliKzM0MjctMHgxNGZlKSxzaXplb2YoCitpc19icm9hZGNhc3Q9RkFMU0U7bWVtc2V0KCh2b2lkKikmdENsaWVudFRzRGF0YSwoMHgxNzQ5KzQ3NS0weDE5MjQpLHNpemVvZigKIHdtc19jbGllbnRfdHNfZGF0YV9zX3R5cGUpKTt0Q2xpZW50VHNEYXRhLmZvcm1hdD1XTVNfRk9STUFUX0dXX1BQO3RDbGllbnRUc0RhdGEuCiB1Lmd3X3BwLnRwZHVfdHlwZT1XTVNfVFBEVV9TVUJNSVQ7KHZvaWQpelVmaVNtc19GaWxsU3VibWl0VHBkdSgmCiBnX3pVZmlTbXNfQ29uY2F0U21zLCZnX3pVZmlTbXNfR3JvdXBTbXMsZ196VWZpU21zX1VuaXRMZW4sJnRDbGllbnRUc0RhdGEudS5nd19wcApAQCAtNDMxLDk1ICs0MzUsOTUgQEAKIHB0Q2xpZW50TXNnLCZ0Q2xpZW50VHNEYXRhLCZnX3pVZmlTbXNfQ29uY2F0U21zLCZnX3pVZmlTbXNfR3JvdXBTbXMsCiBnX3pVZmlTbXNfVW5pdExlbixwdERiU2F2ZURhdGEpO31pbnQgelVmaVNtc19TdG9yZU5vcm1hbFNtc1RvRGIoCiBUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLGNvbnN0IGNoYXIqcE1lbVN0b3JlLGxvbmcgaVNtc0lkKXtpbnQgcmVzdWx0PQotWlVGSV9TVUNDO2NoYXIqcENvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsQ291bnQ9KDB4ZjZjKzU4MzQtMHgyNjM2KTtwQ29udGVudD0oY2hhcioKLSltYWxsb2MoKDB4ZjY5KzU2NDYtMHgyNTczKSpaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKTtpZihwQ29udGVudD09Ci1OVUxMKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQocENvbnRlbnQsKDB4MjA3Zis2ODMtMHgyMzJhKSwoMHg0ZDYrMTE4MS0weDk2ZikqCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKTtpZihXTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVD09Ci1wdERiU2F2ZURhdGEtPmFscGhhYmV0KXtzdGF0aWMgY2hhciBkYXRhWygweGQ2MSs1MjQ0LTB4MjFkOSkqCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKygweDk1NCs0OTA3LTB4MWM3ZSldPXsoMHgxNTIyKzk2Mi0weDE4ZTQpfTsKLW1lbXNldChkYXRhLCgweGUxNCs0NjQxLTB4MjAzNSksKDB4MTI1ZiszNzI0LTB4MjBlNykqCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKygweDljZCs1NzExLTB4MjAxYikpOyh2b2lkKXpVZmlTbXNfRGVjb2RlQ29udGVudAorWlVGSV9TVUNDO2NoYXIqcENvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsQ291bnQ9KDB4MjIrMTc0MS0weDZlZik7cENvbnRlbnQ9KGNoYXIqKQorbWFsbG9jKCgweDFlOTIrMTc2Mi0weDI1NzApKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgpO2lmKHBDb250ZW50PT0KK05VTEwpe3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldChwQ29udGVudCwoMHg3MDgrMzc4MC0weDE1Y2MpLCgweDEwOTQrMTQ5NC0weDE2NjYpCisqWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWCk7aWYoV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ9PQorcHREYlNhdmVEYXRhLT5hbHBoYWJldCl7c3RhdGljIGNoYXIgZGF0YVsoMHg4YWQrMTc0Mi0weGY3NykqCitaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKygweDEwNTkrNjYwLTB4MTJlYyldPXsoMHg2NjkrNDM3OS0weDE3ODQpfTsKK21lbXNldChkYXRhLCgweDM5Mis1ODA0LTB4MWEzZSksKDB4OTI5KzE5NzEtMHgxMGQ4KSoKK1pURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgrKDB4MWFkKzQ0MTctMHgxMmVkKSk7KHZvaWQpelVmaVNtc19EZWNvZGVDb250ZW50CiAoKGNoYXIqKXB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsc3RybGVuKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQpLEZBTFNFLGRhdGEpOwotc3RybmNweShwQ29udGVudCxkYXRhLCgweDEyNCs2ODgzLTB4MWMwMykqWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWC0KLSgweDE1OWMrMTI4My0weDFhOWUpKTt9ZWxzZXtzdHJuY3B5KHBDb250ZW50LHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCi0oMHhiNjArNjY2OC0weDI1NjgpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgtKDB4NmIrNTk3MS0weDE3YmQpKTt9Ci1wdERiU2F2ZURhdGEtPnRwX2Rjcz0odW5zaWduZWQgY2hhcikoMHhiNis3NDUtMHgzOWQpO2lmKC0oMHg2YmIrODA0MC0weDI2MjIpPT0KK3N0cm5jcHkocENvbnRlbnQsZGF0YSwoMHg5ZmErNTIyMy0weDFlNWQpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgtCisoMHgxZGM3KzgzMC0weDIxMDQpKTt9ZWxzZXtzdHJuY3B5KHBDb250ZW50LHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCisoMHgzMWErNjgzOS0weDFkY2QpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgtKDB4MTIyNSs1MzAzLTB4MjZkYikpOworfXB0RGJTYXZlRGF0YS0+dHBfZGNzPSh1bnNpZ25lZCBjaGFyKSgweDgrNDA3MC0weGZlYyk7aWYoLSgweDMyZisyMDY2LTB4YjQwKT09CiBpU21zSWQpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRUb3RhbENvdW50KHBNZW1TdG9yZSwmaVRvdGFsQ291bnQpKXtmcmVlKAogcENvbnRlbnQpO3BDb250ZW50PU5VTEw7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDRlXHg2Zlx4NzJceDZkXHg2MVx4NmNceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NjlceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NDNceDZmXHg3NVx4NmVceDc0XHgzZFx4MjVceDY0IiAiXG4iCiAsaVRvdGFsQ291bnQpO2lmKGlUb3RhbENvdW50Pj1nX3pVZmlTbXNfU3RvcmVDYXBhYmxpdHlbKHN0cmNtcChwTWVtU3RvcmUsCiAiXHg2ZVx4NzYiKT9aVEVfV01TX01FTU9SWV9TSU06WlRFX1dNU19NRU1PUllfTlYpXSl7ZnJlZShwQ29udGVudCk7cENvbnRlbnQ9TlVMTAotO3JldHVybi0oMHgxYjE1KzI5MC0weDFjMzYpO31pZihaVUZJX0ZBSUw9PXpVZmlTbXNfSW5zZXJ0Tm9ybWFsU21zVG9EYigKKztyZXR1cm4tKDB4MTc4Kzg4NjktMHgyNDFjKTt9aWYoWlVGSV9GQUlMPT16VWZpU21zX0luc2VydE5vcm1hbFNtc1RvRGIoCiBwdERiU2F2ZURhdGEscE1lbVN0b3JlLHBDb250ZW50KSl7cmVzdWx0PVpVRklfRkFJTDt9fWVsc2V7aWYoWlVGSV9GQUlMPT0KIHpVZmlTbXNfVXBkYXRlTm9ybWFsU21zVG9EYihwdERiU2F2ZURhdGEscE1lbVN0b3JlLHBDb250ZW50LGlTbXNJZCkpe3Jlc3VsdD0KIFpVRklfRkFJTDt9fWZyZWUocENvbnRlbnQpO3BDb250ZW50PU5VTEw7cmV0dXJuIHJlc3VsdDt9c3RhdGljIGludCAKIHpVZmlTbXNfQ29uY2F0RGF0YUZyZWUoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxpbnQgY291bnQsY2hhcioqCi1vdXRfcmVzdWx0KXtpbnQgaT0oMHhjMSs2ODUxLTB4MWI4NCk7Zm9yKGk9KDB4MTM5KzEzNzItMHg2OTUpO2k8Y291bnQ7aSsrKXtpZigKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4M2MxKzUwNTctMHgxNzgwKV09PWkrKDB4YWU0KzQyOTEtMHgxYmE2KSl7ZnJlZSgKLW91dF9yZXN1bHRbaV0pO291dF9yZXN1bHRbaV09TlVMTDticmVhazt9fXJldHVybigweDE0NzIrMzA4Ni0weDIwODApO31pbnQgCitvdXRfcmVzdWx0KXtpbnQgaT0oMHgxNGQ5KzMyNjQtMHgyMTk5KTtmb3IoaT0oMHgxNTgrNjA5MC0weDE5MjIpO2k8Y291bnQ7aSsrKXtpZgorKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MmQrMTI2MC0weDUxNyldPT1pKygweDE2YmErMTY1Mi0weDFkMmQpKXtmcmVlKAorb3V0X3Jlc3VsdFtpXSk7b3V0X3Jlc3VsdFtpXT1OVUxMO2JyZWFrO319cmV0dXJuKDB4OTkrODg5OS0weDIzNWMpO31pbnQgCiB6VWZpU21zX0FkZE5ld1Ntc1RvQ29uY2F0RGF0YShUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLGNoYXIqCiBwT2xkQ29udGVudCxjaGFyKnBGb3JtYXROZXdDb250ZW50LGNoYXIqcFJlYWxOZXdDb250ZW50LFRfelVmaVNtc19EYlN0b3JlU3RyKnBhYwotLGludCpwQ29uY2F0VG90YWxOdW0saW50IGxlbil7aW50IGNvdW50PSgweGMxOSszMjY3LTB4MThkYyk7Y2hhcioqb3V0X3Jlc3VsdD0KLU5VTEw7Y2hhciBjU2VnQ2hhcj0oKGNoYXIpKDB4MTZmMSsxNzYwLTB4MWQ5NikpO2ludCBpPSgweDliYyszNzMtMHhiMzEpO2ludCAKLWlUb3RhbFNlZ051bT0oMHhhOTgrNDcwNS0weDFjZjkpO2NoYXIgYWNDb250ZW50U2VnWygweGIxMis0OTM5LTB4MWU1YikqCissaW50KnBDb25jYXRUb3RhbE51bSxpbnQgbGVuKXtpbnQgY291bnQ9KDB4MTJjMSs5OC0weDEzMjMpO2NoYXIqKm91dF9yZXN1bHQ9TlVMTAorO2NoYXIgY1NlZ0NoYXI9KChjaGFyKSgweDE3NDYrMjI5NS0weDIwMDIpKTtpbnQgaT0oMHgyNzMrNTE4OC0weDE2YjcpO2ludCAKK2lUb3RhbFNlZ051bT0oMHgxOTU5KzI1MjItMHgyMzMzKTtjaGFyIGFjQ29udGVudFNlZ1soMHgyNDEwKzUzMi0weDI2MjIpKgogWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWCpaVEVfV01TX1NNU19DT1VOVF9NQVhdPXsKLSgweDE5ZjYrMjgyNi0weDI1MDApfTtjaGFyKnBDdXJDb25Qb3M9YWNDb250ZW50U2VnO2Jvb2xlYW4gaXNFc2M9RkFMU0U7aWYoTlVMTD09Ci1wT2xkQ29udGVudCl7cmV0dXJuLSgweDUzOCszMDMxLTB4MTEwZSk7fWNvdW50PXpVZmlTbXNfU3BsaXRTdHJpbmcocE9sZENvbnRlbnQsJgotb3V0X3Jlc3VsdCxjU2VnQ2hhcik7Zm9yKGk9KDB4MzlmKzM4ODMtMHgxMmNhKTtpPGNvdW50O2krKyl7aWYocHREYlNhdmVEYXRhLT4KLWNvbmNhdF9pbmZvWygweGNjZis1MDgzLTB4MjBhOCldPT1pKygweDg5NCs0MjU1LTB4MTkzMikpe291dF9yZXN1bHRbaV09KGNoYXIqKQorKDB4MTQ3OSsxNzAzLTB4MWIyMCl9O2NoYXIqcEN1ckNvblBvcz1hY0NvbnRlbnRTZWc7Ym9vbGVhbiBpc0VzYz1GQUxTRTtpZihOVUxMPT0KK3BPbGRDb250ZW50KXtyZXR1cm4tKDB4ZjU1KzU4OS0weDExYTEpO31jb3VudD16VWZpU21zX1NwbGl0U3RyaW5nKHBPbGRDb250ZW50LCYKK291dF9yZXN1bHQsY1NlZ0NoYXIpO2ZvcihpPSgweGQ2Yis1NTI1LTB4MjMwMCk7aTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Citjb25jYXRfaW5mb1soMHgxMzI4KzI4OTMtMHgxZTczKV09PWkrKDB4NTY1KzYxLTB4NWExKSl7b3V0X3Jlc3VsdFtpXT0oY2hhciopCiBtYWxsb2Moc2l6ZW9mKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQpKTttZW1zZXQob3V0X3Jlc3VsdFtpXSwKLSgweDFiMTcrNTMxLTB4MWQyYSksc2l6ZW9mKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQpKTtpZigKKygweDU3NCsxNDA3LTB4YWYzKSxzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKAogV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ9PXB0RGJTYXZlRGF0YS0+YWxwaGFiZXQpe2lzRXNjPQogelVmaVNtc19EZWNvZGVDb250ZW50KHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsc3RybGVuKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQKICksaXNFc2Msb3V0X3Jlc3VsdFtpXSk7fWVsc2V7c3RybmNweShvdXRfcmVzdWx0W2ldLHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCi1zaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCktKDB4MTQ1MiszMjAwLTB4MjBkMSkpO31icmVhazt9fWZvcihpPQotKDB4MTg0YSsxMjE5LTB4MWQwZCk7aTxjb3VudDtpKyspe3NucHJpbnRmKGFjQ29udGVudFNlZytzdHJsZW4oYWNDb250ZW50U2VnKSwKK3NpemVvZihwdERiU2F2ZURhdGEtPnNtc19jb250ZW50KS0oMHgxMWQrMTk3MC0weDhjZSkpO31icmVhazt9fWZvcihpPQorKDB4MTQxYis0MjQtMHgxNWMzKTtpPGNvdW50O2krKyl7c25wcmludGYoYWNDb250ZW50U2VnK3N0cmxlbihhY0NvbnRlbnRTZWcpLAogc2l6ZW9mKGFjQ29udGVudFNlZyktc3RybGVuKGFjQ29udGVudFNlZyksIlx4MjVceDczIixvdXRfcmVzdWx0W2ldKTtzdHJjYXQoCi1wRm9ybWF0TmV3Q29udGVudCxvdXRfcmVzdWx0W2ldKTtpZihpIT1jb3VudC0oMHhiMjUrNDA3Ni0weDFiMTApKXtzdHJjYXQoCitwRm9ybWF0TmV3Q29udGVudCxvdXRfcmVzdWx0W2ldKTtpZihpIT1jb3VudC0oMHgxMThmKzE0NjgtMHgxNzRhKSl7c3RyY2F0KAogcEZvcm1hdE5ld0NvbnRlbnQsIlx4M2IiKTt9fXN0cm5jcHkocFJlYWxOZXdDb250ZW50LGFjQ29udGVudFNlZyxsZW4pOwogelVmaVNtc19Db25jYXREYXRhRnJlZShwdERiU2F2ZURhdGEsY291bnQsb3V0X3Jlc3VsdCk7ZnJlZShvdXRfcmVzdWx0KTsKIG91dF9yZXN1bHQ9TlVMTDtjb3VudD16VWZpU21zX1NwbGl0U3RyaW5nKHBhYy0+SW5kU3RyLCZvdXRfcmVzdWx0LGNTZWdDaGFyKTtmb3IoCi1pPSgweDIyMSs2NjU3LTB4MWMyMik7aTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHg4YTMrMjQ4MC0weDEyNTEpXT09aSsoMHg0Y2ErNDQyLTB4NjgzKSl7b3V0X3Jlc3VsdFtpXT0oY2hhciopbWFsbG9jKAotU0hPUlRfSU5UX0xFTik7bWVtc2V0KG91dF9yZXN1bHRbaV0sKDB4MWU4NisxMDkzLTB4MjJjYiksU0hPUlRfSU5UX0xFTik7c25wcmludGYKLShvdXRfcmVzdWx0W2ldLFNIT1JUX0lOVF9MRU4sIlx4MjVceDY0IixwdERiU2F2ZURhdGEtPmluZGV4KTticmVhazt9fWZvcihpPQotKDB4MTFjYis1MDMzLTB4MjU3NCk7aTxjb3VudDtpKyspe3NucHJpbnRmKHBhYy0+Rm9ybWF0SW5kK3N0cmxlbihwYWMtPkZvcm1hdEluZCkKLSxzaXplb2YocGFjLT5Gb3JtYXRJbmQpLXN0cmxlbihwYWMtPkZvcm1hdEluZCksIlx4MjVceDczIixvdXRfcmVzdWx0W2ldKTtpZihpIT0KLWNvdW50LSgweDE0NWQrNDYwNy0weDI2NWIpKXtzbnByaW50ZihwYWMtPkZvcm1hdEluZCtzdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLAotc2l6ZW9mKHBhYy0+Rm9ybWF0SW5kKS1zdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLCJceDNiIik7fX16VWZpU21zX0NvbmNhdERhdGFGcmVlKAoraT0oMHhiMDArNTY0Ni0weDIxMGUpO2k8Y291bnQ7aSsrKXtpZihwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWworKDB4NGM5KzIxMDctMHhkMDIpXT09aSsoMHg3NzQrNTY4NC0weDFkYTcpKXtvdXRfcmVzdWx0W2ldPShjaGFyKiltYWxsb2MoCitTSE9SVF9JTlRfTEVOKTttZW1zZXQob3V0X3Jlc3VsdFtpXSwoMHhmN2IrNDkyMy0weDIyYjYpLFNIT1JUX0lOVF9MRU4pO3NucHJpbnRmKAorb3V0X3Jlc3VsdFtpXSxTSE9SVF9JTlRfTEVOLCJceDI1XHg2NCIscHREYlNhdmVEYXRhLT5pbmRleCk7YnJlYWs7fX1mb3IoaT0KKygweDRjKzM4ODctMHhmN2IpO2k8Y291bnQ7aSsrKXtzbnByaW50ZihwYWMtPkZvcm1hdEluZCtzdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLAorc2l6ZW9mKHBhYy0+Rm9ybWF0SW5kKS1zdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLCJceDI1XHg3MyIsb3V0X3Jlc3VsdFtpXSk7aWYoaSE9Citjb3VudC0oMHgyNGYrNjExMy0weDFhMmYpKXtzbnByaW50ZihwYWMtPkZvcm1hdEluZCtzdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLHNpemVvZgorKHBhYy0+Rm9ybWF0SW5kKS1zdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLCJceDNiIik7fX16VWZpU21zX0NvbmNhdERhdGFGcmVlKAogcHREYlNhdmVEYXRhLGNvdW50LG91dF9yZXN1bHQpO2ZyZWUob3V0X3Jlc3VsdCk7b3V0X3Jlc3VsdD1OVUxMO2NvdW50PQotelVmaVNtc19TcGxpdFN0cmluZyhwYWMtPlNlZ19TZXEsJm91dF9yZXN1bHQsY1NlZ0NoYXIpO2ZvcihpPSgweDdmKzMyODUtMHhkNTQpO2kKLTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTZhMSszMzExLTB4MjM4ZSldPT1pKwotKDB4MzUxKzYzNTctMHgxYzI1KSl7b3V0X3Jlc3VsdFtpXT0oY2hhciopbWFsbG9jKFNIT1JUX0lOVF9MRU4pO21lbXNldCgKLW91dF9yZXN1bHRbaV0sKDB4MjNmZCs3NTAtMHgyNmViKSxTSE9SVF9JTlRfTEVOKTtzbnByaW50ZihvdXRfcmVzdWx0W2ldLAotU0hPUlRfSU5UX0xFTiwiXHgyNVx4NjQiLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTBhOSs0MTAtMHgxMjQxKV0pO2JyZWFrO30KLX1mb3IoaT0oMHgxODdjKzI5MzktMHgyM2Y3KTtpPGNvdW50O2krKyl7c25wcmludGYocGFjLT5Gb3JtYXRTZXErc3RybGVuKHBhYy0+Cit6VWZpU21zX1NwbGl0U3RyaW5nKHBhYy0+U2VnX1NlcSwmb3V0X3Jlc3VsdCxjU2VnQ2hhcik7Zm9yKGk9KDB4N2Q3Kzc1NTMtMHgyNTU4KQorO2k8Y291bnQ7aSsrKXtpZihwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDc4OCsxMTM1LTB4YmY1KV09PWkrCisoMHhmOTArMzY2OS0weDFkZTQpKXtvdXRfcmVzdWx0W2ldPShjaGFyKiltYWxsb2MoU0hPUlRfSU5UX0xFTik7bWVtc2V0KAorb3V0X3Jlc3VsdFtpXSwoMHgyMWFkKzE2NS0weDIyNTIpLFNIT1JUX0lOVF9MRU4pO3NucHJpbnRmKG91dF9yZXN1bHRbaV0sCitTSE9SVF9JTlRfTEVOLCJceDI1XHg2NCIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxYzYrNDE0MS0weDExZjEpXSk7YnJlYWs7fQorfWZvcihpPSgweDE5OCsyOTU5LTB4ZDI3KTtpPGNvdW50O2krKyl7c25wcmludGYocGFjLT5Gb3JtYXRTZXErc3RybGVuKHBhYy0+CiBGb3JtYXRTZXEpLHNpemVvZihwYWMtPkZvcm1hdFNlcSktc3RybGVuKHBhYy0+Rm9ybWF0U2VxKSwiXHgyNVx4NzMiLG91dF9yZXN1bHRbaQotXSk7aWYoaSE9Y291bnQtKDB4NDIrNjg2MC0weDFiMGQpKXtzbnByaW50ZihwYWMtPkZvcm1hdFNlcStzdHJsZW4ocGFjLT5Gb3JtYXRTZXEKLSksc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS1zdHJsZW4ocGFjLT5Gb3JtYXRTZXEpLCJceDNiIik7fWlmKCgweDIwZjcrMzc2LTB4MjI2ZikKLSE9c3RyY21wKG91dF9yZXN1bHRbaV0sIiIpKXtpVG90YWxTZWdOdW0rKzt9fSpwQ29uY2F0VG90YWxOdW09aVRvdGFsU2VnTnVtOwotelVmaVNtc19Db25jYXREYXRhRnJlZShwdERiU2F2ZURhdGEsY291bnQsb3V0X3Jlc3VsdCk7ZnJlZShvdXRfcmVzdWx0KTsKLW91dF9yZXN1bHQ9TlVMTDtyZXR1cm4oMHgxZGJiKzg1Ny0weDIxMTQpO31pbnQgelVmaVNtc19VcGRhdGVDb25jYXRTbXMoCi1UX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLGNvbnN0IGNoYXIqcFN0b3JlUG9zLGxvbmcgaVNtc0lkKXsKLVRfelVmaVNtc19EYlN0b3JlU3RyIGFjPXsoMHhiNTkrMzA5OC0weDE3NzMpfTtjaGFyKnBPbGRDb250ZW50PU5VTEw7Y2hhcioKLXBGb3JtYXROZXdDb250ZW50PU5VTEw7Y2hhcipwUmVhbE5ld0NvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsTnVtPQotKDB4ZTliKzYxNzktMHgyNmJlKTtpbnQgcmVzdWx0PVpVRklfU1VDQztpbnQgc3BhY2VMZW49KDB4MTBiYys0ODAxLTB4MjM3OSkqCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKlpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgrKDB4ZWFmKzI4NzMtMHgxOWU0KQorXSk7aWYoaSE9Y291bnQtKDB4MTFjMyszNzQ4LTB4MjA2Nikpe3NucHJpbnRmKHBhYy0+Rm9ybWF0U2VxK3N0cmxlbihwYWMtPgorRm9ybWF0U2VxKSxzaXplb2YocGFjLT5Gb3JtYXRTZXEpLXN0cmxlbihwYWMtPkZvcm1hdFNlcSksIlx4M2IiKTt9aWYoCisoMHg5NzIrNTQwNy0weDFlOTEpIT1zdHJjbXAob3V0X3Jlc3VsdFtpXSwiIikpe2lUb3RhbFNlZ051bSsrO319KnBDb25jYXRUb3RhbE51bQorPWlUb3RhbFNlZ051bTt6VWZpU21zX0NvbmNhdERhdGFGcmVlKHB0RGJTYXZlRGF0YSxjb3VudCxvdXRfcmVzdWx0KTtmcmVlKAorb3V0X3Jlc3VsdCk7b3V0X3Jlc3VsdD1OVUxMO3JldHVybigweDFmOGQrNzk4LTB4MjJhYik7fWludCAKK3pVZmlTbXNfVXBkYXRlQ29uY2F0U21zKFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEsY29uc3QgY2hhcipwU3RvcmVQb3MsCitsb25nIGlTbXNJZCl7VF96VWZpU21zX0RiU3RvcmVTdHIgYWM9eygweDFmYWMrMTY0NC0weDI2MTgpfTtjaGFyKnBPbGRDb250ZW50PQorTlVMTDtjaGFyKnBGb3JtYXROZXdDb250ZW50PU5VTEw7Y2hhcipwUmVhbE5ld0NvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsTnVtPQorKDB4MjMxOSs4NTEtMHgyNjZjKTtpbnQgcmVzdWx0PVpVRklfU1VDQztpbnQgc3BhY2VMZW49KDB4OGI0Kzc1NDctMHgyNjJiKSoKK1pURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgqWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCsoMHg4ZmErNDMzNC0weDE5ZTQpCiA7cE9sZENvbnRlbnQ9KGNoYXIqKW1hbGxvYyhzcGFjZUxlbik7cEZvcm1hdE5ld0NvbnRlbnQ9KGNoYXIqKW1hbGxvYyhzcGFjZUxlbik7CiBwUmVhbE5ld0NvbnRlbnQ9KGNoYXIqKW1hbGxvYyhzcGFjZUxlbik7aWYocE9sZENvbnRlbnQ9PU5VTEx8fHBGb3JtYXROZXdDb250ZW50CiA9PU5VTEx8fHBSZWFsTmV3Q29udGVudD09TlVMTCl7aWYocE9sZENvbnRlbnQpZnJlZShwT2xkQ29udGVudCk7aWYoCiBwRm9ybWF0TmV3Q29udGVudClmcmVlKHBGb3JtYXROZXdDb250ZW50KTtpZihwUmVhbE5ld0NvbnRlbnQpZnJlZSgKLXBSZWFsTmV3Q29udGVudCk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHBSZWFsTmV3Q29udGVudCwoMHgxYmNmKzE1OTYtMHgyMjBiKSwKLXNwYWNlTGVuKTttZW1zZXQocE9sZENvbnRlbnQsKDB4MWQ1YisxNzkwLTB4MjQ1OSksc3BhY2VMZW4pO21lbXNldCgKLXBGb3JtYXROZXdDb250ZW50LCgweDY4Mys3NDE2LTB4MjM3Yiksc3BhY2VMZW4pOyh2b2lkKXpVZmlTbXNfR2V0Q29uY2F0SW5mbygKK3BSZWFsTmV3Q29udGVudCk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHBSZWFsTmV3Q29udGVudCwoMHgxMjc5KzIzNzAtMHgxYmJiKSwKK3NwYWNlTGVuKTttZW1zZXQocE9sZENvbnRlbnQsKDB4MmYrNTY1NS0weDE2NDYpLHNwYWNlTGVuKTttZW1zZXQoCitwRm9ybWF0TmV3Q29udGVudCwoMHg0NGIrMTgzMS0weGI3Miksc3BhY2VMZW4pOyh2b2lkKXpVZmlTbXNfR2V0Q29uY2F0SW5mbygKIHBTdG9yZVBvcyxpU21zSWQsJmFjLHBPbGRDb250ZW50LHNwYWNlTGVuKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3NFx4NjVceDY1XHg3NFx4MjBceDJkXHgzMFx4MjBceDQ5XHg2ZVx4NjRceDUzXHg3NFx4NzJceDNhXHgyNVx4NzNceDJjXHg1M1x4NjVceDY3XHg1Zlx4NTNceDY1XHg3MVx4M2FceDI1XHg3M1x4MmNceDQ2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDQ5XHg2ZVx4NjRceDNhXHgyNVx4NzNceDJjXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg1M1x4NjVceDcxXHgzYVx4MjVceDczIiAiXG4iCi0sYWMuSW5kU3RyLGFjLlNlZ19TZXEsYWMuRm9ybWF0SW5kLGFjLkZvcm1hdFNlcSk7aWYoLSgweDVmKzQyODEtMHgxMTE3KT09CissYWMuSW5kU3RyLGFjLlNlZ19TZXEsYWMuRm9ybWF0SW5kLGFjLkZvcm1hdFNlcSk7aWYoLSgweGM4MyszMzEzLTB4MTk3Myk9PQogelVmaVNtc19BZGROZXdTbXNUb0NvbmNhdERhdGEocHREYlNhdmVEYXRhLHBPbGRDb250ZW50LHBGb3JtYXROZXdDb250ZW50LAogcFJlYWxOZXdDb250ZW50LCZhYywmaVRvdGFsTnVtLHNwYWNlTGVuKSl7cmVzdWx0PVpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzRceDY1XHg2NVx4NzRceDIwXHgzMFx4MjBceDQ5XHg2ZVx4NjRceDUzXHg3NFx4NzJceDNhXHgyNVx4NzNceDJjXHg1M1x4NjVceDY3XHg1Zlx4NTNceDY1XHg3MVx4M2FceDI1XHg3M1x4MmNceDQ2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDQ5XHg2ZVx4NjRceDNhXHgyNVx4NzNceDJjXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg1M1x4NjVceDcxXHgzYVx4MjVceDczIiAiXG4iCiAsYWMuSW5kU3RyLGFjLlNlZ19TZXEsYWMuRm9ybWF0SW5kLGFjLkZvcm1hdFNlcSk7cHREYlNhdmVEYXRhLT50cF9kY3M9Ci0oMHgxMTZhKzIyMy0weDEyNDcpO2lmKFpVRklfRkFJTD09elVmaVNtc19VcGRhdGVDb25jYXRTbXNUb0RiKHB0RGJTYXZlRGF0YSwKKygweGZkZisyNTYzLTB4MTllMCk7aWYoWlVGSV9GQUlMPT16VWZpU21zX1VwZGF0ZUNvbmNhdFNtc1RvRGIocHREYlNhdmVEYXRhLAogcFN0b3JlUG9zLHBGb3JtYXROZXdDb250ZW50LHBSZWFsTmV3Q29udGVudCwmYWMsaVRvdGFsTnVtLGlTbXNJZCkpe3Jlc3VsdD0KIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzRceDY1XHg2NVx4NzRceDIwXHgzMVx4MjBceDQ5XHg2ZVx4NjRceDUzXHg3NFx4NzJceDNhXHgyNVx4NzNceDJjXHg1M1x4NjVceDY3XHg1Zlx4NTNceDY1XHg3MVx4M2FceDI1XHg3M1x4MmNceDQ2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDQ5XHg2ZVx4NjRceDNhXHgyNVx4NzNceDJjXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg1M1x4NjVceDcxXHgzYVx4MjVceDczIiAiXG4iCkBAIC01MjgsMzIgKzUzMiwzMiBAQAogcEZvcm1hdE5ld0NvbnRlbnQ9TlVMTDtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU1XHg3MFx4NjRceDYxXHg3NFx4NjVceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3M1x4MmUiICJcbiIKICk7cmV0dXJuIHJlc3VsdDt9aW50IHpVZmlTbXNfSW5zZXJ0Q29uY2F0U21zKFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEsCi1jb25zdCBjaGFyKnBTdG9yZVBvcyl7VF96VWZpU21zX0RiU3RvcmVTdHIgYWM9eygweGY3NCsxODE0LTB4MTY4YSl9O2ludCAKLWlTbXNfVG90YWxDb3VudD0oMHgxZjc5KzczNS0weDIyNTgpO2ludCBpPSgweDExYzErMTY2LTB4MTI2Nyk7Y2hhciBhY1RtcENvbnRlbnRbCi0oMHg5YzgrNjc3Ny0weDIzNDEpXTtpbnQgaUNvbmNhdE51bT0oMHg1M2QrMTM3MS0weGE5OCk7Y2hhcipwRm9ybWF0Q29uY2F0PU5VTEw7Ci1jaGFyKnBDb250ZW50PU5VTEw7aW50IHNwYWNlTGVuPSgweDIwNDcrMTY2NC0weDI2YzMpKgotWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKygweGE4MCs0NjEtMHhjNDkpOwotaWYoTlVMTD09cHREYlNhdmVEYXRhfHxOVUxMPT1wU3RvcmVQb3Mpe3JldHVybiBaVUZJX0ZBSUw7fXByaW50ZigKK2NvbnN0IGNoYXIqcFN0b3JlUG9zKXtUX3pVZmlTbXNfRGJTdG9yZVN0ciBhYz17KDB4YTMzKzI2NjktMHgxNGEwKX07aW50IAoraVNtc19Ub3RhbENvdW50PSgweDZhNys2NDU1LTB4MWZkZSk7aW50IGk9KDB4YjBiKzI3NTUtMHgxNWNlKTtjaGFyIGFjVG1wQ29udGVudFsKKygweDE1OTYrNDE2NS0weDI0ZGIpXTtpbnQgaUNvbmNhdE51bT0oMHg2YzMrNjAzOC0weDFlNTkpO2NoYXIqcEZvcm1hdENvbmNhdD1OVUxMCis7Y2hhcipwQ29udGVudD1OVUxMO2ludCBzcGFjZUxlbj0oMHg3MjIrMzEwMi0weDEzM2MpKgorWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKygweDNlNis2NTA5LTB4MWQ0ZikKKztpZihOVUxMPT1wdERiU2F2ZURhdGF8fE5VTEw9PXBTdG9yZVBvcyl7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHgyMFx4NDlceDZlXHg3M1x4NjVceDcyXHg3NFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NTNceDZkXHg3M1x4MmUiICJcbiIKLSk7bWVtc2V0KGFjVG1wQ29udGVudCwoMHgzYWIrODIwOS0weDIzYmMpLHNpemVvZihhY1RtcENvbnRlbnQpKTtpU21zX1RvdGFsQ291bnQ9Ci1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDM1NiszNjE2LTB4MTE3NSldO2ZvcihpPSgweGRkZis0Mjk5LTB4MWVhOSk7aTwKKyk7bWVtc2V0KGFjVG1wQ29udGVudCwoMHgzNTQrODA1Mi0weDIyYzgpLHNpemVvZihhY1RtcENvbnRlbnQpKTtpU21zX1RvdGFsQ291bnQ9CitwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDEwMWIrMjQ3OC0weDE5YzgpXTtmb3IoaT0oMHhmMDMrMTYyNi0weDE1NWMpO2k8CiBpU21zX1RvdGFsQ291bnQ7aSsrKXtzdHJjYXQoYWMuSW5kU3RyLCJceDNiIik7c3RyY2F0KGFjLlNlZ19TZXEsIlx4M2IiKTtzdHJjYXQoCiBhY1RtcENvbnRlbnQsIlx4M2IiKTt9cEZvcm1hdENvbmNhdD0oY2hhciopbWFsbG9jKHNwYWNlTGVuKTtpZihOVUxMPT0KLXBGb3JtYXRDb25jYXQpe3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldChwRm9ybWF0Q29uY2F0LCgweDZjMCs0NzYzLTB4MTk1YiksCitwRm9ybWF0Q29uY2F0KXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQocEZvcm1hdENvbmNhdCwoMHgxMjMyKzIwOC0weDEzMDIpLAogc3BhY2VMZW4pO3BDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pO2lmKHBDb250ZW50PT1OVUxMKXtmcmVlKHBGb3JtYXRDb25jYXQKLSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHBDb250ZW50LCgweDExMTgrMTU3MC0weDE3M2EpLHNwYWNlTGVuKTtpZigtCi0oMHgxYzZjKzcyLTB4MWNiMyk9PXpVZmlTbXNfQWRkTmV3U21zVG9Db25jYXREYXRhKHB0RGJTYXZlRGF0YSxhY1RtcENvbnRlbnQsCispO3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldChwQ29udGVudCwoMHgxMmZmKzk5Ny0weDE2ZTQpLHNwYWNlTGVuKTtpZigtCisoMHgxNzlhKzYxNC0weDE5ZmYpPT16VWZpU21zX0FkZE5ld1Ntc1RvQ29uY2F0RGF0YShwdERiU2F2ZURhdGEsYWNUbXBDb250ZW50LAogcEZvcm1hdENvbmNhdCxwQ29udGVudCwmYWMsJmlDb25jYXROdW0sc3BhY2VMZW4pKXtmcmVlKHBGb3JtYXRDb25jYXQpO2ZyZWUoCiBwQ29udGVudCk7cEZvcm1hdENvbmNhdD1OVUxMO3BDb250ZW50PU5VTEw7cmV0dXJuIFpVRklfRkFJTDt9cHREYlNhdmVEYXRhLT4KLXRwX2Rjcz0oMHgxYWQyKzk5MS0weDFlYWYpO2lmKFpVRklfRkFJTD09elVmaVNtc19JbnNlcnRDb25jYXRTbXNUb0RiKAordHBfZGNzPSgweDUzNSs0NTA1LTB4MTZjYyk7aWYoWlVGSV9GQUlMPT16VWZpU21zX0luc2VydENvbmNhdFNtc1RvRGIoCiBwdERiU2F2ZURhdGEscFN0b3JlUG9zLHBGb3JtYXRDb25jYXQscENvbnRlbnQsJmFjLGlDb25jYXROdW0pKXtmcmVlKAogcEZvcm1hdENvbmNhdCk7ZnJlZShwQ29udGVudCk7cEZvcm1hdENvbmNhdD1OVUxMO3BDb250ZW50PU5VTEw7cmV0dXJuIFpVRklfRkFJTDsKIH1mcmVlKHBGb3JtYXRDb25jYXQpO2ZyZWUocENvbnRlbnQpO3BGb3JtYXRDb25jYXQ9TlVMTDtwQ29udGVudD1OVUxMO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDlceDZlXHg3M1x4NjVceDcyXHg3NFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NTNceDZkXHg3M1x4MjBceDczXHg3NVx4NjNceDYzXHg2NVx4NzNceDczXHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19TdG9yZUNvbmNhdFNtc1RvRGIoVF96VWZpU21zX0RiU3RvcmVEYXRhKgotcHREYlNhdmVEYXRhLGNoYXIqcE1lbVN0b3JlKXtsb25nIGlTbXNJZD0oMHgxODI3KzMwOTQtMHgyNDNkKTtpbnQgdG90YWxfY291bnQ9Ci0oMHg5YzErNzQzNS0weDI2Y2MpO2lmKE5VTEw9PXB0RGJTYXZlRGF0YXx8TlVMTD09cE1lbVN0b3JlKXtyZXR1cm4gWlVGSV9GQUlMO30KLWlTbXNJZD16VWZpU21zX1NlYXJjaENvbmNhdFNtc0luRGIocHREYlNhdmVEYXRhLHBNZW1TdG9yZSk7aWYoLSgweDgzNCszMzgtMHg5ODUpCitwdERiU2F2ZURhdGEsY2hhcipwTWVtU3RvcmUpe2xvbmcgaVNtc0lkPSgweDdmMys2ODQ2LTB4MjJiMSk7aW50IHRvdGFsX2NvdW50PQorKDB4MjQ4Kzc1NTctMHgxZmNkKTtpZihOVUxMPT1wdERiU2F2ZURhdGF8fE5VTEw9PXBNZW1TdG9yZSl7cmV0dXJuIFpVRklfRkFJTDt9CitpU21zSWQ9elVmaVNtc19TZWFyY2hDb25jYXRTbXNJbkRiKHB0RGJTYXZlRGF0YSxwTWVtU3RvcmUpO2lmKC0oMHhhZmMrMTA5LTB4YjY4KQogIT1pU21zSWQpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHg1NFx4NmZceDQ0XHg2Mlx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDU1XHg3MFx4NjRceDYxXHg3NFx4NjVceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDIwXHg1M1x4NmRceDczXHg0OVx4NjRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsaVNtc0lkKTtyZXR1cm4gelVmaVNtc19VcGRhdGVDb25jYXRTbXMocHREYlNhdmVEYXRhLHBNZW1TdG9yZSxpU21zSWQpO31lbHNle2lmKApAQCAtNTY2LDE4NCArNTcwLDE4NCBAQAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NTNceDZkXHg3M1x4MjBceDZkXHg2NVx4NmRceDZmXHg3Mlx4NzlceDIwXHg2OVx4NzNceDIwXHg0Nlx4NzVceDZjXHg2Y1x4MmUiICJcbiIKICk7cmV0dXJuIFpVRklfRkFJTDt9cmV0dXJuIHpVZmlTbXNfSW5zZXJ0Q29uY2F0U21zKHB0RGJTYXZlRGF0YSxwTWVtU3RvcmUpO319aW50CiAgelVmaVNtc19Xcml0ZVNtc1RvRGIoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSx6VWZpU21zX1N0b3JlVHlwZSAKLWlNZW1TdG9yZSxsb25nIGlTbXNJZCl7Y2hhciBhY0RiTWVtU3RvcmVbKDB4NzY0KzQ3NzItMHgxOWZlKV07aW50IGlUb3RhbENvdW50PQotKDB4MjM4KzE3NDYtMHg5MGEpO2ludCBpZD0oMHhlMzcrODMzLTB4MTE3OCk7VUlOVDggbmVlZENoZWNrTWVtb3J5PQotKDB4MjAxOSsxMzY0LTB4MjU2Yyk7aWYoTlVMTD09cHREYlNhdmVEYXRhKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQoCi1hY0RiTWVtU3RvcmUsKDB4MWJiKzcwNy0weDQ3ZSksc2l6ZW9mKGFjRGJNZW1TdG9yZSkpO2lmKFdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMQotPT1pTWVtU3RvcmUpe3N0cm5jcHkoYWNEYk1lbVN0b3JlLFpURV9XTVNfREJfU0lNX1RBQkxFLHNpemVvZihhY0RiTWVtU3RvcmUpLQotKDB4YTA1KzY0OTItMHgyMzYwKSk7fWVsc2V7c3RybmNweShhY0RiTWVtU3RvcmUsWlRFX1dNU19EQl9OVl9UQUJMRSxzaXplb2YoCi1hY0RiTWVtU3RvcmUpLSgweDJhKzE0MzctMHg1YzYpKTt9aWYoKDB4Y2Q3KzMzNzUtMHgxYTA1KT09cHREYlNhdmVEYXRhLT4KK2lNZW1TdG9yZSxsb25nIGlTbXNJZCl7Y2hhciBhY0RiTWVtU3RvcmVbKDB4ZTg3KzE5MS0weGYzYyldO2ludCBpVG90YWxDb3VudD0KKygweGUzNCszMDIxLTB4MWEwMSk7aW50IGlkPSgweDFhMis1NTg5LTB4MTc3Nyk7VUlOVDggbmVlZENoZWNrTWVtb3J5PQorKDB4NmM5KzIwMDUtMHhlOWQpO2lmKE5VTEw9PXB0RGJTYXZlRGF0YSl7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KGFjRGJNZW1TdG9yZSwKKygweDE3ZmIrMTM1My0weDFkNDQpLHNpemVvZihhY0RiTWVtU3RvcmUpKTtpZihXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE9PQoraU1lbVN0b3JlKXtzdHJuY3B5KGFjRGJNZW1TdG9yZSxaVEVfV01TX0RCX1NJTV9UQUJMRSxzaXplb2YoYWNEYk1lbVN0b3JlKS0KKygweDFjYzQrNzc3LTB4MWZjYykpO31lbHNle3N0cm5jcHkoYWNEYk1lbVN0b3JlLFpURV9XTVNfREJfTlZfVEFCTEUsc2l6ZW9mKAorYWNEYk1lbVN0b3JlKS0oMHg0OTYrNjQ4OC0weDFkZWQpKTt9aWYoKDB4MTNjZCsyMzc4LTB4MWQxNik9PXB0RGJTYXZlRGF0YS0+CiBjb25jYXRfc21zKXtpZD16VWZpU21zX1NlYXJjaENvbmNhdFNtc0luRGIocHREYlNhdmVEYXRhLCZhY0RiTWVtU3RvcmUpO2lmKC0KLSgweGVlNCszNzM3LTB4MWQ3YykhPWlkKXtuZWVkQ2hlY2tNZW1vcnk9KDB4MzcyKzQ4NzAtMHgxNjc4KTt9fWlmKAotbmVlZENoZWNrTWVtb3J5PT0oMHg0MTIrNjA0NS0weDFiYWUpKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0VG90YWxDb3VudCgKLWFjRGJNZW1TdG9yZSwmaVRvdGFsQ291bnQpKXtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCisoMHg0ODcrNzA0MS0weDIwMDcpIT1pZCl7bmVlZENoZWNrTWVtb3J5PSgweDE3Y2QrMjMtMHgxN2U0KTt9fWlmKG5lZWRDaGVja01lbW9yeQorPT0oMHhlOGQrMjkwMC0weDE5ZTApKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0VG90YWxDb3VudChhY0RiTWVtU3RvcmUsJgoraVRvdGFsQ291bnQpKXtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU3XHg3Mlx4NjlceDc0XHg2NVx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg2OVx4NTRceDZmXHg3NFx4NjFceDZjXHg0M1x4NmZceDc1XHg2ZVx4NzRceDNkXHgyNVx4NjRceDI4XHg2ZVx4NjVceDY1XHg2NFx4NDNceDY4XHg2NVx4NjNceDZiXHg0ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgzZFx4M2RceDMxXHgyOSIgIlxuIgogLGlUb3RhbENvdW50KTtpZihpVG90YWxDb3VudD49Z196VWZpU21zX1N0b3JlQ2FwYWJsaXR5WyhzdHJjbXAoYWNEYk1lbVN0b3JlLAogIlx4NmVceDc2Iik/WlRFX1dNU19NRU1PUllfU0lNOlpURV9XTVNfTUVNT1JZX05WKV0pe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTdceDcyXHg2OVx4NzRceDY1XHg1M1x4NmRceDczXHg1NFx4NmZceDQ0XHg2Mlx4MjBceDZkXHg2NVx4NmRceDZmXHg3Mlx4NzlceDIwXHg2Nlx4NzVceDZjXHg2Y1x4MmNceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzIiICJcbiIKICk7cmV0dXJuIFpURV9XTVNfTlZfTUVNT1JZX0ZVTEw7fX1pZihwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4MWQ2NSsxNDA0LTB4MjJkZildPT0oMHgxNjU0KzE5NzAtMHgxZTA2KXx8cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKLSgweGQzZCszMTg2LTB4MTlhZCldPnB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4OGEzKzY1LTB4OGUzKV0pe3B0RGJTYXZlRGF0YS0+Ci1jb25jYXRfc21zPSgweDJlNCs5MDI4LTB4MjYyOCk7fXByaW50ZigKKygweGMyNys1MTI1LTB4MjAyYSldPT0oMHgzYWYrOTkzLTB4NzkwKXx8cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDkrNTQ0Mi0weDE1NDkpXT5wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDQ2Nys5NDQtMHg4MTYpXSl7cHREYlNhdmVEYXRhLT4KK2NvbmNhdF9zbXM9KDB4ZGNkKzIwNzMtMHgxNWU2KTt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1N1x4NzJceDY5XHg3NFx4NjVceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NTRceDZmXHg3NFx4NjFceDZjXHg0M1x4NmZceDc1XHg2ZVx4NzRceDNhXHgyNVx4NjRceDJlXHg2M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1Zlx4NzNceDZkXHg3M1x4M2FceDI1XHg2NFx4MmVceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDVmXHg2OVx4NmVceDY2XHg2Zlx4NWJceDMxXHg1ZFx4M2FceDI1XHg2NCIgIlxuIgogLGlUb3RhbENvdW50LHB0RGJTYXZlRGF0YS0+Y29uY2F0X3NtcyxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4NjI5KzU1MzgtMHgxYmNhKV0pO2lmKCgweDIwZDkrMTQ4My0weDI2YTMpPT1wdERiU2F2ZURhdGEtPmNvbmNhdF9zbXMpe2lmKAotWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweGRmNyszMTQ5LTB4MWE0MyldKXsKKygweDhjOSs1NTkxLTB4MWU5ZildKTtpZigoMHgxYWM0Kzc0Ny0weDFkYWUpPT1wdERiU2F2ZURhdGEtPmNvbmNhdF9zbXMpe2lmKAorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDk3OCsyMTIyLTB4MTFjMSldKXsKIHJldHVybiBaVUZJX0ZBSUw7fWVsc2V7cmV0dXJuIHpVZmlTbXNfU3RvcmVDb25jYXRTbXNUb0RiKHB0RGJTYXZlRGF0YSwKIGFjRGJNZW1TdG9yZSk7fX1lbHNle3JldHVybiB6VWZpU21zX1N0b3JlTm9ybWFsU21zVG9EYihwdERiU2F2ZURhdGEsYWNEYk1lbVN0b3JlCiAsaVNtc0lkKTt9fVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19TZW5kT3V0U21zKFRfelVmaVNtc19EYlN0b3JlRGF0YSoKLXB0RGJTYXZlRGF0YSxpbnQgY2lkKXtpbnQgYXRSZXM9KDB4MjY2KzM5MzItMHgxMWMyKTtpZihOVUxMPT1wdERiU2F2ZURhdGEpeworcHREYlNhdmVEYXRhLGludCBjaWQpe2ludCBhdFJlcz0oMHhhZjErNzEzOC0weDI2ZDMpO2lmKE5VTEw9PXB0RGJTYXZlRGF0YSl7CiByZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWlmKCFnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXtwdERiU2F2ZURhdGEtPnRhZz0KIFdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE7aWYoWlVGSV9TVUNDPT16VWZpU21zX1dyaXRlU21zVG9EYihwdERiU2F2ZURhdGEsCi1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4MTRiZis0MzQ5LTB4MjViYikpKXtnX3pVZmlTbXNfTXNnUmVmZXIrKzsKLXB0RGJTYXZlRGF0YS0+bXNnX3JlZj1nX3pVZmlTbXNfTXNnUmVmZXI7KHZvaWQpelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoCi1nX3pVZmlTbXNfTXNnUmVmZXIpO319ZWxzZXtDSEFSIHNlbmRmYWlsUmV0cnlbKDB4MTZhNysxMTcwLTB4MWIwNyldPXsKLSgweGNhKzQ1OTAtMHgxMmI4KX07c2NfY2ZnX2dldChOVl9TRU5ERkFJTF9SRVRSWSxzZW5kZmFpbFJldHJ5LHNpemVvZigKLXNlbmRmYWlsUmV0cnkpKTtpZigoMHhkZWIrNDUxNy0weDFmOTApPT1zdHJjbXAoIlx4MzEiLHNlbmRmYWlsUmV0cnkpKXsKLWdfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk9KDB4NGU3KzgyMzEtMHgyNTBiKTt9YXRSZXM9elNtc19TZW5kQ21nc1JlcSgpO2lmKGF0UmVzCi0hPVpTTVNfUkVTVUxUX09LKXt6U21zX1JlY3ZDbWdzRXJyKCk7fWVsc2V7elNtc19SZWN2Q21nc09rKCk7fX1yZXR1cm4gCi1XTVNfQ01EX1NVQ0NFU1M7fWludCB6VWZpU21zX1NlbmRDb25jYXRTbXMoaW50IGNpZCl7aW50IGF0UmVzPQotKDB4YzJiKzQ5NjItMHgxZjhkKTtUX3pVZmlTbXNfQ2xpZW50TXNnIHRDbGllbnRNc2c7VF96VWZpU21zX0RiU3RvcmVEYXRhIAotdERiU2F2ZURhdGE7aW50IHJlc3VsdD1aVUZJX0ZBSUw7aWYoZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc+PQotZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2cpe3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldCgodm9pZCopJnRDbGllbnRNc2csCi0oMHgxNDU4KzMwMy0weDE1ODcpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsCi0oMHhiNGQrMjUyMC0weDE1MjUpLHNpemVvZih0RGJTYXZlRGF0YSkpO3pVZmlTbXNfU2V0UGR1RGF0YSgmdENsaWVudE1zZywmCi10RGJTYXZlRGF0YSk7aWYoIWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWMpe3REYlNhdmVEYXRhLnRhZz0KK1dNU19TVE9SQUdFX1RZUEVfTlZfVjAxLC0oMHg5OWYrMzE2LTB4YWRhKSkpe2dfelVmaVNtc19Nc2dSZWZlcisrO3B0RGJTYXZlRGF0YS0+Cittc2dfcmVmPWdfelVmaVNtc19Nc2dSZWZlcjsodm9pZCl6VWZpU21zX1NldE1heFJlZmVyZW5jZShnX3pVZmlTbXNfTXNnUmVmZXIpO319CitlbHNle0NIQVIgc2VuZGZhaWxSZXRyeVsoMHgxMDFhKzEyMzEtMHgxNGI3KV09eygweDc4ZCsyMDQ5LTB4ZjhlKX07c2NfY2ZnX2dldCgKK05WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHgyNjgrMjAxNi0weGE0OCk9PQorc3RyY21wKCJceDMxIixzZW5kZmFpbFJldHJ5KSl7Z196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0oMHhmNjQrNDcyMy0weDIxZDQpO30KK2F0UmVzPXpTbXNfU2VuZENtZ3NSZXEoKTtpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe3pTbXNfUmVjdkNtZ3NFcnIoKTt9ZWxzZXsKK3pTbXNfUmVjdkNtZ3NPaygpO319cmV0dXJuIFdNU19DTURfU1VDQ0VTUzt9aW50IHpVZmlTbXNfU2VuZENvbmNhdFNtcyhpbnQgY2lkKXsKK2ludCBhdFJlcz0oMHgzM2ErMjk5Ni0weGVlZSk7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnOworVF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlNhdmVEYXRhO2ludCByZXN1bHQ9WlVGSV9GQUlMO2lmKGdfelVmaVNtc19Db25jYXRTbXMuCitjdXJyZW50X3NlbmRpbmc+PWdfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQoKHZvaWQqKQorJnRDbGllbnRNc2csKDB4YmFkKzIyMjktMHgxNDYyKSxzaXplb2YoVF96VWZpU21zX0NsaWVudE1zZykpO21lbXNldCgodm9pZCopJgordERiU2F2ZURhdGEsKDB4N2I1KzczNTctMHgyNDcyKSxzaXplb2YodERiU2F2ZURhdGEpKTt6VWZpU21zX1NldFBkdURhdGEoJgordENsaWVudE1zZywmdERiU2F2ZURhdGEpO2lmKCFnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXt0RGJTYXZlRGF0YS50YWc9CiBXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxOyh2b2lkKXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTYXZlRGF0YSwKLVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxLC0oMHgxM2Y3KzE2MDEtMHgxYTM3KSk7Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudCsrO31lbHNlCi17Q0hBUiBzZW5kZmFpbFJldHJ5WygweDFhYTIrMTQ2OS0weDIwMmQpXT17KDB4Mjg2KzkxOTMtMHgyNjZmKX07c2NfY2ZnX2dldCgKLU5WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHgyMDYrNzYwOC0weDFmYmUpPT0KLXN0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2dfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk9KDB4MjY1YSsxMjgtMHgyNmQ3KTt9CitXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4MTRkYSszNjItMHgxNjQzKSk7Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudCsrO31lbHNleworQ0hBUiBzZW5kZmFpbFJldHJ5WygweDcyZCs4MDA4LTB4MjY0MyldPXsoMHhhZWMrMjM5MC0weDE0NDIpfTtzY19jZmdfZ2V0KAorTlZfU0VOREZBSUxfUkVUUlksc2VuZGZhaWxSZXRyeSxzaXplb2Yoc2VuZGZhaWxSZXRyeSkpO2lmKCgweDRmMCsyMDU3LTB4Y2Y5KT09CitzdHJjbXAoIlx4MzEiLHNlbmRmYWlsUmV0cnkpKXtnX3pVZmlTbXNfU2VuZEZhaWxlZFJldHJ5PSgweDM1Yys2NzUwLTB4MWRiNyk7fQogYXRSZXM9elNtc19TZW5kQ21nc1JlcSgpO2lmKGF0UmVzIT1aU01TX1JFU1VMVF9PSyl7elNtc19SZWN2Q21nc0VycigpO31lbHNlewogelNtc19SZWN2Q21nc09rKCk7fX1nX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZysrO2lmKGdfelVmaVNtc19Db25jYXRTbXMKIC5jdXJyZW50X3NlbmRpbmc8Z196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2cpe2lmKGdfelVmaVNtc19Db25jYXRTbXMuc21zX2xlbjwKLWdfelVmaVNtc19Vbml0TGVuKihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZysoMHgxOTRiKzE5MzMtMHgyMGQ3KSkpeworZ196VWZpU21zX1VuaXRMZW4qKGdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nKygweDIzZisyMDEzLTB4YTFiKSkpewogZ196VWZpU21zX1VuaXRMZW49Z196VWZpU21zX0NvbmNhdFNtcy5zbXNfbGVuLWdfelVmaVNtc19Vbml0TGVuKgogZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc7fX1pZihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZz09CiBnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyYmIWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWMpe1RfelVmaVNtc19TdGF0dXNJbmZvIAotdFNlbmRTdGF0dXM7bWVtc2V0KCh2b2lkKikmdFNlbmRTdGF0dXMsKDB4MTFlNSsxMDk1LTB4MTYyYyksc2l6ZW9mKAordFNlbmRTdGF0dXM7bWVtc2V0KCh2b2lkKikmdFNlbmRTdGF0dXMsKDB4OTE0KzIwMDUtMHgxMGU5KSxzaXplb2YoCiBUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3RTZW5kU3RhdHVzLmVycl9jb2RlPVpURV9TTVNfQ01TX05PTkU7dFNlbmRTdGF0dXMuCiBzZW5kX2ZhaWxlZF9jb3VudD1nX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50O3RTZW5kU3RhdHVzLmRlbGV0ZV9mYWlsZWRfY291bnQ9Ci0oMHgxZTUrMjE5My0weGE3Nik7dFNlbmRTdGF0dXMuY21kX3N0YXR1cz1XTVNfQ01EX0ZBSUxFRDt0U2VuZFN0YXR1cy5jbWQ9CisoMHgzMjQrMzQxLTB4NDc5KTt0U2VuZFN0YXR1cy5jbWRfc3RhdHVzPVdNU19DTURfRkFJTEVEO3RTZW5kU3RhdHVzLmNtZD0KIFdNU19TTVNfQ01EX01TR19TRU5EOyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U2VuZFN0YXR1cyk7c2NfY2ZnX3NldCgKIE5WX1NNU19TRU5EX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3NjX2NmZ19zZXQoTlZfU01TX0RCX0NIQU5HRSwiXHgzMSIpOwogcmV0dXJuIFpVRklfRkFJTDt9aWYoIWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWMpe3pVZmlTbXNfU2VuZENvbmNhdFNtcyhjaWQpO30KLXJldHVybiByZXN1bHQ7fWludCB6U3ZyX3NlbmRDbWdzKFZPSUQpe2ludCBhdFJlcz0oMHg4NWErMjc3My0weDEzMmYpO2ludCBpPQotKDB4NjIrNTY3Ny0weDE2OGYpO2F0UmVzPXpTbXNfU2VuZENtZ3NSZXEoKTtpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe0NIQVIgCi1zZW5kZmFpbFJldHJ5WygweGRmMCszNjcyLTB4MWMxNildPXsoMHgxZmUwKzE1MTctMHgyNWNkKX07c2NfY2ZnX2dldCgKLU5WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHg4OTgrMjk1My0weDE0MjEpPT0KLXN0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2ZvcihpPSgweDgwMis0NTUxLTB4MTljOSk7aTxTTVNfUkVUUllfQ09VTlQ7aSsrKXsKK3JldHVybiByZXN1bHQ7fWludCB6U3ZyX3NlbmRDbWdzKFZPSUQpe2ludCBhdFJlcz0oMHgxZGQ0Kzg4OC0weDIxNGMpO2ludCBpPQorKDB4Mzk4Kzg1OTItMHgyNTI4KTthdFJlcz16U21zX1NlbmRDbWdzUmVxKCk7aWYoYXRSZXMhPVpTTVNfUkVTVUxUX09LKXtDSEFSIAorc2VuZGZhaWxSZXRyeVsoMHg3NTkrMjAyNy0weGYxMildPXsoMHhmNDgrMjA3MC0weDE3NWUpfTtzY19jZmdfZ2V0KAorTlZfU0VOREZBSUxfUkVUUlksc2VuZGZhaWxSZXRyeSxzaXplb2Yoc2VuZGZhaWxSZXRyeSkpO2lmKCgweDRjYyszNDEyLTB4MTIyMCk9PQorc3RyY21wKCJceDMxIixzZW5kZmFpbFJldHJ5KSl7Zm9yKGk9KDB4OWI4KzUxNS0weGJiYik7aTxTTVNfUkVUUllfQ09VTlQ7aSsrKXsKIGF0UmVzPXpTbXNfU2VuZENtZ3NSZXEoKTtpZihhdFJlcz09WlNNU19SRVNVTFRfT0spe2JyZWFrO319fX1yZXR1cm4gYXRSZXM7fQogVF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX1NlbmRTbXMoVk9JRCl7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnOwotVF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlNhdmVEYXRhO2ludCByZXM9KDB4NGU4KzU2NDgtMHgxYWY4KTtpZigtCi0oMHhhMSsxNDgzLTB4NjZiKT09Z196VWZpU21zX1VuaXRMZW4pe3ByaW50ZigKK1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTYXZlRGF0YTtpbnQgcmVzPSgweDFkNTUrNDU4LTB4MWYxZik7aWYoLQorKDB4MmUxKzU3NDItMHgxOTRlKT09Z196VWZpU21zX1VuaXRMZW4pe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDIxXHgyMVx4MjFceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDUzXHg2ZFx4NzNceDNhXHgyMFx4NGVceDZmXHgyMFx4NjNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDIxXHgyZSIgIlxuIgogKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fXdoaWxlKGdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nPAotZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2cpe21lbXNldCgodm9pZCopJnRDbGllbnRNc2csKDB4MmU5KzY4ODctMHgxZGQwKSwKLXNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsKDB4YjBmKzM5NDgtMHgxYTdiKSwKLXNpemVvZih0RGJTYXZlRGF0YSkpO3pVZmlTbXNfU2V0UGR1RGF0YSgmdENsaWVudE1zZywmdERiU2F2ZURhdGEpO2lmKCEKK2dfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnKXttZW1zZXQoKHZvaWQqKSZ0Q2xpZW50TXNnLCgweDE2YTQrODAtMHgxNmY0KSwKK3NpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsKDB4NjYyKzQ5MS0weDg0ZCksc2l6ZW9mCisodERiU2F2ZURhdGEpKTt6VWZpU21zX1NldFBkdURhdGEoJnRDbGllbnRNc2csJnREYlNhdmVEYXRhKTtpZighCiBnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXt0RGJTYXZlRGF0YS50YWc9V01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTsodm9pZCkKLXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTYXZlRGF0YSxXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4Mzc1KzMxNTItMHhmYzQpKTsKLWdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQrKzt9ZWxzZXtyZXM9elN2cl9zZW5kQ21ncygpO2lmKHJlcyE9WlNNU19SRVNVTFRfT0speworelVmaVNtc19Xcml0ZVNtc1RvRGIoJnREYlNhdmVEYXRhLFdNU19TVE9SQUdFX1RZUEVfTlZfVjAxLC0oMHgxMTMzKzI4MTEtMHgxYzJkKSkKKztnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7fWVsc2V7cmVzPXpTdnJfc2VuZENtZ3MoKTtpZihyZXMhPVpTTVNfUkVTVUxUX09LKXsKIHpTbXNfUmVjdkNtZ3NFcnIoKTt9ZWxzZXt6U21zX1JlY3ZDbWdzT2soKTt9fWdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nCiArKztpZihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZzxnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyl7aWYoCiBnX3pVZmlTbXNfQ29uY2F0U21zLnNtc19sZW48Z196VWZpU21zX1VuaXRMZW4qKGdfelVmaVNtc19Db25jYXRTbXMuCi1jdXJyZW50X3NlbmRpbmcrKDB4MTM2MSsxOTAyLTB4MWFjZSkpKXtnX3pVZmlTbXNfVW5pdExlbj1nX3pVZmlTbXNfQ29uY2F0U21zLgorY3VycmVudF9zZW5kaW5nKygweGRiMys0NjExLTB4MWZiNSkpKXtnX3pVZmlTbXNfVW5pdExlbj1nX3pVZmlTbXNfQ29uY2F0U21zLgogc21zX2xlbi1nX3pVZmlTbXNfVW5pdExlbipnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZzt9fWlmKAogZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc9PWdfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnJiYhCiBnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXtUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U2VuZFN0YXR1czttZW1zZXQoKHZvaWQqKSYKLXRTZW5kU3RhdHVzLCgweDFmYjArNzgxLTB4MjJiZCksc2l6ZW9mKFRfelVmaVNtc19TdGF0dXNJbmZvKSk7dFNlbmRTdGF0dXMuCit0U2VuZFN0YXR1cywoMHg1YTYrNTAyNy0weDE5NDkpLHNpemVvZihUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3RTZW5kU3RhdHVzLgogZXJyX2NvZGU9WlRFX1NNU19DTVNfTk9ORTt0U2VuZFN0YXR1cy5zZW5kX2ZhaWxlZF9jb3VudD0KLWdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQ7dFNlbmRTdGF0dXMuZGVsZXRlX2ZhaWxlZF9jb3VudD0oMHgxZGZkKzE0NDUtMHgyM2EyKTsKK2dfelVmaVNtc19TZW5kRmFpbGVkQ291bnQ7dFNlbmRTdGF0dXMuZGVsZXRlX2ZhaWxlZF9jb3VudD0oMHg3MjUrMzc0Mi0weDE1YzMpOwogdFNlbmRTdGF0dXMuY21kX3N0YXR1cz1XTVNfQ01EX0ZBSUxFRDt0U2VuZFN0YXR1cy5jbWQ9V01TX1NNU19DTURfTVNHX1NFTkQ7KHZvaWQKICl6VWZpU21zX1NldENtZFN0YXR1cygmdFNlbmRTdGF0dXMpO3NjX2NmZ19zZXQoTlZfU01TX1NFTkRfUkVTVUxULAogIlx4NjZceDYxXHg2OVx4NmMiKTtzY19jZmdfc2V0KE5WX1NNU19EQl9DSEFOR0UsIlx4MzEiKTt9fQotI2lmICgweDhjNis1MTgzLTB4MWQwNSkJDQotaWYoZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2c+KDB4NTBjKzU2OTItMHgxYjQ3KSl7cHJpbnRmKAorI2lmICgweDg2OSsyMTI2LTB4MTBiNykJDQoraWYoZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2c+KDB4Y2YyKzMwMjgtMHgxOGM1KSl7cHJpbnRmKAogIlx4M2RceDNkXHgzZFx4M2RceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDJlIiAiXG4iCi0pO3pVZmlTbXNfU2VuZENvbmNhdFNtcyhjaWQpO31lbHNle21lbXNldCgodm9pZCopJnRDbGllbnRNc2csKDB4NTJiKzQ4MjQtMHgxODAzKQotLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsKDB4NjNiKzY4MTMtMHgyMGQ4KSwKLXNpemVvZih0RGJTYXZlRGF0YSkpO3pVZmlTbXNfU2V0UGR1RGF0YSgmdENsaWVudE1zZywmdERiU2F2ZURhdGEpO3ByaW50ZigKKyk7elVmaVNtc19TZW5kQ29uY2F0U21zKGNpZCk7fWVsc2V7bWVtc2V0KCh2b2lkKikmdENsaWVudE1zZywKKygweDE3NzErMzI2NC0weDI0MzEpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsCisoMHhhNzIrNTEyNy0weDFlNzkpLHNpemVvZih0RGJTYXZlRGF0YSkpO3pVZmlTbXNfU2V0UGR1RGF0YSgmdENsaWVudE1zZywmCit0RGJTYXZlRGF0YSk7cHJpbnRmKAogIlx4M2RceDNkXHgzZFx4M2RceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDZlXHg2Zlx4NzJceDYxXHg2ZFx4NmNceDUzXHg2ZFx4NzNceDJlIiAiXG4iCiApO2lmKFdNU19DTURfRkFJTEVEPT16VWZpU21zX1NlbmRPdXRTbXMoJnREYlNhdmVEYXRhLGNpZCkpe3ByaW50ZigKICJceDIxXHgyMVx4MjFceDIxXHgyMVx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NGZceDc1XHg3NFx4NTNceDZkXHg3M1x4MjBceDQ2XHg2MVx4NjlceDZjXHgyZSIgIlxuIgogKTtnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7cmV0dXJuIFdNU19DTURfRkFJTEVEO319CiAjZW5kaWYNCiByZXR1cm4gV01TX0NNRF9TVUNDRVNTO31pbnQgelVmaVNtc19Gb3JtYXREZWxpdmVyVGltZXN0YW1wKFRfelVmaVNtc19EYXRlIHREYXRhLAotVF96VWZpU21zX1RpbWVTdGFtcCpwdFRpbWVzdGFtcCl7dW5zaWduZWQgY2hhciB0VGltZVpvbmVbKDB4ODdmKzc2NDEtMHgyNjUzKV09ewotKDB4N2NjKzEzMDctMHhjZTcpfTtpbnQgdG1wX2k9KDB4MWNmOSsxNDA1LTB4MjI3Nik7bWVtc2V0KHB0VGltZXN0YW1wLAotKDB4NTUwKzgxNzMtMHgyNTNkKSxzaXplb2YoVF96VWZpU21zX1RpbWVTdGFtcCkpO2lmKHN0cmxlbih0RGF0YS55ZWFyKT09Ci0oMHgxOTU1KzU4Ni0weDFiOWUpKXtwdFRpbWVzdGFtcC0+eWVhcj16VWZpU21zX2F0b2hleCgoKGNoYXIpKDB4MWJjYSs4OS0weDFiZjMpKQotKSooMHgxNTdjKzQyOTEtMHgyNjJmKSt6VWZpU21zX2F0b2hleCh0RGF0YS55ZWFyWygweGJkMis0MzE2LTB4MWNhZSldKTt9ZWxzZSBpZigKLXN0cmxlbih0RGF0YS55ZWFyKT09KDB4ODRhKzI3Ni0weDk1Yykpe3B0VGltZXN0YW1wLT55ZWFyPXpVZmlTbXNfYXRvaGV4KHREYXRhLgoteWVhclsoMHg1M2MrMjUyNi0weGYxYSldKSooMHgxZTIrNTA5NS0weDE1YjkpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCi0oMHgzZjErNzUyNy0weDIxNTcpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLnllYXIpPT0oMHgxZWY4Kzc2OS0weDIxZjUpKXsKLXB0VGltZXN0YW1wLT55ZWFyPXpVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbKDB4OTg5KzYzODQtMHgyMjc3KV0pKgotKDB4MjZmKzc0MzEtMHgxZjY2KSt6VWZpU21zX2F0b2hleCh0RGF0YS55ZWFyWygweDFhZWErMTcxOS0weDIxOWUpXSk7fWVsc2V7Ci1wcmludGYoIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3OVx4NjVceDYxXHg3Mlx4MmUiKTtyZXR1cm4gWlVGSV9GQUlMOwotfWlmKHN0cmxlbih0RGF0YS5tb250aCk9PSgweDM5MSszNDMzLTB4MTBmOSkpe3B0VGltZXN0YW1wLT5tb250aD16VWZpU21zX2F0b2hleCgKLSgoY2hhcikoMHg2YWErNjMzNi0weDFmM2EpKSkqKDB4NzFhKzE0MzQtMHhjYTQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLm1vbnRoWwotKDB4NWMrNDMwOC0weDExMzApXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLm1vbnRoKT09KDB4MjUyKzIxOTktMHhhZTcpKXsKLXB0VGltZXN0YW1wLT5tb250aD16VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsoMHgzN2QrMjEzNS0weGJkNCldKSoKLSgweGY3OCs0Njc3LTB4MjFhZCkrelVmaVNtc19hdG9oZXgodERhdGEubW9udGhbKDB4NmJkKzI1MjAtMHgxMDk0KV0pO31lbHNlewotcHJpbnRmKCJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NjRceDYxXHg3OVx4MmUiKTt9aWYoc3RybGVuKHREYXRhLmRheSkKLT09KDB4M2Y0KzE0MjktMHg5ODgpKXtwdFRpbWVzdGFtcC0+ZGF5PXpVZmlTbXNfYXRvaGV4KAotKChjaGFyKSgweDE1MDcrNzM3LTB4MTdiOCkpKSooMHhjMjgrNjcyMS0weDI2NTkpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmRheVsKLSgweDhlMCs3Njg3LTB4MjZlNyldKTt9ZWxzZSBpZihzdHJsZW4odERhdGEuZGF5KT09KDB4YTYxKzQyOTMtMHgxYjI0KSl7Ci1wdFRpbWVzdGFtcC0+ZGF5PXpVZmlTbXNfYXRvaGV4KHREYXRhLmRheVsoMHhhNys1OTU4LTB4MTdlZCldKSoKLSgweDExY2ErNDgxMC0weDI0ODQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmRheVsoMHgzOTErMTk0OS0weGIyZCldKTt9ZWxzZXtwcmludGYoCitUX3pVZmlTbXNfVGltZVN0YW1wKnB0VGltZXN0YW1wKXt1bnNpZ25lZCBjaGFyIHRUaW1lWm9uZVsoMHgxNzE0KzI5MTktMHgyMjc2KV09eworKDB4NDUzKzI3NjUtMHhmMjApfTtpbnQgdG1wX2k9KDB4MzI4KzQwNTYtMHgxMzAwKTttZW1zZXQocHRUaW1lc3RhbXAsCisoMHgxMTBiKzExNjMtMHgxNTk2KSxzaXplb2YoVF96VWZpU21zX1RpbWVTdGFtcCkpO2lmKHN0cmxlbih0RGF0YS55ZWFyKT09CisoMHgxMTRkKzU0MDMtMHgyNjY3KSl7cHRUaW1lc3RhbXAtPnllYXI9elVmaVNtc19hdG9oZXgoCisoKGNoYXIpKDB4MWUxZisxMDctMHgxZTVhKSkpKigweDk4OSsxODctMHhhMzQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCisoMHhiMGMrNDQwMy0weDFjM2YpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLnllYXIpPT0oMHgyMmZkKzg5Mi0weDI2NzcpKXsKK3B0VGltZXN0YW1wLT55ZWFyPXpVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbKDB4ZjYrODc1NS0weDIzMjkpXSkqCisoMHg5MzQrMjg5OS0weDE0NzcpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbKDB4MTIxNys5NTAtMHgxNWNjKV0pO31lbHNlIGlmKAorc3RybGVuKHREYXRhLnllYXIpPT0oMHgxMDBjKzI4NzMtMHgxYjQxKSl7cHRUaW1lc3RhbXAtPnllYXI9elVmaVNtc19hdG9oZXgodERhdGEKKy55ZWFyWygweDE3MWYrOTAzLTB4MWFhNCldKSooMHhiMTMrNjAxNS0weDIyODIpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCisoMHhmMTErNDEzMS0weDFmMzEpXSk7fWVsc2V7cHJpbnRmKAorIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3OVx4NjVceDYxXHg3Mlx4MmUiKTtyZXR1cm4gWlVGSV9GQUlMO31pZigKK3N0cmxlbih0RGF0YS5tb250aCk9PSgweDIzN2YrNjYyLTB4MjYxNCkpe3B0VGltZXN0YW1wLT5tb250aD16VWZpU21zX2F0b2hleCgKKygoY2hhcikoMHgxZTE5KzIyOTYtMHgyNmUxKSkpKigweDNjMSs2MTk4LTB4MWJlNykrelVmaVNtc19hdG9oZXgodERhdGEubW9udGhbCisoMHgxNjA1KzEzMDAtMHgxYjE5KV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS5tb250aCk9PSgweGJlOSsyNTMzLTB4MTVjYykpeworcHRUaW1lc3RhbXAtPm1vbnRoPXpVZmlTbXNfYXRvaGV4KHREYXRhLm1vbnRoWygweDVjZCszMTk5LTB4MTI0YyldKSoKKygweDIxNWErNzAtMHgyMTkwKSt6VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsoMHg3YSsyMjkzLTB4OTZlKV0pO31lbHNle3ByaW50ZigKKyJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NjRceDYxXHg3OVx4MmUiKTt9aWYoc3RybGVuKHREYXRhLmRheSk9PQorKDB4ZDdiKzUyNTAtMHgyMWZjKSl7cHRUaW1lc3RhbXAtPmRheT16VWZpU21zX2F0b2hleCgoKGNoYXIpKDB4ZWZhKzQ5ODItMHgyMjQwKSkKKykqKDB4MTMwZCsyNTEtMHgxM2Y4KSt6VWZpU21zX2F0b2hleCh0RGF0YS5kYXlbKDB4NjQrODY3Mi0weDIyNDQpXSk7fWVsc2UgaWYoCitzdHJsZW4odERhdGEuZGF5KT09KDB4YTVhKzEzNzEtMHhmYjMpKXtwdFRpbWVzdGFtcC0+ZGF5PXpVZmlTbXNfYXRvaGV4KHREYXRhLmRheQorWygweDE5MmIrMzM1OC0weDI2NDkpXSkqKDB4MTQzMyszODIzLTB4MjMxMikrelVmaVNtc19hdG9oZXgodERhdGEuZGF5WworKDB4NTVkKzIzMTgtMHhlNmEpXSk7fWVsc2V7cHJpbnRmKAogIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg2NFx4NjFceDc5XHgyZSIpO31pZihzdHJsZW4odERhdGEuaG91cik9PQotKDB4MTExNysxMjc4LTB4MTYxNCkpe3B0VGltZXN0YW1wLT5ob3VyPXpVZmlTbXNfYXRvaGV4KAotKChjaGFyKSgweGMzNisyOTA4LTB4MTc2MikpKSooMHhkOTYrMTIxNC0weDEyNDQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmhvdXJbCi0oMHg2ZmIrNDY5MS0weDE5NGUpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLmhvdXIpPT0oMHgyNDkrOTQwMS0weDI3MDApKXsKLXB0VGltZXN0YW1wLT5ob3VyPXpVZmlTbXNfYXRvaGV4KHREYXRhLmhvdXJbKDB4YzYzKzIxMzEtMHgxNGI2KV0pKgotKDB4MWJlYisyNDkzLTB4MjU5OCkrelVmaVNtc19hdG9oZXgodERhdGEuaG91clsoMHhiMTgrMjE2Mi0weDEzODkpXSk7fWVsc2V7Ci1wcmludGYoIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg2OFx4NmZceDc1XHg3Mlx4MmUiKTt9aWYoc3RybGVuKHREYXRhLgotbWluKT09KDB4YTgyKzEyNTEtMHhmNjQpKXtwdFRpbWVzdGFtcC0+bWludXRlPXpVZmlTbXNfYXRvaGV4KAotKChjaGFyKSgweDU0ZisxNTk0LTB4YjU5KSkpKigweDVlYiszODg3LTB4MTUwYSkrelVmaVNtc19hdG9oZXgodERhdGEubWluWwotKDB4MjI0NCs4MDktMHgyNTZkKV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS5taW4pPT0oMHgxMjY2KzMzNTUtMHgxZjdmKSl7Ci1wdFRpbWVzdGFtcC0+bWludXRlPXpVZmlTbXNfYXRvaGV4KHREYXRhLm1pblsoMHgxYWEyKzQ0Ny0weDFjNjEpXSkqCi0oMHgxMDYyKzM0ODQtMHgxZGVlKSt6VWZpU21zX2F0b2hleCh0RGF0YS5taW5bKDB4MWFlYysyNjc5LTB4MjU2MildKTt9ZWxzZXsKLXByaW50ZigiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDZkXHg2OVx4NmVceDc1XHg3NFx4NjVceDJlIik7fWlmKAotc3RybGVuKHREYXRhLnNlYyk9PSgweDZhNCsxMjE0LTB4YjYxKSl7cHRUaW1lc3RhbXAtPnNlY29uZD16VWZpU21zX2F0b2hleCgKLSgoY2hhcikoMHhmODErNDMxMy0weDIwMmEpKSkqKDB4MWUxYisxMDY4LTB4MjIzNykrelVmaVNtc19hdG9oZXgodERhdGEuc2VjWwotKDB4MTgzOCszMjM4LTB4MjRkZSldKTt9ZWxzZSBpZihzdHJsZW4odERhdGEuc2VjKT09KDB4ZWY4KzQ2MjItMHgyMTA0KSl7Ci1wdFRpbWVzdGFtcC0+c2Vjb25kPXpVZmlTbXNfYXRvaGV4KHREYXRhLnNlY1soMHgxOTg0KzI4MjUtMHgyNDhkKV0pKgotKDB4MTYyKzgxMjctMHgyMTExKSt6VWZpU21zX2F0b2hleCh0RGF0YS5zZWNbKDB4MzE1KzcwNS0weDVkNSldKTt9ZWxzZXtwcmludGYoCisoMHhmKzM4NDMtMHhmMTEpKXtwdFRpbWVzdGFtcC0+aG91cj16VWZpU21zX2F0b2hleCgoKGNoYXIpKDB4NjkrNzUxLTB4MzI4KSkpKgorKDB4ZGM2KzI0NzQtMHgxNzYwKSt6VWZpU21zX2F0b2hleCh0RGF0YS5ob3VyWygweDExNmYrMjcyMy0weDFjMTIpXSk7fWVsc2UgaWYoCitzdHJsZW4odERhdGEuaG91cik9PSgweDRjYSs0NzYyLTB4MTc2Mikpe3B0VGltZXN0YW1wLT5ob3VyPXpVZmlTbXNfYXRvaGV4KHREYXRhLgoraG91clsoMHgxMGE2KzE4OTUtMHgxODBkKV0pKigweGNjOCszODgtMHhlM2MpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmhvdXJbCisoMHg4ZWQrMjg5My0weDE0MzkpXSk7fWVsc2V7cHJpbnRmKAorIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg2OFx4NmZceDc1XHg3Mlx4MmUiKTt9aWYoc3RybGVuKHREYXRhLm1pbik9PQorKDB4YWYrODU0OS0weDIyMTMpKXtwdFRpbWVzdGFtcC0+bWludXRlPXpVZmlTbXNfYXRvaGV4KAorKChjaGFyKSgweDE0OTArMzI3MC0weDIxMjYpKSkqKDB4MWFjYSsyMDAyLTB4MjI4YykrelVmaVNtc19hdG9oZXgodERhdGEubWluWworKDB4M2UxKzExMzYtMHg4NTEpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLm1pbik9PSgweGU3OSs1NDY1LTB4MjNkMCkpeworcHRUaW1lc3RhbXAtPm1pbnV0ZT16VWZpU21zX2F0b2hleCh0RGF0YS5taW5bKDB4ZWI2KzIwNDMtMHgxNmIxKV0pKgorKDB4MTNmYisyNDc2LTB4MWQ5NykrelVmaVNtc19hdG9oZXgodERhdGEubWluWygweGI5MisyODc1LTB4MTZjYyldKTt9ZWxzZXtwcmludGYKKygiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDZkXHg2OVx4NmVceDc1XHg3NFx4NjVceDJlIik7fWlmKHN0cmxlbigKK3REYXRhLnNlYyk9PSgweDI1MCsyODMzLTB4ZDYwKSl7cHRUaW1lc3RhbXAtPnNlY29uZD16VWZpU21zX2F0b2hleCgKKygoY2hhcikoMHgxYTM1KzkwOS0weDFkOTIpKSkqKDB4MzU4KzgyODctMHgyM2E3KSt6VWZpU21zX2F0b2hleCh0RGF0YS5zZWNbCisoMHhkNjYrMTk2OC0weDE1MTYpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLnNlYyk9PSgweDQ0NCs4NTIyLTB4MjU4YykpeworcHRUaW1lc3RhbXAtPnNlY29uZD16VWZpU21zX2F0b2hleCh0RGF0YS5zZWNbKDB4ZjBkKzU1MTMtMHgyNDk2KV0pKgorKDB4OGM2KzgwMy0weGJkOSkrelVmaVNtc19hdG9oZXgodERhdGEuc2VjWygweGVkKzMyNzItMHhkYjQpXSk7fWVsc2V7cHJpbnRmKAogIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZSIpO310bXBfaT1hdG9pKAotdERhdGEudGltZXpvbmUpO2lmKHRtcF9pPElOVF9NSU4rKDB4NGI5KzI2MS0weDViZCl8fHRtcF9pPklOVF9NQVgtCi0oMHg1YjUrODA5LTB4OGRkKSl7cHJpbnRmKAordERhdGEudGltZXpvbmUpO2lmKHRtcF9pPElOVF9NSU4rKDB4MTdhNSszMDQyLTB4MjM4Nil8fHRtcF9pPklOVF9NQVgtCisoMHg4MjkrMzQ1NS0weDE1YTcpKXtwcmludGYoCiAiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDc0XHg0NFx4NjFceDc0XHg2MVx4MjBceDc0XHg2OVx4NmRceDY1XHg3YVx4NmZceDZlXHg2NVx4M2FceDI1XHg2NFx4MmUiICJcbiIKLSx0bXBfaSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHRUaW1lWm9uZSwoMHg3Nis1NzI3LTB4MTZkNSksc2l6ZW9mKHRUaW1lWm9uZSkpCi07c25wcmludGYodFRpbWVab25lLHNpemVvZih0VGltZVpvbmUpLCJceDI1XHg2NCIsdG1wX2kqKDB4MTc5KzY0OS0weDNmZSkpO2lmKAotdERhdGEudGltZXpvbmVbKDB4MWYrNzA0Ny0weDFiYTYpXT09KChjaGFyKSgweDE4NjgrMjkzNy0weDIzYjQpKSl7aWYoc3RybGVuKAotdFRpbWVab25lKT09KDB4ZTEwKzU2MTQtMHgyM2ZjKSl7cHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KAotKChjaGFyKSgweDJlOSszNTUtMHg0MWMpKSkqKDB4OTAyKzcwNzctMHgyNDk3KSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbCi0oMHhhYzQrMjYzOC0weDE1MTEpXSk7fWVsc2UgaWYoc3RybGVuKHRUaW1lWm9uZSk9PSgweDFiZis5MTIwLTB4MjU1YykpewotcHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KHRUaW1lWm9uZVsoMHg2ZjYrNDkwMy0weDFhMWMpXSkqCi0oMHgxMDE1KzMxMDMtMHgxYzJhKSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4MTdhYiszMzM2LTB4MjRiMSldKTt9ZWxzZXsKLXByaW50ZigKKyx0bXBfaSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHRUaW1lWm9uZSwoMHhiMGMrMzkzLTB4Yzk1KSxzaXplb2YodFRpbWVab25lKSk7CitzbnByaW50Zih0VGltZVpvbmUsc2l6ZW9mKHRUaW1lWm9uZSksIlx4MjVceDY0Iix0bXBfaSooMHgxMzU5KzQ0MDAtMHgyNDg1KSk7aWYoCit0RGF0YS50aW1lem9uZVsoMHhjNzArMzA1Mi0weDE4NWMpXT09KChjaGFyKSgweDE2MGErMjcxMi0weDIwNzUpKSl7aWYoc3RybGVuKAordFRpbWVab25lKT09KDB4MTBlYys1NDE0LTB4MjYxMCkpe3B0VGltZXN0YW1wLT50aW1lem9uZT16VWZpU21zX2F0b2hleCgKKygoY2hhcikoMHhmM2MrMzIzNS0weDFiYWYpKSkqKDB4ZWRkKzI0MDgtMHgxODM1KSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbCisoMHhmZTArMzI3NC0weDFjYTkpXSk7fWVsc2UgaWYoc3RybGVuKHRUaW1lWm9uZSk9PSgweDc3Nis5NzYtMHhiNDMpKXtwdFRpbWVzdGFtcAorLT50aW1lem9uZT16VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4YTk2KzI0MTktMHgxNDA4KV0pKigweDEzMDMrMzc5MS0weDIxYzgpKworelVmaVNtc19hdG9oZXgodFRpbWVab25lWygweDFkYmIrMTQ4MC0weDIzODEpXSk7fWVsc2V7cHJpbnRmKAogIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHgyZFx4NzRceDY5XHg2ZFx4NjVceDdhXHg2Zlx4NmVceDY1XHgyZSIpO30KLXB0VGltZXN0YW1wLT50aW1lem9uZT0oMHg1MDgrODQ0NC0weDI2MDQpLXB0VGltZXN0YW1wLT50aW1lem9uZTt9ZWxzZXtpZihzdHJsZW4oCi10VGltZVpvbmUpPT0oMHg5ZjYrMzY1OS0weDE4NDApKXtwdFRpbWVzdGFtcC0+dGltZXpvbmU9elVmaVNtc19hdG9oZXgoCi0oKGNoYXIpKDB4YTYxKzUwMTktMHgxZGNjKSkpKigweDE4MSs3NzE0LTB4MWY5MykrelVmaVNtc19hdG9oZXgodFRpbWVab25lWwotKDB4YzlhKzcyNC0weGY2ZSldKTt9ZWxzZSBpZihzdHJsZW4odFRpbWVab25lKT09KDB4YzcwKzQwMDctMHgxYzE1KSl7cHRUaW1lc3RhbXAKLS0+dGltZXpvbmU9elVmaVNtc19hdG9oZXgodFRpbWVab25lWygweGNmKzYxMTUtMHgxOGIyKV0pKigweGI3NisxNzE1LTB4MTIxZikrCi16VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4MjFmZCs1MjItMHgyNDA2KV0pO31lbHNle3ByaW50ZigKLSJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4MmJceDc0XHg2OVx4NmRceDY1XHg3YVx4NmZceDZlXHg2NVx4MmUiKTt9fQorcHRUaW1lc3RhbXAtPnRpbWV6b25lPSgweDM5YisxMzIxLTB4OGM0KS1wdFRpbWVzdGFtcC0+dGltZXpvbmU7fWVsc2V7aWYoc3RybGVuKAordFRpbWVab25lKT09KDB4NjE4KzY1NzktMHgxZmNhKSl7cHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KAorKChjaGFyKSgweDFkMmQrMTc3NS0weDIzZWMpKSkqKDB4MjI3Nis4LTB4MjI2ZSkrelVmaVNtc19hdG9oZXgodFRpbWVab25lWworKDB4NjJjKzM1NjItMHgxNDE2KV0pO31lbHNlIGlmKHN0cmxlbih0VGltZVpvbmUpPT0oMHgxMWErNjg2My0weDFiZTcpKXsKK3B0VGltZXN0YW1wLT50aW1lem9uZT16VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4Mjk3KzUyNzgtMHgxNzM1KV0pKgorKDB4MzUxKzcxNjEtMHgxZjQwKSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4MTUxNisxNTE3LTB4MWIwMildKTt9ZWxzZXtwcmludGYKKygiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDJiXHg3NFx4NjlceDZkXHg2NVx4N2FceDZmXHg2ZVx4NjVceDJlIik7fX0KIHJldHVybiBaVUZJX1NVQ0M7fXZvaWQgelVmaVNtc19GaWxsRGVsaXZlcihUX3pVZmlTbXNfRGVsaXZlclBkdSpkZWxpdmVyLAogVF96VWZpU21zX0NvbmNhdEluZm8qY29uY2F0X3NtcyxUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhKXtzdGF0aWMgCi1VSU5UMTYgbXNnX3JlZj0oMHhmNjQrMTk5OS0weDE3MzMpO2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1UUlVFO2lmKAotKDB4MTM4NSsyNzY1LTB4MWU1Mik9PWNvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZyl7Z196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZQotKys7KHZvaWQpelVmaVNtc19TZXRDb25jYXRNYXhSZWZlcihnX3pVZmlTbXNfQ29uY2F0U21zUmVmZXJlbmNlKTt9ZGVsaXZlci0+Ci11c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9VFJVRTtkZWxpdmVyLT51c2VyX2RhdGEubnVtX2hlYWRlcnM9KDB4MWU5MSs2Mi0weDFlY2UpOwotZGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbKDB4YWIxKzEzNDMtMHhmZjApXS5oZWFkZXJfaWQ9V01TX1VESF9DT05DQVRfODsKLWRlbGl2ZXItPnVzZXJfZGF0YS5oZWFkZXJzWygweDc0KzY0MzYtMHgxOTk4KV0udS5jb25jYXRfOC5tc2dfcmVmPW1zZ19yZWY7Ci1kZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHhhYTcrMjc3Ny0weDE1ODApXS51LmNvbmNhdF84LnRvdGFsX3NtPWNvbmNhdF9zbXMtPgotdG90YWxfbXNnO2RlbGl2ZXItPnVzZXJfZGF0YS5oZWFkZXJzWygweDI0Nys2MDY4LTB4MTlmYildLnUuY29uY2F0Xzguc2VxX251bT0KLWNvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZysoMHgxNzUzKzI1MjctMHgyMTMxKTtwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9Ci0oMHgxNjMrNzEwMS0weDFkMWYpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTlmKzQ4NzgtMHgxNGFkKV09bXNnX3JlZjt9dm9pZAotIHpVZmlTbXNfRmlsbERlbGl2ZXJQZHUoVF96VWZpU21zX0RlbGl2ZXJQZHUqcHREZWxpdmVyLFRfelVmaVNtc19Db25jYXRJbmZvKgorVUlOVDE2IG1zZ19yZWY9KDB4MmQrMjcxOC0weGFjYik7ZGVsaXZlci0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7aWYoCisoMHgyMmQrMzU0Mi0weDEwMDMpPT1jb25jYXRfc21zLT5jdXJyZW50X3NlbmRpbmcpe2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2UrKworOyh2b2lkKXpVZmlTbXNfU2V0Q29uY2F0TWF4UmVmZXIoZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZSk7fWRlbGl2ZXItPgordXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7ZGVsaXZlci0+dXNlcl9kYXRhLm51bV9oZWFkZXJzPSgweDI4NSsyNjgzLTB4Y2ZmKTsKK2RlbGl2ZXItPnVzZXJfZGF0YS5oZWFkZXJzWygweGMxMCsxMDA2LTB4ZmZlKV0uaGVhZGVyX2lkPVdNU19VREhfQ09OQ0FUXzg7CitkZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgxMzE2KzM4MDItMHgyMWYwKV0udS5jb25jYXRfOC5tc2dfcmVmPW1zZ19yZWY7CitkZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgxMWYrNjUwMC0weDFhODMpXS51LmNvbmNhdF84LnRvdGFsX3NtPWNvbmNhdF9zbXMtPgordG90YWxfbXNnO2RlbGl2ZXItPnVzZXJfZGF0YS5oZWFkZXJzWygweDdmMiszNDA3LTB4MTU0MSldLnUuY29uY2F0Xzguc2VxX251bT0KK2NvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZysoMHgyZWErNzU1NC0weDIwNmIpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcz0KKygweDYyYis4MzMzLTB4MjZiNyk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxNWMwKzI5OTMtMHgyMTcxKV09bXNnX3JlZjt9Cit2b2lkIHpVZmlTbXNfRmlsbERlbGl2ZXJQZHUoVF96VWZpU21zX0RlbGl2ZXJQZHUqcHREZWxpdmVyLFRfelVmaVNtc19Db25jYXRJbmZvKgogY29uY2F0X3NtcyxUX3pVZmlTbXNfR3JvdXBJbmZvKmdyb3VwX3NtcyxpbnQgaVNtc0xlbixUX3pVZmlTbXNfRGJTdG9yZURhdGEqCiBwdERiU2F2ZURhdGEpe2lmKE5VTEw9PWNvbmNhdF9zbXN8fE5VTEw9PWdyb3VwX3Ntcyl7cmV0dXJuO31wdERlbGl2ZXItPm1vcmU9CiBGQUxTRTtwdERlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD1GQUxTRTtwdERlbGl2ZXItPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0KQEAgLTc1MSwyMiArNzU1LDIyIEBACiBkY3MubXNnX2NsYXNzPVdNU19NRVNTQUdFX0NMQVNTX05PTkU7cHREZWxpdmVyLT5kY3MuaXNfY29tcHJlc3NlZD1GQUxTRTtpZigKIGdfelVmaVNtc19EY3M9PURDU19BU0Mpe3B0RGVsaXZlci0+ZGNzLmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO30KIGVsc2V7cHREZWxpdmVyLT5kY3MuYWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUX1VDUzI7fWlmKGNvbmNhdF9zbXMtPnRvdGFsX21zZz4KLSgweGMxMysyNDQ5LTB4MTVhMykpe3pVZmlTbXNfRmlsbERlbGl2ZXIocHREZWxpdmVyLGNvbmNhdF9zbXMscHREYlNhdmVEYXRhKTsKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcz0oMHgxNDBjKzQyNS0weDE1YjQpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHhhZjYrNzk4LTB4ZTEyKV09Y29uY2F0X3Ntcy0+Y3VycmVudF9zZW5kaW5nKygweDFhM2YrMzUwLTB4MWI5Yyk7cHREYlNhdmVEYXRhCi0tPmNvbmNhdF9pbmZvWygweDE1ZTIrMTA0MC0weDE5ZjEpXT1jb25jYXRfc21zLT50b3RhbF9tc2c7cHREYlNhdmVEYXRhLT4KLWNvbmNhdF9pbmZvWygweDEyMDkrMzMzLTB4MTM1NildPXB0RGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbCi0oMHgxN2E0KzEwNzEtMHgxYmQzKV0udS5jb25jYXRfOC5tc2dfcmVmO31lbHNle3B0RGVsaXZlci0+CisoMHhjMjYrNTkwMy0weDIzMzQpKXt6VWZpU21zX0ZpbGxEZWxpdmVyKHB0RGVsaXZlcixjb25jYXRfc21zLHB0RGJTYXZlRGF0YSk7CitwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9KDB4MTA2Mis0NTE1LTB4MjIwNCk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDJlYysxOTc2LTB4YWEyKV09Y29uY2F0X3Ntcy0+Y3VycmVudF9zZW5kaW5nKygweDExNis2MTQxLTB4MTkxMik7cHREYlNhdmVEYXRhCistPmNvbmNhdF9pbmZvWygweDExMGYrNTM1MS0weDI1ZjUpXT1jb25jYXRfc21zLT50b3RhbF9tc2c7cHREYlNhdmVEYXRhLT4KK2NvbmNhdF9pbmZvWygweDE5NTcrODU5LTB4MWNiMildPXB0RGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbCisoMHhhYTIrNDA2OC0weDFhODYpXS51LmNvbmNhdF84Lm1zZ19yZWY7fWVsc2V7cHREZWxpdmVyLT4KIHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1GQUxTRTtwdERlbGl2ZXItPnVzZXJfZGF0YS5udW1faGVhZGVycz0KLSgweDM4Mis3NzctMHg2OGIpO31wdERlbGl2ZXItPnVzZXJfZGF0YS5zbV9sZW49aVNtc0xlbjttZW1jcHkocHREZWxpdmVyLT4KKygweDhiMisyOTE3LTB4MTQxNyk7fXB0RGVsaXZlci0+dXNlcl9kYXRhLnNtX2xlbj1pU21zTGVuO21lbWNweShwdERlbGl2ZXItPgogdXNlcl9kYXRhLnNtX2RhdGEsY29uY2F0X3Ntcy0+bXNnX2NvbnRlbnRzW2NvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZ10saVNtc0xlbikKLTtpZihncm91cF9zbXMtPnJlY2VpdmVyc1tncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdWygweGM2YyszMzc2LTB4MTk5YyldPT0KLSgoY2hhcikoMHg2NzkrNjU5OS0weDIwMTUpKSl7KHZvaWQpelVmaVNtc19DaGFyVG9JbnQoZ3JvdXBfc21zLT5yZWNlaXZlcnNbCi1ncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKygweDc2NCs3MzQyLTB4MjQxMSksc3RybGVuKGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWwotZ3JvdXBfc21zLT5jdXJyZW50X3JlY2VpdmVyXSktKDB4NDA4KzQ0NzItMHgxNTdmKSxwdERlbGl2ZXItPmFkZHJlc3MuZGlnaXRzKTsKKztpZihncm91cF9zbXMtPnJlY2VpdmVyc1tncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdWygweDgzNCsxNzgxLTB4ZjI5KV09PQorKChjaGFyKSgweDY1ZCs3NzMwLTB4MjQ2NCkpKXsodm9pZCl6VWZpU21zX0NoYXJUb0ludChncm91cF9zbXMtPnJlY2VpdmVyc1sKK2dyb3VwX3Ntcy0+Y3VycmVudF9yZWNlaXZlcl0rKDB4MTA1Kzg3MTktMHgyMzEzKSxzdHJsZW4oZ3JvdXBfc21zLT5yZWNlaXZlcnNbCitncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHgxODU2KzEzMDUtMHgxZDZlKSxwdERlbGl2ZXItPmFkZHJlc3MuZGlnaXRzKTsKIHB0RGVsaXZlci0+YWRkcmVzcy5udW1iZXJfdHlwZT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUw7cHREZWxpdmVyLT5hZGRyZXNzLgogbnVtYmVyX29mX2RpZ2l0cz0oVUlOVDgpc3RybGVuKGdyb3VwX3Ntcy0+cmVjZWl2ZXJzW2dyb3VwX3Ntcy0+Y3VycmVudF9yZWNlaXZlcl0KLSktKDB4ZjkyKzg0My0weDEyZGMpO31lbHNleyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWworKS0oMHgxYzMrNDIyMy0weDEyNDEpO31lbHNleyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWwogZ3JvdXBfc21zLT5jdXJyZW50X3JlY2VpdmVyXSxzdHJsZW4oZ3JvdXBfc21zLT5yZWNlaXZlcnNbZ3JvdXBfc21zLT4KIGN1cnJlbnRfcmVjZWl2ZXJdKSxwdERlbGl2ZXItPmFkZHJlc3MuZGlnaXRzKTtwdERlbGl2ZXItPmFkZHJlc3MubnVtYmVyX3R5cGU9CiBXTVNfTlVNQkVSX1VOS05PV047cHREZWxpdmVyLT5hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM9KFVJTlQ4KXN0cmxlbihncm91cF9zbXMtPgpAQCAtNzc5LDcgKzc4Myw3IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2MVx4NzZceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHgyMFx4NmRceDY1XHg2ZFx4NWZceDczXHg3NFx4NmZceDcyXHg2NVx4M2RceDI1XHg2NFx4MjhceDRlXHg1Nlx4M2RceDNkXHgzMFx4MzFceDI5IiAiXG4iCiAscHRTYXZlU21zLT5tZW1fc3RvcmUpO2lmKHB0U2F2ZVNtcy0+bWVtX3N0b3JlPT1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMSl7aWYoCiBaVUZJX0ZBSUw9PXpVZmlTbXNfV3JpdGVTbXNUb0RiKHB0RGJTYXZlRGF0YSxXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtCi0oMHgzODUrNzkwLTB4NjlhKSkpe2F0X3ByaW50KExPR19FUlIsCisoMHgxMTk2Kzc5Mi0weDE0YWQpKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDc3XHg3Mlx4NjlceDc0XHg2NVx4MjBceDczXHg2ZFx4NzNceDIwXHg3NFx4NmZceDIwXHg2ZVx4NzZceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIKICk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319ZWxzZXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWdfelVmaVNtc19Nc2dSZWZlcisrOwogcHREYlNhdmVEYXRhLT5tc2dfcmVmPWdfelVmaVNtc19Nc2dSZWZlcjsodm9pZCl6VWZpU21zX1NldE1heFJlZmVyZW5jZSgKQEAgLTc5NSwxOSArNzk5LDE5IEBACiAsVF96VWZpU21zX0dyb3VwSW5mbypwdEdyb3VwU21zLGludCBpU21zTGVuZ3RoKXtUX3pVZmlTbXNfQ2xpZW50VHNEYXRhIAogdENsaWVudFRzRGF0YTtUX3pVZmlTbXNfQ2xpZW50TXNnIHRDbGllbnRNc2c7VF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlNhdmVEYXRhOwogVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9TVUNDRVNTO2ludCBjdXJyZW50X3NlbmRpbmc9Ci0oMHgxOGZjKzc5NC0weDFjMTYpO2lmKE5VTEw9PXB0U2F2ZVNtc3x8TlVMTD09cHRDb25jYXRTbXN8fE5VTEw9PXB0R3JvdXBTbXN8fCgtCi0oMHg0ODErODY3NS0weDI2NjMpPT1pU21zTGVuZ3RoKSl7cmV0dXJuIFdNU19DTURfRkFJTEVEO31mb3IocHRDb25jYXRTbXMtPgotY3VycmVudF9zZW5kaW5nPSgweDQ1Yys0MjY3LTB4MTUwNyk7cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZzxwdENvbmNhdFNtcy0+CisoMHgxNjVjKzIyOTMtMHgxZjUxKTtpZihOVUxMPT1wdFNhdmVTbXN8fE5VTEw9PXB0Q29uY2F0U21zfHxOVUxMPT1wdEdyb3VwU21zfHwoLQorKDB4MTM3OCszNzIzLTB4MjIwMik9PWlTbXNMZW5ndGgpKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWZvcihwdENvbmNhdFNtcy0+CitjdXJyZW50X3NlbmRpbmc9KDB4MTE4NyszNzE4LTB4MjAwZCk7cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZzxwdENvbmNhdFNtcy0+CiB0b3RhbF9tc2c7cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysrKXttZW1zZXQoKHZvaWQqKSZ0Q2xpZW50TXNnLAotKDB4ZDczKzQzMzMtMHgxZTYwKSxzaXplb2YoVF96VWZpU21zX0NsaWVudE1zZykpO21lbXNldCgodm9pZCopJnRDbGllbnRUc0RhdGEsCi0oMHhlNjIrNjIwNi0weDI2YTApLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsCi0oMHhkN2MrNTk5Ni0weDI0ZTgpLHNpemVvZihUX3pVZmlTbXNfRGJTdG9yZURhdGEpKTt0Q2xpZW50TXNnLm1zZ19oZHIubWVtX3N0b3JlPQotKHB0U2F2ZVNtcy0+bWVtX3N0b3JlPT1XTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEpP1dNU19TVE9SQUdFX1RZUEVfVUlNX1YwMToKKygweDE1NDIrMjk5My0weDIwZjMpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdENsaWVudFRzRGF0YSwKKygweDkxYysyNTMxLTB4MTJmZiksc2l6ZW9mKFRfelVmaVNtc19DbGllbnRUc0RhdGEpKTttZW1zZXQoKHZvaWQqKSZ0RGJTYXZlRGF0YSwKKygweDdlNysxMTcxLTB4YzdhKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7dENsaWVudE1zZy5tc2dfaGRyLm1lbV9zdG9yZT0oCitwdFNhdmVTbXMtPm1lbV9zdG9yZT09V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxKT9XTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE6CiBXTVNfU1RPUkFHRV9UWVBFX05WX1YwMTt0Q2xpZW50TXNnLm1zZ19oZHIudGFnPShUX3pVZmlTbXNfU21zVGFnKXB0U2F2ZVNtcy0+dGFncwogO3RDbGllbnRNc2cubXNnX2hkci5tZXNzYWdlX21vZGU9V01TX01FU1NBR0VfTU9ERV9HVzt0Q2xpZW50TXNnLnUuZ3dfbWVzc2FnZS4KIGlzX2Jyb2FkY2FzdD1GQUxTRTt0Q2xpZW50VHNEYXRhLmZvcm1hdD1XTVNfRk9STUFUX0dXX1BQO3N3aXRjaChwdFNhdmVTbXMtPnRhZ3MpCiB7Y2FzZSBXTVNfVEFHX1RZUEVfTU9fU0VOVF9WMDE6Y2FzZSBXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxOmNhc2UKLSgweDU4Yis2OTUxLTB4MjBhZSk6e3RDbGllbnRUc0RhdGEudS5nd19wcC50cGR1X3R5cGU9V01TX1RQRFVfU1VCTUlUOyh2b2lkKQorKDB4MTMxNCs1MTAwLTB4MjZmYyk6e3RDbGllbnRUc0RhdGEudS5nd19wcC50cGR1X3R5cGU9V01TX1RQRFVfU1VCTUlUOyh2b2lkKQogelVmaVNtc19GaWxsU3VibWl0VHBkdShwdENvbmNhdFNtcyxwdEdyb3VwU21zLGlTbXNMZW5ndGgsJnRDbGllbnRUc0RhdGEudS5nd19wcC4KIHUuc3VibWl0LCZ0RGJTYXZlRGF0YSk7YnJlYWs7fWNhc2UgV01TX1RBR19UWVBFX01UX1JFQURfVjAxOmNhc2UgCiBXTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxOnt0Q2xpZW50VHNEYXRhLnUuZ3dfcHAudHBkdV90eXBlPVdNU19UUERVX0RFTElWRVI7KApAQCAtODE5LDQyICs4MjMsNDIgQEAKIHpVZmlTbXNfRmlsbFNjYSgmdENsaWVudE1zZyk7elVmaVNtc19GaWxsRGJTYXZlRGF0YSgmdENsaWVudE1zZywmdENsaWVudFRzRGF0YSwKIHB0Q29uY2F0U21zLHB0R3JvdXBTbXMsaVNtc0xlbmd0aCwmdERiU2F2ZURhdGEpO3N0cm5jcHkodERiU2F2ZURhdGEuCiBkcmFmdF9ncm91cF9pZCxwdFNhdmVTbXMtPmRyYWZ0X2dyb3VwX2lkLHNpemVvZih0RGJTYXZlRGF0YS5kcmFmdF9ncm91cF9pZCktCi0oMHg3MzUrMzE4OS0weDEzYTkpKTtpZihUUlVFPT1nX3pVZmlTbXNfTWVtRnVsbEZsYWdbWlRFX1dNU19NRU1PUllfTlZdKXtyZXN1bHQ9CisoMHgxYjJiKzEyNDMtMHgyMDA1KSk7aWYoVFJVRT09Z196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX05WXSl7cmVzdWx0PQogV01TX0NNRF9GQUlMRUQ7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjFceDc2XHg2NVx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg0ZVx4NTZceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjlceDczXHgyMFx4NjZceDc1XHg2Y1x4NmNceDJjXHg3M1x4NjFceDc2XHg2NVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3MiIgIlxuIgotKTt9ZWxzZXtpZih0RGJTYXZlRGF0YS5jb25jYXRfc21zPT0oMHgxNSsyOTAyLTB4YjZhKSl7cmVzdWx0PQorKTt9ZWxzZXtpZih0RGJTYXZlRGF0YS5jb25jYXRfc21zPT0oMHg4NDkrNjI5MS0weDIwZGIpKXtyZXN1bHQ9CiB6VWZpU21zX1NhdmVDb25jYXRTbXMocHRTYXZlU21zLHB0Q29uY2F0U21zLHB0R3JvdXBTbXMsJnREYlNhdmVEYXRhLGlTbXNMZW5ndGgpOwotY3VycmVudF9zZW5kaW5nPXB0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmcrKDB4MThlOCs3NjYtMHgxYmU1KTtpZihwdENvbmNhdFNtcwotLT5zbXNfbGVuPGlTbXNMZW5ndGgqKGN1cnJlbnRfc2VuZGluZysoMHgxODIwKzMyMDAtMHgyNDlmKSkpe2lTbXNMZW5ndGg9CitjdXJyZW50X3NlbmRpbmc9cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHhhNjYrNDIzNy0weDFhZjIpO2lmKHB0Q29uY2F0U21zCistPnNtc19sZW48aVNtc0xlbmd0aCooY3VycmVudF9zZW5kaW5nKygweDE3NDcrMjE1Ny0weDFmYjMpKSl7aVNtc0xlbmd0aD0KIHB0Q29uY2F0U21zLT5zbXNfbGVuLWlTbXNMZW5ndGgqY3VycmVudF9zZW5kaW5nO319ZWxzZXtyZXN1bHQ9CiB6VWZpU21zX1NhdmVOb3JtYWxTbXMocHRTYXZlU21zLCZ0RGJTYXZlRGF0YSk7fX19cmV0dXJuIHJlc3VsdDt9aW50IAotelVmaVNtc19EZWxldGVTbXNJblNpbSgpe2NoYXIgc3RyX2luZGV4WygweGViZis1MjIyLTB4MjJhNSldPXsKLSgweDExYWYrNTAzNy0weDI1NWMpfTtpbnQgaW5kZXg9KDB4NDVhKzQ4NzMtMHgxNzYzKTtpbnQgaXNfY2M9Ci0oMHg0OTkrNzAwMy0weDFmZjQpO2ludCBpU21zSWQ9KDB4MTEwKzY5NzQtMHgxYzRlKTtUX3pVZmlTbXNfTW9kaWZ5VGFnIAotdERlbGV0ZUluZm89eygweDM4ZisyMjcyLTB4YzZmKX07Y2hhciBTdHJWYWx1ZVsoMHg3NDcrNzc4Mi0weDI1YTMpXT17Ci0oMHg4NWQrMjgxNy0weDEzNWUpfTttZW1zZXQoJnREZWxldGVJbmZvLCgweDkwYSs2MDYyLTB4MjBiOCksc2l6ZW9mKAotVF96VWZpU21zX01vZGlmeVRhZykpO2lTbXNJZD1nX3pVZmlTbXNfRGVsTXNnLnNpbV9pZFtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleF0KLTtpZigtKDB4MTc0MCsyODQ0LTB4MjI1Yik9PShpc19jYz16VWZpU21zX0lzQ29uY2F0U21zKGlTbXNJZCkpKXtwcmludGYoCit6VWZpU21zX0RlbGV0ZVNtc0luU2ltKCl7Y2hhciBzdHJfaW5kZXhbKDB4NmJiKzI3Mi0weDc0YildPXsoMHhmNWMrNDMxNy0weDIwMzkpfQorO2ludCBpbmRleD0oMHhiNTMrNjIwNS0weDIzOTApO2ludCBpc19jYz0oMHgxMzMrMjg0NC0weGM0Zik7aW50IGlTbXNJZD0KKygweDQ5MysxMTEzLTB4OGVjKTtUX3pVZmlTbXNfTW9kaWZ5VGFnIHREZWxldGVJbmZvPXsoMHg0NGYrNjExOC0weDFjMzUpfTtjaGFyIAorU3RyVmFsdWVbKDB4M2QyKzE3MzUtMHhhOGYpXT17KDB4NDU4KzU5MzItMHgxYjg0KX07bWVtc2V0KCZ0RGVsZXRlSW5mbywKKygweDg4YisyNDUtMHg5ODApLHNpemVvZihUX3pVZmlTbXNfTW9kaWZ5VGFnKSk7aVNtc0lkPWdfelVmaVNtc19EZWxNc2cuc2ltX2lkWworZ196VWZpU21zX0RlbE1zZy5zaW1faW5kZXhdO2lmKC0oMHg2MzkrNDM1NS0weDE3M2IpPT0oaXNfY2M9elVmaVNtc19Jc0NvbmNhdFNtcygKK2lTbXNJZCkpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDYzXHg2OFx4NjVceDYzXHg2Ylx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDY5XHg3M1x4NWZceDYzXHg2M1x4M2FceDI1XHg2NFx4MmNceDIwXHg2OVx4NjRceDNkXHgyNVx4NjQiICJcbiIKLSxpc19jYyxpU21zSWQpO2lmKCgweDM3YysyMjAyLTB4YzE1KT09aXNfY2Mpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTbXNJbmRleCgKLWlTbXNJZCwmdERlbGV0ZUluZm8saXNfY2MpKXtyZXR1cm4gWlVGSV9GQUlMO31nX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleCsrOworLGlzX2NjLGlTbXNJZCk7aWYoKDB4MTcyOSsyODQyLTB4MjI0Mik9PWlzX2NjKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U21zSW5kZXgKKyhpU21zSWQsJnREZWxldGVJbmZvLGlzX2NjKSl7cmV0dXJuIFpVRklfRkFJTDt9Z196VWZpU21zX0RlbE1zZy5zaW1faW5kZXgrKzsKIGdfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4X2NvdW50LS07d2hpbGUodERlbGV0ZUluZm8ubnVtX29mX2luZGljZXM+Ci0oMHhmOGYrMzUzNC0weDFkNWQpKXtpbmRleD10RGVsZXRlSW5mby5pbmRpY2VzW3REZWxldGVJbmZvLmlkX2luZGV4XTsKKygweDk2OCsyOTk4LTB4MTUxZSkpe2luZGV4PXREZWxldGVJbmZvLmluZGljZXNbdERlbGV0ZUluZm8uaWRfaW5kZXhdOwogZ19kZWxldGVJbmRleC5pbmRleFtnX2RlbGV0ZUluZGV4LnRvdGFsXT1pbmRleDtnX2RlbGV0ZUluZGV4LnRvdGFsKys7dERlbGV0ZUluZm8KIC5pZF9pbmRleCsrO3REZWxldGVJbmZvLm51bV9vZl9pbmRpY2VzLS07fX1lbHNle21lbXNldChzdHJfaW5kZXgsCi0oMHgyNTIzKzM3NS0weDI2OWEpLHNpemVvZihzdHJfaW5kZXgpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKAorKDB4MTNjOCszMDg1LTB4MWZkNSksc2l6ZW9mKHN0cl9pbmRleCkpO2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTdG9yZVBvc0J5SWQoCiAiXHg2OVx4NmVceDY0IixzdHJfaW5kZXgsc2l6ZW9mKHN0cl9pbmRleCksaVNtc0lkKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDY3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDY0XHg2Mlx4MjBceDY2XHg2MVx4NjlceDZjXHg2NFx4MmUiCiApO3JldHVybiBaVUZJX0ZBSUw7fWluZGV4PWF0b2koc3RyX2luZGV4KTtnX2RlbGV0ZUluZGV4LmluZGV4W2dfZGVsZXRlSW5kZXguCiB0b3RhbF09aW5kZXg7Z19kZWxldGVJbmRleC50b3RhbCsrO2dfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4Kys7Z196VWZpU21zX0RlbE1zZwogLnNpbV9pbmRleF9jb3VudC0tO30odm9pZCl6VWZpU21zX0RlbGV0ZVNtc0luRGIoKTtyZXR1cm4gWlVGSV9TVUNDO30KLVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19EZWxldGVTaW1TbXMoVk9JRCl7aW50IGF0UmVzPSgweDYzYSs2MDc1LTB4MWRmNSk7Ci1jaGFyIFN0clZhbHVlWygweDcyMys1NjEyLTB4MWQwNSldPXsoMHgxOGQ1KzI5ODgtMHgyNDgxKX07elVmaVNtc19TZXRTbXNMb2NhdGlvbgotKFNNU19MT0NBVElPTl9TSU0pO21lbXNldCgmZ19kZWxldGVJbmRleCwoMHgxMzExKzc4NS0weDE2MjIpLHNpemVvZigKK1RfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19EZWxldGVTaW1TbXMoVk9JRCl7aW50IGF0UmVzPSgweDgyOSszNTk0LTB4MTYzMyk7CitjaGFyIFN0clZhbHVlWygweGQ3ZCs0MjItMHhmMTkpXT17KDB4MTVjNiszMjkxLTB4MjJhMSl9O3pVZmlTbXNfU2V0U21zTG9jYXRpb24oCitTTVNfTE9DQVRJT05fU0lNKTttZW1zZXQoJmdfZGVsZXRlSW5kZXgsKDB4MTczYSszMTMyLTB4MjM3Niksc2l6ZW9mKAogVF96VWZpU21zX0RlbEluZGV4SW5mbykpO3doaWxlKGdfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4X2NvdW50PgotKDB4ZWIzKzU3MTUtMHgyNTA2KSl7aWYoWlVGSV9GQUlMPT16VWZpU21zX0RlbGV0ZVNtc0luU2ltKCkpe3ByaW50ZigKKygweDMyNys4NTIzLTB4MjQ3Mikpe2lmKFpVRklfRkFJTD09elVmaVNtc19EZWxldGVTbXNJblNpbSgpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2OVx4NmRceDUzXHg2ZFx4NzNceDIwXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NjFceDZjXHg2Y1x4M2FceDI1XHg2NFx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IiAiXG4iCiAsV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX13aGlsZShnX2RlbGV0ZUluZGV4LmN1cl9pbmRleAogPGdfZGVsZXRlSW5kZXgudG90YWwpe2F0UmVzPXpTbXNfU2VuZENtZ2RSZXEoZ19kZWxldGVJbmRleC5pbmRleFtnX2RlbGV0ZUluZGV4LgpAQCAtODYzLDY5ICs4NjcsNzAgQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4NTNceDY5XHg2ZFx4NTNceDZkXHg3M1x4MjBceDczXHg3NVx4NjNceDYzXHg2NVx4NzNceDczIiAiXG4iCiApO3JldHVybiBXTVNfQ01EX1NVQ0NFU1M7fXZvaWQgelVmaVNtc19HZXRSZXBvcnRTdGF0dXMoY2hhcipwZHVfdG1wLGludCpzdGF0KXsKIHVuc2lnbmVkIGNoYXIgdG1wO3Vuc2lnbmVkIGNoYXIgZmlyc3Rfb2N0ZXQ7aWYocGR1X3RtcD09TlVMTCl7cmV0dXJuO30odm9pZCkKLVN0cmluZzJCeXRlcyhwZHVfdG1wLCZ0bXAsKDB4YmZkKzM4MDUtMHgxYWQ4KSk7aWYodG1wPT0oMHg0NGIrMzA0OS0weDEwMzQpKXsKLXBkdV90bXArPSgweDFmNys1MzkwLTB4MTcwMyk7fWVsc2V7dG1wPSh0bXArKDB4MTZmZisxOTEwLTB4MWU3NCkpKgotKDB4NDIxKzEyMDUtMHg4ZDQpO3BkdV90bXArPXRtcDt9KHZvaWQpU3RyaW5nMkJ5dGVzKHBkdV90bXAsJnRtcCwKLSgweDE1ZGMrMTczLTB4MTY4NykpO2ZpcnN0X29jdGV0PXRtcDtpZihmaXJzdF9vY3RldCYoMHg0ZDkrMzIwMy0weDExNWEpKXsqc3RhdD0KLSgweGIyOSs2MjI1LTB4MjM3NSk7fX1UX3pVZmlTbXNfVHBkdVR5cGUgelVmaVNtc19HZXRUcGR1VHlwZShVSU5UOCpwRGF0YSl7Ci1UX3pVZmlTbXNfVHBkdVR5cGUgaVRwZHVUeXBlO1VJTlQ4IG10aT0oMHhkOTUrNTQ2NC0weDIyZWQpO210aT0oCi1UX3pVZmlTbXNfVHBkdVR5cGUpKHBEYXRhWygweGRlMSs5MzYtMHgxMTg5KV0mKDB4NDE1KzExNTktMHg4OTkpKTtzd2l0Y2gobXRpKXsKLWNhc2UoMHgxMzYyKzEyMTQtMHgxODIwKTppVHBkdVR5cGU9V01TX1RQRFVfREVMSVZFUjticmVhaztjYXNlCi0oMHgxNzUrNTY4Mi0weDE3YTYpOmlUcGR1VHlwZT1XTVNfVFBEVV9TVUJNSVQ7YnJlYWs7Y2FzZSgweGRmYys1OTMwLTB4MjUyNCk6Ci1pVHBkdVR5cGU9V01TX1RQRFVfU1RBVFVTX1JFUE9SVDticmVhaztkZWZhdWx0OmlUcGR1VHlwZT1XTVNfVFBEVV9NQVg7YnJlYWs7fQotcmV0dXJuIGlUcGR1VHlwZTt9c3RhdGljIHZvaWQgelVmaVNtc19Gb3JtYXREZWxpdmVyTnVtYmVyKHdtc19hZGRyZXNzX3NfdHlwZSAKLXRBZGRyZXNzLHVuc2lnbmVkIGNoYXIqcE51bWJlcil7VUlOVDggbnVtYmVyX3R5cGU9KDB4MjJlMiszODItMHgyNDYwKTttZW1zZXQoCi1wTnVtYmVyLCgweGUyMSs1MTItMHgxMDIxKSxaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHg3NjArNzgxOS0weDI1ZWEpKTtpZigKLXRBZGRyZXNzLm51bWJlcl90eXBlPT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUwpe3BOdW1iZXJbKDB4OGQzKzE5NzktMHgxMDhlKV09Ci0oKGNoYXIpKDB4ZDkrNjQzNS0weDE5ZDEpKTtwTnVtYmVyKys7fWlmKHRBZGRyZXNzLmRpZ2l0X21vZGUhPQorU3RyaW5nMkJ5dGVzKHBkdV90bXAsJnRtcCwoMHg2MDMrNDI0MC0weDE2OTEpKTtpZih0bXA9PSgweDFjNis2MDE2LTB4MTk0NikpeworcGR1X3RtcCs9KDB4Y2YrNDc3MC0weDEzNmYpO31lbHNle3RtcD0odG1wKygweDFiM2ErMTI5My0weDIwNDYpKSoKKygweDJkZis1NjA3LTB4MThjNCk7cGR1X3RtcCs9dG1wO30odm9pZClTdHJpbmcyQnl0ZXMocGR1X3RtcCwmdG1wLAorKDB4ODkwKzI3NjUtMHgxMzViKSk7Zmlyc3Rfb2N0ZXQ9dG1wO2lmKGZpcnN0X29jdGV0JigweDE0MzArMjkxOC0weDFmOTQpKXsqc3RhdD0KKygweGI0OCsxNzA2LTB4MTFlZCk7fX1UX3pVZmlTbXNfVHBkdVR5cGUgelVmaVNtc19HZXRUcGR1VHlwZShVSU5UOCpwRGF0YSl7CitUX3pVZmlTbXNfVHBkdVR5cGUgaVRwZHVUeXBlO1VJTlQ4IG10aT0oMHgxNjYrNTY5Ny0weDE3YTcpO210aT0oCitUX3pVZmlTbXNfVHBkdVR5cGUpKHBEYXRhWygweDFkODIrMTQzMC0weDIzMTgpXSYoMHgxZDRhKzYxOS0weDFmYjIpKTtzd2l0Y2gobXRpKQore2Nhc2UoMHhkOWYrMzQ1My0weDFiMWMpOmlUcGR1VHlwZT1XTVNfVFBEVV9ERUxJVkVSO2JyZWFrO2Nhc2UoMHgyNCs4MDc0LTB4MWZhZCkKKzppVHBkdVR5cGU9V01TX1RQRFVfU1VCTUlUO2JyZWFrO2Nhc2UoMHg0ZWMrNDYzLTB4NmI5KTppVHBkdVR5cGU9CitXTVNfVFBEVV9TVEFUVVNfUkVQT1JUO2JyZWFrO2RlZmF1bHQ6aVRwZHVUeXBlPVdNU19UUERVX01BWDticmVhazt9cmV0dXJuIAoraVRwZHVUeXBlO31zdGF0aWMgdm9pZCB6VWZpU21zX0Zvcm1hdERlbGl2ZXJOdW1iZXIod21zX2FkZHJlc3Nfc190eXBlIHRBZGRyZXNzLAordW5zaWduZWQgY2hhcipwTnVtYmVyKXtVSU5UOCBudW1iZXJfdHlwZT0oMHgxN2RmKzM0NzgtMHgyNTc1KTttZW1zZXQocE51bWJlciwKKygweDIxMys1MjQtMHg0MWYpLFpURV9XTVNfQUREUkVTU19MRU5fTUFYKygweDFkYzQrMTk2NS0weDI1NzApKTtpZih0QWRkcmVzcy4KK251bWJlcl90eXBlPT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUwpe3BOdW1iZXJbKDB4NTg5KzExNzUtMHhhMjApXT0KKygoY2hhcikoMHg4ZDArNDk1OC0weDFjMDMpKTtwTnVtYmVyKys7fWlmKHRBZGRyZXNzLmRpZ2l0X21vZGUhPQogV01TX0RJR0lUX01PREVfOF9CSVQpeyh2b2lkKXpVZmlTbXNfU21zaUFkZHJUb1N0cih0QWRkcmVzcywoYnl0ZSopcE51bWJlciwmCiBudW1iZXJfdHlwZSk7fWVsc2V7bWVtY3B5KHBOdW1iZXIsdEFkZHJlc3MuZGlnaXRzLHRBZGRyZXNzLm51bWJlcl9vZl9kaWdpdHMqCi1zaXplb2YodEFkZHJlc3MuZGlnaXRzWygweDFhNzMrODAxLTB4MWQ5NCldKSk7fX1ieXRlKnpVZmlTbXNfVXRpbFRpbWVTdGFtcCgKK3NpemVvZih0QWRkcmVzcy5kaWdpdHNbKDB4MTE4MisyODMzLTB4MWM5MyldKSk7fX1ieXRlKnpVZmlTbXNfVXRpbFRpbWVTdGFtcCgKIFRfelVmaVNtc19UaW1lU3RhbXAgenRlX3dtc190aW1lLGJ5dGUqcmVzX3B0cixUX3pVZmlTbXNfRGF0ZSpkYXRlKXtVSU5UOCB0bXA7aWYoCi1OVUxMPT1kYXRlKXtyZXR1cm4gTlVMTDt9KnJlc19wdHIrKz0oKGNoYXIpKDB4YjUyKzI2MjItMHgxNTZlKSk7dG1wPXp0ZV93bXNfdGltZQotLnllYXI7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYoMHhhZDUrMjE4My0weDEzNGQpKSsoKHRtcD4+Ci0oMHg3ZDMrMzExOC0weDEzZmQpKSooMHgxMjdiKzQwLTB4MTI5OSkpLHJlc19wdHIpO3pVZmlTbXNfU3ByaW50ZlRpbWUoZGF0ZS0+eWVhcgotLHNpemVvZihkYXRlLT55ZWFyKSx6dGVfd21zX3RpbWUueWVhcik7KnJlc19wdHIrKz0oKGNoYXIpKDB4Y2U4KzI4MTMtMHgxN2I2KSk7Ci10bXA9enRlX3dtc190aW1lLm1vbnRoO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4OGE4KzM1ODQtMHgxNjk5KQotKSsoKHRtcD4+KDB4MTU1YysxMzg1LTB4MWFjMSkpKigweGJlYSsxNjI3LTB4MTIzYikpLHJlc19wdHIpO3pVZmlTbXNfU3ByaW50ZlRpbWUKLShkYXRlLT5tb250aCxzaXplb2YoZGF0ZS0+bW9udGgpLHp0ZV93bXNfdGltZS5tb250aCk7KnJlc19wdHIrKz0KLSgoY2hhcikoMHgxMmZjKzQzMDAtMHgyMzk5KSk7dG1wPXp0ZV93bXNfdGltZS5kYXk7cmVzX3B0cj0KLXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweDEzYzArNDA1NS0weDIzODgpKSsoKHRtcD4+KDB4YTUxKzY1OTgtMHgyNDEzKSkqCi0oMHgzMDErMzQ5MC0weDEwOTkpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPmRheSxzaXplb2YoZGF0ZS0+ZGF5KSwKLXp0ZV93bXNfdGltZS5kYXkpOypyZXNfcHRyKys9KChjaGFyKSgweDEwNmMrMjY2NC0weDFhYTgpKTt0bXA9enRlX3dtc190aW1lLmhvdXI7Ci1yZXNfcHRyPXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweGRmZCszNDM3LTB4MWI1YikpKygodG1wPj4KLSgweDY4NSs2MDM4LTB4MWUxNykpKigweGY3ZCszOTI1LTB4MWVjOCkpLHJlc19wdHIpO3pVZmlTbXNfU3ByaW50ZlRpbWUoZGF0ZS0+Ci1ob3VyLHNpemVvZihkYXRlLT5ob3VyKSx6dGVfd21zX3RpbWUuaG91cik7KnJlc19wdHIrKz0KLSgoY2hhcikoMHgzMDUrNTQ3Mi0weDE4MmIpKTt0bXA9enRlX3dtc190aW1lLm1pbnV0ZTtyZXNfcHRyPQotelVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4Y2U0KzY0MzgtMHgyNWZiKSkrKCh0bXA+PigweGI5OSs3NjItMHhlOGYpKSoKLSgweDEwYzcrMjUwNC0weDFhODUpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPm1pbixzaXplb2YoZGF0ZS0+bWluKSwKLXp0ZV93bXNfdGltZS5taW51dGUpOypyZXNfcHRyKys9KChjaGFyKSgweDFjYWQrMjY2NS0weDI2ZGMpKTt0bXA9enRlX3dtc190aW1lLgotc2Vjb25kO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4Y2QxKzE4NzUtMHgxNDE1KSkrKCh0bXA+PgotKDB4M2ZjKzcyLTB4NDQwKSkqKDB4ZjUzKzU3MDUtMHgyNTkyKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT5zZWMsCi1zaXplb2YoZGF0ZS0+c2VjKSx6dGVfd21zX3RpbWUuc2Vjb25kKTtpZih6dGVfd21zX3RpbWUudGltZXpvbmU8Ci0oMHhhNzArMTk5MC0weDEyMzYpKXsqcmVzX3B0cisrPSgoY2hhcikoMHg3NTkrNTgwOS0weDFkZGQpKTt0bXA9KFVJTlQ4KSgKLXp0ZV93bXNfdGltZS50aW1lem9uZSooLSgweDE3NDYrODM2LTB4MWE4OSkpKTtzbnByaW50ZihkYXRlLT50aW1lem9uZSxzaXplb2YoCi1kYXRlLT50aW1lem9uZSksIlx4MmRceDI1XHg2NCIsLSgweDk1Nis3MzE1LTB4MjVlOCkqenRlX3dtc190aW1lLnRpbWV6b25lKTt9ZWxzZQoteypyZXNfcHRyKys9KChjaGFyKSgweGVhMCs0MjItMHgxMDFiKSk7dG1wPShVSU5UOCl6dGVfd21zX3RpbWUudGltZXpvbmU7c25wcmludGYKLShkYXRlLT50aW1lem9uZSxzaXplb2YoZGF0ZS0+dGltZXpvbmUpLCJceDJiXHgyNVx4NjQiLHp0ZV93bXNfdGltZS50aW1lem9uZSk7fQotcmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwodG1wLHJlc19wdHIpOypyZXNfcHRyKys9Ci0oKGNoYXIpKDB4MTE4OCszOTI5LTB4MjBiZikpO3JldHVybiByZXNfcHRyO31UX3pVZmlTbXNfQ21kU3RhdHVzIAotelVmaVNtc19IYW5kbGVSZXBvcnQodW5zaWduZWQgY2hhcipwdFBkdURhdGEpe1RfelVmaVNtc19SYXdUc0RhdGEgdFJhd1RzRGF0YTsKLVRfelVmaVNtc19DbGllbnRUc0RhdGEgdENsaWVudFRzRGF0YTtpbnQgaVJlcG9ydFN0YXR1cz0oMHgxODJkKzM2NjgtMHgyNjgxKTsKLXVuc2lnbmVkIGNoYXIgYWNEZWxpdmVyTnVtYmVyW1pURV9XTVNfQUREUkVTU19MRU5fTUFYKygweDE4YSs2MDg4LTB4MTk1MSldOwotdW5zaWduZWQgY2hhciB0VHBTY3RzW1pURV9XTVNfVFBfU0NUU19MRU5fTUFYKygweDFiMWErMTI2NS0weDIwMGEpXTsKLVRfelVmaVNtc19EYXRlIHRTbXNEYXRlO2NoYXIgYWNSZWNGbGFnWygweDEwNmMrNTI1NS0weDI0ZWUpXT17KDB4NjhmKzQ5LTB4NmMwKX07Ci1pbnQgaVJwQ291bnQ9KDB4MTg2YSsyODYzLTB4MjM5OSk7Y2hhciB0bXBbKDB4OWQ5KzUwMzEtMHgxZDc2KV07aW50IHRtcF9pPQotKDB4MTJmKzEyOC0weDFhZik7dW5zaWduZWQgaW50IHBvcz0oMHhlYzQrNTAwMC0weDIyNGMpO2lmKE5VTEw9PXB0UGR1RGF0YSl7Ci1yZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbXNldChhY0RlbGl2ZXJOdW1iZXIsKDB4MTkzNys4MS0weDE5ODgpLHNpemVvZigKLWFjRGVsaXZlck51bWJlcikpO21lbXNldCgmdFNtc0RhdGUsKDB4MTRiKzIwMjktMHg5MzgpLHNpemVvZihUX3pVZmlTbXNfRGF0ZSkpOwotbWVtc2V0KHRUcFNjdHMsKDB4MTNjZCsxNDE0LTB4MTk1Myksc2l6ZW9mKHRUcFNjdHMpKTttZW1zZXQoJnRSYXdUc0RhdGEsCi0oMHgxNTIyKzcyNy0weDE3ZjkpLHNpemVvZihUX3pVZmlTbXNfUmF3VHNEYXRhKSk7bWVtc2V0KCZ0Q2xpZW50VHNEYXRhLAotKDB4MzBiKzE1MzAtMHg5MDUpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKSk7c25wcmludGYodG1wLHNpemVvZih0bXApLAotIlx4MjVceDU4IixwdFBkdURhdGFbKDB4Y2FmKzU3MjktMHgyMzEwKV0pO3RtcF9pPWF0b2kodG1wKTtpZih0bXBfaTwKLSgweDFkYzkrMTIyNi0weDIyOTMpfHx0bXBfaT5JTlRfTUFYLSgweDExZDYrNjkwLTB4MTQ4Nykpe2F0X3ByaW50KExPR19FUlIsCitOVUxMPT1kYXRlKXtyZXR1cm4gTlVMTDt9KnJlc19wdHIrKz0oKGNoYXIpKDB4ZTcxKzU5NDAtMHgyNTgzKSk7dG1wPXp0ZV93bXNfdGltZQorLnllYXI7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYoMHgxNWIxKzQzOTEtMHgyNmM5KSkrKCh0bXA+PgorKDB4NGM4KzEwMzctMHg4ZDEpKSooMHgxNDVjKzE1MzgtMHgxYTU0KSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT4KK3llYXIsc2l6ZW9mKGRhdGUtPnllYXIpLHp0ZV93bXNfdGltZS55ZWFyKTsqcmVzX3B0cisrPQorKChjaGFyKSgweDIzNDArNTgzLTB4MjU1OCkpO3RtcD16dGVfd21zX3RpbWUubW9udGg7cmVzX3B0cj0KK3pVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweGI3ZiszNjQtMHhjZGMpKSsoKHRtcD4+KDB4MTJmMSs1MTAyLTB4MjZkYikpKgorKDB4MTUzMSs0MTE5LTB4MjUzZSkpLHJlc19wdHIpO3pVZmlTbXNfU3ByaW50ZlRpbWUoZGF0ZS0+bW9udGgsc2l6ZW9mKGRhdGUtPgorbW9udGgpLHp0ZV93bXNfdGltZS5tb250aCk7KnJlc19wdHIrKz0oKGNoYXIpKDB4MTRiZCszNDUtMHgxNWU3KSk7dG1wPQorenRlX3dtc190aW1lLmRheTtyZXNfcHRyPXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweDFkZmYrMzYyLTB4MWY1YSkpKygoCit0bXA+PigweGNkMis0NTQyLTB4MWU4YykpKigweDE0MTIrMzkxNS0weDIzNTMpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKAorZGF0ZS0+ZGF5LHNpemVvZihkYXRlLT5kYXkpLHp0ZV93bXNfdGltZS5kYXkpOypyZXNfcHRyKys9CisoKGNoYXIpKDB4NGIrNTIzMC0weDE0OGQpKTt0bXA9enRlX3dtc190aW1lLmhvdXI7cmVzX3B0cj0KK3pVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweGY1Mys1MjMxLTB4MjNiMykpKygodG1wPj4oMHgxODQ4KzIwMDYtMHgyMDFhKSkqCisoMHgyZjYrMzkzNi0weDEyNGMpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPmhvdXIsc2l6ZW9mKGRhdGUtPmhvdXIpLAorenRlX3dtc190aW1lLmhvdXIpOypyZXNfcHRyKys9KChjaGFyKSgweDIyZCs4MjU1LTB4MjIzMikpO3RtcD16dGVfd21zX3RpbWUuCittaW51dGU7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYoMHhlMzArNDIwNi0weDFlOGYpKSsoKHRtcD4+CisoMHhjZTArNjQwOS0weDI1ZTUpKSooMHg0ZjcrMjg3OC0weDEwMmIpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPm1pbgorLHNpemVvZihkYXRlLT5taW4pLHp0ZV93bXNfdGltZS5taW51dGUpOypyZXNfcHRyKys9KChjaGFyKSgweDIzNisxODQxLTB4OTJkKSk7Cit0bXA9enRlX3dtc190aW1lLnNlY29uZDtyZXNfcHRyPXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJgorKDB4YjA1KzYzNDItMHgyM2JjKSkrKCh0bXA+PigweDk5OCs5Ny0weDlmNSkpKigweDE5MTkrMTA1OS0weDFkMzIpKSxyZXNfcHRyKTsKK3pVZmlTbXNfU3ByaW50ZlRpbWUoZGF0ZS0+c2VjLHNpemVvZihkYXRlLT5zZWMpLHp0ZV93bXNfdGltZS5zZWNvbmQpO2lmKAorenRlX3dtc190aW1lLnRpbWV6b25lPCgweGZkNSs0MTEzLTB4MWZlNikpeypyZXNfcHRyKys9CisoKGNoYXIpKDB4MTczOCsyMzY1LTB4MjA0OCkpO3RtcD0oVUlOVDgpKHp0ZV93bXNfdGltZS50aW1lem9uZSooLQorKDB4ODhmKzU1MDUtMHgxZTBmKSkpO3NucHJpbnRmKGRhdGUtPnRpbWV6b25lLHNpemVvZihkYXRlLT50aW1lem9uZSksCisiXHgyZFx4MjVceDY0IiwtKDB4MmJkKzM4ODktMHgxMWVkKSp6dGVfd21zX3RpbWUudGltZXpvbmUpO31lbHNleypyZXNfcHRyKys9CisoKGNoYXIpKDB4MWI3KzcyNjktMHgxZGYxKSk7dG1wPShVSU5UOCl6dGVfd21zX3RpbWUudGltZXpvbmU7c25wcmludGYoZGF0ZS0+Cit0aW1lem9uZSxzaXplb2YoZGF0ZS0+dGltZXpvbmUpLCJceDJiXHgyNVx4NjQiLHp0ZV93bXNfdGltZS50aW1lem9uZSk7fXJlc19wdHI9Cit6VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwodG1wLHJlc19wdHIpOypyZXNfcHRyKys9KChjaGFyKSgweDFiMDcrMjk2LTB4MWMwZCkpOworcmV0dXJuIHJlc19wdHI7fVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19IYW5kbGVSZXBvcnQodW5zaWduZWQgY2hhcipwdFBkdURhdGEKKyl7VF96VWZpU21zX1Jhd1RzRGF0YSB0UmF3VHNEYXRhO1RfelVmaVNtc19DbGllbnRUc0RhdGEgdENsaWVudFRzRGF0YTtpbnQgCitpUmVwb3J0U3RhdHVzPSgweDUzNys0Nzg3LTB4MTdlYSk7dW5zaWduZWQgY2hhciBhY0RlbGl2ZXJOdW1iZXJbCitaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHg0MjQrODgwOS0weDI2OGMpXTt1bnNpZ25lZCBjaGFyIHRUcFNjdHNbCitaVEVfV01TX1RQX1NDVFNfTEVOX01BWCsoMHgyNWY5KzI0NC0weDI2ZWMpXTtUX3pVZmlTbXNfRGF0ZSB0U21zRGF0ZTtjaGFyIAorYWNSZWNGbGFnWygweDMyKzgzNi0weDM3MSldPXsoMHgzNGErOTYzLTB4NzBkKX07aW50IGlScENvdW50PSgweDMyOSs0NzYyLTB4MTVjMykKKztjaGFyIHRtcFsoMHhhYTErMjIxNC0weDEzM2QpXTtpbnQgdG1wX2k9KDB4NzYxKzc4MjUtMHgyNWYyKTt1bnNpZ25lZCBpbnQgcG9zPQorKDB4OGY2KzIwNzQtMHgxMTEwKTtpZihOVUxMPT1wdFBkdURhdGEpe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9bWVtc2V0KAorYWNEZWxpdmVyTnVtYmVyLCgweDEyOWYrNDM5Mi0weDIzYzcpLHNpemVvZihhY0RlbGl2ZXJOdW1iZXIpKTttZW1zZXQoJnRTbXNEYXRlLAorKDB4MTNkNSs0MjM1LTB4MjQ2MCksc2l6ZW9mKFRfelVmaVNtc19EYXRlKSk7bWVtc2V0KHRUcFNjdHMsKDB4ZmVhKzM3NTYtMHgxZTk2KSwKK3NpemVvZih0VHBTY3RzKSk7bWVtc2V0KCZ0UmF3VHNEYXRhLCgweDU2MSszNDM3LTB4MTJjZSksc2l6ZW9mKAorVF96VWZpU21zX1Jhd1RzRGF0YSkpO21lbXNldCgmdENsaWVudFRzRGF0YSwoMHg0NTErODAyOS0weDIzYWUpLHNpemVvZigKK1RfelVmaVNtc19DbGllbnRUc0RhdGEpKTtzbnByaW50Zih0bXAsc2l6ZW9mKHRtcCksIlx4MjVceDU4IixwdFBkdURhdGFbCisoMHgyZjIrNzEwNS0weDFlYjMpXSk7dG1wX2k9YXRvaSh0bXApO2lmKHRtcF9pPCgweDEwMjYrNDA2NS0weDIwMDcpfHx0bXBfaT4KK0lOVF9NQVgtKDB4MTM4KzI1MDktMHhiMDQpKXthdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg3MFx4NzRceDUwXHg2NFx4NzVceDQ0XHg2MVx4NzRceDYxXHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fXBvcz10bXBfaSsoMHgxNzcrMTIwNy0weDYyZCk7aWYocG9zPj0KKyx0bXBfaSk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31wb3M9dG1wX2krKDB4MTBiMys1MDI1LTB4MjQ1Myk7aWYocG9zPj0KIFpTTVNfUERVX1NJWkUpe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9bWVtY3B5KCh2b2lkKil0UmF3VHNEYXRhLmRhdGEsKHZvaWQqKSgKIHB0UGR1RGF0YStwb3MpLHNpemVvZih0UmF3VHNEYXRhLmRhdGEpKTt0UmF3VHNEYXRhLnRwZHVfdHlwZT16VWZpU21zX0dldFRwZHVUeXBlCiAocHRQZHVEYXRhK3Bvcyk7dFJhd1RzRGF0YS5mb3JtYXQ9V01TX0ZPUk1BVF9HV19QUDsodm9pZCl3bXNfdHNfZGVjb2RlKCYKQEAgLTkzNCw1OSArOTM5LDU5IEBACiAiXHg2NFx4NmZceDY1XHg3M1x4MjBceDZlXHg2Zlx4NzRceDIwXHg2N1x4NzdceDJmXHg3N1x4NjNceDY0XHg2ZFx4NjFceDIwXHg3M1x4NmRceDczXHgyMFx4NzJceDY1XHg3MFx4NmZceDcyXHg3NFx4MjBceDczXHg3NFx4NjFceDc0XHg3NVx4NzNceDJlIgogKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fXN3aXRjaCh0Q2xpZW50VHNEYXRhLnUuZ3dfcHAudS5zdGF0dXNfcmVwb3J0LnRwX3N0YXR1cykKIHtjYXNlIFdNU19UUF9TVEFUVVNfUkVDRUlWRURfT0s6Y2FzZSBXTVNfVFBfU1RBVFVTX1VOQUJMRV9UT19DT05GSVJNX0RFTElWRVJZOgotY2FzZSBXTVNfVFBfU1RBVFVTX1JFUExBQ0VEOntpUmVwb3J0U3RhdHVzPSgweGUwMSs2MTktMHgxMDZiKTticmVhazt9Y2FzZSAKK2Nhc2UgV01TX1RQX1NUQVRVU19SRVBMQUNFRDp7aVJlcG9ydFN0YXR1cz0oMHhhOTUrMTg5LTB4YjUxKTticmVhazt9Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX0NPTkdFU1RJT046Y2FzZSBXTVNfVFBfU1RBVFVTX1RSWUlOR19TTUVfQlVTWTpjYXNlIAogV01TX1RQX1NUQVRVU19UUllJTkdfTk9fUkVTUE9OU0VfRlJPTV9TTUU6Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX1NFUlZJQ0VfUkVKRUNURUQ6Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX1FPU19OT1RfQVZBSUxBQkxFOmNhc2UgV01TX1RQX1NUQVRVU19UUllJTkdfU01FX0VSUk9SOnsKLWlSZXBvcnRTdGF0dXM9KDB4MTQyNSs2NDEtMHgxNmEzKTticmVhazt9ZGVmYXVsdDp7aVJlcG9ydFN0YXR1cz0KLSgweGNkOCs3MDMtMHhmOTUpO2JyZWFrO319elVmaVNtc19Gb3JtYXREZWxpdmVyTnVtYmVyKHRDbGllbnRUc0RhdGEudS5nd19wcC51LgoraVJlcG9ydFN0YXR1cz0oMHgxODhmKzk1LTB4MThlYik7YnJlYWs7fWRlZmF1bHQ6e2lSZXBvcnRTdGF0dXM9CisoMHgzNWMrNTQ1Ni0weDE4YWEpO2JyZWFrO319elVmaVNtc19Gb3JtYXREZWxpdmVyTnVtYmVyKHRDbGllbnRUc0RhdGEudS5nd19wcC51Lgogc3RhdHVzX3JlcG9ydC5hZGRyZXNzLGFjRGVsaXZlck51bWJlcik7KHZvaWQpelVmaVNtc19VdGlsVGltZVN0YW1wKHRDbGllbnRUc0RhdGEKIC51Lmd3X3BwLnUuc3RhdHVzX3JlcG9ydC50aW1lc3RhbXAsdFRwU2N0cywmdFNtc0RhdGUpO2lmKFpVRklfRkFJTD09CiB6VWZpU21zX0luc2VydFJlcG9ydFN0YXR1c1RvRGIoYWNEZWxpdmVyTnVtYmVyLCZ0U21zRGF0ZSxpUmVwb3J0U3RhdHVzKSl7CiBhdF9wcmludChMT0dfRVJSLAogIlx4NzVceDcwXHg2NFx4NjFceDc0XHg2NVx4MjBceDczXHg2ZFx4NzNceDIwXHg3Mlx4NjVceDcwXHg2Zlx4NzJceDc0XHgyMFx4NzNceDc0XHg2MVx4NzRceDc1XHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDJlIgotKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbXNldChhY1JlY0ZsYWcsKDB4YjkxKzU0MzEtMHgyMGM4KSxzaXplb2YoYWNSZWNGbGFnKSkKLTtzY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU01TX1JFUE9SVCxhY1JlY0ZsYWcsc2l6ZW9mKGFjUmVjRmxhZykpO2lScENvdW50PQotYXRvaShhY1JlY0ZsYWcpO2lmKGlScENvdW50PCgweDEwYWIrNjIxLTB4MTMxOCl8fGlScENvdW50PklOVF9NQVgtCi0oMHhjNjgrMjIyMi0weDE1MTUpKXthdF9wcmludChMT0dfRVJSLAorKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbXNldChhY1JlY0ZsYWcsKDB4MTJiNysyODk3LTB4MWUwOCksc2l6ZW9mKGFjUmVjRmxhZykKKyk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NNU19SRVBPUlQsYWNSZWNGbGFnLHNpemVvZihhY1JlY0ZsYWcpKTtpUnBDb3VudD0KK2F0b2koYWNSZWNGbGFnKTtpZihpUnBDb3VudDwoMHhjMzMrNDAyNi0weDFiZWQpfHxpUnBDb3VudD5JTlRfTUFYLQorKDB4MWNjNCsxNTg3LTB4MjJmNikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDY5XHg1Mlx4NzBceDQzXHg2Zlx4NzVceDZlXHg3NFx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSxpUnBDb3VudCk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31tZW1zZXQoYWNSZWNGbGFnLCgweDc0OSszOTItMHg4ZDEpLHNpemVvZigKKyxpUnBDb3VudCk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31tZW1zZXQoYWNSZWNGbGFnLCgweDEyYTIrNDA1Ni0weDIyN2EpLHNpemVvZigKIGFjUmVjRmxhZykpO3NucHJpbnRmKGFjUmVjRmxhZyxzaXplb2YoYWNSZWNGbGFnKSwiXHgyNVx4NjQiLGlScENvdW50KwotKDB4MmFmKzc4NTAtMHgyMTU4KSk7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NNU19SRVBPUlQsYWNSZWNGbGFnKTtyZXR1cm4gCisoMHg1ZmIrMTkxNC0weGQ3NCkpO3NjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19TTVNfUkVQT1JULGFjUmVjRmxhZyk7cmV0dXJuIAogV01TX0NNRF9TVUNDRVNTO312b2lkIHpVZmlTbXNfRGVsTW9kZW1TbXMoaW50IGluX2luZGV4KXsKLSNpZiAoMHhhMTIrMzE1MS0weDE2NjEpIAotY2hhciBTdHJWYWx1ZVsoMHgyMzNjKzk2MS0weDI2ZjMpXT17KDB4MTBjKzQwMjUtMHgxMGM1KX07cHJpbnRmKAorI2lmICgweDVjMSszMzUzLTB4MTJkYSkgCitjaGFyIFN0clZhbHVlWygweDFiNis2MTEzLTB4MTk4ZCldPXsoMHg0OGIrMzU0OC0weDEyNjcpfTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDRkXHg2Zlx4NjRceDY1XHg2ZFx4NTNceDZkXHg3M1x4MjBceDY2XHg3NVx4NmVceDIwXHg3NVx4NzNceDY1XHg2NFx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjEiICJcbiIKICk7c25hdF9wcmludChMT0dfREVCVUdTdHJWYWx1ZSxzaXplb2YoU3RyVmFsdWUpLCJceDI1XHg2NCIsaW5faW5kZXgpOwogelN2cl9Jbm5lclNlbmRNc2coWlVGSV9NT0RVTEVfSURfQVRfTE9DQUwsWlVGSV9NT0RVTEVfSURfQVRfVU5TT0xJLAogTVNHX0NNRF9BVF9ERUxfU0lNX1NNUyxzdHJsZW4oU3RyVmFsdWUpLFN0clZhbHVlKTsKICNlbmRpZg0KLWludCBhdFJlcz0oMHgxYTQyKzg0Ni0weDFkOTApO2F0UmVzPXpTbXNfU2VuZENtZ2RSZXEoaW5faW5kZXgpO2lmKGF0UmVzPT0KK2ludCBhdFJlcz0oMHgxMTRiKzM3MjctMHgxZmRhKTthdFJlcz16U21zX1NlbmRDbWdkUmVxKGluX2luZGV4KTtpZihhdFJlcz09CiBaU01TX1JFU1VMVF9PSyl7elNtc19SZWN2Q21nZE9rKCk7fWVsc2V7elNtc19SZWN2Q21nZEVycigpO316U21zX1JlY3ZDbWdkRmluaXNoKAogKTt9Vk9JRCB6VWZpU21zX2dldE1vZGlmeUluZm8oVF96VWZpU21zX01vZGlmeUZsYWcqcHRNb2RpZnlCdWZmKXtpbnQgaT0KLSgweDE4NTYrOTE0LTB4MWJlOCk7bWVtc2V0KCZnX3pVZmlTbXNfbW9kaWZ5TXNnLCgweDIzYzgrMjktMHgyM2U1KSxzaXplb2YoCi1UX3pVZmlTbXNfTW9kaWZ5U21zKSk7Zm9yKGk9KDB4MTkzOCs2NTctMHgxYmM5KTtpPHB0TW9kaWZ5QnVmZi0+dG90YWxfaWQ7aSsrKXsKKygweDE2ZDMrNjYzLTB4MTk2YSk7bWVtc2V0KCZnX3pVZmlTbXNfbW9kaWZ5TXNnLCgweDFhYys3MTc2LTB4MWRiNCksc2l6ZW9mKAorVF96VWZpU21zX01vZGlmeVNtcykpO2ZvcihpPSgweDU5OCs2ODY5LTB4MjA2ZCk7aTxwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkO2krKyl7CiBnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pZFtnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9jb3VudF09cHRNb2RpZnlCdWZmLT5pZFtpXTsKIGdfelVmaVNtc19tb2RpZnlNc2cuc2ltX2NvdW50Kys7Z196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXhfY291bnQrKzt9fWludCAKLXpVZmlTbXNfR2V0VW5yZWFkU21zSW5kZXhJblNpbSgpe2NoYXIgc3RyX2luZGV4WygweDEwMDgrNDYzOC0weDIxYTYpXT17Ci0oMHhiYSs4NDA0LTB4MjE4ZSl9O2ludCBpbmRleD0oMHg5N2MrNDQxNS0weDFhYmIpO2ludCBpc19jYz0oMHgyMzY5KzEwMC0weDIzY2QpOwotaW50IGlTbXNJZD0oMHg2YmYrOTY0LTB4YTgzKTtUX3pVZmlTbXNfTW9kaWZ5VGFnIHRNb2RpZnlJbmZvPXsKLSgweDVhOSs3MjQ1LTB4MjFmNil9O2NoYXIgU3RyVmFsdWVbKDB4MTYzNCsyMDgzLTB4MWU0ZCldPXsoMHhjZDIrMjkzLTB4ZGY3KX07Ci1tZW1zZXQoJnRNb2RpZnlJbmZvLCgweDE1YTErMTc4My0weDFjOTgpLHNpemVvZihUX3pVZmlTbXNfTW9kaWZ5VGFnKSk7aVNtc0lkPQotZ196VWZpU21zX21vZGlmeU1zZy5zaW1faWRbZ196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXhdO2lmKC0KLSgweDIzYWMrNjE3LTB4MjYxNCk9PShpc19jYz16VWZpU21zX0lzQ29uY2F0U21zKGlTbXNJZCkpKXthdF9wcmludChMT0dfRVJSLAorelVmaVNtc19HZXRVbnJlYWRTbXNJbmRleEluU2ltKCl7Y2hhciBzdHJfaW5kZXhbKDB4MTI4Mis0MDQ0LTB4MjFjZSldPXsKKygweDk3Nys2MTI4LTB4MjE2Nyl9O2ludCBpbmRleD0oMHgxM2U4KzQxNDYtMHgyNDFhKTtpbnQgaXNfY2M9CisoMHgyMWYrNjg2OS0weDFjZjQpO2ludCBpU21zSWQ9KDB4NzcwKzcyMi0weGE0Mik7VF96VWZpU21zX01vZGlmeVRhZyB0TW9kaWZ5SW5mbworPXsoMHg0ZTgrODU5Ni0weDI2N2MpfTtjaGFyIFN0clZhbHVlWygweGI2Zis1MzcwLTB4MjA1ZildPXsoMHgyZTMrNTMyMi0weDE3YWQpfTsKK21lbXNldCgmdE1vZGlmeUluZm8sKDB4MTBjMSsxNzIyLTB4MTc3Yiksc2l6ZW9mKFRfelVmaVNtc19Nb2RpZnlUYWcpKTtpU21zSWQ9CitnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pZFtnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pbmRleF07aWYoLSgweDE2MTMrOTItMHgxNjZlKQorPT0oaXNfY2M9elVmaVNtc19Jc0NvbmNhdFNtcyhpU21zSWQpKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDYzXHg2OFx4NjVceDYzXHg2Ylx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIKICk7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg1NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1M1x4NmRceDczXHg0OVx4NmVceDY0XHg2NVx4NzhceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDY5XHg3M1x4NWZceDYzXHg2M1x4M2FceDI1XHg2NCIKLSxpc19jYyk7aWYoKDB4OGI4KzUwNzQtMHgxYzg5KT09aXNfY2Mpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTbXNJbmRleChpU21zSWQsCissaXNfY2MpO2lmKCgweDEzZDIrMjA0LTB4MTQ5ZCk9PWlzX2NjKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U21zSW5kZXgoaVNtc0lkLAogJnRNb2RpZnlJbmZvLGlzX2NjKSl7cmV0dXJuIFpVRklfRkFJTDt9Z196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXgrKzsKIGdfelVmaVNtc19tb2RpZnlNc2cuc2ltX2luZGV4X2NvdW50LS07d2hpbGUodE1vZGlmeUluZm8ubnVtX29mX2luZGljZXM+Ci0oMHg1OWErNTQ0Ni0weDFhZTApKXtpbmRleD10TW9kaWZ5SW5mby5pbmRpY2VzW3RNb2RpZnlJbmZvLmlkX2luZGV4XTsKKygweDE5YTkrMzIyNS0weDI2NDIpKXtpbmRleD10TW9kaWZ5SW5mby5pbmRpY2VzW3RNb2RpZnlJbmZvLmlkX2luZGV4XTsKIGdfbW9kaWZ5SW5kZXguaW5kZXhbZ19tb2RpZnlJbmRleC50b3RhbF09aW5kZXg7Z19tb2RpZnlJbmRleC50b3RhbCsrO3RNb2RpZnlJbmZvCiAuaWRfaW5kZXgrKzt0TW9kaWZ5SW5mby5udW1fb2ZfaW5kaWNlcy0tO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDdceDY1XHg3NFx4NTVceDZlXHg3Mlx4NjVceDYxXHg2NFx4NTNceDZkXHg3M1x4NDlceDZlXHg2NFx4NjVceDc4XHg0OVx4NmVceDUzXHg2OVx4NmRceDIwXHg1Ylx4MzFceDIwXHgzZFx4M2RceDIwXHg2OVx4NzNceDVmXHg2M1x4NjNceDVkXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjVceDY0IiAiXG4iCi0saW5kZXgsZ19tb2RpZnlJbmRleC50b3RhbCk7fX1lbHNle21lbXNldChzdHJfaW5kZXgsKDB4ZjkrNTcxMi0weDE3NDkpLHNpemVvZigKKyxpbmRleCxnX21vZGlmeUluZGV4LnRvdGFsKTt9fWVsc2V7bWVtc2V0KHN0cl9pbmRleCwoMHg5MTgrNDMzLTB4YWM5KSxzaXplb2YoCiBzdHJfaW5kZXgpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKCJceDY5XHg2ZVx4NjQiLHN0cl9pbmRleCwKIHNpemVvZihzdHJfaW5kZXgpLGlTbXNJZCkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg2N1x4NjVceDc0XHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHg2NFx4NjJceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjRceDJlIgpAQCAtOTk1LDE0ICsxMDAwLDE0IEBACiBnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pbmRleF9jb3VudC0tO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDdceDY1XHg3NFx4NTVceDZlXHg3Mlx4NjVceDYxXHg2NFx4NTNceDZkXHg3M1x4NDlceDZlXHg2NFx4NjVceDc4XHg0OVx4NmVceDUzXHg2OVx4NmRceDIwXHg1Ylx4MzFceDIwXHgyMVx4M2RceDIwXHg2OVx4NzNceDVmXHg2M1x4NjNceDVkXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NFx4MmNceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyNVx4NjQiICJcbiIKICxpbmRleCxnX21vZGlmeUluZGV4LnRvdGFsKTt9cmV0dXJuIFpVRklfU1VDQzt9dm9pZCB6VWZpU21zX01vZGlmeU1vZGVtU21zKAotVF96VWZpU21zX01vZGlmeUZsYWcqcHRNb2RpZnlCdWZmKXtpbnQgYXRSZXM9KDB4Y2IrNjYzMi0weDFhYjMpO2NoYXIgU3RyVmFsdWVbCi0oMHgxMmQyKzIxMzQtMHgxYjFlKV09eygweDNkOSsyMzEwLTB4Y2RmKX07cHJpbnRmKAorVF96VWZpU21zX01vZGlmeUZsYWcqcHRNb2RpZnlCdWZmKXtpbnQgYXRSZXM9KDB4MWJlZisxNDY4LTB4MjFhYik7Y2hhciBTdHJWYWx1ZVsKKygweDYwNSs2ODE5LTB4MjA5ZSldPXsoMHgxMjNmKzM5ODctMHgyMWQyKX07cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0ZFx4NmZceDY0XHg2OVx4NjZceDc5XHg0ZFx4NmZceDY0XHg2NVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3MFx4NzRceDRkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDQyXHg3NVx4NjZceDY2XHgyZFx4M2VceDc0XHg3OVx4NzBceDY1XHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCiAscHRNb2RpZnlCdWZmLT50eXBlKTt7elVmaVNtc19nZXRNb2RpZnlJbmZvKHB0TW9kaWZ5QnVmZik7bWVtc2V0KCZnX21vZGlmeUluZGV4LAotKDB4MmRjKzUwODAtMHgxNmI0KSxzaXplb2YoVF96VWZpU21zX01vZGlmeUluZGV4SW5mbykpO3ByaW50ZigKKygweDYwOSsyNzkzLTB4MTBmMiksc2l6ZW9mKFRfelVmaVNtc19Nb2RpZnlJbmRleEluZm8pKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDRkXHg2Zlx4NjRceDY1XHg2ZFx4NTNceDZkXHg3M1x4MjBceDcwXHg3NFx4NGRceDZmXHg2NFx4NjlceDY2XHg3OVx4NDJceDc1XHg2Nlx4NjZceDJkXHgzZVx4NzRceDZmXHg3NFx4NjFceDZjXHg1Zlx4NjlceDY0XHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCiAscHRNb2RpZnlCdWZmLT50b3RhbF9pZCk7d2hpbGUoZ196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXhfY291bnQ+Ci0oMHgxMGFmKzE1NC0weDExNDkpKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0VW5yZWFkU21zSW5kZXhJblNpbSgpKXthdF9wcmludCgKKygweDFlMSs2Njk0LTB4MWMwNykpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRVbnJlYWRTbXNJbmRleEluU2ltKCkpe2F0X3ByaW50KAogTE9HX0VSUiwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2MVx4NmNceDZjXHgzYVx4MjVceDY0XHgyMFx4NzNceDZkXHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjQiICJcbiIKICxXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEpO3JldHVybjt9fXdoaWxlKGdfbW9kaWZ5SW5kZXguY3VyX2luZGV4PGdfbW9kaWZ5SW5kZXguCkBAIC0xMDIxLDIyICsxMDI2LDIyIEBACiB6VWZpU21zX0RlY29kZVNtc0RhdGEoVF96VWZpU21zX0RiU3RvcmVEYXRhKnBEYl9EYXRhLGludCBtc2dfaW5kZXgsCiB6VWZpU21zX1N0b3JlVHlwZSBpU3RvcmVQb3MsVF9TbXNTdGF0dXMgYlNtc19TdGF0dXMsd21zX21lc3NhZ2VfZm9ybWF0X2VudW1fdjAxIAogZm9ybWF0LGxvbmcgaVBkdV9MZW4sdW5zaWduZWQgY2hhcipwUGR1X1JlY2VpdmVkKXtUX3pVZmlTbXNfUmF3VHNEYXRhIHJhd190czsKLVRfelVmaVNtc19DbGllbnRUc0RhdGEgdHNfZGF0YV9wdHI7Y2hhciB0bXBbKDB4MTk5ZCs0MDItMHgxYjI1KV07aW50IHRtcF9pPQotKDB4MTI5MCsyNTcyLTB4MWM5Yyk7dW5zaWduZWQgaW50IHBvcz0oMHhiMGMrNTM3LTB4ZDI1KTtpbnQgcmVzdWx0PVpVRklfU1VDQztpZigKK1RfelVmaVNtc19DbGllbnRUc0RhdGEgdHNfZGF0YV9wdHI7Y2hhciB0bXBbKDB4MTg0YisyNjg1LTB4MjJiZSldO2ludCB0bXBfaT0KKygweDIzYysyOTgwLTB4ZGUwKTt1bnNpZ25lZCBpbnQgcG9zPSgweDIyMTErMzc5LTB4MjM4Yyk7aW50IHJlc3VsdD1aVUZJX1NVQ0M7aWYoCiBOVUxMPT1wRGJfRGF0YSl7cmV0dXJuIFpVRklfRkFJTDt9cERiX0RhdGEtPm1lbV9zdG9yZT0odW5zaWduZWQgbG9uZylpU3RvcmVQb3M7CiBwRGJfRGF0YS0+aW5kZXg9KHVuc2lnbmVkIHNob3J0KW1zZ19pbmRleDtpZihSRUNFSVZFRF9VTlJFQUQ9PWJTbXNfU3RhdHVzKXsKIHBEYl9EYXRhLT50YWc9V01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMTt9ZWxzZSBpZihSRUNFSVZFRF9SRUFEPT1iU21zX1N0YXR1cyl7CiBwRGJfRGF0YS0+dGFnPVdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTt9ZWxzZSBpZihTVE9SRURfVU5TRU5EPT1iU21zX1N0YXR1cyl7CiBwRGJfRGF0YS0+dGFnPVdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE7fWVsc2V7cERiX0RhdGEtPnRhZz0KIFdNU19UQUdfVFlQRV9NT19TRU5UX1YwMTt9cERiX0RhdGEtPm1vZGU9KHVuc2lnbmVkIHNob3J0KWZvcm1hdDttZW1zZXQoJnJhd190cywKLSgweDEyZjIrMzg4Mi0weDIyMWMpLHNpemVvZihUX3pVZmlTbXNfUmF3VHNEYXRhKSk7bWVtc2V0KCZ0c19kYXRhX3B0ciwKLSgweDVjMSs3My0weDYwYSksc2l6ZW9mKHdtc19jbGllbnRfdHNfZGF0YV9zX3R5cGUpKTttZW1zZXQodG1wLAotKDB4MWNjKzc0MDAtMHgxZWI0KSxzaXplb2YodG1wKSk7c25wcmludGYodG1wLHNpemVvZih0bXApLCJceDI1XHg2NCIsCi1wUGR1X1JlY2VpdmVkWygweDFjNCs1NzUxLTB4MTgzYildKTt0bXBfaT1hdG9pKHRtcCk7aWYodG1wX2k8KDB4MjA2YiszNjctMHgyMWRhKQotfHx0bXBfaT5JTlRfTUFYLSgweDE4NWErMjQ0LTB4MTk0ZCkpe2F0X3ByaW50KExPR19FUlIsCisoMHg1ODkrNjEzNy0weDFkODIpLHNpemVvZihUX3pVZmlTbXNfUmF3VHNEYXRhKSk7bWVtc2V0KCZ0c19kYXRhX3B0ciwKKygweDFiMjgrMTcwMC0weDIxY2MpLHNpemVvZih3bXNfY2xpZW50X3RzX2RhdGFfc190eXBlKSk7bWVtc2V0KHRtcCwKKygweGQyYisyMTM1LTB4MTU4Miksc2l6ZW9mKHRtcCkpO3NucHJpbnRmKHRtcCxzaXplb2YodG1wKSwiXHgyNVx4NjQiLAorcFBkdV9SZWNlaXZlZFsoMHg2MTMrMzg3Ni0weDE1MzcpXSk7dG1wX2k9YXRvaSh0bXApO2lmKHRtcF9pPAorKDB4MTViNis0MTU0LTB4MjVmMCl8fHRtcF9pPklOVF9NQVgtKDB4MTI5Nis0NzU3LTB4MjUyYSkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDcwXHg1MFx4NjRceDc1XHg1Zlx4NTJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4gWlVGSV9GQUlMO31wb3M9dG1wX2krKDB4ZDFiKzQ4Ni0weGYwMCk7aWYocG9zPj1pUGR1X0xlbil7cmV0dXJuIAotWlVGSV9GQUlMO31yYXdfdHMubGVuPWlQZHVfTGVuLXBvczttZW1jcHkoKHZvaWQqKXJhd190cy5kYXRhLCh2b2lkKikoCissdG1wX2kpO3JldHVybiBaVUZJX0ZBSUw7fXBvcz10bXBfaSsoMHgxNmRhKzI1MzktMHgyMGM0KTtpZihwb3M+PWlQZHVfTGVuKXsKK3JldHVybiBaVUZJX0ZBSUw7fXJhd190cy5sZW49aVBkdV9MZW4tcG9zO21lbWNweSgodm9pZCopcmF3X3RzLmRhdGEsKHZvaWQqKSgKIHBQZHVfUmVjZWl2ZWQrcG9zKSxXTVNfTUFYX0xFTik7cmF3X3RzLnRwZHVfdHlwZT16VWZpU21zX0dldFRwZHVUeXBlKAogcFBkdV9SZWNlaXZlZCtwb3MpO3Jhd190cy5mb3JtYXQ9KFdNU19NRVNTQUdFX0ZPUk1BVF9DRE1BX1YwMT09Zm9ybWF0KT8KIFdNU19GT1JNQVRfQ0RNQTpXTVNfRk9STUFUX0dXX1BQOyh2b2lkKXdtc190c19kZWNvZGUoJnJhd190cywmdHNfZGF0YV9wdHIpOwpAQCAtMTA0NSw2MiArMTA1MCw2MiBAQAogcERiX0RhdGEpO2JyZWFrO31jYXNlIFdNU19NRVNTQUdFX0ZPUk1BVF9HV19CQ19WMDE6Y2FzZSAKIFdNU19NRVNTQUdFX0ZPUk1BVF9NV0lfVjAxOntyZXN1bHQ9WlVGSV9GQUlMO2JyZWFrO31kZWZhdWx0OntyZXN1bHQ9WlVGSV9GQUlMOwogYnJlYWs7fX1yZXR1cm4gcmVzdWx0O31UX3pVZmlTbXNfQ21kU3RhdHVzIElzU21zTG9hZFN1Y2Nlc3Modm9pZCl7Y2hhciBJc0luaXRbCi0oMHgxM2EwKzI4OTUtMHgxZWNiKV09eygweGNlNys0MzM2LTB4MWRkNyl9O3NjX2NmZ19nZXQoTlZfU01TX0xPQURfUkVTVUxULElzSW5pdAotLHNpemVvZihJc0luaXQpKTtpZigoMHgzNjIrNDc3OS0weDE2MGQpPT1zdHJjbXAoIlx4NmZceDZiIixJc0luaXQpKXtwcmludGYoCisoMHhmMGErMzg0NS0weDFkZWIpXT17KDB4MTUyMCsxNDIwLTB4MWFhYyl9O3NjX2NmZ19nZXQoTlZfU01TX0xPQURfUkVTVUxULElzSW5pdAorLHNpemVvZihJc0luaXQpKTtpZigoMHgzYzMrNDcxNS0weDE2MmUpPT1zdHJjbXAoIlx4NmZceDZiIixJc0luaXQpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NmRceDczXHgyMFx4NGNceDZmXHg2MVx4NjRceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3M1x4MjEiICJcbiIKICk7cmV0dXJuIFdNU19DTURfU1VDQ0VTUzt9ZWxzZXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NmRceDczXHgyMFx4NGNceDZmXHg2MVx4NjRceDIwXHg3N1x4NzJceDZmXHg2ZVx4NjdceDIwXHgyMSIgIlxuIgogKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX0KLSNpZiAoMHg5YWIrNTU4Ny0weDFmN2UpDQorI2lmICgweDI2NzkrNTItMHgyNmFkKQ0KIGludCB6VWZpU21zX0Zvcm1hdFNtcyhDSEFSKnBTbXNSYXdDb250ZW50LGludCBjb250ZW50U2l6ZSxUX3pVZmlTbXNfU21zSXRlbSoKLXB0U21zUGFyYSxpbnQgaUNtZElkKXtjaGFyKlAxPXN0cmNocihwU21zUmF3Q29udGVudCwoKGNoYXIpKDB4NGU3Kzc1MDEtMHgyMjA4KSkpCi07aWYoTlVMTD09UDEpe3JldHVybiBaVUZJX0ZBSUw7fWNoYXIqUDI9c3RyY2hyKChjaGFyKikoUDErKDB4YmEzKzU1NzgtMHgyMTZjKSksCi0oKGNoYXIpKDB4OGUyKzYxNTUtMHgyMGMxKSkpO2lmKE5VTEw9PVAyKXtyZXR1cm4gWlVGSV9GQUlMO31jaGFyKlAzPXN0cmNocigoY2hhcgotKikoUDIrKDB4NDM0KzYyODQtMHgxY2JmKSksKChjaGFyKSgweDM4Yis1OTgxLTB4MWFiYykpKTthdEJhc2VfUHJlUHJvY1JlcygKLXBTbXNSYXdDb250ZW50LGNvbnRlbnRTaXplKTtpZigoMHgzMTQrODgyMS0weDI1ODgpPT1pQ21kSWQpe2lmKFAzPT1QMisKLSgweGY2YisyNTYyLTB4MTk2Yykpe3NzY2FuZihwU21zUmF3Q29udGVudCwKK3B0U21zUGFyYSxpbnQgaUNtZElkKXtjaGFyKlAxPXN0cmNocihwU21zUmF3Q29udGVudCwoKGNoYXIpKDB4OWFmKzMwNjktMHgxNTgwKSkpCis7aWYoTlVMTD09UDEpe3JldHVybiBaVUZJX0ZBSUw7fWNoYXIqUDI9c3RyY2hyKChjaGFyKikoUDErKDB4NTRkKzczMDUtMHgyMWQ1KSksCisoKGNoYXIpKDB4ZTk2KzM4NjItMHgxZDgwKSkpO2lmKE5VTEw9PVAyKXtyZXR1cm4gWlVGSV9GQUlMO31jaGFyKlAzPXN0cmNocigoY2hhcgorKikoUDIrKDB4MTBiOSs2MTYtMHgxMzIwKSksKChjaGFyKSgweDExN2QrMjY3My0weDFiYzIpKSk7YXRCYXNlX1ByZVByb2NSZXMoCitwU21zUmF3Q29udGVudCxjb250ZW50U2l6ZSk7aWYoKDB4NjM3KzMxNDYtMHgxMjgwKT09aUNtZElkKXtpZihQMz09UDIrCisoMHgxMDArODgwMC0weDIzNWYpKXtzc2NhbmYocFNtc1Jhd0NvbnRlbnQsCiAiXHgyNVx4NjRceDIwXHgyNVx4NjRceDIwXHgyNVx4NjRceDIwIiwmcHRTbXNQYXJhLT5pbmRleCwmcHRTbXNQYXJhLT5zdGF0LCYKIHB0U21zUGFyYS0+bGVuZ3RoKTt9ZWxzZXtzc2NhbmYocFNtc1Jhd0NvbnRlbnQsCiAiXHgyNVx4NjRceDIwXHgyNVx4NjRceDIwXHgyNVx4MzNceDMyXHg3M1x4MjBceDI1XHg2NFx4MjAiLCZwdFNtc1BhcmEtPmluZGV4LCYKIHB0U21zUGFyYS0+c3RhdCxwdFNtc1BhcmEtPmFscGhhLCZwdFNtc1BhcmEtPmxlbmd0aCk7fX1lbHNlIGlmKAotKDB4MTEwZCsyMDQyLTB4MTkwNSk9PWlDbWRJZCl7aWYoUDI9PVAxKygweGMwNSsxNzA2LTB4MTJhZSkpe3NzY2FuZigKKygweDJmMys4ODQ5LTB4MjU4Mik9PWlDbWRJZCl7aWYoUDI9PVAxKygweDZmOSszOTE5LTB4MTY0Nykpe3NzY2FuZigKIHBTbXNSYXdDb250ZW50LCJceDI1XHg2NFx4MjBceDI1XHg2NFx4MjAiLCZwdFNtc1BhcmEtPnN0YXQsJnB0U21zUGFyYS0+bGVuZ3RoKTt9CiBlbHNle3NzY2FuZihwU21zUmF3Q29udGVudCwiXHgyNVx4NjRceDIwXHgyNVx4MzNceDMyXHg3M1x4MjBceDI1XHg2NFx4MjAiLCYKIHB0U21zUGFyYS0+c3RhdCxwdFNtc1BhcmEtPmFscGhhLCZwdFNtc1BhcmEtPmxlbmd0aCk7fX1hdEJhc2VfUmVzdG9yZVN0cmluZygKIHB0U21zUGFyYS0+YWxwaGEpO2F0QmFzZV9SZXN0b3JlU3RyaW5nKHB0U21zUGFyYS0+cGR1KTtyZXR1cm4gWlVGSV9TVUNDO30KICNlbmRpZg0KIHZvaWQgelVmaVNtc19DbWdsUmVzcFByb2MoVF96U21zX1Ntc0luZCpwU21zSXRlbSl7VF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9Ci1XTVNfQ01EX1BST0NFU1NJTkc7VF96VWZpU21zX0RiU3RvcmVEYXRhIGRiX2RhdGE9eygweDlkMSs2ODQzLTB4MjQ4Yyl9OworV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19EYlN0b3JlRGF0YSBkYl9kYXRhPXsoMHg0ZTMrMjIzNS0weGQ5ZSl9OwogelVmaVNtc19TdG9yZVR5cGUgbWVtX3N0b3JlPVdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMTt1bnNpZ25lZCBjaGFyIHBkdV90bXBbCi1aU01TX1BEVV9TSVpFXT17KDB4NWEzKzY2NzItMHgxZmIzKX07aW50IHRvdGFsX2NvdW50PSgweGJmZis1NjUyLTB4MjIxMyk7aW50IAotc2ltX2NhcGFiaWxpdHk9KDB4MTQ5Mis3NjctMHgxNzkxKTtwcmludGYoCitaU01TX1BEVV9TSVpFXT17KDB4NTI4KzU1OTYtMHgxYjA0KX07aW50IHRvdGFsX2NvdW50PSgweDFiMjErODItMHgxYjczKTtpbnQgCitzaW1fY2FwYWJpbGl0eT0oMHg0MTYrMzg1NS0weDEzMjUpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NmNceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDIxIiAiXG4iCiAscFNtc0l0ZW0tPmluZGV4LHBTbXNJdGVtLT5zdGF0LHBTbXNJdGVtLT5sZW5ndGgpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDcwXHg2NFx4NzVceDIwXHg2NFx4NjFceDc0XHg2MVx4NWZceDZjXHg2NVx4NmVceDNhXHgyNVx4NjRceDJjXHgyMFx4NzNceDc0XHg3Mlx4M2FceDI1XHg3M1x4MjEiICJcbiIKLSxzdHJsZW4ocFNtc0l0ZW0tPnBkdSkscFNtc0l0ZW0tPnBkdSk7bWVtc2V0KCZkYl9kYXRhLCgweDUxZis1OTUwLTB4MWM1ZCksc2l6ZW9mCi0oZGJfZGF0YSkpO21lbXNldChwZHVfdG1wLCgweDEwMzMrMTc0MS0weDE3MDApLHNpemVvZihwZHVfdG1wKSk7KHZvaWQpCissc3RybGVuKHBTbXNJdGVtLT5wZHUpLHBTbXNJdGVtLT5wZHUpO21lbXNldCgmZGJfZGF0YSwoMHgxMzJjKzQzOS0weDE0ZTMpLHNpemVvZgorKGRiX2RhdGEpKTttZW1zZXQocGR1X3RtcCwoMHgxYjJjKzI1MzYtMHgyNTE0KSxzaXplb2YocGR1X3RtcCkpOyh2b2lkKQogU3RyaW5nMkJ5dGVzKHBTbXNJdGVtLT5wZHUscGR1X3RtcCwoaW50KXN0cmxlbihwU21zSXRlbS0+cGR1KSk7Ci0jaWYgKDB4MTdlMyszMzQwLTB4MjRlZSkKLXpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHBTbXNJdGVtLT5wZHUsJnBTbXNJdGVtLT5zdGF0KTtpZigoMHhiODYrNTM3OC0weDIwODMpPT0KKyNpZiAoMHgyNjUrNTk4NC0weDE5YzQpCit6VWZpU21zX0dldFJlcG9ydFN0YXR1cyhwU21zSXRlbS0+cGR1LCZwU21zSXRlbS0+c3RhdCk7aWYoKDB4ZDk5KzM3MDctMHgxYzBmKT09CiBwU21zSXRlbS0+c3RhdCl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4NzBceDUzXHg2ZFx4NzNceDQ5XHg3NFx4NjVceDZkXHgyZFx4M2VceDczXHg3NFx4NjFceDc0XHgyMFx4M2RceDNkXHgyMFx4MzUiICJcbiIKICk7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQocGR1X3RtcCk7elVmaVNtc19EZWxNb2RlbVNtcyhwU21zSXRlbS0+aW5kZXgpOwogcmV0dXJuO30KICNlbmRpZg0KLSNpZiAoMHgxZTcrMjQ5Ny0weGJhNykKKyNpZiAoMHgxNzk4KzQ1NS0weDE5NWUpCiBwcmludGYoIlx4MmFceDJhXHgyYVx4MmFceDc1XHg2ZVx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4M2FceDI1XHg3MyIgIlxuIiwKIHBkdV90bXApOwogI2VuZGlmDQogKHZvaWQpelVmaVNtc19EZWNvZGVTbXNEYXRhKCZkYl9kYXRhLHBTbXNJdGVtLT5pbmRleCxtZW1fc3RvcmUsKFRfU21zU3RhdHVzKQogcFNtc0l0ZW0tPnN0YXQsV01TX01FU1NBR0VfRk9STUFUX0dXX1BQX1YwMSxwU21zSXRlbS0+bGVuZ3RoLHBkdV90bXApOwotI2lmICgweGM3MisxMjM0LTB4MTE0MykKKyNpZiAoMHhmOTYrMjk3NS0weDFiMzQpCiBwcmludGYoIlx4MmFceDJhXHgyYVx4MmFceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDY1XHg2NFx4M2FceDI1XHg3MyIgIlxuIiwKIGRiX2RhdGEuc21zX2NvbnRlbnQpOwogI2VuZGlmDQotKHZvaWQpelVmaVNtc19Xcml0ZVNtc1RvRGIoJmRiX2RhdGEsbWVtX3N0b3JlLC0oMHg1Nys4NDU4LTB4MjE2MCkpO3t9Ci0jaWYgKDB4YTMxKzExNjktMHhlYzEpCisodm9pZCl6VWZpU21zX1dyaXRlU21zVG9EYigmZGJfZGF0YSxtZW1fc3RvcmUsLSgweDExNDcrMTg0NC0weDE4N2EpKTt7fQorI2lmICgweDJjKzU3OTktMHgxNmQyKQogaWYoU01TX0xPQ0FUSU9OX1NJTT09Z196VWZpU21zX0N1ckxvY2F0aW9uKXtDSEFSIHNpbUNhcGFiaWxpdHlbCi0oMHg1YmMrNDU5Ny0weDE3N2YpXT17KDB4NjJmKzY5NTktMHgyMTVlKX07c2NfY2ZnX2dldCgKKygweDE1ZGErMzg5OC0weDI0ZTIpXT17KDB4NmEyKzEyMjYtMHhiNmMpfTtzY19jZmdfZ2V0KAogWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FQQUJJTElUWSxzaW1DYXBhYmlsaXR5LHNpemVvZihzaW1DYXBhYmlsaXR5KSk7CiBzaW1fY2FwYWJpbGl0eT1hdG9pKHNpbUNhcGFiaWxpdHkpOyh2b2lkKXpVZmlTbXNfR2V0VG90YWxDb3VudCgKIFpURV9XTVNfREJfU0lNX1RBQkxFLCZ0b3RhbF9jb3VudCk7aWYodG90YWxfY291bnQ9PXNpbV9jYXBhYmlsaXR5KXsKQEAgLTExMTAsMTggKzExMTUsMTggQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDY4XHg2NVx4NjNceDZiXHg3M1x4NzRceDZmXHg3Mlx4NjVceDQ0XHg2OVx4NzJceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgogKTtyZXR1cm47fQogI2lmZGVmIFdFQlNfU0VDVVJJVFkNCi1pZihhY2Nlc3MoWlRFX1dNU19EQl9QQVRILEZfT0spIT0oMHgxM2IrODQ5My0weDIyNjgpKXtpZigoYWNjZXNzKAotWlRFX1dNU19UTVAxX1BBVEgsRl9PSyk9PSgweDIxNjcrMTUxLTB4MjFmZSkpJiYoYWNjZXNzKFpURV9XTVNfU0VDX1BBVEgsRl9PSykhPQotKDB4MTM3Yis0MDEwLTB4MjMyNSkpKXtpZihyZW5hbWUoWlRFX1dNU19UTVAxX1BBVEgsWlRFX1dNU19TRUNfUEFUSCkhPQotKDB4M2ZmKzk0LTB4NDVkKSl7cHJpbnRmKAoraWYoYWNjZXNzKFpURV9XTVNfREJfUEFUSCxGX09LKSE9KDB4ZWNhKzMzMDktMHgxYmI3KSl7aWYoKGFjY2VzcygKK1pURV9XTVNfVE1QMV9QQVRILEZfT0spPT0oMHgxNWIrNjY1Ni0weDFiNWIpKSYmKGFjY2VzcyhaVEVfV01TX1NFQ19QQVRILEZfT0spIT0KKygweDFiY2IrOTQ2LTB4MWY3ZCkpKXtpZihyZW5hbWUoWlRFX1dNU19UTVAxX1BBVEgsWlRFX1dNU19TRUNfUEFUSCkhPQorKDB4MTQ5Nys5MjItMHgxODMxKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NTdceDRkXHg1M1x4NWZceDU0XHg0ZFx4NTBceDMxXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgotKTt9fWlmKChhY2Nlc3MoWlRFX1dNU19UTVAwX1BBVEgsRl9PSyk9PSgweDU2NCsxMDQxLTB4OTc1KSkmJihhY2Nlc3MoCi1aVEVfV01TX1NFQ19QQVRILEZfT0spIT0oMHgxNjg5KzM2MDAtMHgyNDk5KSkpe2lmKHJlbmFtZShaVEVfV01TX1RNUDBfUEFUSCwKLVpURV9XTVNfU0VDX1BBVEgpIT0oMHhkMzIrMzMxOC0weDFhMjgpKXtwcmludGYoCispO319aWYoKGFjY2VzcyhaVEVfV01TX1RNUDBfUEFUSCxGX09LKT09KDB4MWU5Kzg1NjYtMHgyMzVmKSkmJihhY2Nlc3MoCitaVEVfV01TX1NFQ19QQVRILEZfT0spIT0oMHgyNjkrNTc3OS0weDE4ZmMpKSl7aWYocmVuYW1lKFpURV9XTVNfVE1QMF9QQVRILAorWlRFX1dNU19TRUNfUEFUSCkhPSgweDFkMTUrMTQ0MC0weDIyYjUpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg1N1x4NGRceDUzXHg1Zlx4NTRceDRkXHg1MFx4MzBceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDJlIiAiXG4iCi0pO319aWYoYWNjZXNzKFpURV9XTVNfU0VDX1BBVEgsRl9PSyk9PSgweGU5Yys0OTY4LTB4MjIwNCkpe2NoYXIgcm51bV9idWZbCi0oMHg5MWMrMjU5OC0weDEzMmEpXT17KDB4NmJmKzE1NDktMHhjY2MpfTtjaGFyIGNtZFsoMHhhNTIrNTkyOS0weDIwZmIpXT17Ci0oMHg2ZTQrMjY0MC0weDExMzQpfTtzY19jZmdfZ2V0KCJceDcyXHg2ZVx4NzVceDZkXHg1Zlx4NjFceDc0IixybnVtX2J1ZixzaXplb2YoCispO319aWYoYWNjZXNzKFpURV9XTVNfU0VDX1BBVEgsRl9PSyk9PSgweGJjZCsyMDMxLTB4MTNiYykpe2NoYXIgcm51bV9idWZbCisoMHgxNDFiKzIzMDYtMHgxZDA1KV09eygweDI0MisxNjExLTB4ODhkKX07Y2hhciBjbWRbKDB4NjVjKzM3MzYtMHgxNDc0KV09eworKDB4NDI0KzgwODMtMHgyM2I3KX07c2NfY2ZnX2dldCgiXHg3Mlx4NmVceDc1XHg2ZFx4NWZceDYxXHg3NCIscm51bV9idWYsc2l6ZW9mKAogcm51bV9idWYpKTtzbnByaW50ZihjbWQsc2l6ZW9mKGNtZCksCiAiXHgyZlx4NjJceDY5XHg2ZVx4MmZceDZmXHg3MFx4NjVceDZlXHg3M1x4NzNceDZjXHgyMFx4NjVceDZlXHg2M1x4MjBceDJkXHg2NFx4MjBceDJkXHg2MVx4NjVceDczXHgzMlx4MzVceDM2XHgyMFx4MmRceDczXHg2MVx4NmNceDc0XHgyMFx4MmRceDY5XHg2ZVx4MjBceDI1XHg3M1x4MjBceDJkXHg2Zlx4NzVceDc0XHgyMFx4MjVceDczXHgyMFx4MmRceDcwXHg2MVx4NzNceDczXHgyMFx4NzBceDYxXHg3M1x4NzNceDNhXHgyNVx4NzMiCiAsWlRFX1dNU19TRUNfUEFUSCxaVEVfV01TX0RCX1BBVEgscm51bV9idWYpO3p4aWNfc3lzdGVtKGNtZCk7fX0KQEAgLTExMzMsNDcgKzExMzgsNDggQEAKIHpVZmlTbXNfQ2hlY2tNZW1vcnlGdWxsKFpURV9XTVNfTUVNT1JZX05WKTt6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKAogTVNHX1NNU19ERUZBVUxUKTtnX3pVZmlTbXNfTXNnUmVmZXI9elVmaVNtc19HZXRTbXNNYXhSZWZlckluRGIoKTsKIGdfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2U9elVmaVNtc19HZXRDb25jYXRNYXhSZWZlckluRGIoKTt9dm9pZCAKLXpVZmlTbXNfQ2ZnU21zTnZJbml0KHZvaWQpe2NoYXIgdG1wWygweDk1NSs2NTk3LTB4MjMxMCldPXsoMHg2N2MrMjk0LTB4N2EyKX07Cit6VWZpU21zX0NmZ1Ntc052SW5pdCh2b2lkKXtjaGFyIHRtcFsoMHgxYmErNDEwNi0weDExYmEpXT17KDB4NDEwKzI4MS0weDUyOSl9Owogc2NfY2ZnX3NldChOVl9TTVNfU1RPUkUsIiIpO3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxULCIiKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCwiIik7c2NfY2ZnX3NldChOVl9TTVNfQ0VOVEVSX05VTSwiIik7c25wcmludGYodG1wLAogc2l6ZW9mKHRtcCksIlx4MjVceDY0IixaVEVfV01TX0RCX01TR19DT1VOVF9NQVgpO3NjX2NmZ19zZXQoCiBaVEVfV01TX05WQ09ORklHX05WX0NBUEFCSUxJVFksdG1wKTt9Vk9JRCB6VWZpU21zX0luaXRDbWRTdGF0dXMoCiBUX3pVZmlTbXNfU3RhdHVzSW5mbypwU3RhdHVzSW5mbyxUX3pVZmlTbXNfQ21kVHlwZSBpQ21kSWQpe21lbXNldCgodm9pZCopCi1wU3RhdHVzSW5mbywoMHhhNTIrMjA5Ny0weDEyODMpLHNpemVvZihUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3BTdGF0dXNJbmZvLT5jbWQ9CitwU3RhdHVzSW5mbywoMHg2ZTQrMzY4My0weDE1NDcpLHNpemVvZihUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3BTdGF0dXNJbmZvLT5jbWQ9CiBpQ21kSWQ7cFN0YXR1c0luZm8tPmNtZF9zdGF0dXM9V01TX0NNRF9QUk9DRVNTSU5HO3BTdGF0dXNJbmZvLT5lcnJfY29kZT0KLVpURV9TTVNfQ01TX05PTkU7cFN0YXR1c0luZm8tPnNlbmRfZmFpbGVkX2NvdW50PSgweDdhYSszMzI1LTB4MTRhNyk7cFN0YXR1c0luZm8KLS0+ZGVsZXRlX2ZhaWxlZF9jb3VudD0oMHg5OTgrMjUwMC0weDEzNWMpOyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKHBTdGF0dXNJbmZvCi0pO312b2lkIHpVZmlTbXNfQ2ZnSW5pdCh2b2lkKXtjaGFyIHRtcFsoMHgxYmYwKzIxMzMtMHgyNDNiKV09eygweDdiZCsxMzI5LTB4Y2VlKQotfTtzY19jZmdfc2V0KE5WX1NNU19TVEFURSwiIik7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1JFQ0VWSUVELCIiKTsKLXNjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxULCIiKTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiIik7c25wcmludGYodG1wCi0sc2l6ZW9mKHRtcCksIlx4MjVceDY0IixaVEVfV01TX0RCX01TR19DT1VOVF9NQVgpO3NjX2NmZ19zZXQoCi1aVEVfV01TX05WQ09ORklHX05WX0NBUEFCSUxJVFksdG1wKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUEFCSUxJVFksCi0iIik7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NNU19SRVBPUlQsIiIpO3NjX2NmZ19zZXQoTlZfU01TX0RCX0NIQU5HRSwKLSJceDMxIik7c2NfY2ZnX3NldChOVl9TTVNfQ0VOVEVSX05VTSwiIik7fWludCB6VWZpU21zX0lzVW5yZWFkU21zKAotVF96VWZpU21zX01lbW9yeVR5cGUgbWVtX3N0b3JlKXtpbnQgdG90YWxfY291bnQ9KDB4MzFiKzI0NDAtMHhjYTMpO2NoYXIgYnVmWwotKDB4MTJiMCsxNDI1LTB4MTgyZCldPXsoMHgxMmFjKzExOS0weDEzMjMpfTtpZihaVUZJX0ZBSUw9PQotelVmaVNtc19HZXRUYWdDb3VudEluRGIobWVtX3N0b3JlLFdNU19UQUdfVFlQRV9NVF9OT1RfUkVBRF9WMDEsJnRvdGFsX2NvdW50KSl7Ci1yZXR1cm4gRkFMU0U7fXNwcmludGYoYnVmLCJceDI1XHg2NCIsdG90YWxfY291bnQpO3NjX2NmZ19zZXQoCitaVEVfU01TX0NNU19OT05FO3BTdGF0dXNJbmZvLT5zZW5kX2ZhaWxlZF9jb3VudD0oMHgxOTUrNjc2Ni0weDFjMDMpO3BTdGF0dXNJbmZvCistPmRlbGV0ZV9mYWlsZWRfY291bnQ9KDB4MjUxNys0ODktMHgyNzAwKTsodm9pZCl6VWZpU21zX1NldENtZFN0YXR1cyhwU3RhdHVzSW5mbworKTt9dm9pZCB6VWZpU21zX0NmZ0luaXQodm9pZCl7Y2hhciB0bXBbKDB4MTMyYys0ODkxLTB4MjYzZCldPXsKKygweDEzZis2MzI5LTB4MTlmOCl9O3NjX2NmZ19zZXQoTlZfU01TX1NUQVRFLCIiKTtzY19jZmdfc2V0KAorWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCwiIik7c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQsIiIpO3NjX2NmZ19zZXQoCitOVl9TTVNfUkVDVl9SRVNVTFQsIiIpO3NucHJpbnRmKHRtcCxzaXplb2YodG1wKSwiXHgyNVx4NjQiLAorWlRFX1dNU19EQl9NU0dfQ09VTlRfTUFYKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfTlZfQ0FQQUJJTElUWSx0bXApOworc2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVBBQklMSVRZLCIiKTtzY19jZmdfc2V0KAorWlRFX1dNU19OVkNPTkZJR19TTVNfUkVQT1JULCIiKTtzY19jZmdfc2V0KE5WX1NNU19EQl9DSEFOR0UsIlx4MzEiKTtzY19jZmdfc2V0KAorTlZfU01TX0NFTlRFUl9OVU0sIiIpO31pbnQgelVmaVNtc19Jc1VucmVhZFNtcyhUX3pVZmlTbXNfTWVtb3J5VHlwZSBtZW1fc3RvcmUpeworaW50IHRvdGFsX2NvdW50PSgweDYyKzkzNjQtMHgyNGY2KTtjaGFyIGJ1ZlsoMHgxMjBhKzE2NTEtMHgxODY5KV09eworKDB4MTQ4KzIzMC0weDIyZSl9O2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRUYWdDb3VudEluRGIobWVtX3N0b3JlLAorV01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMSwmdG90YWxfY291bnQpKXtyZXR1cm4gRkFMU0U7fXNwcmludGYoYnVmLCJceDI1XHg2NCIKKyx0b3RhbF9jb3VudCk7c2NfY2ZnX3NldCgKICJceDczXHg2ZFx4NzNceDVmXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0IixidWYpO2lmKAotKDB4ZGZiKzIzNzktMHgxNzQ2KT09dG90YWxfY291bnQpe3JldHVybiBGQUxTRTt9ZWxzZXtyZXR1cm4gVFJVRTt9fVZPSUQgCisoMHhhZjcrNjM0MS0weDIzYmMpPT10b3RhbF9jb3VudCl7cmV0dXJuIEZBTFNFO31lbHNle3JldHVybiBUUlVFO319Vk9JRCAKIHpVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8od21zX21lc3NhZ2Vfc3RhdHVzX2luZm8gc21zX29wKXsKLVRfelVmaV9TbXNTdGF0dXNJbmZvSW5kIGluZD17KDB4MjI3Yis2NDMtMHgyNGZlKX07Q0hBUiB0ZW1wWygweDI2NCszMDYzLTB4ZTI5KV09Ci17KDB4NGZhKzc1MzgtMHgyMjZjKX07aWYoc21zX29wPT1NU0dfU01TX05FVyl7aW5kLnNtc19uZXdfaW5kPQotKDB4M2U2KzYyNjktMHgxYzYyKTt9aWYoc21zX29wPT1NU0dfU01TX1JFQURJTkcpe2luZC5zbXNfaXNfcmVhZGluZz0KLSgweDdlYSs3MjY1LTB4MjQ0YSk7fWlmKHpVZmlTbXNfSXNVbnJlYWRTbXMoWlRFX1dNU19NRU1PUllfTlYpKXtpbmQuCi1zbXNfdW5yZWFkX2luZD0oMHgxMWFjKzQ2MzMtMHgyM2M0KTt9ZWxzZXtpbmQuc21zX3VucmVhZF9pbmQ9KDB4NmUwKzU5OC0weDkzNik7fQotc2NfY2ZnX2dldCgiXHg3M1x4NmRceDczXHg1Zlx4NzVceDZlXHg3Mlx4NjVceDYxXHg2NFx4NWZceDYzXHg2Zlx4NzVceDZlXHg3NCIsCi10ZW1wLHNpemVvZih0ZW1wKSk7aW5kLnNtc191bnJlYWRfY291bnQ9YXRvaSh0ZW1wKTtpZigoZ196VWZpU21zX01lbUZ1bGxGbGFnWworVF96VWZpX1Ntc1N0YXR1c0luZm9JbmQgaW5kPXsoMHg3MmMrNDIxMi0weDE3YTApfTtDSEFSIHRlbXBbKDB4MTZlOSs0NjgtMHgxODhiKV0KKz17KDB4NjhmKzc2MjItMHgyNDU1KX07aWYoc21zX29wPT1NU0dfU01TX05FVyl7aW5kLnNtc19uZXdfaW5kPSgweDRjYis2ODMtMHg3NzUpCis7fWlmKHNtc19vcD09TVNHX1NNU19SRUFESU5HKXtpbmQuc21zX2lzX3JlYWRpbmc9KDB4MTExYSsyMzgtMHgxMjA3KTt9aWYoCit6VWZpU21zX0lzVW5yZWFkU21zKFpURV9XTVNfTUVNT1JZX05WKSl7aW5kLnNtc191bnJlYWRfaW5kPSgweDFiNSs3MDA4LTB4MWQxNCk7fQorZWxzZXtpbmQuc21zX3VucmVhZF9pbmQ9KDB4YjU0KzQ0NTMtMHgxY2I5KTt9c2NfY2ZnX2dldCgKKyJceDczXHg2ZFx4NzNceDVmXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0Iix0ZW1wLHNpemVvZigKK3RlbXApKTtpbmQuc21zX3VucmVhZF9jb3VudD1hdG9pKHRlbXApO2lmKChnX3pVZmlTbXNfTWVtRnVsbEZsYWdbCiBXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV09PVRSVUUpfHwoZ196VWZpU21zX01lbUZ1bGxGbGFnW1dNU19TVE9SQUdFX1RZUEVfVUlNX1YwMQotXT09VFJVRSkpe2luZC5zbXNfbWVtb3J5X2Z1bGxfaW5kPSgweDFjMWQrMTExOC0weDIwN2EpO31lbHNle2luZC4KLXNtc19tZW1vcnlfZnVsbF9pbmQ9KDB4MTU0NisyNDQtMHgxNjNhKTt9cHJpbnRmKAorXT09VFJVRSkpe2luZC5zbXNfbWVtb3J5X2Z1bGxfaW5kPSgweDEzOTErMzEzMS0weDFmY2IpO31lbHNle2luZC4KK3Ntc19tZW1vcnlfZnVsbF9pbmQ9KDB4MTY3KzY5OTgtMHgxY2JkKTt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDZkXHg3M1x4NTNceDc0XHg2MVx4NzRceDc1XHg3M1x4NDlceDZlXHg2Nlx4NmZceDIwXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NjZceDc1XHg2Y1x4NmNceDNkXHgyNVx4NjRceDJjXHgyMFx4NmVceDY1XHg3N1x4M2RceDI1XHg2NFx4MmNceDIwXHg3Mlx4NjVceDYxXHg2NFx4NjlceDZlXHg2N1x4M2RceDI1XHg2NCIgIlxuIgogLGluZC5zbXNfdW5yZWFkX2luZCxpbmQuc21zX21lbW9yeV9mdWxsX2luZCxpbmQuc21zX25ld19pbmQsaW5kLnNtc19pc19yZWFkaW5nKTsKIGlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1NNUyxNT0RVTEVfSURfTU1JLE1TR19DTURfU01TX1NUQVRVU19JTkZPX0lORCxzaXplb2YoCi1UX3pVZmlfU21zU3RhdHVzSW5mb0luZCksJmluZCwoMHgxN2ZkKzY2OS0weDFhOWEpKTtpZihpbmQuc21zX21lbW9yeV9mdWxsX2luZD09Ci0oMHg1NzYrNTc1Mi0weDFiZWQpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKK1RfelVmaV9TbXNTdGF0dXNJbmZvSW5kKSwmaW5kLCgweDZjMSs3NDIxLTB4MjNiZSkpO2lmKGluZC5zbXNfbWVtb3J5X2Z1bGxfaW5kPT0KKygweDEzOTErMzg5MC0weDIyYzIpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKICJceDczXHg2ZFx4NzNceDVmXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHg1Zlx4NjZceDc1XHg2Y1x4NmMiKTt9ZWxzZSBpZihpbmQuCi1zbXNfdW5yZWFkX2luZD09KDB4MzEzKzMwMTItMHhlZDYpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKK3Ntc191bnJlYWRfaW5kPT0oMHgxODYrMjIyMS0weGEzMikpe3NjX2NmZ19zZXQoTlZfU01TX0lOSVRfU1RBVFVTLAogIlx4NzNceDZkXHg3M1x4NWZceDc1XHg2ZVx4NzJceDY1XHg2MVx4NjQiKTt9ZWxzZXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKICJceDczXHg2ZFx4NzNceDVmXHg2ZVx4NmZceDcyXHg2ZFx4NjFceDZjIik7fXJldHVybjt9Vk9JRCBCYWtOb3RpZmljYXRpb25TbXMoCiBjaGFyKnB1c2hTbXMsaW50IHB1c2hTbXNMZW4pe0ZJTEUqZnA9TlVMTDtpbnQgbGVuO2ZwPWZvcGVuKApAQCAtMTE4Miw3ICsxMTg4LDcgQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQyXHg2MVx4NmJceDRlXHg2Zlx4NzRceDY5XHg2Nlx4NjlceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDUzXHg2ZFx4NzNceDIwXHg2Nlx4NmZceDcwXHg2NVx4NmVceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzIiICJcbiIKICk7YXRfcHJpbnQoTE9HX0VSUiwKICJceDY2XHg2Zlx4NzBceDY1XHg2ZVx4MjhceDIwXHgyZlx4NzVceDczXHg3Mlx4MmZceDY0XHg2ZFx4MmZceDY2XHg2Zlx4NzRceDYxXHg1Zlx4NzBceDc1XHg3M1x4NjhceDVmXHg2ZFx4NzNceDY3XHgyZVx4NjRceDYxXHg3NFx4NjFceDIwXHgyY1x4MjBceDI3XHg3N1x4MmJceDI3XHgyOVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjEiCi0pO3JldHVybjt9bGVuPWZ3cml0ZShwdXNoU21zLCgweDQzOSs1OTI3LTB4MWI1ZikscHVzaFNtc0xlbixmcCk7aWYobGVuPT0KKyk7cmV0dXJuO31sZW49ZndyaXRlKHB1c2hTbXMsKDB4MzNkKzM5OTItMHgxMmQ0KSxwdXNoU21zTGVuLGZwKTtpZihsZW49PQogcHVzaFNtc0xlbil7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDJceDYxXHg2Ylx4NGVceDZmXHg3NFx4NjlceDY2XHg2OVx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4NTNceDZkXHg3M1x4MjBceDc3XHg3Mlx4NjlceDc0XHg2NVx4MjBceDc0XHg2Zlx4MjBceDRlXHg2Zlx4NzRceDY5XHg2Nlx4NjlceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDYyXHg2MVx4NmJceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDRmXHg0Ylx4MmNceDIwXHg2Y1x4NjVceDZlXHgzZFx4MjVceDY0XHgyMCIgIlxuIgogLGxlbik7cHJpbnRmKApkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX21haW4uYyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19tYWluLmMKaW5kZXggMTNmZDU4MS4uZWMxOGI2ZiAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX21haW4uYworKysgYi9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfbWFpbi5jCkBAIC0xNSw0MiArMTUsNDIgQEAKIGdfelVmaVNtc19GaW5hbENtZ3NCdWY7ZXh0ZXJuIGludCBnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm87ZXh0ZXJuIAogVF96VWZpU21zX0RiU3RvcmVEYXRhIGdfelVmaVNtc19EYlN0b3JlRGF0YVtaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYXTtleHRlcm4KICBpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudDtleHRlcm4gaW50IGdfelVmaVNtc19Db25jYXRUb3RhbE51bTtleHRlcm4gVUlOVDggCi1nX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjO2ludCBpU21zSW5kZXg9KDB4NzY2KzM3ODYtMHgxNjMwKTtpbnQgZ196U21zX01zcUlkPS0KLSgweDE2MmQrMzg1Mi0weDI1MzgpO2ludCBnX3pTbXNfTG9jYWxNc3FJZD0tKDB4MTJlOCsxMzU2LTB4MTgzMyk7c2VtX3QgCi1nX3Ntc19zZW1faWQ7VF96U21zX29wdFJzcCBnX3Ntc09wdFJzcD17KDB4MzFjKzkxODYtMHgyNmZlKX07c3RhdGljIGNvbnN0IAorZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1YztpbnQgaVNtc0luZGV4PSgweDFhMTUrMjA1MS0weDIyMTgpO2ludCBnX3pTbXNfTXNxSWQ9LQorKDB4MThmNCsyMTgxLTB4MjE3OCk7aW50IGdfelNtc19Mb2NhbE1zcUlkPS0oMHgyMThjKzE0LTB4MjE5OSk7c2VtX3QgCitnX3Ntc19zZW1faWQ7VF96U21zX29wdFJzcCBnX3Ntc09wdFJzcD17KDB4NDRkKzcwOC0weDcxMSl9O3N0YXRpYyBjb25zdCAKIFRfelNtc0hhbmRsZVRhYmxlIFNtc0hhbmRsZVdlYlRhYltdPXt7TVNHX0NNRF9TRU5EX1NNUyxhdFdlYl9TZW5kU21zLFRSVUV9LHsKIE1TR19DTURfREVMX1NNU19CWV9JTkRFWCxhdFdlYl9EZWxTbXNCeUluZGV4LFRSVUV9LHtNU0dfQ01EX1NNU19NT0RJRllfVEFHLAogYXRXZWJfUmVhZFNtcyxUUlVFfSx7TVNHX0NNRF9EUkFGVFNfU0FWRSxhdFdlYl9TYXZlU21zLEZBTFNFfSx7CiBNU0dfQ01EX1NNU19MT0NBVElPTl9TRVQsYXRXZWJfU2V0U21zLFRSVUV9LHtNU0dfQ01EX1NNU19PVVREQVRFX0NIRUNLLAotYXRXZWJfT3V0ZGF0ZVNtc0NoZWNrLFRSVUV9LHsoMHgzZTUrMjUyOS0weGRjNiksTlVMTCxGQUxTRX19O1ZPSUQgYXRXZWJfU2VuZFNtcygKLVVJTlQ4KnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4NGE0Kzc3Ni0weDdhYyl9O2Fzc2VydChwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKilwRGF0YWJ1ZjsKLXpVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cyxXTVNfU01TX0NNRF9NU0dfU0VORCk7KHZvaWQpelVmaVNtc19TZW5kUmF3U21zKCgKK2F0V2ViX091dGRhdGVTbXNDaGVjayxUUlVFfSx7KDB4OTVjKzM3ODEtMHgxODIxKSxOVUxMLEZBTFNFfX07Vk9JRCBhdFdlYl9TZW5kU21zCisoVUlOVDgqcERhdGFidWYpe1RfekdvYWhlYWRNc2dCdWYqcHRNZXNzYWdlPU5VTEw7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17CisoMHgzYys3NzUzLTB4MWU4NSl9O2Fzc2VydChwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKilwRGF0YWJ1ZgorO3pVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cyxXTVNfU01TX0NNRF9NU0dfU0VORCk7KHZvaWQpelVmaVNtc19TZW5kUmF3U21zKCgKIFRfelVmaVNtc19TZW5kUmVxKilwdE1lc3NhZ2UtPm1zZ19kYXRhKTt9Vk9JRCBhdFdlYl9EZWxTbXNCeUluZGV4KFVJTlQ4KnBEYXRhYnVmCi0pe1RfelVmaVNtc19EZWxSZXEgdERlbFJlcT17KDB4NDMwKzYyNzQtMHgxY2IyKX07VF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9Ci1XTVNfQ01EX1BST0NFU1NJTkc7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4NzNkKzYyMzAtMHgxZjkzKX07YXNzZXJ0KAorKXtUX3pVZmlTbXNfRGVsUmVxIHREZWxSZXE9eygweGNiYys2MTc3LTB4MjRkZCl9O1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQorV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDEwMjcrNTc1OS0weDI2YTYpfTthc3NlcnQoCiBwRGF0YWJ1ZiE9TlVMTCk7cHJpbnRmKCJbU01TXSBhdFdlYl9EZWxTbXNCeUluZGV4IHJlY3YgbXNnXG4iKTttZW1jcHkoJnREZWxSZXEsCiBwRGF0YWJ1ZixzaXplb2YoVF96VWZpU21zX0RlbFJlcSkpO3pVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cywKIFdNU19TTVNfQ01EX01TR19ERUxFVEUpO3Jlc3VsdD16VWZpU21zX0RlbGV0ZVNtcygmdERlbFJlcSk7dFN0YXR1cy5jbWRfc3RhdHVzPQogcmVzdWx0Oyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U3RhdHVzKTt6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTt9Vk9JRCAKIGF0V2ViX0RlbFNtc0J5VHlwZShVSU5UOCpwRGF0YWJ1Zil7Ci0jaWYgKDB4MWQ1OSsxNC0weDFkNjcpDQorI2lmICgweDFjYzYrMTU0NC0weDIyY2UpDQogV0VCX0RFTF9TTVNfQllfVFlQRSpyZXE9TlVMTDtyZXE9KFdFQl9ERUxfU01TX0JZX1RZUEUqKXBEYXRhYnVmO2Fzc2VydChyZXEhPU5VTEwKICk7aWYocmVxLT5lTG9jYXRpb24hPVpTTVNfTE9DQVRJT05fU0lNKXtaVEVfTE9HKExPR19FUlIsCiAiXHg3YVx4NTNceDZkXHg3M1x4NWZceDUwXHg3Mlx4NjVceDcwXHg0NFx4NjVceDZjXHg0Mlx4NzlceDU0XHg3OVx4NzBceDY1XHgyMFx4NzBceDYxXHg3Mlx4NjFceDIwXHg0ZVx4NTVceDRjXHg0Y1x4MmUiICJcbiIKICk7cmV0dXJuO316U21zX0NoYW5nZU1haW5TdGF0ZShaU01TX1NUQVRFX0RFTElORyk7WlRFX0xPRyhMT0dfREVCVUcsCiAiXHg3YVx4NTNceDZkXHg3M1x4NWZceDUwXHg3Mlx4NjVceDcwXHg0NFx4NjVceDZjXHg0Mlx4NzlceDU0XHg3OVx4NzBceDY1XHgyMFx4NzBceDczXHg3NFx4NTJceDY1XHg3MVx4MmRceDNlXHg2NVx4NDJceDZmXHg3OFx4NGVceDYxXHg2ZFx4NjVceDNkXHgyNVx4NjQiICJcbiIKLSxyZXEtPmVCb3hOYW1lKTtTTVNfRGVsZXRlUmVjb3JkRnJvbVhNTChTTVNfTE9DQVRJT05fU0lNLCgweGZkNisyNzU0LTB4MWE5OCkscmVxCi0tPmVCb3hOYW1lKTtpZihyZXEtPmVCb3hOYW1lPT1TTVNfSU5CT1gpe3Ntc19Mb2FkU21zRnJvbVNpbSgpO30KKyxyZXEtPmVCb3hOYW1lKTtTTVNfRGVsZXRlUmVjb3JkRnJvbVhNTChTTVNfTE9DQVRJT05fU0lNLCgweDE3NmMrMjczMC0weDIyMTYpLAorcmVxLT5lQm94TmFtZSk7aWYocmVxLT5lQm94TmFtZT09U01TX0lOQk9YKXtzbXNfTG9hZFNtc0Zyb21TaW0oKTt9CiAjZW5kaWYNCiB9Vk9JRCBhdFdlYl9SZWFkU21zKFVJTlQ4KnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMOwogVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4ZGMwKzI3MjEtMHgxODYxKX07YXNzZXJ0KHBEYXRhYnVmIT1OVUxMKTtwdE1lc3NhZ2U9KFRfekdvYWhlYWRNc2dCdWYqKQorKDB4MTRmNCsxMjczLTB4MTllZCl9O2Fzc2VydChwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKikKIHBEYXRhYnVmO3pVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cyxXTVNfU01TX0NNRF9NU0dfTU9ESUZZX1RBRyk7cmVzdWx0PQogelVmaVNtc19Nb2RpZnlTbXNUYWcoKFRfelVmaVNtc19Nb2RpZnlGbGFnKilwdE1lc3NhZ2UtPm1zZ19kYXRhKTt0U3RhdHVzLgogY21kX3N0YXR1cz1yZXN1bHQ7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMpO31WT0lEIGF0V2ViX1NhdmVTbXMoVUlOVDgKICpwRGF0YWJ1Zil7VF96R29haGVhZE1zZ0J1ZipwdE1lc3NhZ2U9TlVMTDtUX3pVZmlTbXNfQ21kU3RhdHVzIHJlc3VsdD0KLVdNU19DTURfUFJPQ0VTU0lORztUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsoMHg2MysxMjY1LTB4NTU0KX07YXNzZXJ0KAorV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDE3YWQrMTA2Ny0weDFiZDgpfTthc3NlcnQoCiBwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKilwRGF0YWJ1Zjt6VWZpU21zX0luaXRDbWRTdGF0dXMoJgogdFN0YXR1cyxXTVNfU01TX0NNRF9NU0dfV1JJVEUpO3Jlc3VsdD16VWZpU21zX1dyaXRlUmF3U21zKChUX3pVZmlTbXNfU2F2ZVJlcSopCiBwdE1lc3NhZ2UtPm1zZ19kYXRhKTtpZihnX3pVZmlTbXNfTWVtRnVsbEZsYWdbWlRFX1dNU19NRU1PUllfTlZdKXt0U3RhdHVzLgpAQCAtNjAsMjUwICs2MCwyNTAgQEAKIHpVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9TQVZJTkcpO3NjX2NmZ19zZXQoTlZfU01TX1NBVkVfUkVTVUxULAogIlx4NmZceDZiIik7fVZPSUQgYXRXZWJfU2V0U21zKFVJTlQ4KnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMOwogVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4MTFjMCsxNTY1LTB4MTdkZCl9O3ByaW50ZigKKygweGFlMisxMTQ3LTB4ZjVkKX07cHJpbnRmKAogIlx4NDlceDRlXHg1NFx4NGZceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg1M1x4NjVceDc0XHg1M1x4NmRceDczXHgyZSIgIlxuIikKIDthc3NlcnQocERhdGFidWYhPU5VTEwpO3B0TWVzc2FnZT0oVF96R29haGVhZE1zZ0J1ZiopcERhdGFidWY7CiB6VWZpU21zX0luaXRDbWRTdGF0dXMoJnRTdGF0dXMsV01TX1NNU19DTURfQ0ZHX1NFVF9QQVJBTUVURVJTKTtyZXN1bHQ9CiB6VWZpU21zX1NldFNtc1BhcmEoKFRfelVmaVNtc19QYXJhSW5mbyopcHRNZXNzYWdlLT5tc2dfZGF0YSk7dFN0YXR1cy5jbWRfc3RhdHVzPQogcmVzdWx0Oyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U3RhdHVzKTt9Vk9JRCBhdFdlYl9PdXRkYXRlU21zQ2hlY2soVUlOVDgqCi1wRGF0YWJ1Zil7VF96VWZpU21zX0RlbFJlcSB0U21zRGVsPXsoMHgxODBiKzM3OTAtMHgyNmQ5KX07CitwRGF0YWJ1Zil7VF96VWZpU21zX0RlbFJlcSB0U21zRGVsPXsoMHhhZDYrMjQzNS0weDE0NTkpfTsKIHpVZmlTbXNfQ2hlY2tEYk91dGRhdGVTbXMoWlRFX1dNU19EQl9OVl9UQUJMRSwmdFNtc0RlbCk7cHJpbnRmKAogIlx4MmRceDJkXHgyZFx4MmRceDZmXHg3NVx4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4MjBceDZlXHg3Nlx4NzRceDNhXHgyMFx4MjVceDY0XHgyZFx4MmRceDJkXHgyZCIgIlxuIgotLHRTbXNEZWwuYWxsX29yX2NvdW50KTtpZih0U21zRGVsLmFsbF9vcl9jb3VudD4oMHgxM2YrOTEwNy0weDI0ZDIpKXsKLWF0V2ViX0RlbFNtc0J5SW5kZXgoJnRTbXNEZWwpO31tZW1zZXQoJnRTbXNEZWwsKDB4ODJiKzEyMzQtMHhjZmQpLHNpemVvZigKKyx0U21zRGVsLmFsbF9vcl9jb3VudCk7aWYodFNtc0RlbC5hbGxfb3JfY291bnQ+KDB4ZDU3KzU5NTEtMHgyNDk2KSl7CithdFdlYl9EZWxTbXNCeUluZGV4KCZ0U21zRGVsKTt9bWVtc2V0KCZ0U21zRGVsLCgweDE4YSs4NDgxLTB4MjJhYiksc2l6ZW9mKAogVF96VWZpU21zX0RlbFJlcSkpO3pVZmlTbXNfQ2hlY2tEYk91dGRhdGVTbXMoWlRFX1dNU19EQl9TSU1fVEFCTEUsJnRTbXNEZWwpOwogcHJpbnRmKAogIlx4MmRceDJkXHgyZFx4MmRceDZmXHg3NVx4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDIwXHg3M1x4NjlceDZkXHgzYVx4MjBceDI1XHg2NFx4MmRceDJkXHgyZFx4MmQiICJcbiIKLSx0U21zRGVsLmFsbF9vcl9jb3VudCk7aWYodFNtc0RlbC5hbGxfb3JfY291bnQ+KDB4ZmI5KzIwODctMHgxN2UwKSl7CissdFNtc0RlbC5hbGxfb3JfY291bnQpO2lmKHRTbXNEZWwuYWxsX29yX2NvdW50PigweGQ3NiszNjkzLTB4MWJlMykpewogYXRXZWJfRGVsU21zQnlJbmRleCgmdFNtc0RlbCk7fX1WT0lEIHpTbXNfSGFuZGxlV2ViTXNnKE1TR19CVUYqcHRNc2dCdWYpe1VJTlQzMiAKLWk9KDB4NDBmKzczMy0weDZlYyk7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCitpPSgweDE1Y2QrNDA2MS0weDI1YWEpO2Fzc2VydChwdE1zZ0J1ZiE9TlVMTCk7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDcyXHg2NVx4NjNceDc2XHgyMFx4NmRceDczXHg2N1x4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4NzdceDY1XHg2Mlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHB0TXNnQnVmLT51c01zZ0NtZCk7d2hpbGUoKDB4MWU4YSsyMDAyLTB4MjY1YykhPVNtc0hhbmRsZVdlYlRhYltpXS5tc2dfaWQpe2lmKAorLHB0TXNnQnVmLT51c01zZ0NtZCk7d2hpbGUoKDB4ZmY4KzIxOS0weDEwZDMpIT1TbXNIYW5kbGVXZWJUYWJbaV0ubXNnX2lkKXtpZigKIHB0TXNnQnVmLT51c01zZ0NtZD09U21zSGFuZGxlV2ViVGFiW2ldLm1zZ19pZCl7aWYoU21zSGFuZGxlV2ViVGFiW2ldLm5lZWRfYmxvY2sKICYmcHRNc2dCdWYtPnNyY19pZCE9TU9EVUxFX0lEX1NNUyl7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfU01TLAogTU9EVUxFX0lEX1NNU19MT0NBTCxwdE1zZ0J1Zi0+dXNNc2dDbWQscHRNc2dCdWYtPnVzRGF0YUxlbiwodW5zaWduZWQgY2hhciopCi1wdE1zZ0J1Zi0+YXVjRGF0YUJ1ZiwoMHhkNWIrMTMyNi0weDEyODkpKTt9ZWxzZSBpZihOVUxMIT1TbXNIYW5kbGVXZWJUYWJbaV0uCitwdE1zZ0J1Zi0+YXVjRGF0YUJ1ZiwoMHgxNDU5KzE2Mi0weDE0ZmIpKTt9ZWxzZSBpZihOVUxMIT1TbXNIYW5kbGVXZWJUYWJbaV0uCiBmdW5jX3B0cil7U21zSGFuZGxlV2ViVGFiW2ldLmZ1bmNfcHRyKHB0TXNnQnVmLT5hdWNEYXRhQnVmKTt9YnJlYWs7fWkrKzt9fVNJTlQzMgogIHpTbXNfU2VuZE1zZyhVU0hPUlQgTXNnX2NtZCxVU0hPUlQgdXNfRGF0YUxlbixVQ0hBUipwRGF0YSl7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NmVceDY0XHgyMFx4NmRceDczXHg2N1x4MjBceDYzXHg2ZFx4NjRceDNhXHgyNVx4NjQiICJcbiIKICxNc2dfY21kKTtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9TTVMsTU9EVUxFX0lEX0FUX0NUTCxNc2dfY21kLHVzX0RhdGFMZW4sKAotdW5zaWduZWQgY2hhciopcERhdGEsKDB4MTBhOCsxMjYyLTB4MTU5NikpO3JldHVybigweDExNmYrMTU2My0weDE3OGEpO31TSU5UMzIgCi16U21zX1NlbmRDbWdzUmVxKFZPSUQpe1RfelNtc19TZW5kU21zUmVxIHNlbmRTbXNJbmZvPXsoMHgxNmEzKzU1MS0weDE4Y2EpfTsKLW1lbXNldCgmc2VuZFNtc0luZm8sKDB4MmE1Kzg0ODktMHgyM2NlKSxzaXplb2YoVF96U21zX1NlbmRTbXNSZXEpKTtzZW5kU21zSW5mby4KK3Vuc2lnbmVkIGNoYXIqKXBEYXRhLCgweDk2OCs0NjgxLTB4MWJiMSkpO3JldHVybigweDEyMzErNTMzLTB4MTQ0Nik7fVNJTlQzMiAKK3pTbXNfU2VuZENtZ3NSZXEoVk9JRCl7VF96U21zX1NlbmRTbXNSZXEgc2VuZFNtc0luZm89eygweDlkNSs3Mjk0LTB4MjY1Myl9OworbWVtc2V0KCZzZW5kU21zSW5mbywoMHg5ZjYrMjY3MC0weDE0NjQpLHNpemVvZihUX3pTbXNfU2VuZFNtc1JlcSkpO3NlbmRTbXNJbmZvLgogbGVuZ3RoPWdfelVmaVNtc19GaW5hbENtZ3NCdWYubGVuZ3RoO2lmKHN0cmxlbihnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk8Ci1aU01TX1BEVV9TSVpFLSgweGI5NisxMzYwLTB4MTBlNSkpe21lbWNweShzZW5kU21zSW5mby5wZHUsZ196VWZpU21zX0ZpbmFsQ21nc0J1ZgorWlNNU19QRFVfU0laRS0oMHgxOGY2KzI5My0weDFhMWEpKXttZW1jcHkoc2VuZFNtc0luZm8ucGR1LGdfelVmaVNtc19GaW5hbENtZ3NCdWYKIC5wZHUsc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KSk7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZFx4NjdceDczXHg1Mlx4NjVceDcxXHgyMFx4NzBceDY0XHg3NVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDI1XHg3MyIgIlxuIgogLGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTttZW1jcHkoc2VuZFNtc0luZm8ucGR1LGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1LAotWlNNU19QRFVfU0laRS0oMHg1ZDIrMTY3Ny0weGM1ZCkpO30qKHNlbmRTbXNJbmZvLnBkdStzdHJsZW4oCitaU01TX1BEVV9TSVpFLSgweDlkOCs0Nzk3LTB4MWM5MykpO30qKHNlbmRTbXNJbmZvLnBkdStzdHJsZW4oCiBnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSkpPVpTTVNfQ1RSTF9aX0NIQVI7Ci0jaWYgKDB4MTZmZisxNDM5LTB4MWM5ZCkKKyNpZiAoMHg5M2IrNjgzOC0weDIzZjApCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZkXHg2N1x4NzNceDUyXHg2NVx4NzFceDIwXHg3M1x4NjVceDZlXHg2NFx4MjBceDY0XHg2MVx4NzRceDYxIiAiXG4iCiApO3ByaW50ZigiXG4iICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjVceDczIiAiXG4iLHNlbmRTbXNJbmZvLnBkdSk7CiAjZW5kaWYNCiB6U21zX1NlbmRNc2coTVNHX0NNRF9TRU5EU01TX1JFUSxzaXplb2YoVF96U21zX1NlbmRTbXNSZXEpLCZzZW5kU21zSW5mbyk7Ci1zZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDEwYmIrMzMyMy0weDFkYjUpKXtyZXR1cm4gCitzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweGRjMSsyMTkzLTB4MTY1MSkpe3JldHVybiAKIFpTTVNfUkVTVUxUX09LO31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fVZPSUQgelNtc19SZWN2Q21nc09rKFZPSUQpewogcHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NmVceDY0XHg2NVx4NjRceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3M1x4MmVceDIwIiAiXG4iCiApO2dfelVmaVNtc19DdXJDb25jYXRTZWdObysrO2lmKGdfelVmaVNtc19DdXJDb25jYXRTZWdObz4KIFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpe3JldHVybjt9Z196VWZpU21zX0RiU3RvcmVEYXRhWwotZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vLSgweGUzMysyNDEzLTB4MTc5ZildLnRhZz1XTVNfVEFHX1RZUEVfTU9fU0VOVF9WMDE7CitnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8tKDB4ZDUrODk4NC0weDIzZWMpXS50YWc9V01TX1RBR19UWVBFX01PX1NFTlRfVjAxOwogelVmaVNtc19DbWdzUmVzcFByb2MoKTt9Vk9JRCB6U21zX1JlY3ZDbWdzRXJyKFZPSUQpe3ByaW50ZigKICJceDczXHg2ZFx4NzNceDIwXHg3M1x4NjVceDZlXHg2NFx4NjVceDY0XHgyMFx4NjZceDYxXHg2OVx4NmNceDJlXHgyMCIgIlxuIik7CiBnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8rKztpZihnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8+CiBaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXtyZXR1cm47fWdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQrKztwcmludGYoCiAiXHg3M1x4NjVceDZlXHg2NFx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyY1x4NzNceDZmXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NzNceDZkXHg3M1x4MjBceDc0XHg2Zlx4MjBceDY0XHg3Mlx4NjFceDY2XHg3NFx4NjJceDZmXHg3OFx4MmUiICJcbiIKLSk7Z196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHg0MjgrMzc0Mi0weDEyYzUpXS50YWc9Ci1XTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHg1YWYrODMwLTB4OGVjKSl7CispO2dfelVmaVNtc19EYlN0b3JlRGF0YVtnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8tKDB4MjMzKzY0MTEtMHgxYjNkKV0udGFnPQorV01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTtpZihnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW0+KDB4MTA5MyszNC0weDEwYjQpKXsKIGdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM9RkFMU0U7fXpVZmlTbXNfQ21nc1Jlc3BQcm9jKCk7fVNJTlQzMiB6U21zX1NlbmRDbWdkUmVxCi0oVUlOVDggaW5kZXgpe1RfelNtc19EZWxTbXNSZXEgZGVsU21zUmVxPXsoMHg5MzcrMzQ4MS0weDE2ZDApfTtkZWxTbXNSZXEuaW5kZXg9CisoVUlOVDggaW5kZXgpe1RfelNtc19EZWxTbXNSZXEgZGVsU21zUmVxPXsoMHhhMTErNTk4MS0weDIxNmUpfTtkZWxTbXNSZXEuaW5kZXg9CiBpbmRleDt6U21zX1NlbmRNc2coTVNHX0NNRF9ERUxTTVNfUkVRLHNpemVvZihUX3pTbXNfRGVsU21zUmVxKSwmZGVsU21zUmVxKTsKLXNlbV93YWl0KCZnX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4NTUrNjEzOC0weDE4NGUpKXtyZXR1cm4gCitzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDFmMmQrNjYwLTB4MjFjMCkpe3JldHVybiAKIFpTTVNfUkVTVUxUX09LO31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fVZPSUQgelNtc19SZWN2Q21nZE9rKFZPSUQpe0NIQVIgCi1zdHJVc2VkWygweGM5NSszNjE3LTB4MWFhYyldPXsoMHg0ZTArMjY3OS0weGY1Nyl9O2ludCB1c2VkPSgweDY0MSsyNjU2LTB4MTBhMSk7Ci1pbnQgdG1wX2k9KDB4NmQ3KzEzMDAtMHhiZWIpO3NjX2NmZ19zZXQoTlZfU01TX0RFTF9SRVNVTFQsIlx4NmZceDZiIik7cHJpbnRmKAorc3RyVXNlZFsoMHgyODQrNzA5OS0weDFlMzUpXT17KDB4MTFkKzE1NzMtMHg3NDIpfTtpbnQgdXNlZD0oMHg4N2MrNzA3MS0weDI0MWIpOworaW50IHRtcF9pPSgweDNmNiszNjA5LTB4MTIwZik7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Zlx4NmIiKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzNceDY5XHg2ZFx4NWZceDY0XHg2NVx4NmNceDVmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NzRceDZmXHgyMFx4NGZceDRiXHgyZVx4MjAiICJcbiIKICk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3RtcF9pPWF0b2koCi1zdHJVc2VkKTtpZih0bXBfaTwoMHgxOWUzKzkyMC0weDFkN2IpfHx0bXBfaT5JTlRfTUFYLSgweDFmYjErMTQxMy0weDI1MzUpKXsKK3N0clVzZWQpO2lmKHRtcF9pPCgweDQwOCs3ODEyLTB4MjI4Yyl8fHRtcF9pPklOVF9NQVgtKDB4MTBkMysxNTQ4LTB4MTZkZSkpewogYXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NTdceDRkXHg1M1x4NWZceDRlXHg1Nlx4NDNceDRmXHg0ZVx4NDZceDQ5XHg0N1x4NWZceDUzXHg0OVx4NGRceDVmXHg0M1x4NDFceDUyXHg0NFx4NWZceDU1XHg1M1x4NDVceDQ0XHgyMFx4NzRceDZkXHg3MFx4NWZceDY5XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTt0bXBfaT0oMHgxMDY4KzI4NDAtMHgxYjgwKTt9dXNlZD10bXBfaS0oMHgxZWZmKzM4NS0weDIwN2YpO2lmKHVzZWQ8Ci0oMHgxMzQ0KzQ1NTctMHgyNTExKSl7dXNlZD0oMHgxN2U4Kzk2Mi0weDFiYWEpO31tZW1zZXQoJnN0clVzZWQsCi0oMHhlMWErMTA2Mi0weDEyNDApLCgweDE1Zis0MTU0LTB4MTE4ZikpO3NucHJpbnRmKHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpLAorLHRtcF9pKTt0bXBfaT0oMHg3MmQrNjE0Mi0weDFmMmIpO311c2VkPXRtcF9pLSgweDFkOSs2MTY5LTB4MTlmMSk7aWYodXNlZDwKKygweDE1MjYrMjM5NS0weDFlODEpKXt1c2VkPSgweDE2NDcrMTczOS0weDFkMTIpO31tZW1zZXQoJnN0clVzZWQsCisoMHgxMiszMDkxLTB4YzI1KSwoMHhmNzErMzk0LTB4MTBmMSkpO3NucHJpbnRmKHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpLAogIlx4MjVceDY0Iix1c2VkKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkKTt9Vk9JRCAKIHpTbXNfUmVjdkNtZ2RFcnIoVk9JRCl7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2NVx4NzRceDIwXHg3M1x4NjlceDZkXHg1Zlx4NjRceDY1XHg2Y1x4NWZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHg3NFx4NmZceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MmVceDIwIiAiXG4iCi0pO31WT0lEIHpTbXNfUmVjdkNtZ2RGaW5pc2goVk9JRCl7Y2hhciBTdHJWYWx1ZVsoMHhmZjIrMTQ5My0weDE1YmQpXT17Ci0oMHg3YzQrMjk1OC0weDEzNTIpfTtDSEFSIHN0clRvdGFsWygweDdhZisyMDc1LTB4ZmMwKV09eygweDEyMDArMzQ3NC0weDFmOTIpfTsKLUNIQVIgc3RyVXNlZFsoMHg4YTUrMzg0My0weDE3OWUpXT17KDB4ZWE0KzU3ODEtMHgyNTM5KX07aW50IHRvdGFsPQotKDB4YmU4KzQ0OC0weGRhOCk7aW50IHVzZWQ9KDB4MjAyKzY3OTQtMHgxYzhjKTtpbnQgcmVtYWluPSgweDVhYSs2MjgyLTB4MWUzNCk7CispO31WT0lEIHpTbXNfUmVjdkNtZ2RGaW5pc2goVk9JRCl7Y2hhciBTdHJWYWx1ZVsoMHgxZGQ1KzE5MC0weDFlODkpXT17CisoMHg4ZiszMDgwLTB4Yzk3KX07Q0hBUiBzdHJUb3RhbFsoMHgyMGNjKzE0MTMtMHgyNjQ3KV09eygweDFmMmQrODY0LTB4MjI4ZCl9OworQ0hBUiBzdHJVc2VkWygweDY5YSs0MzIxLTB4MTc3MSldPXsoMHhiZWQrNTU4MS0weDIxYmEpfTtpbnQgdG90YWw9CisoMHhkMzErNDgxMC0weDFmZmIpO2ludCB1c2VkPSgweDE1MGErMjMwLTB4MTVmMCk7aW50IHJlbWFpbj0oMHgyM2ZjKzEzMS0weDI0N2YpOwogc2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3VzZWQ9YXRvaSgKLXN0clVzZWQpO2lmKHVzZWQ8KDB4YzMwKzY3MTItMHgyNjY4KXx8dXNlZD5JTlRfTUFYLSgweDE4NmErNjc1LTB4MWIwYykpe2F0X3ByaW50Ci0oTE9HX0VSUiwKK3N0clVzZWQpO2lmKHVzZWQ8KDB4MWFkMCsyODk2LTB4MjYyMCl8fHVzZWQ+SU5UX01BWC0oMHgyMTk2KzM4MC0weDIzMTEpKXsKK2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDU3XHg0ZFx4NTNceDVmXHg0ZVx4NTZceDQzXHg0Zlx4NGVceDQ2XHg0OVx4NDdceDVmXHg1M1x4NDlceDRkXHg1Zlx4NDNceDQxXHg1Mlx4NDRceDVmXHg1NVx4NTNceDQ1XHg0NFx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSx1c2VkKTt1c2VkPSgweDNhNys0MTE2LTB4MTNiYik7fXNjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9UT1RBTCwKLXN0clRvdGFsLHNpemVvZihzdHJUb3RhbCkpO3RvdGFsPWF0b2koc3RyVG90YWwpO2lmKHRvdGFsPCgweDkzKzU2OTItMHgxNmNmKXx8Ci10b3RhbD5JTlRfTUFYLSgweDI0KzkwMDktMHgyMzU0KSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx1c2VkKTt1c2VkPSgweDEzYTgrNDA5NS0weDIzYTcpO31zY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVE9UQUwsCitzdHJUb3RhbCxzaXplb2Yoc3RyVG90YWwpKTt0b3RhbD1hdG9pKHN0clRvdGFsKTtpZih0b3RhbDwoMHgxYWYwKzk0Ni0weDFlYTIpfHwKK3RvdGFsPklOVF9NQVgtKDB4YmE5KzE0Ny0weGMzYikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDU3XHg0ZFx4NTNceDVmXHg0ZVx4NTZceDQzXHg0Zlx4NGVceDQ2XHg0OVx4NDdceDVmXHg1M1x4NDlceDRkXHg1Zlx4NDNceDQxXHg1Mlx4NDRceDVmXHg1NFx4NGZceDU0XHg0MVx4NGNceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG90YWwpO3RvdGFsPSgweGYwNSsyMzE1LTB4MTgxMCk7fXJlbWFpbj10b3RhbC11c2VkO2lmKHJlbWFpbjwKLSgweDEwMGMrMjczMS0weDFhYjcpKXtyZW1haW49KDB4YWYrNTYyNS0weDE2YTgpO31tZW1zZXQoJlN0clZhbHVlLAotKDB4MWEyKzQ4NDAtMHgxNDhhKSwoMHhkZTArNTA4My0weDIxYjEpKTtzbnByaW50ZihTdHJWYWx1ZSxzaXplb2YoU3RyVmFsdWUpLAorLHRvdGFsKTt0b3RhbD0oMHg3MTUrNDYwNS0weDE5MTIpO31yZW1haW49dG90YWwtdXNlZDtpZihyZW1haW48CisoMHgxMWEyKzU0NjMtMHgyNmY5KSl7cmVtYWluPSgweDQ1OCsxNzEyLTB4YjA4KTt9bWVtc2V0KCZTdHJWYWx1ZSwKKygweDY2NSsxMzEwLTB4YjgzKSwoMHgxM2IrMTc3OS0weDgyNCkpO3NucHJpbnRmKFN0clZhbHVlLHNpemVvZihTdHJWYWx1ZSksCiAiXHgyNVx4NjQiLHJlbWFpbik7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1JFTUFJTixTdHJWYWx1ZSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg1M1x4NjlceDZkXHg1M1x4NmRceDczXHgyMFx4NzVceDczXHg2NVx4NjRceDNkXHgyNVx4NjRceDJjXHg3Mlx4NjVceDZkXHg2MVx4NjlceDZlXHgzZFx4MjVceDY0XHgyY1x4NzRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjVceDY0IiAiXG4iCiAsdXNlZCxyZW1haW4sdG90YWwpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9ERUxFRCk7c2NfY2ZnX3NldCgKIE5WX1NNU19EQl9DSEFOR0UsIlx4MzEiKTt9aW50IHpTbXNfU2VuZFptZW5hUmVxKFNJTlQzMiBhdmFpbCl7VF96U21zX1N0cm9hZ2VSZXEgCi1zdG9yYWdlUmVxPXsoMHgxMDliKzQzODMtMHgyMWJhKX07c3RvcmFnZVJlcS50eXBlPWF2YWlsO3pTbXNfU2VuZE1zZygKK3N0b3JhZ2VSZXE9eygweDQwYyszMjMwLTB4MTBhYSl9O3N0b3JhZ2VSZXEudHlwZT1hdmFpbDt6U21zX1NlbmRNc2coCiBNU0dfQ01EX1NUT1JBR0VfQ0FQX1JFUSxzaXplb2YoVF96U21zX1N0cm9hZ2VSZXEpLCZzdG9yYWdlUmVxKTtzZW1fd2FpdCgmCi1nX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4MTNiNyszMDM2LTB4MWY5Mikpe3JldHVybiBaU01TX1JFU1VMVF9PSwotO31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fWludCB6U21zX1NlbmRDbWdyUmVxKFVJTlQ4IGluZGV4KXsKLVRfelNtc19Nb2RpZnlUYWdSZXEgbW9kVGFnUmVxPXsoMHgxNGU3KzIwMjQtMHgxY2NmKX07bW9kVGFnUmVxLmluZGV4PWluZGV4OworZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweGMxOCs1NDA2LTB4MjEzNSkpe3JldHVybiBaU01TX1JFU1VMVF9PSzsKK31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fWludCB6U21zX1NlbmRDbWdyUmVxKFVJTlQ4IGluZGV4KXsKK1RfelNtc19Nb2RpZnlUYWdSZXEgbW9kVGFnUmVxPXsoMHgxNTYrMjM4Ny0weGFhOSl9O21vZFRhZ1JlcS5pbmRleD1pbmRleDsKIHpTbXNfU2VuZE1zZyhNU0dfQ01EX01PRElGWV9UQUdfUkVRLHNpemVvZihUX3pTbXNfTW9kaWZ5VGFnUmVxKSwmbW9kVGFnUmVxKTsKLXNlbV93YWl0KCZnX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4MjBlZis3NTctMHgyM2UzKSl7cmV0dXJuIAorc2VtX3dhaXQoJmdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHgxNDRiKzIwMDItMHgxYzFjKSl7cmV0dXJuIAogWlNNU19SRVNVTFRfT0s7fWVsc2V7cmV0dXJuIFpTTVNfUkVTVUxUX0VSUk9SO319aW50IHpTbXNfU2V0Q3NjYVJlcShQU1RSIHNjYSl7CiBUX3pTbXNfU2V0U2NhUmVxIHNldHNjYXJlcTtzdHJuY3B5KHNldHNjYXJlcS5zY2Esc2NhLHNpemVvZihzZXRzY2FyZXEuc2NhKS0KLSgweDE0ODgrMTgtMHgxNDk5KSk7elNtc19TZW5kTXNnKE1TR19DTURfU0NBX1NFVF9SRVEsc2l6ZW9mKFRfelNtc19TZXRTY2FSZXEpLCYKLXNldHNjYXJlcSk7c2VtX3dhaXQoJmdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHgxYTg4KzI4NDYtMHgyNWE1KSl7CisoMHgxNGIrMjI4MS0weGEzMykpO3pTbXNfU2VuZE1zZyhNU0dfQ01EX1NDQV9TRVRfUkVRLHNpemVvZihUX3pTbXNfU2V0U2NhUmVxKSwmCitzZXRzY2FyZXEpO3NlbV93YWl0KCZnX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4MmErOTY3NS0weDI1ZjQpKXsKIHJldHVybiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gWlNNU19SRVNVTFRfRVJST1I7fX1pbnQgelNtc19TZW5kQ25taVJlcShQU1RSCi0gcEF0Q21kUGFyYSl7VF96U21zX05vdGlmeVNldFJlcSBub3RpZnlTZXRSZXE9eygweGIzZis0MDIzLTB4MWFmNil9O2lmKAotKDB4NTAwKzIzMjEtMHhlMTEpPT1zdHJjbXAocEF0Q21kUGFyYSwiXHg3M1x4NjlceDZkIikpe25vdGlmeVNldFJlcS5tdD0KLSgweDY3YisyODAxLTB4MTE2Yik7fWVsc2V7bm90aWZ5U2V0UmVxLm10PSgweDQ3OCs3NDg4LTB4MjFiNik7fXpTbXNfU2VuZE1zZygKKyBwQXRDbWRQYXJhKXtUX3pTbXNfTm90aWZ5U2V0UmVxIG5vdGlmeVNldFJlcT17KDB4N2YwKzY5MzktMHgyMzBiKX07aWYoCisoMHhlZjQrMjY4MC0weDE5NmMpPT1zdHJjbXAocEF0Q21kUGFyYSwiXHg3M1x4NjlceDZkIikpe25vdGlmeVNldFJlcS5tdD0KKygweDU1Nys3OTgxLTB4MjQ4Myk7fWVsc2V7bm90aWZ5U2V0UmVxLm10PSgweDlkZis3MDE3LTB4MjU0Nik7fXpTbXNfU2VuZE1zZygKIE1TR19DTURfTk9USUZZX1NFVF9SRVEsc2l6ZW9mKFRfelNtc19Ob3RpZnlTZXRSZXEpLCZub3RpZnlTZXRSZXEpO3NlbV93YWl0KCYKLWdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHhkN2ErNDYwMy0weDFmNzQpKXtyZXR1cm4gWlNNU19SRVNVTFRfT0s7Ci19ZWxzZXtyZXR1cm4gWlNNU19SRVNVTFRfRVJST1I7fX1WT0lEIHpTbXNfUmVjdkNtdEluZChVSU5UOCpwRGF0YWJ1Zil7Q0hBUiAKLW5lZWRTTVNbKDB4YTRmKzE5MzUtMHgxMWFjKV09eygweGJhOSsxNDI5LTB4MTEzZSl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgxNzEwKzgzLTB4MTc2Myk9PXN0cmNtcCgKK2dfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHgxYmUzKzI2MjQtMHgyNjIyKSl7cmV0dXJuIFpTTVNfUkVTVUxUX09LCis7fWVsc2V7cmV0dXJuIFpTTVNfUkVTVUxUX0VSUk9SO319Vk9JRCB6U21zX1JlY3ZDbXRJbmQoVUlOVDgqcERhdGFidWYpe0NIQVIgCituZWVkU01TWygweDEwYTArNTEwNy0weDI0NjEpXT17KDB4MjVjKzg5OTYtMHgyNTgwKX07c2NfY2ZnX2dldCgKK05WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweGMzMyszODkzLTB4MWI2OCk9PXN0cmNtcCgKIG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCi0pO3JldHVybjt9VF96U21zX1Ntc0luZCB0Q210UnNwPXsoMHg2MTArNDUwOS0weDE3YWQpfTttZW1jcHkoJnRDbXRSc3AsKAorKTtyZXR1cm47fVRfelNtc19TbXNJbmQgdENtdFJzcD17KDB4NTFkKzMzOTMtMHgxMjVlKX07bWVtY3B5KCZ0Q210UnNwLCgKIFRfelNtc19TbXNJbmQqKXBEYXRhYnVmLHNpemVvZihUX3pTbXNfU21zSW5kKSk7elVmaVNtc19DbXRSZXNwUHJvYygmdENtdFJzcCk7CiB6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9Vk9JRCAKLXpTbXNfUmVjdkNtdGlJbmQoVUlOVDgqcERhdGFidWYpe2NoYXIgc21zX01haW5fc3RhdGVbKDB4NDMxKzE2NS0weDRiOCldPXsKLSgweDljMCs2OTAyLTB4MjRiNil9O1RfelNtc19TbXNJbmRleEluZCpzbXNJZHhJbmQ9KFRfelNtc19TbXNJbmRleEluZCopcERhdGFidWY7Ci1DSEFSIG5lZWRTTVNbKDB4MmQzKzcwLTB4MmU3KV09eygweDM2MCsyODg1LTB4ZWE1KX07c2NfY2ZnX2dldCgKLU5WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDkzMis1NzY3LTB4MWZiOSk9PXN0cmNtcCgKK3pTbXNfUmVjdkNtdGlJbmQoVUlOVDgqcERhdGFidWYpe2NoYXIgc21zX01haW5fc3RhdGVbKDB4MTEyNSs1MTcyLTB4MjUzYildPXsKKygweDM3Mys1OTgyLTB4MWFkMSl9O1RfelNtc19TbXNJbmRleEluZCpzbXNJZHhJbmQ9KFRfelNtc19TbXNJbmRleEluZCopcERhdGFidWY7CitDSEFSIG5lZWRTTVNbKDB4YzZhKzEyNzMtMHgxMTMxKV09eygweGYwKzkzOTQtMHgyNWEyKX07c2NfY2ZnX2dldCgKK05WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDEzYjYrMTE0OS0weDE4MzMpPT1zdHJjbXAoCiBuZWVkU01TLCJceDZlXHg2ZiIpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDY1XHg2NVx4NjRceDUzXHg0ZFx4NTNceDNkXHg2ZVx4NmZceDIxIgogKTtyZXR1cm47fXNjX2NmZ19nZXQoTlZfU01TX1NUQVRFLHNtc19NYWluX3N0YXRlLHNpemVvZihzbXNfTWFpbl9zdGF0ZSkpO2lmKAogc3RyY21wKHNtc19NYWluX3N0YXRlLCJceDczXHg2ZFx4NzNceDVmXHg2NFx4NjVceDZjXHg2OVx4NmVceDY3Iik9PQotKDB4MTc3NSsyMDczLTB4MWY4ZSkpe3ByaW50ZigKKygweDI3Zis4MDIwLTB4MjFkMykpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4M2FceDIwXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIgIlxuIgotKTtyZXR1cm47fWlmKCgweDJiOCs4NzE4LTB4MjRjNik9PXN0cm5jbXAoIlx4NTNceDRkIixzbXNJZHhJbmQtPnN0b3JldHlwZSwKLSgweDRmMSszMzItMHg2M2IpKSl7elVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTsKKyk7cmV0dXJuO31pZigoMHhlYjMrNDY4NC0weDIwZmYpPT1zdHJuY21wKCJceDUzXHg0ZCIsc21zSWR4SW5kLT5zdG9yZXR5cGUsCisoMHgxNDU0KzMxOTctMHgyMGNmKSkpe3pVZmlTbXNfU2V0U21zTG9jYXRpb24oU01TX0xPQ0FUSU9OX1NJTSk7CiB6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVklORyk7elNtc19TZW5kWm1nclJlcShzbXNJZHhJbmQtPmluZGV4KTt9CiBlbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4MjBceDNhXHg3M1x4NzRceDZmXHg3Mlx4NjVceDIwXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NTNceDRkXHgyZSIgIlxuIgogKTt9c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIiIpO31WT0lEIHpTbXNfUmVjdkNkc0luZChVSU5UOCpwRGF0YWJ1Zil7Q0hBUiAKLW5lZWRTTVNbKDB4MTk5MCsxNjA3LTB4MWZhNSldPXsoMHgxN2I4KzcyNC0weDFhOGMpfTtzY19jZmdfZ2V0KAotTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MTM0NisxMjIzLTB4MTgwZCk9PXN0cmNtcCgKLW5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKK25lZWRTTVNbKDB4MzZjKzc5Ni0weDY1NildPXsoMHg2MzQrMzk4Ni0weDE1YzYpfTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsCituZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MzNmKzcxNDAtMHgxZjIzKT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDZlXHg2NVx4NjVceDY0XHg1M1x4NGRceDUzXHgzZFx4NmVceDZmXHgyMSIKLSk7cmV0dXJuO31UX3pTbXNfU21zSW5kIHRDbXRSc3A9eygweDEwOWYrNDk5Ny0weDI0MjQpfTttZW1jcHkoJnRDbXRSc3AsKAorKTtyZXR1cm47fVRfelNtc19TbXNJbmQgdENtdFJzcD17KDB4YzRhKzU5MDAtMHgyMzU2KX07bWVtY3B5KCZ0Q210UnNwLCgKIFRfelNtc19TbXNJbmQqKXBEYXRhYnVmLHNpemVvZihUX3pTbXNfU21zSW5kKSk7elVmaVNtc19DZHNSZXNwUHJvYygmdENtdFJzcCk7CiB6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9Vk9JRCAKLXpTbXNfUmVjdkNkc2lJbmQoVUlOVDgqcERhdGFidWYpe2NoYXIgc21zX01haW5fc3RhdGVbKDB4ODY2KzE5NDktMHhmZTUpXT17Ci0oMHgxMjIxKzEyOTYtMHgxNzMxKX07VF96U21zX1Ntc0luZGV4SW5kKnNtc0lkeEluZD0oVF96U21zX1Ntc0luZGV4SW5kKilwRGF0YWJ1ZgotO0NIQVIgbmVlZFNNU1soMHgxMjIwKzI3MzQtMHgxYzljKV09eygweDExZCs5MzE5LTB4MjU4NCl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHhkYmQrNTU1MC0weDIzNmIpPT1zdHJjbXAoCit6U21zX1JlY3ZDZHNpSW5kKFVJTlQ4KnBEYXRhYnVmKXtjaGFyIHNtc19NYWluX3N0YXRlWygweGVhZCs2MjUyLTB4MjZmYildPXsKKygweDkyKzkzMTgtMHgyNGY4KX07VF96U21zX1Ntc0luZGV4SW5kKnNtc0lkeEluZD0oVF96U21zX1Ntc0luZGV4SW5kKilwRGF0YWJ1ZjsKK0NIQVIgbmVlZFNNU1soMHgxN2FiKzI2NzEtMHgyMWU4KV09eygweDEwZTYrNTU2Ni0weDI2YTQpfTtzY19jZmdfZ2V0KAorTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MTEzNSs0Mzk4LTB4MjI2Myk9PXN0cmNtcCgKIG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCiApO3JldHVybjt9c2NfY2ZnX2dldChOVl9TTVNfU1RBVEUsc21zX01haW5fc3RhdGUsc2l6ZW9mKHNtc19NYWluX3N0YXRlKSk7aWYoCiBzdHJjbXAoc21zX01haW5fc3RhdGUsIlx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciKT09Ci0oMHhkNCsyMDEzLTB4OGIxKSl7cHJpbnRmKAorKDB4MTUxOSszNzM3LTB4MjNiMikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg2OVx4NTJceDczXHg3MFx4M2FceDIwXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIgIlxuIgotKTtyZXR1cm47fWlmKCgweGJlYSs2NDMzLTB4MjUwYik9PXN0cm5jbXAoIlx4NTNceDRkIixzbXNJZHhJbmQtPnN0b3JldHlwZSwKLSgweGZkNisxMjQyLTB4MTRhZSkpKXt6VWZpU21zX1NldFNtc0xvY2F0aW9uKFNNU19MT0NBVElPTl9TSU0pOworKTtyZXR1cm47fWlmKCgweGI4ZisyNDQxLTB4MTUxOCk9PXN0cm5jbXAoIlx4NTNceDRkIixzbXNJZHhJbmQtPnN0b3JldHlwZSwKKygweDEyNWErMTY4NC0weDE4ZWMpKSl7elVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTsKIHpVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWSU5HKTt6U21zX1NlbmRabWdyUmVxKHNtc0lkeEluZC0+aW5kZXgpO30KIGVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2NFx4NzNceDY5XHg1Mlx4NzNceDcwXHgyMFx4M2FceDczXHg3NFx4NmZceDcyXHg2NVx4MjBceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg1M1x4NGRceDJlIiAiXG4iCiApO31zY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiIik7fWludCB6U21zX1NlbmRDbm1hUmVxKGludCBhY2tfbW9kZSl7Ci1UX3pTbXNfU21zQWNrUmVxIGFja1JlcT17KDB4YTNhKzIzNzAtMHgxMzdjKX07Q0hBUiBhY2tQZHVTdHJbKDB4MWFmKzc5LTB4MWNjKV09ewotKDB4YTI0KzU5NzMtMHgyMTc5KX07YWNrUmVxLmFja21vZGU9YWNrX21vZGU7aWYoYWNrX21vZGU9PSgweDEyNmMrMjEyNC0weDFhYjYpKXsKLXpVZmlTbXNfRW5jb2RlUGR1X0RlbGl2ZXJSZXBvcnQoYWNrUGR1U3RyLCgweDE2NSs5MjIwLTB4MjQ5NikpO21lbWNweShhY2tSZXEucGR1Ci0sYWNrUGR1U3RyLHN0cmxlbihhY2tQZHVTdHIpKTsKLSNpZiAoMHgyM2VmKzUyNy0weDI1ZmUpDQotaWYoc3RybGVuKGFja1BkdVN0cik8WlNNU19QRFVfU0laRS0oMHg5ZDMrNDM0My0weDFhYzkpKXttZW1jcHkoYWNrUmVxLnBkdSwKK1RfelNtc19TbXNBY2tSZXEgYWNrUmVxPXsoMHgyMjMrNDAzNS0weDExZTYpfTtDSEFSIGFja1BkdVN0clsoMHg4ODYrNjc2LTB4YWY4KV09Cit7KDB4MmVhKzQwMDMtMHgxMjhkKX07YWNrUmVxLmFja21vZGU9YWNrX21vZGU7aWYoYWNrX21vZGU9PSgweDQ1OSsxMDg2LTB4ODk1KSl7Cit6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KGFja1BkdVN0ciwoMHgxODArMTYzMi0weDcwZCkpO21lbWNweShhY2tSZXEucGR1LAorYWNrUGR1U3RyLHN0cmxlbihhY2tQZHVTdHIpKTsKKyNpZiAoMHgxNGMxKzQ0MzEtMHgyNjEwKQ0KK2lmKHN0cmxlbihhY2tQZHVTdHIpPFpTTVNfUERVX1NJWkUtKDB4MTEyYysxODUtMHgxMWU0KSl7bWVtY3B5KGFja1JlcS5wZHUsCiBhY2tQZHVTdHIsc3RybGVuKGFja1BkdVN0cikpO31lbHNle2F0X3ByaW50KExPR19ERUJVRwogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZVx4NmRceDYxXHg1Mlx4NjVceDcxXHgyMFx4NzBceDY0XHg3NVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDI1XHg3MyIgIlxuIgotLGFja1BkdVN0cik7bWVtY3B5KGFja1JlcS5wZHUsYWNrUGR1U3RyLFpTTVNfUERVX1NJWkUtKDB4N2UxKzc4NDMtMHgyNjgyKSk7fQorLGFja1BkdVN0cik7bWVtY3B5KGFja1JlcS5wZHUsYWNrUGR1U3RyLFpTTVNfUERVX1NJWkUtKDB4NTRmKzUzNjctMHgxYTQ0KSk7fQogI2VuZGlmICAgICANCiAqKGFja1JlcS5wZHUrc3RybGVuKGFja1BkdVN0cikpPVpTTVNfQ1RSTF9aX0NIQVI7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZVx4NmRceDYxXHg1Mlx4NjVceDcxXHgyZVx4MjBceDcwXHg2NFx4NzVceDNkXHgyMFx4MjVceDczIiAiXG4iCi0sYWNrUmVxLnBkdSk7YWNrUmVxLmxlbmd0aD1zdHJsZW4oYWNrUGR1U3RyKS8oMHg2N2QrNzU0Mi0weDIzZjEpO316U21zX1NlbmRNc2coCissYWNrUmVxLnBkdSk7YWNrUmVxLmxlbmd0aD1zdHJsZW4oYWNrUGR1U3RyKS8oMHgxMTk5KzM4MjQtMHgyMDg3KTt9elNtc19TZW5kTXNnKAogTVNHX0NNRF9TTVNBQ0tfUkVRLHNpemVvZihUX3pTbXNfU21zQWNrUmVxKSwmYWNrUmVxKTtzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZigKLWdfc21zT3B0UnNwLnJlc3VsdD09KDB4YmNiKzg2My0weGYyOSkpe3JldHVybiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gCitnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDU4ZCs3MzAwLTB4MjIxMCkpe3JldHVybiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gCiBaU01TX1JFU1VMVF9FUlJPUjt9fWludCB6U21zX1NlbmRabWdyUmVxKGludCBpbmRleCl7VF96U21zX1JlYWRTbXNSZXEgcmVhZFNtc1JlcQotPXsoMHgxYTViKzcxNS0weDFkMjYpfTtpU21zSW5kZXg9aW5kZXg7cHJpbnRmKAorPXsoMHgxNDMwKzk1OC0weDE3ZWUpfTtpU21zSW5kZXg9aW5kZXg7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDVhXHg2ZFx4NjdceDcyXHg1Mlx4NjVceDcxXHgyMFx4NDdceDY1XHg3NFx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICxpU21zSW5kZXgpO3JlYWRTbXNSZXEuaW5kZXg9aW5kZXg7elNtc19TZW5kTXNnKE1TR19DTURfUkVBRFNNU19SRVEsc2l6ZW9mKAotVF96U21zX1JlYWRTbXNSZXEpLCZyZWFkU21zUmVxKTtyZXR1cm4oMHhkMis3NTM4LTB4MWU0NCk7fVZPSUQgelNtc19SZWN2Wm1nclJzcCgKLVVJTlQ4KnBEYXRhYnVmKXtUX3pTbXNfU21zSW5kIHRDbWdyUnNwPXsoMHg2MGErNzc5LTB4OTE1KX07bWVtY3B5KCZ0Q21nclJzcCwoCitUX3pTbXNfUmVhZFNtc1JlcSksJnJlYWRTbXNSZXEpO3JldHVybigweDI0NisyODQxLTB4ZDVmKTt9Vk9JRCB6U21zX1JlY3ZabWdyUnNwKAorVUlOVDgqcERhdGFidWYpe1RfelNtc19TbXNJbmQgdENtZ3JSc3A9eygweGI2YisxMzQxLTB4MTBhOCl9O21lbWNweSgmdENtZ3JSc3AsKAogVF96U21zX1Ntc0luZCopcERhdGFidWYsc2l6ZW9mKFRfelNtc19TbXNJbmQpKTt0Q21nclJzcC5pbmRleD1pU21zSW5kZXg7CiB6VWZpU21zX1ptZ3JSZXNwUHJvYygmdENtZ3JSc3ApO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO31WT0lEIHpTbXNfUmVjdlptZ3JPaygKLVVJTlQ4KnBEYXRhYnVmKXtUX3pTbXNfb3B0UnNwIHNtc09wdFJzcD17KDB4MTJmMys0Njk0LTB4MjU0OSl9O21lbWNweSgmc21zT3B0UnNwCi0sKFRfelNtc19vcHRSc3AqKXBEYXRhYnVmLHNpemVvZihUX3pTbXNfb3B0UnNwKSk7aWYoc21zT3B0UnNwLnJlc3VsdD09Ci0oMHg3YWErMjI0NS0weDEwNmUpKXtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9ZWxzZXtwcmludGYoCitVSU5UOCpwRGF0YWJ1Zil7VF96U21zX29wdFJzcCBzbXNPcHRSc3A9eygweGJkNCsyOTg5LTB4MTc4MSl9O21lbWNweSgmc21zT3B0UnNwLAorKFRfelNtc19vcHRSc3AqKXBEYXRhYnVmLHNpemVvZihUX3pTbXNfb3B0UnNwKSk7aWYoc21zT3B0UnNwLnJlc3VsdD09CisoMHg2Mis1MDgwLTB4MTQzOSkpe3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCJceDZmXHg2YiIpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NmRceDY3XHg3Mlx4NDVceDcyXHg3Mlx4MjBceDIwXHg1M1x4NGRceDUzXHgyMFx4N2FceDZkXHg2N1x4NzJceDIwXHg2OVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2YyIgIlxuIgogKTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKAogU01TX1NUQVRFX1JFQ1ZFRCk7fX1WT0lEIHpTbXNfUmVjdlpwYmljSW5kKFVJTlQ4KnBEYXRhYnVmKXtUX3pBdF9acGJpY1JlcypwdFBhcmEKID1aVUZJX05VTEw7aWYocERhdGFidWY9PU5VTEwpe3JldHVybjt9cHRQYXJhPShUX3pBdF9acGJpY1JlcyopKHBEYXRhYnVmKTtpZigoCi0oMHgxNGQ2KzI5MTUtMHgyMDM4KT09cHRQYXJhLT5yZXN1bHQpJiYoKDB4MTAzNis1MzczLTB4MjUzMyk9PXB0UGFyYS0+b3BlcnR5cGUpKQote0NIQVIgbmVlZFNtc1soMHgxNzQ2KzMxMzEtMHgyMzRmKV09eygweDIzYSszNzA5LTB4MTBiNyl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTbXMsc2l6ZW9mKG5lZWRTbXMpKTtpZigoMHhhNGMrMTkzMi0weDExZDgpIT1zdHJjbXAoCisoMHgxOGQ5KzcyNy0weDFiYWYpPT1wdFBhcmEtPnJlc3VsdCkmJigoMHhhMGIrNTE5OS0weDFlNWEpPT1wdFBhcmEtPm9wZXJ0eXBlKSl7CitDSEFSIG5lZWRTbXNbKDB4ZjIrMjQwMC0weGEyMCldPXsoMHg2MGIrMjk5NC0weDExYmQpfTtzY19jZmdfZ2V0KAorTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU21zLHNpemVvZihuZWVkU21zKSk7aWYoKDB4OTUxKzU1NjgtMHgxZjExKSE9c3RyY21wKAogbmVlZFNtcywiXHg2ZVx4NmYiKSl7elN2cl9acGJpY19TbXNfSW5pdCgpO319fVZPSUQgelNtc19SZWN2Q3Btc0luZChVSU5UOCoKIHBEYXRhYnVmKXtUX3pTbXNfQ3Btc0luZCpjcG1zSW5kPShUX3pTbXNfQ3Btc0luZCopcERhdGFidWY7Q0hBUiBzdHJCdWZbCi0oMHgxYzVhKzc0OC0weDFmM2MpXT17KDB4Yjc2KzEwOC0weGJlMil9O2ludCByZW1haW5TcGFjZT0oMHg1YzkrMTExMS0weGEyMCk7CisoMHgxNDQ3KzI0NjUtMHgxZGRlKV09eygweDhkKzY1MDUtMHgxOWY2KX07aW50IHJlbWFpblNwYWNlPSgweDFmMDgrMTQ1MS0weDI0YjMpOwogc25wcmludGYoc3RyQnVmLHNpemVvZihzdHJCdWYpLCJceDI1XHg2NCIsY3Btc0luZC0+dG90YWwpO3NjX2NmZ19zZXQoCiBaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1RPVEFMLHN0ckJ1Zik7c2NfY2ZnX3NldCgKLVpURV9XTVNfTlZDT05GSUdfU0lNX0NBUEFCSUxJVFksc3RyQnVmKTttZW1zZXQoJnN0ckJ1ZiwoMHgxMjE5KzI0OTEtMHgxYmQ0KSwKLSgweDdiYSs0NDAyLTB4MThlMikpO3NucHJpbnRmKHN0ckJ1ZixzaXplb2Yoc3RyQnVmKSwiXHgyNVx4NjQiLGNwbXNJbmQtPnVzZWQpOworWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FQQUJJTElUWSxzdHJCdWYpO21lbXNldCgmc3RyQnVmLCgweGFjZis2NzY5LTB4MjU0MCksCisoMHg3ZGYrMTQ5Ny0weGRhZSkpO3NucHJpbnRmKHN0ckJ1ZixzaXplb2Yoc3RyQnVmKSwiXHgyNVx4NjQiLGNwbXNJbmQtPnVzZWQpOwogc2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyQnVmKTtyZW1haW5TcGFjZT1jcG1zSW5kLT50b3RhbC0KLWNwbXNJbmQtPnVzZWQ7bWVtc2V0KCZzdHJCdWYsKDB4ZDczKzg5LTB4ZGNjKSwoMHg2YmMrMzA1MC0weDEyOWMpKTtzbnByaW50ZigKK2NwbXNJbmQtPnVzZWQ7bWVtc2V0KCZzdHJCdWYsKDB4M2ExKzE3MTYtMHhhNTUpLCgweDFiYjgrMjgwOC0weDI2YTYpKTtzbnByaW50ZigKIHN0ckJ1ZixzaXplb2Yoc3RyQnVmKSwiXHgyNVx4NjQiLHJlbWFpblNwYWNlKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9SRU1BSU4sc3RyQnVmKTtzY19jZmdfc2V0KE5WX1NNU19TVE9SRSwiXHg2Zlx4NmIiKTt9Ci0jZGVmaW5lIEFUX0NNRF9NQVggKDB4NTA2KzI4MjMtMHhmY2QpDQorI2RlZmluZSBBVF9DTURfTUFYICgweDYzZis3Mzc0LTB4MjJjZCkNCiAjZGVmaW5lIFpBVF9UQUJfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciApKFwKLSgweDE0OGMrMzYxNi0weDIxYjApKSkgICAgDQorKDB4YWU3KzY4NDgtMHgyNGFiKSkpICAgIA0KICNkZWZpbmUgWkFUX05VTExfRklMTCAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICkoXAotKDB4YTg2KzIzNzAtMHgxMmNiKSkpICAgIA0KLSNkZWZpbmUgWkFUX1NQQUNFX1JFUExBQ0UgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICkoKDB4NWZhKzE5NTUtMHhjOWYpXAorKDB4YzY2KzU5NzMtMHgyMmJlKSkpICAgIA0KKyNkZWZpbmUgWkFUX1NQQUNFX1JFUExBQ0UgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICkoKDB4NGFkKzExMDktMHg4MDQpXAogKSkgICAgDQogI2RlZmluZSBaQVRfTEZfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKShcCi0oMHhmMDcrMzUxMS0weDFiYzMpKSkgICAgDQotI2RlZmluZSBaQVRfQ1JfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKSgoMHg0YTErMTgzOC0weGFkNSlcCisoMHgxYWYxKzM2MS0weDFiNWYpKSkgICAgDQorI2RlZmluZSBaQVRfQ1JfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKSgoMHgzMzArMTk1OC0weDlkYylcCiApKSAgICANCiBzdGF0aWMgdm9pZCBhdEJhc2VfUHJlUHJvY1JlcyhjaGFyKnBQYXJhTGluZSxpbnQgcGFyYVNpemUpe3NpZ25lZCBsb25nIGZsZz0KLSgweDlkKzU1ODktMHgxNjcyKTt1bnNpZ25lZCBsb25nIGk9KDB4MzliKzc0MDAtMHgyMDgzKTt1bnNpZ25lZCBsb25nIGxlbmd0aD0KLSgweDEyODIrMTYwMi0weDE4YzQpO2NoYXIqcFNvdXJjZT1wUGFyYUxpbmU7Y2hhcipwRGVzdD1OVUxMO2NoYXIqcFN0ckRlc3RNYWxsb2M9Ci0oY2hhciopbWFsbG9jKEFUX0NNRF9NQVgpO2lmKE5VTEw9PXBTdHJEZXN0TWFsbG9jKXtyZXR1cm47fW1lbXNldChwU3RyRGVzdE1hbGxvYwotLCgweDVmNSsxNzI4LTB4Y2I1KSxBVF9DTURfTUFYKTthc3NlcnQocFBhcmFMaW5lIT1OVUxMKTtwRGVzdD1wU3RyRGVzdE1hbGxvYzsKLWxlbmd0aD1zdHJsZW4ocFBhcmFMaW5lKTtpZigobGVuZ3RoPT0oMHgxNGM4KzExNzgtMHgxOTYyKSl8fChsZW5ndGg+PUFUX0NNRF9NQVgpCi0pe2ZyZWUocFN0ckRlc3RNYWxsb2MpO3JldHVybjt9Zm9yKGk9KDB4MWUxYysxOTYtMHgxZWUwKTsoaTxsZW5ndGgpJiYocERlc3QtCi1wU3RyRGVzdE1hbGxvYzxBVF9DTURfTUFYKTtpKyspe2lmKCgoY2hhcikoMHhmNWErNzEzLTB4MTIwMSkpPT0qcFNvdXJjZSl7ZmxnPSgKLSgweGE0ZCs0NzcyLTB4MWNmMSk9PWZsZyk/KDB4MTQ4Yys0NDg1LTB4MjYxMCk6KDB4MTI4OCszNzI0LTB4MjExNCk7aWYoCi0oKGNoYXIpKDB4MTkwNCsxNDA4LTB4MWU2MikpPT0qKHBTb3VyY2UrKDB4NzE4KzYzMzgtMHgxZmQ5KSkpeypwRGVzdCsrPShjaGFyKQotWkFUX05VTExfRklMTDt9fWVsc2UgaWYoKCgoY2hhcikoMHgxMDE3KzEyMzYtMHgxNGJmKSk9PSpwU291cmNlKSYmKAotKDB4MTRhNis2MzctMHgxNzIzKT09ZmxnKSl7KnBEZXN0Kys9KChjaGFyKSgweDU3Mis2ODIwLTB4MWZmNikpO2lmKAotKChjaGFyKSgweDg4OCs3MTItMHhiMjQpKT09KihwU291cmNlKygweGU2KzI2MzQtMHhiMmYpKSl7KnBEZXN0Kys9Ci0oKGNoYXIpKDB4MTNhNSszODQ4LTB4MjI3NCkpO31lbHNlIGlmKCdcMCc9PSoocFNvdXJjZSsoMHhhZWIrNDA3LTB4YzgxKSkpeypwRGVzdAotKys9KGNoYXIpWkFUX05VTExfRklMTDt9fWVsc2V7aWYoKCgoY2hhcikoMHgxNjE4KzE4NTgtMHgxZDNhKSk9PSpwU291cmNlKSYmKAotKDB4OWVhKzc0My0weGNkMCk9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9TUEFDRV9SRVBMQUNFO31lbHNlIGlmKCgnXHQnPT0qCi1wU291cmNlKSYmKCgweDM5MiszNTA4LTB4MTE0NSk9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9UQUJfUkVQTEFDRTt9ZWxzZSBpZigoCi0nXG4nPT0qcFNvdXJjZSkmJigoMHgxZTY3KzE1NzAtMHgyNDg4KT09ZmxnKSl7KnBEZXN0Kys9KGNoYXIpWkFUX0xGX1JFUExBQ0U7fQotZWxzZSBpZigoJ1xyJz09KnBTb3VyY2UpJiYoKDB4YzQ1Kzc2Mi0weGYzZSk9PWZsZykpeypwRGVzdCsrPShjaGFyKQotWkFUX0NSX1JFUExBQ0U7fWVsc2V7KnBEZXN0Kys9KnBTb3VyY2U7fX1wU291cmNlKys7fW1lbXNldChwUGFyYUxpbmUsCi0oMHgxOGNmKzMxNjQtMHgyNTJiKSxwYXJhU2l6ZSk7c3RybmNweShwUGFyYUxpbmUscFN0ckRlc3RNYWxsb2MscGFyYVNpemUtCi0oMHg1ZjkrMzMyNy0weDEyZjcpKTtmcmVlKHBTdHJEZXN0TWFsbG9jKTt9Vk9JRCB6U21zX1JlY3ZDc2NhSW5kKFVJTlQ4KnBEYXRhYnVmKQote1RfelNtc19Dc2NhSW5kIGNzY2FJbmQ9eygweDJhYys4MDctMHg1ZDMpfTsKLSNpZiAoMHg4Y2ErMjM5NS0weDEyMjQpCisoMHgyYzErMjE0LTB4Mzk3KTt1bnNpZ25lZCBsb25nIGk9KDB4MTkzYis2NTMtMHgxYmM4KTt1bnNpZ25lZCBsb25nIGxlbmd0aD0KKygweGNjYSs3MTQtMHhmOTQpO2NoYXIqcFNvdXJjZT1wUGFyYUxpbmU7Y2hhcipwRGVzdD1OVUxMO2NoYXIqcFN0ckRlc3RNYWxsb2M9KAorY2hhciopbWFsbG9jKEFUX0NNRF9NQVgpO2lmKE5VTEw9PXBTdHJEZXN0TWFsbG9jKXtyZXR1cm47fW1lbXNldChwU3RyRGVzdE1hbGxvYywKKygweDFkNzArMjM5MS0weDI2YzcpLEFUX0NNRF9NQVgpO2Fzc2VydChwUGFyYUxpbmUhPU5VTEwpO3BEZXN0PXBTdHJEZXN0TWFsbG9jOworbGVuZ3RoPXN0cmxlbihwUGFyYUxpbmUpO2lmKChsZW5ndGg9PSgweDk1YSsxNzk5LTB4MTA2MSkpfHwobGVuZ3RoPj1BVF9DTURfTUFYKSkKK3tmcmVlKHBTdHJEZXN0TWFsbG9jKTtyZXR1cm47fWZvcihpPSgweDEzYTUrMTU1OS0weDE5YmMpOyhpPGxlbmd0aCkmJihwRGVzdC0KK3BTdHJEZXN0TWFsbG9jPEFUX0NNRF9NQVgpO2krKyl7aWYoKChjaGFyKSgweDMzZis2MDQtMHg1NzkpKT09KnBTb3VyY2Upe2ZsZz0oCisoMHg3NGMrMTEtMHg3NTcpPT1mbGcpPygweDEzYSs1MzA4LTB4MTVmNSk6KDB4ZDM1KzY5MC0weGZlNyk7aWYoCisoKGNoYXIpKDB4ZTBmKzYxNDYtMHgyNWVmKSk9PSoocFNvdXJjZSsoMHg3NjErMTI2LTB4N2RlKSkpeypwRGVzdCsrPShjaGFyKQorWkFUX05VTExfRklMTDt9fWVsc2UgaWYoKCgoY2hhcikoMHg4OWMrNTE5My0weDFjYjkpKT09KnBTb3VyY2UpJiYoCisoMHgxZTErMzMzNi0weGVlOSk9PWZsZykpeypwRGVzdCsrPSgoY2hhcikoMHhjNTErMzM3NC0weDE5NWYpKTtpZigKKygoY2hhcikoMHgxMTAyKzIwOTUtMHgxOTA1KSk9PSoocFNvdXJjZSsoMHgxOGFiKzIwNjUtMHgyMGJiKSkpeypwRGVzdCsrPQorKChjaGFyKSgweGNiNis0OTY3LTB4MWZlNCkpO31lbHNlIGlmKCdcMCc9PSoocFNvdXJjZSsoMHg5OWYrNDM5NS0weDFhYzkpKSl7KgorcERlc3QrKz0oY2hhcilaQVRfTlVMTF9GSUxMO319ZWxzZXtpZigoKChjaGFyKSgweDdjOCs1OTczLTB4MWVmZCkpPT0qcFNvdXJjZSkmJigKKygweDIzNTYrNDYwLTB4MjUyMSk9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9TUEFDRV9SRVBMQUNFO31lbHNlIGlmKCgnXHQnPT0qCitwU291cmNlKSYmKCgweDE4NjgrMzI1OC0weDI1MjEpPT1mbGcpKXsqcERlc3QrKz0oY2hhcilaQVRfVEFCX1JFUExBQ0U7fWVsc2UgaWYoKAorJ1xuJz09KnBTb3VyY2UpJiYoKDB4MTE2Mys2MzItMHgxM2RhKT09ZmxnKSl7KnBEZXN0Kys9KGNoYXIpWkFUX0xGX1JFUExBQ0U7fWVsc2UKKyBpZigoJ1xyJz09KnBTb3VyY2UpJiYoKDB4NWNiKzI3NjAtMHgxMDkyKT09ZmxnKSl7KnBEZXN0Kys9KGNoYXIpWkFUX0NSX1JFUExBQ0U7Cit9ZWxzZXsqcERlc3QrKz0qcFNvdXJjZTt9fXBTb3VyY2UrKzt9bWVtc2V0KHBQYXJhTGluZSwoMHhlNzMrMjMzOC0weDE3OTUpLAorcGFyYVNpemUpO3N0cm5jcHkocFBhcmFMaW5lLHBTdHJEZXN0TWFsbG9jLHBhcmFTaXplLSgweDFjNzErMTk3NS0weDI0MjcpKTtmcmVlKAorcFN0ckRlc3RNYWxsb2MpO31WT0lEIHpTbXNfUmVjdkNzY2FJbmQoVUlOVDgqcERhdGFidWYpe1RfelNtc19Dc2NhSW5kIGNzY2FJbmQ9eworKDB4MWU4OCsxNzM3LTB4MjU1MSl9OworI2lmICgweDQrODMzMi0weDIwOGYpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4N2FceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDczXHg2M1x4NjFceDQ5XHg2ZVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4NjJceDc1XHg2Nlx4M2FceDI1XHg3MyIgIlxuIgogLHBEYXRhYnVmKTsKICNlbmRpZg0KIGF0QmFzZV9QcmVQcm9jUmVzKHBEYXRhYnVmLHN0cmxlbihwRGF0YWJ1ZikpO3NzY2FuZihwRGF0YWJ1ZiwKICJceDI1XHgzMlx4MzFceDczXHgyMFx4MjVceDMyXHgzMVx4NzMiLGNzY2FJbmQuc2NhLGNzY2FJbmQudG9zY2EpOwotI2lmICgweGU1MSsyMDctMHhmMWYpCisjaWYgKDB4MTllNCsyNDY1LTB4MjM4NCkKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3YVx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NzNceDYzXHg2MVx4NDlceDZlXHg2NFx4MjBceDczXHg2M1x4NjFceDNhXHgyNVx4NzNceDJjXHgyMFx4NzRceDZmXHg3M1x4NjNceDYxXHgyNVx4NzMiICJcbiIKICxjc2NhSW5kLnNjYSxjc2NhSW5kLnRvc2NhKTsKQEAgLTMxMSwyMiArMzExLDIyIEBACiBzY19jZmdfc2V0KE5WX1NNU19DRU5URVJfTlVNLGNzY2FJbmQuc2NhKTt6VWZpU21zX1NldFNjYVBhcmEoY3NjYUluZC5zY2EpO31WT0lEIAogelNtc19SZWN2Wm1nbEluZChVSU5UOCpwRGF0YWJ1Zil7elVmaVNtc19DbWdsUmVzcFByb2MoKFRfelNtc19TbXNJbmQqKXBEYXRhYnVmKTsKIH1pbnQgelNtc19TZW5kU21zSW5pdFJlcShWT0lEKXt6U21zX1NlbmRNc2coTVNHX0NNRF9TTVNJTklUX1JFUSwKLSgweDEwZWMrMTIxOS0weDE1YWYpLE5VTEwpO3JldHVybigweDI0ZGYrNTctMHgyNTE4KTt9Vk9JRCB6U21zX2luaXRBdE9rKFZPSUQpewotVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4MTc4KzIxMi0weDI0Yyl9O3NjX2NmZ19zZXQoTlZfU01TX1NUT1JFLAorKDB4MWJhKzcxOS0weDQ4OSksTlVMTCk7cmV0dXJuKDB4M2YxKzIzMjYtMHhkMDcpO31WT0lEIHpTbXNfaW5pdEF0T2soVk9JRCl7CitUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsoMHhlMjQrNDE3My0weDFlNzEpfTtzY19jZmdfc2V0KE5WX1NNU19TVE9SRSwKICJceDZmXHg2YiIpO3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxULCJceDZmXHg2YiIpO3RTdGF0dXMuY21kX3N0YXR1cz0KIFdNU19DTURfU1VDQ0VTUzt0U3RhdHVzLmNtZD1XTVNfU01TX0NNRF9JTklUOyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U3RhdHVzCiApO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9MT0FERUQpO31WT0lEIHpTbXNfaW5pdEF0RXJyKFZPSUQpewotVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4MTJjOCsxNTQtMHgxMzYyKX07c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQKK1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweGFmYiszNjczLTB4MTk1NCl9O3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxUCiAsIlx4NjZceDYxXHg2OVx4NmMiKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfTE9BREVEKTt0U3RhdHVzLgogY21kX3N0YXR1cz1XTVNfQ01EX0ZBSUxFRDt0U3RhdHVzLmNtZD1XTVNfU01TX0NNRF9JTklUOyh2b2lkKQogelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMpO31WT0lEIHpTbXNfUmVjdlNtc0luaXRSc3QoVUlOVDgqcERhdGFidWYpe21lbWNweSgKICZnX3Ntc09wdFJzcCxwRGF0YWJ1ZixzaXplb2YoVF96U21zX29wdFJzcCkpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09Ci0oMHhlNjErNzEwLTB4MTEyNikpe3pTbXNfaW5pdEF0T2soKTt9ZWxzZXt6U21zX2luaXRBdEVycigpO319VUlOVDggCisoMHgxMzg2KzE4NzMtMHgxYWQ2KSl7elNtc19pbml0QXRPaygpO31lbHNle3pTbXNfaW5pdEF0RXJyKCk7fX1VSU5UOCAKIHpTbXNfU21zTXNnQ3JlYXQoVk9JRCl7Z196U21zX01zcUlkPW1zZ2dldChNT0RVTEVfSURfU01TLElQQ19DUkVBVHwKLSgweDU2NCs1NTY1LTB4MTlhMSkpO2lmKGdfelNtc19Nc3FJZD09LSgweDYwZiszNDU5LTB4MTM5MSkpe3JldHVybiBaVUZJX0ZBSUw7fQotZ196U21zX0xvY2FsTXNxSWQ9bXNnZ2V0KE1PRFVMRV9JRF9TTVNfTE9DQUwsSVBDX0NSRUFUfCgweDE5MDArMzk2My0weDI2ZmIpKTtpZigKLWdfelNtc19Mb2NhbE1zcUlkPT0tKDB4MTBmMisyMDg3LTB4MTkxOCkpe3JldHVybiBaVUZJX0ZBSUw7fXNlbV9pbml0KCYKLWdfc21zX3NlbV9pZCwoMHgxNGFjKzIzNjQtMHgxZGU4KSwoMHgxZGQrMzQ2OC0weGY2OSkpO3JldHVybiBaVUZJX1NVQ0M7fXZvaWQgCisoMHgxM2NiKzM5MjQtMHgyMTlmKSk7aWYoZ196U21zX01zcUlkPT0tKDB4YzM5KzU5MzctMHgyMzY5KSl7cmV0dXJuIFpVRklfRkFJTDt9CitnX3pTbXNfTG9jYWxNc3FJZD1tc2dnZXQoTU9EVUxFX0lEX1NNU19MT0NBTCxJUENfQ1JFQVR8KDB4YzIzKzUwMzctMHgxZTUwKSk7aWYoCitnX3pTbXNfTG9jYWxNc3FJZD09LSgweDFmNTMrMTY4NC0weDI1ZTYpKXtyZXR1cm4gWlVGSV9GQUlMO31zZW1faW5pdCgmCitnX3Ntc19zZW1faWQsKDB4NGQ3KzE4NzktMHhjMmUpLCgweGYyMCs2NDUtMHgxMWE1KSk7cmV0dXJuIFpVRklfU1VDQzt9dm9pZCAKIHpTbXNfSGFuZGxlQXRjdGxMb2NhbE1zZyhNU0dfQlVGKnB0TXNnQnVmKXthc3NlcnQocHRNc2dCdWYhPU5VTEwpO3ByaW50ZigKICJceDczXHg2ZFx4NzNceDIwXHg2Y1x4NmZceDYzXHg2MVx4NmNceDIwXHg3Mlx4NjVceDYzXHg3Nlx4MjBceDZkXHg3M1x4NjdceDIwXHg2M1x4NmRceDY0XHgzYVx4MjVceDY0IiAiXG4iCiAscHRNc2dCdWYtPnVzTXNnQ21kKTtzd2l0Y2gocHRNc2dCdWYtPnVzTXNnQ21kKXtjYXNlIE1TR19DTURfWlBCSUNfSU5EOgpAQCAtMzUwLDQ0ICszNTAsNDQgQEAKIGNhc2UgTVNHX0NNRF9ORVdTTVNfSU5EOmNhc2UgTVNHX0NNRF9aUEJJQ19JTkQ6Y2FzZSBNU0dfQ01EX1pNR0xfSU5EOmNhc2UgCiBNU0dfQ01EX05FV1NNU19TVEFUVVNfSU5EOmlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1NNUyxNT0RVTEVfSURfU01TX0xPQ0FMLAogcHRNc2dCdWYtPnVzTXNnQ21kLHB0TXNnQnVmLT51c0RhdGFMZW4sKHVuc2lnbmVkIGNoYXIqKXB0TXNnQnVmLT5hdWNEYXRhQnVmLAotKDB4MWMwYisxODAyLTB4MjMxNSkpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX1WT0lEIHpTbXNfSGFuZGxlUmVzZXRUb0ZhY3RvcnkoKXsKLUNIQVIgY2xlYXJTbXNbKDB4MmE4KzIyNjQtMHhiNGUpXT17KDB4ZjYrNTU4My0weDE2YzUpfTtzY19jZmdfZ2V0KAorKDB4MTg0MisxNDUzLTB4MWRlZikpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX1WT0lEIHpTbXNfSGFuZGxlUmVzZXRUb0ZhY3RvcnkoKXsKK0NIQVIgY2xlYXJTbXNbKDB4OGMyKzIzNDctMHgxMWJiKV09eygweDFkNzcrNDQxLTB4MWYzMCl9O3NjX2NmZ19nZXQoCiBOVl9DTEVBUl9TTVNfV0hFTl9SRVNUT1JFLGNsZWFyU21zLHNpemVvZihjbGVhclNtcykpO3ByaW50ZigKICJceDYxXHg3NFx4NTdceDY1XHg2Mlx4NWZceDUyXHg2NVx4NzNceDc0XHg2Zlx4NzJceDY1XHg0Nlx4NjFceDYzXHg3NFx4NmZceDcyXHg3OVx4NTNceDY1XHg3NFx4NzRceDY5XHg2ZVx4NjdceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDY1XHg2NFx4MjFceDIwIiAiXG4iCiApO3ByaW50ZigKICJceDYzXHg2Y1x4NjVceDYxXHg3Mlx4NWZceDczXHg2ZFx4NzNceDVmXHg3N1x4NjhceDY1XHg2ZVx4NWZceDcyXHg2NVx4NzNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjVceDczXHgyMCIgIlxuIgotLGNsZWFyU21zKTtpZihzdHJjbXAoY2xlYXJTbXMsIlx4NzlceDY1XHg3MyIpPT0oMHg1YWYrNTEzMS0weDE5YmEpKXtwcmludGYoCissY2xlYXJTbXMpO2lmKHN0cmNtcChjbGVhclNtcywiXHg3OVx4NjVceDczIik9PSgweDE0N2YrMTU3LTB4MTUxYykpe3ByaW50ZigKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDRceDcyXHg2Zlx4NzBceDQxXHg2Y1x4NmNceDU0XHg2MVx4NjJceDZjXHg2NVx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NjVceDY0XHgyMVx4MjAiICJcbiIKICk7elVmaVNtc19Ecm9wQWxsVGFibGUoKTt9ZWxzZXtwcmludGYoCiAiXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg3Mlx4NmZceDcwXHg0MVx4NmNceDZjXHg1NFx4NjFceDYyXHg2Y1x4NjVceDQ1XHg3OFx4NjNceDY1XHg3MFx4NzRceDUzXHg2ZFx4NzNceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDY1XHg2NFx4MjFceDIwIiAiXG4iCiApO3pVZmlTbXNfRHJvcEFsbFRhYmxlRXhjZXB0U21zKCk7fWlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1NNUywKLU1PRFVMRV9JRF9NQUlOX0NUUkwsTVNHX0NNRF9SRVNFVF9SU1AsKDB4ZjdkKzExODItMHgxNDFiKSxOVUxMLAotKDB4NWNiKzM3MzEtMHgxNDVlKSk7fXZvaWQgelNtc19IYW5kbGVNYWluQ3RybE1zZyhNU0dfQlVGKnB0TXNnQnVmKXthc3NlcnQoCitNT0RVTEVfSURfTUFJTl9DVFJMLE1TR19DTURfUkVTRVRfUlNQLCgweDE1NzIrMTQ2NS0weDFiMmIpLE5VTEwsCisoMHgxZDI5KzE4MjktMHgyNDRlKSk7fXZvaWQgelNtc19IYW5kbGVNYWluQ3RybE1zZyhNU0dfQlVGKnB0TXNnQnVmKXthc3NlcnQoCiBwdE1zZ0J1ZiE9TlVMTCk7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDcyXHg2NVx4NjNceDc2XHgyMFx4NmRceDYxXHg2OVx4NmVceDIwXHg2M1x4NzRceDcyXHg2Y1x4MjBceDZkXHg3M1x4NjdceDIwXHg2M1x4NmRceDY0XHgzYVx4MjVceDY0IiAiXG4iCiAscHRNc2dCdWYtPnVzTXNnQ21kKTtzd2l0Y2gocHRNc2dCdWYtPnVzTXNnQ21kKXtjYXNlIE1TR19DTURfUkVTRVRfTk9USUZZOgogelNtc19IYW5kbGVSZXNldFRvRmFjdG9yeShwdE1zZ0J1Zi0+YXVjRGF0YUJ1Zik7YnJlYWs7ZGVmYXVsdDpicmVhazt9fXZvaWQgCi1zbXNfbXNnX3RocmVhZF9wcm9jKHZvaWQqYXJnKXtpbnQgaVJldD0oMHgzNzArNTU2Ny0weDE5MmYpO01TR19CVUYgc3RNc2c9ewotKDB4YTE2KzQ4MTYtMHgxY2U2KX07aW50IG1zZ1NpemU9c2l6ZW9mKE1TR19CVUYpLXNpemVvZihsb25nKTtpbnQgcXVldWVJZD0qKChpbnQKK3Ntc19tc2dfdGhyZWFkX3Byb2Modm9pZCphcmcpe2ludCBpUmV0PSgweDIxMSsxODQyLTB4OTQzKTtNU0dfQlVGIHN0TXNnPXsKKygweDUwNys1NDE4LTB4MWEzMSl9O2ludCBtc2dTaXplPXNpemVvZihNU0dfQlVGKS1zaXplb2YobG9uZyk7aW50IHF1ZXVlSWQ9KigoaW50CiAqKWFyZyk7cHJjdGwoUFJfU0VUX05BTUUsIlx4NzNceDZkXHg3M1x4NWZceDZjXHg2Zlx4NjNceDYxXHg2YyIsCi0oMHgyNWQrNjAwLTB4NGI1KSwoMHgxZGM4KzE4MzUtMHgyNGYzKSwoMHgxN2I2KzMwNTUtMHgyM2E1KSk7d2hpbGUoCi0oMHg3YTErNjc4OS0weDIyMjUpKXtpUmV0PSgweDJiMysyOTg4LTB4ZTVmKTttZW1zZXQoJnN0TXNnLCgweDFhZGMrMTc4Ni0weDIxZDYpLAotc2l6ZW9mKE1TR19CVUYpKTtpUmV0PW1zZ3JjdihxdWV1ZUlkLCZzdE1zZyxtc2dTaXplLCgweDE5NCs0NzgtMHgzNzIpLAotKDB4ZmErNTMwLTB4MzBjKSk7aWYoaVJldD49KDB4YzIyKzEwMS0weGM4Nykpe3N3aXRjaChzdE1zZy5zcmNfaWQpe2Nhc2UgCisoMHgxN2ZiKzE4NjQtMHgxZjQzKSwoMHhhNGQrMzc4Mi0weDE5MTMpLCgweDFiMGYrNTI2LTB4MWQxZCkpO3doaWxlKAorKDB4MTA3OCs0NDU4LTB4MjFlMSkpe2lSZXQ9KDB4ODYrNzM5Ni0weDFkNmEpO21lbXNldCgmc3RNc2csKDB4M2ZjKzU2NjMtMHgxYTFiKSwKK3NpemVvZihNU0dfQlVGKSk7aVJldD1tc2dyY3YocXVldWVJZCwmc3RNc2csbXNnU2l6ZSwoMHgyNis3NzgxLTB4MWU4YiksCisoMHgxMzkwKzI5MTUtMHgxZWYzKSk7aWYoaVJldD49KDB4MTBkKzg1NTMtMHgyMjc2KSl7c3dpdGNoKHN0TXNnLnNyY19pZCl7Y2FzZSAKIE1PRFVMRV9JRF9XRUJfQ0dJOnt6U21zX0hhbmRsZVdlYk1zZygmc3RNc2cpO2JyZWFrO31jYXNlIE1PRFVMRV9JRF9BVF9DVEw6ewogelNtc19IYW5kbGVBdGN0bE1zZygmc3RNc2cpO2JyZWFrO31jYXNlIE1PRFVMRV9JRF9TTVM6e3pTbXNfSGFuZGxlV2ViTXNnKCZzdE1zZykKIDt6U21zX0hhbmRsZUF0Y3RsTG9jYWxNc2coJnN0TXNnKTticmVhazt9Y2FzZSBNT0RVTEVfSURfTUFJTl9DVFJMOnsKIHpTbXNfSGFuZGxlTWFpbkN0cmxNc2coJnN0TXNnKTticmVhazt9ZGVmYXVsdDp7YnJlYWs7fX19ZWxzZXthdF9wcmludChBVF9ERUJVRywKICJceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4MjBceDY1XHg3Mlx4NzJceDZkXHg3M1x4NjdceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgogLGVycm5vLHN0cmVycm9yKGVycm5vKSk7fX19aW50IHNtc19tYWluKGludCBhcmdjLGNoYXIqYXJndltdKXtwdGhyZWFkX3QgCi1yZWN2X3RocmVhZF90aWQ9KDB4YzYxKzYwODctMHgyNDI4KTtNU0dfQlVGIG1zZ0J1Zj17KDB4NDZkKzc1MTEtMHgyMWM0KX07Q0hBUiAKLW5lZWRTTVNbKDB4MTBmYysyODE1LTB4MWJjOSldPXsoMHg2MzIrNTc1OC0weDFjYjApfTtwcmN0bChQUl9TRVRfTkFNRSwKLSJceDczXHg2ZFx4NzNceDVmXHg2ZFx4NjFceDY5XHg2ZSIsKDB4MTAzMys2NzYtMHgxMmQ3KSwoMHgxOGQrNzA5MS0weDFkNDApLAotKDB4ZWMyKzEwLTB4ZWNjKSk7bG9nbGV2ZWxfaW5pdCgpO3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZigKLW5lZWRTTVMpKTtpZigoMHgxNWFkKzEyMTktMHgxYTcwKSE9c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpe3pVZmlTbXNfSW5pdERiKCk7Ci16VWZpU21zX0NmZ1Ntc052SW5pdCgpO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3pTbXNfU21zTXNnQ3JlYXQoKTt9ZWxzZXtyZXR1cm4tCi0oMHhjMzMrMTI5NS0weDExNDEpO31wcmludGYoCityZWN2X3RocmVhZF90aWQ9KDB4YzIwKzYyNjMtMHgyNDk3KTtNU0dfQlVGIG1zZ0J1Zj17KDB4YjQ5KzY2NjctMHgyNTU0KX07Q0hBUiAKK25lZWRTTVNbKDB4ZTQzKzUxMzEtMHgyMjFjKV09eygweGI3NiszNTA1LTB4MTkyNyl9O3ByY3RsKFBSX1NFVF9OQU1FLAorIlx4NzNceDZkXHg3M1x4NWZceDZkXHg2MVx4NjlceDZlIiwoMHgyODMrNjg1NS0weDFkNGEpLCgweDk2MSs0ODgzLTB4MWM3NCksCisoMHg2MWYrMTg4Mi0weGQ3OSkpO2xvZ2xldmVsX2luaXQoKTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUywKK3NpemVvZihuZWVkU01TKSk7aWYoKDB4NzEwKzYyOTUtMHgxZmE3KSE9c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworelVmaVNtc19Jbml0RGIoKTt6VWZpU21zX0NmZ1Ntc052SW5pdCgpO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3pTbXNfU21zTXNnQ3JlYXQKKygpO31lbHNle3JldHVybi0oMHgzMis5NzctMHg0MDIpO31wcmludGYoCiAiXHg3M1x4NmRceDczXHgyMFx4NjFceDcwXHg3MFx4MjBceDY5XHg2ZVx4NjlceDc0XHgyMFx4NjZceDY5XHg2ZVx4NjlceDczXHg2OFx4NjVceDY0XHgyY1x4MjBceDc3XHg2OVx4NmNceDZjXHgyMFx4NzRceDZmXHgyMFx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDIwXHg2ZFx4NzNceDY3XHgyY1x4MjBceDZkXHg3M1x4NjdceDY5XHg2NFx4M2FceDI1XHg2NCIgIlxuIgogLGdfelNtc19Nc3FJZCk7aWYocHRocmVhZF9jcmVhdGUoJnJlY3ZfdGhyZWFkX3RpZCxOVUxMLHNtc19tc2dfdGhyZWFkX3Byb2MsKHZvaWQKLSopKCZnX3pTbXNfTG9jYWxNc3FJZCkpPT0tKDB4MTc5Nys4MDktMHgxYWJmKSl7YXNzZXJ0KCgweDExMmMrNTA5MS0weDI1MGYpKTt9Ci1zbXNfbXNnX3RocmVhZF9wcm9jKCZnX3pTbXNfTXNxSWQpO3JldHVybigweDVjZCs0NzExLTB4MTgzNCk7fQorKikoJmdfelNtc19Mb2NhbE1zcUlkKSk9PS0oMHhjOSsxMTg4LTB4NTZjKSl7YXNzZXJ0KCgweDExNDcrNjk4LTB4MTQwMSkpO30KK3Ntc19tc2dfdGhyZWFkX3Byb2MoJmdfelNtc19Nc3FJZCk7cmV0dXJuKDB4MTQxMCszMTM4LTB4MjA1Mik7fQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX3Byb2MuYyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19wcm9jLmMKaW5kZXggOGZlNmM5OC4uNjljM2NiNiAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX3Byb2MuYworKysgYi9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfcHJvYy5jCkBAIC01LDExNSArNSwxMTUgQEAKIFRfelVmaVNtc19Db25jYXRJbmZvIGdfelVmaVNtc19Db25jYXRTbXM7VF96VWZpU21zX0dyb3VwSW5mbyBnX3pVZmlTbXNfR3JvdXBTbXM7CiBUX3pVZmlTbXNfRGJTdG9yZURhdGEgZ196VWZpU21zX0RiU3RvcmVEYXRhW1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVhdO1VJTlQ4IAogZ196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX01BWF09e0ZBTFNFLEZBTFNFfTtUX3pVZmlTbXNfRGVsU21zIAotZ196VWZpU21zX0RlbE1zZztUX3pVZmlTbXNfRGVsSW5kZXhJbmZvIGdfZGVsZXRlSW5kZXg9eygweDcyNis3MDAyLTB4MjI4MCl9OwotVF96VWZpU21zX01vZGlmeVNtcyBnX3pVZmlTbXNfbW9kaWZ5TXNnPXsoMHgxYjJkKzk5OC0weDFmMTMpfTsKLVRfelVmaVNtc19Nb2RpZnlJbmRleEluZm8gZ19tb2RpZnlJbmRleD17KDB4MWQzMSs5MjMtMHgyMGNjKX07aW50IAotZ196VWZpU21zX1VuaXRMZW49KDB4MjUyMSs0MzgtMHgyNmQ3KTtpbnQgZ196VWZpU21zX0NvbmNhdFRvdGFsTnVtPQotKDB4MTBiZis0OTQ5LTB4MjQxNCk7aW50IGdfelVmaVNtc19DdXJDb25jYXRTZWdObz0oMHgxMGU5KzEyNzItMHgxNWUxKTtVSU5UOCAKLWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM9VFJVRTtpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudD0oMHg5MmErNzEyLTB4YmYyKTsKLWludCBnX3pVZmlTbXNfTXNnUmVmZXI9KDB4MTU1KzY4OTEtMHgxYzQwKTtpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0KLSgweGYyNSsyMjQtMHgxMDA1KTtjaGFyIGdfWm1lbmFfdmFsdWVbKDB4MTQ3MyszMjQ2LTB4MjExZildPXsoMHgzZDErMjgwMi0weGVjMyl9Ci07aW50IGdfZGlzcGxheW1vZGU9KDB4MjIwKzYzMTMtMHgxYWM5KTtleHRlcm4gU01TX0xPQ0FUSU9OIGdfelVmaVNtc19DdXJMb2NhdGlvbgotO2V4dGVybiBUX3pVZmlTbXNfQ21kU3RhdHVzIHpVZmlTbXNfSGFuZGxlUmVwb3J0KHVuc2lnbmVkIGNoYXIqcHRQZHVEYXRhKTtleHRlcm4KLSB2b2lkIHpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKGNoYXIqcGR1X3RtcCxpbnQqc3RhdCk7ZXh0ZXJuIFZPSUQgCi16VWZpU21zX1Jlc2VuZEF0Q21kWm1lbmEoaW50IGNpZCk7ZXh0ZXJuIGludCB6VWZpU21zX0RlY29kZVNtc0RhdGEoCitnX3pVZmlTbXNfRGVsTXNnO1RfelVmaVNtc19EZWxJbmRleEluZm8gZ19kZWxldGVJbmRleD17KDB4MWEzKzkwMjYtMHgyNGU1KX07CitUX3pVZmlTbXNfTW9kaWZ5U21zIGdfelVmaVNtc19tb2RpZnlNc2c9eygweDExMzMrMTE1MS0weDE1YjIpfTsKK1RfelVmaVNtc19Nb2RpZnlJbmRleEluZm8gZ19tb2RpZnlJbmRleD17KDB4M2Q4KzQzMjMtMHgxNGJiKX07aW50IAorZ196VWZpU21zX1VuaXRMZW49KDB4NjZmKzEwODEtMHhhYTgpO2ludCBnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW09CisoMHgxODMxKzI1NzItMHgyMjNkKTtpbnQgZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vPSgweGFjOCs1NDA4LTB4MWZlOCk7VUlOVDggCitnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjPVRSVUU7aW50IGdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQ9KDB4OWIyKzE3MzQtMHgxMDc4KQorO2ludCBnX3pVZmlTbXNfTXNnUmVmZXI9KDB4ZGY5Kzg0LTB4ZTRkKTtpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0KKygweDMyMCs1NjY2LTB4MTk0Mik7Y2hhciBnX1ptZW5hX3ZhbHVlWygweDY3YSszMTUwLTB4MTJjNildPXsoMHg2ODArNzU0Mi0weDIzZjYpCit9O2ludCBnX2Rpc3BsYXltb2RlPSgweDRjZis4NDk0LTB4MjVmZCk7ZXh0ZXJuIFNNU19MT0NBVElPTiAKK2dfelVmaVNtc19DdXJMb2NhdGlvbjtleHRlcm4gVF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX0hhbmRsZVJlcG9ydCh1bnNpZ25lZCAKK2NoYXIqcHRQZHVEYXRhKTtleHRlcm4gdm9pZCB6VWZpU21zX0dldFJlcG9ydFN0YXR1cyhjaGFyKnBkdV90bXAsaW50KnN0YXQpOworZXh0ZXJuIFZPSUQgelVmaVNtc19SZXNlbmRBdENtZFptZW5hKGludCBjaWQpO2V4dGVybiBpbnQgelVmaVNtc19EZWNvZGVTbXNEYXRhKAogVF96VWZpU21zX0RiU3RvcmVEYXRhKnBEYl9EYXRhLGludCBtc2dfaW5kZXgselVmaVNtc19TdG9yZVR5cGUgaVN0b3JlUG9zLAogVF9TbXNTdGF0dXMgYlNtc19TdGF0dXMsd21zX21lc3NhZ2VfZm9ybWF0X2VudW1fdjAxIGZvcm1hdCxsb25nIGlQZHVfTGVuLAogdW5zaWduZWQgY2hhcipwUGR1X1JlY2VpdmVkKTt0eXBlZGVmIHN0cnVjdHtsb25nIG10eXBlO2NoYXIgbXRleHRbCi0oMHgyMGRjKzQ5NS0weDIyYmYpXTt9Rk9UQV9NU0dfQlVGOwotI2RlZmluZSBXRUJVSV9OT1RJRllfUFVTSF9NU0dfICAoMHhjNzIrNDgzNS0weDFmNTIpDQorKDB4ZmErOTQ2MC0weDI1ZTIpXTt9Rk9UQV9NU0dfQlVGOworI2RlZmluZSBXRUJVSV9OT1RJRllfUFVTSF9NU0dfICAoMHg1MTArNzI1MS0weDIxNjApDQogdHlwZWRlZiBzdHJ1Y3R7dW5zaWduZWQgaW50IGlzcmVhZF9yZWNvcmQ7dW5zaWduZWQgaW50IGluYm94X2Z1bGw7fQogVF96VWZpTW1pX1Ntc1JlY29yZDt2b2lkIHpVZmlNbWlfU2VuZFNtc1N0YXR1cyh2b2lkKXtpbnQgaVNtc051bT0KLSgweGE4OSszMTUyLTB4MTZkOSk7VF96VWZpTW1pX1Ntc1JlY29yZCB0UmVjb3JkPXsoMHgzZGIrODIyMC0weDIzZjcpfTtDSEFSIAotc21zTnVtWygweGZiZiszNDUyLTB4MWQwOSldPXsoMHg2ZWIrMzUzMi0weDE0YjcpfTtzY19jZmdfZ2V0KE5WX1NNU19JTl9OVU0sCisoMHgyZDArNDU4NC0weDE0YjgpO1RfelVmaU1taV9TbXNSZWNvcmQgdFJlY29yZD17KDB4NjhkKzMzNDMtMHgxMzljKX07Q0hBUiAKK3Ntc051bVsoMHg1ZTUrMzE1Mi0weDEyMDMpXT17KDB4MTAyOSszMzQ3LTB4MWQzYyl9O3NjX2NmZ19nZXQoTlZfU01TX0lOX05VTSwKIHNtc051bSxzaXplb2Yoc21zTnVtKSk7aVNtc051bT1hdG9pKHNtc051bSk7dFJlY29yZC5pc3JlYWRfcmVjb3JkPQogelVmaVNtc19Jc1VucmVhZFNtcyhaVEVfV01TX01FTU9SWV9NQVgpO2lmKGlTbXNOdW0+PVpTTVNfTlVNX01BWF9DUEUpe3RSZWNvcmQuCi1pbmJveF9mdWxsPSgweDQ1Mys4ODE5LTB4MjZjNSk7fWVsc2V7dFJlY29yZC5pbmJveF9mdWxsPSgweDFjMTMrMTM4NC0weDIxN2IpO319CitpbmJveF9mdWxsPSgweDE0MWIrMzMzNi0weDIxMjIpO31lbHNle3RSZWNvcmQuaW5ib3hfZnVsbD0oMHgxZTkrMTk1LTB4MmFjKTt9fQogVk9JRCB6VWZpU21zX0luaXQoVk9JRCl7elVmaVNtc19DZmdJbml0KCk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1TTVNfU1RBVEVfSU5JVElORyk7fVZPSUQgelN2cl9acGJpY19TbXNfSW5pdChWT0lEKXtpbnQgYXRSZXM9Ci0oMHgxNWNiKzE0MTItMHgxYjRmKTtUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsoMHhiZDUrNDA1MC0weDFiYTcpfTtDSEFSIAotb3V0RGF0ZVsoMHgxMTgrNTUwOS0weDE2NmIpXT17KDB4MTBkMSsxMTMyLTB4MTUzZCl9O3pVZmlTbXNfSW5pdCgpOwotelVmaVNtc19Jbml0Q21kU3RhdHVzKCZ0U3RhdHVzLFdNU19TTVNfQ01EX0lOSVQpO3pTbXNfU2VuZFNtc0luaXRSZXEoKTthdF9wcmludCgKLUxPR19ERUJVRywiY29yZW0gelN2cl9acGJpY19TbXNfSW5pdCBoYXMgc2VuZCBpbml0IHJlcVxuIik7elNtc19TZW5kWm1lbmFSZXEoCi0oMHhjOGQrNjYwMC0weDI2NTUpKTthdF9wcmludChMT0dfREVCVUcsCitTTVNfU1RBVEVfSU5JVElORyk7fVZPSUQgelN2cl9acGJpY19TbXNfSW5pdChWT0lEKXtpbnQgYXRSZXM9KDB4OGY1KzM2NzctMHgxNzUyKQorO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDE0NiszNTI2LTB4ZjBjKX07Q0hBUiBvdXREYXRlWworKDB4NmJkKzIzMjAtMHhmOWIpXT17KDB4ODk2KzIxODktMHgxMTIzKX07elVmaVNtc19Jbml0KCk7elVmaVNtc19Jbml0Q21kU3RhdHVzKCYKK3RTdGF0dXMsV01TX1NNU19DTURfSU5JVCk7elNtc19TZW5kU21zSW5pdFJlcSgpO2F0X3ByaW50KExPR19ERUJVRywKKyJjb3JlbSB6U3ZyX1pwYmljX1Ntc19Jbml0IGhhcyBzZW5kIGluaXQgcmVxXG4iKTt6U21zX1NlbmRabWVuYVJlcSgKKygweDE4NDQrMjgxMi0weDIzNDApKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg2M1x4NmZceDcyXHg2NVx4NmRceDIwXHg3YVx4NTNceDc2XHg3Mlx4NWZceDVhXHg3MFx4NjJceDY5XHg2M1x4NWZceDUzXHg2ZFx4NzNceDVmXHg0OVx4NmVceDY5XHg3NFx4MjBceDY4XHg2MVx4NzNceDIwXHg3M1x4NjVceDZlXHg2NFx4MjBceDdhXHg2ZFx4NjVceDZlXHg2MVx4MjBceDcyXHg2NVx4NzEiICJcbiIKICk7c2NfY2ZnX2dldChOVl9PVVREQVRFX0RFTEVURSxvdXREYXRlLHNpemVvZihvdXREYXRlKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NjNceDZmXHg3Mlx4NjVceDZkXHgyMFx4N2FceDUzXHg3Nlx4NzJceDVmXHg1YVx4NzBceDYyXHg2OVx4NjNceDVmXHg1M1x4NmRceDczXHg1Zlx4NDlceDZlXHg2OVx4NzRceDIwXHg2Zlx4NzVceDc0XHg2NFx4NjFceDc0XHg2NVx4MjBceDYzXHg2OFx4NjVceDYzXHg2Ylx4MjBceDI1XHg3MyIgIlxuIgotLG91dERhdGUpO2lmKCgweDE5Nys1NDk3LTB4MTcxMCk9PXN0cmNtcChvdXREYXRlLCJceDMxIikpe2F0V2ViX091dGRhdGVTbXNDaGVjaygKKyxvdXREYXRlKTtpZigoMHgxM2IrNDc5My0weDEzZjQpPT1zdHJjbXAob3V0RGF0ZSwiXHgzMSIpKXthdFdlYl9PdXRkYXRlU21zQ2hlY2soCiBaVUZJX05VTEwpO319Vk9JRCB6VWZpU21zX0RlbGV0ZUFsbFNpbVNtcyhWT0lEKXt6VWZpU21zX0RlbGV0ZUFsbFNpbVNtc0luRGIoKTt9Ci0jaWYgKDB4MTllMisyNzIxLTB4MjQ4MykNCi1WT0lEIHpVZmlTbXNfUmVzZW5kQXRDbWRabWVuYShpbnQgY2lkKXtDSEFSIG5ldFR5cGVbKDB4ZDg1KzI1NjEtMHgxNzU0KV09ewotKDB4OWFjKzQ1Ni0weGI3NCl9O3NjX2NmZ19nZXQoTlZfTkVUV09SS19UWVBFLG5ldFR5cGUsc2l6ZW9mKG5ldFR5cGUpKTtpZighCi1nX1ptZW5hX3JzcCYmKCgweDYyNSs0OTE3LTB4MTk1YSkhPXN0cmNtcCgKLSJceDRlXHg2Zlx4MjBceDUzXHg2NVx4NzJceDc2XHg2OVx4NjNceDY1IixuZXRUeXBlKSYmKDB4MTE1ZCsyMTY3LTB4MTlkNCkhPQorI2lmICgweDM3YSsyMjYzLTB4YzUxKQ0KK1ZPSUQgelVmaVNtc19SZXNlbmRBdENtZFptZW5hKGludCBjaWQpe0NIQVIgbmV0VHlwZVsoMHhiMzErNDQzLTB4Y2JhKV09eworKDB4ZjRjKzI5NjEtMHgxYWRkKX07c2NfY2ZnX2dldChOVl9ORVRXT1JLX1RZUEUsbmV0VHlwZSxzaXplb2YobmV0VHlwZSkpO2lmKCEKK2dfWm1lbmFfcnNwJiYoKDB4MTdkYysxNzMtMHgxODg5KSE9c3RyY21wKAorIlx4NGVceDZmXHgyMFx4NTNceDY1XHg3Mlx4NzZceDY5XHg2M1x4NjUiLG5ldFR5cGUpJiYoMHgxNWY5KzQyNDUtMHgyNjhlKSE9CiBzdHJjbXAoIlx4NGNceDY5XHg2ZFx4NjlceDc0XHg2NVx4NjRceDIwXHg1M1x4NjVceDcyXHg3Nlx4NjlceDYzXHg2NSIsbmV0VHlwZSkpKQoge2F0VW5zb2xpX1JlcG9ydF9abWVuYShOVUxMLGNpZCk7fX0KICNlbmRpZg0KIHZvaWQgelVmaVNtc19BY2tfbmV3X21zZyhCT09MIG5lZWRBY2spewotI2lmICgweDcrMjc4NC0weGFlNykNCi1DSEFSIGFja1BkdVN0clsoMHg3OTkrNjQwLTB4ODg5KV09eygweDU4OSs3MzMxLTB4MjIyYyl9O1NNU19QQVJBTSByZXBvcnRQYXJhbT17Ci0oMHg1Kzk1NDYtMHgyNTRmKX07aW50IHRvdGFsX2xlbmd0aD0oMHgyYzMrMjU3Ni0weGNkMyk7VUlOVDggVFBfRkNTPQotKDB4MWY0NCsxNjQ2LTB4MjViMik7Q0hBUiBzdHJWYWx1ZVsoMHhkNTErMjM4OS0weDE2YTQpXT17KDB4MzMwKzMzNTQtMHgxMDRhKX07aWYKLShuZWVkQWNrKXtUUF9GQ1M9KDB4NTc1KzE4ODktMHhjZDYpO3NwcmludGYoc3RyVmFsdWUsIlx4MjVceDY0IiwKLSgweDE5ZTMrNTE2LTB4MWJlNikpO31lbHNle1RQX0ZDUz0oMHg2ZjUrNjkwMi0weDIxMTgpO3NwcmludGYoc3RyVmFsdWUsCi0iXHgyNVx4NjQiLCgweDQ4Kzk1MDUtMHgyNTY3KSk7fXNwcmludGYocmVwb3J0UGFyYW0uU0NBLCJceDI1XHg3MyIsY2ZnX2dldCgKKyNpZiAoMHg1ZmErNzEwNC0weDIxYmEpDQorQ0hBUiBhY2tQZHVTdHJbKDB4MjZiNSs5Ni0weDI1ODUpXT17KDB4MTk5ZCsxNTI0LTB4MWY5MSl9O1NNU19QQVJBTSByZXBvcnRQYXJhbT0KK3soMHhhOGQrOTk5LTB4ZTc0KX07aW50IHRvdGFsX2xlbmd0aD0oMHg1ZDQrMjM3Ni0weGYxYyk7VUlOVDggVFBfRkNTPQorKDB4NGUzKzQ5NTItMHgxODNiKTtDSEFSIHN0clZhbHVlWygweGYzNys0MjcxLTB4MWZlNCldPXsoMHgxMTErOTY2OS0weDI2ZDYpfTtpZigKK25lZWRBY2spe1RQX0ZDUz0oMHgyMDE4KzE3MjctMHgyNmQ3KTtzcHJpbnRmKHN0clZhbHVlLCJceDI1XHg2NCIsCisoMHgxMmUxKzQ0Ny0weDE0OWYpKTt9ZWxzZXtUUF9GQ1M9KDB4MTAxOCszNTU5LTB4MWQyYyk7c3ByaW50ZihzdHJWYWx1ZSwKKyJceDI1XHg2NCIsKDB4YzI5KzQ5Mi0weGUxMykpO31zcHJpbnRmKHJlcG9ydFBhcmFtLlNDQSwiXHgyNVx4NzMiLGNmZ19nZXQoCiAiXHg3M1x4NmRceDczXHg1Zlx4NjNceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NWZceDZlXHg3NVx4NmQiKSk7dG90YWxfbGVuZ3RoPQogelVmaVNtc19FbmNvZGVQZHVfRGVsaXZlclJlcG9ydCgmcmVwb3J0UGFyYW0sYWNrUGR1U3RyLFRQX0ZDUyk7bWVtc2V0KCYKLWdfelVmaVNtc19hY2tQZHUsKDB4MTc3NSsyOTcxLTB4MjMxMCksc2l6ZW9mKGdfelVmaVNtc19hY2tQZHUpKTtnX3pVZmlTbXNfYWNrUGR1Ci0ubGVuZ3RoPVN0cmluZzJCeXRlcyhhY2tQZHVTdHIsZ196VWZpU21zX2Fja1BkdS5wZHUsc3RybGVuKGFja1BkdVN0cikpO21lbXNldCgKLWdfelVmaVNtc19hY2tQZHUucGR1LCgweDFlNmQrMzM5LTB4MWZjMCksc2l6ZW9mKGdfelVmaVNtc19hY2tQZHUucGR1KSk7bWVtY3B5KCYKK2dfelVmaVNtc19hY2tQZHUsKDB4ZjFiKzIyMC0weGZmNyksc2l6ZW9mKGdfelVmaVNtc19hY2tQZHUpKTtnX3pVZmlTbXNfYWNrUGR1LgorbGVuZ3RoPVN0cmluZzJCeXRlcyhhY2tQZHVTdHIsZ196VWZpU21zX2Fja1BkdS5wZHUsc3RybGVuKGFja1BkdVN0cikpO21lbXNldCgKK2dfelVmaVNtc19hY2tQZHUucGR1LCgweDEyZTUrMzgwLTB4MTQ2MSksc2l6ZW9mKGdfelVmaVNtc19hY2tQZHUucGR1KSk7bWVtY3B5KCYKIGdfelVmaVNtc19hY2tQZHUucGR1LCZhY2tQZHVTdHIsc2l6ZW9mKGFja1BkdVN0cikpO2F0QmFzZV9TZW5kTXNnVG9TZWxmKAogWkFUX0NOTUFfQ01ELHN0clZhbHVlLHNpemVvZihzdHJWYWx1ZSkpOwogI2VuZGlmDQotI2lmICgweDEwYzQrMzk5OS0weDIwNjMpCi1DSEFSIHN0clZhbHVlWygweDEzMjMrMTEwLTB4MTM4ZildPXsoMHg1Kzc1MzktMHgxZDc4KX07aWYobmVlZEFjayl7c25wcmludGYoCi1zdHJWYWx1ZSxzaXplb2Yoc3RyVmFsdWUpLCJceDI1XHg2NCIsKDB4MTJmZCsxOTMzLTB4MWE4OSkpO31lbHNle3NucHJpbnRmKAotc3RyVmFsdWUsc2l6ZW9mKHN0clZhbHVlKSwiXHgyNVx4NjQiLCgweDFjMisyMDg0LTB4OWU0KSk7fXpTdnJfSW5uZXJTZW5kTXNnKAorI2lmICgweDFlZjQrMjAwMi0weDI2YzYpCitDSEFSIHN0clZhbHVlWygweDViNCs1OTAwLTB4MWNiZSldPXsoMHg5NTcrNzU5MS0weDI2ZmUpfTtpZihuZWVkQWNrKXtzbnByaW50ZigKK3N0clZhbHVlLHNpemVvZihzdHJWYWx1ZSksIlx4MjVceDY0IiwoMHg2NGIrMjA3OS0weGU2OSkpO31lbHNle3NucHJpbnRmKHN0clZhbHVlCissc2l6ZW9mKHN0clZhbHVlKSwiXHgyNVx4NjQiLCgweGU1YisyMTk2LTB4MTZlZCkpO316U3ZyX0lubmVyU2VuZE1zZygKIFpVRklfTU9EVUxFX0lEX0FUX0xPQ0FMLFpVRklfTU9EVUxFX0lEX0FUX1VOU09MSSxNU0dfQ01EX0FUX0NOTUEsc3RybGVuKHN0clZhbHVlCiApLHN0clZhbHVlKTsKICNlbmRpZg0KLWlmKG5lZWRBY2spe3pTbXNfU2VuZENubWFSZXEoKDB4YmZiKzI5NDQtMHgxNzdhKSk7fWVsc2V7elNtc19TZW5kQ25tYVJlcSgKLSgweDEzMTgrNDc2OS0weDI1YjcpKTt9fVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19TZW5kUmF3U21zKFRfelVmaVNtc19TZW5kUmVxCi0qcHRTZW5kTXNnKXtpZihOVUxMPT1wdFNlbmRNc2d8fCgweDE1MWIrMjk5MC0weDIwYzkpPT1wdFNlbmRNc2ctPnJlY2VpdmVyX2NvdW50KQote3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9YXRfcHJpbnQoTE9HX0RFQlVHLAoraWYobmVlZEFjayl7elNtc19TZW5kQ25tYVJlcSgoMHhiMTMrMTUyMC0weDExMDIpKTt9ZWxzZXt6U21zX1NlbmRDbm1hUmVxKAorKDB4YjFhKzcwNzktMHgyNmJmKSk7fX1UX3pVZmlTbXNfQ21kU3RhdHVzIHpVZmlTbXNfU2VuZFJhd1NtcyhUX3pVZmlTbXNfU2VuZFJlcSoKK3B0U2VuZE1zZyl7aWYoTlVMTD09cHRTZW5kTXNnfHwoMHgxMTQyKzMyMjEtMHgxZGQ3KT09cHRTZW5kTXNnLT5yZWNlaXZlcl9jb3VudCl7CityZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWF0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDUyXHg2MVx4NzdceDUzXHg2ZFx4NzNceDIwXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NzJceDVmXHg2M1x4NmZceDc1XHg2ZVx4NzRceDNhXHgyNVx4NjRceDJmXHg2NFx4NjVceDczXHg3NFx4NWZceDZlXHg3NVx4NmRceDNhXHgyNVx4NzNceDJmXHg2ZFx4NzNceDY3XHg1Zlx4NmNceDY1XHg2ZVx4M2FceDI1XHg2NFx4MmZceDY5XHg2NFx4M2FceDI1XHg2NFx4MmUiICJcbiIKLSxwdFNlbmRNc2ctPnJlY2VpdmVyX2NvdW50LHB0U2VuZE1zZy0+ZGVzdF9udW1bKDB4MWFlMSsyODY2LTB4MjYxMyldLHB0U2VuZE1zZy0+CisscHRTZW5kTXNnLT5yZWNlaXZlcl9jb3VudCxwdFNlbmRNc2ctPmRlc3RfbnVtWygweGQyZCsxMjYyLTB4MTIxYildLHB0U2VuZE1zZy0+CiBtc2dfbGVuLHB0U2VuZE1zZy0+aWQpOwotI2lmICgweDE2YTYrMTA0LTB4MTcwZCkKKyNpZiAoMHg5NDYrMzY0My0weDE3ODApCiBhdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg1Mlx4NjFceDc3XHg1M1x4NmRceDczXHgyMFx4NjRceDYzXHg3M1x4M2FceDI1XHg2NCIgIlxuIgogLHB0U2VuZE1zZy0+ZGNzKTsKICNlbmRpZg0KLXNjX2NmZ19zZXQoTlZfU01TX1NFTkRfUkVTVUxULCIiKTtnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50PSgweDE2MDcrMTgzNS0weDFkMzIpCi07aWYocHRTZW5kTXNnLT5pc0RlbGV0ZT09VFJVRXx8LSgweDU4ZCsyMjc3LTB4ZTcxKSE9cHRTZW5kTXNnLT5pZCl7KHZvaWQpCitzY19jZmdfc2V0KE5WX1NNU19TRU5EX1JFU1VMVCwiIik7Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudD0oMHg0M2ErNTM5Mi0weDE5NGEpOworaWYocHRTZW5kTXNnLT5pc0RlbGV0ZT09VFJVRXx8LSgweDQzYys0NjY2LTB4MTY3NSkhPXB0U2VuZE1zZy0+aWQpeyh2b2lkKQogelVmaVNtc19EZWxldGVEcmFmdFNtcyhwdFNlbmRNc2ctPmlkKTt9elVmaVNtc19TZXRHbG9iYWxEY3NMYW5nKHB0U2VuZE1zZy0+ZGNzKTsKLW1lbXNldCgmZ196VWZpU21zX0dyb3VwU21zLCgweGQ4Nis4MjEtMHgxMGJiKSxzaXplb2YoZ196VWZpU21zX0dyb3VwU21zKSk7aWYoCittZW1zZXQoJmdfelVmaVNtc19Hcm91cFNtcywoMHg2NDgrNzA0LTB4OTA4KSxzaXplb2YoZ196VWZpU21zX0dyb3VwU21zKSk7aWYoCiBaVUZJX0ZBSUw9PXpVZmlTbXNfRmlsbEdyb3VwU21zKHB0U2VuZE1zZywmZ196VWZpU21zX0dyb3VwU21zKSl7cmV0dXJuIAotV01TX0NNRF9GQUlMRUQ7fW1lbXNldCgmZ196VWZpU21zX0NvbmNhdFNtcywoMHg4MzQrNDA1MC0weDE4MDYpLHNpemVvZigKK1dNU19DTURfRkFJTEVEO31tZW1zZXQoJmdfelVmaVNtc19Db25jYXRTbXMsKDB4Nzk5KzY3MzEtMHgyMWU0KSxzaXplb2YoCiBnX3pVZmlTbXNfQ29uY2F0U21zKSk7Z196VWZpU21zX1VuaXRMZW49elVmaVNtc19GaWxsQ29uY2F0U21zKHB0U2VuZE1zZywmCiBnX3pVZmlTbXNfQ29uY2F0U21zKTtnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjPVRSVUU7Z196VWZpU21zX0N1ckNvbmNhdFNlZ05vPQotKDB4YzFhKzczOC0weGVmYyk7bWVtc2V0KGdfelVmaVNtc19EYlN0b3JlRGF0YSwoMHgxOTRiKzEwNjgtMHgxZDc3KSxzaXplb2YoCi1nX3pVZmlTbXNfRGJTdG9yZURhdGEpKTtpZihwdFNlbmRNc2ctPm1lbV9zdG9yZT09KDB4OWE5KzYxMjYtMHgyMThkKSl7Ci1nX2Rpc3BsYXltb2RlPSgweDEyYzArMzc2Ny0weDIxNzYpO2F0X3ByaW50KExPR19ERUJVRywKKygweGQ0NSszMjQtMHhlODkpO21lbXNldChnX3pVZmlTbXNfRGJTdG9yZURhdGEsKDB4MWJiZCsyMjA0LTB4MjQ1OSksc2l6ZW9mKAorZ196VWZpU21zX0RiU3RvcmVEYXRhKSk7aWYocHRTZW5kTXNnLT5tZW1fc3RvcmU9PSgweDY4NSs0NDYwLTB4MTdlNykpeworZ19kaXNwbGF5bW9kZT0oMHg4YTUrNjk3NS0weDIzZTMpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NWJceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1ZFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDZkXHg3M1x4M2FceDIwXHg2ZFx4NzNceDY3XHg1Zlx4NjRceDY5XHg3M1x4NzBceDZjXHg2MVx4NzlceDZkXHg2Zlx4NjRceDY1XHgyMFx4M2RceDIwXHgzMSIgIlxuIgotKTt9ZWxzZXtnX2Rpc3BsYXltb2RlPSgweDY4KzE1OTktMHg2YTcpO2F0X3ByaW50KExPR19ERUJVRywKKyk7fWVsc2V7Z19kaXNwbGF5bW9kZT0oMHgxYjU2KzE5OTctMHgyMzIzKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDUzXHg2ZFx4NzNceDNhXHgyMFx4NmRceDczXHg2N1x4NWZceDY0XHg2OVx4NzNceDcwXHg2Y1x4NjFceDc5XHg2ZFx4NmZceDY0XHg2NVx4MjBceDNkXHgyMFx4MzAiICJcbiIKICk7fXJldHVybiB6VWZpU21zX1NlbmRTbXMoKTt9VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX1dyaXRlUmF3U21zKAogVF96VWZpU21zX1NhdmVSZXEqcFNhdmVCdWZmKXtUX3pVZmlTbXNfQ29uY2F0SW5mbyB0Q29uY2F0U21zO1RfelVmaVNtc19Hcm91cEluZm8KLSB0R3JvdXBTbXM7aW50IGlTbXNMZW49KDB4MjhhKzgxMTUtMHgyMjNkKTtUX3pVZmlTbXNfQ21kU3RhdHVzIHJlc3VsdD0KKyB0R3JvdXBTbXM7aW50IGlTbXNMZW49KDB4MTE3Nys0NDAzLTB4MjJhYSk7VF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9CiBXTVNfQ01EX1NVQ0NFU1M7aWYoTlVMTD09cFNhdmVCdWZmKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWlmKAogZ196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX05WXSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1N1x4NzJceDY5XHg3NFx4NjVceDUyXHg2MVx4NzdceDUzXHg2ZFx4NzNceDIwXHg2ZVx4NzZceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjlceDczXHgyMFx4NjZceDc1XHg2Y1x4NmNceDJjXHg3Mlx4NjVceDc0XHg3NVx4NzJceDZlIiAiXG4iCiApO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9aWYocFNhdmVCdWZmLT5pc0RlbGV0ZT09VFJVRSl7KHZvaWQpCiB6VWZpU21zX0RlbGV0ZURyYWZ0U21zKHBTYXZlQnVmZi0+aWQpO316VWZpU21zX1NldEdsb2JhbERjc0xhbmcocFNhdmVCdWZmLT5kY3MpOwotbWVtc2V0KCZ0Q29uY2F0U21zLCgweDJjNCs0NTI3LTB4MTQ3Myksc2l6ZW9mKFRfelVmaVNtc19Db25jYXRJbmZvKSk7bWVtc2V0KCYKLXRHcm91cFNtcywoMHgxZTAyKzEwNTAtMHgyMjFjKSxzaXplb2YoVF96VWZpU21zX0dyb3VwSW5mbykpOyh2b2lkKQorbWVtc2V0KCZ0Q29uY2F0U21zLCgweDg2OSs4Ni0weDhiZiksc2l6ZW9mKFRfelVmaVNtc19Db25jYXRJbmZvKSk7bWVtc2V0KCYKK3RHcm91cFNtcywoMHgxNTErMjg0MS0weGM2YSksc2l6ZW9mKFRfelVmaVNtc19Hcm91cEluZm8pKTsodm9pZCkKIHpVZmlTbXNfRmlsbEdyb3VwU21zKHBTYXZlQnVmZiwmdEdyb3VwU21zKTtpU21zTGVuPXpVZmlTbXNfRmlsbENvbmNhdFNtcygKIHBTYXZlQnVmZiwmdENvbmNhdFNtcyk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1N1x4NzJceDY5XHg3NFx4NjVceDUyXHg2MVx4NzdceDUzXHg2ZFx4NzNceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NzJceDNkXHgyNVx4NjRceDJjXHg2OVx4NTNceDZkXHg3M1x4NGNceDY1XHg2ZVx4M2RceDI1XHg2NCIgIlxuIgogLHRHcm91cFNtcy50b3RhbF9yZWNlaXZlcixpU21zTGVuKTtmb3IodEdyb3VwU21zLmN1cnJlbnRfcmVjZWl2ZXI9Ci0oMHgxNTEwKzI4MDEtMHgyMDAxKTt0R3JvdXBTbXMuY3VycmVudF9yZWNlaXZlcjx0R3JvdXBTbXMudG90YWxfcmVjZWl2ZXI7Ci10R3JvdXBTbXMuY3VycmVudF9yZWNlaXZlcisrKXt0Q29uY2F0U21zLmN1cnJlbnRfc2VuZGluZz0oMHgxM2Y1KzI1NzctMHgxZTA2KTsKKygweDIyZTIrMjk0LTB4MjQwOCk7dEdyb3VwU21zLmN1cnJlbnRfcmVjZWl2ZXI8dEdyb3VwU21zLnRvdGFsX3JlY2VpdmVyOwordEdyb3VwU21zLmN1cnJlbnRfcmVjZWl2ZXIrKyl7dENvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc9KDB4NWY5KzIwOTEtMHhlMjQpOwogcmVzdWx0PXpVZmlTbXNfU2F2ZVNtc1RvRGIocFNhdmVCdWZmLCZ0Q29uY2F0U21zLCZ0R3JvdXBTbXMsaVNtc0xlbik7YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU3XHg3Mlx4NjlceDc0XHg2NVx4NTJceDYxXHg3N1x4NTNceDZkXHg3M1x4MjBceDYzXHg3NVx4NzJceDcyXHg2NVx4NmVceDc0XHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDcyXHgzZFx4MjVceDY0XHgyY1x4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2RceDI1XHg2NCIgIlxuIgpAQCAtMTI3LDE2ICsxMjcsMTYgQEAKIG1lbW9yeUZ1bGxiZWZvcmVEZWxldGU9RkFMU0U7Qk9PTCB1bnJlYWRCZWZvcmVEZWxldGU9RkFMU0U7aWYoTlVMTD09cHREZWxCdWZmKXsKIHJldHVybiBXTVNfQ01EX0ZBSUxFRDt9YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4MjFceDIxXHgyMVx4MjFceDIxXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDIxXHgyMVx4NjNceDZmXHg3NVx4NmVceDc0XHgzYVx4MjVceDY0XHgyZlx4NjlceDY0XHg1Ylx4MjVceDY0XHg1ZFx4MmUiICJcbiIKLSxwdERlbEJ1ZmYtPmFsbF9vcl9jb3VudCxwdERlbEJ1ZmYtPmlkWygweGRhZis0OTY5LTB4MjExOCldKTsodm9pZCkKKyxwdERlbEJ1ZmYtPmFsbF9vcl9jb3VudCxwdERlbEJ1ZmYtPmlkWygweDE5NjgrMjEzOC0weDIxYzIpXSk7KHZvaWQpCiB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1TTVNfU1RBVEVfREVMSU5HKTttZW1zZXQoJmdfelVmaVNtc19EZWxNc2csKDB4MjA1YSsxNDc4LTB4MjYyMCksc2l6ZW9mKAorU01TX1NUQVRFX0RFTElORyk7bWVtc2V0KCZnX3pVZmlTbXNfRGVsTXNnLCgweDgyZis1NDY4LTB4MWQ4Yiksc2l6ZW9mKAogVF96VWZpU21zX0RlbFNtcykpO2lmKFpVRklfRkFJTD09elVmaVNtc19TZXREZWxldGVJbmZvKHB0RGVsQnVmZikpe2F0X3ByaW50KAogTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4MjFceDIxXHgyMVx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDc0XHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0OVx4NmVceDY2XHg2Zlx4MjBceDY2XHg2MVx4NjlceDZjXHgyZSIgIlxuIgogKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfREVMRUQpO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHgyMVx4MjFceDIxXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NzRceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDQ5XHg2ZVx4NjZceDZmXHgyMFx4NTJceDY1XHg2MVx4NjRceDIwXHg3NFx4NmZceDIwXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHgzYVx4NmVceDc2XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0XHgzYVx4MjVceDY0XHgyZlx4NzNceDY5XHg2ZFx4NWZceDYzXHg2Zlx4NzVceDZlXHg3NFx4M2FceDI1XHg2NFx4MmUiICJcbiIKLSxnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50LGdfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50KTtpZigoMHgxYTQrNjI2MC0weDFhMTgpPAorLGdfelVmaVNtc19EZWxNc2cubnZfY291bnQsZ196VWZpU21zX0RlbE1zZy5zaW1fY291bnQpO2lmKCgweDIwYTkrMjYwLTB4MjFhZCk8CiBnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50KXtpZihnX3pVZmlTbXNfTWVtRnVsbEZsYWdbV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdKXsKIG1lbW9yeUZ1bGxiZWZvcmVEZWxldGU9VFJVRTt9dW5yZWFkQmVmb3JlRGVsZXRlPXpVZmlTbXNfSXNVbnJlYWRTbXMoCiBaVEVfV01TX01FTU9SWV9OVik7cmVzdWx0PShUX3pVZmlTbXNfQ21kU3RhdHVzKXpVZmlTbXNfRGVsZXRlTnZTbXMoKTsodm9pZCkKQEAgLTE0NywxMTQgKzE0NywxMTMgQEAKIG1lbW9yeUZ1bGxiZWZvcmVEZWxldGUmJiFnX3pVZmlTbXNfTWVtRnVsbEZsYWdbV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4NGVceDc2XHg1M1x4NmRceDczXHgzYVx4MjBceDczXHg2NVx4NmVceDY0XHgyMFx4NDFceDU0XHgyYlx4NWFceDRkXHg0NVx4NGVceDQxXHgzZFx4MzAiICJcbiIKLSk7elNtc19TZW5kWm1lbmFSZXEoKDB4YTRiKzIxODMtMHgxMmQyKSk7fWlmKG1lbW9yeUZ1bGxiZWZvcmVEZWxldGUmJiEKKyk7elNtc19TZW5kWm1lbmFSZXEoKDB4ODA3KzM0NjgtMHgxNTkzKSk7fWlmKG1lbW9yeUZ1bGxiZWZvcmVEZWxldGUmJiEKIGdfelVmaVNtc19NZW1GdWxsRmxhZ1tXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV18fHVucmVhZEJlZm9yZURlbGV0ZSYmIQogelVmaVNtc19Jc1VucmVhZFNtcyhaVEVfV01TX01FTU9SWV9OVikpe3pVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8oCi1NU0dfU01TX0RFRkFVTFQpO319aWYoKDB4ZWY3KzI3NzQtMHgxOWNkKTxnX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudCl7cmVzdWx0PQorTVNHX1NNU19ERUZBVUxUKTt9fWlmKCgweDcwYis3MzYtMHg5ZWIpPGdfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50KXtyZXN1bHQ9CiB6VWZpU21zX0RlbGV0ZVNpbVNtcygpOyh2b2lkKXpVZmlTbXNfQ2hlY2tNZW1vcnlGdWxsKFpURV9XTVNfTUVNT1JZX1NJTSk7fQogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg1M1x4NmRceDczXHgyMFx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2RceDI1XHg2NCIgIlxuIgogLHJlc3VsdCk7cmV0dXJuIHJlc3VsdDt9VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX01vZGlmeVNtc1RhZygKLVRfelVmaVNtc19Nb2RpZnlGbGFnKnB0TW9kaWZ5QnVmZil7dW5zaWduZWQgbG9uZyBpPSgweDFmZDgrNTE3LTB4MjFkZCk7Ci1UX3pVZmlTbXNfQ21kU3RhdHVzIHJlc3VsdD1XTVNfQ01EX1NVQ0NFU1M7Y2hhciBhY1N0b3JlUG9zWygweDk3NCs1NDM4LTB4MWU4MCldPQoteygweGU4MSs1MDExLTB4MjIxNCl9O2lmKE5VTEw9PXB0TW9kaWZ5QnVmZil7YXRfcHJpbnQoTE9HX0VSUiwKK1RfelVmaVNtc19Nb2RpZnlGbGFnKnB0TW9kaWZ5QnVmZil7dW5zaWduZWQgbG9uZyBpPSgweGY2YSs0MDA0LTB4MWYwZSk7CitUX3pVZmlTbXNfQ21kU3RhdHVzIHJlc3VsdD1XTVNfQ01EX1NVQ0NFU1M7Y2hhciBhY1N0b3JlUG9zWygweDFkMDIrMjE3LTB4MWRhOSldPQoreygweDk0OSsyMjQ2LTB4MTIwZil9O2lmKE5VTEw9PXB0TW9kaWZ5QnVmZil7YXRfcHJpbnQoTE9HX0VSUiwKICJceDY5XHg2ZVx4NzBceDc1XHg3NFx4NzNceDIwXHg2OVx4NzNceDIwXHg2ZVx4NzVceDZjXHg2Y1x4MmUiKTtyZXR1cm4gCi1XTVNfQ01EX0ZBSUxFRDt9Zm9yKGk9KDB4YzdmKzQwMTQtMHgxYzJkKTtpPHB0TW9kaWZ5QnVmZi0+dG90YWxfaWQ7aSsrKXtpZigKLXB0TW9kaWZ5QnVmZi0+aWRbaV08KDB4MTRiNSszNTgyLTB4MjJiMil8fFpVRklfRkFJTD09elVmaVNtc19VcGRhdGVTbXNUYWdJbkRiKAorV01TX0NNRF9GQUlMRUQ7fWZvcihpPSgweDVkYysxOTc5LTB4ZDk3KTtpPHB0TW9kaWZ5QnVmZi0+dG90YWxfaWQ7aSsrKXtpZigKK3B0TW9kaWZ5QnVmZi0+aWRbaV08KDB4ZjYrOTM5OS0weDI1YWMpfHxaVUZJX0ZBSUw9PXpVZmlTbXNfVXBkYXRlU21zVGFnSW5EYigKIHB0TW9kaWZ5QnVmZi0+aWRbaV0scHRNb2RpZnlCdWZmLT50YWdzKSl7cmVzdWx0PVdNU19DTURfRkFJTEVEO31lbHNle3Jlc3VsdD0KIFdNU19DTURfU1VDQ0VTUzt9fWlmKFpVRklfRkFJTD09elVmaVNtc19HZXRTdG9yZVBvc0J5SWQoCiAiXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1IixhY1N0b3JlUG9zLHNpemVvZihhY1N0b3JlUG9zKSwKLXB0TW9kaWZ5QnVmZi0+aWRbKDB4MjNkKzc3NDktMHgyMDgyKV0pKXtyZXR1cm4gWlVGSV9GQUlMO31pZigoMHg1YjYrMjQ1Ny0weGY0ZikKK3B0TW9kaWZ5QnVmZi0+aWRbKDB4M2UwKzYyMTItMHgxYzI0KV0pKXtyZXR1cm4gWlVGSV9GQUlMO31pZigoMHhjOWErNjIzNS0weDI0ZjUpCiA9PXN0cmNtcChhY1N0b3JlUG9zLFpURV9XTVNfREJfTlZfVEFCTEUpKXt6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKAotTVNHX1NNU19SRUFESU5HKTt9aWYoKDB4MWEwYysyNzQzLTB4MjRjMyk9PXN0cmNtcChhY1N0b3JlUG9zLAotWlRFX1dNU19EQl9TSU1fVEFCTEUpJiZwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkPigweDNmNyszNTA5LTB4MTFhYykpeworTVNHX1NNU19SRUFESU5HKTt9aWYoKDB4MTc0MCszNTE4LTB4MjRmZSk9PXN0cmNtcChhY1N0b3JlUG9zLAorWlRFX1dNU19EQl9TSU1fVEFCTEUpJiZwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkPigweDgzOSs3MTY1LTB4MjQzNikpewogelVmaVNtc19Nb2RpZnlNb2RlbVNtcyhwdE1vZGlmeUJ1ZmYpO31yZXR1cm4gcmVzdWx0O31UX3pVZmlTbXNfQ21kU3RhdHVzIAotelVmaVNtc19TZXRTbXNQYXJhKFRfelVmaVNtc19QYXJhSW5mbypwdFBhcmFCdWZmKXtpbnQgYXRSZXM9KDB4YjUrMjU3NC0weGFjMyk7Ci1DSEFSIHNjYVtaVEVfV01TX0FERFJFU1NfRElHSVRfTUFYX1YwMSsoMHgyOTMrNjIyMC0weDFhZGUpXT17Ci0oMHgxNDFkKzEyMTktMHgxOGUwKX07Q0hBUiBzdG9yZVsoMHg0NmErMjA0NS0weGM1MyldPXsoMHgxMGU1KzY4OC0weDEzOTUpfTtDSEFSIAotZGVmYXVsdFN0b3JlWygweGE5Mys0MTU2LTB4MWE5ZCldPXsoMHg1NzErNjQyNi0weDFlOGIpfTtpZihwdFBhcmFCdWZmPT1aVUZJX05VTEwKLSl7cmV0dXJuIFdNU19DTURfRkFJTEVEO31pZihzdHJsZW4ocHRQYXJhQnVmZi0+c2NhKSE9KDB4MWRhNiszNzAtMHgxZjE4KSl7Ci1zdHJuY3B5KHNjYSxwdFBhcmFCdWZmLT5zY2Esc2l6ZW9mKHNjYSktKDB4OTlhKzUwODQtMHgxZDc1KSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorelVmaVNtc19TZXRTbXNQYXJhKFRfelVmaVNtc19QYXJhSW5mbypwdFBhcmFCdWZmKXtpbnQgYXRSZXM9KDB4MWY3OSsxNDEyLTB4MjRmZCkKKztDSEFSIHNjYVtaVEVfV01TX0FERFJFU1NfRElHSVRfTUFYX1YwMSsoMHhhYzkrMjU3NC0weDE0ZDYpXT17CisoMHhkNWYrNDMxOS0weDFlM2UpfTtDSEFSIHN0b3JlWygweDlkMis0ODgyLTB4MWNkMCldPXsoMHgxNWVjKzEwOTgtMHgxYTM2KX07Q0hBUgorIGRlZmF1bHRTdG9yZVsoMHg2ZDYrMjM0NC0weGZjYyldPXsoMHg0ODkrNTU1NS0weDFhM2MpfTtpZihwdFBhcmFCdWZmPT1aVUZJX05VTEwKKyl7cmV0dXJuIFdNU19DTURfRkFJTEVEO31pZihzdHJsZW4ocHRQYXJhQnVmZi0+c2NhKSE9KDB4MTY0MSsxNzI1LTB4MWNmZSkpeworc3RybmNweShzY2EscHRQYXJhQnVmZi0+c2NhLHNpemVvZihzY2EpLSgweDFmNDYrMTE5LTB4MWZiYykpO2F0X3ByaW50KExPR19ERUJVRywKICJceDczXHg2NVx4NmVceDY0XHgyMFx4NWFceDQxXHg1NFx4NWZceDQzXHg1M1x4NDNceDQxXHg1Zlx4NTNceDQ1XHg1NFx4NWZceDQzXHg0ZFx4NDRceDIwXHg2ZFx4NjVceDczXHg3M1x4NjFceDY3XHg2NVx4MjBceDYzXHg3M1x4NjNceDYxXHgyMFx4NjlceDczXHgyMFx4MjVceDczXHgyZSIgIlxuIgogLHNjYSk7YXRSZXM9elNtc19TZXRDc2NhUmVxKHB0UGFyYUJ1ZmYtPnNjYSk7aWYoYXRSZXMhPVpTTVNfUkVTVUxUX09LKXtyZXR1cm4gCiBXTVNfQ01EX0ZBSUxFRDt9fXNjX2NmZ19nZXQoTlZfREVGQVVMVF9TVE9SRSxkZWZhdWx0U3RvcmUsc2l6ZW9mKGRlZmF1bHRTdG9yZSkpOwotaWYoKCoocHRQYXJhQnVmZi0+ZGVmYXVsdF9zdG9yZSkhPSdcMCcpJiYoKDB4YjRhKzIzNDUtMHgxNDczKSE9c3RyY21wKAoraWYoKCoocHRQYXJhQnVmZi0+ZGVmYXVsdF9zdG9yZSkhPSdcMCcpJiYoKDB4YjM5KzMzOTktMHgxODgwKSE9c3RyY21wKAogZGVmYXVsdFN0b3JlLHB0UGFyYUJ1ZmYtPmRlZmF1bHRfc3RvcmUpKSl7e3N0cm5jcHkoc3RvcmUscHRQYXJhQnVmZi0+Ci1kZWZhdWx0X3N0b3JlLHNpemVvZihzdG9yZSktKDB4MTA3YisxNjcwLTB4MTcwMCkpO31hdFJlcz16U21zX1NlbmRDbm1pUmVxKHN0b3JlKQotO2lmKGF0UmVzIT1aU01TX1JFU1VMVF9PSyl7cmV0dXJuIFdNU19DTURfRkFJTEVEO319aWYoLSgweDE5NmQrMTk3NC0weDIxMjIpPT0KK2RlZmF1bHRfc3RvcmUsc2l6ZW9mKHN0b3JlKS0oMHhiOTUrMTM3Ni0weDEwZjQpKTt9YXRSZXM9elNtc19TZW5kQ25taVJlcShzdG9yZSk7CitpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWlmKC0oMHg0OTQrMzQ4My0weDEyMmUpPT0KIHpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKHB0UGFyYUJ1ZmYpKXthdF9wcmludChMT0dfRVJSLAogIlx4NzNceDY1XHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyMFx4NzRceDZmXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiCiApO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9cmV0dXJuIFdNU19DTURfU1VDQ0VTUzt9dm9pZCB6VWZpU21zX0NtZ3JOdlNldCh2b2lkKXsKLWNoYXIgc21zX3JlY19mbGFnWygweGU4NSs0MzI1LTB4MWY2NSldPXsoMHg0M2IrMjE1Ny0weGNhOCl9O2NoYXIgcmVtaW5kX2ZsYWdbCi0oMHhlNjErMzMwMy0weDFiNDMpXTtpbnQgc21zX2NvdW50PSgweGU2MyszODE2LTB4MWQ0Yik7aW50IHJlbWluZF9jb3VudD0KLSgweDJjKzgyMTEtMHgyMDNmKTttZW1zZXQoc21zX3JlY19mbGFnLCgweDE0N2QrMjQ4Mi0weDFlMmYpLHNpemVvZihzbXNfcmVjX2ZsYWcpCi0pO3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCxzbXNfcmVjX2ZsYWcsc2l6ZW9mKHNtc19yZWNfZmxhZykpOwotc21zX2NvdW50PWF0b2koc21zX3JlY19mbGFnKTtpZihzbXNfY291bnQ8KDB4MTZhKzU5MTctMHgxODg3KXx8c21zX2NvdW50PklOVF9NQVgKLS0oMHhhN2ErNTI3NS0weDFmMTQpKXthdF9wcmludChMT0dfRVJSLAorY2hhciBzbXNfcmVjX2ZsYWdbKDB4MmZkKzIxMDQtMHhiMzApXT17KDB4ZjQ5KzI3MzgtMHgxOWZiKX07Y2hhciByZW1pbmRfZmxhZ1sKKygweDFiMzErMjMyMC0weDI0M2MpXTtpbnQgc21zX2NvdW50PSgweDU4NCszNTctMHg2ZTkpO2ludCByZW1pbmRfY291bnQ9CisoMHgxODM2KzE3NTEtMHgxZjBkKTttZW1zZXQoc21zX3JlY19mbGFnLCgweDE4ZGErNTU3LTB4MWIwNyksc2l6ZW9mKHNtc19yZWNfZmxhZworKSk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1JFQ0VWSUVELHNtc19yZWNfZmxhZyxzaXplb2Yoc21zX3JlY19mbGFnKSk7CitzbXNfY291bnQ9YXRvaShzbXNfcmVjX2ZsYWcpO2lmKHNtc19jb3VudDwoMHg0YWMrMTE3MC0weDkzZSl8fHNtc19jb3VudD5JTlRfTUFYLQorKDB4MTM4MyszOTk4LTB4MjMyMCkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDczXHg2ZFx4NzNceDVmXHg2M1x4NmZceDc1XHg2ZVx4NzRceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sc21zX2NvdW50KTtyZXR1cm47fW1lbXNldChzbXNfcmVjX2ZsYWcsKDB4MjFlNSs1NjMtMHgyNDE4KSxzaXplb2Yoc21zX3JlY19mbGFnKQorLHNtc19jb3VudCk7cmV0dXJuO31tZW1zZXQoc21zX3JlY19mbGFnLCgweGRiMis2NDIyLTB4MjZjOCksc2l6ZW9mKHNtc19yZWNfZmxhZykKICk7c25wcmludGYoc21zX3JlY19mbGFnLHNpemVvZihzbXNfcmVjX2ZsYWcpLCJceDI1XHg2NCIsc21zX2NvdW50KwotKDB4YmE2KzQ2NzMtMHgxZGU2KSk7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1JFQ0VWSUVELHNtc19yZWNfZmxhZyk7CisoMHhiOWMrNjc3Ny0weDI2MTQpKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfUkVDRVZJRUQsc21zX3JlY19mbGFnKTsKIHNjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRF9MRUQsc21zX3JlY19mbGFnKTttZW1zZXQocmVtaW5kX2ZsYWcsCi0oMHg2ZTMrMjAwNi0weGViOSksc2l6ZW9mKHJlbWluZF9mbGFnKSk7c25wcmludGYocmVtaW5kX2ZsYWcsc2l6ZW9mKHJlbWluZF9mbGFnKQotLCJceDI1XHg2NCIscmVtaW5kX2NvdW50KygweDE5ODErMTIyMC0weDFlNDQpKTtzY19jZmdfc2V0KAorKDB4MWQzNCsyNDIxLTB4MjZhOSksc2l6ZW9mKHJlbWluZF9mbGFnKSk7c25wcmludGYocmVtaW5kX2ZsYWcsc2l6ZW9mKAorcmVtaW5kX2ZsYWcpLCJceDI1XHg2NCIscmVtaW5kX2NvdW50KygweDE5MWMrMjgwNS0weDI0MTApKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRF9SRU1JTkQscmVtaW5kX2ZsYWcpO3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULAogIlx4NmZceDZiIik7c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7fXZvaWQgelVmaVNtc19DZHNSZXNwUHJvYygKIFRfelNtc19TbXNJbmQqcHRSZXNwRGF0YSl7dW5zaWduZWQgY2hhciBhY0Zvcm1hdFBkdVtaU01TX1BEVV9TSVpFXT17Ci0oMHg1NjYrMzQ5MC0weDEzMDgpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhPXsoMHgxN2Y1KzMwMzUtMHgyM2QwKX07Ci1pbnQgaXNQdXNoU21zPSgweGZjMys0OTkyLTB4MjM0Myk7aWYoc3RyY21wKHB0UmVzcERhdGEtPnBkdSwiIik9PQotKDB4MjMyKzE2MzgtMHg4OTgpKXtDSEFSIHNyU3RhdGVbKDB4OTkrMzc3OS0weGYyYSldPXsoMHgxM2RjKzI5ODctMHgxZjg3KX07Ci1zY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsc2l6ZW9mKHNyU3RhdGUpKTtpZigoMHgxM2MxKzgzOS0weDE3MDgpIT1zdHJjbXAoCisoMHgxZjY4KzQ3Ni0weDIxNDQpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhPXsoMHgxZGM0Kzc0OS0weDIwYjEpfTsKK2ludCBpc1B1c2hTbXM9KDB4MTAxNisxMzEzLTB4MTUzNyk7aWYoc3RyY21wKHB0UmVzcERhdGEtPnBkdSwiIik9PQorKDB4MTZhKzMzNjAtMHhlOGEpKXtDSEFSIHNyU3RhdGVbKDB4MjQzMSsyNTUtMHgyNGZlKV09eygweDE4YTcrMTk5Ny0weDIwNzQpfTsKK3NjX2NmZ19nZXQoTlZfU1JfU1RBVEUsc3JTdGF0ZSxzaXplb2Yoc3JTdGF0ZSkpO2lmKCgweGFhYyszMTktMHhiZWIpIT1zdHJjbXAoCiBzclN0YXRlLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY5XHg2ZVx4NjciKSl7c2NfY2ZnX3NldCgKIE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpCiA7fWVsc2V7c2NfY2ZnX3NldChOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt9CiByZXR1cm47fXpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpCiBTdHJpbmcyQnl0ZXMocHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKAotKDB4MWM4MisxODUxLTB4MjNiOCk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKKygweDk5NiszMTQ1LTB4MTVkYSk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKIHNjX2NmZ19zZXQoTlZfU1JfU1RBVEUsIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0Iik7CiB6VWZpU21zX0Fja19uZXdfbXNnKFRSVUUpO3JldHVybjt9cmV0dXJuO31pbnQgelVmaVNtc19DaGVja0lmV2hvbGVTbXMoCiBUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGF0YSxTTVNfTVNHX0lORk8qcG1zZyl7aWYoZGF0YS0+Y29uY2F0X3NtcyE9Ci0oMHgyNTMrNjkwLTB4NTA0KSl7cmV0dXJuKDB4ZTJiKzI1NDQtMHgxODFiKTt9elVmaVNtc19HZXRDdXJyZW50UmVjdlRvdGFsU2VxKAorKDB4YmY2KzE5MTktMHgxMzc0KSl7cmV0dXJuKDB4MTdkKzMxMDMtMHhkOWMpO316VWZpU21zX0dldEN1cnJlbnRSZWN2VG90YWxTZXEoCiBkYXRhLHBtc2cpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NWJceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDY4XHg2NVx4NjNceDZiXHg0OVx4NjZceDU3XHg2OFx4NmZceDZjXHg2NVx4NTNceDZkXHg3M1x4MjBceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDczXHgyY1x4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NTNceDY1XHg3MVx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4NzJceDY1XHg2Nlx4MjBceDNkXHgyNVx4NjRceDJjXHg3NFx4NmZceDc0XHg2MVx4NmNceDIwXHgzZFx4MjVceDY0XHgyY1x4MjBceDczXHg2NVx4NzFceDNkXHgyNVx4NjQiICJcbiIKLSxwbXNnLT5pZCxhdG9pKHBtc2ctPnRvdGFsX3NlcSksZGF0YS0+Y29uY2F0X2luZm9bKDB4OGQ2KzU3NzctMHgxZjY3KV0sZGF0YS0+Ci1jb25jYXRfaW5mb1soMHg3MmMrNTE4LTB4OTMxKV0sZGF0YS0+Y29uY2F0X2luZm9bKDB4NzhiKzE5NjYtMHhmMzcpXSk7aWYoZGF0YS0+Ci1jb25jYXRfaW5mb1soMHhkMGIrNDk1OC0weDIwNjgpXT09YXRvaShwbXNnLT50b3RhbF9zZXEpKXtyZXR1cm4KLSgweDFiMCs0MjkzLTB4MTI3NSk7fXJldHVybi0oMHgyODgrMjQ3MS0weGMyZSk7fXZvaWQgelVmaVNtc19UcmFmZmljQ2hhbmdlU21zVGFnCi0oVF96VWZpU21zX0RiU3RvcmVEYXRhKmRhdGEpe0NIQVIgc21zTnVtYmVyWygweDE1MysxMzY2LTB4Njc3KV09ewotKDB4MTExNis2OTQtMHgxM2NjKX07c2NfY2ZnX2dldChOVl9UUkFGRklDX1NNU19OVU1CRVIsc21zTnVtYmVyLHNpemVvZihzbXNOdW1iZXIKLSkpO2lmKCgweGIxKzQyMjctMHgxMTM0KT09c3RyY21wKHNtc051bWJlcixkYXRhLT5udW1iZXIpKXtkYXRhLT50YWc9Ci1XTVNfVEFHX1RZUEVfTVRfUkVBRF9WMDE7ZGF0YS0+bXNnX2Rpc3BsYXltb2RlPSgweGJmNys0NTIwLTB4MWQ5ZSk7fX12b2lkIAorLHBtc2ctPmlkLGF0b2kocG1zZy0+dG90YWxfc2VxKSxkYXRhLT5jb25jYXRfaW5mb1soMHg1ZmIrMzg1NC0weDE1MDkpXSxkYXRhLT4KK2NvbmNhdF9pbmZvWygweDEzMTArMzAyNi0weDFlZTEpXSxkYXRhLT5jb25jYXRfaW5mb1soMHgyNGU4KzIwMi0weDI1YjApXSk7aWYoCitkYXRhLT5jb25jYXRfaW5mb1soMHgxM2ZhKzQ0NjUtMHgyNTZhKV09PWF0b2kocG1zZy0+dG90YWxfc2VxKSl7cmV0dXJuCisoMHg5NDcrMzMzOS0weDE2NTIpO31yZXR1cm4tKDB4NGU2KzE4NjUtMHhjMmUpO312b2lkIHpVZmlTbXNfVHJhZmZpY0NoYW5nZVNtc1RhZworKFRfelVmaVNtc19EYlN0b3JlRGF0YSpkYXRhKXtDSEFSIHNtc051bWJlclsoMHgxZTZjKzIwNC0weDFmMDYpXT17CisoMHhkZTYrMTI1NS0weDEyY2QpfTtzY19jZmdfZ2V0KE5WX1RSQUZGSUNfU01TX05VTUJFUixzbXNOdW1iZXIsc2l6ZW9mKHNtc051bWJlcgorKSk7aWYoKDB4MTIyZCs2NjctMHgxNGM4KT09c3RyY21wKHNtc051bWJlcixkYXRhLT5udW1iZXIpKXtkYXRhLT50YWc9CitXTVNfVEFHX1RZUEVfTVRfUkVBRF9WMDE7ZGF0YS0+bXNnX2Rpc3BsYXltb2RlPSgweDE1MTMrMzYwOC0weDIzMmEpO319dm9pZCAKIHpVZmlTbXNfSGFuZGxlVHJhZmZpY1NtcyhUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGF0YSl7aW50IGlTbXNJZD0KLSgweDEyYTcrMzA1Mi0weDFlOTMpO1NNU19NU0dfSU5GTyBtc2c9eygweDQyYSszNzMzLTB4MTJiZil9O0NIQVIgc21zTnVtYmVyWwotKDB4ZWE2KzE2MjAtMHgxNGM4KV09eygweDEzMDcrNDg4MC0weDI2MTcpfTtzY19jZmdfZ2V0KE5WX1RSQUZGSUNfU01TX05VTUJFUiwKKygweDEwOSsxNzc2LTB4N2Y5KTtTTVNfTVNHX0lORk8gbXNnPXsoMHgyMDYrNDMxNi0weDEyZTIpfTtDSEFSIHNtc051bWJlclsKKygweDI3NSs5MDgxLTB4MjViYyldPXsoMHg4YzArMTA3OC0weGNmNil9O3NjX2NmZ19nZXQoTlZfVFJBRkZJQ19TTVNfTlVNQkVSLAogc21zTnVtYmVyLHNpemVvZihzbXNOdW1iZXIpKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDIwXHg3NFx4NDRceDYyXHg1M1x4NzRceDZmXHg3Mlx4NjVceDQ0XHg2MVx4NzRceDYxXHgyZVx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4MjBceDNkXHgyMFx4MjVceDczXHgyY1x4MjBceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1Zlx4NzNceDZkXHg3M1x4NWZceDZlXHg3NVx4NmRceDYyXHg2NVx4NzJceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgotLGRhdGEtPm51bWJlcixzbXNOdW1iZXIpO2lmKCgweDEwMzQrMjA0Mi0weDE4MmUpPT1zdHJjbXAoc21zTnVtYmVyLGRhdGEtPm51bWJlcikKLSl7aWYoKDB4NTEwKzcxNzctMHgyMTE5KSE9elVmaVNtc19DaGVja0lmV2hvbGVTbXMoZGF0YSwmbXNnKSl7YXRfcHJpbnQoTE9HX0RFQlVHCi0sCissZGF0YS0+bnVtYmVyLHNtc051bWJlcik7aWYoKDB4M2JiKzg2MTQtMHgyNTYxKT09c3RyY21wKHNtc051bWJlcixkYXRhLT5udW1iZXIpKQore2lmKCgweDIwNzYrODY1LTB4MjNkNykhPXpVZmlTbXNfQ2hlY2tJZldob2xlU21zKGRhdGEsJm1zZykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NWJceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1ZFx4MjBceDYzXHg2ZFx4NzRceDIwXHg2OVx4NmVceDY0XHgyY1x4MjBceDcyXHg2NVx4NjNceDc2XHgyMFx4NzNceDZkXHg3M1x4MmNceDIwXHg2Mlx4NzVceDc0XHgyMFx4NmVceDZmXHg3NFx4MjBceDc3XHg2OFx4NmZceDZjXHg2NVx4MjBceDczXHg2ZFx4NzNceDJjXHgyMFx4NzdceDYxXHg2OVx4NzRceDIwXHg3NFx4NmZceDIwXHg3Mlx4NjVceDYzXHg3Nlx4MjBceDZlXHg2NVx4NzhceDc0XHgyMFx4NzNceDY1XHg2NyIgIlxuIgogKTtyZXR1cm47fXNjX2NmZ19zZXQoTlZfVFJBRkZJQ19SRUNWX1NNU19JRCxtc2cuaWQpO3NjX2NmZ19zZXQoCiBOVl9UUkFGRklDX1NNU19OVU1CRVIsIlx4MzAiKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ4XHg2MVx4NmVceDY0XHg2Y1x4NjVceDU0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1M1x4NmRceDczXHgyMFx4MjBceDIwXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWZceDcyXHg2NVx4NjNceDc2XHg1Zlx4NzNceDZkXHg3M1x4NWZceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDczIiAiXG4iCiAsbXNnLmlkKTt9fXZvaWQgelVmaVNtc19DbXRSZXNwUHJvYyhUX3pTbXNfU21zSW5kKnB0UmVzcERhdGEpe3pVZmlTbXNfU3RvcmVUeXBlIAogaVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxO3Vuc2lnbmVkIGNoYXIgYWNGb3JtYXRQZHVbWlNNU19QRFVfU0laRV09ewotKDB4ODE5KzY2OTYtMHgyMjQxKX07VF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlN0b3JlRGF0YTtpbnQgaXNQdXNoU21zPQotKDB4MTI4KzUxNzUtMHgxNTVmKTtTTVNfUEFSQU0gb25lX3Ntcz17KDB4ODFkKzEzMy0weDhhMil9O2ludCAKLXVucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHg1MzQrMjg0MC0weDEwNGMpO21lbXNldCgmdERiU3RvcmVEYXRhLAotKDB4ZmIzKzI5Mi0weDEwZDcpLHNpemVvZihUX3pVZmlTbXNfRGJTdG9yZURhdGEpKTthdF9wcmludChMT0dfREVCVUcsCisoMHgxOWJkKzEyMy0weDFhMzgpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhO2ludCBpc1B1c2hTbXM9CisoMHg1NDMrMjA3OC0weGQ2MSk7U01TX1BBUkFNIG9uZV9zbXM9eygweDkwNisyNzItMHhhMTYpfTtpbnQgCit1bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4OTE3KzY0MDctMHgyMjFlKTttZW1zZXQoJnREYlN0b3JlRGF0YSwKKygweDI2Mis0ODI0LTB4MTUzYSksc2l6ZW9mKFRfelVmaVNtc19EYlN0b3JlRGF0YSkpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJmXHg3MFx4NjRceDc1XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLHB0UmVzcERhdGEtPmluZGV4LHB0UmVzcERhdGEtPnN0YXQscHRSZXNwRGF0YS0+bGVuZ3RoLHB0UmVzcERhdGEtPnBkdSk7aWYoCi1zdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4MjYwKzgzODctMHgyMzIzKSl7Q0hBUiBzclN0YXRlWwotKDB4NDYxKzY5NjItMHgxZjYxKV09eygweGMyMCs2ODktMHhlZDEpfTtzY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsc2l6ZW9mKAotc3JTdGF0ZSkpO2lmKCgweDIxMis0MTI1LTB4MTIyZikhPXN0cmNtcChzclN0YXRlLAorc3RyY21wKHB0UmVzcERhdGEtPnBkdSwiIik9PSgweDQyMCszMDM4LTB4ZmZlKSl7Q0hBUiBzclN0YXRlWygweDQ1Yys0OTIzLTB4MTc2NSkKK109eygweDNkZis5NjItMHg3YTEpfTtzY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsc2l6ZW9mKHNyU3RhdGUpKTtpZigKKygweDk2YSs0MDU1LTB4MTk0MSkhPXN0cmNtcChzclN0YXRlLAogIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjlceDZlXHg2NyIpKXtzY19jZmdfc2V0KAogTlZfU01TX1JFQ1ZfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCkKIDt9ZWxzZXtzY19jZmdfc2V0KE5WX1NSX1NUQVRFLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg2NCIpO30KIHJldHVybjt9aXNQdXNoU21zPURlY29kZVB1c2hQZHUocHRSZXNwRGF0YS0+cGR1LCZvbmVfc21zKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NzNceDZkXHg3M1x4NWRceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKLXN0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHgyOWIrNzE3OC0weDFlYTUpKTt9aWYoCitzdHJsZW4ob25lX3Ntcy5UUF9VRCkpO3p0ZV9mb3RhX25vdGlmeVB1c2hNc2coKDB4MmU1KzI0MzktMHhjNmMpKTt9aWYoCiBTTVNfTk9fUFVTSCE9aXNQdXNoU21zKXthdF9wcmludChMT0dfREVCVUcsCiAiXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLG9uZV9zbXMuaW5kZXgpO2F0X3ByaW50KExPR19ERUJVRywKQEAgLTI2NiwzMiArMjY1LDMyIEBACiAsb25lX3Ntcy5UUF9DdXJyZW50UGllY2VOdW0pO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpOwogelVmaVNtc19BY2tfbmV3X21zZyhUUlVFKTtyZXR1cm47fXpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmCiBwdFJlc3BEYXRhLT5zdGF0KTsodm9pZClTdHJpbmcyQnl0ZXMocHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKAotcHRSZXNwRGF0YS0+cGR1KSk7aWYoKDB4MWE5KzcyMTItMHgxZGQwKT09cHRSZXNwRGF0YS0+c3RhdCl7KHZvaWQpCitwdFJlc3BEYXRhLT5wZHUpKTtpZigoMHgxODMrMjA4Ni0weDlhNCk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKQogelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUsCiAiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt6VWZpU21zX0Fja19uZXdfbXNnKFRSVUUpO3JldHVybgogO30odm9pZCl6VWZpU21zX0RlY29kZVNtc0RhdGEoJnREYlN0b3JlRGF0YSxwdFJlc3BEYXRhLT5pbmRleCxpU3RvcmVQb3MsKAogVF9TbXNTdGF0dXMpcHRSZXNwRGF0YS0+c3RhdCxXTVNfTUVTU0FHRV9GT1JNQVRfR1dfUFBfVjAxLHB0UmVzcERhdGEtPmxlbmd0aCwKIGFjRm9ybWF0UGR1KTtpZih0RGJTdG9yZURhdGEuc21zX2NsYXNzPT1XTVNfTUVTU0FHRV9DTEFTU18yKXtpU3RvcmVQb3M9CiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE7fWlmKHpVZmlTbXNfSXNVbnJlYWRTbXMoWlRFX1dNU19NRU1PUllfTlYpKXsKLXVucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHgxZmM1KzE0LTB4MWZkMik7fWVsc2V7Ci11bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4ODczKzM1Mi0weDlkMyk7fXpVZmlTbXNfVHJhZmZpY0NoYW5nZVNtc1RhZygmCi10RGJTdG9yZURhdGEpO2lmKFpURV9XTVNfTlZfTUVNT1JZX0ZVTEw9PXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTdG9yZURhdGEsCi1pU3RvcmVQb3MsLSgweDYxYSs3MzQ3LTB4MjJjYykpKXt6VWZpU21zX0Fja19uZXdfbXNnKEZBTFNFKTt6U21zX1NlbmRabWVuYVJlcSgKLSgweDE2NTIrMjY0LTB4MTc1OSkpO3JldHVybjt9aWYodERiU3RvcmVEYXRhLnNtc19jbGFzcyE9V01TX01FU1NBR0VfQ0xBU1NfMil7Cit1bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4MTZhKzQwMzQtMHgxMTJiKTt9ZWxzZXsKK3VucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHg0YTErMzczMi0weDEzMzUpO316VWZpU21zX1RyYWZmaWNDaGFuZ2VTbXNUYWcoCismdERiU3RvcmVEYXRhKTtpZihaVEVfV01TX05WX01FTU9SWV9GVUxMPT16VWZpU21zX1dyaXRlU21zVG9EYigmdERiU3RvcmVEYXRhLAoraVN0b3JlUG9zLC0oMHg2YTIrNzkxMS0weDI1ODgpKSl7elVmaVNtc19BY2tfbmV3X21zZyhGQUxTRSk7elNtc19TZW5kWm1lbmFSZXEoCisoMHgxMTczKzM1MTItMHgxZjJhKSk7cmV0dXJuO31pZih0RGJTdG9yZURhdGEuc21zX2NsYXNzIT1XTVNfTUVTU0FHRV9DTEFTU18yKXsKIHpVZmlTbXNfQWNrX25ld19tc2coVFJVRSk7fXpVZmlTbXNfQ21nck52U2V0KCk7elVmaVNtc19DaGVja01lbW9yeUZ1bGwoCiBaVEVfV01TX01FTU9SWV9OVik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7CiB6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKE1TR19TTVNfTkVXKTt6VWZpU21zX0hhbmRsZVRyYWZmaWNTbXMoJnREYlN0b3JlRGF0YSk7CiByZXR1cm47fXZvaWQgelVmaVNtc19abWdyUmVzcFByb2MoVF96U21zX1Ntc0luZCpwdFJlc3BEYXRhKXt6VWZpU21zX1N0b3JlVHlwZSAKIGlTdG9yZVBvcz1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMTt1bnNpZ25lZCBjaGFyIGFjRm9ybWF0UGR1W1pTTVNfUERVX1NJWkVdPXsKLSgweDE0NjErMzUzLTB4MTVjMil9O1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTdG9yZURhdGE7aW50IGlzUHVzaFNtcz0KLSgweGQ1MysxMDcyLTB4MTE4Myk7U01TX1BBUkFNIG9uZV9zbXM9eygweGY2MisxOTU5LTB4MTcwOSl9O0NIQVIgZGVmYXVsdFN0b3JlWwotKDB4MTI4Mis1My0weDEyODUpXT17KDB4MWJjMCsxMjkyLTB4MjBjYyl9O21lbXNldCgmdERiU3RvcmVEYXRhLAotKDB4YjgwKzUyOTAtMHgyMDJhKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4ZWY3KzE5OS0weGZiZSl9O1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTdG9yZURhdGE7aW50IGlzUHVzaFNtcz0KKygweGYxMCs1MzAzLTB4MjNjNyk7U01TX1BBUkFNIG9uZV9zbXM9eygweDEwZDYrNDU1LTB4MTI5ZCl9O0NIQVIgZGVmYXVsdFN0b3JlWworKDB4NjFmKzQwODUtMHgxNWUyKV09eygweDg0NCs2MTIxLTB4MjAyZCl9O21lbXNldCgmdERiU3RvcmVEYXRhLAorKDB4MTNkNCsxNjM0LTB4MWEzNiksc2l6ZW9mKFRfelVmaVNtc19EYlN0b3JlRGF0YSkpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJmXHg3MFx4NjRceDc1XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLHB0UmVzcERhdGEtPmluZGV4LHB0UmVzcERhdGEtPnN0YXQscHRSZXNwRGF0YS0+bGVuZ3RoLHB0UmVzcERhdGEtPnBkdSk7aWYoCi1zdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4NzAwKzU1NDgtMHgxY2FjKSl7Q0hBUiBzclN0YXRlWwotKDB4ZmJmKzI4NjEtMHgxYWJhKV09eygweDEwYTQrMTk5My0weDE4NmQpfTtzY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsCi1zaXplb2Yoc3JTdGF0ZSkpO2lmKCgweDE3NTQrMTQ3OC0weDFkMWEpIT1zdHJjbXAoc3JTdGF0ZSwKK3N0cmNtcChwdFJlc3BEYXRhLT5wZHUsIiIpPT0oMHgxODEwKzMxOTUtMHgyNDhiKSl7Q0hBUiBzclN0YXRlWworKDB4MTE1NisyMDgzLTB4MTk0NyldPXsoMHgxMWViKzM1NzctMHgxZmU0KX07c2NfY2ZnX2dldChOVl9TUl9TVEFURSxzclN0YXRlLAorc2l6ZW9mKHNyU3RhdGUpKTtpZigoMHgzMzErMzEzNi0weGY3MSkhPXN0cmNtcChzclN0YXRlLAogIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjlceDZlXHg2NyIpKXtzY19jZmdfc2V0KAogTlZfU01TX1JFQ1ZfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCkKIDt9ZWxzZXtzY19jZmdfc2V0KE5WX1NSX1NUQVRFLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg2NCIpO30KQEAgLTMwMCw1MCArMjk5LDcgQEAKICxpc1B1c2hTbXMpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjVceDY0XHgyMCIgIlxuIgogLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKLXN0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHg1Mys5OTktMHg0M2EpKTt9aWYoU01TX05PX1BVU0gKLSE9aXNQdXNoU21zKXthdF9wcmludChMT0dfREVCVUcsCi0iXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgotLG9uZV9zbXMuaW5kZXgpO2F0X3ByaW50KExPR19ERUJVRywKLSJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDU0XHg1MFx4NWZceDUyXHg2NVx4NjZceDY1XHg3Mlx4NGVceDc1XHg2ZFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sb25lX3Ntcy5UUF9SZWZlck51bSk7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4MjBceDZmXHg2ZVx4NjVceDVmXHg3M1x4NmRceDczXHgyZVx4NTRceDUwXHg1Zlx4NDFceDZjXHg2Y1x4NTBceDY5XHg2NVx4NjNceDY1XHg0ZVx4NzVceDZkXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKLSxvbmVfc21zLlRQX0FsbFBpZWNlTnVtKTthdF9wcmludChMT0dfREVCVUcsCi0iXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg1NFx4NTBceDVmXHg0M1x4NzVceDcyXHg3Mlx4NjVceDZlXHg3NFx4NTBceDY5XHg2NVx4NjNceDY1XHg0ZVx4NzVceDZkXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKLSxvbmVfc21zLlRQX0N1cnJlbnRQaWVjZU51bSk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7cmV0dXJuO30KLXpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpU3RyaW5nMkJ5dGVzKAotcHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKCgweDY2Yys3MDI2LTB4MjFkOSkKLT09cHRSZXNwRGF0YS0+c3RhdCl7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoCi1OVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTtyZXR1cm47fXNjX2NmZ19nZXQoCi1OVl9ERUZBVUxUX1NUT1JFLGRlZmF1bHRTdG9yZSxzaXplb2YoZGVmYXVsdFN0b3JlKSk7aWYoKDB4Yjc1KzYyMjUtMHgyM2M2KT09Ci1zdHJjbXAoZGVmYXVsdFN0b3JlLCJceDczXHg2OVx4NmQiKSl7aVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMTt9KHZvaWQpCi16VWZpU21zX0RlY29kZVNtc0RhdGEoJnREYlN0b3JlRGF0YSxwdFJlc3BEYXRhLT5pbmRleCxpU3RvcmVQb3MsKFRfU21zU3RhdHVzKQotcHRSZXNwRGF0YS0+c3RhdCxXTVNfTUVTU0FHRV9GT1JNQVRfR1dfUFBfVjAxLHB0UmVzcERhdGEtPmxlbmd0aCxhY0Zvcm1hdFBkdSk7aWYKLSh0RGJTdG9yZURhdGEuc21zX2NsYXNzPT1XTVNfTUVTU0FHRV9DTEFTU18yKXtpU3RvcmVQb3M9V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxCi07fXpVZmlTbXNfVHJhZmZpY0NoYW5nZVNtc1RhZygmdERiU3RvcmVEYXRhKTtpZihaVEVfV01TX05WX01FTU9SWV9GVUxMPT0KLXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTdG9yZURhdGEsaVN0b3JlUG9zLC0oMHg4MjArNzI5Ny0weDI0YTApKSl7cmV0dXJuO31pZigKLXREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpe316VWZpU21zX0NtZ3JOdlNldCgpOwotelVmaVNtc19DaGVja01lbW9yeUZ1bGwoWlRFX1dNU19NRU1PUllfTlYpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKAotU01TX1NUQVRFX1JFQ1ZFRCk7elVmaVNtc19IYW5kbGVUcmFmZmljU21zKCZ0RGJTdG9yZURhdGEpO3JldHVybjt9dm9pZCAKLXpVZmlTbXNfQ21nclJlc3BQcm9jKFRfelNtc19TbXNJbmQqcHRSZXNwRGF0YSl7elVmaVNtc19TdG9yZVR5cGUgaVN0b3JlUG9zPQotV01TX1NUT1JBR0VfVFlQRV9OVl9WMDE7dW5zaWduZWQgY2hhciBhY0Zvcm1hdFBkdVtaU01TX1BEVV9TSVpFXT17Ci0oMHg4OTYrMTgwMC0weGY5ZSl9O1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTdG9yZURhdGE7aW50IGlzUHVzaFNtcz0KLSgweGFhYys0MzcyLTB4MWJjMCk7U01TX1BBUkFNIG9uZV9zbXM9eygweGY0MysxOTM0LTB4MTZkMSl9O2ludCAKLXVucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHhkYzQrNTIwOS0weDIyMWQpO21lbXNldCgmdERiU3RvcmVEYXRhLAotKDB4NGMxKzU3MjktMHgxYjIyKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0M1x4NmRceDY3XHg3Mlx4NTJceDY1XHg3M1x4NzBceDUwXHg3Mlx4NmZceDYzXHgyMVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmZceDczXHg3NFx4NjFceDc0XHgzYVx4MjVceDY0XHgyZlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmZceDcwXHg2NFx4NzVceDNhXHgyNVx4NzNceDIxIiAiXG4iCi0scHRSZXNwRGF0YS0+aW5kZXgscHRSZXNwRGF0YS0+c3RhdCxwdFJlc3BEYXRhLT5sZW5ndGgscHRSZXNwRGF0YS0+cGR1KTsKLXpVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8oTVNHX1NNU19SRUFESU5HKTtpZihzdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09Ci0oMHg0YjQrMzE5OC0weDExMzIpKXtDSEFSIHNyU3RhdGVbKDB4MTQyMis0NDk0LTB4MjU3ZSldPXsoMHgxNjIrNTY5LTB4MzliKX07Ci1zY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsc2l6ZW9mKHNyU3RhdGUpKTtpZigoMHgxMmQwKzQ0OTMtMHgyNDVkKSE9c3RyY21wKAotc3JTdGF0ZSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2OVx4NmVceDY3Iikpe3NjX2NmZ19zZXQoCi1OVl9TTVNfUkVDVl9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKQotO31lbHNle3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUsIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0Iik7fQotcmV0dXJuO31pc1B1c2hTbXM9RGVjb2RlUHVzaFBkdShwdFJlc3BEYXRhLT5wZHUsJm9uZV9zbXMpO2F0X3ByaW50KExPR19ERUJVRywKLSJceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQzXHg2ZFx4NjdceDcyXHg1Mlx4NjVceDczXHg3MFx4NTBceDcyXHg2Zlx4NjNceDIwXHg2OVx4NzNceDUwXHg3NVx4NzNceDY4XHg1M1x4NmRceDczXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKLSxpc1B1c2hTbXMpO2F0X3ByaW50KExPR19ERUJVRywKLSJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjVceDY0XHgyMCIgIlxuIgotLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKLXN0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHgxZWVhKzEwMTUtMHgyMmUxKSk7fWlmKAorc3RybGVuKG9uZV9zbXMuVFBfVUQpKTt6dGVfZm90YV9ub3RpZnlQdXNoTXNnKCgweGZiNCs2NDYtMHgxMjNhKSk7fWlmKAogU01TX05PX1BVU0ghPWlzUHVzaFNtcyl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4MjBceDZmXHg2ZVx4NjVceDVmXHg3M1x4NmRceDczXHgyZVx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKICxvbmVfc21zLmluZGV4KTthdF9wcmludChMT0dfREVCVUcsCkBAIC0zNTQsODEgKzMxMCwxMjQgQEAKICJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDU0XHg1MFx4NWZceDQzXHg3NVx4NzJceDcyXHg2NVx4NmVceDc0XHg1MFx4NjlceDY1XHg2M1x4NjVceDRlXHg3NVx4NmRceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLG9uZV9zbXMuVFBfQ3VycmVudFBpZWNlTnVtKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKTtyZXR1cm47fQogelVmaVNtc19HZXRSZXBvcnRTdGF0dXMocHRSZXNwRGF0YS0+cGR1LCZwdFJlc3BEYXRhLT5zdGF0KTsodm9pZClTdHJpbmcyQnl0ZXMoCi1wdFJlc3BEYXRhLT5wZHUsYWNGb3JtYXRQZHUsKGludClzdHJsZW4ocHRSZXNwRGF0YS0+cGR1KSk7aWYoKDB4ODFjKzUxNC0weGExOSk9PQotcHRSZXNwRGF0YS0+c3RhdCl7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUKLSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTtyZXR1cm47fSh2b2lkKQorcHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKAorKDB4MTlkMSsxMDUwLTB4MWRlNik9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKK3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUsIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0Iik7cmV0dXJuO30KK3NjX2NmZ19nZXQoTlZfREVGQVVMVF9TVE9SRSxkZWZhdWx0U3RvcmUsc2l6ZW9mKGRlZmF1bHRTdG9yZSkpO2lmKAorKDB4MTIxYSs3MzAtMHgxNGY0KT09c3RyY21wKGRlZmF1bHRTdG9yZSwiXHg3M1x4NjlceDZkIikpe2lTdG9yZVBvcz0KK1dNU19TVE9SQUdFX1RZUEVfVUlNX1YwMTt9KHZvaWQpelVmaVNtc19EZWNvZGVTbXNEYXRhKCZ0RGJTdG9yZURhdGEscHRSZXNwRGF0YS0+CitpbmRleCxpU3RvcmVQb3MsKFRfU21zU3RhdHVzKXB0UmVzcERhdGEtPnN0YXQsV01TX01FU1NBR0VfRk9STUFUX0dXX1BQX1YwMSwKK3B0UmVzcERhdGEtPmxlbmd0aCxhY0Zvcm1hdFBkdSk7aWYodERiU3RvcmVEYXRhLnNtc19jbGFzcz09V01TX01FU1NBR0VfQ0xBU1NfMil7CitpU3RvcmVQb3M9V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxO316VWZpU21zX1RyYWZmaWNDaGFuZ2VTbXNUYWcoJnREYlN0b3JlRGF0YSk7CitpZihaVEVfV01TX05WX01FTU9SWV9GVUxMPT16VWZpU21zX1dyaXRlU21zVG9EYigmdERiU3RvcmVEYXRhLGlTdG9yZVBvcywtCisoMHhjODArNTY4Ni0weDIyYjUpKSl7cmV0dXJuO31pZih0RGJTdG9yZURhdGEuc21zX2NsYXNzIT1XTVNfTUVTU0FHRV9DTEFTU18yKXt9Cit6VWZpU21zX0NtZ3JOdlNldCgpO3pVZmlTbXNfQ2hlY2tNZW1vcnlGdWxsKFpURV9XTVNfTUVNT1JZX05WKTsKK3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpO3pVZmlTbXNfSGFuZGxlVHJhZmZpY1NtcygmdERiU3RvcmVEYXRhCispO3JldHVybjt9dm9pZCB6VWZpU21zX0NtZ3JSZXNwUHJvYyhUX3pTbXNfU21zSW5kKnB0UmVzcERhdGEpe3pVZmlTbXNfU3RvcmVUeXBlIAoraVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxO3Vuc2lnbmVkIGNoYXIgYWNGb3JtYXRQZHVbWlNNU19QRFVfU0laRV09eworKDB4YzM1KzIwOTAtMHgxNDVmKX07VF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlN0b3JlRGF0YTtpbnQgaXNQdXNoU21zPQorKDB4ZmZjKzE4NzEtMHgxNzRiKTtTTVNfUEFSQU0gb25lX3Ntcz17KDB4MWYwNCsxODAxLTB4MjYwZCl9O2ludCAKK3VucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHg4YjIrNDQ5OC0weDFhNDQpO21lbXNldCgmdERiU3RvcmVEYXRhLAorKDB4MWNlNys4MTItMHgyMDEzKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0M1x4NmRceDY3XHg3Mlx4NTJceDY1XHg3M1x4NzBceDUwXHg3Mlx4NmZceDYzXHgyMVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmZceDczXHg3NFx4NjFceDc0XHgzYVx4MjVceDY0XHgyZlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmZceDcwXHg2NFx4NzVceDNhXHgyNVx4NzNceDIxIiAiXG4iCisscHRSZXNwRGF0YS0+aW5kZXgscHRSZXNwRGF0YS0+c3RhdCxwdFJlc3BEYXRhLT5sZW5ndGgscHRSZXNwRGF0YS0+cGR1KTsKK3pVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8oTVNHX1NNU19SRUFESU5HKTtpZihzdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09CisoMHg5ZTgrNzIyNC0weDI2MjApKXtDSEFSIHNyU3RhdGVbKDB4NmQ0KzQ0NDUtMHgxN2ZmKV09eygweDE3ODYrNTEzLTB4MTk4Nyl9Oworc2NfY2ZnX2dldChOVl9TUl9TVEFURSxzclN0YXRlLHNpemVvZihzclN0YXRlKSk7aWYoKDB4MTIxMSsyOTEtMHgxMzM0KSE9c3RyY21wKAorc3JTdGF0ZSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2OVx4NmVceDY3Iikpe3NjX2NmZ19zZXQoCitOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKQorO31lbHNle3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUsIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0Iik7fQorcmV0dXJuO31pc1B1c2hTbXM9RGVjb2RlUHVzaFBkdShwdFJlc3BEYXRhLT5wZHUsJm9uZV9zbXMpO2F0X3ByaW50KExPR19ERUJVRywKKyJceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQzXHg2ZFx4NjdceDcyXHg1Mlx4NjVceDczXHg3MFx4NTBceDcyXHg2Zlx4NjNceDIwXHg2OVx4NzNceDUwXHg3NVx4NzNceDY4XHg1M1x4NmRceDczXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKKyxpc1B1c2hTbXMpO2F0X3ByaW50KExPR19ERUJVRywKKyJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjVceDY0XHgyMCIgIlxuIgorLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKK3N0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHg4ZGQrNTQ5MC0weDFlNGYpKTt9aWYoCitTTVNfTk9fUFVTSCE9aXNQdXNoU21zKXthdF9wcmludChMT0dfREVCVUcsCisiXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgorLG9uZV9zbXMuaW5kZXgpO2F0X3ByaW50KExPR19ERUJVRywKKyJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDU0XHg1MFx4NWZceDUyXHg2NVx4NjZceDY1XHg3Mlx4NGVceDc1XHg2ZFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCissb25lX3Ntcy5UUF9SZWZlck51bSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4MjBceDZmXHg2ZVx4NjVceDVmXHg3M1x4NmRceDczXHgyZVx4NTRceDUwXHg1Zlx4NDFceDZjXHg2Y1x4NTBceDY5XHg2NVx4NjNceDY1XHg0ZVx4NzVceDZkXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKKyxvbmVfc21zLlRQX0FsbFBpZWNlTnVtKTthdF9wcmludChMT0dfREVCVUcsCisiXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg1NFx4NTBceDVmXHg0M1x4NzVceDcyXHg3Mlx4NjVceDZlXHg3NFx4NTBceDY5XHg2NVx4NjNceDY1XHg0ZVx4NzVceDZkXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKKyxvbmVfc21zLlRQX0N1cnJlbnRQaWVjZU51bSk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7cmV0dXJuO30KK3pVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpU3RyaW5nMkJ5dGVzKAorcHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKCgweGQ2YisyNTQxLTB4MTc1MykKKz09cHRSZXNwRGF0YS0+c3RhdCl7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoCitOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTtyZXR1cm47fSh2b2lkKQogelVmaVNtc19EZWNvZGVTbXNEYXRhKCZ0RGJTdG9yZURhdGEscHRSZXNwRGF0YS0+aW5kZXgsaVN0b3JlUG9zLChUX1Ntc1N0YXR1cykKIHB0UmVzcERhdGEtPnN0YXQsV01TX01FU1NBR0VfRk9STUFUX0dXX1BQX1YwMSxwdFJlc3BEYXRhLT5sZW5ndGgsYWNGb3JtYXRQZHUpO2lmCiAodERiU3RvcmVEYXRhLnNtc19jbGFzcz09V01TX01FU1NBR0VfQ0xBU1NfMil7aVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMQogO31pZih6VWZpU21zX0lzVW5yZWFkU21zKFpURV9XTVNfTUVNT1JZX05WKSl7dW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPQotKDB4ZTI5KzM3NDctMHgxY2NiKTt9ZWxzZXt1bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4NzAwKzE2OC0weDdhOCk7fWlmKAorKDB4MTk0KzMyNzUtMHhlNWUpO31lbHNle3VucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHg2NWIrNTExOS0weDFhNWEpO31pZigKIFpURV9XTVNfTlZfTUVNT1JZX0ZVTEw9PXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTdG9yZURhdGEsaVN0b3JlUG9zLC0KLSgweGU3NCsyODY4LTB4MTlhNykpKXtyZXR1cm47fWlmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpe30KKygweDEwYys1MTI2LTB4MTUxMSkpKXtyZXR1cm47fWlmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpe30KIHpVZmlTbXNfQ21nck52U2V0KCk7elVmaVNtc19DaGVja01lbW9yeUZ1bGwoWlRFX1dNU19NRU1PUllfTlYpOwogelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7cmV0dXJuO312b2lkIHpVZmlTbXNfQ21nc1Jlc3BQcm9jKFZPSUQKLSl7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1c0luZm89eygweDQ3MysxMzQ1LTB4OWI0KX07Z196VWZpU21zX0RiU3RvcmVEYXRhLT4KKyl7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1c0luZm89eygweDdkMCsyNDUwLTB4MTE2Mil9O2dfelVmaVNtc19EYlN0b3JlRGF0YS0+CiBtc2dfZGlzcGxheW1vZGU9Z19kaXNwbGF5bW9kZTtpZihnX3pVZmlTbXNfRGJTdG9yZURhdGEtPm1zZ19kaXNwbGF5bW9kZSE9Ci0oMHgzZGYrMjg0Ni0weGVmYykpe2lmKCgweGY2YSs0NTA0LTB4MjEwMik9PXpVZmlTbXNfV3JpdGVTbXNUb0RiKCYKLWdfelVmaVNtc19EYlN0b3JlRGF0YVtnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8tKDB4ZWFmKzg3NS0weDEyMTkpXSwKLVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxLC0oMHgzZGQrNDYyNy0weDE1ZWYpKSl7Z196VWZpU21zX01zZ1JlZmVyKys7KHZvaWQpCisoMHgxNjY2KzExNTMtMHgxYWU2KSl7aWYoKDB4MTEwYis0NDgtMHgxMmNiKT09elVmaVNtc19Xcml0ZVNtc1RvRGIoJgorZ196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHgxM2YyKzMzMzEtMHgyMGY0KV0sCitXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4ZDBmKzMwMDEtMHgxOGM3KSkpe2dfelVmaVNtc19Nc2dSZWZlcisrOyh2b2lkKQogelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoZ196VWZpU21zX01zZ1JlZmVyKTt9fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDY3XHg3M1x4NTJceDczXHg3MFx4MjBceDczXHg2NVx4NjdceDRlXHg2Zlx4M2FceDI1XHg2NFx4MmZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NGVceDc1XHg2ZFx4M2FceDI1XHg2NFx4MmZceDQ2XHg2MVx4NjlceDZjXHg0ZVx4NzVceDZkXHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLGdfelVmaVNtc19DdXJDb25jYXRTZWdObyxnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW0sZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudCk7aWYKIChnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm89PWdfelVmaVNtc19Db25jYXRUb3RhbE51bSl7Z196VWZpU21zX0N1ckNvbmNhdFNlZ05vPQotKDB4MzFmKzMwMTAtMHhlZTEpO21lbXNldCgodm9pZCopJnRTdGF0dXNJbmZvLCgweDY4NCs1OTcyLTB4MWRkOCksc2l6ZW9mKAorKDB4M2E2KzY4NzAtMHgxZTdjKTttZW1zZXQoKHZvaWQqKSZ0U3RhdHVzSW5mbywoMHg5YisxMzcwLTB4NWY1KSxzaXplb2YoCiBUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3RTdGF0dXNJbmZvLmVycl9jb2RlPVpURV9TTVNfQ01TX05PTkU7dFN0YXR1c0luZm8uCiBzZW5kX2ZhaWxlZF9jb3VudD1nX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50O3RTdGF0dXNJbmZvLmRlbGV0ZV9mYWlsZWRfY291bnQ9Ci0oMHgxZGMrOTA0Ni0weDI1MzIpO2lmKGdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQ9PSgweDE2MWErNjE2LTB4MTg4MikpeworKDB4MTk5YSsyNjUwLTB4MjNmNCk7aWYoZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudD09KDB4MTQyMisyMzE3LTB4MWQyZikpewogdFN0YXR1c0luZm8uY21kX3N0YXR1cz1XTVNfQ01EX1NVQ0NFU1M7c2NfY2ZnX3NldChOVl9TTVNfU0VORF9SRVNVTFQsIlx4NmZceDZiIikKIDt9ZWxzZXt0U3RhdHVzSW5mby5jbWRfc3RhdHVzPVdNU19DTURfRkFJTEVEO3NjX2NmZ19zZXQoTlZfU01TX1NFTkRfUkVTVUxULAogIlx4NjZceDYxXHg2OVx4NmMiKTt9dFN0YXR1c0luZm8uY21kPVdNU19TTVNfQ01EX01TR19TRU5EOyh2b2lkKQogelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXNJbmZvKTtzY19jZmdfc2V0KE5WX1NNU19EQl9DSEFOR0UsIlx4MzEiKTsKIHpVZmlTbXNfQ2hlY2tNZW1vcnlGdWxsKFpURV9XTVNfTUVNT1JZX05WKTtpZihnX3pVZmlTbXNfTWVtRnVsbEZsYWdbCiBXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV0pe3pVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8oTVNHX1NNU19ERUZBVUxUKTt9fWVsc2V7fX0KLWludCB6dGVfZm90YV9ub3RpZnlQdXNoTXNnKGludCBjbWQpe0ZPVEFfTVNHX0JVRiBtc2c9eygweDExNWMrMjM1OS0weDFhOTMpfTtpbnQgCi1lcnJzPSgweDE2ZjkrMTc1LTB4MTdhOCk7a2V5X3QgcmVxX2lkPWZ0b2soCitpbnQgenRlX2ZvdGFfbm90aWZ5UHVzaE1zZyhpbnQgY21kKXtGT1RBX01TR19CVUYgbXNnPXsoMHg3NjErODMwLTB4YTlmKX07aW50IAorZXJycz0oMHgxODU3KzExMzktMHgxY2NhKTtrZXlfdCByZXFfaWQ9ZnRvaygKICJceDJmXHg2ZFx4NjVceDY0XHg2OVx4NjFceDJmXHg3YVx4NzRceDY1XHgyZlx4N2FceDc0XHg2NVx4NWZceDczXHg2Zlx4NjNceDZiXHg2NVx4NzRceDJmXHg2Nlx4NmZceDc0XHg2MVx4NWZceDY0XHg2ZFx4NjFceDcwXHg3MFx4NWZceDZkXHg3M1x4NjciCi0sKDB4MTA1NisyODEyLTB4MWI1MSkpO2ludCBtc2dpZD1tc2dnZXQocmVxX2lkLCgweDkwMSsxOTY0LTB4MTBhZCkpO2lmKG1zZ2lkIT0tCi0oMHg4YzArMzExMy0weDE0ZTgpKXttc2cubXR5cGU9KDB4OTcrNTQ0NS0weDE1ZGIpO21zZy5tdGV4dFsoMHg5N2MrNDc2Ny0weDFjMWIpXQorLCgweDE1NWIrNjY4LTB4MTdmNikpO2ludCBtc2dpZD1tc2dnZXQocmVxX2lkLCgweDIzODArNjcxLTB4MjYxZikpO2lmKG1zZ2lkIT0tCisoMHg2YWErMTM3Mi0weGMwNSkpe21zZy5tdHlwZT0oMHgxMjNmKzk5OC0weDE2MjQpO21zZy5tdGV4dFsoMHhlYTUrMzQ1MS0weDFjMjApXQogPVdFQlVJX05PVElGWV9QVVNIX01TR187ZXJycz1tc2dzbmQobXNnaWQsJm1zZyxzaXplb2YobXNnKS1zaXplb2YobG9uZyksCi0oMHhlZDgrMjk0NC0weDFhNTgpKTt9cmV0dXJuKGVycnM8KDB4Y2I0KzM1NjYtMHgxYWEyKT8oMHgxOTM4KzM0OTktMHgyNmUzKToKLSgweDEwNTQrMzU4LTB4MTFiOSkpO30KLSNpZiAoMHgyMjljKzIwNC0weDIzNjgpICAKKygweDE0MzQrMzU0LTB4MTU5NikpO31yZXR1cm4oZXJyczwoMHhjYzYrNDk5Mi0weDIwNDYpPygweDdiZiszNzI1LTB4MTY0Yyk6CisoMHg0MGYrMjYyNS0weGU0ZikpO30KKyNpZiAoMHgxYjkrMTQ3MC0weDc3NykgIAogaW50IGF0U21zX1NlbmRDbWdsUmVxKFBTVFIgcEF0Q21kUGFyYSxpbnQgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe3JldHVybiAKIHpTdnJfU2VuZEF0U3luKFpBVF9DTUdMX0NNRCwiXHg0MVx4NTRceDJiXHg0M1x4NGRceDQ3XHg0Y1x4M2RceDMwIiAiXHJcbiIsY2lkLAogcEF0UnN0LGF0UnN0U2l6ZSk7fVZPSUQgYXRTbXNfUmVjdkNtZ2xSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUpe3JldHVybjt9CiAjZW5kaWYgDQotI2lmICgweGExYys2Mi0weGE1YSkgCisjaWYgKDB4NTA1KzU4NDEtMHgxYmQ2KSAKIGludCBhdFNtc19TZW5kWm1nbFJlcShQU1RSIHBBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtpbnQgcmVzCi09KDB4Mzg3Kzg4NjYtMHgyNjI5KTtwdGhyZWFkX211dGV4X2xvY2soJnNtc2RiX211dGV4KTtyZXM9elN2cl9TZW5kQXRTeW4oCis9KDB4MTViMyszMzg5LTB4MjJmMCk7cHRocmVhZF9tdXRleF9sb2NrKCZzbXNkYl9tdXRleCk7cmVzPXpTdnJfU2VuZEF0U3luKAogWkFUX1pNR0xfQ01ELCJceDQxXHg1NFx4MmJceDVhXHg0ZFx4NDdceDRjXHgzZFx4MzQiICJcclxuIixjaWQscEF0UnN0LGF0UnN0U2l6ZSkKIDtwdGhyZWFkX211dGV4X3VubG9jaygmc21zZGJfbXV0ZXgpO3JldHVybiByZXM7fVZPSUQgYXRTbXNfaW5pdEF0T2soVk9JRCl7Ci1UX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsoMHg3NzMrNDI3Ni0weDE4MjcpfTtzY19jZmdfc2V0KE5WX1NNU19MT0FEX1JFU1VMVAorVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4NzhkKzQ2ODItMHgxOWQ3KX07c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQKICwiXHg2Zlx4NmIiKTt0U3RhdHVzLmNtZF9zdGF0dXM9V01TX0NNRF9TVUNDRVNTO3RTdGF0dXMuY21kPVdNU19TTVNfQ01EX0lOSVQ7KAogdm9pZCl6VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cyk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0xPQURFRCk7fQogaW50IGF0U21zX2luaXRBdEVycihVSU5UOCpwRXJyQ29kZSl7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17Ci0oMHgxNGM3Kzc1Ni0weDE3YmIpfTtzY19jZmdfc2V0KE5WX1NNU19MT0FEX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpOworKDB4MTNlMSsxOTUxLTB4MWI4MCl9O3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7CiB6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfTE9BREVEKTt0U3RhdHVzLmNtZF9zdGF0dXM9V01TX0NNRF9GQUlMRUQ7CiB0U3RhdHVzLmNtZD1XTVNfU01TX0NNRF9JTklUOyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U3RhdHVzKTtyZXR1cm4gRkFMU0U7fQogVk9JRCBhdFNtc19SZWN2Wm1nbFJzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7c3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsKLSgweDE1NWErNDg2LTB4MTc0MCl9O3ByaW50ZigKKygweDFkMzUrMjI1MC0weDI1ZmYpfTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NWFceDZkXHg2N1x4NmNceDUyXHg3M1x4NzBceDIwXHg0NVx4NmVceDc0XHg2NVx4NzJceDIwXHg3MFx4NjRceDc1XHg0Nlx4NmNceDYxXHg2N1x4M2FceDI1XHg2NFx4MmZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAscFJlc0xpbmUtPnBkdUZsYWcscFJlc0xpbmUtPnJlc3VsdCk7aWYocFJlc0xpbmUtPnBkdUZsYWc9PVpBVF9BVFJFU19QRFVfRkxBRyl7CiB6VWZpU21zX0NtZ2xSZXNwUHJvYyhwUmVzTGluZSwmdFNtc1BhcmEpO31lbHNle21lbXNldCgmdFNtc1BhcmEsCi0oMHgzYzgrNjY3OC0weDFkZGUpLHNpemVvZihUX3pVZmlTbXNfU21zSXRlbSkpOyh2b2lkKXpVZmlTbXNfRm9ybWF0U21zKHBSZXNMaW5lCi0tPnJlc1BhcmFzLHNpemVvZihwUmVzTGluZS0+cmVzUGFyYXMpLCZ0U21zUGFyYSwoMHg3OGYrNTU5Ny0weDFkNmIpKTtwcmludGYoCisoMHgxNzFiKzM2OTQtMHgyNTg5KSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTsodm9pZCl6VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZQorLT5yZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPnJlc1BhcmFzKSwmdFNtc1BhcmEsKDB4MTNiOSs0NTA0LTB4MjU1MCkpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDVhXHg2ZFx4NjdceDZjXHgyMFx4NTJceDY1XHg3M1x4NzBceDIxXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4MjVceDY0XHgyZlx4NzNceDc0XHg2MVx4NzRceDNhXHgyNVx4NjRceDJmXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHRTbXNQYXJhLmluZGV4LHRTbXNQYXJhLnN0YXQsdFNtc1BhcmEubGVuZ3RoKTt9fWludCBhdFNtc19TZW5kQ21nclJlcShQU1RSIAotcEF0Q21kUGFyYSxpbnQgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe0NIQVIgcEF0Y21kU3RyWygweGJmYSsxMDc4LTB4MTAxYykKLV09eygweDgzOSsxMDc5LTB4YzcwKX07aVNtc0luZGV4PWF0b2kocEF0Q21kUGFyYSk7cHJpbnRmKAorcEF0Q21kUGFyYSxpbnQgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe0NIQVIgcEF0Y21kU3RyWygweDRlYis2MTY3LTB4MWNlZSkKK109eygweDJlOSs0MTYzLTB4MTMyYyl9O2lTbXNJbmRleD1hdG9pKHBBdENtZFBhcmEpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmRceDY3XHg3Mlx4NTJceDY1XHg3MVx4MjBceDQ3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsaVNtc0luZGV4KTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCiAiXHg0MVx4NTRceDJiXHg0M1x4NGRceDQ3XHg1Mlx4M2RceDI1XHg3MyIgIlxyXG4iLHBBdENtZFBhcmEpO3JldHVybiAKIHpTdnJfU2VuZEF0U3luKFpBVF9DTUdSX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAogYXRTbXNfUmVjdkNtZ3JSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUpewotI2lmICgweGFmMSsxMzkyLTB4MTA2MSkNCi1zdGF0aWMgVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweDE1YTQrMzc0Mi0weDI0NDIpfTtUX3pVZmlTbXNfQ21nclNldFJzcCAKLXRDbWdyUnNwPXsoMHg0OWIrODUwNC0weDI1ZDMpfTtwcmludGYoCisjaWYgKDB4MzZjKzM0MC0weDRjMCkNCitzdGF0aWMgVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweDExN2YrMzYyNy0weDFmYWEpfTtUX3pVZmlTbXNfQ21nclNldFJzcCAKK3RDbWdyUnNwPXsoMHg3NDYrMjk0Mi0weDEyYzQpfTtwcmludGYoCiAiXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg2N1x4NzJceDUyXHg3M1x4NzBceDIwXHg0NVx4NmVceDc0XHg2NVx4NzJceDIwXHg3MFx4NjRceDc1XHg0Nlx4NmNceDYxXHg2N1x4M2FceDI1XHg2NFx4MmZceDUwXHg2MVx4NzJceDYxXHg3M1x4M2FceDI1XHg3M1x4MmZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAscFJlc0xpbmUtPnBkdUZsYWcscFJlc0xpbmUtPnJlc1BhcmFzLHBSZXNMaW5lLT5yZXN1bHQpO2lmKHBSZXNMaW5lLT5wZHVGbGFnPT0KIFpBVF9BVFJFU19QRFVfRkxBRyl7aWYoWkFUX1JFU1VMVF9BVVRPUkVQT1JUIT1wUmVzTGluZS0+cmVzdWx0KXtwcmludGYoCkBAIC00MzcsMTQgKzQzNiwxNCBAQAogLnN0YXQ9dFNtc1BhcmEuc3RhdDtzc2NhbmYocFJlc0xpbmUtPnJlc1BhcmFzLCJceDI1XHgzNVx4MzBceDMwXHg3MyIsdENtZ3JSc3AuCiBwZHUpO3pVZmlTbXNfQ21nclJlc3BQcm9jKCZ0Q21nclJzcCk7elVmaU1taV9TZW5kU21zU3RhdHVzKCk7c2NfY2ZnX3NldCgKICJceDczXHg2ZFx4NzNceDVmXHg3Mlx4NjVceDYzXHg3Nlx4NWZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzQiLCJceDZmXHg2YiIpO31lbHNlCi17bWVtc2V0KCZ0U21zUGFyYSwoMHhkNTcrMTY1OS0weDEzZDIpLHNpemVvZihUX3pVZmlTbXNfU21zSXRlbSkpOyh2b2lkKQotelVmaVNtc19Gb3JtYXRTbXMocFJlc0xpbmUtPnJlc1BhcmFzLCZ0U21zUGFyYSwoMHhjZjkrMzQ4NS0weDFhOTQpKTt0U21zUGFyYS4KK3ttZW1zZXQoJnRTbXNQYXJhLCgweDEwMGErNDM3Ni0weDIxMjIpLHNpemVvZihUX3pVZmlTbXNfU21zSXRlbSkpOyh2b2lkKQorelVmaVNtc19Gb3JtYXRTbXMocFJlc0xpbmUtPnJlc1BhcmFzLCZ0U21zUGFyYSwoMHgxYzlkKzE2NjItMHgyMzE5KSk7dFNtc1BhcmEuCiBpbmRleD1pU21zSW5kZXg7cHJpbnRmKAogIlx4M2RceDNkXHgzZFx4M2RceDNkXHgzZFx4NDNceDZkXHg2N1x4NzJceDIwXHg1Mlx4NjVceDczXHg3MFx4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsdFNtc1BhcmEuaW5kZXgsdFNtc1BhcmEuc3RhdCx0U21zUGFyYS5sZW5ndGgpO30KICNlbmRpZg0KIH1pbnQgYXRTbXNfU2VuZFptZ3JSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7Q0hBUiAKLXBBdGNtZFN0clsoMHhjYTErMzgyNC0weDFiN2QpXT17KDB4MjI2KzY2MC0weDRiYSl9O2lTbXNJbmRleD1hdG9pKHBBdENtZFBhcmEpOworcEF0Y21kU3RyWygweDRlOCs3ODc1LTB4MjM5NyldPXsoMHgyMzIxKzUwNi0weDI1MWIpfTtpU21zSW5kZXg9YXRvaShwQXRDbWRQYXJhKTsKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg1YVx4NmRceDY3XHg3Mlx4NTJceDY1XHg3MVx4MjBceDQ3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsaVNtc0luZGV4KTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCkBAIC00NTcsOCArNDU2LDggQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NmRceDY3XHg3Mlx4NDVceDcyXHg3Mlx4MjBceDIwXHg1M1x4NGRceDUzXHgyMFx4N2FceDZkXHg2N1x4NzJceDIwXHg2OVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2YyIgIlxuIgogKTt7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKIFNNU19TVEFURV9SRUNWRUQpO319Vk9JRCBhdFNtc19SZWN2Wm1nclJzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7c3RhdGljIAotVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweDIyMTgrMTIxNi0weDI2ZDgpfTtUX3pVZmlTbXNfQ21nclNldFJzcCB0Q21nclJzcD0KLXsoMHgzNjErNDQyNi0weDE0YWIpfTtwcmludGYoCitUX3pVZmlTbXNfU21zSXRlbSB0U21zUGFyYT17KDB4MTBhKzI2MDMtMHhiMzUpfTtUX3pVZmlTbXNfQ21nclNldFJzcCB0Q21nclJzcD17CisoMHgxYTMrNDExMy0weDExYjQpfTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NWFceDZkXHg2N1x4NzJceDUyXHg3M1x4NzBceDIwXHg0NVx4NmVceDc0XHg2NVx4NzJceDIwXHg3MFx4NjRceDc1XHg0Nlx4NmNceDYxXHg2N1x4M2FceDI1XHg2NFx4MmZceDUwXHg2MVx4NzJceDYxXHg3M1x4M2FceDI1XHg3M1x4MmZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAscFJlc0xpbmUtPnBkdUZsYWcscFJlc0xpbmUtPnJlc1BhcmFzLHBSZXNMaW5lLT5yZXN1bHQpO2lmKHBSZXNMaW5lLT5wZHVGbGFnPT0KIFpBVF9BVFJFU19QRFVfRkxBRyl7aWYoWkFUX1JFU1VMVF9BVVRPUkVQT1JUIT1wUmVzTGluZS0+cmVzdWx0KXtwcmludGYoCkBAIC00NjYsNTYgKzQ2NSw1NiBAQAogKTtyZXR1cm47fXRDbWdyUnNwLmluZGV4PXRTbXNQYXJhLmluZGV4O3RDbWdyUnNwLmxlbmd0aD10U21zUGFyYS5sZW5ndGg7dENtZ3JSc3AKIC5zdGF0PXRTbXNQYXJhLnN0YXQ7c3NjYW5mKHBSZXNMaW5lLT5yZXNQYXJhcywiXHgyNVx4MzVceDMwXHgzMFx4NzMiLHRDbWdyUnNwLgogcGR1KTt6VWZpU21zX1ptZ3JSZXNwUHJvYygmdENtZ3JSc3ApO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3NjX2NmZ19zZXQoCi1OVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fWVsc2V7bWVtc2V0KCZ0U21zUGFyYSwoMHg0MysxMjE1LTB4NTAyKSxzaXplb2YoCi1UX3pVZmlTbXNfU21zSXRlbSkpOyh2b2lkKXpVZmlTbXNfRm9ybWF0U21zKHBSZXNMaW5lLT5yZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPgotcmVzUGFyYXMpLCZ0U21zUGFyYSwoMHgxNDUyKzI2MzAtMHgxZTk2KSk7dFNtc1BhcmEuaW5kZXg9aVNtc0luZGV4O3ByaW50ZigKK05WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9ZWxzZXttZW1zZXQoJnRTbXNQYXJhLCgweDNmYys3NjE2LTB4MjFiYyksc2l6ZW9mCisoVF96VWZpU21zX1Ntc0l0ZW0pKTsodm9pZCl6VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZS0+cmVzUGFyYXMsc2l6ZW9mKHBSZXNMaW5lCistPnJlc1BhcmFzKSwmdFNtc1BhcmEsKDB4MmM2KzM5MzEtMHgxMjFmKSk7dFNtc1BhcmEuaW5kZXg9aVNtc0luZGV4O3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDVhXHg2ZFx4NjdceDcyXHgyMFx4NTJceDY1XHg3M1x4NzBceDIxXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4MjVceDY0XHgyZlx4NzNceDc0XHg2MVx4NzRceDNhXHgyNVx4NjRceDJmXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHRTbXNQYXJhLmluZGV4LHRTbXNQYXJhLnN0YXQsdFNtc1BhcmEubGVuZ3RoKTt9fWludCBhdFNtc19TZW5kQ21nZFJlcShQU1RSIAotcEF0Q21kUGFyYSxpbnQgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe0NIQVIgcEF0Y21kU3RyWygweDUzMys1MzkzLTB4MWEzMCkKLV09eygweDY0YysyODI3LTB4MTE1Nyl9O3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKK3BBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtDSEFSIHBBdGNtZFN0clsoMHgxNmYrODQ4OC0weDIyODMpCitdPXsoMHg2NzUrMzQ0OS0weDEzZWUpfTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCiAiXHg0MVx4NTRceDJiXHg0M1x4NGRceDQ3XHg0NFx4M2RceDI1XHg3MyIgIlxyXG4iLHBBdENtZFBhcmEpO3JldHVybiAKIHpTdnJfU2VuZEF0U3luKFpBVF9DTUdEX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAotYXRTbXNfUmVjdkNtZ2RPayhWT0lEKXtDSEFSIHN0clVzZWRbKDB4Y2VkKzQ3ODctMHgxZjk2KV09eygweGEwMisxNjM4LTB4MTA2OCl9OwotaW50IHVzZWQ9KDB4MzdmKzQxNTgtMHgxM2JkKTtzY19jZmdfc2V0KE5WX1NNU19ERUxfUkVTVUxULCJceDZmXHg2YiIpO3ByaW50ZigKK2F0U21zX1JlY3ZDbWdkT2soVk9JRCl7Q0hBUiBzdHJVc2VkWygweGMrNjc4MS0weDFhN2YpXT17KDB4MTNmYSszMTkyLTB4MjA3Mil9OworaW50IHVzZWQ9KDB4ODg0KzEzMTYtMHhkYTgpO3NjX2NmZ19zZXQoTlZfU01TX0RFTF9SRVNVTFQsIlx4NmZceDZiIik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg3NFx4MjBceDczXHg2OVx4NmRceDVmXHg2NFx4NjVceDZjXHg1Zlx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4MjBceDc0XHg2Zlx4MjBceDRmXHg0Ylx4MmVceDIwIiAiXG4iCiApO3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9VU0VELHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpKTt1c2VkPWF0b2koCi1zdHJVc2VkKS0oMHg0MTcrNTExMy0weDE4MGYpO2lmKHVzZWQ8KDB4MzcrNjMxOS0weDE4ZTYpKXt1c2VkPSgweDRlNisyMDMyLTB4Y2Q2KQotO31tZW1zZXQoJnN0clVzZWQsKDB4MzQ0KzI5OTAtMHhlZjIpLCgweDE0MTcrMjE1Ny0weDFjN2EpKTtzbnByaW50ZihzdHJVc2VkLAotc2l6ZW9mKHN0clVzZWQpLCJceDI1XHg2NCIsdXNlZCk7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsCi1zdHJVc2VkKTt9Vk9JRCBhdFNtc19SZWN2Q21nZEVycihWT0lEKXtzY19jZmdfc2V0KE5WX1NNU19ERUxfUkVTVUxULAotIlx4NjZceDYxXHg2OVx4NmMiKTtwcmludGYoCitzdHJVc2VkKS0oMHgyNDVkKzEzNS0weDI0ZTMpO2lmKHVzZWQ8KDB4YTY1KzY0NTQtMHgyMzliKSl7dXNlZD0KKygweDE0NTYrNDU2My0weDI2MjkpO31tZW1zZXQoJnN0clVzZWQsKDB4NmQ1KzU3MDItMHgxZDFiKSwoMHhjMmQrMTYzNy0weDEyODgpKTsKK3NucHJpbnRmKHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpLCJceDI1XHg2NCIsdXNlZCk7c2NfY2ZnX3NldCgKK1pURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkKTt9Vk9JRCBhdFNtc19SZWN2Q21nZEVycihWT0lEKXtzY19jZmdfc2V0CisoTlZfU01TX0RFTF9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzNceDY5XHg2ZFx4NWZceDY0XHg2NVx4NmNceDVmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NzRceDZmXHgyMFx4NjZceDYxXHg2OVx4NmNceDJlXHgyMCIgIlxuIgotKTt9Vk9JRCBhdFNtc19SZWN2Q21nZEZpbmlzaChWT0lEKXtjaGFyIFN0clZhbHVlWygweDE1ODArNTIzLTB4MTc4MSldPXsKLSgweDExNDcrNDkxNS0weDI0N2EpfTtDSEFSIHN0clRvdGFsWygweGIxOSs1MzUtMHhkMjYpXT17KDB4NmI5KzYyNzgtMHgxZjNmKX07Ci1DSEFSIHN0clVzZWRbKDB4OGZkKzU0MDctMHgxZTEyKV09eygweDZiMSs1ODk5LTB4MWRiYyl9O2ludCB0b3RhbD0KLSgweDk3ZisyOTc4LTB4MTUyMSk7aW50IHVzZWQ9KDB4MThiKzY5NDYtMHgxY2FkKTtpbnQgcmVtYWluPSgweDE1NDgrNDAyMy0weDI0ZmYpCi07c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3VzZWQ9YXRvaSgKKyk7fVZPSUQgYXRTbXNfUmVjdkNtZ2RGaW5pc2goVk9JRCl7Y2hhciBTdHJWYWx1ZVsoMHg3YjQrNjkwOS0weDIyYTcpXT17CisoMHgxOTlhKzEwOS0weDFhMDcpfTtDSEFSIHN0clRvdGFsWygweDMyZis2OTc1LTB4MWU2NCldPXsoMHgxN2Q3KzIxMzgtMHgyMDMxKX07CitDSEFSIHN0clVzZWRbKDB4ZDU5KzQ4MDAtMHgyMDBmKV09eygweDE1MzQrNjkyLTB4MTdlOCl9O2ludCB0b3RhbD0KKygweDE5OCs4Njc1LTB4MjM3Yik7aW50IHVzZWQ9KDB4MTk5YisyMS0weDE5YjApO2ludCByZW1haW49KDB4MTJiNSszMTE3LTB4MWVlMik7CitzY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkLHNpemVvZihzdHJVc2VkKSk7dXNlZD1hdG9pKAogc3RyVXNlZCk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1RPVEFMLHN0clRvdGFsLHNpemVvZihzdHJUb3RhbCkpOwotdG90YWw9YXRvaShzdHJUb3RhbCk7cmVtYWluPXRvdGFsLXVzZWQ7aWYocmVtYWluPCgweGE2OSs2Njg4LTB4MjQ4OSkpe3JlbWFpbj0KLSgweDlkZCsyMzY1LTB4MTMxYSk7fW1lbXNldCgmU3RyVmFsdWUsKDB4YjhjKzI4My0weGNhNyksKDB4NzQ5KzgxNi0weGE2ZikpOwordG90YWw9YXRvaShzdHJUb3RhbCk7cmVtYWluPXRvdGFsLXVzZWQ7aWYocmVtYWluPCgweDgzZis3Njc3LTB4MjYzYykpe3JlbWFpbj0KKygweDZhNCszMjYwLTB4MTM2MCk7fW1lbXNldCgmU3RyVmFsdWUsKDB4NjIwKzc1MTQtMHgyMzdhKSwoMHgyY2YrMjY5My0weGQ0YSkpOwogc25wcmludGYoU3RyVmFsdWUsc2l6ZW9mKFN0clZhbHVlKSwiXHgyNVx4NjQiLHJlbWFpbik7c2NfY2ZnX3NldCgKIFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfUkVNQUlOLFN0clZhbHVlKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2OVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3NVx4NzNceDY1XHg2NFx4M2RceDI1XHg2NFx4MmNceDcyXHg2NVx4NmRceDYxXHg2OVx4NmVceDNkXHgyNVx4NjRceDJjXHg3NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyNVx4NjQiICJcbiIKICx1c2VkLHJlbWFpbix0b3RhbCk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0RFTEVEKTtzY19jZmdfc2V0KAogTlZfU01TX0RCX0NIQU5HRSwiXHgzMSIpO31pbnQgYXRTbXNfU2VuZENtZ3NSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiAKLXBBdFJzdCxpbnQgYXRSc3RTaXplKXtpbnQgYXRSZXM9KDB4NDNkKzgyNzEtMHgyNDhjKTtDSEFSIHBBdGNtZFN0cltaU01TX1BEVV9TSVpFCi1dPXsoMHgxOTcrNjYzOC0weDFiODUpfTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCitwQXRSc3QsaW50IGF0UnN0U2l6ZSl7aW50IGF0UmVzPSgweDIwNys2NzQzLTB4MWM1ZSk7Q0hBUiBwQXRjbWRTdHJbWlNNU19QRFVfU0laRQorXT17KDB4MThiMisyODU3LTB4MjNkYil9O3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKICJceDQxXHg1NFx4MmJceDQzXHg0ZFx4NDdceDUzXHgzZFx4MjVceDY0IiAiXHJcbiIsZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5sZW5ndGgpCiA7YXRSZXM9elN2cl9TZW5kQXRTeW4oWkFUX0NNR1NfQ01ELHBBdGNtZFN0cixjaWQscEF0UnN0LGF0UnN0U2l6ZSk7aWYoYXRSZXMhPQotWkFUX1JFU1VMVF9TTVMpe3JldHVybiBhdFJlczt9bWVtc2V0KHBBdGNtZFN0ciwoMHg3M2QrNzIzNS0weDIzODApLFpTTVNfUERVX1NJWkUKLSk7aWYoc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTxaU01TX1BEVV9TSVpFLSgweDEyNTgrNDQ4OC0weDIzZGYpKXsKLW1lbWNweShwQXRjbWRTdHIsZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUsc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KSk7Ci19ZWxzZXtwcmludGYoCitaQVRfUkVTVUxUX1NNUyl7cmV0dXJuIGF0UmVzO31tZW1zZXQocEF0Y21kU3RyLCgweDFiNTIrMjEzNi0weDIzYWEpLAorWlNNU19QRFVfU0laRSk7aWYoc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTxaU01TX1BEVV9TSVpFLQorKDB4NzM4KzUyMTItMHgxYjkzKSl7bWVtY3B5KHBBdGNtZFN0cixnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSxzdHJsZW4oCitnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSkpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmRceDY3XHg3M1x4NTJceDY1XHg3MVx4MjBceDcwXHg2NFx4NzVceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDZmXHg2ZVx4NjdceDNhXHgyNVx4NzMiICJcbiIKICxnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk7bWVtY3B5KHBBdGNtZFN0cixnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSwKLVpTTVNfUERVX1NJWkUtKDB4MTM5NisyMjU4LTB4MWM2NikpO30qKHBBdGNtZFN0citzdHJsZW4oZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi4KLXBkdSkpPVpTTVNfQ1RSTF9aX0NIQVI7bWVtc2V0KHBBdFJzdCwoMHhhNzcrMjc0MC0weDE1MmIpLGF0UnN0U2l6ZSk7cmV0dXJuIAorWlNNU19QRFVfU0laRS0oMHhmYmQrNTMwOS0weDI0NzgpKTt9KihwQXRjbWRTdHIrc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYuCitwZHUpKT1aU01TX0NUUkxfWl9DSEFSO21lbXNldChwQXRSc3QsKDB4ZDI0KzM3NDYtMHgxYmM2KSxhdFJzdFNpemUpO3JldHVybiAKIHpTdnJfU2VuZEF0U3luKFpBVF9DTUdTX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAogYXRTbXNfUmVjdkNtZ3NPayhVSU5UOCpwUmVzTGluZSxpbnQgY2lkKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg3M1x4NmRceDczXHgyMFx4NzNceDY1XHg2ZVx4NjRceDY1XHg2NFx4MjBceDczXHg3NVx4NjNceDYzXHg2NVx4NzNceDczXHgyZVx4MjAiICJcbiIKICk7Z196VWZpU21zX0N1ckNvbmNhdFNlZ05vKys7aWYoZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vPgogWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCl7cmV0dXJuO31nX3pVZmlTbXNfRGJTdG9yZURhdGFbCi1nX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8tKDB4MzIxKzc4NTQtMHgyMWNlKV0udGFnPVdNU19UQUdfVFlQRV9NT19TRU5UX1YwMTsKK2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHhiYmErMjAyOC0weDEzYTUpXS50YWc9V01TX1RBR19UWVBFX01PX1NFTlRfVjAxOwogelVmaVNtc19DbWdzUmVzcFByb2MoY2lkKTt9Vk9JRCBhdFNtc19SZWN2Q21nc0VycihVSU5UOCpwUmVzTGluZSxpbnQgY2lkKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDczXHg2ZFx4NzNceDIwXHg3M1x4NjVceDZlXHg2NFx4NjVceDY0XHgyMFx4NjZceDYxXHg2OVx4NmNceDJlXHgyMCIgIlxuIik7CkBAIC01MjMsMTYgKzUyMiwxNiBAQAogWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCl7cmV0dXJuO31nX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg3M1x4NjVceDZlXHg2NFx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyY1x4NzNceDZmXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NzNceDZkXHg3M1x4MjBceDc0XHg2Zlx4MjBceDY0XHg3Mlx4NjFceDY2XHg3NFx4NjJceDZmXHg3OFx4MmUiICJcbiIKLSk7Z196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHg4MDErMjUyNi0weDExZGUpXS50YWc9Ci1XTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHgyN2QrOTc4LTB4NjRlKSl7CispO2dfelVmaVNtc19EYlN0b3JlRGF0YVtnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8tKDB4MTQwNysyMDgyLTB4MWMyOCldLnRhZz0KK1dNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE7aWYoZ196VWZpU21zX0NvbmNhdFRvdGFsTnVtPigweDFhODgrMjQxMy0weDIzZjQpKXsKIGdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM9RkFMU0U7fXpVZmlTbXNfQ21nc1Jlc3BQcm9jKGNpZCk7fVZPSUQgCiBhdFNtc19SZWN2Q21nc1JzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7cmV0dXJuO31WT0lEIGF0U21zX1JlY3ZDbXRSc3AoCi1UX3pBdF9BdFJlcypwUmVzTGluZSl7Q0hBUiBuZWVkU01TWygweDE1YzUrMjk1MS0weDIxMWEpXT17KDB4MTIyMCsyNzU2LTB4MWNlNCl9Owotc2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgyMzQzKzY2NS0weDI1ZGMpPT0KK1RfekF0X0F0UmVzKnBSZXNMaW5lKXtDSEFSIG5lZWRTTVNbKDB4YjM5KzUyNTItMHgxZjhiKV09eygweDExNjMrMTYzOC0weDE3YzkpfTsKK3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4YWUxKzE3Ny0weGI5Mik9PQogc3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCi0pO3JldHVybjt9c3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHg5NzArNjI3My0weDIxZjEpfTsKLVRfelVmaVNtc19DbXRTZXRSc3AgdENtdFJzcD17KDB4MjAyMCs1NzQtMHgyMjVlKX07aWYoTlVMTD09cFJlc0xpbmUpe3JldHVybjt9CispO3JldHVybjt9c3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHg0ZGYrMjc1LTB4NWYyKX07CitUX3pVZmlTbXNfQ210U2V0UnNwIHRDbXRSc3A9eygweDU2MCs5OTItMHg5NDApfTtpZihOVUxMPT1wUmVzTGluZSl7cmV0dXJuO30KIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg1Mlx4NzNceDcwXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4NzBceDY0XHg3NVx4NDZceDZjXHg2MVx4NjdceDNhXHgyNVx4NjRceDJmXHg1MFx4NjFceDcyXHg2MVx4NzNceDNhXHgyNVx4NzNceDJmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHBSZXNMaW5lLT5wZHVGbGFnLHBSZXNMaW5lLT5yZXNQYXJhcyxwUmVzTGluZS0+cmVzdWx0KTtpZihwUmVzTGluZS0+cGR1RmxhZz09CkBAIC01NDIsNDAgKzU0MSw0MCBAQAogIlx4MjVceDM1XHgzMFx4MzBceDczIix0Q210UnNwLnBkdSk7cHRocmVhZF9tdXRleF9sb2NrKCZzbXNkYl9tdXRleCk7CiB6VWZpU21zX0NtdFJlc3BQcm9jKCZ0Q210UnNwKTt6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTtwdGhyZWFkX211dGV4X3VubG9jaygmCiBzbXNkYl9tdXRleCk7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fWVsc2V7bWVtc2V0KCZ0U21zUGFyYSwKLSgweDM2Mys0NTgtMHg1MmQpLHNpemVvZihUX3pVZmlTbXNfU21zSXRlbSkpO2F0QmFzZV9QcmVQcm9jUmVzKHBSZXNMaW5lLT4KKygweDllOSs2OTMyLTB4MjRmZCksc2l6ZW9mKFRfelVmaVNtc19TbXNJdGVtKSk7YXRCYXNlX1ByZVByb2NSZXMocFJlc0xpbmUtPgogcmVzUGFyYXMsc2l6ZW9mKHBSZXNMaW5lLT5yZXNQYXJhcykpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYzXHg2ZFx4NzRceDIwXHg2OVx4NmVceDY0XHgyMVx4MjBceDcwXHg1Mlx4NjVceDczXHg0Y1x4NjlceDZlXHg2NVx4MmRceDNlXHg3Mlx4NjVceDczXHg1MFx4NjFceDcyXHg2MVx4NzNceDNhXHgyNVx4NzNceDJlIiAiXG4iCiAscFJlc0xpbmUtPnJlc1BhcmFzKTtzc2NhbmYocFJlc0xpbmUtPnJlc1BhcmFzLCJceDI1XHg3M1x4MjBceDI1XHg2NCIsdFNtc1BhcmEuCiBhbHBoYSwmdFNtc1BhcmEubGVuZ3RoKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2M1x4NmRceDc0XHgyMFx4NjlceDZlXHg2NFx4MjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHRTbXNQYXJhLmxlbmd0aCk7fX1WT0lEIGF0U21zX1JlY3ZDbXRpUnNwKFRfekF0X0F0UmVzKnBSZXNMaW5lKXtDSEFSIG5lZWRTTVNbCi0oMHgxM2ErNjQ4MC0weDFhNTgpXT17KDB4MjBkOSs4NDQtMHgyNDI1KX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLAotbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDgxKzg1MzEtMHgyMWQ0KT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworKDB4NDM3KzU2MzEtMHgxYTA0KV09eygweGUxYisyMDU2LTB4MTYyMyl9O3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1NNUywKK25lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHg4NDkrNTE2Ny0weDFjNzgpPT1zdHJjbXAobmVlZFNNUywiXHg2ZVx4NmYiKSl7CiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDY1XHg2NVx4NjRceDUzXHg0ZFx4NTNceDNkXHg2ZVx4NmZceDIxIgotKTtyZXR1cm47fWNoYXIgc21zX01haW5fc3RhdGVbKDB4YWQzKzQ1NzMtMHgxYzkyKV09eygweGRhYysxNTU5LTB4MTNjMyl9O2NoYXIqCispO3JldHVybjt9Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHhhMTkrMTk3MS0weDExYWUpXT17KDB4MjRkZCsxNjctMHgyNTg0KX07Y2hhcioKIG1lbW9yeT1OVUxMO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO2lmKE5VTEw9PXBSZXNMaW5lKXtyZXR1cm47fWlmKFpBVF9DTVRJX0NNRCE9cFJlc0xpbmUtPgogYXRDbWRJZCl7cmV0dXJuO31zY19jZmdfZ2V0KE5WX1NNU19TVEFURSxzbXNfTWFpbl9zdGF0ZSxzaXplb2Yoc21zX01haW5fc3RhdGUpKTsKIGlmKHN0cmNtcChzbXNfTWFpbl9zdGF0ZSwiXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIpPT0KLSgweDFlZTYrNTU5LTB4MjExNSkpe3ByaW50ZigKKygweDExMzcrMzIzNy0weDFkZGMpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NjlceDUyXHg3M1x4NzBceDNhXHgyMFx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciICJcbiIKICk7cmV0dXJuO31tZW1vcnk9c3Ryc3RyKHBSZXNMaW5lLT5yZXNQYXJhcywiXCIiKTtpZihOVUxMIT1tZW1vcnkpe21lbW9yeSsrO31pZigKLSgweGI5OSsyOTAyLTB4MTZlZik9PXN0cm5jbXAoIlx4NTNceDRkIixtZW1vcnksKDB4OGE0KzU5MTUtMHgxZmJkKSkpeworKDB4MzMyKzI0MzYtMHhjYjYpPT1zdHJuY21wKCJceDUzXHg0ZCIsbWVtb3J5LCgweDFlOCsxOTUxLTB4OTg1KSkpewogelVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKLVNNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweDhjYSs4MDEtMHhiZTcpO3ByaW50ZigKK1NNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweDgzMSs0NzgzLTB4MWFkYyk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg2ZVx4NjRceDIwXHg2M1x4NmRceDY3XHg3Mlx4M2FceDIwXHgyNVx4NzMiICJcbiIKICxtZW1vcnkpO3pTdnJfSW5uZXJTZW5kTXNnKFpVRklfTU9EVUxFX0lEX0FUX0xPQ0FMLFpVRklfTU9EVUxFX0lEX0FUX1VOU09MSSwKIE1TR19DTURfQVRfWk1HUixzdHJsZW4obWVtb3J5KSxtZW1vcnkpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4MjBceDNhXHg3M1x4NzRceDZmXHg3Mlx4NjVceDIwXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NTNceDRkXHgyZSIgIlxuIgogKTt9c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIiIpO31WT0lEIGF0U21zX1JlY3ZDZHNSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUKLSl7Q0hBUiBuZWVkU01TWygweDE3YjIrMjY0OC0weDIxZDgpXT17KDB4ZWIzKzYwOTEtMHgyNjdlKX07c2NfY2ZnX2dldCgKLU5WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDIzZjQrNzMwLTB4MjZjZSk9PXN0cmNtcCgKKyl7Q0hBUiBuZWVkU01TWygweDFlNSs2OTgxLTB4MWNmOCldPXsoMHgxZWY3KzEwNTItMHgyMzEzKX07c2NfY2ZnX2dldCgKK05WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDU1Yys3OTI5LTB4MjQ1NSk9PXN0cmNtcCgKIG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCi0pO3JldHVybjt9c3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHhhMzErNDg0NS0weDFkMWUpfTsKLVRfelVmaVNtc19DbWdyU2V0UnNwIHRDbWdyUnNwPXsoMHg0YWIrNDAzOS0weDE0NzIpfTtpZihOVUxMPT1wUmVzTGluZSl7cmV0dXJuO30KKyk7cmV0dXJuO31zdGF0aWMgVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweGFhYysxOTkzLTB4MTI3NSl9OworVF96VWZpU21zX0NtZ3JTZXRSc3AgdENtZ3JSc3A9eygweDExNWYrMjMxOC0weDFhNmQpfTtpZihOVUxMPT1wUmVzTGluZSl7cmV0dXJuO30KIGlmKHBSZXNMaW5lLT5wZHVGbGFnPT1aQVRfQVRSRVNfUERVX0ZMQUcpe2lmKFpBVF9SRVNVTFRfQVVUT1JFUE9SVCE9cFJlc0xpbmUtPgogcmVzdWx0KXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDY0XHg3M1x4NTJceDczXHg3MFx4MjBceDY3XHg2NVx4NzRceDIwXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NDVceDcyXHg3Mlx4NmZceDcyXHgyZSIgIlxuIgpAQCAtNTgzLDc5ICs1ODIsNzkgQEAKICJceDI1XHgzNVx4MzBceDMwXHg3MyIsdENtZ3JSc3AucGR1KTtwdGhyZWFkX211dGV4X2xvY2soJnNtc2RiX211dGV4KTsKIHpVZmlTbXNfQ2RzUmVzcFByb2MoJnRDbWdyUnNwKTt6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTtwdGhyZWFkX211dGV4X3VubG9jaygmCiBzbXNkYl9tdXRleCk7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fWVsc2V7bWVtc2V0KCZ0U21zUGFyYSwKLSgweGQ0KzczOTEtMHgxZGIzKSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTthdEJhc2VfUHJlUHJvY1JlcyhwUmVzTGluZS0+CisoMHg3MzIrNjE0LTB4OTk4KSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTthdEJhc2VfUHJlUHJvY1JlcyhwUmVzTGluZS0+CiByZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPnJlc1BhcmFzKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjNceDY0XHg3M1x4MjBceDY5XHg2ZVx4NjRceDIxXHgyMFx4NzBceDUyXHg2NVx4NzNceDRjXHg2OVx4NmVceDY1XHgyZFx4M2VceDcyXHg2NVx4NzNceDUwXHg2MVx4NzJceDYxXHg3M1x4M2FceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO3NzY2FuZihwUmVzTGluZS0+cmVzUGFyYXMsIlx4MjVceDczXHgyMFx4MjVceDY0Iix0U21zUGFyYS4KIGFscGhhLCZ0U21zUGFyYS5sZW5ndGgpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg1Mlx4NzNceDcwXHgyMFx4NjNceDY0XHg3M1x4MjBceDY5XHg2ZVx4NjRceDIxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICx0U21zUGFyYS5sZW5ndGgpO319Vk9JRCBhdFNtc19SZWN2Q2RzaVJzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7Q0hBUiBuZWVkU01TWwotKDB4MTY4OCsxNzY4LTB4MWQzZSldPXsoMHhiZDUrMTgzOC0weDEzMDMpfTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsCi1uZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4ZWRjKzQ0ODktMHgyMDY1KT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworKDB4MTY2MysyNDQxLTB4MWZiYSldPXsoMHgzMzgrNTYzNS0weDE5M2IpfTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsCituZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4YmJkKzQ2MTgtMHgxZGM3KT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpewogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDZlXHg2NVx4NjVceDY0XHg1M1x4NGRceDUzXHgzZFx4NmVceDZmXHgyMSIKLSk7cmV0dXJuO31jaGFyIHNtc19NYWluX3N0YXRlWygweDFjZCs4MzA5LTB4MjIyNCldPXsoMHg3MWErMTY4Ny0weGRiMSl9O2NoYXIqCispO3JldHVybjt9Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHhiZTArNDIwNi0weDFjMzApXT17KDB4NGNkKzg3NjEtMHgyNzA2KX07Y2hhcioKIG1lbW9yeT1OVUxMO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg2OVx4NTJceDczXHg3MFx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO2lmKE5VTEw9PXBSZXNMaW5lKXtyZXR1cm47fWlmKFpBVF9DRFNJX0NNRCE9cFJlc0xpbmUtPgogYXRDbWRJZCl7cmV0dXJuO31zY19jZmdfZ2V0KE5WX1NNU19TVEFURSxzbXNfTWFpbl9zdGF0ZSxzaXplb2Yoc21zX01haW5fc3RhdGUpKTsKIGlmKHN0cmNtcChzbXNfTWFpbl9zdGF0ZSwiXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIpPT0KLSgweDI5MCs2ODQ1LTB4MWQ0ZCkpe3ByaW50ZigKKygweGM4MisxMjg3LTB4MTE4OSkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg2OVx4NTJceDczXHg3MFx4M2FceDIwXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIgIlxuIgogKTtyZXR1cm47fW1lbW9yeT1zdHJzdHIocFJlc0xpbmUtPnJlc1BhcmFzLCJcIiIpO2lmKE5VTEwhPW1lbW9yeSl7bWVtb3J5Kys7fQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2NFx4NzNceDY5XHg1Mlx4NzNceDcwXHgzYVx4MjBceDZkXHg2NVx4NmRceDZmXHg3Mlx4NzlceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgotLG1lbW9yeSk7aWYoKDB4MTYwNCszMzkyLTB4MjM0NCk9PXN0cm5jbXAoIlx4NTNceDRkIixtZW1vcnksKDB4YzMzKzMzMjUtMHgxOTJlKSkKKyxtZW1vcnkpO2lmKCgweGQxNisxMDEwLTB4MTEwOCk9PXN0cm5jbXAoIlx4NTNceDRkIixtZW1vcnksKDB4MTEyMisxMzgwLTB4MTY4NCkpCiApe3pVZmlTbXNfU2V0U21zTG9jYXRpb24oU01TX0xPQ0FUSU9OX1NJTSk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1TTVNfU1RBVEVfUkVDVklORyk7bWVtb3J5Kz0oMHhkZTcrNjM2My0weDI2YmUpO3ByaW50ZigKK1NNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweGRkOSs1MjY3LTB4MjI2OCk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg2ZVx4NjRceDIwXHg2M1x4NmRceDY3XHg3Mlx4M2FceDIwXHgyNVx4NzMiICJcbiIKICxtZW1vcnkpO3pTdnJfSW5uZXJTZW5kTXNnKFpVRklfTU9EVUxFX0lEX0FUX0xPQ0FMLFpVRklfTU9EVUxFX0lEX0FUX1VOU09MSSwKIE1TR19DTURfQVRfWk1HUixzdHJsZW4obWVtb3J5KSxtZW1vcnkpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg2OVx4NTJceDczXHg3MFx4MjBceDNhXHg3M1x4NzRceDZmXHg3Mlx4NjVceDIwXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NTNceDRkXHgyZSIgIlxuIgogKTt9c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIiIpO31pbnQgYXRTbXNfU2VuZFptZW5hUmVxKFBTVFIgcEF0Q21kUGFyYSxpbnQKLSBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7Q0hBUiBwQXRjbWRTdHJbKDB4MTgyNyszNTA1LTB4MjVjNCldPXsKLSgweGEzMSsyOTk1LTB4MTVlNCl9O3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKKyBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7Q0hBUiBwQXRjbWRTdHJbKDB4YmM5KzI3NjEtMHgxNjdlKV09eworKDB4MTZiZisyNDItMHgxN2IxKX07c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAogIlx4NDFceDU0XHgyYlx4NWFceDRkXHg0NVx4NGVceDQxXHgzZFx4MjVceDczIiAiXHJcbiIscEF0Q21kUGFyYSk7cmV0dXJuIAogelN2cl9TZW5kQXRTeW4oWkFUX1pNRU5BX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAogYXRTbXNfUmVjdlptZW5hT2soVk9JRCl7Z19abWVuYV9yc3A9VFJVRTtyZXR1cm47fVZPSUQgYXRTbXNfUmVjdlptZW5hRXJyKFZPSUQpewogZ19abWVuYV9yc3A9RkFMU0U7cmV0dXJuO31pbnQgYXRTbXNfU2VuZENubWFSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiAKLXBBdFJzdCxpbnQgYXRSc3RTaXplKXtpbnQgYXRSZXM9KDB4YTFhKzQyNzYtMHgxYWNlKTtDSEFSIHBBdGNtZFN0cltaU01TX1BEVV9TSVpFCi1dPXsoMHgxMTkrMzk5NC0weDEwYjMpfTtDSEFSIGFja1BkdVN0clsoMHgyMjgrMTk5LTB4MmJkKV09eygweDE4OTkrMjcyMC0weDIzMzkpfQotO2lmKGF0b2kocEF0Q21kUGFyYSk9PSgweDgyOCszNTg0LTB4MTYyNykpe3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKLSJceDQxXHg1NFx4MmJceDQzXHg0ZVx4NGRceDQxXHgzZFx4MjVceDczIiAiXHJcbiIscEF0Q21kUGFyYSk7YXRSZXM9CitwQXRSc3QsaW50IGF0UnN0U2l6ZSl7aW50IGF0UmVzPSgweDQ0NCs1MTU3LTB4MTg2OSk7Q0hBUiBwQXRjbWRTdHJbWlNNU19QRFVfU0laRQorXT17KDB4M2ZkKzUwNTYtMHgxN2JkKX07Q0hBUiBhY2tQZHVTdHJbKDB4MWRkMSs4NTMtMHgyMGY0KV09eygweGI5MSs1NjU0LTB4MjFhNykKK307aWYoYXRvaShwQXRDbWRQYXJhKT09KDB4MTI4YSsyMDM2LTB4MWE3ZCkpe3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyCispLCJceDQxXHg1NFx4MmJceDQzXHg0ZVx4NGRceDQxXHgzZFx4MjVceDczIiAiXHJcbiIscEF0Q21kUGFyYSk7YXRSZXM9CiB6U3ZyX1NlbmRBdFN5bihaQVRfQ05NQV9DTUQscEF0Y21kU3RyLGNpZCxwQXRSc3QsYXRSc3RTaXplKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZlXHg2ZFx4NjFceDUyXHg2NVx4NzFceDIwXHgzMVx4MzFceDMxXHgzMVx4MzFceDMxXHgyMFx4NjFceDYzXHg2Ylx4MjBceDZmXHg2Ylx4MjBceDNkXHgyMFx4MjVceDczXHgyZSIgIlxuIgotLHBBdGNtZFN0cik7cmV0dXJuKDB4MmJmKzU5Mi0weDUwZik7fWVsc2V7elVmaVNtc19FbmNvZGVQZHVfRGVsaXZlclJlcG9ydCgKLWFja1BkdVN0ciwoMHgxODQ1KzIxMjMtMHgxZmJkKSk7c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAorLHBBdGNtZFN0cik7cmV0dXJuKDB4YjkyKzIyNTktMHgxNDY1KTt9ZWxzZXt6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KAorYWNrUGR1U3RyLCgweDdiMisxNzIzLTB4ZDlhKSk7c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAogIlx4NDFceDU0XHgyYlx4NDNceDRlXHg0ZFx4NDFceDNkXHgyNVx4NzNceDJjXHgyNVx4NjQiICJcclxuIixwQXRDbWRQYXJhLHN0cmxlbigKLWFja1BkdVN0cikvKDB4M2MwKzczNjItMHgyMDgwKSk7YXRSZXM9elN2cl9TZW5kQXRTeW4oWkFUX0NOTUFfQ01ELHBBdGNtZFN0cixjaWQsCithY2tQZHVTdHIpLygweDE2MzYrMzg0LTB4MTdiNCkpO2F0UmVzPXpTdnJfU2VuZEF0U3luKFpBVF9DTk1BX0NNRCxwQXRjbWRTdHIsY2lkLAogcEF0UnN0LGF0UnN0U2l6ZSk7aWYoYXRSZXMhPVpBVF9SRVNVTFRfU01TKXtyZXR1cm4gYXRSZXM7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmVceDZkXHg2MVx4NTJceDY1XHg3MVx4MjBceDNkXHgyMFx4MjVceDczXHgyZSIgIlxuIgotLHBBdGNtZFN0cik7bWVtc2V0KHBBdGNtZFN0ciwoMHg4ZTUrMzA3OC0weDE0ZWIpLFpTTVNfUERVX1NJWkUpO2lmKHN0cmxlbigKLWFja1BkdVN0cik8WlNNU19QRFVfU0laRS0oMHgxZTlmKzY1LTB4MWVkZikpe21lbWNweShwQXRjbWRTdHIsYWNrUGR1U3RyLHN0cmxlbigKKyxwQXRjbWRTdHIpO21lbXNldChwQXRjbWRTdHIsKDB4N2Y4KzIyNTMtMHgxMGM1KSxaU01TX1BEVV9TSVpFKTtpZihzdHJsZW4oCithY2tQZHVTdHIpPFpTTVNfUERVX1NJWkUtKDB4N2FjKzc0MjQtMHgyNGFiKSl7bWVtY3B5KHBBdGNtZFN0cixhY2tQZHVTdHIsc3RybGVuKAogYWNrUGR1U3RyKSk7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZFx4NjdceDczXHg1Mlx4NjVceDcxXHgyMFx4NzBceDY0XHg3NVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDI1XHg3MyIgIlxuIgotLGFja1BkdVN0cik7bWVtY3B5KHBBdGNtZFN0cixhY2tQZHVTdHIsWlNNU19QRFVfU0laRS0oMHhhYTQrMTQ4MC0weDEwNmEpKTt9KigKKyxhY2tQZHVTdHIpO21lbWNweShwQXRjbWRTdHIsYWNrUGR1U3RyLFpTTVNfUERVX1NJWkUtKDB4NDM4KzI5NjktMHhmY2YpKTt9KigKIHBBdGNtZFN0citzdHJsZW4oYWNrUGR1U3RyKSk9WlNNU19DVFJMX1pfQ0hBUjtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZlXHg2ZFx4NjFceDUyXHg2NVx4NzFceDJlXHgyMFx4NzBceDY0XHg3NVx4M2RceDIwXHgyNVx4NzMiICJcbiIKLSxwQXRjbWRTdHIpO21lbXNldChwQXRSc3QsKDB4NGViKzY4NTctMHgxZmI0KSxhdFJzdFNpemUpO3JldHVybiB6U3ZyX1NlbmRBdFN5bigKKyxwQXRjbWRTdHIpO21lbXNldChwQXRSc3QsKDB4Y2Q0KzE5NDctMHgxNDZmKSxhdFJzdFNpemUpO3JldHVybiB6U3ZyX1NlbmRBdFN5bigKIFpBVF9DTk1BX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO319Vk9JRCBhdFNtc19SZWN2Q25tYVJzcCgKIFRfekF0X0F0UmVzKnBSZXNMaW5lKXtyZXR1cm47fVZPSUQgYXRVbnNvbGlfRGVsZXRlX1NpbV9TbXMoVUlOVDgqcERhdGFidWYsaW50IAotY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHg1OGYrNjk2Ni0weDIwYzUpfTtpbnQgYXRSZXM9Ci0oMHgxMjQwKzQxNTktMHgyMjdmKTtpZihwRGF0YWJ1Zj09TlVMTCl7cmV0dXJuO31hdFJlcz1hdFNtc19TZW5kQ21nZFJlcShwRGF0YWJ1ZgotLGNpZCxlcnJDb2RlLFpTVlJfQVRfUkVTX0NPREVfTEVOKTtpZihhdFJlcz09WlNNU19SRVNVTFRfT0spe2F0U21zX1JlY3ZDbWdkT2soKTsKLX1lbHNle2F0U21zX1JlY3ZDbWdkRXJyKCk7fWF0U21zX1JlY3ZDbWdkRmluaXNoKCk7fVZPSUQgYXRVbnNvbGlfUmVwb3J0X0NubWEoCi1VSU5UOCpwRGF0YWJ1ZixpbnQgY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHgxMzlhKzMxMzgtMHgxZmRjKQotfTtpZihwRGF0YWJ1Zj09TlVMTCl7cHJpbnRmKAorY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHgxNDM5KzgzNi0weDE3N2QpfTtpbnQgYXRSZXM9CisoMHgxZDI3Kzc4MS0weDIwMzQpO2lmKHBEYXRhYnVmPT1OVUxMKXtyZXR1cm47fWF0UmVzPWF0U21zX1NlbmRDbWdkUmVxKHBEYXRhYnVmLAorY2lkLGVyckNvZGUsWlNWUl9BVF9SRVNfQ09ERV9MRU4pO2lmKGF0UmVzPT1aU01TX1JFU1VMVF9PSyl7YXRTbXNfUmVjdkNtZ2RPaygpO30KK2Vsc2V7YXRTbXNfUmVjdkNtZ2RFcnIoKTt9YXRTbXNfUmVjdkNtZ2RGaW5pc2goKTt9Vk9JRCBhdFVuc29saV9SZXBvcnRfQ25tYSgKK1VJTlQ4KnBEYXRhYnVmLGludCBjaWQpe0NIQVIgZXJyQ29kZVtaU1ZSX0FUX1JFU19DT0RFX0xFTl09eygweGRmZCsyMjkwLTB4MTZlZil9Cis7aWYocERhdGFidWY9PU5VTEwpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTVceDZlXHg3M1x4NmZceDZjXHg2OVx4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDVmXHg0M1x4NmVceDZkXHg2MVx4MjBceDZlXHg3NVx4NmNceDZjIgogKTtyZXR1cm47fWF0U21zX1NlbmRDbm1hUmVxKHBEYXRhYnVmLGNpZCxlcnJDb2RlLFpTVlJfQVRfUkVTX0NPREVfTEVOKTt9Vk9JRCAKIGF0VW5zb2xpX1JlcG9ydF9abWVuYShVSU5UOCpwRGF0YWJ1ZixpbnQgY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dCi09eygweGM2OSs1OTEyLTB4MjM4MSl9O2ludCBhdFJlcz0oMHhiMzYrNjM4Mi0weDI0MjQpO2lmKHBEYXRhYnVmPT1OVUxMKXtwcmludGYoCis9eygweDE1ZDkrODQzLTB4MTkyNCl9O2ludCBhdFJlcz0oMHhjOGMrMzMyNC0weDE5ODgpO2lmKHBEYXRhYnVmPT1OVUxMKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDU1XHg2ZVx4NzNceDZmXHg2Y1x4NjlceDVmXHg1Mlx4NjVceDcwXHg2Zlx4NzJceDc0XHg1Zlx4NWFceDZkXHg2NVx4NmVceDYxXHgyMFx4NmVceDc1XHg2Y1x4NmMiCiApO3JldHVybjt9YXRSZXM9YXRTbXNfU2VuZFptZW5hUmVxKHBEYXRhYnVmLGNpZCxlcnJDb2RlLFpTVlJfQVRfUkVTX0NPREVfTEVOKTtpZgogKGF0UmVzPT1aU01TX1JFU1VMVF9PSyl7YXRTbXNfUmVjdlptZW5hT2soKTt9ZWxzZXthdFNtc19SZWN2Wm1lbmFFcnIoKTt9fVZPSUQgCiBhdFVuc29saV9SZXBvcnRfWm1ncihVSU5UOCpwRGF0YWJ1ZixpbnQgY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPQoteygweDhjNCszNTcyLTB4MTZiOCl9O2lmKHBEYXRhYnVmPT1OVUxMKXtwcmludGYoCit7KDB4ZjI5Kzg1Ni0weDEyODEpfTtpZihwRGF0YWJ1Zj09TlVMTCl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1NVx4NmVceDczXHg2Zlx4NmNceDY5XHg1Zlx4NTJceDY1XHg3MFx4NmZceDcyXHg3NFx4NWZceDVhXHg2ZFx4NjdceDcyXHgyMFx4NmVceDc1XHg2Y1x4NmMiCiApO3JldHVybjt9YXRTbXNfU2VuZFptZ3JSZXEocERhdGFidWYsY2lkLGVyckNvZGUsWlNWUl9BVF9SRVNfQ09ERV9MRU4pO30KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93aWZpX2FwX2N0cmwuYyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93aWZpX2FwX2N0cmwuYwppbmRleCAxNGY3MTEwLi4zYWYwMTEzIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9hcF9jdHJsLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dpZmlfYXBfY3RybC5jCkBAIC0xNDkxLDcgKzE0OTEsNiBAQAogICAgICAgICB9IAogICAgIH0gCiB9Ci0vL3p3LndhbmcgV2lGaSBmb3IgTUFDIGlzIG9idGFpbmVkIGZyb20gZmlybXdhcmUgYW5kIHNldCBvbiAyMDI0MDUwOCBzdGFydAogI2lmIGRlZmluZWQoQ09ORklHX1dJRklfRUZVU0VfTUFDKQogaW50IHdpZmlfZndfbWFjX2NvbmZpZ19zc2lkKHN0cnVjdCAgICAgICAgIHdsYW5fYXBfc2VydmVyICphcF9zdnIpCiB7CkBAIC0xNTE2LDEyICsxNTE1LDEzIEBACiAJCXNjX2NmZ19zZXQoImF0X3dpZmlfbWFjIiwgZmFrZV9hdF93aWZpX21hYyk7CiAKIAkJZ2V0X21hY19jb25maWdfc3NpZF9rZXlfbnYoKTsKLQkJLy93bGFuX2FwX2dldF9wYXJhKGFwX3N2cik7Ci0JCS8vd2xhbl9hcF9zYXZlX2NvbmZpZyhhcF9zdnIpOworI2lmbmRlZiBVU0VfQ0FQX1NVUFBPUlQKKwkJd2xhbl9hcF9nZXRfcGFyYShhcF9zdnIpOy8vRDgwIHVwZGF0ZSB3aGVuIGFwIHN0YXJ0CisJCXdsYW5fYXBfc2F2ZV9jb25maWcoYXBfc3ZyKTsKKyNlbmRpZgogCX0KIAlyZXR1cm4gMDsKIH0KLS8vencud2FuZyBXaUZpIGZvciBNQUMgaXMgb2J0YWluZWQgZnJvbSBmaXJtd2FyZSBhbmQgc2V0IG9uIDIwMjQwNTA4IGVuZAogI2VuZGlmCiAKICNpZmRlZiBVU0VfQ0FQX1NVUFBPUlQKQEAgLTI0OTksOSArMjQ5OSw5IEBACiAqLwogdm9pZCB3bGFuX2Jhc2ljX3Jlc3RhcnRfYXBzdGEoKQogewotCWNoYXIgbV9zc2lkX2VuYWJsZVs4XSA9IHswfTsKLQlzY19jZmdfZ2V0KCJtX3NzaWRfZW5hYmxlIiwgbV9zc2lkX2VuYWJsZSwgc2l6ZW9mIChtX3NzaWRfZW5hYmxlKSk7Ci0JaWYgKHN0cmNtcChtX3NzaWRfZW5hYmxlLCAiMSIpID09IDApIHsgCisJLy93aGVuIG11bHRpLXNzaWQgdG8gYXBzdGEsIGdvYWhlYWQgaGFzIHNldCBtX3NzaWRfZW5hYmxlIHRvIDAKKwkvL3NjX2NmZ19nZXQoIm1fc3NpZF9lbmFibGUiLCBtX3NzaWRfZW5hYmxlLCBzaXplb2YgKG1fc3NpZF9lbmFibGUpKTsKKwlpZiAoMSA9PSBhcF9zZXJ2ZXItPmFwMV9zdGF0ZSkgeyAKIAkJd3JpdGVfc3RhdHVzIChXSUZJU1RBVFVTLCBXSUZJX0NMT1NFRCk7CiAJCWNsZWFyX3N0YV9jb3VudF9udigpOwogCQkvL2Nsb3NlIG1zc2lkCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbi1zdGF0aW9uLmMgYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbi1zdGF0aW9uLmMKaW5kZXggMWJlNzg2ZC4uZWEyZWZjZCAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW4tc3RhdGlvbi5jCisrKyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuLXN0YXRpb24uYwpAQCAtMTYwNyw2ICsxNjA3LDE0IEBACiANCiAJCS8vY2hhbm5lbA0KICNpZmRlZiBVU0VfQ0FQX1NVUFBPUlQNCisJCWlmIChzaWduYWwgPD0gMCAmJiBzaWduYWwgPiAtMTI4KSB7DQorCQkJc2Nhbl9yZXN1bHQtPnNpZ25hbF9kYiA9IChzaWduZWQgY2hhcilzaWduYWw7DQorCQl9DQorCQllbHNlIHsNCisJCQlzY2FuX3Jlc3VsdC0+c2lnbmFsX2RiID0gKHNpZ25lZCBjaGFyKSgtMTI4KTsNCisJCX0NCisJCS8vc2Nhbl9yZXN1bHQtPmNoX2ZyZXEgPSBmcmVxdWVuY3k7DQorCQkNCiAJCXNjYW5fcmVzdWx0LT5jaGFubmVsID0gZnJlcXVlbmN5X3RvX2NoYW5uZWwoZnJlcXVlbmN5KTsNCiAjZWxzZQ0KIAkJc3dpdGNoIChmcmVxdWVuY3kpIHsNCkBAIC0yODk3LDcgKzI5MDUsOSBAQAogCQlzY2FuX2xpc3QuaW5mb1tpXS5hdXRoID0gdHJhbnNlX3N0YV9hdXRoX21vZGUoZ19zY2FuX3Jlc3VsdF9saXN0X3BbaV0tPmF1dGhfbW9kZSk7DQogCQlzY2FuX2xpc3QuaW5mb1tpXS5jaXBoZXIgPSB0cmFuc2Vfc3RhX2VuY3J5cHRfdHlwZShnX3NjYW5fcmVzdWx0X2xpc3RfcFtpXS0+ZW5jcnlwdF90eXBlKTsNCiAJCXNjYW5fbGlzdC5pbmZvW2ldLmNoYW5uZWwgPSBnX3NjYW5fcmVzdWx0X2xpc3RfcFtpXS0+Y2hhbm5lbDsNCisJCS8vc2Nhbl9saXN0LmluZm9baV0uZnJlcXVlbmN5ID0gZ19zY2FuX3Jlc3VsdF9saXN0X3BbaV0tPmNoX2ZyZXE7DQogCQlzY2FuX2xpc3QuaW5mb1tpXS5zaWduYWxfbGV2ZWwgPSBnX3NjYW5fcmVzdWx0X2xpc3RfcFtpXS0+c2lnbmFsOw0KKwkJc2Nhbl9saXN0LmluZm9baV0uc2lnbmFsID0gZ19zY2FuX3Jlc3VsdF9saXN0X3BbaV0tPnNpZ25hbF9kYjsNCiAJCXN0cm5jcHkoc2Nhbl9saXN0LmluZm9baV0uZXNzaWQsIGdfc2Nhbl9yZXN1bHRfbGlzdF9wW2ldLT5zc2lkLCBzaXplb2Yoc2Nhbl9saXN0LmluZm9baV0uZXNzaWQpLTEpOw0KIAkJc3RybmNweShzY2FuX2xpc3QuaW5mb1tpXS5ic3NpZCwgZ19zY2FuX3Jlc3VsdF9saXN0X3BbaV0tPm1hYywgc2l6ZW9mKHNjYW5fbGlzdC5pbmZvW2ldLmJzc2lkKS0xKTsNCiAJCXNjYW5fbGlzdC5jbnQrKzsNCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbl9jb25maWdfc3NpZC5jIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW5fY29uZmlnX3NzaWQuYwppbmRleCA2NjMyMDNmLi4zMDdmZDIyIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbl9jb25maWdfc3NpZC5jCisrKyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuX2NvbmZpZ19zc2lkLmMKQEAgLTM0MSwxMSArMzQxLDExIEBACiAJLy9zbnByaW50ZihtYWNfY21kLCBzaXplb2YobWFjX2NtZCksICJNQUNfQTE9JXNcbiIsIG1hYyk7CiAJd2ZfbG9nICgic2V0X21hY19jb25mOlslc10iLCBtYWNfY21kKTsKIAl3bGFuX3dyaXRlX2ZpbGUoIi9ldGNfcncvYWljX21hY2NvbmZpZy50eHQiLCBtYWNfY21kKTsKLS8vencud2FuZyBXaUZpIGZvciBNQUMgaXMgb2J0YWluZWQgZnJvbSBmaXJtd2FyZSBhbmQgc2V0IG9uIDIwMjQwNTA4IHN0YXJ0Ci0jZW5kaWYKKyNlbmRpZgkKIAlyZXR1cm4gMDsKIH0KLXN0YXRpYyBpbnQgc2V0X21hY19hdCAoY2hhciAqbWFjLCBjaGFyICptYWMyKQorCitzdGF0aWMgaW50IHNldF9tYWNfYXQoY2hhciAqbWFjLCBjaGFyICptYWMyKQogewogI2lmIGRlZmluZWQoQ09ORklHX1dJRklfRUZVU0VfTUFDKQogCWNoYXIgbWFjX2NtZFsxMjhdPXswfTsKQEAgLTM2Miw3ICszNjIsNyBAQAogI2VuZGlmCQogCXJldHVybiAwOwogfQotLy96dy53YW5nIFdpRmkgZm9yIE1BQyBpcyBvYnRhaW5lZCBmcm9tIGZpcm13YXJlIGFuZCBzZXQgb24gMjAyNDA1MDggZW5kCisKIHN0YXRpYyBWT0lEIHNldFdpZmlLZXlGb3JJbWVpIChDSEFSKiBvdXRrZXksIENIQVIqIGltZWlzdHIsIFVJTlQzMiBudW0pCiB7CiAJQ0hBUiBvbGRfa2V5W1dMQU5fTlZfV1BBUFNLMV9MRU5HVEhdID0gezB9OwpAQCAtNTUyLDkgKzU1Miw4IEBACiAJbWFrZV91c2VyX21hYyAocmVhZF9tYWMpOwogCiAJc2V0X21hY19jb25mKG1hYywgbV9tYWMpOwotLy96dy53YW5nIFdpRmkgZm9yIE1BQyBpcyBvYnRhaW5lZCBmcm9tIGZpcm13YXJlIGFuZCBzZXQgb24gMjAyNDA1MDggc3RhcnQKKwogCXNldF9tYWNfYXQocmVhZF9tYWMsIG1fcmVhZF9tYWMpOwotLy96dy53YW5nIFdpRmkgZm9yIE1BQyBpcyBvYnRhaW5lZCBmcm9tIGZpcm13YXJlIGFuZCBzZXQgb24gMjAyNDA1MDggZW5kCiB9CiAKIApkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW5fbWFpbi5jIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW5fbWFpbi5jCmluZGV4IGJkNzM4ZDUuLmQ2NTU2NDEgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuX21haW4uYworKysgYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbl9tYWluLmMKQEAgLTg5OCwxMCArODk4LDEwIEBACiANCiAJaWYgKGlkeCA9PSBJTl9XSUZJX0FQX0lOREVYX01BWCkgew0KIAkJaWYgKGdfd29ya19tb2RlID09IElOX1dJRklfV09SS19NT0RFX0FQMSkgew0KLQkJCWlkeCA9PSBJTl9XSUZJX0FQX0lOREVYX0FQMTsNCisJCQlpZHggPSBJTl9XSUZJX0FQX0lOREVYX0FQMTsNCiAJCX0NCiAJCWVsc2Ugew0KLQkJCWlkeCA9PSBJTl9XSUZJX0FQX0lOREVYX0FQMDsNCisJCQlpZHggPSBJTl9XSUZJX0FQX0lOREVYX0FQMDsNCiAJCX0NCiAJfQ0KIAkNCkBAIC0yMDQ5LDcgKzIwNDksNyBAQAogI2VuZGlmCQ0KICNlbmRpZg0KIA0KLSNpZiAhKGRlZmluZWQoQ09ORklHX1dJRklfRUZVU0VfTUFDKSkgLy96dy53YW5nIFdpRmkgZm9yIE1BQyBpcyBvYnRhaW5lZCBmcm9tIGZpcm13YXJlIGFuZCBzZXQgb24gMjAyNDA1MDgKKyNpZiAhKGRlZmluZWQoQ09ORklHX1dJRklfRUZVU0VfTUFDKSkKIAlzZW5kX2dldF9tYWNfcmVxKCk7DQogI2VuZGlmDQogCQ0KQEAgLTIwNjcsNyArMjA2Nyw3IEBACiANCiANCiAJaW5pdF9jb25maWcoKTsNCi0jaWYgIShkZWZpbmVkKENPTkZJR19XSUZJX0VGVVNFX01BQykpIC8vencud2FuZyBXaUZpIGZvciBNQUMgaXMgb2J0YWluZWQgZnJvbSBmaXJtd2FyZSBhbmQgc2V0IG9uIDIwMjQwNTA4CisjaWYgIShkZWZpbmVkKENPTkZJR19XSUZJX0VGVVNFX01BQykpCiAJZ2V0X21hY19jb25maWdfc3NpZF9rZXlfbnYoKTsNCiAjZW5kaWYNCiANCkBAIC0yMTE0LDcgKzIxMTQsNyBAQAogCQlyZXR1cm4gLTE7DQogCX0NCiANCi0jaWYgZGVmaW5lZChDT05GSUdfV0lGSV9FRlVTRV9NQUMpIC8vencud2FuZyBXaUZpIGZvciBNQUMgaXMgb2J0YWluZWQgZnJvbSBmaXJtd2FyZSBhbmQgc2V0IG9uIDIwMjQwNTA4CisjaWYgZGVmaW5lZChDT05GSUdfV0lGSV9FRlVTRV9NQUMpCiAJd2lmaV9md19tYWNfY29uZmlnX3NzaWQoYXBfc2VydmVyKTsNCiAjZW5kaWYNCiANCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX21kbC96dGVfbWRsLmMgYi9hcC9hcHAvenRlX21kbC96dGVfbWRsLmMKaW5kZXggZTNkNTBjZS4uZDkzMjgzYyAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9tZGwvenRlX21kbC5jCisrKyBiL2FwL2FwcC96dGVfbWRsL3p0ZV9tZGwuYwpAQCAtMTAyLDkgKzEwMiwxMSBAQAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAkvKiBudnNlcnZlciAqLwotICAgIHB0aHJlYWRfdCBudnNlcnZlcl90aHJlYWRfdGlkOwotICAgIHB0aHJlYWRfY3JlYXRlKCZudnNlcnZlcl90aHJlYWRfdGlkLCBOVUxMLCAodm9pZCAqKW52c2VydmVyX2VudHJ5LCBOVUxMKTsKLQkKKwlwdGhyZWFkX3QgbnZzZXJ2ZXJfdGhyZWFkX3RpZDsKKworCS8vZGFlbW9uKDAsIDApOworCXB0aHJlYWRfY3JlYXRlKCZudnNlcnZlcl90aHJlYWRfdGlkLCBOVUxMLCAodm9pZCAqKW52c2VydmVyX2VudHJ5LCBOVUxMKTsKKwogCS8qIHp0ZV9kcnZfc2VyaWFsX2N0cmwgKi8KIAlwdGhyZWFkX3QgenRlX2Rydl9zZXJpYWxfY3RybF90aHJlYWRfdGlkOwogCXB0aHJlYWRfY3JlYXRlKCZ6dGVfZHJ2X3NlcmlhbF9jdHJsX3RocmVhZF90aWQsIE5VTEwsICh2b2lkICopenRlX2Rydl9zZXJpYWxfY3RybF9lbnRyeSwgTlVMTCk7Cg==