ZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX25vcm1hbC5jIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfbm9ybWFsLmMKaW5kZXggMjRlYzEzMy4uZDZlNTM1NCAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfbm9ybWFsLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfbm9ybWFsLmMKQEAgLTIxLDcgKzIxLDcgQEAKIA0KIC8vYnNpbQ0KICNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPg0KLQ0KKyNpbmNsdWRlICJwdWJfZGVidWdfaW5mby5oIg0KIC8vPj4+c2ouemhhbmcgYWRkIEAyMDIzLTEwLTA4IGZvciBmaXggdGhlIGlzc3VlIG9mIHRpbWV6b25lLg0KICNkZWZpbmUgX1hPUEVOX1NPVVJDRQ0KIGV4dGVybiBsb25nIHRpbWV6b25lOw0KQEAgLTk0LDYgKzk0LDggQEAKICNlbmRpZg0KIGV4dGVybiBzdHJ1Y3QgZGVmY2lkX21uZ190IGdfZGVmY2lkX21uZzsNCiBjaGFyIGltc2lbNTBdID0gezB9Ow0KK2NoYXIgTU9EVUxFX0lEX0FUX0NUTF9ERUJVR1syMF0gPSAiYXBfYXRfY3RsIjsNCisNCiAvL3pkbSDH69XXt+HIt8jPyse38dDo0qrNrLK9tb1BULLgDQogLy+689D408PL+M34zOa0+qOsxtXNqLDmsb6yu8v4DQogY2hhciogenVyZHlfY29udmVydF9jbWQodm9pZCAqbXNnLCBzdHJ1Y3QgYXRfY29udGV4dCAqY29udGV4dCkNCkBAIC0xODgsNiArMTkwLDcgQEAKICNlbmRpZg0KIA0KICAgICBydGNfc2V0X3RpbWUoTU9EVUxFX0lEX0FUX0NUTCk7DQorCXNjX2RlYnVnX2luZm9fcmVjb3JkKE1PRFVMRV9JRF9BVF9DVExfREVCVUcsICJuaXR6IHRpbWUgc3luY2hyb25pemF0aW9uIHN1Y2Nlc3NmdWwhXG4iKTsNCiAgICAgcmV0dXJuIEFUX0VORDsNCiB9DQogDQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbS5jIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbS5jCmluZGV4IDE3N2E5MzguLjUzMTNhMGIgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jb20uYworKysgYi9hcC9hcHAvenRlX2NvbW0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfY29tLmMKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlIDxzeXMvdW4uaD4NCiAjaW5jbHVkZSAiZXh0X3NvY2tldF9mdW5jLmgiDQogI2VuZGlmDQotDQorI2luY2x1ZGUgInB1Yl9kZWJ1Z19pbmZvLmgiDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm8gZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpAQCAtNjI0LDcgKzYyNCw3IEBACiAgICAgfQ0KIH0NCiANCi0NCitleHRlcm4gaW50IGNhcF9pc19hY3RpdmUodm9pZCk7DQogI2lmIChBUFBfT1NfVFlQRSA9PSBBUFBfT1NfTElOVVgpDQogaW50IGF0X3N5c193cml0ZShpbnQgZmQsY2hhciAqYnVmLGludCBsZW4pDQogew0KQEAgLTYzMyw2ICs2MzMsMTQgQEAKIAlpbnQgbGVmdF9sZW4gPSBsZW47DQogCWNoYXIgKnBzdHIgPSBidWY7DQogCXN0cnVjdCBhdF9jaGFubmVsX2luZm8gKiBhdF9jaGFuID0gYXRfY29udGV4dF9maW5kX2Nobl9ieV9mZChmZCk7DQorI2lmZGVmIFVTRV9DQVBfU1VQUE9SVA0KKwlpZiAoY2hlY2tfaXNfZmFycHMoZmQpICYmIChjYXBfaXNfYWN0aXZlKCkgPT0gMCkpew0KKwkJY2hhciBhdF9idWZbMTZdID0gezB9Ow0KKw0KKwkJc3RybmNweShhdF9idWYsYnVmLHNpemVvZihhdF9idWYpLTEpOw0KKwkJc2NfZGVidWdfaW5mb19yZWNvcmQoImFwX2F0X2N0bCIsICJhdDolcyBsZW46JWRcbiIsIGF0X2J1ZiwgbGVuKTsNCisJfQ0KKyNlbmRpZg0KIAl3aGlsZShsZWZ0X2xlbiA+IDApDQogCXsNCiAJCXdyaXR0ZW5fYnl0ZXMgPSB3cml0ZShmZCwgcHN0ciwgbGVmdF9sZW4pOwkNCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfcG9ydG1uZy5jIGIvYXAvYXBwL3p0ZV9jb21tL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3BvcnRtbmcuYwppbmRleCAzNmYzNjhiLi43Zjk1MzM1IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfcG9ydG1uZy5jCisrKyBiL2FwL2FwcC96dGVfY29tbS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9wb3J0bW5nLmMKQEAgLTExOCwyMSArMTE4LDI0IEBACiAJCWlmKEZEX0ZBUl9QU1tpbGRlX2lkeF0gPj0gMCkNCiAJCXsNCiAJCQlub2RlID0gYWRkX25ld19jaGFubmVsKEZEX0ZBUl9QU1tpbGRlX2lkeF0sRkFSX1BTKTsNCisJCQkvKiBTdGFydGVkIGJ5IEFJQ29kZXIsIHBpZDpwNjAyMjUzMmQxODQwYWMxNGU3ZjA4ZGYyMDI5MzMxZWI1ODRhZWJlICovDQogCQkJaWYobm9kZSAhPSBOVUxMKSB7DQorCQkJCS8qudix1TM1LzM3LzM4LzM5zai1wNb3tq/Jz7GoKi8NCiAJCQkJaWYoMCA9PSBhdF9zdHJuY21wKG5hbWUsICIvZGV2L3JwbXNnMzUiLCBzdHJsZW4obmFtZSkpIHx8DQogCQkJCQkwID09IGF0X3N0cm5jbXAobmFtZSwgIi9kZXYvcnBtc2czNyIsIHN0cmxlbihuYW1lKSkgfHwNCiAJCQkJCTAgPT0gYXRfc3RybmNtcChuYW1lLCAiL2Rldi9ycG1zZzM4Iiwgc3RybGVuKG5hbWUpKSB8fA0KIAkJCQkJMCA9PSBhdF9zdHJuY21wKG5hbWUsICIvZGV2L3JwbXNnMzkiLCBzdHJsZW4obmFtZSkpKSB7DQogCQkJCQlub2RlLT5hdHRyaWJ1dGlvbiB8PSAxPDxDSF9BVVRPSU5EOw0KIAkJCQl9DQotCQkJCS8vaWYobm9kZSAhPSBOVUxMICYmKHN0cnN0cihuYW1lLCAiL2Rldi90dHlHUzAiKSAhPSBOVUxMIHx8IHN0cnN0cihuYW1lLCAiL2Rldi90dHlHUzEiKSAhPSBOVUxMKSkNCi0JCQkJaWYoKDAgPT0gYXRfc3RybmNtcChuYW1lLCAiL2Rldi9ycG1zZzM2Iiwgc3RybGVuKG5hbWUpKSB8fCAwID09IGF0X3N0cm5jbXAobmFtZSwgIi9kZXYvcnBtc2czNyIsIHN0cmxlbihuYW1lKSkpKSB7DQotCQkJCQlub2RlLT5yZXNlcnZlZCA9IDA7DQorCQkJCQ0KKwkJCQlpZigwID09IGF0X3N0cm5jbXAobmFtZSwgIi9kZXYvcnBtc2czNiIsIHN0cmxlbihuYW1lKSkgfHwgMCA9PSBhdF9zdHJuY21wKG5hbWUsICIvZGV2L3JwbXNnMzciLCBzdHJsZW4obmFtZSkpKSB7DQorCQkJCQlub2RlLT5yZXNlcnZlZCA9IDA7Ly/X986q1KTB9M2otcCjrNTax+vH88P8we7RodTxZmFycHPKsbryo6y74dGh1PG3osvNDQogCQkJCX0NCiAJCQkJZWxzZSB7DQogCQkJCQlub2RlLT5yZXNlcnZlZCA9IDE7DQogCQkJCX0NCi0JCQl9CQkJDQorCQkJfQ0KKwkJCS8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDpwNjAyMjUzMmQxODQwYWMxNGU3ZjA4ZGYyMDI5MzMxZWI1ODRhZWJlICovDQogCQkJbWVtY3B5KGdfZmFycHNfcG9ydF9pbmZvW2lsZGVfaWR4XS5uYW1lLG5hbWUsc3RybGVuKG5hbWUpKTsNCiAJCQlnX2ZhcnBzX3BvcnRfaW5mb1tpbGRlX2lkeF0uZmQgPSBGRF9GQVJfUFNbaWxkZV9pZHhdOw0KIAkJCWdfZmFycHNfcG9ydF9pbmZvW2lsZGVfaWR4XS5zdGF0ZSA9IDE7DQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252c2VydmVyLmMgYi9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYwppbmRleCA5Nzg3NzA2Li41MjY0ZGIyIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYworKysgYi9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXIuYwpAQCAtMzEsNzMgKzMxLDc0IEBACiBmaWxlLGNoYXIqa2V5LGNoYXIqdmFsdWUpO3N0YXRpYyBpbnQgbnZ1bnNldChjaGFyKmZpbGUsY2hhciprZXkpO3N0YXRpYyBpbnQgCiBudmNsZWFyKGNoYXIqZmlsZSk7c3RhdGljIGludCBudnJlc2V0KGNoYXIqZmlsZSk7c3RhdGljIGludCBudmNvbW1pdChjaGFyKmZpbGUpOwogVF9OVl9OT0RFKm52X2xpc3Q7aW50IG52c2VydmVyX21haW4oaW50IGFyZ2MsY2hhciphcmd2W10pe2ludCBtc2dJZD0KLSgweDE1Y2QrNDgtMHgxNWZkKTtUX05WX01TR19JTkZPIHJjdkJ1ZjtUX05WX01TR19SRVNVTFQgc25kQnVmO3N0cnVjdCBtc3FpZF9kcyAKLW1zZ0luZm87cHJjdGwoUFJfU0VUX05BTUUsIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyIiwoMHhiNjUrMjM5MC0weDE0YmIpCi0sKDB4MTI2OCs1MTk2LTB4MjZiNCksKDB4MTg5MisxMDA0LTB4MWM3ZSkpO21lbXNldCgmcmN2QnVmLCgweDhiMys2MTAzLTB4MjA4YSksCi1zaXplb2YocmN2QnVmKSk7bWVtc2V0KCZzbmRCdWYsKDB4NmVkKzYzMzktMHgxZmIwKSxzaXplb2Yoc25kQnVmKSk7bWVtc2V0KCYKLW1zZ0luZm8sKDB4NGU2KzI3OTctMHhmZDMpLHNpemVvZihtc2dJbmZvKSk7bXNnSWQ9bXNnZ2V0KE1PRFVMRV9JRF9OVixJUENfQ1JFQVR8Ci0oMHhjNzkrMTM1OC0weDEwNDcpKTtpZigtKDB4MTM2OSs0MjMyLTB4MjNmMCk9PW1zZ0lkKXtwcmludGYoCisoMHgyMDkrNDA5NS0weDEyMDgpO1RfTlZfTVNHX0lORk8gcmN2QnVmO1RfTlZfTVNHX1JFU1VMVCBzbmRCdWY7c3RydWN0IG1zcWlkX2RzIAorbXNnSW5mbztwcmN0bChQUl9TRVRfTkFNRSwiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzIiLCgweDVlZis5NTMtMHg5YTgpLAorKDB4ODlhKzE3MDUtMHhmNDMpLCgweDI0M2MrMzI5LTB4MjU4NSkpO21lbXNldCgmcmN2QnVmLCgweDFiNTQrMTUxMC0weDIxM2EpLAorc2l6ZW9mKHJjdkJ1ZikpO21lbXNldCgmc25kQnVmLCgweDFhMWQrMzI3MC0weDI2ZTMpLHNpemVvZihzbmRCdWYpKTttZW1zZXQoJgorbXNnSW5mbywoMHgxMmQ3KzQyOS0weDE0ODQpLHNpemVvZihtc2dJbmZvKSk7bXNnSWQ9bXNnZ2V0KE1PRFVMRV9JRF9OVixJUENfQ1JFQVQKK3woMHg4NzgrNTY2MC0weDFkMTQpKTtpZigtKDB4NzkyKzI0My0weDg4NCk9PW1zZ0lkKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NmRceDczXHg2N1x4NjdceDY1XHg3NFx4MjBceDZkXHg3M1x4NjdceDQ5XHg2NFx4MjBceDY2XHg2MVx4NjlceDZjXHgyY1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sZXJybm8pO3JldHVybi0oMHg4NDkrNTUyOC0weDFkZTApO31pZigtKDB4MWYzYisxNTMzLTB4MjUzNykhPW1zZ2N0bChtc2dJZCwKLUlQQ19TVEFULCZtc2dJbmZvKSl7bXNnSW5mby5tc2dfcWJ5dGVzPTI2MjE0NDtpZigtKDB4ODArNTgzMi0weDE3NDcpPT1tc2djdGwoCissZXJybm8pO3JldHVybi0oMHg2NzQrNzkyOS0weDI1NmMpO31pZigtKDB4ZmM3KzQ0NTYtMHgyMTJlKSE9bXNnY3RsKG1zZ0lkLAorSVBDX1NUQVQsJm1zZ0luZm8pKXttc2dJbmZvLm1zZ19xYnl0ZXM9MjYyMTQ0O2lmKC0oMHhjZDIrNTk2Ni0weDI0MWYpPT1tc2djdGwoCiBtc2dJZCxJUENfU0VULCZtc2dJbmZvKSlwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NmRceDczXHg2N1x4NjNceDc0XHg2Y1x4MjBceDZkXHg3M1x4NjdceDQ5XHg2NFx4MjBceDY2XHg2MVx4NjlceDZjXHgyY1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sZXJybm8pO31pZihudkRpckluaXQoKSE9KDB4YjlmKzI0NjItMHgxNTNkKSl7cHJpbnRmKAorLGVycm5vKTt9aWYobnZEaXJJbml0KCkhPSgweDFhYjErMTU0MS0weDIwYjYpKXtwcmludGYoCiAiXHg2ZVx4NzZceDQ0XHg2OVx4NzJceDQ5XHg2ZVx4NjlceDc0XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHgyMSIgIlxuIik7cmV0dXJuLQotKDB4ZWZhKzEyOS0weGY3YSk7fW52Q29uZmlnKCk7bnZJbml0KCk7d2hpbGUoKDB4NDA2KzcyODYtMHgyMDdiKSl7aWYoLQotKDB4NDU4KzU3NjctMHgxYWRlKT09bXNncmN2KG1zZ0lkLCZyY3ZCdWYsc2l6ZW9mKFRfTlZfTVNHX0lORk8pLXNpemVvZihsb25nKSwKLU1TR19UWVBFX05WLCgweDE2MSs0OTE2LTB4MTQ5NSkpKXtwcmludGYoCisoMHgxYzRiKzU4OS0weDFlOTcpO31udkNvbmZpZygpO252SW5pdCgpO3doaWxlKCgweDI4MCs0OTI5LTB4MTVjMCkpe2lmKC0KKygweDE5NmIrMTEzNC0weDFkZDgpPT1tc2dyY3YobXNnSWQsJnJjdkJ1ZixzaXplb2YoVF9OVl9NU0dfSU5GTyktc2l6ZW9mKGxvbmcpLAorTVNHX1RZUEVfTlYsKDB4YmUxKzI4ODktMHgxNzJhKSkpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NzNceDY3XHg3Mlx4NjNceDc2XHgyMFx4NjZceDYxXHg2OVx4NmNceDJjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCi0sZXJybm8pO2NvbnRpbnVlO31hbmFseU1zZygmcmN2QnVmLCZzbmRCdWYpO2lmKC0oMHhlYmYrMjUwMS0weDE4ODMpPT1tc2dzbmQoCi1tc2dJZCwmc25kQnVmLHNpemVvZihUX05WX01TR19SRVNVTFQpLXNpemVvZihsb25nKSwoMHhiMTcrNTI0Mi0weDFmOTEpKSl7cHJpbnRmKAorLGVycm5vKTtjb250aW51ZTt9YW5hbHlNc2coJnJjdkJ1Ziwmc25kQnVmKTtpZigtKDB4OTUwKzQwOTgtMHgxOTUxKT09bXNnc25kKAorbXNnSWQsJnNuZEJ1ZixzaXplb2YoVF9OVl9NU0dfUkVTVUxUKS1zaXplb2YobG9uZyksKDB4MWNhMis3LTB4MWNhOSkpKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyMFx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmRceDczXHg2N1x4NzNceDZlXHg2NFx4MjBceDY2XHg2MVx4NjlceDZjXHgyY1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0XHgyMSIgIlxuIgotLGVycm5vKTtjb250aW51ZTt9fXJldHVybigoMHgyMzQrNDE5OC0weDEyOWEpKTt9c3RhdGljIHZvaWQgY29uZmlnZGlyKGNoYXIqZGlyKXsKLURJUipkcDtpbnQgcmV0O3N0cnVjdCBkaXJlbnQqZW50cnk7c3RydWN0IHN0YXQgc3RhdGJ1ZjtpZigoZHA9b3BlbmRpcihkaXIpKT09CissZXJybm8pO2NvbnRpbnVlO319cmV0dXJuKCgweDE1YjMrMjM2OS0weDFlZjQpKTt9c3RhdGljIHZvaWQgY29uZmlnZGlyKGNoYXIqZGlyKQore0RJUipkcDtpbnQgcmV0O3N0cnVjdCBkaXJlbnQqZW50cnk7c3RydWN0IHN0YXQgc3RhdGJ1ZjtpZigoZHA9b3BlbmRpcihkaXIpKT09CiBOVUxMKXtmcHJpbnRmKHN0ZGVyciwKICJceDYzXHg2MVx4NmVceDZlXHg2Zlx4NzRceDIwXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDY0XHg2OVx4NzJceDY1XHg2M1x4NzRceDZmXHg3Mlx4NzlceDNhXHgyMFx4MjVceDczIiAiXG4iCiAsZGlyKTtyZXR1cm47fWNoZGlyKGRpcik7d2hpbGUoKGVudHJ5PXJlYWRkaXIoZHApKSE9TlVMTCl7cmV0PWxzdGF0KGVudHJ5LT4KLWRfbmFtZSwmc3RhdGJ1Zik7aWYocmV0PCgweDZhMSs3MDQtMHg5NjEpKXtmcHJpbnRmKHN0ZGVyciwKK2RfbmFtZSwmc3RhdGJ1Zik7aWYocmV0PCgweDExZTErMTk5NS0weDE5YWMpKXtmcHJpbnRmKHN0ZGVyciwKICJceDZjXHg3M1x4NzRceDYxXHg3NFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHgyNVx4NzMiICJcbiIsc3RyZXJyb3IoCiBlcnJubykpO2NoZGlyKCJceDJlXHgyZSIpO2Nsb3NlZGlyKGRwKTtyZXR1cm47fWlmKCFTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpe2lmKAotc3RyY21wKCJceDJlIixlbnRyeS0+ZF9uYW1lKT09KDB4ZmUyKzM0ODktMHgxZDgzKXx8c3RyY21wKCJceDJlXHgyZSIsZW50cnktPgotZF9uYW1lKT09KDB4NmYxKzQyMTktMHgxNzZjKSljb250aW51ZTtpZighaXNOdkNvbmZpZ2VkKGVudHJ5LT5kX25hbWUpKXtpZigKK3N0cmNtcCgiXHgyZSIsZW50cnktPmRfbmFtZSk9PSgweDEwYjMrMjM4NC0weDFhMDMpfHxzdHJjbXAoIlx4MmVceDJlIixlbnRyeS0+CitkX25hbWUpPT0oMHgxMTdmKzIyNDEtMHgxYTQwKSljb250aW51ZTtpZighaXNOdkNvbmZpZ2VkKGVudHJ5LT5kX25hbWUpKXtpZigKIGFkZENvbmZpZ0ZpbGUoZW50cnktPmRfbmFtZSxOVUxMKSE9UkVTVUxUX1NVQ0NFU1MpcHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4MjBceDI1XHg3M1x4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MjEiICJcbiIKICxlbnRyeS0+ZF9uYW1lKTt9fX1jaGRpcigiXHgyZVx4MmUiKTtjbG9zZWRpcihkcCk7fXN0YXRpYyB2b2lkIG52Q29uZmlnKCl7Y2hhcioKLXZhbD1OVUxMO0ZJTEUqZnA9TlVMTDtjaGFyIGJ1ZltOVl9NQVhfQ09ORklHX0xFTl09eygweDIzMCs0ODU3LTB4MTUyOSl9O2ZwPWZvcGVuCit2YWw9TlVMTDtGSUxFKmZwPU5VTEw7Y2hhciBidWZbTlZfTUFYX0NPTkZJR19MRU5dPXsoMHg4ZjUrMjUzOS0weDEyZTApfTtmcD1mb3BlbgogKE5WX0NPTkZJR19GSUxFLCJceDcyXHg2ZiIpO2lmKCFmcCl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4NmZceDcwXHg2NVx4NmVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDIxIiAiXG4iCiAsTlZfQ09ORklHX0ZJTEUsZXJybm8pO3JldHVybjt9d2hpbGUoZmdldHMoYnVmLE5WX01BWF9DT05GSUdfTEVOLGZwKSl7aWYoYnVmWwotKDB4YWYxKzY5My0weGRhNildPT0nXG4nfHxidWZbKDB4ZWZmKzExNTItMHgxMzdmKV09PSgoY2hhcikoMHhkZiszNjc5LTB4ZjFiKSkpCi1jb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwoKGNoYXIpKDB4ZjdmKzU2MTAtMHgyNTJjKSkpO2lmKCF2YWwpe3ByaW50ZigKKygweDIzYWMrNDg0LTB4MjU5MCldPT0nXG4nfHxidWZbKDB4Y2QyKzQ5MTctMHgyMDA3KV09PQorKChjaGFyKSgweDE5ZDcrMTQ3MS0weDFmNzMpKSljb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwKKygoY2hhcikoMHgxZTM0KzEzNzQtMHgyMzU1KSkpO2lmKCF2YWwpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDI1XHg3M1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjZceDZmXHg3Mlx4NmRceDYxXHg3NFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg3M1x4NzRceDcyXHgyMFx4M2RceDIwXHgyNVx4NzNceDIxIiAiXG4iCi0sTlZfQ09ORklHX0ZJTEUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDE0OSsyNDA0LTB4YWFjKV09J1wwJzsqdmFsKys9CissTlZfQ09ORklHX0ZJTEUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweGM5YSsyMjYzLTB4MTU3MCldPSdcMCc7KnZhbCsrPQogJ1wwJztpZighaXNDZmdDb25maWdlZChidWYpKXtpZihhZGRDb25maWdGaWxlKHZhbCxidWYpIT1SRVNVTFRfU1VDQ0VTUylwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3XHgyMFx4MjVceDczXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgyMSIgIlxuIgogLGJ1Zik7fX1mY2xvc2UoZnApO2NvbmZpZ2RpcihOVl9GU19NQUlOX1BBVEgpO31zdGF0aWMgaW50IG52RGlySW5pdCgpe2lmKGFjY2VzcygKLU5WX0ZTX1BBVEgsRl9PSykhPSgweGFlZCsxNDgyLTB4MTBiNykpe2lmKG1rZGlyKE5WX0ZTX1BBVEgsKDB4MWQ1MysyNDY0LTB4MjUwNikpCi0hPSgweDFhZTIrMTUxMi0weDIwY2EpKXtwcmludGYoCitOVl9GU19QQVRILEZfT0spIT0oMHg2OTkrMzE3My0weDEyZmUpKXtpZihta2RpcihOVl9GU19QQVRILCgweDE0NTErMTg0Ni0weDE5OWEpKQorIT0oMHg1NWErMjY1Ni0weGZiYSkpe3ByaW50ZigKICJceDZlXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NmJceDY0XHg2OVx4NzJceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDZjXHg2OVx4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4M2RceDI1XHg2NCIgIlxuIgotLE5WX0ZTX1BBVEgsZXJybm8pO3JldHVybi0oMHgyNTQrMjAtMHgyNjcpO31pZihta2RpcihOVl9GU19NQUlOX1BBVEgsCi0oMHgxNWI1KzQ1OTUtMHgyNWJiKSkhPSgweDEyZjIrMTYxOC0weDE5NDQpKXtwcmludGYoCissTlZfRlNfUEFUSCxlcnJubyk7cmV0dXJuLSgweDZkMSs2NTIxLTB4MjA0OSk7fWlmKG1rZGlyKE5WX0ZTX01BSU5fUEFUSCwKKygweDNlYSs4MDYwLTB4MjE3OSkpIT0oMHgyMjU3KzU0Ny0weDI0N2EpKXtwcmludGYoCiAiXHg2ZVx4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmRceDZiXHg2NFx4NjlceDcyXHgyMFx4MjVceDczXHgyMFx4NjZceDYxXHg2Y1x4NjlceDJjXHg2NVx4NzJceDcyXHg2ZVx4NmZceDNkXHgyNVx4NjQiICJcbiIKLSxOVl9GU19NQUlOX1BBVEgsZXJybm8pO3JldHVybi0oMHg2ZTkrMzA4NS0weDEyZjUpO31pZihta2RpcihOVl9GU19CQUNLVVBfUEFUSCwKLSgweDFiYTkrMjIzLTB4MWE5YikpIT0oMHgzNDArNTYzNy0weDE5NDUpKXtwcmludGYoCissTlZfRlNfTUFJTl9QQVRILGVycm5vKTtyZXR1cm4tKDB4MTNkNysyNDMzLTB4MWQ1Nyk7fWlmKG1rZGlyKE5WX0ZTX0JBQ0tVUF9QQVRILAorKDB4NWYzKzUyMzEtMHgxODc1KSkhPSgweDYzNSs2OTg0LTB4MjE3ZCkpe3ByaW50ZigKICJceDZlXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2ZFx4NmJceDY0XHg2OVx4NzJceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDZjXHg2OVx4MmNceDY1XHg3Mlx4NzJceDZlXHg2Zlx4M2RceDI1XHg2NCIgIlxuIgotLE5WX0ZTX0JBQ0tVUF9QQVRILGVycm5vKTtyZXR1cm4tKDB4MTI1NysxODYwLTB4MTk5YSk7fX1lbHNle2lmKGFjY2VzcygKLU5WX0ZTX01BSU5fUEFUSCxGX09LKSE9KDB4OGJhKzEwMDAtMHhjYTIpKXtpZihta2RpcihOVl9GU19NQUlOX1BBVEgsCi0oMHhkOGIrNjAxOC0weDIzMjApKSE9KDB4M2U2Kzg4NTQtMHgyNjdjKSl7cHJpbnRmKAorLE5WX0ZTX0JBQ0tVUF9QQVRILGVycm5vKTtyZXR1cm4tKDB4MTMxMCsxNjcxLTB4MTk5Nik7fX1lbHNle2lmKGFjY2VzcygKK05WX0ZTX01BSU5fUEFUSCxGX09LKSE9KDB4ZWQyKzU5Ny0weDExMjcpKXtpZihta2RpcihOVl9GU19NQUlOX1BBVEgsCisoMHhkMTYrMzIzNi0weDE3Y2QpKSE9KDB4NDk3KzI3MjMtMHhmM2EpKXtwcmludGYoCiAiXHg2ZVx4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmRceDZiXHg2NFx4NjlceDcyXHgyMFx4MjVceDczXHgyMFx4NjZceDYxXHg2Y1x4NjlceDJjXHg2NVx4NzJceDcyXHg2ZVx4NmZceDNkXHgyNVx4NjQiICJcbiIKLSxOVl9GU19NQUlOX1BBVEgsZXJybm8pO3JldHVybi0oMHhjY2YrNjYzNS0weDI2YjkpO319aWYoYWNjZXNzKE5WX0ZTX0JBQ0tVUF9QQVRICi0sRl9PSykhPSgweDE1YzkrMjEwOS0weDFlMDYpKXtpZihta2RpcihOVl9GU19CQUNLVVBfUEFUSCwoMHgxNTFkKzM5NDgtMHgyMjljKSkhPQotKDB4MTcxOCszMDU2LTB4MjMwOCkpe3ByaW50ZigKKyxOVl9GU19NQUlOX1BBVEgsZXJybm8pO3JldHVybi0oMHgxZTg3KzE1NjEtMHgyNDlmKTt9fWlmKGFjY2VzcygKK05WX0ZTX0JBQ0tVUF9QQVRILEZfT0spIT0oMHgyMjE5KzEwNC0weDIyODEpKXtpZihta2RpcihOVl9GU19CQUNLVVBfUEFUSCwKKygweDFjNTErMTU3MS0weDIwODcpKSE9KDB4MTQzOCs0NDctMHgxNWY3KSl7cHJpbnRmKAogIlx4NmVceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZkXHg2Ylx4NjRceDY5XHg3Mlx4MjBceDI1XHg3M1x4MjBceDY2XHg2MVx4NmNceDY5XHgyY1x4NjVceDcyXHg3Mlx4NmVceDZmXHgzZFx4MjVceDY0IiAiXG4iCi0sTlZfRlNfQkFDS1VQX1BBVEgsZXJybm8pO3JldHVybi0oMHgxZGM1KzI2Ni0weDFlY2UpO319fXJldHVybgotKDB4ODRkKzQ1MzMtMHgxYTAyKTt9c3RhdGljIHZvaWQgbnZJbml0KCl7VF9OVl9OT0RFKmxpc3Q9TlVMTDtjaGFyIG52TWFpbkZpbGVbCi1OVl9QQVRIX0xFTl09eygweGNiMCsyODAzLTB4MTdhMyl9O2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17Ci0oMHgzYmErNDU3Ny0weDE1OWIpfTsKKyxOVl9GU19CQUNLVVBfUEFUSCxlcnJubyk7cmV0dXJuLSgweGRhOCs0ODc2LTB4MjBiMyk7fX19cmV0dXJuCisoMHgxOWNmKzE1NDktMHgxZmRjKTt9c3RhdGljIHZvaWQgbnZJbml0KCl7VF9OVl9OT0RFKmxpc3Q9TlVMTDtjaGFyIG52TWFpbkZpbGVbCitOVl9QQVRIX0xFTl09eygweDE1ZCs5MTU5LTB4MjUyNCl9O2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17CisoMHgxOGNkKzI3NjUtMHgyMzlhKX07CiAjaWZkZWYgRk9UQV9BQgotVF9GTEFHU19JTkZPIGZsYWdzX2luZm89eygweDFkZDArMTgxOS0weDI0ZWIpfTtpbnQgcmV0PSgweDFlOSs4OTg2LTB4MjUwMyk7CitUX0ZMQUdTX0lORk8gZmxhZ3NfaW5mbz17KDB4ZmJjKzk4OS0weDEzOTkpfTtpbnQgcmV0PSgweDNmOSs1MTUwLTB4MTgxNyk7CiAjZW5kaWYKIGZvcihsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe3NucHJpbnRmKG52TWFpbkZpbGUsTlZfUEFUSF9MRU4sCiAiXHgyNVx4NzNceDJmXHgyNVx4NzMiLE5WX0ZTX01BSU5fUEFUSCxsaXN0LT5udkZpbGUpO3NucHJpbnRmKG52QmFja3VwRmlsZSwKQEAgLTEwNSw4MCArMTA2LDgwIEBACiBudk1haW5GaWxlKSl7aWYoIWNoZWNrTnZGcyhudkJhY2t1cEZpbGUpKXJlc3RvcmVOdkZzKG52QmFja3VwRmlsZSxudk1haW5GaWxlKTt9CiBlbHNlIGlmKGNoZWNrTnZGcyhudkJhY2t1cEZpbGUpKXtyZXN0b3JlTnZGcyhudk1haW5GaWxlLG52QmFja3VwRmlsZSk7fWVsc2V7CiBsb2FkRmFjdHJveVBhcmFtKGxpc3QpO252Y29tbWl0KGxpc3QtPm52RmlsZSk7Y29udGludWU7fWxvYWROdkZzKGxpc3QtPm52RmlsZSk7Ci1pZighc3RyY21wKGxpc3QtPm52RmlsZSxOVl9DRkcpJiZnZXRfdXBkYXRlX3N0YXR1cygpPT0oMHhlMDkrMjIxNC0weDE2YWQpKXsKK2lmKCFzdHJjbXAobGlzdC0+bnZGaWxlLE5WX0NGRykmJmdldF91cGRhdGVfc3RhdHVzKCk9PSgweGM3KzM1NzItMHhlYjkpKXsKIHJlbG9hZEZhY3Ryb3lQYXJhbShsaXN0KTtkZWxldGVfbm90X25lZWRlZChsaXN0KTtudmNvbW1pdChsaXN0LT5udkZpbGUpOwogI2lmZGVmIEZPVEFfQUIKIHJldD1mbGFnc19nZXQoJmZsYWdzX2luZm8pO2ZsYWdzX2luZm8uYm9vdF9mb3RhX2ZsYWcuZm90YV9zdGF0dXM9Ci0oMHgxMGI5KzU0NjYtMHgyNjEzKTtyZXQ9ZmxhZ3Nfc2V0KCZmbGFnc19pbmZvKTsKKygweDM4YSsxNzAtMHg0MzQpO3JldD1mbGFnc19zZXQoJmZsYWdzX2luZm8pOwogI2VuZGlmCi19fX11aW50IGhhc2goY29uc3QgY2hhcipzKXt1aW50IGhhc2g9KDB4MWQyNysyMjMwLTB4MjVkZCk7d2hpbGUoKnMpe2hhc2g9Cit9fX11aW50IGhhc2goY29uc3QgY2hhcipzKXt1aW50IGhhc2g9KDB4NzMxKzQyMjAtMHgxN2FkKTt3aGlsZSgqcyl7aGFzaD0KIE5WX0hBU0hfTVVMKmhhc2grKnMrKzt9cmV0dXJuIGhhc2g7fXN0YXRpYyBpbnQgbG9hZEZhY3Ryb3lQYXJhbShUX05WX05PREUqbGlzdCl7CiBjaGFyKnZhbD1OVUxMO0ZJTEUqZnA9TlVMTDtUX05WX0NPTkZJRypjb25maWc9TlVMTDtjaGFyIGJ1ZltOVl9NQVhfSVRFTV9MRU5dPXsKLSgweDIwZDUrNzkzLTB4MjNlZSl9O2Zvcihjb25maWc9bGlzdC0+ZmlsZUxpc3Q7Y29uZmlnO2NvbmZpZz1jb25maWctPm5leHQpe2ZwPQorKDB4Y2FiKzIwMTUtMHgxNDhhKX07Zm9yKGNvbmZpZz1saXN0LT5maWxlTGlzdDtjb25maWc7Y29uZmlnPWNvbmZpZy0+bmV4dCl7ZnA9CiBmb3Blbihjb25maWctPmNvbmZpZ0ZpbGUsIlx4NzJceDZmIik7aWYoIWZwKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDI1XHg3M1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDIwXHg2NVx4NzJceDcyXHg2ZVx4NmZceDIwXHgzZFx4MjBceDI1XHg2NFx4MjEiICJcbiIKICxjb25maWctPmNvbmZpZ0ZpbGUsZXJybm8pO3JldHVybiBSRVNVTFRfRklMRV9PUEVOX0ZBSUw7fXdoaWxlKGZnZXRzKGJ1ZiwKLU5WX01BWF9JVEVNX0xFTixmcCkpe2lmKGJ1ZlsoMHhlNDcrODM5LTB4MTE4ZSldPT0nXG4nfHxidWZbKDB4NTdjKzU0NzAtMHgxYWRhKV0KLT09KChjaGFyKSgweDE2ZDYrMjIxNy0weDFmNWMpKSljb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwKLSgoY2hhcikoMHhhNjcrMzYwMS0weDE4M2IpKSk7aWYoIXZhbCl7cHJpbnRmKAorTlZfTUFYX0lURU1fTEVOLGZwKSl7aWYoYnVmWygweDIwNys4NTc1LTB4MjM4NildPT0nXG4nfHxidWZbKDB4MWEwMys4MTAtMHgxZDJkKV0KKz09KChjaGFyKSgweDZjZis2NDg3LTB4MjAwMykpKWNvbnRpbnVlO3ZhbD1zdHJjaHIoYnVmLAorKChjaGFyKSgweDc0MSsyNzA1LTB4MTE5NSkpKTtpZighdmFsKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg3M1x4NzRceDcyXHg2OVx4NmVceDY3XHgyMFx4M2RceDIwXHgyNVx4NzMiICJcbiIKLSxjb25maWctPmNvbmZpZ0ZpbGUsYnVmKTtjb250aW51ZTt9aWYoYnVmW3N0cmxlbihidWYpLSgweDI2Yis0NzUwLTB4MTRmOCldPT0nXG4nCi0pYnVmW3N0cmxlbihidWYpLSgweDEzMjUrNDY5NC0weDI1N2EpXT0nXDAnOyp2YWwrKz0nXDAnO252c2V0KGxpc3QtPm52RmlsZSxidWYsCi12YWwsKDB4ODkrMTMtMHg5NSkpO31wcmludGYoCissY29uZmlnLT5jb25maWdGaWxlLGJ1Zik7Y29udGludWU7fWlmKGJ1ZltzdHJsZW4oYnVmKS0oMHgxMzFkKzEyNDMtMHgxN2Y3KV09PQorJ1xuJylidWZbc3RybGVuKGJ1ZiktKDB4MWRmMis4NDktMHgyMTQyKV09J1wwJzsqdmFsKys9J1wwJztudnNldChsaXN0LT5udkZpbGUsCitidWYsdmFsLCgweDhiNys0MTQ1LTB4MThlNykpO31wcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2Y1x4NmZceDYxXHg2NFx4NDZceDYxXHg2M1x4NzRceDcyXHg2Zlx4NzlceDUwXHg2MVx4NzJceDYxXHg2ZFx4MjBceDI1XHg3M1x4MjEiICJcbiIKICxjb25maWctPmNvbmZpZ0ZpbGUpO2ZjbG9zZShmcCk7fXJldHVybiBSRVNVTFRfU1VDQ0VTUzt9c3RhdGljIGJvb2wgY2hlY2tOdkZzKAotY2hhcipmaWxlKXtpbnQgbGVuPSgweDU3ZCs0Mjg4LTB4MTYzZCk7aW50IGNudD0oMHgxMmM4Kzk1OC0weDE2ODYpO0ZJTEUqZnA9TlVMTDsKLWNoYXIqYnVmPU5VTEw7c3RydWN0IHN0YXQgc3RhdGJ1ZmY9eygweDE5OCs0ODEzLTB4MTQ2NSl9O2lmKHN0YXQoZmlsZSwmc3RhdGJ1ZmYpCi08KDB4MmYxKzQ3OS0weDRkMCkpcmV0dXJuIGZhbHNlO2xlbj1zdGF0YnVmZi5zdF9zaXplO2lmKGxlbjxOVl9DSEVDS19TSVpFKXJldHVybgotIGZhbHNlO2ZwPWZvcGVuKGZpbGUsIlx4NzJceDZmIik7aWYoIWZwKXJldHVybiBmYWxzZTtidWY9KGNoYXIqKW1hbGxvYyhsZW4pO2lmKCEKLWJ1Zil7ZmNsb3NlKGZwKTtyZXR1cm4gZmFsc2U7fWNudD0oMHg2YzUrNTIxMy0weDFiMjIpO3doaWxlKGNudDxsZW4pe2NudD1jbnQrCi1mcmVhZChidWYrY250LCgweDIwZisyNzE1LTB4Y2E5KSxsZW4tY250LGZwKTtpZihmZXJyb3IoZnApKXtjbGVhcmVycihmcCk7ZnJlZSgKLWJ1Zik7ZmNsb3NlKGZwKTtyZXR1cm4gZmFsc2U7fX1pZihsZW4hPWNudCl7ZnJlZShidWYpO2ZjbG9zZShmcCk7cmV0dXJuIGZhbHNlO30KLWlmKGdldFN1bShidWYsbGVuLU5WX0NIRUNLX1NJWkUpK05WX0ZJTEVfRkxBRyE9Kih1aW50KikoYnVmK2xlbi1OVl9DSEVDS19TSVpFKSl7Ci1mcmVlKGJ1Zik7ZmNsb3NlKGZwKTtyZXR1cm4gZmFsc2U7fWZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiB0cnVlO31zdGF0aWMgaW50IAotY29weWZpbGUoY29uc3QgY2hhcipmcm9tLGNvbnN0IGNoYXIqdG8pe2ludCBmZF90bztpbnQgZmRfZnJvbTtjaGFyIGJ1ZlsKLSgweDEzMzYrMTY4Ny0weDljZCldO3NzaXplX3QgbnJlYWQ7aW50IHJldD0tKDB4MzYxKzYwNjktMHgxYjE1KTtmZF9mcm9tPW9wZW4oCi1mcm9tLE9fUkRPTkxZKTtpZihmZF9mcm9tPCgweDE2MmQrMzQtMHgxNjRmKSlyZXR1cm4tKDB4ODkzKzY0NTYtMHgyMWM5KTtmZF90bz0KLW9wZW4odG8sT19SRFdSfE9fQ1JFQVR8T19UUlVOQ3xPX1NZTkMsKDB4YWQ0KzI0MDAtMHgxMjk0KSk7aWYoZmRfdG88Ci0oMHg0NTgrNjIyLTB4NmM2KSl7cmV0PS0oMHgxMDBiKzQ3NDktMHgyMjk1KTtnb3RvIG91dF9lcnJvcjt9d2hpbGUoCi0oMHhjNDYrNDMwNy0weDFkMTgpKXtjaGFyKm91dF9wdHI7c3NpemVfdCBud3JpdHRlbjtucmVhZD1yZWFkKGZkX2Zyb20sYnVmLHNpemVvZgotKGJ1ZikpO2lmKG5yZWFkPT0oMHgzMDMrNDIyMC0weDEzN2YpKXticmVhazt9ZWxzZXtpZihucmVhZDwoMHg5NGMrMzQwNS0weDE2OTkpKXsKLWlmKGVycm5vPT1FSU5UUnx8ZXJybm89PUVBR0FJTil7Y29udGludWU7fWVsc2V7cmV0PS0oMHhjNmErMTg2OC0weDEzYjIpO2dvdG8gCi1vdXRfZXJyb3I7fX19b3V0X3B0cj1idWY7ZG97bndyaXR0ZW49d3JpdGUoZmRfdG8sb3V0X3B0cixucmVhZCk7aWYobndyaXR0ZW4+Ci0oMHhjZDYrMzk1My0weDFjNDcpKXtucmVhZC09bndyaXR0ZW47b3V0X3B0cis9bndyaXR0ZW47fWVsc2V7aWYobndyaXR0ZW48Ci0oMHgxZGJmKzc1My0weDIwYjApKXtpZihlcnJubz09RUlOVFJ8fGVycm5vPT1FQUdBSU4pe2NvbnRpbnVlO31lbHNle3JldD0tCi0oMHhiY2QrNjgxMi0weDI2NjQpO2dvdG8gb3V0X2Vycm9yO319fX13aGlsZShucmVhZD4oMHgxMGU4KzU1MTMtMHgyNjcxKSk7fXJldD0KLWZzeW5jKGZkX3RvKTtpZihyZXQ8KDB4N2E0KzczMTktMHgyNDNiKSl7cHJpbnRmKAorY2hhcipmaWxlKXtpbnQgbGVuPSgweDFkNTErMTIxMC0weDIyMGIpO2ludCBjbnQ9KDB4MTI1YyszNjE2LTB4MjA3Yyk7RklMRSpmcD0KK05VTEw7Y2hhcipidWY9TlVMTDtzdHJ1Y3Qgc3RhdCBzdGF0YnVmZj17KDB4MTg2YSsxMzk2LTB4MWRkZSl9O2lmKHN0YXQoZmlsZSwmCitzdGF0YnVmZik8KDB4MTg0KzIyNzgtMHhhNmEpKXJldHVybiBmYWxzZTtsZW49c3RhdGJ1ZmYuc3Rfc2l6ZTtpZihsZW48CitOVl9DSEVDS19TSVpFKXJldHVybiBmYWxzZTtmcD1mb3BlbihmaWxlLCJceDcyXHg2ZiIpO2lmKCFmcClyZXR1cm4gZmFsc2U7YnVmPSgKK2NoYXIqKW1hbGxvYyhsZW4pO2lmKCFidWYpe2ZjbG9zZShmcCk7cmV0dXJuIGZhbHNlO31jbnQ9KDB4ZjE0KzQ1MDItMHgyMGFhKTsKK3doaWxlKGNudDxsZW4pe2NudD1jbnQrZnJlYWQoYnVmK2NudCwoMHg2YjIrNzk2NC0weDI1Y2QpLGxlbi1jbnQsZnApO2lmKGZlcnJvcigKK2ZwKSl7Y2xlYXJlcnIoZnApO2ZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9fWlmKGxlbiE9Y250KXtmcmVlKGJ1Zik7CitmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9aWYoZ2V0U3VtKGJ1ZixsZW4tTlZfQ0hFQ0tfU0laRSkrTlZfRklMRV9GTEFHIT0qKHVpbnQqKQorKGJ1ZitsZW4tTlZfQ0hFQ0tfU0laRSkpe2ZyZWUoYnVmKTtmY2xvc2UoZnApO3JldHVybiBmYWxzZTt9ZnJlZShidWYpO2ZjbG9zZShmcCkKKztyZXR1cm4gdHJ1ZTt9c3RhdGljIGludCBjb3B5ZmlsZShjb25zdCBjaGFyKmZyb20sY29uc3QgY2hhcip0byl7aW50IGZkX3RvO2ludCAKK2ZkX2Zyb207Y2hhciBidWZbKDB4MTI2YysxNTE5LTB4ODViKV07c3NpemVfdCBucmVhZDtpbnQgcmV0PS0oMHg4OTMrNzU1My0weDI2MTMpCis7ZmRfZnJvbT1vcGVuKGZyb20sT19SRE9OTFkpO2lmKGZkX2Zyb208KDB4YWZhKzY0ODUtMHgyNDRmKSlyZXR1cm4tCisoMHg2MjErMTczOS0weGNlYSk7ZmRfdG89b3Blbih0byxPX1JEV1J8T19DUkVBVHxPX1RSVU5DfE9fU1lOQywKKygweDFjZjkrOTY0LTB4MWYxZCkpO2lmKGZkX3RvPCgweDM0MCs2NzQ2LTB4MWQ5YSkpe3JldD0tKDB4NTcrODg0LTB4M2M4KTtnb3RvIAorb3V0X2Vycm9yO313aGlsZSgoMHgyMzg1Kzc5MC0weDI2OWEpKXtjaGFyKm91dF9wdHI7c3NpemVfdCBud3JpdHRlbjtucmVhZD1yZWFkKAorZmRfZnJvbSxidWYsc2l6ZW9mKGJ1ZikpO2lmKG5yZWFkPT0oMHg0YzMrNzcyMy0weDIyZWUpKXticmVhazt9ZWxzZXtpZihucmVhZDwKKygweDIwY2YrMjgzLTB4MjFlYSkpe2lmKGVycm5vPT1FSU5UUnx8ZXJybm89PUVBR0FJTil7Y29udGludWU7fWVsc2V7cmV0PS0KKygweDg2YSs3NTk1LTB4MjYxMSk7Z290byBvdXRfZXJyb3I7fX19b3V0X3B0cj1idWY7ZG97bndyaXR0ZW49d3JpdGUoZmRfdG8sCitvdXRfcHRyLG5yZWFkKTtpZihud3JpdHRlbj4oMHhjNzUrMjQ0OS0weDE2MDYpKXtucmVhZC09bndyaXR0ZW47b3V0X3B0cis9Citud3JpdHRlbjt9ZWxzZXtpZihud3JpdHRlbjwoMHhhMzQrNjAzNC0weDIxYzYpKXtpZihlcnJubz09RUlOVFJ8fGVycm5vPT1FQUdBSU4peworY29udGludWU7fWVsc2V7cmV0PS0oMHhkZjgrNzQzLTB4MTBkYSk7Z290byBvdXRfZXJyb3I7fX19fXdoaWxlKG5yZWFkPgorKDB4MjZjMCszMi0weDI2ZTApKTt9cmV0PWZzeW5jKGZkX3RvKTtpZihyZXQ8KDB4ZTU0KzIwODItMHgxNjc2KSl7cHJpbnRmKAogIlx4NTNceDc5XHg2ZVx4NjNceDIwXHg0Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgzYVx4MjVceDczXHgyY1x4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NzBceDYxXHg3NFx4NjhceDNhXHgyNVx4NzMiCi0sc3RyZXJyb3IoZXJybm8pLHRvKTtnb3RvIG91dF9lcnJvcjt9aWYoY2xvc2UoZmRfdG8pPCgweDY4NSszMjEwLTB4MTMwZikpe2ZkX3RvPQotLSgweDE0OTkrNDYwNi0weDI2OTYpO3JldD0tKDB4MTM3MCszNjcwLTB4MjFjMCk7Z290byBvdXRfZXJyb3I7fWNsb3NlKGZkX2Zyb20pOwotcmV0dXJuKDB4MTA3YSsyMDI2LTB4MTg2NCk7b3V0X2Vycm9yOnByaW50ZigKKyxzdHJlcnJvcihlcnJubyksdG8pO2dvdG8gb3V0X2Vycm9yO31pZihjbG9zZShmZF90byk8KDB4MjBmNisxMTc1LTB4MjU4ZCkpe2ZkX3RvCis9LSgweDFhYmMrNzQ5LTB4MWRhOCk7cmV0PS0oMHgxYzkwKzI1MDgtMHgyNjU2KTtnb3RvIG91dF9lcnJvcjt9Y2xvc2UoZmRfZnJvbSk7CityZXR1cm4oMHhlMDQrMTU5OS0weDE0NDMpO291dF9lcnJvcjpwcmludGYoCiAiXHg2M1x4NmZceDcwXHg3OVx4NjZceDY5XHg2Y1x4NjVceDIwXHgyNVx4NzNceDIwXHg3NFx4NmZceDIwXHgyNVx4NzNceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSxmcm9tLHRvLHJldCk7Y2xvc2UoZmRfZnJvbSk7aWYoZmRfdG8+PSgweDEzMWMrMTY5OC0weDE5YmUpKWNsb3NlKGZkX3RvKTtyZXR1cm4gCissZnJvbSx0byxyZXQpO2Nsb3NlKGZkX2Zyb20pO2lmKGZkX3RvPj0oMHgxZWJjKzc0MS0weDIxYTEpKWNsb3NlKGZkX3RvKTtyZXR1cm4gCiByZXQ7fXN0YXRpYyBpbnQgcmVzdG9yZU52RnMoY2hhcipkc3RGaWxlLGNoYXIqc3JjRmlsZSl7aWYoY29weWZpbGUoc3JjRmlsZSwKLWRzdEZpbGUpIT0oMHgxNTVmKzY2MC0weDE3ZjMpKXJldHVybiBSRVNVTFRfRkFJTDtyZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXN0YXRpYyAKLWludCBsb2FkTnZGcyhjaGFyKmZpbGUpe2ludCBsZW49KDB4MTA0YSsyODA0LTB4MWIzZSk7aW50IGNudD0oMHhlYjkrNTM3MC0weDIzYjMpCi07RklMRSpmcD1OVUxMO2NoYXIqYnVmPU5VTEw7Y2hhcipuYW1lPU5VTEw7Y2hhcip2YWx1ZT1OVUxMO2NoYXIqZXE9TlVMTDtzdHJ1Y3QgCi1zdGF0IHN0YXRidWZmPXsoMHhiMjIrMTk4NS0weDEyZTMpfTtjaGFyIG52RmlsZVtOVl9QQVRIX0xFTl09ewotKDB4MTUwYyszOTEyLTB4MjQ1NCl9O3NwcmludGYobnZGaWxlLCJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfTUFJTl9QQVRILGZpbGUKLSk7aWYoc3RhdChudkZpbGUsJnN0YXRidWZmKTwoMHhiZjErMTY0NC0weDEyNWQpKXJldHVybiBSRVNVTFRfRkFJTDtsZW49c3RhdGJ1ZmYuCi1zdF9zaXplO2lmKE5WX0NIRUNLX1NJWkU+bGVuKXJldHVybiBSRVNVTFRfRkFJTDtmcD1mb3BlbihudkZpbGUsIlx4NzJceDZmIik7aWYoIQotZnApcmV0dXJuIFJFU1VMVF9GSUxFX09QRU5fRkFJTDtsZW49bGVuLU5WX0NIRUNLX1NJWkU7YnVmPShjaGFyKiltYWxsb2MobGVuKwotKDB4MTVjMCsxOTU2LTB4MWQ2MykpO2lmKCFidWYpe2ZjbG9zZShmcCk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bWVtc2V0KGJ1ZiwKLSgweDE4ZjQrMTUzMC0weDFlZWUpLGxlbisoMHhlMTcrMjg2NC0weDE5NDYpKTtjbnQ9KDB4YzhhKzY0NDItMHgyNWI0KTt3aGlsZShjbnQ8Ci1sZW4pe2NudD1jbnQrZnJlYWQoYnVmK2NudCwoMHg4MGMrMTk5NS0weGZkNiksbGVuLWNudCxmcCk7aWYoZmVycm9yKGZwKSl7Citkc3RGaWxlKSE9KDB4MTZmKzMxMjgtMHhkYTcpKXJldHVybiBSRVNVTFRfRkFJTDtyZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXN0YXRpYyAKK2ludCBsb2FkTnZGcyhjaGFyKmZpbGUpe2ludCBsZW49KDB4MjAzMis3NTYtMHgyMzI2KTtpbnQgY250PSgweDFjMTQrNjc2LTB4MWViOCk7CitGSUxFKmZwPU5VTEw7Y2hhcipidWY9TlVMTDtjaGFyKm5hbWU9TlVMTDtjaGFyKnZhbHVlPU5VTEw7Y2hhciplcT1OVUxMO3N0cnVjdCAKK3N0YXQgc3RhdGJ1ZmY9eygweGJjOSs2MTEtMHhlMmMpfTtjaGFyIG52RmlsZVtOVl9QQVRIX0xFTl09eygweDliKzEyNDUtMHg1NzgpfTsKK3NwcmludGYobnZGaWxlLCJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfTUFJTl9QQVRILGZpbGUpO2lmKHN0YXQobnZGaWxlLCYKK3N0YXRidWZmKTwoMHgxMzc0KzM0NDMtMHgyMGU3KSlyZXR1cm4gUkVTVUxUX0ZBSUw7bGVuPXN0YXRidWZmLnN0X3NpemU7aWYoCitOVl9DSEVDS19TSVpFPmxlbilyZXR1cm4gUkVTVUxUX0ZBSUw7ZnA9Zm9wZW4obnZGaWxlLCJceDcyXHg2ZiIpO2lmKCFmcClyZXR1cm4gCitSRVNVTFRfRklMRV9PUEVOX0ZBSUw7bGVuPWxlbi1OVl9DSEVDS19TSVpFO2J1Zj0oY2hhciopbWFsbG9jKGxlbisKKygweDE4OTgrMC0weDE4OTcpKTtpZighYnVmKXtmY2xvc2UoZnApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW1lbXNldChidWYsCisoMHhlNjErNDY5OS0weDIwYmMpLGxlbisoMHgxMGRkKzQ3NDgtMHgyMzY4KSk7Y250PSgweDI5Yys4NzUwLTB4MjRjYSk7d2hpbGUoY250PAorbGVuKXtjbnQ9Y250K2ZyZWFkKGJ1ZitjbnQsKDB4ZWM3KzM5MTEtMHgxZTBkKSxsZW4tY250LGZwKTtpZihmZXJyb3IoZnApKXsKIGNsZWFyZXJyKGZwKTtmY2xvc2UoZnApO2ZyZWUoYnVmKTtyZXR1cm4gUkVTVUxUX0ZJTEVfUkVBRF9GQUlMO319aWYoY250IT1sZW4pewogZmNsb3NlKGZwKTtmcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1JFQURfRkFJTDt9YnVmW2xlbl09J1wwJztuYW1lPWJ1Zjt3aGlsZSgKLSpuYW1lKXtpZighKGVxPXN0cmNocihuYW1lLCgoY2hhcikoMHg0YTkrMTc2Mi0weGI0ZSkpKSkpe2JyZWFrO30qZXE9J1wwJzt2YWx1ZT0KLWVxKygweDExNmYrMjQyMC0weDFhZTIpO252c2V0KGZpbGUsbmFtZSx2YWx1ZSwoMHgyNjA1KzE1My0weDI2OWQpKTsqZXE9Ci0oKGNoYXIpKDB4MTM0YysyNTU5LTB4MWQwZSkpO25hbWU9dmFsdWUrc3RybGVuKHZhbHVlKSsoMHg0NTkrMTc0OC0weGIyYyk7fWZyZWUoCi1idWYpO2ZjbG9zZShmcCk7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO31zdGF0aWMgdm9pZCBhbmFseU1zZyhUX05WX01TR19JTkZPKgotbXNncmVjdixUX05WX01TR19SRVNVTFQqbXNnc25kKXtzd2l0Y2gobXNncmVjdi0+bnZUeXBlKXtjYXNlIE1TR19HRVQ6bXNnc25kLT4KLXJlc3VsdD1udmdldChtc2dyZWN2LT5maWxlLG1zZ3JlY3YtPmtleSxtc2dzbmQtPnZhbHVlKTticmVhaztjYXNlIE1TR19TRVQ6bXNnc25kCi0tPnJlc3VsdD1udnNldChtc2dyZWN2LT5maWxlLG1zZ3JlY3YtPmtleSxtc2dyZWN2LT52YWx1ZSxtc2dyZWN2LT5zYXZlZmxhZyk7Ci1icmVhaztjYXNlIE1TR19VTlNFVDptc2dzbmQtPnJlc3VsdD1udnVuc2V0KG1zZ3JlY3YtPmZpbGUsbXNncmVjdi0+a2V5KTticmVhazsKLWNhc2UgTVNHX0NMRUFSOm1zZ3NuZC0+cmVzdWx0PW52Y2xlYXIobXNncmVjdi0+ZmlsZSk7YnJlYWs7Y2FzZSBNU0dfUkVTRVQ6bXNnc25kCi0tPnJlc3VsdD1udnJlc2V0KG1zZ3JlY3YtPmZpbGUpO2JyZWFrO2Nhc2UgTVNHX1NIT1c6bXNnc25kLT5yZXN1bHQ9c2F2ZU52RnMoCisqbmFtZSl7aWYoIShlcT1zdHJjaHIobmFtZSwoKGNoYXIpKDB4NTlmKzEyNjAtMHhhNGUpKSkpKXticmVhazt9KmVxPSdcMCc7dmFsdWU9CitlcSsoMHgxNDkzKzE2ODQtMHgxYjI2KTtudnNldChmaWxlLG5hbWUsdmFsdWUsKDB4MTI2KzM4MjEtMHgxMDEyKSk7KmVxPQorKChjaGFyKSgweGQ1YyszOTgxLTB4MWNhYykpO25hbWU9dmFsdWUrc3RybGVuKHZhbHVlKSsoMHgyMmYrNTIxLTB4NDM3KTt9ZnJlZShidWYKKyk7ZmNsb3NlKGZwKTtyZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXN0YXRpYyB2b2lkIGFuYWx5TXNnKFRfTlZfTVNHX0lORk8qbXNncmVjdiwKK1RfTlZfTVNHX1JFU1VMVCptc2dzbmQpe3N3aXRjaChtc2dyZWN2LT5udlR5cGUpe2Nhc2UgTVNHX0dFVDptc2dzbmQtPnJlc3VsdD0KK252Z2V0KG1zZ3JlY3YtPmZpbGUsbXNncmVjdi0+a2V5LG1zZ3NuZC0+dmFsdWUpO2JyZWFrO2Nhc2UgTVNHX1NFVDptc2dzbmQtPgorcmVzdWx0PW52c2V0KG1zZ3JlY3YtPmZpbGUsbXNncmVjdi0+a2V5LG1zZ3JlY3YtPnZhbHVlLG1zZ3JlY3YtPnNhdmVmbGFnKTticmVhazsKK2Nhc2UgTVNHX1VOU0VUOm1zZ3NuZC0+cmVzdWx0PW52dW5zZXQobXNncmVjdi0+ZmlsZSxtc2dyZWN2LT5rZXkpO2JyZWFrO2Nhc2UgCitNU0dfQ0xFQVI6bXNnc25kLT5yZXN1bHQ9bnZjbGVhcihtc2dyZWN2LT5maWxlKTticmVhaztjYXNlIE1TR19SRVNFVDptc2dzbmQtPgorcmVzdWx0PW52cmVzZXQobXNncmVjdi0+ZmlsZSk7YnJlYWs7Y2FzZSBNU0dfU0hPVzptc2dzbmQtPnJlc3VsdD1zYXZlTnZGcygKIG1zZ3JlY3YtPmZpbGUsTlZfRlNfU0hPVyk7O2JyZWFrO2Nhc2UgTVNHX0NPTU1JVDptc2dzbmQtPnJlc3VsdD1udmNvbW1pdChtc2dyZWN2CiAtPmZpbGUpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fW1zZ3NuZC0+bXNnVHlwZT1tc2dyZWN2LT5waWQ7bXNnc25kLT5tc2dJbmRleD0KIG1zZ3JlY3YtPm1zZ0luZGV4O31zdGF0aWMgaW50IGFkZENvbmZpZ0ZpbGUoY2hhcipudkZpbGUsY2hhcipjb25maWdGaWxlKXsKQEAgLTE4NywxMDMgKzE4OCwxMDQgQEAKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDIwXHg2OVx4NmNceDZjXHg2NVx4NjdceDYxXHg2Y1x4MjEiICJcbiIKICk7cmV0dXJuIFJFU1VMVF9JTlZBTDt9aWYoY29uZmlnRmlsZSl7bmV3Q29uZmlnPShUX05WX0NPTkZJRyopbWFsbG9jKHNpemVvZigKIFRfTlZfQ09ORklHKSk7aWYoIW5ld0NvbmZpZylyZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO3N0cm5jcHkobmV3Q29uZmlnLT4KLWNvbmZpZ0ZpbGUsY29uZmlnRmlsZSxOVl9QQVRIX0xFTi0oMHg5YSs4MDM5LTB4MjAwMCkpO25ld0NvbmZpZy0+Y29uZmlnRmlsZVsKLU5WX1BBVEhfTEVOLSgweDI4Mis1ODkyLTB4MTk4NSldPSdcMCc7bmV3Q29uZmlnLT5uZXh0PU5VTEw7fWZvcihsaXN0PW52X2xpc3Q7Ci1saXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxudkZpbGUpPT0oMHg0NzIrOTM3LTB4ODFiKSlicmVhazt9Ci1pZighbGlzdCl7bmV3TGlzdD0oVF9OVl9OT0RFKiltYWxsb2Moc2l6ZW9mKFRfTlZfTk9ERSkpO2lmKCFuZXdMaXN0KXtpZigKLW5ld0NvbmZpZylmcmVlKG5ld0NvbmZpZyk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3TGlzdC0+bmV4dD1OVUxMO3N0cm5jcHkoCi1uZXdMaXN0LT5udkZpbGUsbnZGaWxlLE5WX1BBVEhfTEVOLSgweDE5ZGQrMjgxNC0weDI0ZGEpKTtuZXdMaXN0LT5udkZpbGVbCi1OVl9QQVRIX0xFTi0oMHgxNWZhKzc4Ny0weDE5MGMpXT0nXDAnO21lbXNldChuZXdMaXN0LT5udlRhYmxlLCgweDNhNCsxNzgwLTB4YTk4KQotLE5WX0hBU0hfTEVOKigweDY5Yis3NjQ4LTB4MjQ3NykpO25ld0xpc3QtPmZpbGVMaXN0PW5ld0NvbmZpZztpZighbnZfbGlzdCkKLW52X2xpc3Q9bmV3TGlzdDtlbHNle25ld0xpc3QtPm5leHQ9bnZfbGlzdC0+bmV4dDtudl9saXN0LT5uZXh0PW5ld0xpc3Q7fX1lbHNlIGlmCi0oIWxpc3QtPmZpbGVMaXN0KWxpc3QtPmZpbGVMaXN0PW5ld0NvbmZpZztlbHNle2lmKG5ld0NvbmZpZz09TlVMTClyZXR1cm4gCi1SRVNVTFRfRkFJTDtuZXdDb25maWctPm5leHQ9bGlzdC0+ZmlsZUxpc3QtPm5leHQ7bGlzdC0+ZmlsZUxpc3QtPm5leHQ9bmV3Q29uZmlnOwotfXJldHVybiBSRVNVTFRfU1VDQ0VTUzt9c3RhdGljIGJvb2wgaXNDZmdDb25maWdlZChjaGFyKmNvbmZpZ0ZpbGUpe1RfTlZfTk9ERSoKLWxpc3Q9TlVMTDtUX05WX0NPTkZJRypjb25maWc9TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtmb3IoCi1jb25maWc9bGlzdC0+ZmlsZUxpc3Q7Y29uZmlnO2NvbmZpZz1jb25maWctPm5leHQpe2lmKCFzdHJjbXAoY29uZmlnLT5jb25maWdGaWxlLAotY29uZmlnRmlsZSkpcmV0dXJuIHRydWU7fX1yZXR1cm4gZmFsc2U7fXN0YXRpYyBib29sIGlzTnZDb25maWdlZChjaGFyKm52RmlsZSl7Ci1UX05WX05PREUqbGlzdD1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKCFzdHJjbXAobGlzdC0+Ci1udkZpbGUsbnZGaWxlKSlyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO31zdGF0aWMgdWludCBnZXRTdW0oY29uc3QgY2hhcipzLGludCAKLWxlbil7dWludCBzdW09KDB4ZjVhKzUxMzAtMHgyMzY0KTtjaGFyKmRhdGE9KGNoYXIqKXM7d2hpbGUobGVuLS0gPgotKDB4YmM1KzM4MjAtMHgxYWIxKSl7c3VtKz0oKmRhdGErKyk7fXJldHVybiBzdW07fXN0YXRpYyBpbnQgc2F2ZU52RnMoY2hhcipudk5hbWUKLSxjaGFyKm52RmlsZSl7aW50IGk9KDB4NWIyKzMyNTYtMHgxMjZhKTtpbnQgc3VtPSgweDhjYSs5MjgtMHhjNmEpO2ludCBidWZTaXplPQotKDB4MTdlZisxNjk0LTB4MWU4ZCk7aW50IGl0ZW1TaXplPSgweDczYSs1NDY4LTB4MWM5Nik7aW50IHJldD0KLSgweDIwNis5MTcyLTB4MjVkYSk7aW50IGZwPSgweDFkYTcrMTExNi0weDIyMDMpO2NoYXIqYnVmPU5VTEw7VF9OVl9OT0RFKmxpc3Q9Ci1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPgotbnZGaWxlLG52TmFtZSkpY29udGludWU7ZnA9b3BlbihudkZpbGUsT19TWU5DfE9fUkRXUnxPX0NSRUFUfE9fVFJVTkMsCi0oMHgxOWE0KzEyNTYtMHgxY2VjKSk7aWYoZnA9PS0oMHgxM2E1KzI1Mi0weDE0YTApKXtwcmludGYoCitjb25maWdGaWxlLGNvbmZpZ0ZpbGUsTlZfUEFUSF9MRU4tKDB4MWYyOCs3MDktMHgyMWVjKSk7bmV3Q29uZmlnLT5jb25maWdGaWxlWworTlZfUEFUSF9MRU4tKDB4MjkxKzM0NS0weDNlOSldPSdcMCc7bmV3Q29uZmlnLT5uZXh0PU5VTEw7fWZvcihsaXN0PW52X2xpc3Q7bGlzdDsKK2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxudkZpbGUpPT0oMHgyMWIrMzA4OS0weGUyYykpYnJlYWs7fWlmKCEKK2xpc3Qpe25ld0xpc3Q9KFRfTlZfTk9ERSopbWFsbG9jKHNpemVvZihUX05WX05PREUpKTtpZighbmV3TGlzdCl7aWYobmV3Q29uZmlnKQorZnJlZShuZXdDb25maWcpO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW5ld0xpc3QtPm5leHQ9TlVMTDtzdHJuY3B5KG5ld0xpc3QtPgorbnZGaWxlLG52RmlsZSxOVl9QQVRIX0xFTi0oMHhlNjErNTA2MC0weDIyMjQpKTtuZXdMaXN0LT5udkZpbGVbTlZfUEFUSF9MRU4tCisoMHg3MDQrMzIzNi0weDEzYTcpXT0nXDAnO21lbXNldChuZXdMaXN0LT5udlRhYmxlLCgweDg4NysxMzgxLTB4ZGVjKSxOVl9IQVNIX0xFTgorKigweDE4NTgrMTg0Mi0weDFmODYpKTtuZXdMaXN0LT5maWxlTGlzdD1uZXdDb25maWc7aWYoIW52X2xpc3QpbnZfbGlzdD1uZXdMaXN0OworZWxzZXtuZXdMaXN0LT5uZXh0PW52X2xpc3QtPm5leHQ7bnZfbGlzdC0+bmV4dD1uZXdMaXN0O319ZWxzZSBpZighbGlzdC0+ZmlsZUxpc3QKKylsaXN0LT5maWxlTGlzdD1uZXdDb25maWc7ZWxzZXtpZihuZXdDb25maWc9PU5VTEwpcmV0dXJuIFJFU1VMVF9GQUlMO25ld0NvbmZpZy0+CituZXh0PWxpc3QtPmZpbGVMaXN0LT5uZXh0O2xpc3QtPmZpbGVMaXN0LT5uZXh0PW5ld0NvbmZpZzt9cmV0dXJuIFJFU1VMVF9TVUNDRVNTOworfXN0YXRpYyBib29sIGlzQ2ZnQ29uZmlnZWQoY2hhcipjb25maWdGaWxlKXtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfQ09ORklHKgorY29uZmlnPU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7Zm9yKGNvbmZpZz1saXN0LT5maWxlTGlzdDsKK2NvbmZpZztjb25maWc9Y29uZmlnLT5uZXh0KXtpZighc3RyY21wKGNvbmZpZy0+Y29uZmlnRmlsZSxjb25maWdGaWxlKSlyZXR1cm4gCit0cnVlO319cmV0dXJuIGZhbHNlO31zdGF0aWMgYm9vbCBpc052Q29uZmlnZWQoY2hhcipudkZpbGUpe1RfTlZfTk9ERSpsaXN0PU5VTEw7Citmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZighc3RyY21wKGxpc3QtPm52RmlsZSxudkZpbGUpKXJldHVybiAKK3RydWU7fXJldHVybiBmYWxzZTt9c3RhdGljIHVpbnQgZ2V0U3VtKGNvbnN0IGNoYXIqcyxpbnQgbGVuKXt1aW50IHN1bT0KKygweDIwYjkrNjYyLTB4MjM0Zik7Y2hhcipkYXRhPShjaGFyKilzO3doaWxlKGxlbi0tID4oMHg5M2QrNjI2My0weDIxYjQpKXtzdW0rPSgqCitkYXRhKyspO31yZXR1cm4gc3VtO31zdGF0aWMgaW50IHNhdmVOdkZzKGNoYXIqbnZOYW1lLGNoYXIqbnZGaWxlKXtpbnQgaT0KKygweDhhYis1NzYzLTB4MWYyZSk7aW50IHN1bT0oMHhmZWMrNDU3NS0weDIxY2IpO2ludCBidWZTaXplPSgweGVkYSs1OTgzLTB4MjYzOSk7CitpbnQgaXRlbVNpemU9KDB4MTQ2OCsyMDc2LTB4MWM4NCk7aW50IHJldD0oMHhhNDArNjgxOS0weDI0ZTMpO2ludCBmcD0KKygweGU0Kzg2ODMtMHgyMmNmKTtjaGFyKmJ1Zj1OVUxMO1RfTlZfTk9ERSpsaXN0PU5VTEw7VF9OVl9JVEVNKml0ZW09TlVMTDtmb3IoCitsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT5udkZpbGUsbnZOYW1lKSljb250aW51ZTtmcD0KK29wZW4obnZGaWxlLE9fU1lOQ3xPX1JEV1J8T19DUkVBVHxPX1RSVU5DLCgweDRhNCs0NTMzLTB4MTRiOSkpO2lmKGZwPT0tCisoMHgxMDM2Kzc1My0weDEzMjYpKXtwcmludGYoCiAiXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDI1XHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHgyY1x4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKICxudkZpbGUsZXJybm8pO3JldHVybiBSRVNVTFRfRklMRV9PUEVOX0ZBSUw7fWJ1Zj0oY2hhciopbWFsbG9jKE5WX0JMT0NLX1NJWkUpO2lmCi0oIWJ1Zil7Y2xvc2UoZnApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fWZvcihpPSgweDFjMyszNzIzLTB4MTA0ZSk7aTwKKyghYnVmKXtjbG9zZShmcCk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9Zm9yKGk9KDB4Zjg2KzE4NjctMHgxNmQxKTtpPAogTlZfSEFTSF9MRU47aSsrKXtmb3IoaXRlbT1saXN0LT5udlRhYmxlW2ldO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoCiBudkZpbGUsTlZfRlNfU0hPVykmJiFpdGVtLT5zYXZlRmxhZyljb250aW51ZTtpdGVtU2l6ZT1zdHJsZW4oaXRlbS0+a2V5KStzdHJsZW4oCi1pdGVtLT52YWx1ZSkrKDB4MTFlMysyMzQ2LTB4MWIwYik7aWYoYnVmU2l6ZStpdGVtU2l6ZT5OVl9CTE9DS19TSVpFKXtpZih3cml0ZShmcAotLGJ1ZixidWZTaXplKTwoMHgxN2Q0KzUwNC0weDE5Y2MpKXtwcmludGYoCitpdGVtLT52YWx1ZSkrKDB4MjBkMCsxMTI2LTB4MjUzNCk7aWYoYnVmU2l6ZStpdGVtU2l6ZT5OVl9CTE9DS19TSVpFKXtpZih3cml0ZShmcAorLGJ1ZixidWZTaXplKTwoMHgxY2Y1KzM4NS0weDFlNzYpKXtwcmludGYoCiAiXHg2NVx4NzJceDcyXHg2Zlx4NzJceDIwXHgyNVx4NzNceDIwXHgyNVx4NjRceDNhXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDIwXHg2NVx4NzJceDcyXHg2ZVx4NmZceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLF9fRklMRV9fLF9fTElORV9fLGVycm5vKTtjbG9zZShmcCk7ZnJlZShidWYpO3JldHVybiBSRVNVTFRfRklMRV9XUklURV9GQUlMO31zdW0KLSs9Z2V0U3VtKGJ1ZixidWZTaXplKTtidWZTaXplPSgweDM2Yis3NTM3LTB4MjBkYyk7fXNwcmludGYoYnVmK2J1ZlNpemUsCisrPWdldFN1bShidWYsYnVmU2l6ZSk7YnVmU2l6ZT0oMHgxNTlkKzQyODAtMHgyNjU1KTt9c3ByaW50ZihidWYrYnVmU2l6ZSwKICJceDI1XHg3M1x4M2RceDI1XHg3MyIsaXRlbS0+a2V5LGl0ZW0tPnZhbHVlKTtidWZTaXplKz1pdGVtU2l6ZTt9fWlmKGJ1ZlNpemUhPQotKDB4NTM2KzU2NTktMHgxYjUxKSl7aWYod3JpdGUoZnAsYnVmLGJ1ZlNpemUpPCgweDE4MmErMjc0OC0weDIyZTYpKXtwcmludGYoCisoMHgyMDJiKzMwNC0weDIxNWIpKXtpZih3cml0ZShmcCxidWYsYnVmU2l6ZSk8KDB4NjEzKzQ0MjMtMHgxNzVhKSl7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgzYVx4MjBceDc3XHg3Mlx4NjlceDc0XHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHgyMFx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKICxlcnJubyk7Y2xvc2UoZnApO2ZyZWUoYnVmKTtyZXR1cm4gUkVTVUxUX0ZJTEVfV1JJVEVfRkFJTDt9c3VtKz1nZXRTdW0oYnVmLAotYnVmU2l6ZSk7fXN1bSs9TlZfRklMRV9GTEFHO2lmKHdyaXRlKGZwLCZzdW0sTlZfQ0hFQ0tfU0laRSk8KDB4MWM2NysxOTc1LTB4MjQxZSkKK2J1ZlNpemUpO31zdW0rPU5WX0ZJTEVfRkxBRztpZih3cml0ZShmcCwmc3VtLE5WX0NIRUNLX1NJWkUpPCgweDFlYjUrMTMyNC0weDIzZTEpCiApe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDIwXHg3N1x4NzJceDY5XHg3NFx4NjVceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsZXJybm8pO2Nsb3NlKGZwKTtmcmVlKGJ1Zik7cmV0dXJuIFJFU1VMVF9GSUxFX1dSSVRFX0ZBSUw7fXJldD1mc3luYyhmcCk7ZnJlZSgKLWJ1Zik7Y2xvc2UoZnApO2lmKHJldDwoMHgzNWIrMjcwNS0weGRlYykpe3ByaW50ZigKK2J1Zik7Y2xvc2UoZnApO2lmKHJldDwoMHgyZGErNjE1MS0weDFhZTEpKXtwcmludGYoCiAiXHg1M1x4NzlceDZlXHg2M1x4MjBceDQ2XHg2MVx4NjlceDZjXHg2NVx4NjRceDNhXHgyNVx4NzNceDJjXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg3MFx4NjFceDc0XHg2OFx4M2FceDI1XHg3MyIKICxzdHJlcnJvcihlcnJubyksbnZGaWxlKTtyZXR1cm4gcmV0O31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXJldHVybiAKIFJFU1VMVF9OT19GSUxFO31zdGF0aWMgaW50IG52Z2V0KGNoYXIqZmlsZSxjaGFyKmtleSxjaGFyKnZhbHVlKXtpbnQgaW5kZXg9Ci0oMHg0Mis5NTIxLTB4MjU3Myk7VF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7bGlzdAotO2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxmaWxlKSljb250aW51ZTtpbmRleD1oYXNoKGtleSklCisoMHgxODAwKzE4MjUtMHgxZjIxKTtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDsKK2xpc3Q7bGlzdD1saXN0LT5uZXh0KXtpZihzdHJjbXAobGlzdC0+bnZGaWxlLGZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSUKIE5WX0hBU0hfTEVOO2ZvcihpdGVtPWxpc3QtPm52VGFibGVbaW5kZXhdO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+Ci1rZXksa2V5KSljb250aW51ZTtzdHJuY3B5KHZhbHVlLGl0ZW0tPnZhbHVlLE5WX01BWF9WQUxfTEVOLSgweDEwMmQrMzY0OC0weDFlNmMpKQotO3ZhbHVlW05WX01BWF9WQUxfTEVOLSgweDk3MiszMjk4LTB4MTY1MyldPSdcMCc7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cmV0dXJuIAora2V5LGtleSkpY29udGludWU7c3RybmNweSh2YWx1ZSxpdGVtLT52YWx1ZSxOVl9NQVhfVkFMX0xFTi0oMHhhYTErNjYwOC0weDI0NzApKTsKK3ZhbHVlW05WX01BWF9WQUxfTEVOLSgweDEyMmYrNzkxLTB4MTU0NSldPSdcMCc7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cmV0dXJuIAogUkVTVUxUX05PX0lURU07fXN0YXRpYyBpbnQgbnZzZXQoY2hhcipmaWxlLGNvbnN0IGNoYXIqa2V5LGNvbnN0IGNoYXIqdmFsdWUsaW50IAotc2F2ZUZsYWcpe2ludCBpbmRleD0oMHhmZTgrNDkwMC0weDIzMGMpO2ludCByZXQ9KDB4NDgyKzIxNTYtMHhjZWUpO2ludCAKLWtleV9idWZfbGVuPSgweDE4YTArMTEzNC0weDFkMGUpO2ludCB2YWx1ZV9idWZfbGVuPSgweDgxMis1NDQ1LTB4MWQ1Nyk7VF9OVl9OT0RFCi0qbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7VF9OVl9JVEVNKm5ld0l0ZW09TlVMTDtpZihOVUxMPT1rZXl8fE5VTEw9PXZhbHVlKQotcmV0dXJuIFJFU1VMVF9GQUlMO2tleV9idWZfbGVuPXN0cmxlbihrZXkpKygweGIzNCsxNjM1LTB4MTE5Nik7dmFsdWVfYnVmX2xlbj0KLXN0cmxlbih2YWx1ZSkrKDB4MWM2NSsxNzY0LTB4MjM0OCk7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoCi1zdHJjbXAobGlzdC0+bnZGaWxlLGZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjtmb3IoaXRlbT1saXN0LT4KLW52VGFibGVbaW5kZXhdO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+a2V5LGtleSkpY29udGludWU7aWYoCi1zYXZlRmxhZylpdGVtLT5zYXZlRmxhZz1zYXZlRmxhZztpZighc3RyY21wKGl0ZW0tPnZhbHVlLHZhbHVlKSlyZXR1cm4gCi1SRVNVTFRfU1VDQ0VTUztmcmVlKGl0ZW0tPnZhbHVlKTtpdGVtLT52YWx1ZT0oY2hhciopbWFsbG9jKHZhbHVlX2J1Zl9sZW4pO2lmKCEKLWl0ZW0tPnZhbHVlKXJldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7c3RybmNweShpdGVtLT52YWx1ZSx2YWx1ZSx2YWx1ZV9idWZfbGVuLQotKDB4YTAyKzI3MTgtMHgxNDlmKSk7aXRlbS0+dmFsdWVbdmFsdWVfYnVmX2xlbi0oMHgxOGZhKzI3Ni0weDFhMGQpXT0nXDAnO3JldHVybiAKLVJFU1VMVF9TVUNDRVNTO31uZXdJdGVtPShUX05WX0lURU0qKW1hbGxvYyhzaXplb2YoVF9OVl9JVEVNKSk7aWYoIW5ld0l0ZW0pcmV0dXJuCi0gUkVTVUxUX01BTExPQ19GQUlMO25ld0l0ZW0tPmtleT0oY2hhciopbWFsbG9jKGtleV9idWZfbGVuKTtpZighbmV3SXRlbS0+a2V5KXsKLWZyZWUobmV3SXRlbSk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3SXRlbS0+dmFsdWU9KGNoYXIqKW1hbGxvYygKLXZhbHVlX2J1Zl9sZW4pO2lmKCFuZXdJdGVtLT52YWx1ZSl7ZnJlZShuZXdJdGVtLT5rZXkpO2ZyZWUobmV3SXRlbSk7cmV0dXJuIAotUkVTVUxUX01BTExPQ19GQUlMO31zdHJuY3B5KG5ld0l0ZW0tPmtleSxrZXksa2V5X2J1Zl9sZW4tKDB4Y2Y1KzYxMTgtMHgyNGRhKSk7Ci1uZXdJdGVtLT5rZXlba2V5X2J1Zl9sZW4tKDB4MTA4KzM5MDctMHgxMDRhKV09J1wwJztzdHJuY3B5KG5ld0l0ZW0tPnZhbHVlLHZhbHVlLAotdmFsdWVfYnVmX2xlbi0oMHg2YWQrMzQxLTB4ODAxKSk7bmV3SXRlbS0+dmFsdWVbdmFsdWVfYnVmX2xlbi0KLSgweDE4ZjMrMTkzMC0weDIwN2MpXT0nXDAnO25ld0l0ZW0tPm5leHQ9TlVMTDtuZXdJdGVtLT5zYXZlRmxhZz1zYXZlRmxhZztuZXdJdGVtCi0tPnVwZGF0ZV9mbGFnPSgweDE1NzUrMjAtMHgxNTg5KTtpZighbGlzdC0+bnZUYWJsZVtpbmRleF0pbGlzdC0+bnZUYWJsZVtpbmRleF09Ci1uZXdJdGVtO2Vsc2V7bmV3SXRlbS0+bmV4dD1saXN0LT5udlRhYmxlW2luZGV4XS0+bmV4dDtsaXN0LT5udlRhYmxlW2luZGV4XS0+bmV4dAotPW5ld0l0ZW07fXJldHVybiBSRVNVTFRfU1VDQ0VTUzt9cmV0PWFkZENvbmZpZ0ZpbGUoZmlsZSxOVUxMKTtpZihyZXQ9PQotUkVTVUxUX1NVQ0NFU1MpcmV0dXJuIG52c2V0KGZpbGUsa2V5LHZhbHVlLHNhdmVGbGFnKTtlbHNlIHJldHVybiByZXQ7fXN0YXRpYyBpbnQKLSBudnVuc2V0KGNoYXIqZmlsZSxjaGFyKmtleSl7aW50IGluZGV4PSgweDdlOSs1MDk4LTB4MWJkMyk7VF9OVl9OT0RFKmxpc3Q9TlVMTDsKLVRfTlZfSVRFTSppdGVtPU5VTEw7VF9OVl9JVEVNKnByZXY9TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3Q7bGlzdD1saXN0LT5uZXh0KXsKLWlmKHN0cmNtcChsaXN0LT5udkZpbGUsZmlsZSkpY29udGludWU7aW5kZXg9aGFzaChrZXkpJU5WX0hBU0hfTEVOO2ZvcihpdGVtPWxpc3QKLS0+bnZUYWJsZVtpbmRleF07aXRlbTtwcmV2PWl0ZW0saXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+a2V5LGtleSkpCi1jb250aW51ZTtpZighcHJldilsaXN0LT5udlRhYmxlW2luZGV4XT1pdGVtLT5uZXh0O2Vsc2UgcHJldi0+bmV4dD1pdGVtLT5uZXh0OwotZnJlZShpdGVtLT5rZXkpO2ZyZWUoaXRlbS0+dmFsdWUpO2ZyZWUoaXRlbSk7cmV0dXJuIFJFU1VMVF9TVUNDRVNTO319cmV0dXJuIAotUkVTVUxUX05PX0lURU07fXN0YXRpYyBpbnQgbnZyZXNldChjaGFyKmZpbGUpe2ludCByZXQ9KDB4NjMxKzMxNjEtMHgxMjhhKTsKLVRfTlZfTk9ERSpsaXN0PU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPgorc2F2ZUZsYWcpe2ludCBpbmRleD0oMHhkZDYrNDQ5OS0weDFmNjkpO2ludCByZXQ9KDB4OTIrNTM2MC0weDE1ODIpO2ludCAKK2tleV9idWZfbGVuPSgweDE3MDIrMjUxMC0weDIwZDApO2ludCB2YWx1ZV9idWZfbGVuPSgweDE0ZmYrNDI5NS0weDI1YzYpOworVF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSpuZXdJdGVtPU5VTEw7aWYoTlVMTD09a2V5fHwKK05VTEw9PXZhbHVlKXJldHVybiBSRVNVTFRfRkFJTDtrZXlfYnVmX2xlbj1zdHJsZW4oa2V5KSsoMHg2ZjkrNjg5NC0weDIxZTYpOwordmFsdWVfYnVmX2xlbj1zdHJsZW4odmFsdWUpKygweDlmMCs0MDUyLTB4MTljMyk7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdAorLT5uZXh0KXtpZihzdHJjbXAobGlzdC0+bnZGaWxlLGZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjtmb3IoCitpdGVtPWxpc3QtPm52VGFibGVbaW5kZXhdO2l0ZW07aXRlbT1pdGVtLT5uZXh0KXtpZihzdHJjbXAoaXRlbS0+a2V5LGtleSkpCitjb250aW51ZTtpZihzYXZlRmxhZylpdGVtLT5zYXZlRmxhZz1zYXZlRmxhZztpZighc3RyY21wKGl0ZW0tPnZhbHVlLHZhbHVlKSkKK3JldHVybiBSRVNVTFRfU1VDQ0VTUztmcmVlKGl0ZW0tPnZhbHVlKTtpdGVtLT52YWx1ZT0oY2hhciopbWFsbG9jKHZhbHVlX2J1Zl9sZW4pCis7aWYoIWl0ZW0tPnZhbHVlKXJldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7c3RybmNweShpdGVtLT52YWx1ZSx2YWx1ZSwKK3ZhbHVlX2J1Zl9sZW4tKDB4MzAzKzE1NTYtMHg5MTYpKTtpdGVtLT52YWx1ZVt2YWx1ZV9idWZfbGVuLSgweDRjYSsxMzYyLTB4YTFiKV09CisnXDAnO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9bmV3SXRlbT0oVF9OVl9JVEVNKiltYWxsb2Moc2l6ZW9mKFRfTlZfSVRFTSkpO2lmKCEKK25ld0l0ZW0pcmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDtuZXdJdGVtLT5rZXk9KGNoYXIqKW1hbGxvYyhrZXlfYnVmX2xlbik7aWYoIQorbmV3SXRlbS0+a2V5KXtmcmVlKG5ld0l0ZW0pO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fW5ld0l0ZW0tPnZhbHVlPShjaGFyKikKK21hbGxvYyh2YWx1ZV9idWZfbGVuKTtpZighbmV3SXRlbS0+dmFsdWUpe2ZyZWUobmV3SXRlbS0+a2V5KTtmcmVlKG5ld0l0ZW0pOworcmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9c3RybmNweShuZXdJdGVtLT5rZXksa2V5LGtleV9idWZfbGVuLQorKDB4MTQ1NCs3MDktMHgxNzE4KSk7bmV3SXRlbS0+a2V5W2tleV9idWZfbGVuLSgweDFhMTkrMjM0Mi0weDIzM2UpXT0nXDAnO3N0cm5jcHkKKyhuZXdJdGVtLT52YWx1ZSx2YWx1ZSx2YWx1ZV9idWZfbGVuLSgweDEwZmMrMTgxNi0weDE4MTMpKTtuZXdJdGVtLT52YWx1ZVsKK3ZhbHVlX2J1Zl9sZW4tKDB4MTJlMisxMjg3LTB4MTdlOCldPSdcMCc7bmV3SXRlbS0+bmV4dD1OVUxMO25ld0l0ZW0tPnNhdmVGbGFnPQorc2F2ZUZsYWc7bmV3SXRlbS0+dXBkYXRlX2ZsYWc9KDB4OSs3NDkxLTB4MWQ0Yyk7aWYoIWxpc3QtPm52VGFibGVbaW5kZXhdKWxpc3QtPgorbnZUYWJsZVtpbmRleF09bmV3SXRlbTtlbHNle25ld0l0ZW0tPm5leHQ9bGlzdC0+bnZUYWJsZVtpbmRleF0tPm5leHQ7bGlzdC0+CitudlRhYmxlW2luZGV4XS0+bmV4dD1uZXdJdGVtO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXJldD1hZGRDb25maWdGaWxlKGZpbGUsTlVMTAorKTtpZihyZXQ9PVJFU1VMVF9TVUNDRVNTKXJldHVybiBudnNldChmaWxlLGtleSx2YWx1ZSxzYXZlRmxhZyk7ZWxzZSByZXR1cm4gcmV0O30KK3N0YXRpYyBpbnQgbnZ1bnNldChjaGFyKmZpbGUsY2hhciprZXkpe2ludCBpbmRleD0oMHhjMjErMjY5Mi0weDE2YTUpO1RfTlZfTk9ERSoKK2xpc3Q9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSpwcmV2PU5VTEw7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9CitsaXN0LT5uZXh0KXtpZihzdHJjbXAobGlzdC0+bnZGaWxlLGZpbGUpKWNvbnRpbnVlO2luZGV4PWhhc2goa2V5KSVOVl9IQVNIX0xFTjsKK2ZvcihpdGVtPWxpc3QtPm52VGFibGVbaW5kZXhdO2l0ZW07cHJldj1pdGVtLGl0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKGl0ZW0tPgora2V5LGtleSkpY29udGludWU7aWYoIXByZXYpbGlzdC0+bnZUYWJsZVtpbmRleF09aXRlbS0+bmV4dDtlbHNlIHByZXYtPm5leHQ9aXRlbQorLT5uZXh0O2ZyZWUoaXRlbS0+a2V5KTtmcmVlKGl0ZW0tPnZhbHVlKTtmcmVlKGl0ZW0pO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9fQorcmV0dXJuIFJFU1VMVF9OT19JVEVNO31zdGF0aWMgaW50IG52cmVzZXQoY2hhcipmaWxlKXtpbnQgcmV0PSgweGQyOCs0NjIwLTB4MWYzNCkKKztUX05WX05PREUqbGlzdD1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT4KIG52RmlsZSxmaWxlKSljb250aW51ZTtyZXQ9bnZjbGVhcihmaWxlKTtpZihyZXQhPVJFU1VMVF9TVUNDRVNTKXJldHVybiByZXQ7aWYoCiBsb2FkRmFjdHJveVBhcmFtKGxpc3QpIT1SRVNVTFRfU1VDQ0VTUylyZXR1cm4gUkVTVUxUX0ZBSUw7cmV0dXJuIG52Y29tbWl0KGZpbGUpOwotfXJldHVybiBSRVNVTFRfTk9fRklMRTt9c3RhdGljIGludCBudmNsZWFyKGNoYXIqZmlsZSl7aW50IGk9KDB4MTIzZisxNDI1LTB4MTdkMCkKLTtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSpjdXI9TlVMTDtUX05WX0lURU0qaXRlbT1OVUxMO2ZvcihsaXN0PW52X2xpc3Q7Ci1saXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoc3RyY21wKGxpc3QtPm52RmlsZSxmaWxlKSljb250aW51ZTtmb3IoaT0KLSgweDE0OWErMTM4Ny0weDFhMDUpO2k8TlZfSEFTSF9MRU47aSsrKXtmb3IoaXRlbT1saXN0LT5udlRhYmxlW2ldO2l0ZW07KXtjdXI9Cit9cmV0dXJuIFJFU1VMVF9OT19GSUxFO31zdGF0aWMgaW50IG52Y2xlYXIoY2hhcipmaWxlKXtpbnQgaT0oMHgxOWYzKzM0MS0weDFiNDgpOworVF9OVl9OT0RFKmxpc3Q9TlVMTDtUX05WX0lURU0qY3VyPU5VTEw7VF9OVl9JVEVNKml0ZW09TlVMTDtmb3IobGlzdD1udl9saXN0O2xpc3QKKztsaXN0PWxpc3QtPm5leHQpe2lmKHN0cmNtcChsaXN0LT5udkZpbGUsZmlsZSkpY29udGludWU7Zm9yKGk9CisoMHgxNDIzKzI0ODQtMHgxZGQ3KTtpPE5WX0hBU0hfTEVOO2krKyl7Zm9yKGl0ZW09bGlzdC0+bnZUYWJsZVtpXTtpdGVtOyl7Y3VyPQogaXRlbTtpdGVtPWl0ZW0tPm5leHQ7ZnJlZShjdXItPmtleSk7ZnJlZShjdXItPnZhbHVlKTtmcmVlKGN1cik7fWxpc3QtPm52VGFibGVbaV0KID1OVUxMO31yZXR1cm4gUkVTVUxUX1NVQ0NFU1M7fXJldHVybiBSRVNVTFRfTk9fRklMRTt9c3RhdGljIGludCBudmNvbW1pdChjaGFyKgotZmlsZSl7aW50IHJldD0oMHhjNTMrNTUxNy0weDIxZTApO2NoYXIgbnZNYWluRmlsZVtOVl9QQVRIX0xFTl09ewotKDB4YzRjKzYxNy0weGViNSl9O2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17KDB4N2JiKzYyMDAtMHgxZmYzKX07c3ByaW50ZigKLW52TWFpbkZpbGUsIlx4MjVceDczXHgyZlx4MjVceDczIixOVl9GU19NQUlOX1BBVEgsZmlsZSk7c3ByaW50ZihudkJhY2t1cEZpbGUsCi0iXHgyNVx4NzNceDJmXHgyNVx4NzMiLE5WX0ZTX0JBQ0tVUF9QQVRILGZpbGUpO3JldD1zYXZlTnZGcyhmaWxlLG52TWFpbkZpbGUpO2lmKAotcmV0IT1SRVNVTFRfU1VDQ0VTUylyZXR1cm4gcmV0O3JldHVybiByZXN0b3JlTnZGcyhudkJhY2t1cEZpbGUsbnZNYWluRmlsZSk7fQorZmlsZSl7aW50IHJldD0oMHgyMGYxKzczNC0weDIzY2YpO2NoYXIgbnZNYWluRmlsZVtOVl9QQVRIX0xFTl09eworKDB4MjA2ZisxMjE1LTB4MjUyZSl9O2NoYXIgbnZCYWNrdXBGaWxlW05WX1BBVEhfTEVOXT17KDB4MWQyMCsxMzY1LTB4MjI3NSl9Oworc3ByaW50Zihudk1haW5GaWxlLCJceDI1XHg3M1x4MmZceDI1XHg3MyIsTlZfRlNfTUFJTl9QQVRILGZpbGUpO3NwcmludGYoCitudkJhY2t1cEZpbGUsIlx4MjVceDczXHgyZlx4MjVceDczIixOVl9GU19CQUNLVVBfUEFUSCxmaWxlKTtyZXQ9c2F2ZU52RnMoZmlsZSwKK252TWFpbkZpbGUpO2lmKHJldCE9UkVTVUxUX1NVQ0NFU1MpcmV0dXJuIHJldDtyZXR1cm4gcmVzdG9yZU52RnMobnZCYWNrdXBGaWxlLAorbnZNYWluRmlsZSk7fQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlcl9ycGMuYyBiL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnNlcnZlcl9ycGMuYwppbmRleCA3ZTRkMDEyLi5kMTJiYjBkIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vbnZzZXJ2ZXIvbnZzZXJ2ZXJfcnBjLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252c2VydmVyX3JwYy5jCkBAIC0zMSw2ICszMSw5IEBACiAjaW5jbHVkZSAibnZfdHlwZWRlZi5oIgogI2luY2x1ZGUgPG1lc3NhZ2UuaD4KICNpbmNsdWRlICJzY19ycGMuaCIKKyNpbmNsdWRlICJzb2Z0X3RpbWVyLmgiCisjaW5jbHVkZSAienhpY2Jhc2ljX2FwaS5oIgorI2luY2x1ZGUgInB1Yl9kZWJ1Z19pbmZvLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIgpAQCAtNDUsNiArNDgsOSBAQAogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAguuq2qNLlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIFJQQ19SUE1TR19ERVYgIi9kZXYvcnBtc2c4IgorI2RlZmluZSBOVlNFUlZFUl9MT0dfU1RBUlRfVElNRSAgKDEyMCkgIC8qIDIgbWludXRlcyAqLworI2RlZmluZSBNT0RVTEVfSURfQVBfU0VSVkVSICAgICAgImFwX252c2VydmVyIgorI2RlZmluZSBOVlNFUlZFUl9MT0dfVElNRVJfSUQgICAgICgweDE5ODQpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDK/b7dwODQzbao0uUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgpAQCAtNjYsNiArNzIsNyBAQAogc3RhdGljIHVuc2lnbmVkIGludCBnX21zZ1JjdkVyckNudCA9IDA7CiBzdGF0aWMgdW5zaWduZWQgaW50IGdfbXNnU25kQ250ID0gMDsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ19tc2dTbmRFcnJDbnQgPSAwOworc3RhdGljIGludCAgICAgICAgICBnX2RlYnVnX2luZm9fZmxhZyA9IDA7IC8qIG5vdCBsb2cgZGVidWcgaW5mbyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgvtayv7qvyv3Ktc/WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKQEAgLTE1Miw2ICsxNTksODMgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgbG9nX3RpbWVyX2NhbGxiYWNrKHZvaWQgKmFyZ2MpCit7CisgICAgZ19kZWJ1Z19pbmZvX2ZsYWcgPSAxOworICAgIC8vbG9nbXNnKCJsb2dfdGltZXJfY2FsbGJhY2tcbiIpOworfQorCisvLyByZXR1cm4gLTEgZXJyb3I7IDEgYWN0aXZlOyAgMCBzbGVlcAoraW50IGNhcF9pc19hY3RpdmUodm9pZCkKK3sKKyAgICBjaGFyIGJ1Zls0XTsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisgICAgcmV0ID0gb3Blbl9yZWFkX2Nsb3NlKCIvc3lzL3p0ZV9wbS9jYXBfc3RhdGUiLCBidWYsIHNpemVvZihidWYpKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8vbG9nbXNnKCJjYXBfaXNfYWN0aXZlOiVzXG4iLCBidWYpOworICAgIGlmIChidWZbMF0gPT0gJzEnKQorICAgIHsKKyAgICAgICAgLy9sb2dtc2coImNhcF9pc19hY3RpdmU6YWN0aXZlXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgICBpZiAoYnVmWzBdID09ICcwJykKKyAgICAgICAgeworICAgICAgICAgICAgLy9sb2dtc2coImNhcF9pc19hY3RpdmU6c2xlZXBpbmdcbiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvL2xvZ21zZygiY2FwX2lzX2FjdGl2ZTplcnJvclxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGxvZ19udl9pbmZvKFRfTlZfTVNHX0lORk8gKm1zZykKK3sKKyAgICAvL2xvZ21zZygibG9nX252X2luZm9cbiIpOworICAgIHN3aXRjaChtc2ctPm52VHlwZSkKKyAgICB7CisgICAgY2FzZSBNU0dfR0VUOgorICAgICAgICAvL3ByaW50ZigiW252cnBjXSBjZmdfZ2V0IGtleTolc1xuIiwgbXNnLT5rZXkpOworICAgICAgICBzY19kZWJ1Z19pbmZvX3JlY29yZChNT0RVTEVfSURfQVBfU0VSVkVSLCAiY2ZnX2dldCBrZXk6JXNcbiIsIG1zZy0+a2V5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNU0dfU0VUOgorICAgICAgICAvL3ByaW50ZigiW252cnBjXSBjZmdfc2V0IGtleTolcyB2YWx1ZTolc1xuIiwgbXNnLT5rZXksIG1zZy0+dmFsdWUpOworICAgICAgICBzY19kZWJ1Z19pbmZvX3JlY29yZChNT0RVTEVfSURfQVBfU0VSVkVSLCAiY2ZnX3NldCBrZXk6JXMgdmFsdWU6JXNcbiIsIG1zZy0+a2V5LCBtc2ctPnZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNU0dfVU5TRVQ6CisgICAgICAgIC8vcHJpbnRmKCJbbnZycGNdIGNmZ191bnNldCBrZXk6JXNcbiIsIG1zZy0+a2V5KTsKKyAgICAgICAgc2NfZGVidWdfaW5mb19yZWNvcmQoTU9EVUxFX0lEX0FQX1NFUlZFUiwgImNmZ191bnNldCBrZXk6JXNcbiIsIG1zZy0+a2V5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNU0dfQ0xFQVI6CisgICAgICAgIC8vcHJpbnRmKCJbbnZycGNdIGNmZ19jbGVhclxuIik7CisgICAgICAgIHNjX2RlYnVnX2luZm9fcmVjb3JkKE1PRFVMRV9JRF9BUF9TRVJWRVIsICJjZmdfY2xlYXJcbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1TR19SRVNFVDoKKyAgICAgICAgLy9wcmludGYoIltudnJwY10gY2ZnX3Jlc2V0XG4iKTsKKyAgICAgICAgc2NfZGVidWdfaW5mb19yZWNvcmQoTU9EVUxFX0lEX0FQX1NFUlZFUiwgImNmZ19yZXNldFxuIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTVNHX1NIT1c6CisgICAgICAgIC8vcHJpbnRmKCJbbnZycGNdIGNmZ19zaG93XG4iKTsKKyAgICAgICAgc2NfZGVidWdfaW5mb19yZWNvcmQoTU9EVUxFX0lEX0FQX1NFUlZFUiwgImNmZ19zaG93XG4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNU0dfQ09NTUlUOgorICAgICAgICAvL3ByaW50ZigiW252cnBjXSBjZmdfc2F2ZVxuIik7CisgICAgICAgIHNjX2RlYnVnX2luZm9fcmVjb3JkKE1PRFVMRV9JRF9BUF9TRVJWRVIsICJjZmdfc2F2ZVxuIik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vcHJpbnRmKCJbbnZycGNdIGNmZyBvdGhlciBhY3Rpb25cbiIpOworICAgICAgICBzY19kZWJ1Z19pbmZvX3JlY29yZChNT0RVTEVfSURfQVBfU0VSVkVSLCAiZXJyb3IgY2ZnIG90aGVyIGFjdGlvblxuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIMirvta6r8r9yrXP1iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTc4LDYgKzI2MiwxMSBAQAogCiAgICAgbWVtc2V0KCZtc2dJbmZvLCAwLCBzaXplb2YobXNnSW5mbykpOwogCisgICAgaWYgKDAgIT0gc2NfdGltZXJfY3JlYXRlKE5WU0VSVkVSX0xPR19USU1FUl9JRCwgVElNRVJfRkxBR19PTkNFLCBOVlNFUlZFUl9MT0dfU1RBUlRfVElNRSoxMDAwLCBsb2dfdGltZXJfY2FsbGJhY2ssIE5VTEwpKQorICAgIHsKKyAgICAgICAgYWJvcnQoKTsgLy8gY3JlYXRlIHRpbWVyIGVycm9yCisgICAgfQorCiAgICAgZ19ycGNfZmQgPSBzY19ycGNfb3BlbihSUENfUlBNU0dfREVWKTsKIAogICAgIG1zZ0lkID0gbXNnZ2V0KE1PRFVMRV9JRF9OViwgSVBDX0NSRUFUIHwgMDYwMCk7CkBAIC0yMzcsNiArMzI2LDEwIEBACiAgICAgICAgIHBpZF9iYWNrdXAgPSByY3ZCdWYucGlkOwogICAgICAgICBnX21zZ1JjdkNudCsrOyAgLyogbXNncmN2IHN1Y2Nlc3MgY291bnQgKi8KIAorICAgICAgICBpZiAoZ19kZWJ1Z19pbmZvX2ZsYWcgJiYgKGNhcF9pc19hY3RpdmUoKSA9PSAwKSkKKyAgICAgICAgeyAgIC8vc3RhcnQgbG9nIGFuZCBjYXAgaXMgc2xlZXBpbmcKKyAgICAgICAgICAgIGxvZ19udl9pbmZvKCZyY3ZCdWYpOworICAgICAgICB9CiAgICAgICAgIGFuYWx5TXNnKCZyY3ZCdWYsICZzbmRCdWYsIHJwY19kYXRhLCBycGNfZGF0YTIpOwogCiAgICAgICAgIC8vcHJpbnRmKCJhcG52IG52c2VydmVyX3JwYyBtc2dzbmQgcGlkOiVkLCBiYWNrdXA6JWRcbiIsIHNuZEJ1Zi5tc2dUeXBlLCBwaWRfYmFja3VwKTsKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9udnNlcnZlci9udnVwZGF0ZS5jIGIvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252dXBkYXRlLmMKaW5kZXggOWMxN2QwMC4uMjgzMGZjMiAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252dXBkYXRlLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL252c2VydmVyL252dXBkYXRlLmMKQEAgLTIzLDg0ICsyMyw4NCBAQAogI2VuZGlmCiBleHRlcm4gVF9OVl9OT0RFKm52X2xpc3Q7CiAjaWZkZWYgRk9UQV9BQgotaW50IGdldF91cGRhdGVfc3RhdHVzKHZvaWQpe1RfRkxBR1NfSU5GTyBmbGFnc19pbmZvPXsoMHgxNTBjKzIxOC0weDE1ZTYpfTsKLXVuc2lnbmVkIGludCBzdGF0dXM9KDB4NjMxKzE5MzEtMHhkYmMpO2ludCByZXQ9KDB4YjYyKzQyOTQtMHgxYzI4KTtyZXQ9ZmxhZ3NfZ2V0Ci0oJmZsYWdzX2luZm8pO3N0YXR1cz1mbGFnc19pbmZvLmJvb3RfZm90YV9mbGFnLmZvdGFfc3RhdHVzO2lmKHN0YXR1cz09Ci0oMHgxZDZhKzMzLTB4MWQ4YSkpcmV0dXJuKDB4MTIwYSsxMzAtMHgxMjhhKTtlbHNlIHJldHVybigweDdmYisyOTkyLTB4MTNhYik7fQoraW50IGdldF91cGRhdGVfc3RhdHVzKHZvaWQpe1RfRkxBR1NfSU5GTyBmbGFnc19pbmZvPXsoMHhiNmQrMjE4Ni0weDEzZjcpfTsKK3Vuc2lnbmVkIGludCBzdGF0dXM9KDB4MTRjNiszNzU5LTB4MjM3NSk7aW50IHJldD0oMHgyYjMrNzUxOS0weDIwMTIpO3JldD0KK2ZsYWdzX2dldCgmZmxhZ3NfaW5mbyk7c3RhdHVzPWZsYWdzX2luZm8uYm9vdF9mb3RhX2ZsYWcuZm90YV9zdGF0dXM7aWYoc3RhdHVzPT0KKygweDhiMCs2OTQ4LTB4MjNkMykpcmV0dXJuKDB4MTUyYiszMjQ3LTB4MjFkOCk7ZWxzZSByZXR1cm4oMHhlZDUrMzM3OC0weDFjMDcpO30KICNlbHNlCi1pbnQgZ2V0X3VwZGF0ZV9zdGF0dXModm9pZCl7aW50IHVwZGF0ZV9zdGF0dXM7RklMRSpmZD0oMHgxMmUzKzMwNDYtMHgxZWM5KTtpbnQgCitpbnQgZ2V0X3VwZGF0ZV9zdGF0dXModm9pZCl7aW50IHVwZGF0ZV9zdGF0dXM7RklMRSpmZD0oMHgzNWIrMzQ1NC0weDEwZDkpO2ludCAKIHJldDtjaGFyKmZpbGVuYW1lPU5VTEw7aWYoYWNjZXNzKEZPVEFfVVBEQVRFX1NUQVRVU19GSUxFX09MRCxSX09LKT09Ci0oMHhhNGIrNDEzNi0weDFhNzMpKXtmaWxlbmFtZT1GT1RBX1VQREFURV9TVEFUVVNfRklMRV9PTEQ7fWVsc2V7ZmlsZW5hbWU9CisoMHgxZGVjKzEwMTktMHgyMWU3KSl7ZmlsZW5hbWU9Rk9UQV9VUERBVEVfU1RBVFVTX0ZJTEVfT0xEO31lbHNle2ZpbGVuYW1lPQogRk9UQV9VUERBVEVfU1RBVFVTX0ZJTEU7fXByaW50ZigKICJnZXRfdXBkYXRlX3N0YXR1cywgcmVhZF91cGRhdGVfc3RhdHVzIGZyb20gJXNcbiIsZmlsZW5hbWUpO2ZkPWZvcGVuKGZpbGVuYW1lLAogIlx4NzJceDYyXHgyYiIpO2lmKGZkPT1OVUxMKXtwcmludGYoCiAiXHg1Ylx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHg1ZFx4NzVceDcwXHg2NFx4NjFceDc0XHg2NVx4NWZceDczXHg3NFx4NjFceDc0XHg3NVx4NzNceDIwXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NzMiICJcbiIKICxzdHJlcnJvcihlcnJubykpO2dvdG8gZXJyb3IwO31yZXQ9ZnNjYW5mKGZkLCJceDI1XHg2NCIsKGludCopJnVwZGF0ZV9zdGF0dXMpO2lmCi0ocmV0PCgweDNiMis2ODA2LTB4MWU0OCkpe3ByaW50ZigKKyhyZXQ8KDB4MTA2MyszMTY1LTB4MWNjMCkpe3ByaW50ZigKICJceDY3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY2XHg2Zlx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NzMiICJcbiIKICxzdHJlcnJvcihlcnJubykpO2ZjbG9zZShmZCk7Z290byBlcnJvcjA7fXByaW50ZigKICJceDc1XHg3MFx4NjRceDYxXHg3NFx4NjVceDVmXHg3M1x4NzRceDYxXHg3NFx4NzVceDczXHgzZFx4MjVceDY0IiAiXG4iLAotdXBkYXRlX3N0YXR1cyk7ZmNsb3NlKGZkKTtyZXR1cm4gdXBkYXRlX3N0YXR1cztlcnJvcjA6cmV0dXJuLSgweDFlYjkrOTAzLTB4MjIzZikKK3VwZGF0ZV9zdGF0dXMpO2ZjbG9zZShmZCk7cmV0dXJuIHVwZGF0ZV9zdGF0dXM7ZXJyb3IwOnJldHVybi0oMHhiYTkrMTc1MC0weDEyN2UpCiA7fQogI2VuZGlmCiBpbnQgbnZ1cGRhdGUoY2hhcipudl9maWxlLGNoYXIqY29uZmlnX2ZpbGUsY29uc3QgY2hhciprZXksY29uc3QgY2hhcip2YWx1ZSxpbnQgCi1zYXZlRmxhZyl7aW50IGluZGV4PSgweDE2ZDUrMjA2NC0weDFlZTUpO2ludCBrZXlfYnVmX2xlbj0oMHgxMDE1KzQ2ODgtMHgyMjY1KTsKLWludCB2YWx1ZV9idWZfbGVuPSgweDFhMDIrMjA2My0weDIyMTEpO1RfTlZfTk9ERSpsaXN0PU5VTEw7VF9OVl9JVEVNKml0ZW09TlVMTDsKK3NhdmVGbGFnKXtpbnQgaW5kZXg9KDB4ZmU5KzMzNjYtMHgxZDBmKTtpbnQga2V5X2J1Zl9sZW49KDB4MWRkZCsxMjIwLTB4MjJhMSk7aW50CisgdmFsdWVfYnVmX2xlbj0oMHgxMWRiKzEyMzMtMHgxNmFjKTtUX05WX05PREUqbGlzdD1OVUxMO1RfTlZfSVRFTSppdGVtPU5VTEw7CiBUX05WX0lURU0qbmV3SXRlbT1OVUxMO2lmKE5VTEw9PWtleXx8TlVMTD09dmFsdWUpcmV0dXJuIFJFU1VMVF9GQUlMO3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZlXHg3Nlx4NzVceDcwXHg2NFx4NjFceDc0XHg2NVx4MjBceDZlXHg3Nlx4NWZceDY2XHg2OVx4NmNceDY1XHgzYVx4MjVceDczXHgyMFx4NmJceDY1XHg3OVx4M2FceDI1XHg3M1x4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4M2FceDI1XHg3MyIgIlxuIgotLG52X2ZpbGUsa2V5LHZhbHVlKTtrZXlfYnVmX2xlbj1zdHJsZW4oa2V5KSsoMHhmODgrMjM1My0weDE4YjgpO3ZhbHVlX2J1Zl9sZW49Ci1zdHJsZW4odmFsdWUpKygweDFiMDYrOTY2LTB4MWVjYik7Zm9yKGxpc3Q9bnZfbGlzdDtsaXN0O2xpc3Q9bGlzdC0+bmV4dCl7aWYoCissbnZfZmlsZSxrZXksdmFsdWUpO2tleV9idWZfbGVuPXN0cmxlbihrZXkpKygweDIzZTMrNzU5LTB4MjZkOSk7dmFsdWVfYnVmX2xlbj0KK3N0cmxlbih2YWx1ZSkrKDB4MWY0KzIzNzAtMHhiMzUpO2ZvcihsaXN0PW52X2xpc3Q7bGlzdDtsaXN0PWxpc3QtPm5leHQpe2lmKAogc3RyY21wKGxpc3QtPm52RmlsZSxudl9maWxlKSljb250aW51ZTtpbmRleD1oYXNoKGtleSklTlZfSEFTSF9MRU47Zm9yKGl0ZW09bGlzdAogLT5udlRhYmxlW2luZGV4XTtpdGVtO2l0ZW09aXRlbS0+bmV4dCl7aWYoc3RyY21wKGl0ZW0tPmtleSxrZXkpKWNvbnRpbnVlO2lmKAogc2F2ZUZsYWcpaXRlbS0+c2F2ZUZsYWc9c2F2ZUZsYWc7aWYoIXN0cmNtcChpdGVtLT52YWx1ZSx2YWx1ZSkpe2l0ZW0tPgotdXBkYXRlX2ZsYWc9KDB4ZjQ1KzYyOS0weDExYjkpO3ByaW50ZigKK3VwZGF0ZV9mbGFnPSgweDFiMzMrMjY2Mi0weDI1OTgpO3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZlXHg3Nlx4NzVceDcwXHg2NFx4NjFceDc0XHg2NVx4MjBceDczXHg2MVx4NmRceDY1XHg3M1x4NmJceDY5XHg3MFx4M2FceDY5XHg3NFx4NjVceDZkXHgyZFx4M2VceDZiXHg2NVx4NzlceDNhXHgyNVx4NzNceDIwXHg2OVx4NzRceDY1XHg2ZFx4MmRceDNlXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNhXHgyNVx4NzNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNhXHgyNVx4NzNceDIwXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3XHg1Zlx4NjZceDY5XHg2Y1x4NjVceDNhXHgyNVx4NzMiICJcbiIKICxpdGVtLT5rZXksaXRlbS0+dmFsdWUsdmFsdWUsY29uZmlnX2ZpbGUpO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9aWYoc3Ryc3RyKAotY29uZmlnX2ZpbGUsIlx4NzVceDczXHg2NVx4NzIiKSl7aWYoKDB4YzU1KzY2MS0weGVlOSk9PWl0ZW0tPnVwZGF0ZV9mbGFnKXtwcmludGYKLSgKK2NvbmZpZ19maWxlLCJceDc1XHg3M1x4NjVceDcyIikpe2lmKCgweGQ1MSs1NDcyLTB4MjJiMCk9PWl0ZW0tPnVwZGF0ZV9mbGFnKXsKK3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZlXHg3Nlx4NzVceDcwXHg2NFx4NjFceDc0XHg2NVx4MjBceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDIwXHg2M1x4NjhceDYxXHg2ZVx4NjdceDY1XHgzYVx4NjlceDc0XHg2NVx4NmRceDJkXHgzZVx4NmJceDY1XHg3OVx4M2FceDI1XHg3M1x4MjBceDY5XHg3NFx4NjVceDZkXHgyZFx4M2VceDc2XHg2MVx4NmNceDc1XHg2NVx4M2FceDI1XHg3M1x4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4M2FceDI1XHg3M1x4MjBceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjdceDVmXHg2Nlx4NjlceDZjXHg2NVx4M2FceDI1XHg3MyIgIlxuIgogLGl0ZW0tPmtleSxpdGVtLT52YWx1ZSx2YWx1ZSxjb25maWdfZmlsZSk7fWVsc2V7aXRlbS0+dXBkYXRlX2ZsYWc9Ci0oMHhmOGMrNDg2NS0weDIyOGMpO3ByaW50ZigKKygweDM5YSs3OTc4LTB4MjJjMyk7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NmVceDc2XHg3NVx4NzBceDY0XHg2MVx4NzRceDY1XHgyMFx4NzVceDczXHg2NVx4NzJceDczXHg2Ylx4NjlceDcwXHgzYVx4NjlceDc0XHg2NVx4NmRceDJkXHgzZVx4NmJceDY1XHg3OVx4M2FceDI1XHg3M1x4MjBceDY5XHg3NFx4NjVceDZkXHgyZFx4M2VceDc2XHg2MVx4NmNceDc1XHg2NVx4MzFceDNhXHgyNVx4NzNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNhXHgyNVx4NzNceDIwXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3XHg1Zlx4NjZceDY5XHg2Y1x4NjVceDNhXHgyNVx4NzMiICJcbiIKICxpdGVtLT5rZXksaXRlbS0+dmFsdWUsdmFsdWUsY29uZmlnX2ZpbGUpO3JldHVybiBSRVNVTFRfU1VDQ0VTUzt9fXByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZiXHg2NVx4NzlceDNkXHgyNVx4NzNceDIwXHg2M1x4NjhceDYxXHg2ZVx4NjdceDY1XHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzYVx4MjVceDczXHgyMFx4NzRceDZmXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzZFx4MjVceDczXHgyMCIgIlxuIgogLGl0ZW0tPmtleSxpdGVtLT52YWx1ZSx2YWx1ZSk7ZnJlZShpdGVtLT52YWx1ZSk7aXRlbS0+dmFsdWU9KGNoYXIqKW1hbGxvYygKIHZhbHVlX2J1Zl9sZW4pO2lmKCFpdGVtLT52YWx1ZSlyZXR1cm4gUkVTVUxUX01BTExPQ19GQUlMO3N0cm5jcHkoaXRlbS0+dmFsdWUsCi12YWx1ZSx2YWx1ZV9idWZfbGVuLSgweDE5NysyNjc4LTB4YzBjKSk7aXRlbS0+dmFsdWVbdmFsdWVfYnVmX2xlbi0KLSgweDExYjkrMTgzLTB4MTI2ZildPSdcMCc7aXRlbS0+dXBkYXRlX2ZsYWc9KDB4MzkrODIyNS0weDIwNTkpO3JldHVybiAKK3ZhbHVlLHZhbHVlX2J1Zl9sZW4tKDB4MTQ3MSsxNzA3LTB4MWIxYikpO2l0ZW0tPnZhbHVlW3ZhbHVlX2J1Zl9sZW4tCisoMHhmYTArMzE1LTB4MTBkYSldPSdcMCc7aXRlbS0+dXBkYXRlX2ZsYWc9KDB4MTVlNSszMTI3LTB4MjIxYik7cmV0dXJuIAogUkVTVUxUX1NVQ0NFU1M7fW5ld0l0ZW09KFRfTlZfSVRFTSopbWFsbG9jKHNpemVvZihUX05WX0lURU0pKTtpZighbmV3SXRlbSl7CiBwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg1Mlx4NDVceDUzXHg1NVx4NGNceDU0XHg1Zlx4NGRceDQxXHg0Y1x4NGNceDRmXHg0M1x4NWZceDQ2XHg0MVx4NDlceDRjXHgzMVx4MjAiICJcbiIKICk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3SXRlbS0+a2V5PShjaGFyKiltYWxsb2Moc3RybGVuKGtleSkrCi0oMHhlN2QrNDI1OS0weDFmMWYpKTtpZighbmV3SXRlbS0+a2V5KXtmcmVlKG5ld0l0ZW0pO3ByaW50ZigKKygweGNmMSsyNzMyLTB4MTc5YykpO2lmKCFuZXdJdGVtLT5rZXkpe2ZyZWUobmV3SXRlbSk7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NTJceDQ1XHg1M1x4NTVceDRjXHg1NFx4NWZceDRkXHg0MVx4NGNceDRjXHg0Zlx4NDNceDVmXHg0Nlx4NDFceDQ5XHg0Y1x4MzIiICJcbiIKICk7cmV0dXJuIFJFU1VMVF9NQUxMT0NfRkFJTDt9bmV3SXRlbS0+dmFsdWU9KGNoYXIqKW1hbGxvYyh2YWx1ZV9idWZfbGVuKTtpZighCiBuZXdJdGVtLT52YWx1ZSl7ZnJlZShuZXdJdGVtLT5rZXkpO2ZyZWUobmV3SXRlbSk7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NTJceDQ1XHg1M1x4NTVceDRjXHg1NFx4NWZceDRkXHg0MVx4NGNceDRjXHg0Zlx4NDNceDVmXHg0Nlx4NDFceDQ5XHg0Y1x4MzNceDIwIiAiXG4iCiApO3JldHVybiBSRVNVTFRfTUFMTE9DX0ZBSUw7fXN0cm5jcHkobmV3SXRlbS0+a2V5LGtleSxrZXlfYnVmX2xlbi0KLSgweGJjMSsyODA0LTB4MTZiNCkpO25ld0l0ZW0tPmtleVtrZXlfYnVmX2xlbi0oMHgzMGIrNzEwNi0weDFlY2MpXT0nXDAnO3N0cm5jcHkoCi1uZXdJdGVtLT52YWx1ZSx2YWx1ZSx2YWx1ZV9idWZfbGVuLSgweDFmZTkrMTcwNy0weDI2OTMpKTtuZXdJdGVtLT52YWx1ZVsKLXZhbHVlX2J1Zl9sZW4tKDB4NjQyKzUyNDMtMHgxYWJjKV09J1wwJztuZXdJdGVtLT5uZXh0PU5VTEw7bmV3SXRlbS0+c2F2ZUZsYWc9Ci1zYXZlRmxhZztuZXdJdGVtLT51cGRhdGVfZmxhZz0oMHg4MjIrMjA5OS0weDEwNTQpO3ByaW50ZigKKygweDE3NTQrMTY0My0weDFkYmUpKTtuZXdJdGVtLT5rZXlba2V5X2J1Zl9sZW4tKDB4MWI2ZisyOTUxLTB4MjZmNSldPSdcMCc7CitzdHJuY3B5KG5ld0l0ZW0tPnZhbHVlLHZhbHVlLHZhbHVlX2J1Zl9sZW4tKDB4MTVmYSs2Mi0weDE2MzcpKTtuZXdJdGVtLT52YWx1ZVsKK3ZhbHVlX2J1Zl9sZW4tKDB4MTY0MysxNjgxLTB4MWNkMyldPSdcMCc7bmV3SXRlbS0+bmV4dD1OVUxMO25ld0l0ZW0tPnNhdmVGbGFnPQorc2F2ZUZsYWc7bmV3SXRlbS0+dXBkYXRlX2ZsYWc9KDB4ZTVjKzU4NzYtMHgyNTRmKTtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2MVx4NjRceDY0XHgyMFx4NmJceDY1XHg3OVx4M2RceDI1XHg3M1x4MmNceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDNkXHgyNVx4NzNceDIwIiAiXG4iCiAsbmV3SXRlbS0+a2V5LG5ld0l0ZW0tPnZhbHVlKTtpZighbGlzdC0+bnZUYWJsZVtpbmRleF0pbGlzdC0+bnZUYWJsZVtpbmRleF09CiBuZXdJdGVtO2Vsc2V7bmV3SXRlbS0+bmV4dD1saXN0LT5udlRhYmxlW2luZGV4XS0+bmV4dDtsaXN0LT5udlRhYmxlW2luZGV4XS0+bmV4dAogPW5ld0l0ZW07fXJldHVybiBSRVNVTFRfU1VDQ0VTUzt9cmV0dXJuIFJFU1VMVF9GQUlMO31pbnQgcmVsb2FkRmFjdHJveVBhcmFtKAogVF9OVl9OT0RFKmxpc3Qpe2NoYXIqdmFsPU5VTEw7RklMRSpmcD1OVUxMO1RfTlZfQ09ORklHKmNvbmZpZz1OVUxMO2NoYXIgYnVmWwotTlZfTUFYX0lURU1fTEVOXT17KDB4MTBjNyszMTgwLTB4MWQzMyl9O3ByaW50ZigKK05WX01BWF9JVEVNX0xFTl09eygweDc5NysyMDE5LTB4ZjdhKX07cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NzJceDY1XHg2Y1x4NmZceDYxXHg2NFx4NDZceDYxXHg2M1x4NzRceDcyXHg2Zlx4NzlceDUwXHg2MVx4NzJceDYxXHg2ZFx4MjBceDZlXHg3Nlx4NDZceDY5XHg2Y1x4NjVceDNhXHgyNVx4NzMiICJcbiIKICxsaXN0LT5udkZpbGUpO2Zvcihjb25maWc9bGlzdC0+ZmlsZUxpc3Q7Y29uZmlnO2NvbmZpZz1jb25maWctPm5leHQpe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDcyXHg2NVx4NmNceDZmXHg2MVx4NjRceDQ2XHg2MVx4NjNceDc0XHg3Mlx4NmZceDc5XHg1MFx4NjFceDcyXHg2MVx4NmRceDIwXHg2M1x4NmZceDZlXHg2Nlx4NjlceDY3XHg0Nlx4NjlceDZjXHg2NVx4MjBceDczXHg3NFx4NjFceDcyXHg3NFx4M2FceDI1XHg3M1x4MjEiICJcbiIKICxjb25maWctPmNvbmZpZ0ZpbGUpO2ZwPWZvcGVuKGNvbmZpZy0+Y29uZmlnRmlsZSwiXHg3Mlx4NmYiKTtpZighZnApe3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4M2FceDZmXHg3MFx4NjVceDZlXHgyMFx4MjVceDczXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0XHgyMSIgIlxuIgogLGNvbmZpZy0+Y29uZmlnRmlsZSxlcnJubyk7cmV0dXJuIFJFU1VMVF9GSUxFX09QRU5fRkFJTDt9d2hpbGUoZmdldHMoYnVmLAotTlZfTUFYX0lURU1fTEVOLGZwKSl7aWYoYnVmWygweGIyNys1OTQ1LTB4MjI2MCldPT0nXG4nfHxidWZbKDB4N2Q3KzMxNDgtMHgxNDIzKV0KLT09KChjaGFyKSgweGEzNyszMTI0LTB4MTY0OCkpKWNvbnRpbnVlO3ZhbD1zdHJjaHIoYnVmLAotKChjaGFyKSgweGIwMysyNzk0LTB4MTViMCkpKTtpZighdmFsKXtwcmludGYoCitOVl9NQVhfSVRFTV9MRU4sZnApKXtpZihidWZbKDB4NTVjKzE3MC0weDYwNildPT0nXG4nfHxidWZbKDB4MWVkZisxODU5LTB4MjYyMildCis9PSgoY2hhcikoMHg3NTkrNjQxMC0weDIwNDApKSljb250aW51ZTt2YWw9c3RyY2hyKGJ1ZiwoKGNoYXIpKDB4MWMyMSs1OC0weDFjMWUpKQorKTtpZighdmFsKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHgyNVx4NzNceDIwXHg2Nlx4NjlceDZjXHg2NVx4MjBceDY2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDNhXHg3M1x4NzRceDcyXHg2OVx4NmVceDY3XHgyMFx4M2RceDIwXHgyNVx4NzMiICJcbiIKLSxjb25maWctPmNvbmZpZ0ZpbGUsYnVmKTtjb250aW51ZTt9YnVmW3N0cmxlbihidWYpLSgweDM2MCs0MzcwLTB4MTQ3MSldPSdcMCc7KgotdmFsKys9J1wwJztudnVwZGF0ZShsaXN0LT5udkZpbGUsY29uZmlnLT5jb25maWdGaWxlLGJ1Zix2YWwsKDB4ZDNiKzY0MTgtMHgyNjRjKSkKLTt9cHJpbnRmKAorLGNvbmZpZy0+Y29uZmlnRmlsZSxidWYpO2NvbnRpbnVlO31idWZbc3RybGVuKGJ1ZiktKDB4MTMxNSsxOTQ5LTB4MWFiMSldPSdcMCc7KgordmFsKys9J1wwJztudnVwZGF0ZShsaXN0LT5udkZpbGUsY29uZmlnLT5jb25maWdGaWxlLGJ1Zix2YWwsKDB4MjUzKzMwMDEtMHhlMGIpKTsKK31wcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg3Mlx4NjVceDZjXHg2Zlx4NjFceDY0XHg0Nlx4NjFceDYzXHg3NFx4NzJceDZmXHg3OVx4NTBceDYxXHg3Mlx4NjFceDZkXHgyMFx4NjNceDZmXHg2ZVx4NjZceDY5XHg2N1x4NDZceDY5XHg2Y1x4NjVceDIwXHg2NVx4NmVceDY0XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLGNvbmZpZy0+Y29uZmlnRmlsZSk7ZmNsb3NlKGZwKTt9cmV0dXJuIFJFU1VMVF9TVUNDRVNTO312b2lkIGR1bXBfbGlzdChUX05WX0lURU0KICpsaXN0KXtpZihsaXN0PT1OVUxMKXtwcmludGYoCkBAIC0xMDgsMTIgKzEwOCwxMiBAQAogbGlzdC0+bmV4dDt3aGlsZShwIT1OVUxMKXtwcmludGYoCiAiXHg2ZVx4NzZceDczXHg2NVx4NzJceDc2XHg2NVx4NzJceDIwXHg2NFx4NzVceDZkXHg3MFx4MjBceDZiXHg2NVx4NzlceDNkXHgyNVx4NzNceDJjXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgzZFx4MjVceDczXHgyY1x4MjBceDcwXHgzZFx4MzBceDc4XHgyNVx4NzgiICJcbiIKICxwLT5rZXkscC0+dmFsdWUsKCh1bnNpZ25lZCBpbnQpcCkpO3A9cC0+bmV4dDt9fWludCBkZWxldGVfbm90X25lZWRlZChUX05WX05PREUqCi1saXN0KXtpbnQgaW5kZXg9KDB4YjYyKzQ1NDgtMHgxZDI2KTtUX05WX0lURU0qaXRlbT1OVUxMO1RfTlZfSVRFTSBoZWFkPXsKLSgweGVhYyszNi0weGVkMCl9O1RfTlZfSVRFTSpwcmV2PSZoZWFkO3ByaW50ZigKK2xpc3Qpe2ludCBpbmRleD0oMHhlMjQrMzY2Ny0weDFjNzcpO1RfTlZfSVRFTSppdGVtPU5VTEw7VF9OVl9JVEVNIGhlYWQ9eworKDB4ZjQyKzUyNTctMHgyM2NiKX07VF9OVl9JVEVNKnByZXY9JmhlYWQ7cHJpbnRmKAogIlx4NmVceDc2XHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgyMFx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4NWZceDZlXHg2Zlx4NzRceDVmXHg2ZVx4NjVceDY1XHg2NFx4NjVceDY0XHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHgyMFx4MmFceDJhXHgyYSIgIlxuIgotKTtmb3IoaW5kZXg9KDB4MTQzMSszMDYtMHgxNTYzKTtpbmRleDxOVl9IQVNIX0xFTjtpbmRleCsrKXtoZWFkLm5leHQ9bGlzdC0+Ci1udlRhYmxlW2luZGV4XTtwcmV2PSZoZWFkO2ZvcihpdGVtPXByZXYtPm5leHQ7aXRlbTspe2lmKCgweDFkYTQrOTQtMHgxZTAxKT09aXRlbQotLT51cGRhdGVfZmxhZyl7cHJldj1pdGVtO2l0ZW09aXRlbS0+bmV4dDt9ZWxzZXtwcmludGYoCispO2ZvcihpbmRleD0oMHgxNzlmKzE5NDctMHgxZjNhKTtpbmRleDxOVl9IQVNIX0xFTjtpbmRleCsrKXtoZWFkLm5leHQ9bGlzdC0+CitudlRhYmxlW2luZGV4XTtwcmV2PSZoZWFkO2ZvcihpdGVtPXByZXYtPm5leHQ7aXRlbTspe2lmKCgweDE5OTYrMjU0Mi0weDIzODMpPT0KK2l0ZW0tPnVwZGF0ZV9mbGFnKXtwcmV2PWl0ZW07aXRlbT1pdGVtLT5uZXh0O31lbHNle3ByaW50ZigKICJceDZlXHg3Nlx4NzNceDY1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Ylx4NjVceDc5XHgzZFx4MjVceDczXHgyY1x4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4M2RceDI1XHg3M1x4MjAiICJcbiIKICxpdGVtLT5rZXksaXRlbS0+dmFsdWUpO3ByZXYtPm5leHQ9aXRlbS0+bmV4dDtmcmVlKGl0ZW0tPmtleSk7ZnJlZShpdGVtLT52YWx1ZSk7CiBmcmVlKGl0ZW0pO2l0ZW09cHJldi0+bmV4dDt9fWxpc3QtPm52VGFibGVbaW5kZXhdPWhlYWQubmV4dDt9cHJpbnRmKApkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfZGIuYyBiL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX2RiLmMKaW5kZXggN2VmZDA2OC4uMGIyZjE1NSAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfZGIuYworKysgYi9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9kYi5jCkBAIC0xLDcgKzEsNyBAQAogCiAjaW5jbHVkZSAicGJfY29tLmgiDQogVF96UGJfRGJSZXN1bHQgYXRQYl9DcmVhdERiKCl7VF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFsKLVpQQl9NQVhfQllURVNfREJdPXsoMHgxMTliKzQxMzctMHgyMWM0KX07VUlOVDMyIGNvdW50PSgweDkyZCsxMTQtMHg5OWYpO3Jlc3VsdD0KK1pQQl9NQVhfQllURVNfREJdPXsoMHhlY2ErNDgzMC0weDIxYTgpfTtVSU5UMzIgY291bnQ9KDB4MTc2ZCs4OTctMHgxYWVlKTtyZXN1bHQ9CiBhdFBiX0V4ZWNEYlNxbChaUEJfQ1JFQVRFX1BCTV9UQUJMRSxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSyE9cmVzdWx0KXtzbG9nKAogUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDcwXHg2Mlx4NmRceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NjlceDczXHgyMFx4MjVceDY0IiAiXG4iCkBAIC0xOCwxOCArMTgsMTggQEAKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9VU0lNKTtyZXN1bHQ9YXRQYl9FeGVjRGJTcWwoc3FsLE5VTEwsTlVMTCk7aWYoCiBaUEJfREJfT0shPXJlc3VsdCl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2M1x4NzJceDY1XHg2MVx4NzRceDY1XHgyMFx4NzBceDYyXHg2ZFx4NWZceDY0XHg2NVx4NzZceDY5XHg2M1x4NjVceDVmXHg2M1x4NjFceDcwXHg2MVx4NjJceDY5XHg2Y1x4NjlceDc0XHg3OVx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHg2OVx4NzNceDIwXHgyNVx4NjQiICJcbiIKLSxyZXN1bHQpO3JldHVybiByZXN1bHQ7fW1lbXNldChzcWwsKDB4MTc3OSsyNjE2LTB4MjFiMSksc2l6ZW9mKHNxbCkpO3NucHJpbnRmKAotc3FsLHNpemVvZihzcWwpLSgweDc5ZCs1MzkxLTB4MWNhYiksCisscmVzdWx0KTtyZXR1cm4gcmVzdWx0O31tZW1zZXQoc3FsLCgweDVkYyszNDg5LTB4MTM3ZCksc2l6ZW9mKHNxbCkpO3NucHJpbnRmKHNxbAorLHNpemVvZihzcWwpLSgweDExM2YrNDgxOS0weDI0MTEpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczIgogLFpQQl9EQl9TSU1fQ0FQQUJJTElUWV9UQUJMRSk7KFZPSUQpYXRQYl9FeGVjRGJTcWwoc3FsLGF0UGJfRGJDb3VudFRhYmxlTGluZUNiLCYKLWNvdW50KTtpZigoMHgxMGY4KzQ2MTctMHgyMzAxKTxjb3VudCl7bWVtc2V0KHNxbCwoMHg5MzMrNzU2OC0weDI2YzMpLHNpemVvZihzcWwpCi0pO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxMzFhKzYzMi0weDE1OTEpLAorY291bnQpO2lmKCgweDFjOWMrMjI5Mi0weDI1OTApPGNvdW50KXttZW1zZXQoc3FsLCgweDE4ZTcrMjc0My0weDIzOWUpLHNpemVvZihzcWwKKykpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxMGZhKzEzNTMtMHgxNjQyKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDUzXHg2OVx4NmRceDVmXHg3NFx4NzlceDcwXHg2NVx4M2VceDNkXHgzMCIKICxaUEJfREJfU0lNX0NBUEFCSUxJVFlfVEFCTEUpO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTtpZihaUEJfREJfT0sKICE9cmVzdWx0KXtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NzRceDUzXHg2OVx4NmRceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjZceDYxXHg2OVx4NmNceDIxIiAiXG4iCiApO3JldHVybiByZXN1bHQ7fX1yZXR1cm4gWlBCX0RCX09LO31UX3pQYl9EYlJlc3VsdCBhdFBiX0Ryb3BEYigpe1RfelBiX0RiUmVzdWx0IAotcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4ODIzKzc2NzEtMHgyNjFhKX07cmVzdWx0PQorcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4M2UwKzUyODQtMHgxODg0KX07cmVzdWx0PQogYXRQYl9FeGVjRGJTcWwoWlRFX0RST1BfUEJNX1NRTCxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSyE9cmVzdWx0KXtzbG9nKFBCX1BSSU5ULAogU0xPR19FUlIsCiAiXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg3Mlx4NmZceDcwXHg0NFx4NjJceDNhXHg2NFx4NjVceDZjXHgyMFx4NzBceDYyXHg2ZFx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHg2OVx4NzNceDIwXHgyNVx4NjQiICJcbiIKQEAgLTUxLDcgKzUxLDcgQEAKICk7cmV0dXJuIFpQQl9EQl9FUlJPUl9JTlZBTElEUFRSO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg3M1x4NzFceDZjXHg2OVx4NzRceDY1XHgzM1x4NWZceDZmXHg3MFx4NjVceDZlXHgyMFx4NjNceDYxXHg2Y1x4NmMiCiApOwotI2lmICgweDE4NzgrMzQ1OS0weDI1ZmIpDQorI2lmICgweDdhNys3ODk3LTB4MjY4MCkNCiBpZighZm9wZW4oWlBCX0RCX1BBVEgsIlx4NzIiKSl7ZmlsZT1mb3BlbihaUEJfREJfUEFUSCwiXHg3NyIpO2lmKCFmaWxlKXtwcmludGYoCiAiXHg3NVx4NmVceDYxXHg2Mlx4NmNceDY1XHgyMFx4NzRceDZmXHgyMFx4NmZceDcwXHg2NVx4NmVceDIwXHgyMFx4NjZceDY5XHg2Y1x4NjVceDIwXHg2NVx4NzRceDYzXHg1Zlx4NzJceDc3XHgyZlx4NzBceDYyXHg2ZFx4MmVceDY0XHg2MiIgIlxuIgogKTt9ZWxzZXtwcmludGYoCkBAIC02OCwzMiArNjgsMzIgQEAKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDYzXHg2Y1x4NmZceDczXHg2NVx4MjBceDY0XHg2MiIKICk7cmV0dXJuIFpQQl9EQl9FUlJPUjt9CiAjaWZkZWYgV0VCU19TRUNVUklUWQ0KLWlmKGFjY2VzcyhaUEJfVE1QX1BBVEgsRl9PSyk9PSgweGNkMysxODY2LTB4MTQxZCkpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCitpZihhY2Nlc3MoWlBCX1RNUF9QQVRILEZfT0spPT0oMHgxNTQ4KzE1NzYtMHgxYjcwKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg3NFx4NmRceDcwXHgyMFx4NjRceDYyXHgyMFx4NzNceDc0XHg2MVx4NzkiKTtpZigKLXJlbW92ZShaUEJfVE1QX1BBVEgpIT0oMHgxNDcyKzEyMjMtMHgxOTM5KSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK3JlbW92ZShaUEJfVE1QX1BBVEgpIT0oMHhjNjUrNTc0Ny0weDIyZDgpKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDVhXHg1MFx4NDJceDVmXHg1NFx4NGRceDUwXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2YyIKLSk7fX1pZihyZW5hbWUoWlBCX1NFQ19QQVRILFpQQl9UTVBfUEFUSCkhPSgweDM3NSs2MDA1LTB4MWFlYSkpe3Nsb2coUEJfUFJJTlQsCispO319aWYocmVuYW1lKFpQQl9TRUNfUEFUSCxaUEJfVE1QX1BBVEgpIT0oMHgxYTM2KzI5NzItMHgyNWQyKSl7c2xvZyhQQl9QUklOVCwKIFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZVx4NjFceDZkXHg2NVx4MjBceDVhXHg1MFx4NDJceDVmXHg1M1x4NDVceDQzXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2YyIKLSk7fXtjaGFyIHJudW1fYnVmWygweDIxNjcrMzk0LTB4MjJkOSldPXsoMHg0MTcrMTE4Ni0weDhiOSl9O2NoYXIgY21kWwotKDB4MjE2OCsxMjI1LTB4MjViMSldPXsoMHgxYmM5KzEzODgtMHgyMTM1KX07c2NfY2ZnX2dldCgKKyk7fXtjaGFyIHJudW1fYnVmWygweGNmNis0Njc1LTB4MWYyMSldPXsoMHgzZTMrNzc2Mi0weDIyMzUpfTtjaGFyIGNtZFsKKygweDIwNDErNzgzLTB4MjJkMCldPXsoMHgxYTMrNjg1NC0weDFjNjkpfTtzY19jZmdfZ2V0KAogIlx4NzJceDZlXHg3NVx4NmRceDVmXHg2MVx4NzQiLHJudW1fYnVmLHNpemVvZihybnVtX2J1ZikpO3NucHJpbnRmKGNtZCxzaXplb2YoCiBjbWQpLAogIlx4MmZceDYyXHg2OVx4NmVceDJmXHg2Zlx4NzBceDY1XHg2ZVx4NzNceDczXHg2Y1x4MjBceDY1XHg2ZVx4NjNceDIwXHgyZFx4NjVceDIwXHgyZFx4NjFceDY1XHg3M1x4MzJceDM1XHgzNlx4MjBceDJkXHg3M1x4NjFceDZjXHg3NFx4MjBceDJkXHg2OVx4NmVceDIwXHgyNVx4NzNceDIwXHgyZFx4NmZceDc1XHg3NFx4MjBceDI1XHg3M1x4MjBceDJkXHg3MFx4NjFceDczXHg3M1x4MjBceDcwXHg2MVx4NzNceDczXHgzYVx4MjVceDczIgogLFpQQl9EQl9QQVRILFpQQl9TRUNfUEFUSCxybnVtX2J1Zik7enhpY19zeXN0ZW0oY21kKTtpZihhY2Nlc3MoWlBCX1NFQ19QQVRILEZfT0sKLSk9PSgweDE4M2IrMjg5Ni0weDIzOGIpKXtpZihyZW1vdmUoWlBCX1RNUF9QQVRIKSE9KDB4MzU5KzMwNjEtMHhmNGUpKXtzbG9nKAorKT09KDB4ZTNmKzcwNi0weDExMDEpKXtpZihyZW1vdmUoWlBCX1RNUF9QQVRIKSE9KDB4NzNhKzIyNzgtMHgxMDIwKSl7c2xvZygKIFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDVhXHg1MFx4NDJceDVmXHg1NFx4NGRceDUwXHg1Zlx4NTBceDQxXHg1NFx4NDhceDMxXHgyMFx4NjZceDYxXHg2OVx4NmMiCiApO319fQogI2VuZGlmCQ0KIHJldHVybiBaUEJfREJfT0s7fXN0YXRpYyBjaGVja19zcWxfY21kKGNvbnN0IGNoYXIqcFNxbCl7aWYocFNxbCE9TlVMTCl7aWYoc3Ryc3RyCi0ocFNxbCwiXHgzYiIpfHxzdHJzdHIocFNxbCwiXHgyZFx4MmQiKSl7cmV0dXJuKDB4MzZhKzc3OTMtMHgyMWRiKTt9cmV0dXJuCi0oMHhjMWErNTc4NC0weDIyYjEpO31yZXR1cm4oMHgyMCszNDMzLTB4ZDg5KTt9VF96UGJfRGJSZXN1bHQgYXRQYl9FeGVjRGJTcWwoCisocFNxbCwiXHgzYiIpfHxzdHJzdHIocFNxbCwiXHgyZFx4MmQiKSl7cmV0dXJuKDB4ZjU4KzU4NDQtMHgyNjJjKTt9cmV0dXJuCisoMHg0NDIrODk3LTB4N2MyKTt9cmV0dXJuKDB4MzBkKzY2OTEtMHgxZDMwKTt9VF96UGJfRGJSZXN1bHQgYXRQYl9FeGVjRGJTcWwoCiBjb25zdCBjaGFyKnBTcWwsc3FsaXRlM19jYWxsYmFjayBjYWxsYmFjayxWT0lEKnBGdmFyZyl7c3FsaXRlMypwRGI9TlVMTDtDSEFSIAotZGJFcnJNc2dbKDB4MTU2MCsxNDc4LTB4MWFhNildPXsoMHgxNDdiKzE1MjEtMHgxYTZjKX07aWYoTlVMTD09cFNxbCl7cmV0dXJuIAorZGJFcnJNc2dbKDB4NGY3KzgyOTMtMHgyNGRjKV09eygweGNmZis2MTU2LTB4MjUwYil9O2lmKE5VTEw9PXBTcWwpe3JldHVybiAKIFpQQl9EQl9FUlJPUl9JTlZBTElEUFRSO30KICNpZmRlZiBXRUJTX1NFQ1VSSVRZDQotaWYoY2hlY2tfc3FsX2NtZChwU3FsKT09KDB4OTU1KzU0NjktMHgxZWIyKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK2lmKGNoZWNrX3NxbF9jbWQocFNxbCk9PSgweDE1NWMrMTIwNC0weDFhMTApKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4MjFceDIxXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ1XHg3OFx4NjVceDYzXHg0NFx4NjJceDUzXHg3MVx4NmNceDNhXHg3OFx4NzNceDczXHgyMFx4MjVceDczIiAiXG4iCiAscFNxbCk7cmV0dXJuIFpQQl9EQl9FUlJPUl9JTlZBTElEUFRSO30KICNlbmRpZgkNCkBAIC0xMDIsMzQgKzEwMiwzNCBAQAogKTtyZXR1cm4gWlBCX0RCX0VSUk9SX05PVE9QRU5EQjt9c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0NVx4NzhceDY1XHg2M1x4NDRceDYyXHg1M1x4NzFceDZjXHgzYVx4MjVceDczIiAiXG4iCiAscFNxbCk7aWYoc3FsaXRlM19leGVjKHBEYixwU3FsLGNhbGxiYWNrLHBGdmFyZyxOVUxMKSl7c3RybmNweShkYkVyck1zZywKLXNxbGl0ZTNfZXJybXNnKHBEYiksc2l6ZW9mKGRiRXJyTXNnKS0oMHgxY2U3KzEyOTctMHgyMWY3KSk7c2xvZyhQQl9QUklOVCwKLVNMT0dfRVJSLAorc3FsaXRlM19lcnJtc2cocERiKSxzaXplb2YoZGJFcnJNc2cpLSgweDYyMys0NDE5LTB4MTc2NSkpO3Nsb2coUEJfUFJJTlQsU0xPR19FUlIKKywKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjVceDYzXHgyMFx4NzNceDcxXHg2Y1x4MmNceDczXHg3MVx4NmNceDY5XHg3NFx4NjVceDMzXHg1Zlx4NjVceDcyXHg3Mlx4NmRceDczXHg2N1x4M2FceDI1XHg3M1x4MmUiCiAsZGJFcnJNc2cpOyhWT0lEKXNxbGl0ZTNfY2xvc2UocERiKTtyZXR1cm4gWlBCX0RCX0VSUk9SO30oVk9JRClhdFBiX0RiQ2xvc2UocERiKQogO3JldHVybiBaUEJfREJfT0s7fVNJTlQzMiBhdFBiX0luaXRBcEluZGV4Q2IoVk9JRCpmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LAotY2hhcioqbG5hbWUpe1NJTlQzMiBpbmRleD0oMHgxYTU1KzczOS0weDFkMzgpO2lmKCgweDE2YTArMzIyMC0weDIzMzMpPmxpbmUpe3Nsb2cKK2NoYXIqKmxuYW1lKXtTSU5UMzIgaW5kZXg9KDB4MWNhKzg0MjMtMHgyMmIxKTtpZigoMHgxMGU5KzQ2OTktMHgyMzQzKT5saW5lKXtzbG9nCiAoUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ5XHg2ZVx4NjlceDc0XHg0MVx4NzBceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDNceDYyXHgzYVx4NzJceDY1XHg2M1x4NmZceDcyXHg2NFx4MjBceDZlXHg2Zlx4MjBceDY0XHg2MVx4NzRceDYxXHgyZSIgIlxuIgotKTtyZXR1cm4tKDB4MTFjNSsyMjgyLTB4MWFhZSk7fWluZGV4PWF0b2koenJlc3VsdFsoMHg0ZGYrMjI0My0weGRhMildKTtpZihpbmRleD4KKyk7cmV0dXJuLSgweGJhNSsyNzA3LTB4MTYzNyk7fWluZGV4PWF0b2koenJlc3VsdFsoMHgyMzArMTA3MC0weDY1ZSldKTtpZihpbmRleD4KIFpQQl9BUF9NQVhfUkVDT1JEKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0OVx4NmVceDY5XHg3NFx4NDFceDcwXHg0OVx4NmVceDY0XHg2NVx4NzhceDQzXHg2Mlx4M2FceDY5XHg2ZVx4NjRceDY1XHg3OFx4MjBceDZmXHg3Nlx4NjVceDcyXHg2Nlx4NmNceDZmXHg3N1x4MmUiICJcbiIKLSk7cmV0dXJuLSgweGViYSs2MDU2LTB4MjY2MSk7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKKyk7cmV0dXJuLSgweDE2NzArNDExMi0weDI2N2YpO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ5XHg2ZVx4NjlceDc0XHg0MVx4NzBceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDNceDYyXHgzYVx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NCIgIlxuIgotLGluZGV4KTtnX3pQYl9BcEluZGV4W2luZGV4XT1QQk1fU1VDQ0VTUztyZXR1cm4oMHgxMzRhKzM3NzYtMHgyMjBhKTt9CissaW5kZXgpO2dfelBiX0FwSW5kZXhbaW5kZXhdPVBCTV9TVUNDRVNTO3JldHVybigweDc3Mys3MTI4LTB4MjM0Yik7fQogVF96UGJfRGJSZXN1bHQgYXRQYl9Jbml0QXBJbmRleCgpe0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsKLSgweDE2OWYrMjQwMC0weDFmZmYpfTtTSU5UMzIgaT0oMHgyNGMrMjMwNS0weGI0Yyk7Z196UGJfQXBJbmRleFsKLSgweDgwMis0MzkwLTB4MTkyOCldPVpQQl9BUF9NQVhfUkVDT1JEO2ZvcihpPSgweGFjYSszMDEzLTB4MTY4ZSk7aTw9Ci1nX3pQYl9BcEluZGV4WygweDFhY2MrMjM1MS0weDIzZmIpXTtpKyspe2dfelBiX0FwSW5kZXhbaV09UEJNX0VSUk9SX05PVF9GT1VORDt9CisoMHg4ZTYrMjU0Mi0weDEyZDQpfTtTSU5UMzIgaT0oMHhkNDIrNTg5Ni0weDI0NDkpO2dfelBiX0FwSW5kZXhbCisoMHg4ZDQrNTUyOC0weDFlNmMpXT1aUEJfQVBfTUFYX1JFQ09SRDtmb3IoaT0oMHgxMDM1KzIwNTUtMHgxODNiKTtpPD0KK2dfelBiX0FwSW5kZXhbKDB4MTc2NSszODE1LTB4MjY0YyldO2krKyl7Z196UGJfQXBJbmRleFtpXT1QQk1fRVJST1JfTk9UX0ZPVU5EO30KIHNucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg1MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVApO3JldHVybiBhdFBiX0V4ZWNEYlNxbChzcWwsYXRQYl9Jbml0QXBJbmRleENiLAotWlVGSV9OVUxMKTt9SU5UIHp0ZV9wYm1fY2hlY2tfYW5kX2NyZWF0X2RpcihjaGFyKnBhdGgpe2lmKC0oMHg1OGErNTA5OC0weDE5NzMpPT0KLWFjY2VzcyhwYXRoLCgweGE3KzMzNzctMHhkZDgpKSl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAorWlVGSV9OVUxMKTt9SU5UIHp0ZV9wYm1fY2hlY2tfYW5kX2NyZWF0X2RpcihjaGFyKnBhdGgpe2lmKC0oMHgxMTk4KzEzODYtMHgxNzAxKQorPT1hY2Nlc3MocGF0aCwoMHg3NjUrNjk4My0weDIyYWMpKSl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NzBceDYyXHg2ZFx4M2FceDI1XHg3M1x4MjBceDY0XHg2Zlx4NjVceDczXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjlceDczXHg3NFx4MmNceDczXHg2Zlx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDY5XHg3NFx4MmUiICJcbiIKLSxaUEJfREJfRElSKTtpZigtKDB4Zjk1KzI4NTgtMHgxYWJlKT09bWtkaXIocGF0aCwoMHg5M2ErNDU2LTB4OTAzKSkpe3Nsb2coCissWlBCX0RCX0RJUik7aWYoLSgweDFiNWQrMTQwMi0weDIwZDYpPT1ta2RpcihwYXRoLCgweDE0YjYrMjM0NS0weDFiZTApKSl7c2xvZygKIFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4M2FceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDIwXHg3NFx4NmZceDIwXHg2M1x4NzJceDY1XHg2MVx4NzRceDY1XHgyMFx4NjRceDYyXHgyMFx4NjRceDY5XHg3Mlx4MmUiICJcbiIKLSk7cmV0dXJuLSgweGU0Zis0NzYwLTB4MjBlNik7fX1yZXR1cm4oMHgxZGE5KzE4ODYtMHgyNTA3KTt9VUlOVDggCispO3JldHVybi0oMHgzODgrNjAxNC0weDFiMDUpO319cmV0dXJuKDB4MzVhKzc2MzktMHgyMTMxKTt9VUlOVDggCiB6dGVfcGJtX2NoZWNrX3dlYl9wYm1fZGlyKFZPSUQpewogI2lmZGVmIF9NQkJfT1NfVUNMSU5VWA0KIChWT0lEKXp0ZV9wYm1fY2hlY2tfYW5kX2NyZWF0X2RpcigKQEAgLTE0MywyMSArMTQzLDIxIEBACiAiXHgyZlx4NjVceDc0XHg2M1x4NWZceDcyXHg3N1x4MmZceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjciKTsKICNlbmRpZg0KIHJldHVybiBaVUZJX1NVQ0M7fVRfelBiX0RiUmVzdWx0IGF0UGJfRGVsU2ltUmVjRnJvbVBiVGFibGUoU0lOVDMyIGluZGV4KXsKLVRfelBiX0RiUmVzdWx0IHJlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweGRlMysyMTk3LTB4MTY3OCl9Ci07c25wcmludGYoc3FsLHNpemVvZihzcWwpLAorVF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTM3NyszNTg2LTB4MjE3OSkKK307c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyMFx4NjFceDZlXHg2NFx4MjBceDUwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fVVNJTSxpbmRleCk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpOwogaWYoWlBCX0RCX09LPT1yZXN1bHQpe2dfelBiX1NpbUluZGV4W2luZGV4XT1QQk1fRVJST1JfTk9UX0ZPVU5EO31yZXR1cm4gcmVzdWx0O30KIFRfelBiX0RiUmVzdWx0IGF0UGJfTG9hZEFSZWNUb1BibVRhYmxlKFRfelBiX1dlYkNvbnRhY3QqcGJQYXJhKXtUX3pQYl9EYlJlc3VsdCAKLXJlc3VsdD1aUEJfREJfRVJST1I7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweGUzMis0MTI4LTB4MWU1Mil9O2lmKE5VTEw9PQorcmVzdWx0PVpQQl9EQl9FUlJPUjtDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTkyNisyNzM1LTB4MjNkNSl9O2lmKE5VTEw9PQogcGJQYXJhKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0Y1x4NmZceDYxXHg2NFx4NDFceDUyXHg2NVx4NjNceDU0XHg2Zlx4NTBceDYyXHg2ZFx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2OVx4NmVceDcwXHg3NVx4NzQiCiApO3JldHVybiBaUEJfREJfRVJST1JfSU5WQUxJRFBUUjt9c25wcmludGYoc3FsLHNpemVvZihzcWwpLCJpbnNlcnQgaW50byAlcyAoUGJtX2luZGV4LExvY2F0aW9uLE51bWJlcixUeXBlLE5hbWUsQW5yLEFucjEsRW1haWwsU25lKSBcDQogCQkJdmFsdWVzKFwnJWRcJyxcJyVkXCcsXCclc1wnLFwnJWRcJyxcJyVzXCcsXCclc1wnLFwnJXNcJyxcJyVzXCcsXCclc1wnKSIsWlBCX0RCX1BCTV9UQUJMRSxwYlBhcmEtPnBiSW5kZXgscGJQYXJhLT5wYkxvY2F0aW9uLHBiUGFyYS0+bW9iaWxOdW1iZXIscGJQYXJhCiAtPnBiVHlwZSxwYlBhcmEtPm5hbWUscGJQYXJhLT5ob21lTnVtYmVyLHBiUGFyYS0+b2ZmaWNlTnVtYmVyLHBiUGFyYS0+ZW1haWwsCiBwYlBhcmEtPnNuZSk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSz09cmVzdWx0KXtDSEFSIAotcGJNYXhbKDB4MTA3KzQ5MjMtMHgxNDEwKV09eygweDRjMSs1MDY3LTB4MTg4Yyl9O3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1BWCwKLXBiTWF4LHNpemVvZihwYk1heCkpO2lmKChwYlBhcmEtPnBiSW5kZXg+PSgweGQ2ZCsyNzAyLTB4MTdmYSkpJiYocGJQYXJhLT5wYkluZGV4CitwYk1heFsoMHgxOTYrNDg0Mi0weDE0NGUpXT17KDB4YTNiKzYyMzgtMHgyMjk5KX07c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLAorcGJNYXgsc2l6ZW9mKHBiTWF4KSk7aWYoKHBiUGFyYS0+cGJJbmRleD49KDB4NGQ3KzQ0OTctMHgxNjY3KSkmJihwYlBhcmEtPnBiSW5kZXgKIDw9YXRvaShwYk1heCkpKXtnX3pQYl9TaW1JbmRleFtwYlBhcmEtPnBiSW5kZXhdPVBCTV9TVUNDRVNTO30oVk9JRClzY19jZmdfc2V0KAogWlBCX05WX1dSSVRFX0ZMQUcsWlBCX09QRVJBVEVfU1VDKTt9ZWxzZXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLAogWlBCX05FV19FUlJPUik7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKQEAgLTE3NCwxNyArMTc0LDE3IEBACiBwYm1QYXJhLT5wYlR5cGUscGJtUGFyYS0+bmFtZSxwYm1QYXJhLT5ob21lTnVtYmVyLHBibVBhcmEtPm9mZmljZU51bWJlcixwYm1QYXJhCiAtPmVtYWlsLHBibVBhcmEtPnNuZSxwYm1QYXJhLT5ncm91cCxwYm1QYXJhLT5wYklkKTt9fVRfelBiX0RiUmVzdWx0IAogYXRQYl9EYkdldFBhcmFtQ2IoVk9JRCpmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtUX3pQYl9IZWFkZXIgCi1wYXJhPXsoMHgxNWMzKzcwNC0weDE4ODMpfTtpZigoMHgxNTZjKzMxNDMtMHgyMWIyKT5saW5lKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAorcGFyYT17KDB4YmY4KzYwMjQtMHgyMzgwKX07aWYoKDB4NzArOTQ2MC0weDI1NjMpPmxpbmUpe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg2Mlx4NDdceDY1XHg3NFx4NTBceDYxXHg3Mlx4NjFceDZkXHg0M1x4NjJceDNhXHg3Mlx4NjVceDYzXHg2Zlx4NzJceDY0XHgyMFx4NmVceDZmXHgyMFx4NjRceDYxXHg3NFx4NjFceDJlIgotKTtyZXR1cm4gWlBCX0RCX0VSUk9SO31wYXJhLnBiSW5kZXg9YXRvaSh6cmVzdWx0WygweGUyMSszNDg0LTB4MWJiZCldKTtwYXJhLgotcGJMb2NhdGlvbj1hdG9pKHpyZXN1bHRbKDB4ODY0KzIwODEtMHgxMDg0KV0pO3Nsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKKyk7cmV0dXJuIFpQQl9EQl9FUlJPUjt9cGFyYS5wYkluZGV4PWF0b2koenJlc3VsdFsoMHg0ZGYrODQzNC0weDI1ZDEpXSk7cGFyYS4KK3BiTG9jYXRpb249YXRvaSh6cmVzdWx0WygweDFkNis1NDMyLTB4MTcwZCldKTtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg2Mlx4NDdceDY1XHg3NFx4NTBceDYxXHg3Mlx4NjFceDZkXHg0M1x4NjJceDNhXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzZFx4MjVceDY0XHgyY1x4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0IgogLHBhcmEucGJJbmRleCxwYXJhLnBiTG9jYXRpb24pO21lbWNweShmdmFyZywmcGFyYSxzaXplb2YocGFyYSkpO3JldHVybiBaUEJfREJfT0sKIDt9VF96UGJfRGJSZXN1bHQgYXRQYl9HZXRJbmRleExvY2F0aW9uQnlJZChUX3pQYl9IZWFkZXIqcGJQYXJhKXtDSEFSIHNxbFsKLVpQQl9NQVhfQllURVNfREJdPXsoMHhmN2IrMTkxNi0weDE2ZjcpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktCi0oMHgxZDUyKzExLTB4MWQ1YyksCitaUEJfTUFYX0JZVEVTX0RCXT17KDB4MjU2Mis0MjUtMHgyNzBiKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLQorKDB4MTAwNiszODQtMHgxMTg1KSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg1MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyY1x4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg2OVx4NjRceDNkXHgyNVx4NjQiCi0sWlBCX0RCX1BCTV9UQUJMRSxwYlBhcmEtPnBiSWQpO21lbXNldChwYlBhcmEsKDB4NTk2KzM0ODAtMHgxMzJlKSxzaXplb2YoCissWlBCX0RCX1BCTV9UQUJMRSxwYlBhcmEtPnBiSWQpO21lbXNldChwYlBhcmEsKDB4ZDQzKzU2MTgtMHgyMzM1KSxzaXplb2YoCiBUX3pQYl9IZWFkZXIpKTtyZXR1cm4gYXRQYl9FeGVjRGJTcWwoc3FsLGF0UGJfRGJHZXRQYXJhbUNiLHBiUGFyYSk7fVZPSUQgCiBhdFBiX1NxbE5ld09uZVJlYyhUX3pQYl9XZWJDb250YWN0KnBibVBhcmEsQ0hBUipzcWwsaW50IGxlbil7aWYoCiBaUEJfTE9DQVRJT05fVVNJTT09cGJtUGFyYS0+cGJMb2NhdGlvbil7c25wcmludGYoc3FsLGxlbiwiaW5zZXJ0IGludG8gJXMgKFBibV9pbmRleCxMb2NhdGlvbixOdW1iZXIsVHlwZSxOYW1lLEFucixBbnIxLEVtYWlsLFNuZSlcDQpAQCAtMTk2LDggKzE5Niw4IEBACiBwYm1QYXJhLT5wYlR5cGUscGJtUGFyYS0+bmFtZSxwYm1QYXJhLT5ob21lTnVtYmVyLHBibVBhcmEtPm9mZmljZU51bWJlcixwYm1QYXJhCiAtPmVtYWlsLHBibVBhcmEtPnNuZSxwYm1QYXJhLT5ncm91cCk7fX1UX3pQYl9EYlJlc3VsdCAKIGF0UGJfV3JpdGVDb250YWN0VG9QYm1UYWJsZShUX3pQYl9XZWJDb250YWN0KnBQYlJlY29yZCxCT09MIHBiTmV3RmxhZyl7Ci1UX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdPXsoMHhhZCs0MDIyLTB4MTA2Myl9OwotaWYoTlVMTD09cFBiUmVjb3JkKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAorVF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTVjMyszODk1LTB4MjRmYSkKK307aWYoTlVMTD09cFBiUmVjb3JkKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg1N1x4NzJceDY5XHg3NFx4NjVceDQzXHg2Zlx4NmVceDc0XHg2MVx4NjNceDc0XHg1NFx4NmZceDUwXHg2Mlx4NmRceDU0XHg2MVx4NjJceDZjXHg2NVx4M2FceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0IgogKTtyZXR1cm4gWlBCX0RCX0VSUk9SX0lOVkFMSURQVFI7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTdceDcyXHg2OVx4NzRceDY1XHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4NTRceDZmXHg1MFx4NjJceDZkXHg1NFx4NjFceDYyXHg2Y1x4NjVceDNhXHg2OVx4NmVceDcwXHg3NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2OVx4NzNceDIwXHgyNVx4NjRceDJjXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiICJcbiIKQEAgLTIwNyw3NSArMjA3LDc1IEBACiBaUEJfTE9DQVRJT05fVVNJTT09cFBiUmVjb3JkLT5wYkxvY2F0aW9uKXtnX3pQYl9TaW1JbmRleFsocFBiUmVjb3JkLT5wYkluZGV4KV09CiBQQk1fU1VDQ0VTUzt9ZWxzZSBpZihaUEJfTE9DQVRJT05fQVA9PXBQYlJlY29yZC0+cGJMb2NhdGlvbil7Z196UGJfQXBJbmRleFsoCiBwUGJSZWNvcmQtPnBiSW5kZXgpXT1QQk1fU1VDQ0VTUzt9fXJldHVybiByZXN1bHQ7fVNJTlQzMiBhdFBiX0RiQ291bnRUYWJsZUxpbmVDYgotKFZPSUQqZnZhcmcsaW50IGxpbmUsY2hhcioqenJlc3VsdCxjaGFyKipsbmFtZSl7aWYoKDB4MTcxMys0ODUtMHgxOGY3KT5saW5lKXsKLXNsb2coUEJfUFJJTlQsU0xPR19FUlIsCisoVk9JRCpmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtpZigoMHg0YjkrMjIzMi0weGQ3MCk+bGluZSl7c2xvZworKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NzBceDYyXHg2ZFx4M2FceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDIwXHg2ZVx4NmZceDIwXHg2NFx4NjFceDc0XHg2MVx4MmUiCi0pO3JldHVybi0oMHgzYzArMzQxLTB4NTE0KTt9KihpbnQqKWZ2YXJnPWF0b2koenJlc3VsdFsoMHgxNzc2KzI4ODAtMHgyMmI2KV0pOwotcmV0dXJuKDB4ZWVhKzM5MDUtMHgxZTJiKTt9VF96UGJfRGJSZXN1bHQgYXRQYl9TZXRTaW1DYXBhY2l0eVRhYmxlKAorKTtyZXR1cm4tKDB4Y2I0KzI3MDEtMHgxNzQwKTt9KihpbnQqKWZ2YXJnPWF0b2koenJlc3VsdFsoMHg3YjArNjM1NS0weDIwODMpXSk7CityZXR1cm4oMHg5ZGErNDk3NC0weDFkNDgpO31UX3pQYl9EYlJlc3VsdCBhdFBiX1NldFNpbUNhcGFjaXR5VGFibGUoCiBUX3pQYl9Vc2ltQ2FwYWNpdHkgcGJQYXJhKXtUX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO0NIQVIgc3FsWwotWlBCX01BWF9CWVRFU19EQl09eygweDEwMCs2OTAyLTB4MWJmNil9O1VJTlQzMiBjb3VudD0oMHhiM2MrMTkxNC0weDEyYjYpOwotc25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDFjZDIrMTg4LTB4MWQ4ZCksCitaUEJfTUFYX0JZVEVTX0RCXT17KDB4MTlhNSsxNzU5LTB4MjA4NCl9O1VJTlQzMiBjb3VudD0oMHgzYmIrMjEyNi0weGMwOSk7CitzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4MjAwKzQzOTctMHgxMzJjKSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3MyIKICxaUEJfREJfU0lNX0NBUEFCSUxJVFlfVEFCTEUpOyhWT0lEKWF0UGJfRXhlY0RiU3FsKHNxbCxhdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmCi1jb3VudCk7aWYoKDB4ZmM2KzE0NjEtMHgxNTdiKTxjb3VudCl7bWVtc2V0KHNxbCwoMHgxODIyKzM1MTctMHgyNWRmKSxzaXplb2Yoc3FsKQotKTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCktKDB4ZjFhKzM2ODQtMHgxZDdkKSwKK2NvdW50KTtpZigoMHgxNjYrNzU1OC0weDFlZWMpPGNvdW50KXttZW1zZXQoc3FsLCgweDcxOSs3MDEwLTB4MjI3Yiksc2l6ZW9mKHNxbCkpCis7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGU2MysxOTMtMHhmMjMpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NTNceDY5XHg2ZFx4NWZceDc0XHg3OVx4NzBceDY1XHgzZVx4M2RceDMwIgogLFpQQl9EQl9TSU1fQ0FQQUJJTElUWV9UQUJMRSk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO2lmKFpQQl9EQl9PSwogIT1yZXN1bHQpe3Nsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTNceDY1XHg3NFx4NTNceDY5XHg2ZFx4NDNceDYxXHg3MFx4NjFceDYzXHg2OVx4NzRceDc5XHg1NFx4NjFceDYyXHg2Y1x4NjVceDNhXHg2Nlx4NjFceDY5XHg2Y1x4MjEiICJcbiIKLSk7cmV0dXJuIHJlc3VsdDt9fW1lbXNldChzcWwsKDB4ZTAyKzE4MDUtMHgxNTBmKSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLAotc2l6ZW9mKHNxbCktKDB4NDNkKzUxMDAtMHgxODI4KSwiaW5zZXJ0IGludG8gJXMgKFNpbV90eXBlLE1heF9yZWNvcmRfbnVtYmVyLFVzZWRfcmVjb3JkX251bWJlcixNYXhfbnVtYmVyX2xlbixNYXhfbmFtZV9sZW4sTWF4X2Fucl9sZW4sTWF4X2FucjFfbGVuLCBcDQorKTtyZXR1cm4gcmVzdWx0O319bWVtc2V0KHNxbCwoMHhmMjArMzExNS0weDFiNGIpLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwsCitzaXplb2Yoc3FsKS0oMHg1Yys1MzkwLTB4MTU2OSksImluc2VydCBpbnRvICVzIChTaW1fdHlwZSxNYXhfcmVjb3JkX251bWJlcixVc2VkX3JlY29yZF9udW1iZXIsTWF4X251bWJlcl9sZW4sTWF4X25hbWVfbGVuLE1heF9hbnJfbGVuLE1heF9hbnIxX2xlbiwgXA0KIAkgICAgICAgICAgTWF4X2VtYWlsX2xlbixNYXhfc25lX2xlbikgdmFsdWVzKFwnJWRcJyxcJyVkXCcsXCclZFwnLFwnJWRcJyxcJyVkXCcsXCclZFwnLFwnJWRcJyxcJyVkXCcsXCclZFwnKSIsWlBCX0RCX1NJTV9DQVBBQklMSVRZX1RBQkxFLHBiUGFyYS5zaW1UeXBlLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLgogdXNlZFJlY29yZE51bSxwYlBhcmEubWF4TnVtYmVyTGVuLHBiUGFyYS5tYXhOYW1lTGVuLHBiUGFyYS5tYXhBbnJMZW4scGJQYXJhLgogbWF4QW5yMUxlbixwYlBhcmEubWF4RW1haWxMZW4scGJQYXJhLm1heFNuZUxlbik7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg1M1x4NjVceDc0XHg1M1x4NjlceDZkXHg0M1x4NjFceDcwXHg2MVx4NjNceDY5XHg3NFx4NzlceDU0XHg2MVx4NjJceDZjXHg2NVx4M2FceDZmXHg2Ylx4MjEiICJcbiIKICk7cmV0dXJuIGF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO31UX3pQYl9EYlJlc3VsdCBhdFBiX1NldEFwQ2FwYWNpdHlUYWJsZSgpCi17VF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4MmRmKzg1MDctMHgyNDFhKQotfTtTSU5UMzIgY291bnQ9KDB4MTNmOCsxMDgzLTB4MTgzMyk7VF96UGJfQXBDYXBhY2l0eSBwYlBhcmE9eygweGEwMSs2OTYxLTB4MjUzMikKLX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGE0YysyOTMzLTB4MTVjMCksCit7VF96UGJfRGJSZXN1bHQgcmVzdWx0PVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4YWQxKzU1OTMtMHgyMGFhKQorfTtTSU5UMzIgY291bnQ9KDB4MTgxOCsyMzk0LTB4MjE3Mik7VF96UGJfQXBDYXBhY2l0eSBwYlBhcmE9eygweDhlYiszODQ3LTB4MTdmMikKK307c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGM2NCsyMjg0LTB4MTU0ZiksCiAiXHg3M1x4NjVceDZjXHg2NVx4NjNceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzMiCiAsWlBCX0RCX0RFVklDRV9DQVBBQklMSVRZX1RBQkxFKTsoVk9JRClhdFBiX0V4ZWNEYlNxbChzcWwsCi1hdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweGQ1KzIxMDItMHg5MGIpPGNvdW50KXttZW1zZXQoc3FsLAotKDB4ZThmKzM4MTYtMHgxZDc3KSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDExMjgrOTA0LTB4MTRhZiksCithdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweDE2NCszNjU3LTB4ZmFkKTxjb3VudCl7bWVtc2V0KHNxbCwKKygweDI0N2MrNjItMHgyNGJhKSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGE0MSs2NjgwLTB4MjQ1OCksCiAiXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzMiLAogWlBCX0RCX0RFVklDRV9DQVBBQklMSVRZX1RBQkxFKTtyZXN1bHQ9YXRQYl9FeGVjRGJTcWwoc3FsLE5VTEwsTlVMTCk7aWYoCiBaUEJfREJfT0shPXJlc3VsdCl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg1M1x4NjVceDc0XHg0MVx4NzBceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4NTRceDYxXHg2Mlx4NmNceDY1XHgzYVx4NjZceDYxXHg2OVx4NmNceDIxIiAiXG4iCi0pO3JldHVybiByZXN1bHQ7fX1tZW1zZXQoc3FsLCgweDFlNDYrMTk5Mi0weDI2MGUpLHNpemVvZihzcWwpKTtzbnByaW50ZihzcWwsCi1zaXplb2Yoc3FsKS0oMHgxMTgwKzE0OTQtMHgxNzU1KSwKKyk7cmV0dXJuIHJlc3VsdDt9fW1lbXNldChzcWwsKDB4MWFmMCsxMTY1LTB4MWY3ZCksc2l6ZW9mKHNxbCkpO3NucHJpbnRmKHNxbCwKK3NpemVvZihzcWwpLSgweDY2ZCszNTQ1LTB4MTQ0NSksCiAiXHg3M1x4NjVceDZjXHg2NVx4NjNceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjQiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVApO3Jlc3VsdD1hdFBiX0V4ZWNEYlNxbChzcWwsCiBhdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKFpQQl9EQl9PSz09cmVzdWx0KXtwYlBhcmEudXNlZFJlY29yZE51bT1jb3VudAogO3BiUGFyYS5tYXhSZWNvcmROdW09WlBCX0FQX01BWF9SRUNPUkQ7fXNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDZkXHg2MVx4NzhceDVmXHg3Mlx4NjVceDYzXHg1Zlx4NmVceDc1XHg2ZFx4M2RceDI1XHg2NFx4MmNceDc1XHg3M1x4NjVceDY0XHgzZFx4MjVceDY0IgotLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLnVzZWRSZWNvcmROdW0pO21lbXNldChzcWwsKDB4Mzc2KzIwNzMtMHhiOGYpLHNpemVvZigKLXNxbCkpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHhmNjQrMTg3MS0weDE2YjIpLAorLHBiUGFyYS5tYXhSZWNvcmROdW0scGJQYXJhLnVzZWRSZWNvcmROdW0pO21lbXNldChzcWwsKDB4MWZkOCsxMzExLTB4MjRmNyksCitzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDk0OSsxOTQ1LTB4MTBlMSksCiAiXHg2OVx4NmVceDczXHg2NVx4NzJceDc0XHgyMFx4NjlceDZlXHg3NFx4NmZceDIwXHgyNVx4NzNceDIwXHgyOFx4NGRceDYxXHg3OFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDVmXHg2ZVx4NzVceDZkXHg2Mlx4NjVceDcyXHgyY1x4NTVceDczXHg2NVx4NjRceDVmXHg3Mlx4NjVceDYzXHg2Zlx4NzJceDY0XHg1Zlx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4MjlceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDczXHgyOCIgIlwnIiAiXHgyNVx4NjQiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDY0IiAiXCciICJceDI5IgogLFpQQl9EQl9ERVZJQ0VfQ0FQQUJJTElUWV9UQUJMRSxwYlBhcmEubWF4UmVjb3JkTnVtLHBiUGFyYS51c2VkUmVjb3JkTnVtKTtyZXR1cm4KICBhdFBiX0V4ZWNEYlNxbChzcWwsTlVMTCxOVUxMKTt9VF96UGJfRGJSZXN1bHQgYXRQYl9EYkdldEluZGV4QnlHcm91cENiKFZPSUQqCiBmdmFyZyxpbnQgbGluZSxjaGFyKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtUX3pQYl9BcEluZGV4KnBiSW5kZXg9TlVMTDtpbnQgaT0KLSgweDE2YisyMTI1LTB4OWI4KTtpZigoMHgyYjErNjc5Mi0weDFkMzgpPmxpbmUpe3JldHVybiBaUEJfREJfRVJST1I7fXBiSW5kZXg9KAorKDB4MjdiKzQ4NTEtMHgxNTZlKTtpZigoMHhiNjIrMjU3My0weDE1NmUpPmxpbmUpe3JldHVybiBaUEJfREJfRVJST1I7fXBiSW5kZXg9KAogVF96UGJfQXBJbmRleCopZnZhcmc7aT1wYkluZGV4LT5jb3VudDtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ0XHg2Mlx4NDdceDY1XHg3NFx4NDlceDZlXHg2NFx4NjVceDc4XHg0Mlx4NzlceDQ3XHg3Mlx4NmZceDc1XHg3MFx4NDNceDYyXHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHgyY1x4NjlceDNkXHgyNVx4NjQiICJcbiIKLSxpKTtwYkluZGV4LT5hcEluZGV4W2krKDB4YjYrNzI4Mi0weDFkMjcpXT1hdG9pKHpyZXN1bHRbKDB4ZmZjKzI2NTAtMHgxYTU2KV0pOworLGkpO3BiSW5kZXgtPmFwSW5kZXhbaSsoMHg1YzMrNDk3MC0weDE5MmMpXT1hdG9pKHpyZXN1bHRbKDB4ZGJmKzYwMjAtMHgyNTQzKV0pOwogc2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjdceDY1XHg3NFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4NWZceDYyXHg3OVx4NWZceDY3XHg3Mlx4NmZceDc1XHg3MFx4NWZceDYzXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjQiCi0scGJJbmRleC0+YXBJbmRleFtpKygweGE5KzIzNTQtMHg5ZGEpXSk7cGJJbmRleC0+Y291bnQ9aSsoMHgxMmFiKzMxNDQtMHgxZWYyKTsKKyxwYkluZGV4LT5hcEluZGV4W2krKDB4ZWE5KzYyMjUtMHgyNmY5KV0pO3BiSW5kZXgtPmNvdW50PWkrKDB4OWViKzE4NzEtMHgxMTM5KTsKIHNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDY3XHg2NVx4NzRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDVmXHg2Mlx4NzlceDVmXHg2N1x4NzJceDZmXHg3NVx4NzBceDVmXHg2M1x4NjJceDNhXHg3MFx4NjJceDZkXHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyMFx4NjlceDczXHgyMFx4MjVceDY0IgogLHBiSW5kZXgtPmNvdW50KTtyZXR1cm4gWlBCX0RCX09LO31UX3pQYl9EYlJlc3VsdCBhdFBiX0RlbFJlY0Zyb21QYm1UYWJsZUJ5R3JvdXAKIChUX3pQYl9BcEluZGV4KmluZGV4KXtUX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO0NIQVIgc3FsW1pQQl9NQVhfQllURVNfREJdCi09eygweGE4MSszNDE1LTB4MTdkOCl9O1NJTlQzMiBjb3VudEJ5R3JvdXA9KDB4M2UxKzgyOTQtMHgyNDQ3KTtDSEFSIHBiR3JvdXBbCi1aUEJfUEFSQU1fU0laRTIwXT17KDB4MTgzKzU1MTgtMHgxNzExKX07c2NfY2ZnX2dldChaUEJfTlZfR1JPVVAscGJHcm91cCxzaXplb2YoCi1wYkdyb3VwKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDM5MyszMzc5LTB4MTBjNSksCis9eygweGY1MSs1OTU4LTB4MjY5Nyl9O1NJTlQzMiBjb3VudEJ5R3JvdXA9KDB4OWJmKzYwODktMHgyMTg4KTtDSEFSIHBiR3JvdXBbCitaUEJfUEFSQU1fU0laRTIwXT17KDB4YzlkKzI4MzEtMHgxN2FjKX07c2NfY2ZnX2dldChaUEJfTlZfR1JPVVAscGJHcm91cCxzaXplb2YoCitwYkdyb3VwKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDEyNzgrMTEyMy0weDE2ZGEpLAogIlx4NzNceDY1XHg2Y1x4NjVceDYzXHg3NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyMFx4NjFceDZlXHg2NFx4MjBceDI4XHg1MFx4NjJceDZkXHg1Zlx4NjdceDcyXHg2Zlx4NzVceDcwXHgzZCIgIlwiIiAiXHgyNVx4NzMiICJcIiIgIlx4MjkiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVAscGJHcm91cCk7KFZPSUQpYXRQYl9FeGVjRGJTcWwoc3FsLAotYXRQYl9EYkNvdW50VGFibGVMaW5lQ2IsJmNvdW50QnlHcm91cCk7bWVtc2V0KHNxbCwoMHgxNjcrNDg4My0weDE0N2EpLHNpemVvZihzcWwKLSkpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgyZWQrMTQ5NC0weDhjMiksCithdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnRCeUdyb3VwKTttZW1zZXQoc3FsLCgweDEzYjgrMjYwMy0weDFkZTMpLHNpemVvZigKK3NxbCkpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxMzFhKzEwNTItMHgxNzM1KSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg1MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHgyNVx4NzNceDIwXHg3N1x4NjhceDY1XHg3Mlx4NjVceDIwXHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDNkXHgyNVx4NjRceDIwXHg2MVx4NmVceDY0XHgyMFx4MjhceDUwXHg2Mlx4NmRceDVmXHg2N1x4NzJceDZmXHg3NVx4NzBceDNkIiAiXCIiICJceDI1XHg3MyIgIlwiIiAiXHgyOSIKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9BUCxwYkdyb3VwKTtyZXN1bHQ9YXRQYl9FeGVjRGJTcWwoc3FsLAogYXRQYl9EYkdldEluZGV4QnlHcm91cENiLGluZGV4KTtpZihjb3VudEJ5R3JvdXA9PWluZGV4LT5jb3VudCl7bWVtc2V0KHNxbCwKLSgweDEzKzQ0MDItMHgxMTQ1KSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDFhNmYrMjYwNy0weDI0OWQpLAorKDB4MWQ5MSs3OTctMHgyMGFlKSxzaXplb2Yoc3FsKSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDkwNis3MzMtMHhiZTIpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0XHgyMFx4NjFceDZlXHg2NFx4MjBceDI4XHg1MFx4NjJceDZkXHg1Zlx4NjdceDcyXHg2Zlx4NzVceDcwXHgzZCIgIlwiIiAiXHgyNVx4NzMiICJcIiIgIlx4MjkiCiAsWlBCX0RCX1BCTV9UQUJMRSxaUEJfTE9DQVRJT05fQVAscGJHcm91cCk7aWYoWlBCX0RCX09LPT1hdFBiX0V4ZWNEYlNxbChzcWwsTlVMTAogLE5VTEwpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7fXNsb2coUEJfUFJJTlQsCkBAIC0yODMsNyArMjgzLDcgQEAKICJceDcwXHg2Mlx4M2FceDcwXHg2Mlx4NmRceDNhXHg2NVx4NzhceDY1XHg2M1x4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDI1XHg3M1x4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHgyNVx4NjQiICJcbiIKICxaUEJfREJfUEJNX1RBQkxFLHJlc3VsdCk7fWVsc2V7cmV0dXJuIFpQQl9EQl9FUlJPUjt9KFZPSUQpc2NfY2ZnX3NldCgKIFpQQl9OVl9HUk9VUCwiIik7cmV0dXJuIHJlc3VsdDt9Vk9JRCBhdFBiX0dldExvY2F0aW9uSW5kZXhGb3JEZWwoVF96UGJfRGVsSW5mbyoKLXJlY0RhdGEsU0lOVDMyIGRlbFRpbWUpe1RfelBiX0hlYWRlciBwYkhlYWRlcj17KDB4MjA3MCsxNjgyLTB4MjcwMil9O2lmKE5VTEw9PQorcmVjRGF0YSxTSU5UMzIgZGVsVGltZSl7VF96UGJfSGVhZGVyIHBiSGVhZGVyPXsoMHgxNmNkKzIzMjItMHgxZmRmKX07aWYoTlVMTD09CiByZWNEYXRhKXtzbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0N1x4NjVceDc0XHg0Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDZceDZmXHg3Mlx4NDRceDY1XHg2Y1x4MmRceDJkXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NCIgIlxuIgogKTtyZXR1cm47fXBiSGVhZGVyLnBiSWQ9cmVjRGF0YS0+ZGVsSWRbZGVsVGltZV07aWYoWlBCX0RCX09LIT0KQEAgLTI5NCwzMCArMjk0LDMwIEBACiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NjRceDY1XHg2Y1x4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2RceDI1XHg2NFx4MmNceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NFx4MmNceDY0XHg2NVx4NmNceDVmXHg3MFx4NjJceDZkXHg1Zlx4NzRceDY5XHg2ZFx4NjVceDNkXHgyNVx4NjQiCiAscmVjRGF0YS0+ZGVsSW5kZXhbZGVsVGltZV0scmVjRGF0YS0+ZGVsTG9jYXRpb24sZGVsVGltZSk7fVRfelBiX0RiUmVzdWx0IAogYXRQYl9EZWxBUmVjRnJvbVBibVRhYmxlKFRfelBiX0RlbEluZm8qcGJQYXJhLFNJTlQzMiBkZWxUaW1lKXtUX3pQYl9EYlJlc3VsdCAKLXJlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDEyY2QrMzYwNS0weDIwZTIpfTtpZihOVUxMPT0KLXBiUGFyYSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK3Jlc3VsdD1aUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDIwMCsxMDcwLTB4NjJlKX07aWYoTlVMTD09cGJQYXJhCispe3Nsb2coUEJfUFJJTlQsU0xPR19FUlIsCiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2OVx4NmVceDcwXHg3NVx4NzQiCiApO3JldHVybiBaUEJfREJfRVJST1JfSU5WQUxJRFBUUjt9YXRQYl9HZXRMb2NhdGlvbkluZGV4Rm9yRGVsKHBiUGFyYSxkZWxUaW1lKTsKIHNsb2coUEJfUFJJTlQsU0xPR19ERUJVRywKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDRceDY1XHg2Y1x4NDFceDUyXHg2NVx4NjNceDQ2XHg3Mlx4NmZceDZkXHg1MFx4NjJceDZkXHg1NFx4NjFceDYyXHg2Y1x4NjVceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDJjXHg2NFx4NjVceDZjXHg1NFx4NjlceDZkXHg2NVx4M2RceDI1XHg2NFx4MmNceDY5XHg2NFx4M2RceDI1XHg2NCIgIlxuIgotLGRlbFRpbWUscGJQYXJhLT5kZWxJZFtkZWxUaW1lXSk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweDI1YmQrNTEtMHgyNWVmKSwKKyxkZWxUaW1lLHBiUGFyYS0+ZGVsSWRbZGVsVGltZV0pO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxZThhKzIyOC0weDFmNmQpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NjlceDY0XHgzZFx4MjVceDY0IgogLFpQQl9EQl9QQk1fVEFCTEUscGJQYXJhLT5kZWxJZFtkZWxUaW1lXSk7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpOwogaWYoWlBCX0RCX09LPT1yZXN1bHQpe2lmKFpQQl9MT0NBVElPTl9BUD09cGJQYXJhLT5kZWxMb2NhdGlvbil7Z196UGJfQXBJbmRleFsoCiBwYlBhcmEtPmRlbEluZGV4W2RlbFRpbWVdKV09UEJNX0VSUk9SX05PVF9GT1VORDt9ZWxzZSBpZihaUEJfTE9DQVRJT05fVVNJTT09CiBwYlBhcmEtPmRlbExvY2F0aW9uKXtnX3pQYl9TaW1JbmRleFsocGJQYXJhLT5kZWxJbmRleFtkZWxUaW1lXSldPQogUEJNX0VSUk9SX05PVF9GT1VORDt9fXJldHVybiByZXN1bHQ7fVZPSUQgYXRQYl9DbGVhclNpbVBibUluZGV4QXJyYXkoVk9JRCl7Ci1TSU5UMzIgaT0oMHgzMjErODI2OC0weDIzNmMpO2ZvcihpPSgweDFkNSs4MjI2LTB4MjFmNik7KGk8PWdfelBiX1NpbUluZGV4WwotKDB4OTA0KzI0OC0weDlmYyldKSYmKGk8KFpQQl9TSU1fTUFYX1JFQ09SRCsoMHgxMmY0KzE5NDctMHgxYThlKSkpO2krKyl7CitTSU5UMzIgaT0oMHg1NzYrODU2NC0weDI2ZTkpO2ZvcihpPSgweDFlMWErMTg3MC0weDI1NjcpOyhpPD1nX3pQYl9TaW1JbmRleFsKKygweDE1MGQrMjUxNS0weDFlZTApXSkmJihpPChaUEJfU0lNX01BWF9SRUNPUkQrKDB4MjMzOSs5MjUtMHgyNmQ1KSkpO2krKyl7CiBnX3pQYl9TaW1JbmRleFtpXT1QQk1fRVJST1JfTk9UX0ZPVU5EO319Vk9JRCBhdFBiX0NsZWFyQXBQYm1JbmRleEFycmF5KFZPSUQpewotU0lOVDMyIGk9KDB4MTcwZCsxMTQtMHgxNzdlKTtmb3IoaT0oMHhjYzgrNjQ0My0weDI1ZjIpOyhpPD1nX3pQYl9BcEluZGV4WwotKDB4MTA0YisyMDM3LTB4MTg0MCldKSYmKGk8KFpQQl9BUF9NQVhfUkVDT1JEKygweDEyYjQrNDk5LTB4MTRhNikpKTtpKyspeworU0lOVDMyIGk9KDB4ZjJiKzEwMzAtMHgxMzMwKTtmb3IoaT0oMHgxMWRhKzE2MTItMHgxODI1KTsoaTw9Z196UGJfQXBJbmRleFsKKygweDk1Mis1Mjc0LTB4MWRlYyldKSYmKGk8KFpQQl9BUF9NQVhfUkVDT1JEKygweGNkOSs0MDI1LTB4MWM5MSkpKTtpKyspewogZ196UGJfQXBJbmRleFtpXT1QQk1fRVJST1JfTk9UX0ZPVU5EO319VF96UGJfRGJSZXN1bHQgCiBhdFBiX0RlbEFsbFJlY3NGcm9tUGJtVGFibGUoVF96UGJfRGVsSW5mbypwYlBhcmEpe1RfelBiX0RiUmVzdWx0IHJlc3VsdD0KLVpQQl9EQl9PSztDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17KDB4NDY4KzIyMDQtMHhkMDQpfTtpZihOVUxMPT1wYlBhcmEpe3Nsb2coCitaUEJfREJfT0s7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09eygweDliKzIxOS0weDE3Nil9O2lmKE5VTEw9PXBiUGFyYSl7c2xvZygKIFBCX1BSSU5ULFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1MFx4NjJceDVmXHg0NFx4NjVceDZjXHg0MVx4NmNceDZjXHg1Mlx4NjVceDYzXHg3M1x4NDZceDcyXHg2Zlx4NmRceDUwXHg2Mlx4NmRceDU0XHg2MVx4NjJceDZjXHg2NVx4M2FceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0IiAiXG4iCi0pO3JldHVybiBaUEJfREJfRVJST1JfSU5WQUxJRFBUUjt9c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGRjZCs2MDI3LTB4MjU1NyksCispO3JldHVybiBaUEJfREJfRVJST1JfSU5WQUxJRFBUUjt9c25wcmludGYoc3FsLHNpemVvZihzcWwpLSgweGIwOSs4MjItMHhlM2UpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0IgogLFpQQl9EQl9QQk1fVEFCTEUscGJQYXJhLT5kZWxMb2NhdGlvbik7cmVzdWx0PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpO3Nsb2cKIChQQl9QUklOVCxTTE9HX0RFQlVHLApkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfbWFpbi5jIGIvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfbWFpbi5jCmluZGV4IDFkNTRhOTEuLjI3MDFmYWEgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX21haW4uYworKysgYi9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9tYWluLmMKQEAgLTcsOSArNyw5IEBACiBWT0lEKCpmdW5jX3B0cikoVUlOVDgqcERhdGFidWYpO0JPT0wgbmVlZF9ibG9jazt9VF96UGJIYW5kbGVUYWJsZTtWT0lEIAogYXRXZWJfQWRkT25lQ29udGFjdChVSU5UOCpwRGF0YWJ1Zik7Vk9JRCBhdFdlYl9EZWxPbmVDb250YWN0KFVJTlQ4KnBEYXRhYnVmKTsKIFZPSUQgYXRXZWJfRGVsTXVsdGlDb250YWN0KFVJTlQ4KnBEYXRhYnVmKTtWT0lEIGF0V2ViX0RlbEFsbENvbnRhY3QoVUlOVDgqCi1wRGF0YWJ1Zik7VF96UGJfb3B0UnNwIGdfUGJPcHRSc3A9eygweDM3Mys0OTQ0LTB4MTZjMyl9O3NlbV90IGdfUGJfc2VtX2lkPXsKLSgweDhiMCs5MTMtMHhjNDEpfTtpbnQgZ196UGJfTXNxSWQ9LSgweGZkNys0NzEwLTB4MjIzYyk7aW50IGdfelBiX0xvY2FsTXNxSWQ9LQotKDB4NTQ2KzIwMTEtMHhkMjApO1ZPSUQgYXRXZWJfQWRkT25lQ29udGFjdChVSU5UOCpwRGF0YWJ1Zil7VF96UGJfV2ViQ29udGFjdCoKK3BEYXRhYnVmKTtUX3pQYl9vcHRSc3AgZ19QYk9wdFJzcD17KDB4MTVlOSs2ODQtMHgxODk1KX07c2VtX3QgZ19QYl9zZW1faWQ9eworKDB4MTMwYSsyNzM0LTB4MWRiOCl9O2ludCBnX3pQYl9Nc3FJZD0tKDB4MTU4Kzg5NTYtMHgyNDUzKTtpbnQgZ196UGJfTG9jYWxNc3FJZD0KKy0oMHg1ZDIrNzg2NC0weDI0ODkpO1ZPSUQgYXRXZWJfQWRkT25lQ29udGFjdChVSU5UOCpwRGF0YWJ1Zil7VF96UGJfV2ViQ29udGFjdCoKIHdlYlBiQ29udGFjdD1OVUxMO2lmKHBEYXRhYnVmPT1OVUxMKXtwcmludGYoCiAiXHg1Ylx4NzBceDYyXHg1ZFx4MmNceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHgyMFx4NjlceDczXHgyMFx4NmVceDc1XHg2Y1x4NmMiICJcbiIKICk7cmV0dXJuO313ZWJQYkNvbnRhY3Q9KFRfelBiX1dlYkNvbnRhY3QqKXBEYXRhYnVmO2F0V2ViX0FkZE9uZVBiKHdlYlBiQ29udGFjdCwKQEAgLTM1LDIyICszNSwyMiBAQAogelBiX1JlY3ZacGJpY0luZChVSU5UOCpwRGF0YWJ1Zil7VF96QXRfWnBiaWNSZXMqcHRQYXJhPVpVRklfTlVMTDtpZihwRGF0YWJ1Zj09CiBOVUxMKXtyZXR1cm47fXB0UGFyYT0oVF96QXRfWnBiaWNSZXMqKShwRGF0YWJ1Zik7cHJpbnRmKAogIlx4N2FceDUwXHg2Mlx4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NzBceDYyXHg2OVx4NjNceDQ5XHg2ZVx4NjRceDIwXHg3MFx4NjFceDcyXHg2MVx4MmNceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJjXHgyMFx4NzRceDc5XHg3MFx4NjVceDNhXHgyNVx4NjQiICJcbiIKLSxwdFBhcmEtPnJlc3VsdCxwdFBhcmEtPm9wZXJ0eXBlKTtpZigoKDB4YzZjKzQ0MTQtMHgxZGE5KT09cHRQYXJhLT5yZXN1bHQpJiYoCi0oMHgxMzUzKzMyNDYtMHgyMDAwKT09cHRQYXJhLT5vcGVydHlwZSkpe0NIQVIgbmVlZFBiWygweDE5ZWIrMjA1Mi0weDIxYmQpXT17Ci0oMHgyYiszNTUxLTB4ZTBhKX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZihuZWVkUGIpKTtpZigKLSgweGJmOCszMTA0LTB4MTgxOCkhPXN0cmNtcChuZWVkUGIsIlx4NmVceDZmIikpe2lwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLAotTU9EVUxFX0lEX0FUX0NUTCxNU0dfQ01EX1BCSU5JVF9SRVEsKDB4Mzg3KzgwNTItMHgyMmZiKSxOVUxMLCgweDIzMys3MDkwLTB4MWRlNSkKLSk7fX19Vk9JRCB6UGJfUmVjdlp1c2xvdEluZChVSU5UOCpwRGF0YWJ1Zil7VF96QXRfWnVzbG90UmVzKnB0UGFyYT1aVUZJX05VTEw7aWYoCi1wRGF0YWJ1Zj09TlVMTCl7cmV0dXJuO31wdFBhcmE9KFRfekF0X1p1c2xvdFJlcyopKHBEYXRhYnVmKTtwcmludGYoCi0iXHg3YVx4NTBceDYyXHg1Zlx4NTJceDY1XHg2M1x4NzZceDVhXHg3MFx4NjJceDY5XHg2M1x4NDlceDZlXHg2NFx4MjBceDcwXHg2MVx4NzJceDYxXHgyY1x4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2FceDI1XHg2NFx4MmNceDIwXHg3NFx4NzlceDcwXHg2NVx4M2FceDI1XHg2NCIgIlxuIgotLHB0UGFyYS0+c2xvdCxwdFBhcmEtPnNsb3Rfc3RhdGUpO2lmKHB0UGFyYS0+c2xvdF9zdGF0ZT09KDB4MjE2KzQ4MDctMHgxNGRkKSl7Ci1DSEFSIG5lZWRQYlsoMHhhOWMrNTE4NS0weDFlYWIpXT17KDB4Y2UyKzQyMTctMHgxZDViKX07c2NfY2ZnX2dldCgKLU5WX05FRURfU1VQUE9SVF9QQixuZWVkUGIsc2l6ZW9mKG5lZWRQYikpO2lmKCgweDJkOCs0MzE0LTB4MTNiMikhPXN0cmNtcChuZWVkUGIsCi0iXHg2ZVx4NmYiKSl7YXRQYl9DZmdQYk52SW5pdCgpO2F0UGJfRGVsQWxsUmVjc1NpbURiKCk7fX19Vk9JRCB6UGJfUmVjdlBiSW5pdFJzdAotKFVJTlQ4KnBEYXRhYnVmKXtpbnQgcGJSZWFkUmV0PS0oMHg4ZmErNjM1MS0weDIxYzgpO21lbWNweSgmZ19QYk9wdFJzcCxwRGF0YWJ1ZiwKLXNpemVvZihUX3pQYl9vcHRSc3ApKTtpZihnX1BiT3B0UnNwLnJlc3VsdD09LSgweDEyNTUrMjA4OS0weDFhN2QpKXsKLWF0UGJfSWludFBiRXJyKE5VTEwpO3JldHVybjt9cGJSZWFkUmV0PWF0UGJfU2VuZFNjcGJyU2V0X3JlcGVhdChnX1BiX3NlbV9pZCk7CisscHRQYXJhLT5yZXN1bHQscHRQYXJhLT5vcGVydHlwZSk7aWYoKCgweDRhNCs3MjUtMHg3NzgpPT1wdFBhcmEtPnJlc3VsdCkmJigKKygweDFlZis3MzQyLTB4MWU5Yyk9PXB0UGFyYS0+b3BlcnR5cGUpKXtDSEFSIG5lZWRQYlsoMHgxOGE5KzI3ODUtMHgyMzU4KV09eworKDB4MTgwNis4MzAtMHgxYjQ0KX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZihuZWVkUGIpKTtpZigKKygweDU0YSs2MTc1LTB4MWQ2OSkhPXN0cmNtcChuZWVkUGIsIlx4NmVceDZmIikpe2lwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLAorTU9EVUxFX0lEX0FUX0NUTCxNU0dfQ01EX1BCSU5JVF9SRVEsKDB4MTlkNysyMTEwLTB4MjIxNSksTlVMTCwKKygweDEzNGQrNDM0NS0weDI0NDYpKTt9fX1WT0lEIHpQYl9SZWN2WnVzbG90SW5kKFVJTlQ4KnBEYXRhYnVmKXtUX3pBdF9adXNsb3RSZXMqCitwdFBhcmE9WlVGSV9OVUxMO2lmKHBEYXRhYnVmPT1OVUxMKXtyZXR1cm47fXB0UGFyYT0oVF96QXRfWnVzbG90UmVzKikocERhdGFidWYpOwogcHJpbnRmKAorIlx4N2FceDUwXHg2Mlx4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NzBceDYyXHg2OVx4NjNceDQ5XHg2ZVx4NjRceDIwXHg3MFx4NjFceDcyXHg2MVx4MmNceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJjXHgyMFx4NzRceDc5XHg3MFx4NjVceDNhXHgyNVx4NjQiICJcbiIKKyxwdFBhcmEtPnNsb3QscHRQYXJhLT5zbG90X3N0YXRlKTtpZihwdFBhcmEtPnNsb3Rfc3RhdGU9PSgweDI2ZTMrMTQtMHgyNmYxKSl7CitDSEFSIG5lZWRQYlsoMHg2NzMrNTMzNi0weDFiMTkpXT17KDB4YjJmKzU0MjYtMHgyMDYxKX07c2NfY2ZnX2dldCgKK05WX05FRURfU1VQUE9SVF9QQixuZWVkUGIsc2l6ZW9mKG5lZWRQYikpO2lmKCgweDExYysxMDEwLTB4NTBlKSE9c3RyY21wKG5lZWRQYiwKKyJceDZlXHg2ZiIpKXthdFBiX0NmZ1BiTnZJbml0KCk7YXRQYl9EZWxBbGxSZWNzU2ltRGIoKTt9fX1WT0lEIHpQYl9SZWN2UGJJbml0UnN0CisoVUlOVDgqcERhdGFidWYpe2ludCBwYlJlYWRSZXQ9LSgweDM0Zis0MzM0LTB4MTQzYyk7bWVtY3B5KCZnX1BiT3B0UnNwLHBEYXRhYnVmLAorc2l6ZW9mKFRfelBiX29wdFJzcCkpO2lmKGdfUGJPcHRSc3AucmVzdWx0PT0tKDB4NDgyKzE0NjAtMHhhMzUpKXthdFBiX0lpbnRQYkVycigKK05VTEwpO3JldHVybjt9cGJSZWFkUmV0PWF0UGJfU2VuZFNjcGJyU2V0X3JlcGVhdChnX1BiX3NlbV9pZCk7cHJpbnRmKAogIlx4N2FceDUwXHg2Mlx4NWZceDUyXHg2NVx4NjNceDc2XHg1MFx4NjJceDQ5XHg2ZVx4NjlceDc0XHg1Mlx4NzNceDc0XHgyMFx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2FceDI1XHg2NCIgIlxuIgogLHBiUmVhZFJldCk7c2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfT1BFUkFURV9TVUMpO312b2lkIHpQYkxvY2FsSGFuZGxlV2ViTXNnKAogTVNHX0JVRipwdE1zZ0J1Zil7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCkBAIC02NSwxOCArNjUsMTcgQEAKICxwdE1zZ0J1Zi0+dXNNc2dDbWQpO3N3aXRjaChwdE1zZ0J1Zi0+dXNNc2dDbWQpe2Nhc2UgTVNHX0NNRF9XUklURV9QQjpjYXNlIAogTVNHX0NNRF9ERUxfQV9QQjpjYXNlIE1TR19DTURfREVMX01VVElfUEI6Y2FzZSBNU0dfQ01EX0RFTF9BTExfUEI6CiBpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9QQixNT0RVTEVfSURfUEJfTE9DQUwscHRNc2dCdWYtPnVzTXNnQ21kLHB0TXNnQnVmLT4KLXVzRGF0YUxlbiwodW5zaWduZWQgY2hhciopcHRNc2dCdWYtPmF1Y0RhdGFCdWYsKDB4ZDM3KzI4MTMtMHgxODM0KSk7YnJlYWs7Ci1kZWZhdWx0OmJyZWFrO319VUlOVDggelBiTXNnQ3JlYXQoVk9JRCl7Z196UGJfTXNxSWQ9bXNnZ2V0KE1PRFVMRV9JRF9QQiwKLUlQQ19DUkVBVHwoMHgxMTNkKzU2NTYtMHgyNWQ1KSk7aWYoZ196UGJfTXNxSWQ9PS0oMHgxN2IzKzI1NDQtMHgyMWEyKSl7cmV0dXJuIAotWlVGSV9GQUlMO31nX3pQYl9Mb2NhbE1zcUlkPW1zZ2dldChNT0RVTEVfSURfUEJfTE9DQUwsSVBDX0NSRUFUfAotKDB4MTYyNis4NTgtMHgxODAwKSk7aWYoZ196UGJfTG9jYWxNc3FJZD09LSgweGYwYSs2MTUtMHgxMTcwKSl7cmV0dXJuIFpVRklfRkFJTDsKLX1zZW1faW5pdCgmZ19QYl9zZW1faWQsKDB4MTRiZCsyNDEyLTB4MWUyOSksKDB4NWVkKzQ0MDQtMHgxNzIxKSk7cmV0dXJuIAotWlVGSV9TVUNDO312b2lkIGRldGVjdF9tb2RlbV9zdGF0ZSh2b2lkKXtDSEFSIHN0YXRlWygweDdhYSs0NTQ0LTB4MTkzOCldPXsKLSgweGIzMSsxMDkxLTB4Zjc0KX07c2NfY2ZnX2dldCgKK3VzRGF0YUxlbiwodW5zaWduZWQgY2hhciopcHRNc2dCdWYtPmF1Y0RhdGFCdWYsKDB4NDExKzktMHg0MWEpKTticmVhaztkZWZhdWx0OgorYnJlYWs7fX1VSU5UOCB6UGJNc2dDcmVhdChWT0lEKXtnX3pQYl9Nc3FJZD1tc2dnZXQoTU9EVUxFX0lEX1BCLElQQ19DUkVBVHwKKygweDFjMis3MzM1LTB4MWNlOSkpO2lmKGdfelBiX01zcUlkPT0tKDB4MWMzNSs3Ni0weDFjODApKXtyZXR1cm4gWlVGSV9GQUlMO30KK2dfelBiX0xvY2FsTXNxSWQ9bXNnZ2V0KE1PRFVMRV9JRF9QQl9MT0NBTCxJUENfQ1JFQVR8KDB4MjIwKzU1NjEtMHgxNjU5KSk7aWYoCitnX3pQYl9Mb2NhbE1zcUlkPT0tKDB4YmIxKzU2MTUtMHgyMTlmKSl7cmV0dXJuIFpVRklfRkFJTDt9c2VtX2luaXQoJmdfUGJfc2VtX2lkLAorKDB4NDhmKzEwMTktMHg4OGEpLCgweDMxNSsxNTQwLTB4OTE5KSk7cmV0dXJuIFpVRklfU1VDQzt9dm9pZCBkZXRlY3RfbW9kZW1fc3RhdGUKKyh2b2lkKXtDSEFSIHN0YXRlWygweDE1NjErNDI1Ni0weDI1Y2YpXT17KDB4MWZmYisxMDYwLTB4MjQxZil9O3NjX2NmZ19nZXQoCiAiXHg2ZFx4NmZceDY0XHg2NVx4NmRceDVmXHg2ZFx4NjFceDY5XHg2ZVx4NWZceDczXHg3NFx4NjFceDc0XHg2NSIsc3RhdGUsc2l6ZW9mKAotc3RhdGUpKTtpZigoMHhjNjErNjMxMS0weDI1MDgpPT1zdHJjbXAoc3RhdGUsCitzdGF0ZSkpO2lmKCgweGU5Yys0NzMtMHgxMDc1KT09c3RyY21wKHN0YXRlLAogIlx4NmRceDZmXHg2NFx4NjVceDZkXHg1Zlx4NzNceDY5XHg2ZFx4NWZceDc1XHg2ZVx4NjRceDY1XHg3NFx4NjVceDYzXHg3NFx4NjVceDY0IgotKXx8KDB4MTUwMys2OC0weDE1NDcpPT1zdHJjbXAoc3RhdGUsCispfHwoMHhlNTgrMTY1OC0weDE0ZDIpPT1zdHJjbXAoc3RhdGUsCiAiXHg2ZFx4NmZceDY0XHg2NVx4NmRceDVmXHg3M1x4NjlceDZkXHg1Zlx4NjRceDY1XHg3M1x4NzRceDcyXHg2Zlx4NzkiKSl7CiBzY19jZmdfc2V0KCJceDcwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY5XHg3NFx4NWZceDY2XHg2Y1x4NjFceDY3IiwiXHgzMCIpO319dm9pZAogIHpQYkxvY2FsSGFuZGxlQXRjdGxNc2coTVNHX0JVRipwdE1zZ0J1Zil7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCkBAIC05NSwyOCArOTQsMjggQEAKIE1TR19DTURfWlVTTE9UX0lORDp6UGJfUmVjdlp1c2xvdEluZChwdE1zZ0J1Zi0+YXVjRGF0YUJ1Zik7YnJlYWs7Y2FzZSAKIE1TR19DTURfUEJJTklUX1JTUDppcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9QQixNT0RVTEVfSURfUEJfTE9DQUwscHRNc2dCdWYtPgogdXNNc2dDbWQscHRNc2dCdWYtPnVzRGF0YUxlbiwodW5zaWduZWQgY2hhciopcHRNc2dCdWYtPmF1Y0RhdGFCdWYsCi0oMHgxZWFjKzE5ODEtMHgyNjY5KSk7YnJlYWs7ZGVmYXVsdDpicmVhazt9fVZPSUQgelBiSGFuZGxlUmVzZXRUb0ZhY3RvcnkoKXtDSEFSIAotY2xlYXJQYlsoMHgxZmJmKzE0ODctMHgyNTVjKV09eygweDg5Mis3MDQzLTB4MjQxNSl9O3NjX2NmZ19nZXQoCisoMHhlOTcrNDk4MC0weDIyMGIpKTticmVhaztkZWZhdWx0OmJyZWFrO319Vk9JRCB6UGJIYW5kbGVSZXNldFRvRmFjdG9yeSgpe0NIQVIgCitjbGVhclBiWygweDE5YjcrMTc5OS0weDIwOGMpXT17KDB4Mjc5KzEwOTAtMHg2YmIpfTtzY19jZmdfZ2V0KAogTlZfQ0xFQVJfUEJfV0hFTl9SRVNUT1JFLGNsZWFyUGIsc2l6ZW9mKGNsZWFyUGIpKTtwcmludGYoCiAiXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg1Mlx4NjVceDczXHg3NFx4NmZceDcyXHg2NVx4NDZceDYxXHg2M1x4NzRceDZmXHg3Mlx4NzlceDUzXHg2NVx4NzRceDc0XHg2OVx4NmVceDY3XHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHg2NVx4NjRceDIxXHgyMCIgIlxuIgogKTtwcmludGYoCiAiXHg2M1x4NmNceDY1XHg2MVx4NzJceDVmXHg3MFx4NjJceDVmXHg3N1x4NjhceDY1XHg2ZVx4NWZceDcyXHg2NVx4NzNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjVceDczXHgyMCIgIlxuIgotLGNsZWFyUGIpO2lmKHN0cmNtcChjbGVhclBiLCJceDc5XHg2NVx4NzMiKT09KDB4NmRjKzQzODktMHgxODAxKSl7YXRQYl9Ecm9wRGIoKTsKKyxjbGVhclBiKTtpZihzdHJjbXAoY2xlYXJQYiwiXHg3OVx4NjVceDczIik9PSgweDFjZis2MjIyLTB4MWExZCkpe2F0UGJfRHJvcERiKCk7CiB9aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX01BSU5fQ1RSTCxNU0dfQ01EX1JFU0VUX1JTUCwKLSgweGM3OSs1MjkyLTB4MjEyNSksTlVMTCwoMHgzYmErNjEyMS0weDFiYTMpKTt9dm9pZCB6UGJIYW5kbGVNYWluQ3RybE1zZyhNU0dfQlVGCi0qcHRNc2dCdWYpe2Fzc2VydChwdE1zZ0J1ZiE9TlVMTCk7cHJpbnRmKAorKDB4YjBjKzY2ODEtMHgyNTI1KSxOVUxMLCgweDFkYmYrMTU1OC0weDIzZDUpKTt9dm9pZCB6UGJIYW5kbGVNYWluQ3RybE1zZygKK01TR19CVUYqcHRNc2dCdWYpe2Fzc2VydChwdE1zZ0J1ZiE9TlVMTCk7cHJpbnRmKAogIlx4NTBceDYyXHgyMFx4NzJceDY1XHg2M1x4NzZceDIwXHg2ZFx4NjFceDY5XHg2ZVx4MjBceDYzXHg3NFx4NzJceDZjXHgyMFx4NmRceDczXHg2N1x4MjBceDYzXHg2ZFx4NjRceDNhXHgyNVx4NjQiICJcbiIKICxwdE1zZ0J1Zi0+dXNNc2dDbWQpO3N3aXRjaChwdE1zZ0J1Zi0+dXNNc2dDbWQpe2Nhc2UgTVNHX0NNRF9SRVNFVF9OT1RJRlk6CiB6UGJIYW5kbGVSZXNldFRvRmFjdG9yeShwdE1zZ0J1Zi0+YXVjRGF0YUJ1Zik7YnJlYWs7ZGVmYXVsdDpicmVhazt9fXZvaWQgCi1wYl9tc2dfdGhyZWFkX3Byb2Modm9pZCphcmcpe2ludCBpUmV0PSgweDNlYys1MTUtMHg1ZWYpO01TR19CVUYgc3RNc2c9ewotKDB4NTVhKzYzNzItMHgxZTNlKX07aW50IG1zZ1NpemU9c2l6ZW9mKE1TR19CVUYpLXNpemVvZihTSU5UMzIpO2ludCBxdWV1ZUlkPSooKAorcGJfbXNnX3RocmVhZF9wcm9jKHZvaWQqYXJnKXtpbnQgaVJldD0oMHg0Nys0MjYxLTB4MTBlYyk7TVNHX0JVRiBzdE1zZz17CisoMHgyYjcrNjk5Ny0weDFlMGMpfTtpbnQgbXNnU2l6ZT1zaXplb2YoTVNHX0JVRiktc2l6ZW9mKFNJTlQzMik7aW50IHF1ZXVlSWQ9KigoCiBpbnQqKWFyZyk7cHJjdGwoUFJfU0VUX05BTUUsIlx4NzBceDYyXHg1Zlx4NmNceDZmXHg2M1x4NjFceDZjIiwKLSgweDI0NisxMDQ5LTB4NjVmKSwoMHgxMWQrNDY3OS0weDEzNjQpLCgweDI4NisyMzY1LTB4YmMzKSk7d2hpbGUoCi0oMHg3ZWIrMTAzNC0weGJmNCkpe2lSZXQ9KDB4MTA3YysyMDIzLTB4MTg2Myk7bWVtc2V0KCZzdE1zZywoMHg1OTgrNjE2My0weDFkYWIpLAotc2l6ZW9mKE1TR19CVUYpKTtpUmV0PW1zZ3JjdihxdWV1ZUlkLCZzdE1zZyxtc2dTaXplLCgweDEwOTkrNTY5NS0weDI2ZDgpLAotKDB4OWM5KzMyMTItMHgxNjU1KSk7cHJpbnRmKAorKDB4MjRmKzU5NjktMHgxOWEwKSwoMHhhODArMjI0OC0weDEzNDgpLCgweDczOCs2Njg4LTB4MjE1OCkpO3doaWxlKAorKDB4MWU0Mis3ODItMHgyMTRmKSl7aVJldD0oMHgxMDBjKzMyOTUtMHgxY2ViKTttZW1zZXQoJnN0TXNnLCgweGIxYys0Njg0LTB4MWQ2OCkKKyxzaXplb2YoTVNHX0JVRikpO2lSZXQ9bXNncmN2KHF1ZXVlSWQsJnN0TXNnLG1zZ1NpemUsKDB4MTJhKzY2MTEtMHgxYWZkKSwKKygweDE3MGErMzgyNC0weDI1ZmEpKTtwcmludGYoCiAiXHg3MFx4NjJceDVmXHg2ZFx4NzNceDY3XHg1Zlx4NzRceDY4XHg3Mlx4NjVceDYxXHg2NFx4NWZceDcwXHg3Mlx4NmZceDYzXHgzYVx4MjVceDc4XHgyY1x4MjVceDc4XHgyMFx4NGRceDRmXHg0NFx4NTVceDRjXHg0NVx4NWZceDQ5XHg0NFx4NWZceDQxXHg1NFx4NWZceDQzXHg1NFx4NGNceDNkXHgyNVx4NzgiICJcbiIKLSxzdE1zZy5zcmNfaWQsc3RNc2cudXNNc2dDbWQsTU9EVUxFX0lEX0FUX0NUTCk7aWYoaVJldD49KDB4NTk2KzI4MDctMHgxMDhkKSl7Cissc3RNc2cuc3JjX2lkLHN0TXNnLnVzTXNnQ21kLE1PRFVMRV9JRF9BVF9DVEwpO2lmKGlSZXQ+PSgweDI2Mys2NjM0LTB4MWM0ZCkpewogc3dpdGNoKHN0TXNnLnNyY19pZCl7Y2FzZSBNT0RVTEVfSURfV0VCX0NHSTp7elBiSGFuZGxlV2ViTXNnKCZzdE1zZyk7YnJlYWs7fWNhc2UKICBNT0RVTEVfSURfQVRfQ1RMOnt6UGJIYW5kbGVBdGN0bE1zZygmc3RNc2cpO2JyZWFrO31jYXNlIE1PRFVMRV9JRF9QQjp7CiB6UGJMb2NhbEhhbmRsZVdlYk1zZygmc3RNc2cpO3pQYkxvY2FsSGFuZGxlQXRjdGxNc2coJnN0TXNnKTticmVhazt9Y2FzZSAKQEAgLTEyNCwyOSArMTIzLDI5IEBACiBwcmludGYoCiAiXHg1Ylx4NzBceDYyXHg1ZFx4MjBceDY1XHg3Mlx4NzJceDZlXHg2Zlx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4MjBceDY1XHg3Mlx4NzJceDZkXHg3M1x4NjdceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgogLGVycm5vLHN0cmVycm9yKGVycm5vKSk7fX19aW50IHBob25lYm9va19tYWluKGludCBhcmdjLGNoYXIqYXJndltdKXtwdGhyZWFkX3QgCi1yZWN2X3RocmVhZF90aWQ9KDB4NDFiKzE3MzctMHhhZTQpO01TR19CVUYgbXNnQnVmPXsoMHg1NGIrNTA4NS0weDE5MjgpfTtDSEFSIAotbmVlZFBiWygweGVjOCsyNTUyLTB4MTg4ZSldPXsoMHg2MjErNDg1OC0weDE5MWIpfTtwcmN0bChQUl9TRVRfTkFNRSwKLSJceDcwXHg2Mlx4NWZceDZkXHg2MVx4NjlceDZlIiwoMHhhZjIrMzM2MC0weDE4MTIpLCgweDk3OSsyOTk4LTB4MTUyZiksCi0oMHgyMzgxKzQ4OC0weDI1NjkpKTtsb2dsZXZlbF9pbml0KCk7c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZgotKG5lZWRQYikpO2lmKCgweDIyZDkrODkzLTB4MjY1NikhPXN0cmNtcChuZWVkUGIsIlx4NmVceDZmIikpeworcmVjdl90aHJlYWRfdGlkPSgweDIyOTYrOTk1LTB4MjY3OSk7TVNHX0JVRiBtc2dCdWY9eygweDZkKzI0OTEtMHhhMjgpfTtDSEFSIAorbmVlZFBiWygweDIyYzgrMzAzLTB4MjNjNSldPXsoMHhjYjcrNTM2NS0weDIxYWMpfTtwcmN0bChQUl9TRVRfTkFNRSwKKyJceDcwXHg2Mlx4NWZceDZkXHg2MVx4NjlceDZlIiwoMHg2OTArNjkzOS0weDIxYWIpLCgweDFmMDMrNTg3LTB4MjE0ZSksCisoMHhmYjUrMjA2Ny0weDE3YzgpKTtsb2dsZXZlbF9pbml0KCk7c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfUEIsbmVlZFBiLHNpemVvZgorKG5lZWRQYikpO2lmKCgweDE5MTUrMTE4Ni0weDFkYjcpIT1zdHJjbXAobmVlZFBiLCJceDZlXHg2ZiIpKXsKICNpZmRlZiBXRUJTX1NFQ1VSSVRZDQotaWYoYWNjZXNzKFpQQl9EQl9QQVRILEZfT0spIT0oMHhhZTIrNDc0MS0weDFkNjcpKXtpZihhY2Nlc3MoWlBCX1RNUF9QQVRILEZfT0spPT0KLSgweDExZTYrNDQ0Ni0weDIzNDQpKXtpZihyZW1vdmUoWlBCX1NFQ19QQVRIKSE9KDB4M2JhKzcwMjUtMHgxZjJiKSl7c2xvZygKLVBCX1BSSU5ULFNMT0dfRVJSLAoraWYoYWNjZXNzKFpQQl9EQl9QQVRILEZfT0spIT0oMHhiM2MrMjY1Ni0weDE1OWMpKXtpZihhY2Nlc3MoWlBCX1RNUF9QQVRILEZfT0spPT0KKygweDFiMDgrNTA0LTB4MWQwMCkpe2lmKHJlbW92ZShaUEJfU0VDX1BBVEgpIT0oMHg1ZDUrNjcyMS0weDIwMTYpKXtzbG9nKFBCX1BSSU5UCissU0xPR19FUlIsCiAiXHg3Mlx4NjVceDZkXHg2Zlx4NzZceDY1XHgyMFx4NWFceDUwXHg0Mlx4NWZceDUzXHg0NVx4NDNceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgotKTt9aWYocmVuYW1lKFpQQl9UTVBfUEFUSCxaUEJfU0VDX1BBVEgpIT0oMHhlNTkrMzMxNS0weDFiNGMpKXtzbG9nKFBCX1BSSU5ULAorKTt9aWYocmVuYW1lKFpQQl9UTVBfUEFUSCxaUEJfU0VDX1BBVEgpIT0oMHgxNDQ4KzE1MS0weDE0ZGYpKXtzbG9nKFBCX1BSSU5ULAogU0xPR19FUlIsCiAiXHg3Mlx4NjVceDZlXHg2MVx4NmRceDY1XHgyMFx4NWFceDUwXHg0Mlx4NWZceDU0XHg0ZFx4NTBceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgotKTt9fWlmKGFjY2VzcyhaUEJfU0VDX1BBVEgsRl9PSyk9PSgweDMxYis4OTQ5LTB4MjYxMCkpe2NoYXIgcm51bV9idWZbCi0oMHhmNWIrMzQ2LTB4MTA5ZCldPXsoMHg1NjIrODE5OC0weDI1NjgpfTtjaGFyIGNtZFsoMHhkYSsyMzgwLTB4OWE2KV09ewotKDB4MTE2OSsxMzQ1LTB4MTZhYSl9O3NjX2NmZ19nZXQoIlx4NzJceDZlXHg3NVx4NmRceDVmXHg2MVx4NzQiLHJudW1fYnVmLHNpemVvZigKKyk7fX1pZihhY2Nlc3MoWlBCX1NFQ19QQVRILEZfT0spPT0oMHgxMGQ5KzM5OTctMHgyMDc2KSl7Y2hhciBybnVtX2J1ZlsKKygweDEwMSs1MTg5LTB4MTUyZSldPXsoMHhhZjUrMjU4Ni0weDE1MGYpfTtjaGFyIGNtZFsoMHhiNzcrMTY2Mi0weDExNzUpXT17CisoMHgyNjJjKzIxMi0weDI3MDApfTtzY19jZmdfZ2V0KCJceDcyXHg2ZVx4NzVceDZkXHg1Zlx4NjFceDc0IixybnVtX2J1ZixzaXplb2YoCiBybnVtX2J1ZikpO3NucHJpbnRmKGNtZCxzaXplb2YoY21kKSwKICJceDJmXHg2Mlx4NjlceDZlXHgyZlx4NmZceDcwXHg2NVx4NmVceDczXHg3M1x4NmNceDIwXHg2NVx4NmVceDYzXHgyMFx4MmRceDY0XHgyMFx4MmRceDYxXHg2NVx4NzNceDMyXHgzNVx4MzZceDIwXHgyZFx4NzNceDYxXHg2Y1x4NzRceDIwXHgyZFx4NjlceDZlXHgyMFx4MjVceDczXHgyMFx4MmRceDZmXHg3NVx4NzRceDIwXHgyNVx4NzNceDIwXHgyZFx4NzBceDYxXHg3M1x4NzNceDIwXHg3MFx4NjFceDczXHg3M1x4M2FceDI1XHg3MyIKICxaUEJfU0VDX1BBVEgsWlBCX0RCX1BBVEgscm51bV9idWYpO3p4aWNfc3lzdGVtKGNtZCk7fX0KICNlbmRpZgkJDQotelBiTXNnQ3JlYXQoKTthdFBiX0luaXQoKTt9ZWxzZXtyZXR1cm4tKDB4ZmIwKzQ4OC0weDExOTcpO31wcmludGYoCit6UGJNc2dDcmVhdCgpO2F0UGJfSW5pdCgpO31lbHNle3JldHVybi0oMHhkNDgrNDI2LTB4ZWYxKTt9cHJpbnRmKAogIlx4NTBceDYyXHgyMFx4NjFceDcwXHg3MFx4MjBceDY5XHg2ZVx4NjlceDc0XHgyMFx4NjZceDY5XHg2ZVx4NjlceDczXHg2OFx4NjVceDY0XHgyY1x4MjBceDc3XHg2OVx4NmNceDZjXHgyMFx4NzRceDZmXHgyMFx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDIwXHg2ZFx4NzNceDY3XHgyY1x4MjBceDZkXHg3M1x4NjdceDY5XHg2NFx4M2FceDI1XHg2NCIgIlxuIgogLGdfelBiX01zcUlkKTtpZihwdGhyZWFkX2NyZWF0ZSgmcmVjdl90aHJlYWRfdGlkLE5VTEwscGJfbXNnX3RocmVhZF9wcm9jLCh2b2lkKikKLSgmZ196UGJfTG9jYWxNc3FJZCkpPT0tKDB4NjU2Kzg2LTB4NmFiKSl7YXNzZXJ0KCgweDRkMisyMzc2LTB4ZTFhKSk7fQotZGV0ZWN0X21vZGVtX3N0YXRlKCk7cGJfbXNnX3RocmVhZF9wcm9jKCZnX3pQYl9Nc3FJZCk7cmV0dXJuKDB4MTFiNis3NDktMHgxNGEzKTsKKygmZ196UGJfTG9jYWxNc3FJZCkpPT0tKDB4NDkwKzE4NjgtMHhiZGIpKXthc3NlcnQoKDB4MjE5KzI0MDAtMHhiNzkpKTt9CitkZXRlY3RfbW9kZW1fc3RhdGUoKTtwYl9tc2dfdGhyZWFkX3Byb2MoJmdfelBiX01zcUlkKTtyZXR1cm4oMHg2MWYrNzY0MC0weDIzZjcpOwogfQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfcHJvYy5jIGIvYXAvYXBwL3p0ZV9jb21tL3Bob25lYm9vay9zcmMvcGJfcHJvYy5jCmluZGV4IDNmZTYwZWIuLmEyNzBjMTUgMTAwNzU1Ci0tLSBhL2FwL2FwcC96dGVfY29tbS9waG9uZWJvb2svc3JjL3BiX3Byb2MuYworKysgYi9hcC9hcHAvenRlX2NvbW0vcGhvbmVib29rL3NyYy9wYl9wcm9jLmMKQEAgLTMsODUgKzMsODUgQEAKICNpbmNsdWRlIDxzZW1hcGhvcmUuaD4NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQogI2luY2x1ZGUgInBiX2NvbS5oIg0KLSNkZWZpbmUgWlBCX1VDUzIgICAgICAgICAgICAgICAgICAgICgweDE4Y2YrOTA5LTB4MWM1YikNCi0jZGVmaW5lIFpQQl9VQ1MyX1BSRUZJWCAgICAgICAgICAgICAoMHgxMWM4KzM3NDQtMHgxZmU4KQ0KLSNkZWZpbmUgWlBCX1VDUzJfUFJFRklYX0xFTiAgICAgICAgICgweDk4Mis1OTczLTB4MjBkNSkNCi0jZGVmaW5lIFpQQl9OT05fR1NNICAgICAgICAgICAgICAgICAgICAgKDB4MWM3KzU5NzAtMHgxOGY5KQ0KLSNkZWZpbmUgWlBCX0dTTV9DSEFSQUNURVJfU0VUX1NJWkUgICAgICAoMHg2ZjgrMTA5NS0weGFiZikNCi0jZGVmaW5lIFpQQl9JTklUX0xPQURfUkVDT1JEX05VTSAgICAoMHhhZTErMTc1NS0weDExOGEpDQorI2RlZmluZSBaUEJfVUNTMiAgICAgICAgICAgICAgICAgICAgKDB4MWM5MCs0MzktMHgxZTQ2KQ0KKyNkZWZpbmUgWlBCX1VDUzJfUFJFRklYICAgICAgICAgICAgICgweDEzMjcrMTExMC0weDE2ZmQpDQorI2RlZmluZSBaUEJfVUNTMl9QUkVGSVhfTEVOICAgICAgICAgKDB4MmJiKzEyODktMHg3YzIpDQorI2RlZmluZSBaUEJfTk9OX0dTTSAgICAgICAgICAgICAgICAgICAgICgweDEyM2ErMzI1Mi0weDFlY2UpDQorI2RlZmluZSBaUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSAgICAgICgweDQzNCsxNzU1LTB4YThmKQ0KKyNkZWZpbmUgWlBCX0lOSVRfTE9BRF9SRUNPUkRfTlVNICAgICgweDkzNSs2NTMzLTB4MjI4OCkNCiBWT0lEIGF0UGJfQ3Z0Q2hDb2RlKFVJTlQxNiBiYXNlUG9pbnRlcixVSU5UOCBzcmNEYXRhLFVJTlQ4KmNoTXNiLFVJTlQ4KmNoTHNiKTsKIEJPT0wgYXRQYl9DdnRVODJUb1U4MChjb25zdCBVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIAogZGVzdExlbik7Qk9PTCBhdFBiX0N2dFU4MVRvVTgwKGNvbnN0IFVJTlQ4KnNyY0RhdGEsVUlOVDMyIHNyY0xlbixVSU5UOCpkZXN0RGF0YSwKIFVJTlQzMiBkZXN0TGVuKTtleHRlcm4gVk9JRCBhdFBiX0NsZWFyU2ltUGJtSW5kZXhBcnJheShWT0lEKTtleHRlcm4gc2VtX3QgCiBnX1BiX3NlbV9pZDtleHRlcm4gVF96UGJfb3B0UnNwIGdfUGJPcHRSc3A7VUlOVDMyIGdfelBiX0RlbEluZGV4PQotKDB4MTVmOCszOTItMHgxNzgwKTtTSU5UMzIgZ196UGJfU2ltSW5kZXhbWlBCX1NJTV9NQVhfUkVDT1JEKwotKDB4MWI5NisyNjI2LTB4MjVkNyldPXsoMHgxZmJmKzU1My0weDIxZTgpfTtTSU5UMzIgZ196UGJfQXBJbmRleFsKLVpQQl9BUF9NQVhfUkVDT1JEKygweGE5ZCszNDc4LTB4MTgzMildPXsoMHhkYTArMTEwNi0weDExZjIpfTsKLVRfelBiX0RlbFN0YXR1c011bHRpT3JBbGwgZ196UGJfRGVsU3RhdHVzVXNpbT17KDB4MmY3KzM5MjMtMHgxMjRhKX07Y29uc3QgCi11bnNpZ25lZCBjaGFyIEdfWlBCX05FV1VDUzJUT0dTTVtaUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSooMHgxYjMzKzY3Mi0weDFkZDEpXQorKDB4MTllNisxMzI4LTB4MWYxNik7U0lOVDMyIGdfelBiX1NpbUluZGV4W1pQQl9TSU1fTUFYX1JFQ09SRCsKKygweGIwNSs2NzYyLTB4MjU2ZSldPXsoMHgxMjk0KzUwMzktMHgyNjQzKX07U0lOVDMyIGdfelBiX0FwSW5kZXhbCitaUEJfQVBfTUFYX1JFQ09SRCsoMHg4YTQrNTY0Mi0weDFlYWQpXT17KDB4MTJmZiszMzc1LTB4MjAyZSl9OworVF96UGJfRGVsU3RhdHVzTXVsdGlPckFsbCBnX3pQYl9EZWxTdGF0dXNVc2ltPXsoMHgxNjNmKzE5NTktMHgxZGU2KX07Y29uc3QgCit1bnNpZ25lZCBjaGFyIEdfWlBCX05FV1VDUzJUT0dTTVtaUEJfR1NNX0NIQVJBQ1RFUl9TRVRfU0laRSooMHg4YzMrNTYzMi0weDFlYzEpXQogPXtaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLCgweGYyZCsxOTg1LTB4MTZlNCksWlBCX05PTl9HU00sCi1aUEJfTk9OX0dTTSwoMHgzNDMrODAzNi0weDIyOWEpLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAorWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sKDB4ZDEyKzU4NzMtMHgyM2Y5KSxaUEJfTk9OX0dTTSwKK1pQQl9OT05fR1NNLCgweGJhMSszNzYwLTB4MWE0NCksWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKIFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAotWlBCX05PTl9HU00sWlBCX05PTl9HU00sKDB4MWFkNis5LTB4MWFiZiksKDB4OGNjKzEzNjktMHhlMDQpLCgweGQ4ZCs2MzgyLTB4MjY1OSkKLSwoMHg5OWMrNzIyMy0weDI1YjApLCgweGIzMysyOTUyLTB4MTZiOSksKDB4MTAzMiszNDM4LTB4MWQ3YiksCi0oMHhhY2YrNjc1OC0weDI1MGYpLCgweGIwKzQwMDMtMHgxMDJjKSwoMHhlM2YrMjQ4NS0weDE3Y2MpLCgweGFlOCs2MjE5LTB4MjMwYSksCi0oMHgyZjErMTYxMy0weDkxNCksKDB4MTI0Mis0OTg2LTB4MjU5MSksKDB4NzBkKzMyNDMtMHgxMzhjKSwoMHgzM2YrNTcxMy0weDE5NjMpLAotKDB4NjgyKzY0NTQtMHgxZjhhKSwoMHgxOTErNzEzMC0weDFkM2MpLCgweDFkZGQrMzA4LTB4MWVlMSksKDB4MTE3Mys0OTU3LTB4MjQ5ZikKLSwoMHhhY2YrMTI2MS0weGY4YSksKDB4YWNiKzU1MjAtMHgyMDI4KSwoMHgxNGU5KzM2MTgtMHgyMmQ3KSwoMHhjMSs5MzM4LTB4MjUwNiksCi0oMHgxYjErNDI0OS0weDEyMTQpLCgweDExZGErMTI4NC0weDE2YTcpLCgweDY4YysyODYwLTB4MTE4MCksKDB4ZDM1KzIzMjctMHgxNjEzKQotLCgweGM3OSsyNTctMHhkNDApLCgweDExMDArMTE3Ni0weDE1NWQpLCgweDEwZTIrMjIzNi0weDE5NjIpLCgweDFhZGErMjA0LTB4MWI2OSkKLSwoMHg4MWErMzI1MS0weDE0OGYpLCgweDdmZCsyOTI4LTB4MTMyZSksKDB4NDdjKzYwMTMtMHgxYmY5KSwoMHhhNzMrNjg2NC0weDI1MDIpCi0sKDB4OGY0Kzc3MDctMHgyNmNkKSwoMHgxZDdmKzE3MC0weDFkZTYpLCgweGU0MisxMS0weGUwOSksKDB4YzRhKzIxMjEtMHgxNDRlKSwKLSgweGI2NSsyMDY4LTB4MTMzMyksKDB4MTk1ZCs4MzctMHgxYzViKSwoMHg0NjgrNTQ3Ny0weDE5ODUpLCgweDhlMis2NDA2LTB4MjE5ZiksCi0oMHgxNDBjKzU0OS0weDE1ZTcpLCgweDE0NjgrNDc1MC0weDI2YWIpLCgweDUyMCs0MDIyLTB4MTQ4YSksCi0oMHgxYWZhKzIyMDYtMHgyMzRiKSwoMHgxOTUxKzE2NzMtMHgxZjhjKSwoMHhmZjkrNDE3OC0weDFmZmMpLAotKDB4MWJhKzkzOTgtMHgyNjIwKSwoMHg2YjkrMzMxMS0weDEzNTcpLCgweDIwN2YrNTI5LTB4MjIzZSksKDB4MTViOCs3ODEtMHgxODcyKSwKLSgweGM2NSsyNzY2LTB4MTZkZiksKDB4ZjJiKzUzNTUtMHgyM2MxKSwoMHgxYmViKzMxNC0weDFjY2YpLCgweDhiMCs2MjgtMHhhY2QpLAotKDB4ZjE0KzM2NC0weDEwMjgpLCgweGJmZCsxNTIyLTB4MTE5NiksKDB4MTg0YSszMTQtMHgxOTJhKSwoMHg2Y2YrNzgzNS0weDI1MGYpLAotWlBCX05PTl9HU00sKDB4NTY4KzU0NzUtMHgxYTZlKSxaUEJfTk9OX0dTTSwoMHg5YmQrMjI4Mi0weDEyOTYpLFpQQl9OT05fR1NNLAotKDB4ODdiKzEwNTgtMHhjM2MpLCgweGM0NyszNjU4LTB4MWEyZiksKDB4MTIyNyszNjgyLTB4MjAyNiksKDB4OGQ3KzE5NzMtMHgxMDI4KSwKLSgweDY5NyszMjg4LTB4MTMwYSksKDB4MWQ1MysxNTAwLTB4MjJjOSksKDB4ZGExKzQ4NTctMHgyMDMzKSwoMHhmNjgrNDM0Ny0weDFmZmIpCi0sKDB4Mjc3KzM4NTUtMHgxMTFkKSwoMHg0ZmYrMjMxNi0weGRhMSksKDB4YTNjKzg4Mi0weGQ0MyksKDB4MTUyNyszNTc1LTB4MjJiMiksCi0oMHgxYzIrOTAwMS0weDI0N2UpLCgweDQ4Yys3NzQzLTB4MjI1ZCksKDB4MWU0NysxMTUyLTB4MjI1OCksKDB4NWJjKzU5NjgtMHgxYzljKQotLCgweDg0KzUyMjYtMHgxNDdkKSwoMHgxMzRhKzI2MDQtMHgxZDA0KSwoMHg2YTcrMjcwMC0weDEwYzApLAotKDB4MWIxMCsxMDgwLTB4MWVkNCksKDB4MTY5Yis0MzA4LTB4MjZmYSksKDB4MjRjKzUxMTQtMHgxNWQwKSwKLSgweDFlMzYrMTcyMi0weDI0NzkpLCgweDVkOCs0OTQzLTB4MThhZiksKDB4MzRmKzE3NDAtMHg5YTIpLCgweDFlMzMrOTc1LTB4MjE4OCksCitaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwoMHg0Y2MrNDEzMS0weDE0Y2YpLCgweDFiMys5MDUwLTB4MjRlYyksCisoMHgxZDArMjkxMi0weGQwZSksKDB4MTZiNiszNjk0LTB4MjUwMSksKDB4NGE0KzU3MzUtMHgxYjA5KSwoMHgxMTA2KzQ3OTItMHgyMzk5KQorLCgweDg0YisyNTMtMHg5MjIpLCgweDY3OCsxNjExLTB4YzljKSwoMHgzNTYrOTEwOS0weDI2YzMpLCgweGM4NCszNTc3LTB4MWE1NCksCisoMHgxZDQ1KzE5NTUtMHgyNGJlKSwoMHgxZGM1KzEtMHgxZDliKSwoMHgyNjA5KzE1MC0weDI2NzMpLCgweDhiMis2MjIwLTB4MjBkMSksCisoMHgxYWYwKzI3MTMtMHgyNTViKSwoMHgxMWZmKzQzNTctMHgyMmQ1KSwoMHhkNzErMjA5My0weDE1NmUpLCgweDhhMisxODA5LTB4ZjgyKQorLCgweDE0NTIrMjA4OS0weDFjNDkpLCgweDEzNzUrODE2LTB4MTY3MiksKDB4NjFmKzE5NDMtMHhkODIpLAorKDB4MjBmMSsxMDY5LTB4MjRlOSksKDB4MTNhNysxMzU4LTB4MThiZiksKDB4NDkwKzY2NzMtMHgxZTZhKSwKKygweDFiYTArMTk0My0weDIyZmYpLCgweDEwY2MrMjU3OS0weDFhYTYpLCgweDI1YjcrMjE3LTB4MjY1NiksCisoMHgyNDljKzI2MC0weDI1NjUpLCgweDFlZDcrMjEzNy0weDI2ZjQpLCgweGI2OCs5NTMtMHhlZTQpLCgweDg3MCsyNTgtMHg5MzQpLAorKDB4ZWE5KzYwNDYtMHgyNjA4KSwoMHgxODhkKzM0OTItMHgyNjMxKSwoMHg1ZmYrNDkzNy0weDE5MDcpLCgweDkxYisxMzE5LTB4ZTAwKSwKKygweDJhMCs5MTk1LTB4MjY0OCksKDB4MTZkZisxNjczLTB4MWQyNCksKDB4MmIxKzg0NDYtMHgyMzZhKSwoMHg0ZDcrNzgwNC0weDIzMGQpCissKDB4NWRmKzcwNTUtMHgyMTI3KSwoMHgxMGMzKzM0MDgtMHgxZGNiKSwoMHg0MTUrNzA1My0weDFmNTkpLCgweGE0ZisyNzAtMHhiMTMpLAorKDB4OTk5KzIwNzYtMHgxMTZhKSwoMHg2NzMrNjMxNi0weDFlZDMpLCgweDE3OTgrNDQ2LTB4MTkwOSksKDB4MThjKzg0OTUtMHgyMjZkKSwKKygweGE1YysyMjYzLTB4MTJlNCksKDB4ZmYrNzc2NC0weDFmMDMpLCgweDM1NysxNDQtMHgzOTYpLCgweDgzKzcwNjItMHgxYmM3KSwKKygweDRjNCs3MDMwLTB4MWZlNyksKDB4MzIwKzUyNzUtMHgxNzY3KSwoMHg3ZWYrNzg4MC0weDI2NjIpLCgweGMxNSs1NzQzLTB4MjIyZSksCisoMHhmMDMrMjc0MC0weDE5NjApLCgweDgxYSs5MzUtMHhiNjkpLCgweDM2OSs1OTgyLTB4MWE2ZSksKDB4ODgyKzE0NzAtMHhkZTYpLAorKDB4MTI0OCs0OTQ5LTB4MjU0MiksWlBCX05PTl9HU00sKDB4MTM0Kzc3NDUtMHgxZjE4KSxaUEJfTk9OX0dTTSwKKygweDE1ZmMrMzQwOS0weDIzM2MpLFpQQl9OT05fR1NNLCgweGE2YisxOTU2LTB4MTFhZSksKDB4ODUwKzMyOTgtMHgxNGQwKSwKKygweGMyZCs2Mzc4LTB4MjRiNCksKDB4MTEwNisxNjEzLTB4MTZlZiksKDB4YmYxKzY2NTktMHgyNThmKSwoMHhhZGYrNTc1Mi0weDIwZjEpCissKDB4YmI0KzM4MjgtMHgxYTQxKSwoMHgxNTgrMzM4OS0weGUyZCksKDB4ZjE5KzIyNC0weGY5MCksKDB4MmJiKzI4NS0weDM2ZSksCisoMHhjMysxNzk0LTB4NzVhKSwoMHgxMGI2KzMzMDEtMHgxZDJmKSwoMHg1M2QrMTkyMy0weGM1MyksKDB4NmQ4KzIxMS0weDczZCksCisoMHgxM2M2KzQ3MzQtMHgyNWQ1KSwoMHgxMzE0KzQ0MjktMHgyM2YxKSwoMHg2NTcrMjM2Ny0weGYyNSksKDB4OTAwKzYxOTMtMHgyMGJmKQorLCgweGFmZCs0NTg2LTB4MWM3NCksKDB4Zjc2KzQzNzItMHgyMDE2KSwoMHgxNDE2KzExODMtMHgxODQwKSwKKygweDI0ZTUrMjM1LTB4MjU1YSksKDB4MWQ1KzExMy0weDFjZiksKDB4MmY5Kzg3NzItMHgyNGM1KSwoMHhiY2IrMTc1OC0weDEyMzApLAorKDB4MmJkKzE0NDgtMHg3ZWIpLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKIFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAotWlBCX05PTl9HU00sWlBCX05PTl9HU00sKDB4NTEzKzE4ODctMHhjMzIpLFpQQl9OT05fR1NNLCgweDkzNys1ODM3LTB4MjAwMyksCi0oMHhkZWIrMjkxNi0weDE5MmIpLCgweDE0ZjArMjg2MS0weDIwMWEpLFpQQl9OT05fR1NNLCgweDI0NDgrNDg0LTB4MjVjZCksCitaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwoMHhkMDYrNDIxNS0weDFkM2QpLFpQQl9OT05fR1NNLAorKDB4MWIxKzQxOTMtMHgxMjExKSwoMHg5ODMrNjA1MS0weDIxMDIpLCgweDEzNTcrMjkzNy0weDFlY2QpLFpQQl9OT05fR1NNLAorKDB4NWYxKzM1MTMtMHgxMzRiKSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKIFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLAogWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sWlBCX05PTl9HU00sCiBaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSxaUEJfTk9OX0dTTSwKLVpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLFpQQl9OT05fR1NNLCgweDFlN2MrMTM4Mi0weDIzODIpCi0sKDB4NDkwKzcxMzYtMHgyMDJmKSwoMHhmMGMrNTk0My0weDI2MDIpLCgweDExNDUrMjQ1My0weDFhOTkpLAotKDB4Nzk0KzU4MDMtMHgxZGZlKSwoMHgxNTc1KzIyMTAtMHgxZGJjKSwoMHgxOWE4KzMxNjctMHgyNWY5KSwKLSgweDIxMzYrNzgyLTB4MjQyOCksKDB4NzA3KzIyMjctMHhmYjEpLCgweDFhNjUrMjY4OC0weDI0YTApLCgweDExYmIrMTczNy0weDE4NjUpCi0sKDB4MmRkKzQyOS0weDQ0NSksKDB4MjA2NSsxNTAwLTB4MjVmYyksKDB4MWIyKzE5NS0weDIyYyksKDB4YWYwKzU1MTctMHgyMDM0KSwKLSgweDE0ZWQrMzE0OC0weDIwZjApLCgweDE3NTkrMjE2OS0weDFmODkpLFpQQl9OT05fR1NNLCgweDE4Nys5Njk1LTB4MjcwOSksCi0oMHg3NjMrNjg4Ny0weDIxZmIpLCgweDFkNCszMzYwLTB4ZWE1KSwoMHgzOWErMjU2Ni0weGQ1MSksKDB4NDY2Kzg0ODYtMHgyNTNkKSwKLSgweDE4Nys3MTQ1LTB4MWQxNCksWlBCX05PTl9HU00sKDB4MTkxMyszMjYxLTB4MjVjNSksKDB4MTIyYiszNTQ1LTB4MWZhZiksCi0oMHgxZWEyKzE5OTgtMHgyNjFiKSwoMHgxM2UyKzExNDktMHgxODBhKSwoMHgxZDRjKzI0NTktMHgyNjg5KSwKLSgweGY2YSsyNzUyLTB4MTlkMSksWlBCX05PTl9HU00sKDB4NGY4KzExNjAtMHg5NjIpLCgweDM1NiszNDE4LTB4MTAzMSksCi0oMHhjYjMrMTkxNy0weDEzY2YpLCgweDcxMyszNjAtMHg4MWEpLCgweGMyYisxNzIzLTB4MTI4NSksKDB4MTI2MCsyMTYyLTB4MWE1NyksCi0oMHhmMzgrMjY2NS0weDE5OTIpLCgweDE1YzArNDAyMy0weDI1NWEpLCgweDE4MTgrNjA1LTB4MWE2YyksKDB4NjljKzI1NzItMHgxMGE0KQotLCgweDEyZDUrMzUxMS0weDIwODcpLCgweGQ0OCs0OTA5LTB4MjAxMCksKDB4ODc5KzI2OTUtMHgxMjliKSwKLSgweDk0Nis2NjA1LTB4MjMwYyksKDB4MWIyMysyNDUtMHgxYmFmKSwoMHg1YzUrNDQwOS0weDE2OTUpLCgweDFhOTArMTc5LTB4MWFkYSksCi1aUEJfTk9OX0dTTSwoMHgxOTUrODQwOS0weDIxZjEpLCgweDg5OCsxODkyLTB4ZmY0KSwoMHgzMWQrMTMwLTB4MzMwKSwKLSgweGVmYSs0NTI0LTB4MjAzNyksKDB4MWQ0NSszMDYtMHgxZTA4KSwoMHg4ZmMrMTc1Mi0weGY1OCksWlBCX05PTl9HU00sCi0oMHg0YTQrNzA1My0weDIwMjUpLCgweDhiNyszNTM1LTB4MTY4MCksKDB4NzQyKzYzNzktMHgxZmI4KSwoMHg1MzErNDI5MC0weDE1N2UpLAotKDB4MzJhKzEyMDctMHg3NjMpLCgweDFlODErMzQ5LTB4MWY2NSksWlBCX05PTl9HU00sKDB4YmMzKzEyNTctMHgxMDMzKX07Vk9JRCAKLWF0UGJfSW5pdChWT0lEKXtVSU5UMzIgcGJDb3VudD0oMHgyMCs4NDYwLTB4MjEyYyk7Z196UGJfU2ltSW5kZXhbCi0oMHg3MTIrNzg0Ny0weDI1YjkpXT0oMHgyMmErNDkzLTB4NDE3KTtzY19jZmdfc2V0KFpQQl9OVl9JTklULFpQQl9MT0FESU5HKTsoVk9JRAotKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX09QRVJBVEVfU1VDKTtmb3IocGJDb3VudD0oMHgxYTZmKzE1NTEtMHgyMDdkKTsKLXBiQ291bnQ8PVpQQl9TSU1fTUFYX1JFQ09SRDtwYkNvdW50Kyspe2dfelBiX1NpbUluZGV4W3BiQ291bnRdPQotUEJNX0VSUk9SX05PVF9GT1VORDt9aWYoWlBCX0RCX09LIT1hdFBiX0NyZWF0RGIoKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKKygweDFjMTkrMzk1LTB4MWQ0NCksKDB4YzA2KzM2MjUtMHgxOWVlKSwoMHgzMzUrNDM4NC0weDE0MTQpLCgweDdjOCs2MzkyLTB4MjA3ZiksCisoMHgzZDErNTg3LTB4NWRiKSwoMHgxY2Y5KzEyNDItMHgyMTc4KSwoMHhkNjArMTA2LTB4ZGJjKSwoMHgxZGIyKzIyMzctMHgyNjUzKSwKKygweDI2NCs1OTYzLTB4MTlhNiksKDB4MTlmYisyNjQyLTB4MjQwOCksKDB4MWE1ZCszLTB4MWE0MSksKDB4MjJkKzY5ODQtMHgxZDMwKSwKKygweDE3Y2QrMzI3My0weDI0NTEpLCgweDljMis2MDY3LTB4MjEyYyksKDB4NzE3KzgyMjktMHgyNmYzKSwKKygweDE0MTIrNDQ0NS0weDI1MjYpLCgweDUzYysxNDE2LTB4YTdiKSxaUEJfTk9OX0dTTSwoMHgxOTgrMTE3Ny0weDVkNCksCisoMHg2NjUrMzU4MS0weDE0MTMpLCgweDEzMDgrMzUxOC0weDIwNzcpLCgweGYzOSs0MTY3LTB4MWYzMSksKDB4NWRkKzcyMzAtMHgyMWNjKQorLCgweDQ5OSs2ODQtMHg2ZTkpLFpQQl9OT05fR1NNLCgweDFjZmIrMTEyMC0weDIxNTApLCgweGI4OSsxMjQ1LTB4MTAxMSksCisoMHgxMTZiKzkzLTB4MTE3MyksKDB4NGNhKzIzNS0weDU2MCksKDB4MTJkKzU5OC0weDMyNSksKDB4ODExKzIzNjItMHgxMGYyKSwKK1pQQl9OT05fR1NNLCgweDcwMys1NzA2LTB4MWQyZiksKDB4MTlmMyszMzUxLTB4MjY4YiksKDB4ODUzKzQ5MTEtMHgxYjIxKSwKKygweDE2ODArNjA2LTB4MTg3ZCksKDB4MTMwKzczNDctMHgxZDgyKSwoMHg3NDMrNDU2MS0weDE4OTkpLCgweDFjMTYrNDQxLTB4MWRjMCksCisoMHg2ZjkrMTQyMy0weGM2YiksKDB4ZjA0KzQ3OTItMHgyMWIzKSwoMHg0MmErNjkwLTB4NmQ4KSwoMHg1NDUrMTc3Mi0weGMyYyksCisoMHgxNWIwKzMxOTYtMHgyMWM3KSwoMHgxYjgrNTIyMS0weDE1YjgpLCgweGI0NyszNjQ4LTB4MTk4MCksKDB4NGY3KzIzNzctMHhkZDcpLAorKDB4MjQ3Kzg1NjEtMHgyMzRmKSwoMHg1MjcrMzQxNi0weDEyMTYpLFpQQl9OT05fR1NNLCgweDZmNys1NDEwLTB4MWI5YyksCisoMHgxYWI0KzE3MjItMHgyMTY2KSwoMHgxNjg5KzM3OTktMHgyNGYxKSwoMHgxMTJiKzM4MTItMHgxZmEwKSwKKygweDJlOSs1MzM2LTB4MTc1MiksKDB4MWVhNiszMTAtMHgxZjYwKSxaUEJfTk9OX0dTTSwoMHg5NjkrMTIzNC0weGUyZiksCisoMHg5YjYrMTE5Mi0weGU1OCksKDB4MTczKzM1NTQtMHhlZTApLCgweDQ5Zis0MzMwLTB4MTUxNCksKDB4ZWM2KzU3NzQtMHgyNGQ2KSwKKygweDEwMzYrMTEwLTB4MTAyYiksWlBCX05PTl9HU00sKDB4ODNhKzIyMDgtMHgxMDYxKX07Vk9JRCBhdFBiX0luaXQoVk9JRCl7VUlOVDMyCisgcGJDb3VudD0oMHhlMDYrMzIyNC0weDFhOWUpO2dfelBiX1NpbUluZGV4WygweDFlNTUrNjAxLTB4MjBhZSldPQorKDB4MWNlMCsyNjItMHgxZGU2KTtzY19jZmdfc2V0KFpQQl9OVl9JTklULFpQQl9MT0FESU5HKTsoVk9JRClzY19jZmdfc2V0KAorWlBCX05WX1dSSVRFX0ZMQUcsWlBCX09QRVJBVEVfU1VDKTtmb3IocGJDb3VudD0oMHgxZDRhKzE3NzAtMHgyNDMzKTtwYkNvdW50PD0KK1pQQl9TSU1fTUFYX1JFQ09SRDtwYkNvdW50Kyspe2dfelBiX1NpbUluZGV4W3BiQ291bnRdPVBCTV9FUlJPUl9OT1RfRk9VTkQ7fWlmKAorWlBCX0RCX09LIT1hdFBiX0NyZWF0RGIoKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJwYjphdFBiX0luaXQ6Y3JlYXRlIHBibSB0YWJsZSBmYWlsZWRcbiIpO3JldHVybjt9aWYoWlBCX0RCX09LIT1hdFBiX0luaXRBcEluZGV4CiAoKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NDlceDZlXHg2OVx4NzRceDNhXHg2OVx4NmVceDY5XHg3NFx4MjBceDYxXHg3MFx4NDlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NCIgIlxuIgpAQCAtODksOTkgKzg5LDk5IEBACiBzY19jZmdfc2V0KFpQQl9OVl9VU0lNSU5ERVhNSU4sIlx4MzAiKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgsCiAiXHgzMCIpOyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDZlXHg2ZiIpO31pbnQgCiBhdHBiX0N2dFVjczJUb0FscGhhRmllbGQoY2hhcipzcmMsaW50IHNyY0xlbixjaGFyKmRlc3Qpe2ludCBpPQotKDB4MTFkYisxMDQ4LTB4MTVmMyk7aW50IG1pbj0zMjc2NztpbnQgbWF4PSgweDEzOWErNTgwLTB4MTVkZSk7aW50IHRlbXA9Ci0oMHgxNjZmKzQ3OC0weDE4NGQpO2ludCBvdXRPZmY9KDB4MWNjKzYxNjktMHgxOWU1KTtwcmludGYoCisoMHhiMmQrMzI0NC0weDE3ZDkpO2ludCBtaW49MzI3Njc7aW50IG1heD0oMHg1ZmMrNzkyOC0weDI0ZjQpO2ludCB0ZW1wPQorKDB4YWQ3KzI5MjItMHgxNjQxKTtpbnQgb3V0T2ZmPSgweGQxYiszMTI5LTB4MTk1NCk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDcwXHg2Mlx4NWZceDQzXHg3Nlx4NzRceDU1XHg2M1x4NzNceDMyXHg1NFx4NmZceDQxXHg2Y1x4NzBceDY4XHg2MVx4NDZceDY5XHg2NVx4NmNceDY0XHgyY1x4MjBceDczXHg3Mlx4NjNceDRjXHg2NVx4NmVceDNkXHgyNVx4NjQiICJcbiIKLSxzcmNMZW4pO2lmKHNyY0xlbjw9KDB4MWE3KzEzNjAtMHg2ZjcpfHxzcmM9PU5VTEx8fGRlc3Q9PU5VTEwpe3JldHVybi0KLSgweGRmYyszMzAyLTB4MWFlMSk7fWlmKHNyY0xlbjw9KDB4MmMxKzQ0MDktMHgxM2Y4KSl7ZGVzdFsoMHg0NzkrMTkzOC0weGMwYildPQotKDB4MTdlMysxODQ4LTB4MWU5Yik7bWVtY3B5KGRlc3QrKDB4MWU4NyszMjQtMHgxZmNhKSxzcmMsc3JjTGVuKTtwcmludGYoCissc3JjTGVuKTtpZihzcmNMZW48PSgweDExYmErNDE3NC0weDIyMDgpfHxzcmM9PU5VTEx8fGRlc3Q9PU5VTEwpe3JldHVybi0KKygweDI1ZisyOTYxLTB4ZGVmKTt9aWYoc3JjTGVuPD0oMHgxM2RmKzQ2MDktMHgyNWRlKSl7ZGVzdFsoMHg4MjkrODUyLTB4YjdkKV09CisoMHhlZTUrMjIyLTB4ZjQzKTttZW1jcHkoZGVzdCsoMHhmOGErNjAwNS0weDI2ZmUpLHNyYyxzcmNMZW4pO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3NVx4NzNceDY1XHgyMFx4MzhceDMwXHgyMFx4NjNceDZmXHg2NFx4NjVceDJjXHgyMFx4NmNceDY1XHg2ZVx4MjBceDNkXHgyNVx4NjQiICJcbiIKLSxzcmNMZW4rKDB4MzMxKzg4MzItMHgyNWIwKSk7cmV0dXJuIHNyY0xlbisoMHhhNyszNDcyLTB4ZTM2KTt9Zm9yKGk9Ci0oMHhlOTMrMTQ4My0weDE0NWUpO2k8c3JjTGVuO2krPSgweDE5Yys4NTEtMHg0ZWQpKXtpZihzcmNbaV0hPQotKDB4MWNmMCsxODAwLTB4MjNmOCkpe3RlbXA9KGludCkoKChzcmNbaV08PCgweDFhZTArMTkzMi0weDIyNjQpKSY2NTI4MCl8KHNyY1tpKwotKDB4NmQ0KzUyOTEtMHgxYjdlKV0mKDB4OGM4KzcxNzMtMHgyM2NlKSkpOwotI2lmICgweGVjMysxMDAtMHhmMjcpIAotaWYodGVtcDwoMHgxODU3KzI4MTgtMHgyMzU5KSl7bWF4PW1pbisoMHgxMGQwKzQ3NDQtMHgyMmQ2KTticmVhazt9Cissc3JjTGVuKygweDEzYjMrMjU1Ny0weDFkYWYpKTtyZXR1cm4gc3JjTGVuKygweDU3OCs2MjEyLTB4MWRiYik7fWZvcihpPQorKDB4M2EzKzQ1NTktMHgxNTcyKTtpPHNyY0xlbjtpKz0oMHg5NzErNDE4MC0weDE5YzMpKXtpZihzcmNbaV0hPQorKDB4YjJmKzQ4MzItMHgxZTBmKSl7dGVtcD0oaW50KSgoKHNyY1tpXTw8KDB4MTFlYSs0NTExLTB4MjM4MSkpJjY1MjgwKXwoc3JjW2krCisoMHgxOWE0KzI1OTItMHgyM2MzKV0mKDB4Njk2KzYzMi0weDgwZikpKTsKKyNpZiAoMHgxNGRhKzMyMzgtMHgyMTgwKSAKK2lmKHRlbXA8KDB4MTE1MCs1NDE3LTB4MjY3OSkpe21heD1taW4rKDB4MjY3KzgwLTB4MjM1KTticmVhazt9CiAjZW5kaWYgICAgICAgICAgICANCiBpZihtaW4+dGVtcCl7bWluPXRlbXA7fWlmKG1heDx0ZW1wKXttYXg9dGVtcDt9fX1wcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NzBceDYyXHg1Zlx4NDNceDc2XHg3NFx4NTVceDYzXHg3M1x4MzJceDU0XHg2Zlx4NDFceDZjXHg3MFx4NjhceDYxXHg0Nlx4NjlceDY1XHg2Y1x4NjRceDJjXHgyMFx4NmRceDY5XHg2ZVx4M2RceDI1XHg2NFx4MmNceDIwXHg2ZFx4NjFceDc4XHgzZFx4MjVceDY0IiAiXG4iCi0sbWluLG1heCk7aWYoKG1heC1taW4pPCgweDFkZjMrMTM2LTB4MWRmYSkpe2lmKCh1bnNpZ25lZCBjaGFyKShtaW4mCi0oMHgzOTMrMjQwNC0weGM3NykpPT0odW5zaWduZWQgY2hhcikobWF4JigweGI0Zis0NTM5LTB4MWM4YSkpKXtkZXN0WwotKDB4MmErNTk5Ni0weDE3OTUpXT0odW5zaWduZWQgY2hhcikoc3JjTGVuLygweDE2NjQrMjAwNS0weDFlMzcpKTtkZXN0WwotKDB4MmVmKzQwNzctMHgxMmRjKV09KHVuc2lnbmVkIGNoYXIpKDB4MWMxMysyODg4LTB4MjZkYSk7bWluPShpbnQpKG1pbiYzMjY0MCk7Ci1kZXN0WygweGE0Nis3NTMtMHhkMzUpXT0odW5zaWduZWQgY2hhcikoKG1pbj4+KDB4NDkzKzI1NDMtMHhlN2IpKSYKLSgweDQzMys0NTgtMHg0ZmUpKTtvdXRPZmY9KDB4OTFmKzU0NTktMHgxZTZmKTtwcmludGYoCissbWluLG1heCk7aWYoKG1heC1taW4pPCgweDRjOSs4NjgtMHg3YWMpKXtpZigodW5zaWduZWQgY2hhcikobWluJgorKDB4MTlhMCsxMzc2LTB4MWU4MCkpPT0odW5zaWduZWQgY2hhcikobWF4JigweDQ3Yys2NjMwLTB4MWRlMikpKXtkZXN0WworKDB4MWU0Yis0NTMtMHgyMDBmKV09KHVuc2lnbmVkIGNoYXIpKHNyY0xlbi8oMHgxODI5KzIyOTAtMHgyMTE5KSk7ZGVzdFsKKygweDEwYjcrNTI0Ni0weDI1MzUpXT0odW5zaWduZWQgY2hhcikoMHgxZWYwKzMwMi0weDFmOWQpO21pbj0oaW50KShtaW4mMzI2NDApOworZGVzdFsoMHg4Y2YrNDgwOS0weDFiOTYpXT0odW5zaWduZWQgY2hhcikoKG1pbj4+KDB4NDY5KzEzOTAtMHg5ZDApKSYKKygweDk3Mys1NDAyLTB4MWQ4ZSkpO291dE9mZj0oMHgxZDErMjQ5MC0weGI4OCk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDcwXHg2Mlx4NWZceDQzXHg3Nlx4NzRceDU1XHg2M1x4NzNceDMyXHg1NFx4NmZceDQxXHg2Y1x4NzBceDY4XHg2MVx4NDZceDY5XHg2NVx4NmNceDY0XHgyY1x4MjBceDc1XHg3M1x4NjVceDIwXHgzOFx4MzFceDIwXHg2M1x4NmZceDY0XHg2NSIgIlxuIgotKTt9ZWxzZXtkZXN0WygweDE0NjkrMTExOC0weDE4YzYpXT0odW5zaWduZWQgY2hhcikoc3JjTGVuLygweGE3OSsxMzYtMHhhZmYpKTsKLWRlc3RbKDB4MTFiNys0NzE1LTB4MjQyMildPSh1bnNpZ25lZCBjaGFyKSgweGY2MSsyMjgwLTB4MTdjNyk7ZGVzdFsKLSgweDEwOTMrNDUzNi0weDIyNDkpXT0odW5zaWduZWQgY2hhcikoKG1pbj4+KDB4MTM5OCsyNTE2LTB4MWQ2NCkpJgotKDB4ZjNmKzE3ODQtMHgxNTM4KSk7ZGVzdFsoMHgxYzk4KzM0MS0weDFkZWEpXT0odW5zaWduZWQgY2hhcikobWluJgotKDB4NTJmKzI0MjctMHhkYWIpKTtvdXRPZmY9KDB4MWNiMCsxMjA3LTB4MjE2Myk7cHJpbnRmKAorKTt9ZWxzZXtkZXN0WygweDE5ODArMTQwMC0weDFlZjcpXT0odW5zaWduZWQgY2hhcikoc3JjTGVuLygweDFhMmIrNTc0LTB4MWM2NykpOworZGVzdFsoMHgxMjU4KzMwNTYtMHgxZTQ4KV09KHVuc2lnbmVkIGNoYXIpKDB4MTU1NCszNzY5LTB4MjM4Yik7ZGVzdFsKKygweDFhMjcrMjA2Ni0weDIyMzcpXT0odW5zaWduZWQgY2hhcikoKG1pbj4+KDB4OWNkKzIzOTAtMHgxMzFiKSkmCisoMHgxMDMrMTI5NC0weDUxMikpO2Rlc3RbKDB4MWNhNCs0NDktMHgxZTYyKV09KHVuc2lnbmVkIGNoYXIpKG1pbiYKKygweDRlMys3NzY2LTB4MjIzYSkpO291dE9mZj0oMHhiNGYrMjUzMy0weDE1MzApO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3NVx4NzNceDY1XHgyMFx4MzhceDMyXHgyMFx4NjNceDZmXHg2NFx4NjUiICJcbiIKLSk7fWZvcihpPSgweDE4MSs3NDgzLTB4MWViYyk7aTxzcmNMZW47aSs9KDB4MTczMCsyNDI4LTB4MjBhYSkpe2lmKHNyY1tpXT09Ci0oMHgxNjYxKzIwNDgtMHgxZTYxKSl7ZGVzdFtvdXRPZmZdPSh1bnNpZ25lZCBjaGFyKShzcmNbaSsoMHgxZDQ2KzI4MS0weDFlNWUpXSYKLSgweGFmOCs0MzAxLTB4MWI0NikpO31lbHNle3RlbXA9KGludCkoKCgoc3JjW2ldPDwoMHg4ZmQrNzQ4OC0weDI2MzUpKSY2NTI4MCl8KAotc3JjW2krKDB4MTFjOCs0ODkwLTB4MjRlMSldJigweDNkMis3NzUwLTB4MjExOSkpKS1taW4pO2Rlc3Rbb3V0T2ZmXT0odW5zaWduZWQgCi1jaGFyKSh0ZW1wfCgweDFiNzUrMjQyNi0weDI0NmYpKTt9b3V0T2ZmKys7fXByaW50ZigKKyk7fWZvcihpPSgweDI3Mis0OTY0LTB4MTVkNik7aTxzcmNMZW47aSs9KDB4YzRiKzI0MS0weGQzYSkpe2lmKHNyY1tpXT09CisoMHgyOCs2MDA0LTB4MTc5Yykpe2Rlc3Rbb3V0T2ZmXT0odW5zaWduZWQgY2hhcikoc3JjW2krKDB4ZDIzKzU3NS0weGY2MSldJgorKDB4ZGIyKzIwMDYtMHgxNTA5KSk7fWVsc2V7dGVtcD0oaW50KSgoKChzcmNbaV08PCgweDZhYis3MzA1LTB4MjMyYykpJjY1MjgwKXwoCitzcmNbaSsoMHg5ZmIrNjMwNC0weDIyOWEpXSYoMHgyMDU4KzEzMzMtMHgyNDhlKSkpLW1pbik7ZGVzdFtvdXRPZmZdPSh1bnNpZ25lZCAKK2NoYXIpKHRlbXB8KDB4YjkwKzc0My0weGRmNykpO31vdXRPZmYrKzt9cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDcwXHg2Mlx4NWZceDQzXHg3Nlx4NzRceDU1XHg2M1x4NzNceDMyXHg1NFx4NmZceDQxXHg2Y1x4NzBceDY4XHg2MVx4NDZceDY5XHg2NVx4NmNceDY0XHgyY1x4MjBceDIwXHg2Zlx4NzVceDc0XHg0Zlx4NjZceDY2XHgzZFx4MjVceDY0XHgyY1x4NjRceDY1XHg3M1x4NzRceDViXHgyNVx4NjRceDVkXHgzZFx4MjVceDc4IiAiXG4iCi0sb3V0T2ZmLG91dE9mZixkZXN0W291dE9mZl0pO3JldHVybiBvdXRPZmY7fWRlc3RbKDB4MTAzMSsyNjQ5LTB4MWE4YSldPQotKDB4OGQyKzQ0Ny0weGExMSk7bWVtY3B5KGRlc3QrKDB4OTAxKzE5OTYtMHgxMGNjKSxzcmMsc3JjTGVuKTtwcmludGYoCissb3V0T2ZmLG91dE9mZixkZXN0W291dE9mZl0pO3JldHVybiBvdXRPZmY7fWRlc3RbKDB4MTkzNyszMzkzLTB4MjY3OCldPQorKDB4ZGJhKzQ1MzMtMHgxZWVmKTttZW1jcHkoZGVzdCsoMHg4ZjIrNjg1MC0weDIzYjMpLHNyYyxzcmNMZW4pO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg3MFx4NjJceDVmXHg0M1x4NzZceDc0XHg1NVx4NjNceDczXHgzMlx4NTRceDZmXHg0MVx4NmNceDcwXHg2OFx4NjFceDQ2XHg2OVx4NjVceDZjXHg2NFx4MmNceDIwXHg3NVx4NzNceDY1XHgyMFx4MzhceDMwXHgyMFx4NjNceDZmXHg2NFx4NjVceDJjXHgyMFx4NmNceDY1XHg2ZVx4MjBceDNkXHgyNVx4NjQiICJcbiIKLSxzcmNMZW4rKDB4NDI4KzQ5NS0weDYxNikpO3JldHVybiBzcmNMZW4rKDB4NTNhKzc1MDMtMHgyMjg4KTt9aW50IAorLHNyY0xlbisoMHgyZGErNTA1Ni0weDE2OTkpKTtyZXR1cm4gc3JjTGVuKygweDRmYSs4Njk0LTB4MjZlZik7fWludCAKIGF0UGJfR2V0VTgwQ29kZShjb25zdCBVSU5UOCpzcmNDb2RlLFVJTlQzMiBzcmNDb2RlTGVuLFVJTlQ4KmRlc3RDb2RlLFVJTlQzMiAKIGRlc3RDb2RlTGVuKXthc3NlcnQoZGVzdENvZGUhPU5VTEwmJnNyY0NvZGUhPU5VTEwpO2lmKHNyY0NvZGVMZW49PQotKDB4MWNlYysxNDk3LTB4MjJjNSl8fGRlc3RDb2RlTGVuPT0oMHgzNGMrMTQ0LTB4M2RjKXx8ZGVzdENvZGVMZW48c3JjQ29kZUxlbil7Ci1yZXR1cm4tKDB4MTk2ZiszMTg1LTB4MjVkZik7fW1lbXNldChkZXN0Q29kZSwoMHhhNmMrNjMxNC0weDIzMTYpLGRlc3RDb2RlTGVuKTsKLWRlc3RDb2RlWygweDFhYzUrODc5LTB4MWUzNCldPSgweDEyOGYrMzQ1Ni0weDFmOGYpO3ByaW50ZigKKygweGZjMCs0NDE0LTB4MjBmZSl8fGRlc3RDb2RlTGVuPT0oMHhmNzErMzEwNS0weDFiOTIpfHxkZXN0Q29kZUxlbjxzcmNDb2RlTGVuKXsKK3JldHVybi0oMHgxYjErMjUzNS0weGI5Nyk7fW1lbXNldChkZXN0Q29kZSwoMHgxZDA5Kzc4OC0weDIwMWQpLGRlc3RDb2RlTGVuKTsKK2Rlc3RDb2RlWygweDNmYys0NDY2LTB4MTU2ZSldPSgweDIzNmIrOTgtMHgyMzRkKTtwcmludGYoCiAiXHg2M1x4NjhceDY1XHg2ZVx4NmFceDY5XHg2NVx4MjBceDJkXHgyZFx4MmRceDJkXHgyZFx4NjFceDc0XHg1MFx4NjJceDVmXHg0N1x4NjVceDc0XHg1NVx4MzhceDMwXHg0M1x4NmZceDY0XHg2NVx4MmRceDJkXHgyZFx4MmRceDJkXHg3M1x4NzJceDYzXHg0M1x4NmZceDY0XHg2NVx4NWJceDMwXHg1ZFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCi0sc3JjQ29kZVsoMHgzZDIrNjUyMS0weDFkNGIpXSk7c3dpdGNoKHNyY0NvZGVbKDB4YTUxKzU2Mi0weGM4MyldKXtjYXNlCi0oMHgxYzdhKzE1NjUtMHgyMjE3KTp7bWVtY3B5KGRlc3RDb2RlLHNyY0NvZGUsc3JjQ29kZUxlbik7cmV0dXJuIHNyY0NvZGVMZW47fQotY2FzZSgweDEyNis2NjE2LTB4MWE3ZCk6e2F0UGJfQ3Z0VTgxVG9VODAoc3JjQ29kZSsoMHhjOGMrNDM5NS0weDFkYjYpLHNyY0NvZGVMZW4KLS0oMHgzODYrMjE3OS0weGMwOCksZGVzdENvZGUrKDB4MTJjOCsyMDQxLTB4MWFjMCksZGVzdENvZGVMZW4tCi0oMHg3NWMrNjIzNy0weDFmYjgpKTtyZXR1cm4gc3JjQ29kZVsoMHgxOGQ0KzI3MzctMHgyMzg0KV0qKDB4MTRjOCsyMzk2LTB4MWUyMikrCi0oMHg0MDErMjczLTB4NTExKTt9Y2FzZSgweDFkNzErNjczLTB4MWY5MCk6e2F0UGJfQ3Z0VTgyVG9VODAoc3JjQ29kZSsKLSgweGY1NysxODI0LTB4MTY3Niksc3JjQ29kZUxlbi0oMHg5ODcrNjU3NC0weDIzMzQpLGRlc3RDb2RlKygweDcxYiszNzQzLTB4MTViOSksCi1kZXN0Q29kZUxlbi0oMHg2OGIrMTU0NS0weGM5MykpO3JldHVybiBzcmNDb2RlWygweDYwNyszNjgxLTB4MTQ2NyldKgotKDB4NWM1KzIyNDQtMHhlODcpKygweDE2MCsxNDUyLTB4NzBiKTt9ZGVmYXVsdDp7cmV0dXJuLSgweDY3KzkzODYtMHgyNTEwKTt9fX0KLUJPT0wgYXRQYl9DdnRVODJUb1U4MChjb25zdCBVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIAotZGVzdExlbil7VUlOVDggY2hOdW09KDB4YjE3KzcwODMtMHgyNmMyKTtVSU5UMTYgYmFzZVBvaW50ZXI9KDB4MTYwKzc2NTktMHgxZjRiKTsKLVVJTlQ4IGlDdXJDaGFyPSgweDE3NDArMzE1NS0weDIzOTMpO1VJTlQzMiBpQ3VyU3JjPSgweDQ2Nys1Njg0LTB4MWE5Yik7Y2hOdW09KAotVUlOVDMyKXNyY0RhdGFbKDB4MjJhKzUzMzgtMHgxNzA0KV07YmFzZVBvaW50ZXI9KFVJTlQxNilzcmNEYXRhWwotKDB4OGQ1KzMxMTAtMHgxNGZhKV07YmFzZVBvaW50ZXI9YmFzZVBvaW50ZXI8PCgweDk3NCsxMDktMHg5ZDkpO2Jhc2VQb2ludGVyPQotYmFzZVBvaW50ZXIrc3JjRGF0YVsoMHg0YzErNDQ1OC0weDE2MjkpXTtpZihjaE51bSooMHgxNWY3KzE1MTMtMHgxYmRlKT5kZXN0TGVuKXsKLXJldHVybiBGQUxTRTt9Zm9yKGlDdXJTcmM9KDB4ZGYyKzYwODktMHgyNWI4KTtpQ3VyU3JjPHNyY0xlbiYmaUN1ckNoYXI8Y2hOdW07Ci1pQ3VyU3JjKyssaUN1ckNoYXIrKyl7VUlOVDgqY3VyRGVzdD1kZXN0RGF0YSsoMHhhMjErNDMzMS0weDFiMGEpKmlDdXJDaGFyOwotYXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIsc3JjRGF0YVtpQ3VyU3JjXSxjdXJEZXN0LGN1ckRlc3QrKDB4MTljYSs4ODMtMHgxZDNjKSkKLTt9cmV0dXJuIFRSVUU7fUJPT0wgYXRQYl9DdnRVODFUb1U4MChjb25zdCBVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqCi1kZXN0RGF0YSxVSU5UMzIgZGVzdExlbil7VUlOVDggY2hOdW09KDB4MTRmMCs5ODctMHgxOGNiKTtVSU5UMTYgYmFzZVBvaW50ZXI9Ci0oMHgxNDI3KzM3NTgtMHgyMmQ1KTtVSU5UOCBpQ3VyQ2hhcj0oMHhkMjgrMTQ2Ny0weDEyZTMpO1VJTlQzMiBpQ3VyU3JjPQotKDB4MTZkZisxNzYzLTB4MWRjMik7Y2hOdW09c3JjRGF0YVsoMHg0OTgrNTE0LTB4NjlhKV07YmFzZVBvaW50ZXI9KChVSU5UMTYpCi1zcmNEYXRhWygweGNhMSszMDgtMHhkZDQpXSk8PCgweDE0MDcrMTIwMi0weDE4YjIpO2lmKGNoTnVtKigweDE4YzUrMTUxNC0weDFlYWQpPgotZGVzdExlbil7cmV0dXJuIEZBTFNFO31mb3IoaUN1clNyYz0oMHgxODMyKzM1MzktMHgyNjAzKTtpQ3VyU3JjPHNyY0xlbiYmaUN1ckNoYXIKLTxjaE51bTtpQ3VyU3JjKyssaUN1ckNoYXIrKyl7VUlOVDgqY3VyRGVzdD1kZXN0RGF0YSsoMHhmYzgrNTM4Ni0weDI0ZDApKmlDdXJDaGFyCi07YXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIsc3JjRGF0YVtpQ3VyU3JjXSxjdXJEZXN0LGN1ckRlc3QrKDB4YjBkKzQxMTUtMHgxYjFmKQotKTt9cmV0dXJuIFRSVUU7fVZPSUQgYXRQYl9DdnRDaENvZGUoVUlOVDE2IGJhc2VQb2ludGVyLFVJTlQ4IHNyY0RhdGEsVUlOVDgqY2hNc2IKLSxVSU5UOCpjaExzYil7VUlOVDE2IGN1ckNoYXI9KDB4MTA1MisxNjgyLTB4MTZlNCk7YXNzZXJ0KGNoTXNiIT1OVUxMJiZjaExzYiE9Ci1OVUxMKTtpZigoc3JjRGF0YSYoMHg0ODcrMjE0My0weGM2NikpPT0oMHgxMjYwKzM5NzctMHgyMWU5KSl7Y3VyQ2hhcj1zcmNEYXRhO30KLWVsc2V7Y3VyQ2hhcj1iYXNlUG9pbnRlcisoc3JjRGF0YSYoMHgxZTcrNDA5NC0weDExNjYpKTt9KmNoTXNiPShVSU5UOCkoY3VyQ2hhcj4+Ci0oMHg4ZTUrMzg1Ny0weDE3ZWUpKTsqY2hMc2I9KFVJTlQ4KSgoY3VyQ2hhcjw8KDB4MTdkNysxMjk4LTB4MWNlMSkpPj4KLSgweDE3NWYrMTQxNy0weDFjZTApKTtyZXR1cm47fWludCBhdFBiX1N0cmluZzJCeXRlcyhjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgCi1jaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBpPSgweGY4NCsyODE4LTB4MWE4Nik7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8Ci1uU3JjTGVuZ3RoPCgweDI1YSs4MjUwLTB4MjI5NCkpe3JldHVybi0oMHhkYSszNzk0LTB4ZmFiKTt9Zm9yKGk9Ci0oMHg3MDgrMzM3Mi0weDE0MzQpO2k8blNyY0xlbmd0aDtpKz0oMHgyNGU2KzUwNS0weDI2ZGQpKXtpZigqcFNyYz49Ci0oKGNoYXIpKDB4NGE0KzYxOTktMHgxY2FiKSkmJipwU3JjPD0oKGNoYXIpKDB4MzkyKzYzOTgtMHgxYzU3KSkpeypwRHN0PSgqcFNyYy0KLSgoY2hhcikoMHhiZmErMzgyMi0weDFhYjgpKSk8PCgweDI5KzgwMjctMHgxZjgwKTt9ZWxzZXsqcERzdD0oKHRvdXBwZXIoKnBTcmMpLQotKChjaGFyKSgweDNmOCs3ODktMHg2Y2MpKSkrKDB4MWRjKzQwMzUtMHgxMTk1KSk8PCgweDE5YmYrNDUwLTB4MWI3ZCk7fXBTcmMrKztpZigKLSpwU3JjPj0oKGNoYXIpKDB4NmRkKzUzNzAtMHgxYmE3KSkmJipwU3JjPD0oKGNoYXIpKDB4MjRmKzg5MDUtMHgyNGRmKSkpeypwRHN0fD0qCi1wU3JjLSgoY2hhcikoMHhkMTgrNjA1My0weDI0OGQpKTt9ZWxzZXsqcERzdHw9KHRvdXBwZXIoKnBTcmMpLQotKChjaGFyKSgweDE3MzcrMjk2LTB4MTgxZSkpKSsoMHgxYjg5KzE1OTEtMHgyMWI2KTt9cFNyYysrO3BEc3QrKzt9cmV0dXJuIAotblNyY0xlbmd0aC8oMHhlN2YrMTgzMy0weDE1YTYpO31pbnQgYXRQYl9CeXRlczJTdHJpbmcoY29uc3QgdW5zaWduZWQgY2hhcipwU3JjLAorLHNyY0NvZGVbKDB4YmU2KzMyMTAtMHgxODcwKV0pO3N3aXRjaChzcmNDb2RlWygweDk3Zis1MzQyLTB4MWU1ZCldKXtjYXNlCisoMHg2OTErMjMzNy0weGYzMik6e21lbWNweShkZXN0Q29kZSxzcmNDb2RlLHNyY0NvZGVMZW4pO3JldHVybiBzcmNDb2RlTGVuO31jYXNlCisoMHgxMzFjKzQzNjItMHgyM2E1KTp7YXRQYl9DdnRVODFUb1U4MChzcmNDb2RlKygweDFkNGQrNTY0LTB4MWY4MCksc3JjQ29kZUxlbi0KKygweGRhMCs0NDk4LTB4MWYzMSksZGVzdENvZGUrKDB4MWU5KzI5OTgtMHhkOWUpLGRlc3RDb2RlTGVuLSgweDc5YSszNDktMHg4ZjYpKTsKK3JldHVybiBzcmNDb2RlWygweDZhYisyMDM0LTB4ZTljKV0qKDB4NmE4KzEwNDctMHhhYmQpKygweDdkNSs2MDExLTB4MWY0Zik7fWNhc2UKKygweDIxNDArMTI1Mi0weDI1YTIpOnthdFBiX0N2dFU4MlRvVTgwKHNyY0NvZGUrKDB4NzU5KzU2ODgtMHgxZDkwKSxzcmNDb2RlTGVuLQorKDB4MWNiNisxNTEzLTB4MjI5ZSksZGVzdENvZGUrKDB4NjA4KzkzNS0weDlhZSksZGVzdENvZGVMZW4tKDB4MTIxZiszMzc4LTB4MWY1MCkKKyk7cmV0dXJuIHNyY0NvZGVbKDB4MTgzOSszMjA3LTB4MjRiZildKigweDEyOWYrMzQyMC0weDFmZjkpKygweDU4Nys1NzkzLTB4MWMyNyk7Cit9ZGVmYXVsdDp7cmV0dXJuLSgweDIyODYrMzctMHgyMmFhKTt9fX1CT09MIGF0UGJfQ3Z0VTgyVG9VODAoY29uc3QgVUlOVDgqc3JjRGF0YQorLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIGRlc3RMZW4pe1VJTlQ4IGNoTnVtPSgweDZiMys2NTAwLTB4MjAxNyk7CitVSU5UMTYgYmFzZVBvaW50ZXI9KDB4ZGUzKzI5NDItMHgxOTYxKTtVSU5UOCBpQ3VyQ2hhcj0oMHgxMDEyKzE4MzktMHgxNzQxKTsKK1VJTlQzMiBpQ3VyU3JjPSgweGI5Mys1NzExLTB4MjFlMik7Y2hOdW09KFVJTlQzMilzcmNEYXRhWygweGVkOCszNDMtMHgxMDJmKV07CitiYXNlUG9pbnRlcj0oVUlOVDE2KXNyY0RhdGFbKDB4NjFhKzU1NjAtMHgxYmQxKV07YmFzZVBvaW50ZXI9YmFzZVBvaW50ZXI8PAorKDB4YzA0KzM5ODUtMHgxYjhkKTtiYXNlUG9pbnRlcj1iYXNlUG9pbnRlcitzcmNEYXRhWygweDE5NzIrMzYxLTB4MWFkOSldO2lmKAorY2hOdW0qKDB4MTBiMiszNDg0LTB4MWU0Yyk+ZGVzdExlbil7cmV0dXJuIEZBTFNFO31mb3IoaUN1clNyYz0oMHhhNis1NDU1LTB4MTVmMikKKztpQ3VyU3JjPHNyY0xlbiYmaUN1ckNoYXI8Y2hOdW07aUN1clNyYysrLGlDdXJDaGFyKyspe1VJTlQ4KmN1ckRlc3Q9ZGVzdERhdGErCisoMHgxYmI1KzEwMDEtMHgxZjljKSppQ3VyQ2hhcjthdFBiX0N2dENoQ29kZShiYXNlUG9pbnRlcixzcmNEYXRhW2lDdXJTcmNdLAorY3VyRGVzdCxjdXJEZXN0KygweDMzMSszMDU2LTB4ZjIwKSk7fXJldHVybiBUUlVFO31CT09MIGF0UGJfQ3Z0VTgxVG9VODAoY29uc3QgCitVSU5UOCpzcmNEYXRhLFVJTlQzMiBzcmNMZW4sVUlOVDgqZGVzdERhdGEsVUlOVDMyIGRlc3RMZW4pe1VJTlQ4IGNoTnVtPQorKDB4MWMzMyszODItMHgxZGIxKTtVSU5UMTYgYmFzZVBvaW50ZXI9KDB4MTNkMCsyMTMyLTB4MWMyNCk7VUlOVDggaUN1ckNoYXI9CisoMHgxMGU5KzUzNTgtMHgyNWQ3KTtVSU5UMzIgaUN1clNyYz0oMHgzNGYrMzYxNS0weDExNmUpO2NoTnVtPXNyY0RhdGFbCisoMHgxYTYrMTAxMC0weDU5OCldO2Jhc2VQb2ludGVyPSgoVUlOVDE2KXNyY0RhdGFbKDB4MTE0OSs0NDAzLTB4MjI3YildKTw8CisoMHgzZCs3NDgyLTB4MWQ3MCk7aWYoY2hOdW0qKDB4MmI5KzU5MDItMHgxOWM1KT5kZXN0TGVuKXtyZXR1cm4gRkFMU0U7fWZvcigKK2lDdXJTcmM9KDB4MmErNTQ2NC0weDE1ODApO2lDdXJTcmM8c3JjTGVuJiZpQ3VyQ2hhcjxjaE51bTtpQ3VyU3JjKyssaUN1ckNoYXIrKyl7CitVSU5UOCpjdXJEZXN0PWRlc3REYXRhKygweGI0MyszODU2LTB4MWE1MSkqaUN1ckNoYXI7YXRQYl9DdnRDaENvZGUoYmFzZVBvaW50ZXIsCitzcmNEYXRhW2lDdXJTcmNdLGN1ckRlc3QsY3VyRGVzdCsoMHg5NzkrNzMyLTB4YzU0KSk7fXJldHVybiBUUlVFO31WT0lEIAorYXRQYl9DdnRDaENvZGUoVUlOVDE2IGJhc2VQb2ludGVyLFVJTlQ4IHNyY0RhdGEsVUlOVDgqY2hNc2IsVUlOVDgqY2hMc2Ipe1VJTlQxNiAKK2N1ckNoYXI9KDB4M2I0KzE2NDEtMHhhMWQpO2Fzc2VydChjaE1zYiE9TlVMTCYmY2hMc2IhPU5VTEwpO2lmKChzcmNEYXRhJgorKDB4MTQyZis3NzEtMHgxNmIyKSk9PSgweDliMysyMDg5LTB4MTFkYykpe2N1ckNoYXI9c3JjRGF0YTt9ZWxzZXtjdXJDaGFyPQorYmFzZVBvaW50ZXIrKHNyY0RhdGEmKDB4YjYwKzMzNjctMHgxODA4KSk7fSpjaE1zYj0oVUlOVDgpKGN1ckNoYXI+PgorKDB4ZTA4KzQxMjAtMHgxZTE4KSk7KmNoTHNiPShVSU5UOCkoKGN1ckNoYXI8PCgweDIxMysyODYzLTB4ZDNhKSk+PgorKDB4MTcwMysxNzIyLTB4MWRiNSkpO3JldHVybjt9aW50IGF0UGJfU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCAKK2NoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IGk9KDB4YmErODQxNy0weDIxOWIpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fAorblNyY0xlbmd0aDwoMHhmYmQrNDI2Ny0weDIwNjgpKXtyZXR1cm4tKDB4YWMxKzQ5MTQtMHgxZGYyKTt9Zm9yKGk9CisoMHhlZDgrNjE2MC0weDI2ZTgpO2k8blNyY0xlbmd0aDtpKz0oMHgxNzIyKzM1MC0weDE4N2UpKXtpZigqcFNyYz49CisoKGNoYXIpKDB4YjFhKzU1NDctMHgyMDk1KSkmJipwU3JjPD0oKGNoYXIpKDB4MTRiNSs5MjItMHgxODE2KSkpeypwRHN0PSgqcFNyYy0KKygoY2hhcikoMHgyMTZkKzExOTAtMHgyNWUzKSkpPDwoMHgzNzMrMjc3MC0weGU0MSk7fWVsc2V7KnBEc3Q9KCh0b3VwcGVyKCpwU3JjKS0KKygoY2hhcikoMHgxNWMxKzE0ODAtMHgxYjQ4KSkpKygweGQzMCsyMTIwLTB4MTU2ZSkpPDwoMHgxNmYyKzM1NDktMHgyNGNiKTt9cFNyYysrCis7aWYoKnBTcmM+PSgoY2hhcikoMHg0ZmQrNTMzNy0weDE5YTYpKSYmKnBTcmM8PSgoY2hhcikoMHhkMTIrMzY4OC0weDFiNDEpKSl7KgorcERzdHw9KnBTcmMtKChjaGFyKSgweDRjYSs2NDc2LTB4MWRlNikpO31lbHNleypwRHN0fD0odG91cHBlcigqcFNyYyktCisoKGNoYXIpKDB4MTdjOSsyOTktMHgxOGIzKSkpKygweGRmZCszMTcyLTB4MWE1Nyk7fXBTcmMrKztwRHN0Kys7fXJldHVybiAKK25TcmNMZW5ndGgvKDB4MTA1OCszNDgxLTB4MWRlZik7fWludCBhdFBiX0J5dGVzMlN0cmluZyhjb25zdCB1bnNpZ25lZCBjaGFyKnBTcmMsCiBjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2NvbnN0IGNoYXIgdGFiW109CiAiXHgzMFx4MzFceDMyXHgzM1x4MzRceDM1XHgzNlx4MzdceDM4XHgzOVx4NDFceDQyXHg0M1x4NDRceDQ1XHg0NiI7aW50IGk9Ci0oMHgxMDU2KzMwMjMtMHgxYzI1KTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDExMDMrMzQ3My0weDFlOTQpKQote3JldHVybi0oMHgxMTFhKzMzNDktMHgxZTJlKTt9Zm9yKGk9KDB4ZGMrMTMwMi0weDVmMik7aTxuU3JjTGVuZ3RoO2krKyl7KnBEc3QrKz0KLXRhYlsqcFNyYz4+KDB4MTU2OSszMjY1LTB4MjIyNildOypwRHN0Kys9dGFiWypwU3JjJigweDUyYys1MzQ3LTB4MWEwMCldO3BTcmMrKzt9Ci0qcERzdD0nXDAnO3JldHVybiBuU3JjTGVuZ3RoKigweDg5OSs2MTg3LTB4MjBjMik7fXN0YXRpYyBWT0lEIGF0UGJfV2ViUmVjb2RlU2hvdworKDB4N2VmKzQwNS0weDk4NCk7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgxYTRmKzMxMjgtMHgyNjg3KSl7CityZXR1cm4tKDB4MWY4Yis0NDYtMHgyMTQ4KTt9Zm9yKGk9KDB4MTI4MyszNTI2LTB4MjA0OSk7aTxuU3JjTGVuZ3RoO2krKyl7KnBEc3QrKworPXRhYlsqcFNyYz4+KDB4NDc0KzY4MTktMHgxZjEzKV07KnBEc3QrKz10YWJbKnBTcmMmKDB4M2QzKzQyMzctMHgxNDUxKV07cFNyYysrO30KKypwRHN0PSdcMCc7cmV0dXJuIG5TcmNMZW5ndGgqKDB4ZTg0KzU3OTEtMHgyNTIxKTt9c3RhdGljIFZPSUQgYXRQYl9XZWJSZWNvZGVTaG93CiAoVF96UGJfV2ViQ29udGFjdCBjb25zdCpwRnJvbXdlYil7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjZceDcyXHg2Zlx4NmRceDc3XHg2NVx4NjJceDJlXHg0OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjQiICJcbiIKICxwRnJvbXdlYi0+cGJJbmRleCk7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLApAQCAtMjAxLDIwICsyMDEsMjAgQEAKICl7c2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfT1BFUkFURV9TVUMpO3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg1MFx4NjJceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDYzXHg3MFx4NjJceDcyXHg1M1x4NjVceDc0XHgyMFx4NjFceDc0XHg0Mlx4NjFceDczXHg2NVx4NWZceDQ5XHg2OVx4NmVceDc0XHg1MFx4NjJceDRmXHg2Ylx4MjAiICJcbiIKICk7fVZPSUQgYXRQYl9SZWN2Q3Bic1JlYWRSc3AoVF96UGJfQXRDcGJzUmVhZFJlcypjcGJzSW5kKXtDSEFSIHJlc0luZm9bCi0oMHgxMDFkKzQyMC0weDExYWQpXT17KDB4MzdjKzY0MTctMHgxYzhkKX07aWYoc3RybmNtcChjcGJzSW5kLT5sb2NUeXBlLAotIlx4NTNceDRkIiwoMHgxYWY0KzI3MzctMHgyNWEzKSk9PSgweDk0ZisxMDU5LTB4ZDcyKSl7KFZPSUQpc25wcmludGYocmVzSW5mbywKLSgweDE5YjArODAyLTB4MWNiZSksIlx4MjVceDY0IixjcGJzSW5kLT51c2VkRW50cmllcyk7KFZPSUQpc2NfY2ZnX3NldCgKLU5WX1BCX1VTRURFTlRSSUVTLHJlc0luZm8pO21lbXNldChyZXNJbmZvLCgweDUxZisxOTU3LTB4Y2M0KSwoMHg4NzYrMTk3MS0weDEwMTUpCi0pOyhWT0lEKXNucHJpbnRmKHJlc0luZm8sKDB4YTcwKzMyNjYtMHgxNzFlKSwiXHgyNVx4NjQiLGNwYnNJbmQtPnRvdGFsRW50cmllcyk7KAotVk9JRClzY19jZmdfc2V0KE5WX1BCX1RPVEFMRU5UUklFUyxyZXNJbmZvKTtnX3pQYl9TaW1JbmRleFsoMHgyNisxMTAzLTB4NDc1KV09KAotVUlOVDMyKShjcGJzSW5kLT50b3RhbEVudHJpZXMpO31lbHNle3ByaW50ZigKKygweDlkNCsxMjY1LTB4ZWIxKV09eygweDU4KzM0MzktMHhkYzcpfTtpZihzdHJuY21wKGNwYnNJbmQtPmxvY1R5cGUsIlx4NTNceDRkIiwKKygweDFiYTkrMjg0MC0weDI2YmYpKT09KDB4MjM5Mis0NjYtMHgyNTY0KSl7KFZPSUQpc25wcmludGYocmVzSW5mbywKKygweDExMWMrMzQ5LTB4MTI2NSksIlx4MjVceDY0IixjcGJzSW5kLT51c2VkRW50cmllcyk7KFZPSUQpc2NfY2ZnX3NldCgKK05WX1BCX1VTRURFTlRSSUVTLHJlc0luZm8pO21lbXNldChyZXNJbmZvLCgweDE0Mis0MDU3LTB4MTExYiksKDB4NDBiKzExOTAtMHg4OWQpCispOyhWT0lEKXNucHJpbnRmKHJlc0luZm8sKDB4ZWQzKzM3OTctMHgxZDk0KSwiXHgyNVx4NjQiLGNwYnNJbmQtPnRvdGFsRW50cmllcyk7KAorVk9JRClzY19jZmdfc2V0KE5WX1BCX1RPVEFMRU5UUklFUyxyZXNJbmZvKTtnX3pQYl9TaW1JbmRleFsoMHg3ZDQrMjg4NS0weDEzMTkpXT0KKyhVSU5UMzIpKGNwYnNJbmQtPnRvdGFsRW50cmllcyk7fWVsc2V7cHJpbnRmKAogIlx4NjFceDc0XHg1MFx4NjJceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDcwXHg2Mlx4NzNceDUyXHg2NVx4NjFceDY0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDZmXHg3NFx4MjBceDUzXHg0ZFx4M2FceDI1XHg3MyIgIlxuIgogLGNwYnNJbmQtPmxvY1R5cGUpO319c3RhdGljIFZPSUQgYXRQYl9TZXRTY3BiclJlc1RvTnYoQ0hBUiBjb25zdCpwYk52S2V5V29yZCwKLVVJTlQzMiBsZW4pe2NoYXIgY29udmVydGVkWygweDExOGMrMzg4Ny0weDIwYjEpXT17KDB4YmI1KzU3MjUtMHgyMjEyKX07YXNzZXJ0KAotcGJOdktleVdvcmQhPVpVRklfTlVMTCk7KFZPSUQpc25wcmludGYoY29udmVydGVkLCgweDVkZCs0NDQ2LTB4MTczMSksIlx4MjVceDY0IiwKK1VJTlQzMiBsZW4pe2NoYXIgY29udmVydGVkWygweGE0NSs2MTE0LTB4MjIxZCldPXsoMHg5ZjIrMjA0MS0weDExZWIpfTthc3NlcnQoCitwYk52S2V5V29yZCE9WlVGSV9OVUxMKTsoVk9JRClzbnByaW50Zihjb252ZXJ0ZWQsKDB4ZTJmKzU1NzItMHgyM2U5KSwiXHgyNVx4NjQiLAogbGVuKTsoVk9JRClzY19jZmdfc2V0KHBiTnZLZXlXb3JkLGNvbnZlcnRlZCk7fVZPSUQgYXRQYl9TY3BiclRlc3RSc3AoCi1UX3pQYl9BdFNjcGJyVGVzdFJlcypzY3Bic0luZCl7VF96UGJfVXNpbUNhcGFjaXR5IHBiUGFyYT17KDB4YzE5KzM4MzYtMHgxYjE1KX07Ci1DSEFSIHBiVXNlZFsoMHgxNTA3Kzc0OC0weDE3YzEpXT17KDB4NDRiKzEzNDAtMHg5ODcpfTtzY19jZmdfZ2V0KAorVF96UGJfQXRTY3BiclRlc3RSZXMqc2NwYnNJbmQpe1RfelBiX1VzaW1DYXBhY2l0eSBwYlBhcmE9eygweDMzMisxMjI1LTB4N2ZiKX07CitDSEFSIHBiVXNlZFsoMHgxMTdmKzE1OC0weDExZWIpXT17KDB4MTU3ZisyNDY2LTB4MWYyMSl9O3NjX2NmZ19nZXQoCiBOVl9QQl9VU0VERU5UUklFUyxwYlVzZWQsc2l6ZW9mKHBiVXNlZCkpO2dfelBiX0RlbEluZGV4PShVSU5UMzIpc2NwYnNJbmQtPgogbWluSW5kZXg7cGJQYXJhLnNpbVR5cGU9WlBCX1VTSU07cGJQYXJhLm1heFJlY29yZE51bT1zY3Bic0luZC0+bWF4SW5kZXg7cGJQYXJhLgogdXNlZFJlY29yZE51bT1hdG9pKHBiVXNlZCk7cGJQYXJhLm1heE51bWJlckxlbj1zY3Bic0luZC0+bWF4TnVtYmVyTGVuO3BiUGFyYS4KQEAgLTIyMywyMiArMjIzLDIyIEBACiBhdFBiX1NldFNjcGJyUmVzVG9OdihaUEJfTlZfVVNJTUlOREVYTUlOLChVSU5UMzIpc2NwYnNJbmQtPm1pbkluZGV4KTsKIGF0UGJfU2V0U2NwYnJSZXNUb052KFpQQl9OVl9VU0lNSU5ERVhNQVgsKFVJTlQzMilzY3Bic0luZC0+bWF4SW5kZXgpOyhWT0lEKQogYXRQYl9TZXRTaW1DYXBhY2l0eVRhYmxlKHBiUGFyYSk7fWludCBhdFBiX1NlbmRTY3BiclNldF9yZXBlYXQoc2VtX3QgdFNlbUlkKXtpbnQKLSBtaW49KDB4Y2E0KzkyOC0weDEwNDQpO2ludCBtYXg9KDB4MTY2OCsyNTctMHgxNzY5KTtpbnQgcmVzPSgweGU2MSs3MC0weGVhNyk7aW50Ci0gaW5kZXg9KDB4NjRjKzc3ODEtMHgyNGIxKTtDSEFSIHBiTWluWygweDY0Yys0MDQzLTB4MTVlNSldPXsoMHgzZTArMjIzOS0weGM5Zil9OwotQ0hBUiBwYk1heFsoMHgxMThjKzE0ODUtMHgxNzI3KV09eygweDEwKzE2NTMtMHg2ODUpfTtpbnQgaW5kZXhtaW49Ci0oMHhjN2QrNjAyMy0weDI0MDQpO2ludCBpbmRleG1heD0oMHgxNTgrMzY0Ny0weGY5Nyk7VF96UGJfU2NwYnJSZWFkUmVzIAotc2NwYnJSZWFkSW5mbz17KDB4Y2U3KzY0Ny0weGY2ZSl9O3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1JTixwYk1pbixzaXplb2YoCi1wYk1pbikpO3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1BWCxwYk1heCxzaXplb2YocGJNYXgpKTsoVk9JRClzY19jZmdfc2V0KAotWlBCX05WX0lOSVQsWlBCX0xPQURJTkcpO2lmKHN0cmNtcChwYk1pbiwiXHgzMCIpPT0oMHgxOWQzKzI3NzgtMHgyNGFkKXx8c3RyY21wKAotcGJNYXgsIlx4MzAiKT09KDB4ZGI5KzI1MjYtMHgxNzk3KSl7c2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfT1BFUkFURV9TVUMpOwotcHJpbnRmKAorIG1pbj0oMHgxZWJhKzcxMi0weDIxODIpO2ludCBtYXg9KDB4MTE4NCsxMDQtMHgxMWVjKTtpbnQgcmVzPQorKDB4MWZmNysxNjMxLTB4MjY1Nik7aW50IGluZGV4PSgweGZiKzU3NTYtMHgxNzc3KTtDSEFSIHBiTWluWygweGQzNSs2MzY5LTB4MjVlNCkKK109eygweDFmNDArMTAyNi0weDIzNDIpfTtDSEFSIHBiTWF4WygweDUwNSsxNTI2LTB4YWM5KV09eygweDRjMis0NzI5LTB4MTczYil9OworaW50IGluZGV4bWluPSgweDEwODMrMTkzNS0weDE4MTIpO2ludCBpbmRleG1heD0oMHgzODMrMTc4Ny0weGE3ZSk7CitUX3pQYl9TY3BiclJlYWRSZXMgc2NwYnJSZWFkSW5mbz17KDB4Y2U1KzE3NTMtMHgxM2JlKX07c2NfY2ZnX2dldCgKK1pQQl9OVl9VU0lNSU5ERVhNSU4scGJNaW4sc2l6ZW9mKHBiTWluKSk7c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLHBiTWF4LAorc2l6ZW9mKHBiTWF4KSk7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfTE9BRElORyk7aWYoc3RyY21wKHBiTWluLCJceDMwIikKKz09KDB4NWY4KzM3ODgtMHgxNGM0KXx8c3RyY21wKHBiTWF4LCJceDMwIik9PSgweDU4Mys0NjgxLTB4MTdjYykpe3NjX2NmZ19zZXQoCitaUEJfTlZfSU5JVCxaUEJfT1BFUkFURV9TVUMpO3ByaW50ZigKICJceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDUzXHg2M1x4NzBceDYyXHg3Mlx4NTNceDY1XHg3NFx4MjBceDYzXHg2MVx4NzJceDY0XHgyMFx4NzVceDZlXHg3M1x4NzVceDcwXHg3MFx4NmZceDcyXHg3NFx4MjBceDcwXHg2MiIgIlxuIgotKTtyZXR1cm4tKDB4NjRmKzYxMjQtMHgxZTNhKTt9c3NjYW5mKHBiTWluLCJceDI1XHg2NCIsJm1pbik7c3NjYW5mKHBiTWF4LAotIlx4MjVceDY0IiwmbWF4KTtpZigobWluPCgweGI1KzI5MjItMHhjMWYpfHxtaW4+SU5UX01BWC0oMHgxNzMyKzMxNDctMHgyMzdjKSl8fCgKLW1heDwoMHgzZGQrMTEyMS0weDgzZSl8fG1heD5JTlRfTUFYLSgweGNlYSs0ODY5LTB4MWZlZSkpKXtwcmludGYoCispO3JldHVybi0oMHgxMGJiKzU0MjAtMHgyNWU2KTt9c3NjYW5mKHBiTWluLCJceDI1XHg2NCIsJm1pbik7c3NjYW5mKHBiTWF4LAorIlx4MjVceDY0IiwmbWF4KTtpZigobWluPCgweDgwYis2NTU2LTB4MjFhNyl8fG1pbj5JTlRfTUFYLSgweGJmNys0NDA1LTB4MWQyYikpfHwKKyhtYXg8KDB4MWQwMCsyNTYyLTB4MjcwMil8fG1heD5JTlRfTUFYLSgweGE5NSsxODQ5LTB4MTFjZCkpKXtwcmludGYoCiAiXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NmVceDY0XHg1M1x4NjNceDcwXHg2Mlx4NzJceDUzXHg2NVx4NzRceDIwXHg3MFx4NjJceDIwXHg2ZVx4NzVceDZkXHgyMFx4NjVceDcyXHg3Mlx4MjBceDZkXHg2OVx4NmVceDNhXHgyNVx4NjRceDJjXHgyMFx4NmRceDYxXHg3OFx4M2FceDI1XHg2NCIgIlxuIgotLG1pbixtYXgpO3JldHVybi0oMHg0YjIrNjM4OC0weDFkYTUpO313aGlsZSgoMHg5OTArMjAyNi0weDExNzkpKXtpZihpbmRleG1pbjxtaW4KLSl7aW5kZXhtaW49bWluO2luZGV4bWF4PW1pbitaUEJfSU5JVF9MT0FEX1JFQ09SRF9OVU0tKDB4ZGIyKzM5ODctMHgxZDQ0KTtpZigKKyxtaW4sbWF4KTtyZXR1cm4tKDB4MWFiMys1NDctMHgxY2Q1KTt9d2hpbGUoKDB4ZmYyKzU3MTItMHgyNjQxKSl7aWYoaW5kZXhtaW48bWluCispe2luZGV4bWluPW1pbjtpbmRleG1heD1taW4rWlBCX0lOSVRfTE9BRF9SRUNPUkRfTlVNLSgweGU1ZCs2MDUyLTB4MjYwMCk7aWYoCiBpbmRleG1heD5tYXgpe2luZGV4bWF4PW1heDticmVhazt9cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHgzMVx4MzFceDMxXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHg2ZFx4NjlceDZlXHgzZFx4MjVceDY0XHgyY1x4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4NmRceDYxXHg3OFx4M2RceDI1XHg2NFx4MmNceDI4XHgyNVx4NjRceDJkXHgyNVx4NjRceDI5IiAiXG4iCiAsaW5kZXhtaW4saW5kZXhtYXgsbWluLG1heCk7fWVsc2V7aW5kZXhtaW49aW5kZXhtaW4rWlBCX0lOSVRfTE9BRF9SRUNPUkRfTlVNO2lmKApAQCAtMjQ5LDE4ICsyNDksMTggQEAKICJceDViXHg1MFx4NDJceDVkXHgyMFx4MzJceDMyXHgzMlx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4NmRceDY5XHg2ZVx4M2RceDI1XHg2NFx4MmNceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDZkXHg2MVx4NzhceDNkXHgyNVx4NjRceDJjXHgyOFx4MjVceDY0XHgyZFx4MjVceDY0XHgyOSIgIlxuIgogLGluZGV4bWluLGluZGV4bWF4LG1pbixtYXgpO31zY3BiclJlYWRJbmZvLm1pbkluZGV4PWluZGV4bWluO3NjcGJyUmVhZEluZm8uCiBtYXhJbmRleD1pbmRleG1heDtyZXM9aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsTU9EVUxFX0lEX0FUX0NUTCwKLU1TR19DTURfUkVBRF9QQl9SRVEsc2l6ZW9mKFRfelBiX1NjcGJyUmVhZFJlcyksJnNjcGJyUmVhZEluZm8sKDB4MjBjZis5Ni0weDIxMmYpCi0pO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoZ19QYk9wdFJzcC5yZXN1bHQ9PS0oMHgxNzc1KzgwNC0weDFhOTgpKXticmVhazt9fQorTVNHX0NNRF9SRUFEX1BCX1JFUSxzaXplb2YoVF96UGJfU2NwYnJSZWFkUmVzKSwmc2NwYnJSZWFkSW5mbywoMHhlMDcrODI2LTB4MTE0MSkKKyk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdD09LSgweGY2Nys0NzAyLTB4MjFjNCkpe2JyZWFrO319CiByZXR1cm4gZ19QYk9wdFJzcC5yZXN1bHQ7fQotI2lmICgweDEyNDcrMjM4OS0weDFiOWMpDQorI2lmICgweDQ5OCs0MDkzLTB4MTQ5NSkNCiBpbnQgYXRQYl9TZW5kU2NwYnJTZXQoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7VUlOVDMyIAotaW5kZXhtaW49KDB4NDYrNDUwMi0weDExZGMpO1VJTlQzMiBpbmRleG1heD0oMHg3ZGQrMjEwNi0weDEwMTcpO0NIQVIgYXRjbWRNc2dbCi0oMHgyYWErMzU0Ny0weDEwM2YpXT17KDB4MWQ1MCsxMjEtMHgxZGM5KX07aW50IHJlcz0oMHgxN2NkKzI5MjYtMHgyMzNiKTtDSEFSIAotcGJNaW5bKDB4MTRiYyszOTc3LTB4MjQxMyldPXsoMHhmODArNzEzLTB4MTI0OSl9O0NIQVIgcGJNYXhbKDB4MjUwNys0ODktMHgyNmJlKV0KLT17KDB4NTg5Kzc1Mi0weDg3OSl9O3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1JTixwYk1pbixzaXplb2YocGJNaW4pKTsKLXNjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1BWCxwYk1heCxzaXplb2YocGJNYXgpKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9JTklUCi0sWlBCX0xPQURJTkcpO2lmKHN0cmNtcChwYk1pbiwiXHgzMCIpPT0oMHhlMDgrMjgwNy0weDE4ZmYpfHxzdHJjbXAocGJNYXgsIlx4MzAiKQotPT0oMHhiZGYrMzAyNi0weDE3YjEpKXtwcmludGYoCitpbmRleG1pbj0oMHgxYjUrMjMzOS0weGFkOCk7VUlOVDMyIGluZGV4bWF4PSgweDE2ZWQrMzM5Ny0weDI0MzIpO0NIQVIgYXRjbWRNc2dbCisoMHgxNjg5KzE0OTQtMHgxYzE5KV09eygweDEwMGIrMTY5LTB4MTBiNCl9O2ludCByZXM9KDB4NDI1Kzg3ODctMHgyNjc4KTtDSEFSIAorcGJNaW5bKDB4MTdlMysxNjcwLTB4MWUzNyldPXsoMHgxNjA4KzMyMTAtMHgyMjkyKX07Q0hBUiBwYk1heFsKKygweGU3Zis0MzA5LTB4MWYyMildPXsoMHgxODc1KzEzMTMtMHgxZDk2KX07c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUlOLHBiTWluCissc2l6ZW9mKHBiTWluKSk7c2NfY2ZnX2dldChaUEJfTlZfVVNJTUlOREVYTUFYLHBiTWF4LHNpemVvZihwYk1heCkpOyhWT0lEKQorc2NfY2ZnX3NldChaUEJfTlZfSU5JVCxaUEJfTE9BRElORyk7aWYoc3RyY21wKHBiTWluLCJceDMwIik9PSgweGM1MCsyODEwLTB4MTc0YSkKK3x8c3RyY21wKHBiTWF4LCJceDMwIik9PSgweDExMjgrMzY1MS0weDFmNmIpKXtwcmludGYoCiAiXHg2MVx4NzRceDUwXHg2Mlx4NWZceDUzXHg2NVx4NmVceDY0XHg1M1x4NjNceDcwXHg2Mlx4NzJceDUzXHg2NVx4NzRceDIwXHg2M1x4NjFceDcyXHg2NFx4MjBceDc1XHg2ZVx4NzNceDc1XHg3MFx4NzBceDZmXHg3Mlx4NzRceDIwXHg3MFx4NjIiICJcbiIKICk7cmV0dXJuIFpBVF9SRVNVTFRfT0s7fXNzY2FuZihwYk1pbiwiXHgyNVx4NjQiLCZpbmRleG1pbik7c3NjYW5mKHBiTWF4LAogIlx4MjVceDY0IiwmaW5kZXhtYXgpOyhWT0lEKXNucHJpbnRmKGF0Y21kTXNnLHNpemVvZihhdGNtZE1zZyksCkBAIC0yNjksNDUgKzI2OSw0NSBAQAogYXRjbWRNc2csY2lkLHBBdFJzdCxhdFJzdFNpemUpO3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzbXNkYl9tdXRleCk7cmV0dXJuIHJlczt9CiAjZW5kaWYNCiBVSU5UOCBhdFBiX0VuY29kZVRleHQoQ0hBUipwYkRzdCxDSEFSIGNvbnN0KnBiVGV4dFNyYyxVSU5UMzIgZHN0TGVuKXtVSU5UOCBpPQotKDB4MWY5KzQwNjMtMHgxMWQ4KTtDSEFSIHN0clRhcmdldFtaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4MTI3YSsyNjcwLTB4MWNlOCl9OwotaWYocGJUZXh0U3JjIT1aVUZJX05VTEwpe2lmKHN0cmxlbihwYlRleHRTcmMpKigweGM4OCs1NTgxLTB4MjI1MSkrCi1aUEJfVUNTMl9QUkVGSVhfTEVOPGRzdExlbil7c25wcmludGYoKENIQVIqKSZzdHJUYXJnZXRbKDB4MzA4KzQwNDktMHgxMmQ5KV0sCi1zaXplb2Yoc3RyVGFyZ2V0KSwiXHgyNVx4MzBceDMyXHg1OCIsWlBCX1VDUzJfUFJFRklYKTtmb3IoaT0oMHg2MTErNTQ1MS0weDFiNWMpOwotKGk8c3RybGVuKHBiVGV4dFNyYykpJiYoaSooMHgxMjAwKzIyMTYtMHgxYWE0KStaUEJfVUNTMl9QUkVGSVhfTEVOPGRzdExlbik7aSsrKXsKLXNucHJpbnRmKHN0clRhcmdldCtpKigweGRiOCsyMzkyLTB4MTcwYykrWlBCX1VDUzJfUFJFRklYX0xFTixzaXplb2Yoc3RyVGFyZ2V0KS1pCi0qKDB4ZDI1Kzk1MC0weDEwZDcpLVpQQl9VQ1MyX1BSRUZJWF9MRU4sIlx4MzBceDMwXHgyNVx4MzBceDMyXHg1OCIscGJUZXh0U3JjW2ldKQotO31zdHJuY3B5KHBiRHN0LHN0clRhcmdldCxkc3RMZW4tKDB4MTU0NyszMDU5LTB4MjEzOSkpO3JldHVybiBaVUZJX1NVQ0M7fX1yZXR1cm4KLSBaVUZJX0ZBSUw7fVZPSUQgYXRQYl9TY3BiclNldFJzcChUX3pQYl9TY3BiclNldFJlcyphdFJlcyl7VF96UGJfV2ViQ29udGFjdCAKLXBiUmVjb3JkPXsoMHgxMjZiKzIzOTktMHgxYmNhKX07Q0hBUiBwYkRzdFtaUEJfVEVYVF9TSVpFX0JZVEVTXT17Ci0oMHgxYTArNzkyMC0weDIwOTApfTtDSEFSIHRleHRbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDE5NzkrMjQ0NC0weDIzMDUpfTtpbnQgCi10ZXh0X2xlbj0oMHg2M2IrMjAxNC0weGUxOSk7aW50IHRtcF9sZW49KDB4N2EzKzY1ODUtMHgyMTVjKTtDSEFSIHRtcFsKLVpQQl9URVhUX1NJWkVfQllURVNdPXsoMHg3ZjYrNTc4OS0weDFlOTMpfTtpZihhdFJlcy0+Y29kaW5nIT1aUEJfVUNTMil7aWYoCisoMHgzYWMrMTE1OC0weDgzMik7Q0hBUiBzdHJUYXJnZXRbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDYyOSsxNDQ1LTB4YmNlKX07aWYoCitwYlRleHRTcmMhPVpVRklfTlVMTCl7aWYoc3RybGVuKHBiVGV4dFNyYykqKDB4YTMzKzI3NzEtMHgxNTAyKSsKK1pQQl9VQ1MyX1BSRUZJWF9MRU48ZHN0TGVuKXtzbnByaW50ZigoQ0hBUiopJnN0clRhcmdldFsoMHhmOGIrMzg0Ny0weDFlOTIpXSwKK3NpemVvZihzdHJUYXJnZXQpLCJceDI1XHgzMFx4MzJceDU4IixaUEJfVUNTMl9QUkVGSVgpO2ZvcihpPSgweDE0ODYrMzk1My0weDIzZjcpCis7KGk8c3RybGVuKHBiVGV4dFNyYykpJiYoaSooMHgxOGIrMjkyOC0weGNmNykrWlBCX1VDUzJfUFJFRklYX0xFTjxkc3RMZW4pO2krKyl7CitzbnByaW50ZihzdHJUYXJnZXQraSooMHgyNys0ODYxLTB4MTMyMCkrWlBCX1VDUzJfUFJFRklYX0xFTixzaXplb2Yoc3RyVGFyZ2V0KS1pKgorKDB4MTdhOCszNDI0LTB4MjUwNCktWlBCX1VDUzJfUFJFRklYX0xFTiwiXHgzMFx4MzBceDI1XHgzMFx4MzJceDU4IixwYlRleHRTcmNbaV0KKyk7fXN0cm5jcHkocGJEc3Qsc3RyVGFyZ2V0LGRzdExlbi0oMHg2OSs0MDI5LTB4MTAyNSkpO3JldHVybiBaVUZJX1NVQ0M7fX1yZXR1cm4gCitaVUZJX0ZBSUw7fVZPSUQgYXRQYl9TY3BiclNldFJzcChUX3pQYl9TY3BiclNldFJlcyphdFJlcyl7VF96UGJfV2ViQ29udGFjdCAKK3BiUmVjb3JkPXsoMHg2OGYrNjMyOC0weDFmNDcpfTtDSEFSIHBiRHN0W1pQQl9URVhUX1NJWkVfQllURVNdPXsKKygweDYxMis1MzIyLTB4MWFkYyl9O0NIQVIgdGV4dFtaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4YjExKzI2ODUtMHgxNThlKX07aW50IAordGV4dF9sZW49KDB4MTVkNSsxMzEyLTB4MWFmNSk7aW50IHRtcF9sZW49KDB4MTYxZCszNjg2LTB4MjQ4Myk7Q0hBUiB0bXBbCitaUEJfVEVYVF9TSVpFX0JZVEVTXT17KDB4YjhjKzU2MDgtMHgyMTc0KX07aWYoYXRSZXMtPmNvZGluZyE9WlBCX1VDUzIpe2lmKAogYXRQYl9FbmNvZGVUZXh0KHBiRHN0LGF0UmVzLT50ZXh0LFpQQl9URVhUX1NJWkVfQllURVMpPT1aVUZJX1NVQ0Mpe3N0cm5jcHkoYXRSZXMKLS0+dGV4dCxwYkRzdCsoMHg5YisyMDM4LTB4ODhmKSxzaXplb2YoYXRSZXMtPnRleHQpLSgweDZjYis3ODI1LTB4MjU1YikpO31lbHNlewotc2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKKy0+dGV4dCxwYkRzdCsoMHg3YWIrNTMzMS0weDFjN2MpLHNpemVvZihhdFJlcy0+dGV4dCktKDB4MTc5NysxOTI2LTB4MWYxYykpO31lbHNlCit7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDYxXHg3NFx4NTBceDYyXHg1Zlx4NTNceDYzXHg3MFx4NjJceDcyXHg1M1x4NjVceDc0XHg1Mlx4NzNceDcwXHg2NVx4NmVceDYzXHg2Zlx4NjRceDY1XHgyMFx4NjVceDcyXHg3Mlx4MjFceDJlIiAiXG4iCiApO3JldHVybjt9fWVsc2V7dGV4dF9sZW49YXRQYl9TdHJpbmcyQnl0ZXMoJmF0UmVzLT50ZXh0LCZ0ZXh0LHN0cmxlbihhdFJlcy0+dGV4dAogKSk7dG1wX2xlbj1hdFBiX0dldFU4MENvZGUoJnRleHQsdGV4dF9sZW4sJnRtcCxaUEJfVEVYVF9TSVpFX0JZVEVTKTtpZih0bXBfbGVuPAotKDB4MjQ4KzM1MDgtMHhmZmMpKXJldHVybjttZW1zZXQoJnRleHQsKDB4MWUzMSs0ODItMHgyMDEzKSxaUEJfVEVYVF9TSVpFX0JZVEVTKTsKLXRleHRfbGVuPWF0UGJfQnl0ZXMyU3RyaW5nKCZ0bXAsJnRleHQsdG1wX2xlbik7aWYodGV4dF9sZW4+KDB4MWU1NSsxMDE3LTB4MjI0YykpCi17bWVtc2V0KCZhdFJlcy0+dGV4dCwoMHgxMGEzKzU3Ny0weDEyZTQpLFpQQl9URVhUX1NJWkVfQllURVMpO21lbWNweSgmYXRSZXMtPgotdGV4dCx0ZXh0KygweGU0YSs1LTB4ZTRkKSxzdHJsZW4odGV4dCktKDB4ZDVjKzUyOTMtMHgyMjA3KSk7fX1wYlJlY29yZC5wYklkPS0KLSgweDIxKzk2MzYtMHgyNWM0KTtwYlJlY29yZC5wYkluZGV4PShTSU5UMzIpYXRSZXMtPmluZGV4O3N0cm5jcHkocGJSZWNvcmQubmFtZSwKLWF0UmVzLT50ZXh0LHNpemVvZihwYlJlY29yZC5uYW1lKS0oMHgxM2QxKzQzMTgtMHgyNGFlKSk7c3RybmNweShwYlJlY29yZC4KLW1vYmlsTnVtYmVyLGF0UmVzLT5udW1iZXIxLHNpemVvZihwYlJlY29yZC5tb2JpbE51bWJlciktKDB4MWRlNSs4MDgtMHgyMTBjKSk7CisoMHgxMmFhKzE4Ni0weDEzNjQpKXJldHVybjttZW1zZXQoJnRleHQsKDB4MzBkKzEwNDUtMHg3MjIpLFpQQl9URVhUX1NJWkVfQllURVMpOwordGV4dF9sZW49YXRQYl9CeXRlczJTdHJpbmcoJnRtcCwmdGV4dCx0bXBfbGVuKTtpZih0ZXh0X2xlbj4oMHg5NisyMzQ3LTB4OWJmKSl7CittZW1zZXQoJmF0UmVzLT50ZXh0LCgweDE1OCsxMDIzLTB4NTU3KSxaUEJfVEVYVF9TSVpFX0JZVEVTKTttZW1jcHkoJmF0UmVzLT50ZXh0LAordGV4dCsoMHgyMmMrMTU2NS0weDg0Nyksc3RybGVuKHRleHQpLSgweDE0ZGMrMzI2Ni0weDIxOWMpKTt9fXBiUmVjb3JkLnBiSWQ9LQorKDB4ZTc3KzE4MDctMHgxNTg1KTtwYlJlY29yZC5wYkluZGV4PShTSU5UMzIpYXRSZXMtPmluZGV4O3N0cm5jcHkocGJSZWNvcmQubmFtZSwKK2F0UmVzLT50ZXh0LHNpemVvZihwYlJlY29yZC5uYW1lKS0oMHgxYWIrNzA2MC0weDFkM2UpKTtzdHJuY3B5KHBiUmVjb3JkLgorbW9iaWxOdW1iZXIsYXRSZXMtPm51bWJlcjEsc2l6ZW9mKHBiUmVjb3JkLm1vYmlsTnVtYmVyKS0oMHgxYTI5KzE4NjgtMHgyMTc0KSk7CiBzdHJuY3B5KHBiUmVjb3JkLm9mZmljZU51bWJlcixhdFJlcy0+bnVtYmVyMixzaXplb2YocGJSZWNvcmQub2ZmaWNlTnVtYmVyKS0KLSgweDE4MzYrMzk0LTB4MTliZikpO3N0cm5jcHkocGJSZWNvcmQuaG9tZU51bWJlcixhdFJlcy0+bnVtYmVyMyxzaXplb2YocGJSZWNvcmQuCi1ob21lTnVtYmVyKS0oMHg0OWErMzM2MS0weDExYmEpKTtzdHJuY3B5KHBiUmVjb3JkLmVtYWlsLGF0UmVzLT5lbWFpbCxzaXplb2YoCi1wYlJlY29yZC5lbWFpbCktKDB4MTdiYSszNzc1LTB4MjY3OCkpO3BiUmVjb3JkLnBiTG9jYXRpb249WlBCX0xPQ0FUSU9OX1VTSU07KAotVk9JRClhdFBiX0xvYWRBUmVjVG9QYm1UYWJsZSgmcGJSZWNvcmQpO31WT0lEIGF0UGJfU2V0RGVsU3RhdHVzTXVsdE9yQWxsKCl7aWYoCi1nX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtPigweGI0ZisxNTIxLTB4MTE0MCkpe2lmKGdfelBiX0RlbFN0YXR1c1VzaW0uCi1kZWFsU3VjY051bT4oMHg0MmMrNDkwNC0weDE3NTQpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLAorKDB4MWU1MisyMDctMHgxZjIwKSk7c3RybmNweShwYlJlY29yZC5ob21lTnVtYmVyLGF0UmVzLT5udW1iZXIzLHNpemVvZihwYlJlY29yZC4KK2hvbWVOdW1iZXIpLSgweDk1Zis2OTUyLTB4MjQ4NikpO3N0cm5jcHkocGJSZWNvcmQuZW1haWwsYXRSZXMtPmVtYWlsLHNpemVvZigKK3BiUmVjb3JkLmVtYWlsKS0oMHg0YTcrMTc0OS0weGI3YikpO3BiUmVjb3JkLnBiTG9jYXRpb249WlBCX0xPQ0FUSU9OX1VTSU07KFZPSUQpCithdFBiX0xvYWRBUmVjVG9QYm1UYWJsZSgmcGJSZWNvcmQpO31WT0lEIGF0UGJfU2V0RGVsU3RhdHVzTXVsdE9yQWxsKCl7aWYoCitnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtPigweGUzYSsxNjA3LTB4MTQ4MSkpe2lmKGdfelBiX0RlbFN0YXR1c1VzaW0uCitkZWFsU3VjY051bT4oMHhjMSs2ODA4LTB4MWI1OSkpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsCiBaUEJfTVVMX0RFTF9QQVJUX1NVQyk7fWVsc2V7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9fQogZWxzZXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7fX0KLSNpZiAoMHg4OTIrNzcwMS0weDI2YTcpDQorI2lmICgweDE1NTQrNDAxOC0weDI1MDYpDQogVk9JRCBhdFBiX1JlY3ZTY3Bid0FkZEVycihVSU5UOCpwRXJyQ29kZSl7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKLVpQQl9ORVdfRVJST1IpO2lmKChzdHJuY21wKHBFcnJDb2RlLFpBVF9FUlJDT0RFX01FTU9SWV9GVUxMLCgweDZkZis1NzMtMHg5MWEpKT09Ci0oMHg5NWMrNDc5LTB4YjNiKSkpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDc5XHg2NVx4NzMiKTsKK1pQQl9ORVdfRVJST1IpO2lmKChzdHJuY21wKHBFcnJDb2RlLFpBVF9FUlJDT0RFX01FTU9SWV9GVUxMLCgweDIxNTQrNjU4LTB4MjNlNCkpCis9PSgweGFlZCsyNzU5LTB4MTViNCkpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9VU0lNTUVNT1JZRlVMTCwiXHg3OVx4NjVceDczIik7CiBwcmludGYoCiAiXHg3MFx4NjJceDNhXHg1Mlx4NjVceDYzXHg3Nlx4MjBceDQzXHg0ZFx4NDVceDIwXHg0NVx4NzJceDcyXHg0M1x4NmZceDY0XHg2NVx4M2FceDIwXHgzMlx4MzBceDJlIiAiXG4iCiApO31lbHNle3ByaW50ZigKQEAgLTMxOCw4NSArMzE4LDg0IEBACiBaUEJfTkVXX0VSUk9SKTtwcmludGYoCiAiXHg3MFx4NjJceDNhXHg1Mlx4NjVceDYzXHg3Nlx4MjBceDQxXHg3NFx4MjBceDUzXHg2M1x4NzBceDYyXHg3N1x4MjBceDZkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDIwXHg2NVx4NzJceDcyXHgyZSIgIlxuIgogKTt9Vk9JRCBwYl9Bc2N0b0hleChVSU5UMTYqcGNIZXgsU0lOVDMyIGlEc3RMZW4sVUlOVDggY29uc3QqcGNBU0MsU0lOVDMyIGlTcmNMZW4KLSl7VUlOVDMyIGlPZGRPckV2ZW49KDB4MTQyNSsyMDgtMHgxNGY1KTtVSU5UOCBpVGVtcD0oMHhkNTQrMjA0Mi0weDE1NGUpO1NJTlQzMiBpCi09KDB4ZmU4KzQ0NzktMHgyMTY3KTtpZigoTlVMTD09cGNIZXgpfHwoTlVMTD09cGNBU0MpfHwoKDB4ZmY2KzMzMjMtMHgxY2YxKT09Ci1pRHN0TGVuKXx8KGlEc3RMZW48KGlTcmNMZW4vKDB4MTgwMisyNTY0LTB4MjIwNCkrKDB4MTU1ZiszMTA1LTB4MjE3ZikpKSl7cmV0dXJuOwotfWZvcihpPSgweDEwNjErNTE3Mi0weDI0OTUpO2k8aVNyY0xlbjtpKyspe2lmKGlPZGRPckV2ZW4lKDB4OTErOTc3LTB4NDYwKT09Ci0oMHhkZisxMzY1LTB4NjM0KSl7aVRlbXA9KihwY0FTQytpKTtpZigoaVRlbXA+PSgoY2hhcikoMHgxODA2KzI0MjgtMHgyMTUyKSkpJiYoCi1pVGVtcDw9KChjaGFyKSgweDIyYTcrMTAxNC0weDI2NjQpKSkpeyoocGNIZXgraS8oMHgyMDgyKzY3Ny0weDIzMjUpKXw9KFVJTlQ4KSgKLWlUZW1wLSgweDIwNzkrMjEyLTB4MjExZCkpPDwoMHgxY2MrODQ5Ny0weDIyZjkpO31lbHNleyoocGNIZXgraS8KLSgweDIwYTIrMTU1Ny0weDI2YjUpKXw9KFVJTlQ4KShpVGVtcC0oMHg4YmIrNDk1LTB4YTczKSk8PCgweDkxMisxODk4LTB4MTA3OCk7fX0KLWVsc2V7aVRlbXA9KihwY0FTQytpKTtpZigoaVRlbXA+PSgoY2hhcikoMHg2YzIrNzg2MS0weDI1NDcpKSkmJihpVGVtcDw9Ci0oKGNoYXIpKDB4MWJjOSsyMDctMHgxYzVmKSkpKXsqKHBjSGV4K2kvKDB4MTVhNis0MjIzLTB4MjYyMykpfD1pVGVtcC0KLSgweGQ3OCszMDA4LTB4MTkwOCk7fWVsc2V7KihwY0hleCtpLygweDZhMCs3ODU0LTB4MjU0YykpfD1pVGVtcC0KLSgweDZhNCsxODI1LTB4ZDhlKTt9fWlPZGRPckV2ZW4rKzt9fVNJTlQzMiBhdFBiX0lmVWNzMklzU01TNyhVSU5UMTYqcHNVY3MyLAotU0lOVDMyIGlMZW5ndGgpe2ludCBpUmV0VmFsPSgweGUwZiszNzg0LTB4MWNkNik7Y2hhciBjVGVtcDtpbnQgaT0KLSgweGUzKzU0NTEtMHgxNjJlKTtpZihOVUxMPT1wc1VjczIpe3JldHVybi0oMHgxYTExKzMyNjUtMHgyNmQxKTt9Zm9yKGk9Ci0oMHgxNzYyKzkyMS0weDFhZmIpO2k8aUxlbmd0aDtpKyspe2lmKCgweDFkOTYrMjE0MC0weDI0ZjIpPnBzVWNzMltpXSl7c3dpdGNoKAotcHNVY3MyW2ldKXtjYXNlKDB4MTdjYSsxNjk1LTB4MWU1ZCk6Y2FzZSgweDg1NSszNTkzLTB4MTYwMyk6Y2FzZQotKDB4OGYzKzU5MTAtMHgxZmFkKTpjYXNlKDB4MTI0MysxMTAzLTB4MTYzNSk6Y2FzZSgweGYxNCszNTU0LTB4MWM5OCk6Y2FzZQotKDB4MTRjMys0MDU3LTB4MjQyMSk6Y2FzZSgweDE1ODcrMTk2Ny0weDFjYmEpOmNhc2UoMHgxNDNmKzE5NjQtMHgxYjZlKTpjYXNlCi0oMHgyNmY0KzkzLTB4MjZkMyk6Y2FzZSgweDEwMmErMjMyLTB4MTA2ZSk6Y2FzZSgweDEyZWYrNTYxLTB4MTUwMCk6e2JyZWFrO30KLWRlZmF1bHQ6e2NUZW1wPShjaGFyKUdfWlBCX05FV1VDUzJUT0dTTVtwc1VjczJbaV1dO2lmKFpQQl9OT05fR1NNPT1jVGVtcCl7Ci1pUmV0VmFsPSgweGI0Nys5NjctMHhmMGUpO31icmVhazt9fX1lbHNle3N3aXRjaChwc1VjczJbaV0pe2Nhc2UKLSgweDE0OGYrMjIzOS0weDE5YmEpOmNhc2UoMHhiOGIrMjMwOS0weDEwZWEpOmNhc2UoMHgxODcwKzMzNDItMHgyMWViKTpjYXNlCi0oMHg1YjkrNzQ4LTB4NTBhKTpjYXNlKDB4ODU1KzQ4MzctMHgxNzkxKTpjYXNlKDB4YTkwKzQ3ODctMHgxOWEzKTpjYXNlCi0oMHgxOGE5KzQ0MTEtMHgyNjFjKTpjYXNlKDB4YzdkKzY0OS0weGI2Myk6Y2FzZSgweDEyYjQrMjQxOS0weDE4NmYpOmNhc2UKLSgweDFhMWErMzAwNy0weDIyM2IpOnticmVhazt9ZGVmYXVsdDp7aVJldFZhbD0oMHhhNmIrNjU5MS0weDI0MmEpO2JyZWFrO319fWlmKAotKDB4MWJiNysyMTc2LTB4MjQzNyk9PWlSZXRWYWwpe2JyZWFrO319cmV0dXJuIGlSZXRWYWw7fXN0YXRpYyBVSU5UOCAKKyl7VUlOVDMyIGlPZGRPckV2ZW49KDB4Zjk4KzQ2ODEtMHgyMWUxKTtVSU5UOCBpVGVtcD0oMHgyMDk4KzQ5OC0weDIyOGEpO1NJTlQzMiBpCis9KDB4Nis4NzctMHgzNzMpO2lmKChOVUxMPT1wY0hleCl8fChOVUxMPT1wY0FTQyl8fCgoMHgxMjZiKzMyOTktMHgxZjRlKT09aURzdExlbgorKXx8KGlEc3RMZW48KGlTcmNMZW4vKDB4MjA2KzI5NTMtMHhkOGQpKygweDEyMmErMjk3NC0weDFkYzcpKSkpe3JldHVybjt9Zm9yKGk9CisoMHg4MSs2MzQyLTB4MTk0Nyk7aTxpU3JjTGVuO2krKyl7aWYoaU9kZE9yRXZlbiUoMHhjMjIrMzg4MC0weDFiNDgpPT0KKygweDEwMGIrMzIwMy0weDFjOGUpKXtpVGVtcD0qKHBjQVNDK2kpO2lmKChpVGVtcD49KChjaGFyKSgweGE5MCs3MDM3LTB4MjVkZCkpKSYmCisoaVRlbXA8PSgoY2hhcikoMHhhNzYrNDc5My0weDFjZjYpKSkpeyoocGNIZXgraS8oMHgxNWU3KzM2MjgtMHgyNDExKSl8PShVSU5UOCkoCitpVGVtcC0oMHhhYWQrNjA1Ny0weDIyMjYpKTw8KDB4MTc2NyszMDE4LTB4MjMyZCk7fWVsc2V7KihwY0hleCtpLworKDB4MTNjMCs0MzI5LTB4MjRhNykpfD0oVUlOVDgpKGlUZW1wLSgweDQxYSs1MTgyLTB4MTgyMSkpPDwoMHg0ODArNDMxOC0weDE1NWEpO30KK31lbHNle2lUZW1wPSoocGNBU0MraSk7aWYoKGlUZW1wPj0oKGNoYXIpKDB4MTU3NCsxMjE2LTB4MWEwNCkpKSYmKGlUZW1wPD0KKygoY2hhcikoMHgyNTArNTg4Ny0weDE5MTYpKSkpeyoocGNIZXgraS8oMHgxMjQ5KzUwMjgtMHgyNWViKSl8PWlUZW1wLQorKDB4YjFkKzM5NjMtMHgxYTY4KTt9ZWxzZXsqKHBjSGV4K2kvKDB4NzU5KzM5NzQtMHgxNmRkKSl8PWlUZW1wLSgweDgxYisxOS0weDdmNykKKzt9fWlPZGRPckV2ZW4rKzt9fVNJTlQzMiBhdFBiX0lmVWNzMklzU01TNyhVSU5UMTYqcHNVY3MyLFNJTlQzMiBpTGVuZ3RoKXtpbnQgCitpUmV0VmFsPSgweDhjOSs0NTAtMHhhOGEpO2NoYXIgY1RlbXA7aW50IGk9KDB4MTkyNiszMzEtMHgxYTcxKTtpZihOVUxMPT1wc1VjczIpeworcmV0dXJuLSgweGI4ZCszNzIyLTB4MWExNik7fWZvcihpPSgweDE0ZGMrMjA0MS0weDFjZDUpO2k8aUxlbmd0aDtpKyspe2lmKAorKDB4MTMzNCs5NTgtMHgxNWYyKT5wc1VjczJbaV0pe3N3aXRjaChwc1VjczJbaV0pe2Nhc2UoMHg0ZjkrMzYyOC0weDEzMTkpOmNhc2UKKygweDEzYjkrMjQ5Ni0weDFkMWUpOmNhc2UoMHg2NzcrMTE0NS0weGE5NCk6Y2FzZSgweGY2NSs0MTgxLTB4MWY1ZCk6Y2FzZQorKDB4YmJmKzY4MTQtMHgyNWZmKTpjYXNlKDB4MTAxMCs0Mjc2LTB4MjA0OSk6Y2FzZSgweDE4ZWQrNzktMHgxOGMwKTpjYXNlCisoMHhjNjYrNDYzMy0weDFlMDIpOmNhc2UoMHgyYTErOTIwMy0weDI2MTYpOmNhc2UoMHgxMDRiKzU3NjUtMHgyNjJjKTpjYXNlCisoMHg0YTkrMjY3LTB4NTk0KTp7YnJlYWs7fWRlZmF1bHQ6e2NUZW1wPShjaGFyKUdfWlBCX05FV1VDUzJUT0dTTVtwc1VjczJbaV1dO2lmKAorWlBCX05PTl9HU009PWNUZW1wKXtpUmV0VmFsPSgweDFkMmQrMjQ5MS0weDI2ZTgpO31icmVhazt9fX1lbHNle3N3aXRjaChwc1VjczJbaV0KKyl7Y2FzZSgweDE0ODcrMTUxNi0weDE2ZGYpOmNhc2UoMHgxN2U4KzQwMDYtMHgyM2U4KTpjYXNlKDB4ODk1KzI1NTktMHhmMDEpOmNhc2UKKygweGY0ZCs0NDEzLTB4MWNlZik6Y2FzZSgweDFhMDkrMjkwNy0weDIxYmIpOmNhc2UoMHgxNTg1KzEzMzItMHgxNzE5KTpjYXNlCisoMHgxODNmKzQzOTktMHgyNWE2KTpjYXNlKDB4MjJiYyszMjYtMHgyMDVmKTpjYXNlKDB4MTAyYys1NjQ3LTB4MjI4Myk6Y2FzZQorKDB4MTc3ZCsxOTY1LTB4MWI4Yyk6e2JyZWFrO31kZWZhdWx0OntpUmV0VmFsPSgweGIxNis2MTgwLTB4MjMzYSk7YnJlYWs7fX19aWYoCisoMHg2MTYrNjM0Ny0weDFlZTEpPT1pUmV0VmFsKXticmVhazt9fXJldHVybiBpUmV0VmFsO31zdGF0aWMgVUlOVDggCiBhdFBiX0VuY29kZU5hbWVUb1VjczIoY2hhcipwYkRzdCxVSU5UMzIgaURzdExlbixjaGFyIGNvbnN0KnBiU3JjKXtVSU5UMTYgYWNIZXhbCi0oMHgxNDVjKzMxMzAtMHgxZjk2KV09eygweGRjOCszMDU0LTB4MTliNil9O1NJTlQzMiBzcmNsZW49KDB4NzYyKzY0MzgtMHgyMDg4KTsKLVNJTlQzMiByZXN0PSgweDEyNSs1MjYwLTB4MTViMSk7YXNzZXJ0KHBiRHN0IT1OVUxMJiZwYlNyYyE9TlVMTCk7c3JjbGVuPShTSU5UMzIpCisoMHgxMGErNTM2MC0weDE0ZmEpXT17KDB4ODljKzY5MjktMHgyM2FkKX07U0lOVDMyIHNyY2xlbj0oMHgxMWFkKzMyODgtMHgxZTg1KTsKK1NJTlQzMiByZXN0PSgweDc3MSsyODItMHg4OGIpO2Fzc2VydChwYkRzdCE9TlVMTCYmcGJTcmMhPU5VTEwpO3NyY2xlbj0oU0lOVDMyKQogc3RybGVuKHBiU3JjKTtzbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2MVx4NzRceDUwXHg2Mlx4NWZceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDRlXHg2MVx4NmRceDY1XHg1NFx4NmZceDU1XHg2M1x4NzNceDMyXHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHgyMFx4NzBceDczXHg1M1x4NzJceDYzXHgzZFx4MjVceDczXHgyY1x4NjlceDUzXHg3Mlx4NjNceDRjXHg2NVx4NmVceDNkXHgyNVx4NjQiICJcbiIKLSxwYlNyYyxzcmNsZW4pO3BiX0FzY3RvSGV4KGFjSGV4LCgweDMyZis2NTgzLTB4MWJlNiksKFVJTlQ4KilwYlNyYyxzcmNsZW4pO3Jlc3Q9Ci1hdFBiX0lmVWNzMklzU01TNyhhY0hleCxzcmNsZW4vKDB4MTRhMCsxMDk4LTB4MThlNikpO2lmKHJlc3Q9PSgweGUyMSs4NTUtMHgxMTc3KQotKXtyZXR1cm4gYXRQYl9FbmNvZGVUZXh0KHBiRHN0LHBiU3JjLGlEc3RMZW4pO31lbHNlIGlmKHJlc3Q9PSgweDM5Nys4MTQ3LTB4MjM2YSkKLSl7aWYoc3RybGVuKHBiU3JjKSsoMHg0NmMrMTI5NC0weDk3OCk8aURzdExlbil7bWVtY3B5KHBiRHN0LCJceDM4XHgzMCIsCi0oMHg2MTMrNDYwMS0weDE4MGEpKTttZW1jcHkocGJEc3QrKDB4MTNkZis0MC0weDE0MDUpLHBiU3JjLHNyY2xlbik7cmV0dXJuIAorLHBiU3JjLHNyY2xlbik7cGJfQXNjdG9IZXgoYWNIZXgsKDB4NDAzKzEzNzItMHg4NWYpLChVSU5UOCopcGJTcmMsc3JjbGVuKTtyZXN0PQorYXRQYl9JZlVjczJJc1NNUzcoYWNIZXgsc3JjbGVuLygweDYrMTgwMi0weDcwYykpO2lmKHJlc3Q9PSgweGVmNisyNTQ4LTB4MThlOSkpeworcmV0dXJuIGF0UGJfRW5jb2RlVGV4dChwYkRzdCxwYlNyYyxpRHN0TGVuKTt9ZWxzZSBpZihyZXN0PT0oMHgxMjQ3KzExNDQtMHgxNmJmKSkKK3tpZihzdHJsZW4ocGJTcmMpKygweDgyYSs1OTQ5LTB4MWY2NSk8aURzdExlbil7bWVtY3B5KHBiRHN0LCJceDM4XHgzMCIsCisoMHhlMjYrMjQzOC0weDE3YWEpKTttZW1jcHkocGJEc3QrKDB4ZjI1KzE1OTMtMHgxNTVjKSxwYlNyYyxzcmNsZW4pO3JldHVybiAKIFpVRklfU1VDQzt9fXJldHVybiBaVUZJX0ZBSUw7fVNJTlQzMiBhdFBiX0ZpbmRJZGxlSW5kZXgoVF96UGJfV2ViQ29udGFjdCBjb25zdCoKLXBiUmVjdixCT09MIHBiTmV3RmxhZyl7U0lOVDMyIGNvdW50PSgweDEwOTQrMzQ5OS0weDFlM2UpO1NJTlQzMiB0b3RhbD0KLSgweDFhMmIrMTI2LTB4MWFhOSk7U0lOVDMyKkluZGV4VHlwZT1OVUxMO2lmKChOVUxMPT1wYlJlY3YpKXtzbG9nKFBCX1BSSU5ULAorcGJSZWN2LEJPT0wgcGJOZXdGbGFnKXtTSU5UMzIgY291bnQ9KDB4MTM0KzUxMzMtMHgxNTQwKTtTSU5UMzIgdG90YWw9CisoMHgyMWU0KzczNS0weDI0YzMpO1NJTlQzMipJbmRleFR5cGU9TlVMTDtpZigoTlVMTD09cGJSZWN2KSl7c2xvZyhQQl9QUklOVCwKIFNMT0dfRVJSLAogIlx4NzBceDYyXHgzYVx4NjZceDY5XHg2ZVx4NjRceDVmXHg3MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4NzRceDY4XHg2NVx4MjBceDcwXHg2MVx4NzJceDYxXHgyMFx4NmZceDY2XHgyMFx4NjZceDY5XHg2ZVx4NjRceDVmXHg3MFx4NjJceDZkXHg1Zlx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4NjFceDcyXHg2NVx4MjBceDRlXHg1NVx4NGNceDRjIiAiXG4iCi0pO3JldHVybi0oMHgyZjMrNTA2MC0weDE2YjYpO31pZihUUlVFPT1wYk5ld0ZsYWcpe2lmKFpQQl9MT0NBVElPTl9VU0lNPT1wYlJlY3YtPgotcGJMb2NhdGlvbil7dG90YWw9Z196UGJfU2ltSW5kZXhbKDB4MWQ1NSsyMjQyLTB4MjYxNyldO0luZGV4VHlwZT1nX3pQYl9TaW1JbmRleDsKKyk7cmV0dXJuLSgweDM3OCs1MDIxLTB4MTcxNCk7fWlmKFRSVUU9PXBiTmV3RmxhZyl7aWYoWlBCX0xPQ0FUSU9OX1VTSU09PXBiUmVjdi0+CitwYkxvY2F0aW9uKXt0b3RhbD1nX3pQYl9TaW1JbmRleFsoMHgxNGYyKzE2NzgtMHgxYjgwKV07SW5kZXhUeXBlPWdfelBiX1NpbUluZGV4OwogfWVsc2UgaWYoWlBCX0xPQ0FUSU9OX0FQPT1wYlJlY3YtPnBiTG9jYXRpb24pe3RvdGFsPWdfelBiX0FwSW5kZXhbCi0oMHhlN2MrMjg1LTB4Zjk5KV07SW5kZXhUeXBlPWdfelBiX0FwSW5kZXg7fWZvcig7Y291bnQ8PXRvdGFsO2NvdW50Kyspe2lmKChOVUxMCi0hPUluZGV4VHlwZSkmJihJbmRleFR5cGVbY291bnRdPT1QQk1fRVJST1JfTk9UX0ZPVU5EKSl7YnJlYWs7fX1pZihjb3VudD50b3RhbCl7Ci1zbG9nKFBCX1BSSU5ULFNMT0dfRVJSLAorKDB4MTU0YisxMTk3LTB4MTlmOCldO0luZGV4VHlwZT1nX3pQYl9BcEluZGV4O31mb3IoO2NvdW50PD10b3RhbDtjb3VudCsrKXtpZigoCitOVUxMIT1JbmRleFR5cGUpJiYoSW5kZXhUeXBlW2NvdW50XT09UEJNX0VSUk9SX05PVF9GT1VORCkpe2JyZWFrO319aWYoY291bnQ+Cit0b3RhbCl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDcwXHg2Mlx4M2FceDY2XHg2OVx4NmVceDY0XHg1Zlx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDYzXHg2MVx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjZceDY5XHg2ZVx4NjRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDVmXHg2OVx4NjRceDJjXHg2OVx4NmVceDY0XHg2NVx4NzhceDVmXHg2OVx4NjRceDNkXHgyNVx4NjQiICJcbiIgIlx4MmUiCi0sY291bnQpO3JldHVybi0oMHgxMzNhKzQzMjktMHgyNDIyKTt9c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAorLGNvdW50KTtyZXR1cm4tKDB4ZjErOTIwNy0weDI0ZTcpO31zbG9nKFBCX1BSSU5ULFNMT0dfREVCVUcsCiAiXHg3MFx4NjJceDNhXHg2Nlx4NjlceDZlXHg2NFx4NWZceDcwXHg2Mlx4NmRceDVmXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHg1Zlx4NjlceDY0XHgzZFx4MjVceDY0XHgyY1x4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4MjBceDY5XHg3M1x4MjBceDI1XHg2NCIgIlxuIgogLGNvdW50LHRvdGFsKTtyZXR1cm4gY291bnQ7fWVsc2V7cmV0dXJuIHBiUmVjdi0+cGJJbmRleDt9fUJPT0wgYXRQYl9HZXRBU0NJSSgKLUNIQVIqcFNyYyxDSEFSKnBEc3QsU0lOVDMyIGxlbil7U0lOVDMyIGo9KDB4MWIzMSs3NjUtMHgxZTJlKTtTSU5UMzIgaT0KLSgweDE3NzcrMjkzLTB4MTg5Yyk7Q0hBUiBidWZbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDI3NSsxNTI3LTB4ODZjKX07Q0hBUiBzdHJbCi0oMHg1MGYrNTg4OS0weDFjMGQpXT17KDB4MmUzKzY3MzktMHgxZDM2KX07U0lOVDMyIGxlbmd0aD0oMHgxZDk5Kzk1NC0weDIxNTMpOwotbGVuZ3RoPWF0UGJfU3RyaW5nMkJ5dGVzKHBTcmMsYnVmLGxlbik7Zm9yKGk9KDB4ZWI3KzIwOTEtMHgxNmUyKTtpPGxlbmd0aDtpKz0KLSgweDEwZTIrNDE3My0weDIxMmQpKXtpZihidWZbaV0hPSgweDE3Nys1NzE3LTB4MTdjYyl8fGJ1ZltpKygweDQzYis4NDg1LTB4MjU1ZildCi0+KDB4MTRkMysyMzEwLTB4MWQ1YSkpe3JldHVybiBGQUxTRTt9cERzdFtqKytdPWJ1ZltpKygweDUxMis3MjQzLTB4MjE1YyldO30KLXJldHVybiBUUlVFO31WT0lEIGF0V2ViX0FkZE9yTW9kT25lUGJVc2ltKFRfelBiX1dlYkNvbnRhY3QqcFdlYlBiQ29udGFjdCxCT09MIAotcGJOZXdGbGFnLHNlbV90IHNlbUlkKXtpbnQgYXRSZXM9KDB4N2ZhKzUxNzQtMHgxYzMwKTtDSEFSIHBiTmFtZVsKLVpQQl9URVhUX1NJWkVfQllURVMrKDB4NDIzKzkxNC0weDdiMildPXsoMHgxNDIyKzQ2NDktMHgyNjRiKX07Q0hBUiBidWZfc3JjWwotWlBCX1RFWFRfU0laRV9CWVRFUysoMHgxNmMxKzg5Ni0weDFhM2UpXT17KDB4MjAzMSsxNjQzLTB4MjY5Yyl9O0NIQVIgYnVmX2Rlc3RbCi1aUEJfVEVYVF9TSVpFX0JZVEVTKygweGFhZCs1MjQxLTB4MWYyMyldPXsoMHhmM2ErNTYyNS0weDI1MzMpfTtUX3pQYl9TY3Bid1BhcmFtIAotc2NwYndQYXJhbT17KDB4MjA4KzQxODktMHgxMjY1KX07aW50IGxlbj0oMHhiNjArNjUyOS0weDI0ZTEpO2F0UGJfV2ViUmVjb2RlU2hvdygKK0NIQVIqcFNyYyxDSEFSKnBEc3QsU0lOVDMyIGxlbil7U0lOVDMyIGo9KDB4MWY3KzExOTctMHg2YTQpO1NJTlQzMiBpPQorKDB4MjI1OCsxMDgzLTB4MjY5Myk7Q0hBUiBidWZbWlBCX1RFWFRfU0laRV9CWVRFU109eygweDEwZTArNDg4Ni0weDIzZjYpfTtDSEFSIAorc3RyWygweDdkNis3ODY2LTB4MjY4ZCldPXsoMHg0MmQrNDMzOS0weDE1MjApfTtTSU5UMzIgbGVuZ3RoPSgweDE0KzgwNjYtMHgxZjk2KTsKK2xlbmd0aD1hdFBiX1N0cmluZzJCeXRlcyhwU3JjLGJ1ZixsZW4pO2ZvcihpPSgweDU4OSs0OTUzLTB4MThlMik7aTxsZW5ndGg7aSs9CisoMHg1YTErMjgwOC0weDEwOTcpKXtpZihidWZbaV0hPSgweGJiNSs1MDY4LTB4MWY4MSl8fGJ1ZltpKygweDZiNSs3OTY5LTB4MjVkNSldPgorKDB4ZGJmKzU1NTAtMHgyMmVlKSl7cmV0dXJuIEZBTFNFO31wRHN0W2orK109YnVmW2krKDB4MWM3YisyNDI5LTB4MjVmNyldO31yZXR1cm4KKyBUUlVFO31WT0lEIGF0V2ViX0FkZE9yTW9kT25lUGJVc2ltKFRfelBiX1dlYkNvbnRhY3QqcFdlYlBiQ29udGFjdCxCT09MIAorcGJOZXdGbGFnLHNlbV90IHNlbUlkKXtpbnQgYXRSZXM9KDB4NDM4KzY5MzMtMHgxZjRkKTtDSEFSIHBiTmFtZVsKK1pQQl9URVhUX1NJWkVfQllURVMrKDB4OWIyKzc1MTktMHgyNzBlKV09eygweDEyN2IrMzI0Ni0weDFmMjkpfTtDSEFSIGJ1Zl9zcmNbCitaUEJfVEVYVF9TSVpFX0JZVEVTKygweDIwYzUrMTU4NC0weDI2ZjIpXT17KDB4MTliMSsxNDktMHgxYTQ2KX07Q0hBUiBidWZfZGVzdFsKK1pQQl9URVhUX1NJWkVfQllURVMrKDB4MTk0OCsxNzk5LTB4MjA0YyldPXsoMHgxMjU1KzE3My0weDEzMDIpfTtUX3pQYl9TY3Bid1BhcmFtCisgc2NwYndQYXJhbT17KDB4NGViKzcxOTgtMHgyMTA5KX07aW50IGxlbj0oMHgzMTArMzE4Mi0weGY3ZSk7YXRQYl9XZWJSZWNvZGVTaG93KAogcFdlYlBiQ29udGFjdCk7aWYoYXRQYl9HZXRBU0NJSShwV2ViUGJDb250YWN0LT5uYW1lLHBiTmFtZSxzdHJsZW4ocFdlYlBiQ29udGFjdAotLT5uYW1lKSkpe3NjcGJ3UGFyYW0uY29kaW5nPSgweGY2Kzc0Ni0weDNlMCk7fWVsc2V7bGVuPWF0UGJfU3RyaW5nMkJ5dGVzKAorLT5uYW1lKSkpe3NjcGJ3UGFyYW0uY29kaW5nPSgweDE3YWMrMjA5MS0weDFmZDcpO31lbHNle2xlbj1hdFBiX1N0cmluZzJCeXRlcygKIHBXZWJQYkNvbnRhY3QtPm5hbWUsYnVmX3NyYyxzdHJsZW4ocFdlYlBiQ29udGFjdC0+bmFtZSkpO2xlbj0KIGF0cGJfQ3Z0VWNzMlRvQWxwaGFGaWVsZChidWZfc3JjLGxlbixidWZfZGVzdCk7YXRQYl9CeXRlczJTdHJpbmcoYnVmX2Rlc3QscGJOYW1lCi0sbGVuKTtzY3Bid1BhcmFtLmNvZGluZz0oMHgyYyszMTAzLTB4YzRhKTt9c2NwYndQYXJhbS5wYkluZGV4PXBXZWJQYkNvbnRhY3QtPgotcGJJbmRleDtzdHJuY3B5KHNjcGJ3UGFyYW0ubmFtZSxwYk5hbWUsc2l6ZW9mKHNjcGJ3UGFyYW0ubmFtZSktCi0oMHgxNWZiKzMwMTItMHgyMWJlKSk7c3RybmNweShzY3Bid1BhcmFtLm1vYmlsTnVtYmVyLHBXZWJQYkNvbnRhY3QtPm1vYmlsTnVtYmVyLAotc2l6ZW9mKHNjcGJ3UGFyYW0ubW9iaWxOdW1iZXIpLSgweDFiYis5MDE0LTB4MjRmMCkpO3N0cm5jcHkoc2NwYndQYXJhbS4KLW9mZmljZU51bWJlcixwV2ViUGJDb250YWN0LT5vZmZpY2VOdW1iZXIsc2l6ZW9mKHNjcGJ3UGFyYW0ub2ZmaWNlTnVtYmVyKS0KLSgweDE3OTMrNTcwLTB4MTljYykpO3N0cm5jcHkoc2NwYndQYXJhbS5ob21lTnVtYmVyLHBXZWJQYkNvbnRhY3QtPmhvbWVOdW1iZXIsCi1zaXplb2Yoc2NwYndQYXJhbS5ob21lTnVtYmVyKS0oMHgxNGE2KzI0ODQtMHgxZTU5KSk7c3RybmNweShzY3Bid1BhcmFtLmVtYWlsLAotcFdlYlBiQ29udGFjdC0+ZW1haWwsc2l6ZW9mKHNjcGJ3UGFyYW0uZW1haWwpLSgweDRhYys0NTAtMHg2NmQpKTsKLWlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1BCLE1PRFVMRV9JRF9BVF9DVEwsTVNHX0NNRF9BRERfTU9ESUZZX1BCX1JFUSxzaXplb2YoCi1UX3pQYl9TY3Bid1BhcmFtKSwodW5zaWduZWQgY2hhciopJnNjcGJ3UGFyYW0sKDB4OWMwKzM4ODgtMHgxOGYwKSk7c2VtX3dhaXQoJgotZ19QYl9zZW1faWQpO2lmKGdfUGJPcHRSc3AucmVzdWx0IT0oMHg4NzkrNjM0OC0weDIxNDQpKXsoVk9JRClzY19jZmdfc2V0KAotWlBCX05WX1dSSVRFX0ZMQUcsWlBCX05FV19FUlJPUik7aWYoVFJVRT09cGJOZXdGbGFnKXtwcmludGYoCissbGVuKTtzY3Bid1BhcmFtLmNvZGluZz0oMHgxMDczKzM2MTEtMHgxZThkKTt9c2NwYndQYXJhbS5wYkluZGV4PXBXZWJQYkNvbnRhY3QtPgorcGJJbmRleDtzdHJuY3B5KHNjcGJ3UGFyYW0ubmFtZSxwYk5hbWUsc2l6ZW9mKHNjcGJ3UGFyYW0ubmFtZSktKDB4MzMwKzc5MS0weDY0NikKKyk7c3RybmNweShzY3Bid1BhcmFtLm1vYmlsTnVtYmVyLHBXZWJQYkNvbnRhY3QtPm1vYmlsTnVtYmVyLHNpemVvZihzY3Bid1BhcmFtLgorbW9iaWxOdW1iZXIpLSgweDE2YzUrMjg2NC0weDIxZjQpKTtzdHJuY3B5KHNjcGJ3UGFyYW0ub2ZmaWNlTnVtYmVyLHBXZWJQYkNvbnRhY3QKKy0+b2ZmaWNlTnVtYmVyLHNpemVvZihzY3Bid1BhcmFtLm9mZmljZU51bWJlciktKDB4OTY0KzMzNDctMHgxNjc2KSk7c3RybmNweSgKK3NjcGJ3UGFyYW0uaG9tZU51bWJlcixwV2ViUGJDb250YWN0LT5ob21lTnVtYmVyLHNpemVvZihzY3Bid1BhcmFtLmhvbWVOdW1iZXIpLQorKDB4MTQ4KzI3NDUtMHhjMDApKTtzdHJuY3B5KHNjcGJ3UGFyYW0uZW1haWwscFdlYlBiQ29udGFjdC0+ZW1haWwsc2l6ZW9mKAorc2NwYndQYXJhbS5lbWFpbCktKDB4ZGIyKzE5OTktMHgxNTgwKSk7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsCitNT0RVTEVfSURfQVRfQ1RMLE1TR19DTURfQUREX01PRElGWV9QQl9SRVEsc2l6ZW9mKFRfelBiX1NjcGJ3UGFyYW0pLCh1bnNpZ25lZCAKK2NoYXIqKSZzY3Bid1BhcmFtLCgweDEzYjErNDAyNi0weDIzNmIpKTtzZW1fd2FpdCgmZ19QYl9zZW1faWQpO2lmKGdfUGJPcHRSc3AuCityZXN1bHQhPSgweDg0NisyNjU3LTB4MTJhNikpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX05FV19FUlJPUik7CitpZihUUlVFPT1wYk5ld0ZsYWcpe3ByaW50ZigKICJceDcwXHg2Mlx4M2FceDYxXHg2NFx4NjRceDIwXHg1M1x4NjNceDcwXHg2Mlx4NzdceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDJlIiAiXG4iCiApO31lbHNle3ByaW50ZigKICJceDcwXHg2Mlx4M2FceDZkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDIwXHg1M1x4NjNceDcwXHg2Mlx4NzdceDIwXHg2NVx4NzJceDcyXHg2Zlx4NzJceDJlIiAiXG4iCkBAIC00MDgsMTYgKzQwNywxNiBAQAogKTt9ZWxzZXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9ORVdfRVJST1IpO3ByaW50ZigKICJceDcwXHg2Mlx4M2FceDU3XHg3Mlx4NjlceDc0XHg2NVx4NDNceDZmXHg2ZVx4NzRceDYxXHg2M1x4NzRceDU0XHg2Zlx4NTBceDYyXHg2ZFx4NTRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgyZSIgIlxuIgogKTt9fVZPSUQgYXRXZWJfQWRkT25lUGIoVF96UGJfV2ViQ29udGFjdCp3ZWJQYkNvbnRhY3Qsc2VtX3Qgc2VtSWQpe1NJTlQzMiAKLWlkbGVJbmRleD0oMHg5MWIrMjkwOC0weDE0NzYpO1RfelBiX0hlYWRlciBwYkhlYWRlcj17KDB4NjliKzExNTgtMHhiMjEpfTtCT09MIAotcGJOZXdGbGFnPUZBTFNFO1RfelBiX0RlbEluZm8gZGVsUmVjb3JkPXsoMHhjZWIrMTAzMS0weDEwZjIpfTtDSEFSIHB0RmxhZ1sKLSgweDFjN2QrMTA4My0weDIwYTQpXT17KDB4OWY0KzE3ODktMHgxMGYxKX07cHJpbnRmKAoraWRsZUluZGV4PSgweDZhKzE0MzMtMHg2MDIpO1RfelBiX0hlYWRlciBwYkhlYWRlcj17KDB4MTJjMys0NzQxLTB4MjU0OCl9O0JPT0wgCitwYk5ld0ZsYWc9RkFMU0U7VF96UGJfRGVsSW5mbyBkZWxSZWNvcmQ9eygweDEyYTgrMzAwOS0weDFlNjkpfTtDSEFSIHB0RmxhZ1sKKygweGUwYis1NDExLTB4MjMxYSldPXsoMHgxMWQ4KzM5NTgtMHgyMTRlKX07cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg1MFx4NjJceDJjXHgyMFx4NzBceDYyXHg0OVx4NjRceDNkXHgyNVx4NjRceDIxIiAiXG4iCi0sd2ViUGJDb250YWN0LT5wYklkKTtpZigtKDB4MzhjKzM5Mi0weDUxMyk9PXdlYlBiQ29udGFjdC0+cGJJZCl7c2xvZyhQQl9QUklOVCwKKyx3ZWJQYkNvbnRhY3QtPnBiSWQpO2lmKC0oMHg1YTYrODI2OC0weDI1ZjEpPT13ZWJQYkNvbnRhY3QtPnBiSWQpe3Nsb2coUEJfUFJJTlQsCiBTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjFceDc0XHg1N1x4NjVceDYyXHg1Zlx4NDFceDY0XHg2NFx4NGZceDZlXHg2NVx4NTBceDYyXHgyMFx4NmVceDY1XHg3N1x4MmUiICJcbiIKICk7cGJOZXdGbGFnPVRSVUU7aWRsZUluZGV4PWF0UGJfRmluZElkbGVJbmRleCh3ZWJQYkNvbnRhY3QscGJOZXdGbGFnKTtwcmludGYoCiAiXHg1Ylx4NTBceDQyXHg1ZFx4MjBceDYxXHg3NFx4NTdceDY1XHg2Mlx4NWZceDQxXHg2NFx4NjRceDRmXHg2ZVx4NjVceDUwXHg2Mlx4MjBceDY5XHg2NFx4NmNceDY1XHg0OVx4NmVceDY0XHg2NVx4NzhceDNkXHgyNVx4NjRceDJlIiAiXG4iCi0saWRsZUluZGV4KTtpZihpZGxlSW5kZXghPS0oMHgxODUxKzQwMi0weDE5ZTIpKXt3ZWJQYkNvbnRhY3QtPnBiSW5kZXg9aWRsZUluZGV4OworLGlkbGVJbmRleCk7aWYoaWRsZUluZGV4IT0tKDB4NTcyKzMyNzEtMHgxMjM4KSl7d2ViUGJDb250YWN0LT5wYkluZGV4PWlkbGVJbmRleDsKIH1lbHNleyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX05FV19FUlJPUik7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjlceDczXHgyMFx4NjZceDc1XHg2Y1x4NmNceDJjXHgyMFx4NjNceDYxXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg2MVx4NjRceDY0XHgyMFx4NzJceDY1XHg2M1x4NmZceDY0XHg2NVx4MjBceDYxXHg2ZVx4NzlceDIwXHg2ZFx4NmZceDcyXHg2NVx4MmUiICJcbiIKICk7cmV0dXJuO319ZWxzZXtwcmludGYoCkBAIC00MzYsMjcgKzQzNSwyNyBAQAogKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9MT0NBVElPTl9JU19OVUxMKTt9cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0MVx4NjRceDY0XHg0Zlx4NmVceDY1XHg1MFx4NjJceDIwXHg2NFx4NjVceDZjXHg1Zlx4NjlceDY0XHgzZFx4MjVceDY0XHgyZSIgIlxuIgogLHdlYlBiQ29udGFjdC0+ZGVsX2lkKTtzY19jZmdfZ2V0KFpQQl9OVl9XUklURV9GTEFHLHB0RmxhZyxzaXplb2YocHRGbGFnKSk7aWYoCi0oMHgxYjljKzI3MzMtMHgyNjQ5KT09c3RyY21wKCJceDMwIixwdEZsYWcpJiYtKDB4NmUwKzM1NjItMHgxNGM5KSE9d2ViUGJDb250YWN0Ci0tPmRlbF9pZCl7ZGVsUmVjb3JkLmRlbElkWygweDE4ZiszMjMxLTB4ZTJlKV09d2ViUGJDb250YWN0LT5kZWxfaWQ7CisoMHgxYTQzKzIzMDgtMHgyMzQ3KT09c3RyY21wKCJceDMwIixwdEZsYWcpJiYtKDB4YTk0KzIyNzEtMHgxMzcyKSE9d2ViUGJDb250YWN0CistPmRlbF9pZCl7ZGVsUmVjb3JkLmRlbElkWygweGQ2NysxMDk1LTB4MTFhZSldPXdlYlBiQ29udGFjdC0+ZGVsX2lkOwogYXRXZWJfRGVsT25lcGIoJmRlbFJlY29yZCxzZW1JZCk7fX1WT0lEIGF0V2ViX0RlbE9uZXBiKFRfelBiX0RlbEluZm8qZGVsUmVjb3JkLAotc2VtX3Qgc2VtSWQpe0NIQVIgZXJyQ29kZVtaU1ZSX0FUX1JFU19DT0RFX0xFTl09eygweGRiNisxNTI2LTB4MTNhYyl9O2ludCBhdFJlcz0KLSgweDE0MmErMTg4My0weDFiODUpO1NJTlQzMiBkZWxUaW1lPSgweDFlZmYrODMtMHgxZjUyKTsKK3NlbV90IHNlbUlkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHhhODgrNDE5OC0weDFhZWUpfTtpbnQgYXRSZXM9CisoMHg2Y2IrMTI2MS0weGJiOCk7U0lOVDMyIGRlbFRpbWU9KDB4MmUxKzcwMDEtMHgxZTNhKTsKIGF0UGJfR2V0TG9jYXRpb25JbmRleEZvckRlbChkZWxSZWNvcmQsZGVsVGltZSk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2NFx4NjVceDZjXHg1Zlx4NjFceDVmXHg3MFx4NjJceDZkXHg1Zlx4NzJceDY1XHg2M1x4NmZceDcyXHg2NFx4MmRceDJkXHg2NFx4NjVceDZjXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzZFx4MjVceDY0XHgyY1x4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0IiAiXG4iCi0sZGVsUmVjb3JkLT5kZWxJbmRleFsoMHgzYmQrMjk0MS0weGYzYSldLGRlbFJlY29yZC0+ZGVsTG9jYXRpb24pO2lmKAorLGRlbFJlY29yZC0+ZGVsSW5kZXhbKDB4MzBiKzkwNjAtMHgyNjZmKV0sZGVsUmVjb3JkLT5kZWxMb2NhdGlvbik7aWYoCiBaUEJfTE9DQVRJT05fQVA9PWRlbFJlY29yZC0+ZGVsTG9jYXRpb24pe2lmKFpQQl9EQl9PSz09YXRQYl9EZWxBUmVjRnJvbVBibVRhYmxlKAogZGVsUmVjb3JkLGRlbFRpbWUpKXsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7cHJpbnRmKAogIlx4NWJceDUwXHg0Mlx4NWRceDIwXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0NFx4NjVceDZjXHg0Zlx4NmVceDY1XHg3MFx4NjJceDJkXHgyZFx4NjRceDY1XHg2Y1x4MjBceDQxXHg1MFx4MjBceDczXHg3NVx4NjNceDYzXHg2NVx4NzNceDczIiAiXG4iCiApO3JldHVybjt9c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzYVx4NjRceDY1XHg2Y1x4NWZceDYxXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDNhXHg3Mlx4NjVceDZkXHg2Zlx4NzZceDY1XHgyMFx4NzJceDY1XHg2M1x4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4NzBceDYyXHg2ZFx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjQiICJcbiIKICk7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTt9ZWxzZSBpZihaUEJfTE9DQVRJT05fVVNJTT09Ci1kZWxSZWNvcmQtPmRlbExvY2F0aW9uKXtDSEFSIHBiTWF4WygweDE1Zis4MjA1LTB4MjEzYSldPXsoMHg5MWMrNTI5LTB4YjJkKX07CitkZWxSZWNvcmQtPmRlbExvY2F0aW9uKXtDSEFSIHBiTWF4WygweDFkYTYrNDk0LTB4MWY2MildPXsoMHg3YjArMzAzLTB4OGRmKX07CiBzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgscGJNYXgsc2l6ZW9mKHBiTWF4KSk7aWYoKGRlbFJlY29yZC0+ZGVsSW5kZXhbCi0oMHg1ZTMrNDM2MS0weDE2ZWMpXT49KDB4MTAxYys1MjY5LTB4MjRiMCkpJiYoZGVsUmVjb3JkLT5kZWxJbmRleFsKLSgweDIwMTcrMTUxOC0weDI2MDUpXTw9YXRvaShwYk1heCkpKXtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9QQiwKKygweDhiMys0NjU4LTB4MWFlNSldPj0oMHhkMTUrNTkzOS0weDI0NDcpKSYmKGRlbFJlY29yZC0+ZGVsSW5kZXhbCisoMHgxOTU3KzIwNC0weDFhMjMpXTw9YXRvaShwYk1heCkpKXtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9QQiwKIE1PRFVMRV9JRF9BVF9DVEwsTVNHX0NNRF9ERUxFVEVfUEJfUkVRLHNpemVvZihpbnQpLCh1bnNpZ25lZCBjaGFyKikmZGVsUmVjb3JkLT4KLWRlbEluZGV4WygweDEwMys3NDMyLTB4MWUwYildLCgweDkxYisyNDc1LTB4MTJjNikpO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoCi1nX1BiT3B0UnNwLnJlc3VsdCE9KDB4NzE3KzMxMzMtMHgxMzUzKSl7c2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKK2RlbEluZGV4WygweDE4NjYrODExLTB4MWI5MSldLCgweDNjYyszODMyLTB4MTJjNCkpO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoCitnX1BiT3B0UnNwLnJlc3VsdCE9KDB4MTk4Zis1MzItMHgxYmEyKSl7c2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRywKIFpQQl9ERUxfRVJST1IpO31zY19jZmdfc2V0KFpQQl9OVl9VU0lNTUVNT1JZRlVMTCwiXHg2ZVx4NmYiKTt9aWYoWlBCX0RCX09LPT0KIGF0UGJfRGVsQVJlY0Zyb21QYm1UYWJsZShkZWxSZWNvcmQsZGVsVGltZSkpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsCiBaUEJfT1BFUkFURV9TVUMpO3ByaW50ZigKQEAgLTQ2Niw5ICs0NjUsOSBAQAogIlx4NzBceDYyXHgzYVx4NjRceDY1XHg2Y1x4NWZceDYxXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDcyXHg2NVx4NjNceDZmXHg3Mlx4NjRceDNhXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIgIlxuIgogKTsoVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9MT0NBVElPTl9JU19OVUxMKTt9fVZPSUQgCiBhdFdlYl9EZWxNdWx0UGIoVF96UGJfRGVsSW5mbypkZWxSZWNvcmQsc2VtX3Qgc2VtSWQpe0NIQVIgZXJyQ29kZVsKLVpTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4MThjMCsyOTk4LTB4MjQ3Nil9O2ludCBhdFJlcz0oMHgxY2RhKzI4NC0weDFkZjYpOwotU0lOVDMyIGRlbENvdW50PSgweGM0Mys3MTYtMHhmMGYpOyhWT0lEKXNjX2NmZ19zZXQoTlZfUEhPX0RFTCwiIik7bWVtc2V0KCYKLWdfelBiX0RlbFN0YXR1c1VzaW0sKDB4NjU3KzY0OTgtMHgxZmI5KSxzaXplb2YoVF96UGJfRGVsU3RhdHVzTXVsdGlPckFsbCkpOworWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHgxNDMrMzA1OS0weGQzNil9O2ludCBhdFJlcz0oMHgxYjcrMjA4Ny0weDlkZSk7U0lOVDMyIAorZGVsQ291bnQ9KDB4MTY0Nys0MjE4LTB4MjZjMSk7KFZPSUQpc2NfY2ZnX3NldChOVl9QSE9fREVMLCIiKTttZW1zZXQoJgorZ196UGJfRGVsU3RhdHVzVXNpbSwoMHgxMjYzKzUxMy0weDE0NjQpLHNpemVvZihUX3pQYl9EZWxTdGF0dXNNdWx0aU9yQWxsKSk7CiBnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGbGFnPVpQQl9ERUxfTVVMVElfUkVDT1JEX1VTSU07Zm9yKDtkZWxDb3VudDxkZWxSZWNvcmQtPgogZGVsVG90YWw7ZGVsQ291bnQrKyl7c2xvZyhQQl9QUklOVCxTTE9HX0RFQlVHLAogIlx4NzBceDYyXHgzM1x4M2FceDY0XHg2NVx4NmNceDQ5XHg2NFx4NWJceDI1XHg2NFx4NWRceDNkXHgyNVx4NjRceDJjXHg2NFx4NjVceDZjXHg1Zlx4NzBceDYyXHg2ZFx4NWZceDY5XHg2ZVx4NjRceDY1XHg3OFx4NWJceDI1XHg2NFx4NWRceDNkXHgyNVx4NjQiICJcbiIKQEAgLTQ3OSwxNCArNDc4LDE0IEBACiAiXHg3MFx4NjJceDNhXHg3MFx4NjJceDZkXHgzYVx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDc0XHg2OFx4NjVceDIwXHg2OVx4MjhceDI1XHg2NFx4MjlceDIwXHg3Mlx4NjVceDYzXHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHg3MFx4NjJceDZkXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NCIgIlxuIgogLGRlbENvdW50KTtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtKys7Y29udGludWU7fWdfelBiX0RlbFN0YXR1c1VzaW0uCiBkZWFsU3VjY051bSsrO31lbHNlIGlmKFpQQl9MT0NBVElPTl9VU0lNPT1kZWxSZWNvcmQtPmRlbExvY2F0aW9uKXtDSEFSIHBiTWF4WwotKDB4N2RiKzc3OTEtMHgyNjE4KV09eygweDFhNGErMTAyNS0weDFlNGIpfTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgscGJNYXgKLSxzaXplb2YocGJNYXgpKTtpZigoZGVsUmVjb3JkLT5kZWxJbmRleFtkZWxDb3VudF0+PSgweDFjYzcrMTE0My0weDIxM2QpKSYmKAorKDB4MTZjOCsyMzA0LTB4MWY5NildPXsoMHgzMzErNTgxMi0weDE5ZTUpfTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNQVgscGJNYXgKKyxzaXplb2YocGJNYXgpKTtpZigoZGVsUmVjb3JkLT5kZWxJbmRleFtkZWxDb3VudF0+PSgweGVhYSs3ODktMHgxMWJlKSkmJigKIGRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdPD1hdG9pKHBiTWF4KSkpe3ByaW50ZigKICJceDcwXHg2Mlx4MzlceDNhXHg2MVx4NzRceDU3XHg2NVx4NjJceDVmXHg0NFx4NjVceDZjXHg0ZFx4NzVceDZjXHg3NFx4NTBceDYyXHgzYVx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDc0XHg2OFx4NjVceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDI4XHgyNVx4NjRceDI5XHgyMFx4NzJceDY1XHg2M1x4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4NzBceDYyXHg2ZFx4MjBceDc0XHg2MVx4NjJceDZjXHg2NSIgIlxuIgogLGRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdKTtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9QQixNT0RVTEVfSURfQVRfQ1RMLAogTVNHX0NNRF9ERUxFVEVfUEJfUkVRLHNpemVvZihpbnQpLCh1bnNpZ25lZCBjaGFyKikmZGVsUmVjb3JkLT5kZWxJbmRleFtkZWxDb3VudF0KLSwoMHg4MzArNTY5NS0weDFlNmYpKTtzZW1fd2FpdCgmZ19QYl9zZW1faWQpO2lmKGdfUGJPcHRSc3AucmVzdWx0IT0KLSgweDQ5YysxMzc0LTB4OWY5KSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCissKDB4ZTQzKzE2OS0weGVlYykpO3NlbV93YWl0KCZnX1BiX3NlbV9pZCk7aWYoZ19QYk9wdFJzcC5yZXN1bHQhPQorKDB4MTdhKzE5NjItMHg5MjMpKXtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtKys7c2NfY2ZnX3NldCgKIFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IpO31lbHNle2dfelBiX0RlbFN0YXR1c1VzaW0uZGVhbFN1Y2NOdW0rKzsKIHNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDZlXHg2ZiIpO319ZWxzZXtjb250aW51ZTt9KFZPSUQpCiBhdFBiX0RlbFNpbVJlY0Zyb21QYlRhYmxlKGRlbFJlY29yZC0+ZGVsSW5kZXhbZGVsQ291bnRdKTt9ZWxzZXtzbG9nKFBCX1BSSU5ULApAQCAtNDk0LDE0ICs0OTMsMTQgQEAKICJceDcwXHg2Mlx4M2FceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIiAiXG4iCiApOyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX0xPQ0FUSU9OX0lTX05VTEwpO319CiBhdFBiX1NldERlbFN0YXR1c011bHRPckFsbCgpO31UX3pQYl9EYlJlc3VsdCBhdFBiX0RlbFJlY0J5R3JvdXAoVk9JRCl7Ci1UX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO1RfelBiX0FwSW5kZXggaW5kZXg9eygweDE3MTgrMzMxMy0weDI0MDkpfTsKLVNJTlQzMiBpPSgweDNkYSsxNDM4LTB4OTc3KTtyZXN1bHQ9YXRQYl9EZWxSZWNGcm9tUGJtVGFibGVCeUdyb3VwKCZpbmRleCk7aWYoCitUX3pQYl9EYlJlc3VsdCByZXN1bHQ9WlBCX0RCX09LO1RfelBiX0FwSW5kZXggaW5kZXg9eygweDEzOGErMjY5Ni0weDFlMTIpfTsKK1NJTlQzMiBpPSgweDg2OSs1NDYyLTB4MWRiZSk7cmVzdWx0PWF0UGJfRGVsUmVjRnJvbVBibVRhYmxlQnlHcm91cCgmaW5kZXgpO2lmKAogWlBCX0RCX09LIT1yZXN1bHQpeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX0RFTF9FUlJPUik7cmV0dXJuIAogcmVzdWx0O30oVk9JRClzY19jZmdfc2V0KFpQQl9OVl9XUklURV9GTEFHLFpQQl9PUEVSQVRFX1NVQyk7Zm9yKGk9Ci0oMHg0YjkrNjUzOC0weDFlNDIpO2k8PVpQQl9BUF9NQVhfUkVDT1JEO2krKyl7aWYoKDB4MTU5MSsxMDY1LTB4MTliYSkhPWluZGV4LgorKDB4M2ZjKzU0MjctMHgxOTJlKTtpPD1aUEJfQVBfTUFYX1JFQ09SRDtpKyspe2lmKCgweGI3MSsyMTY0LTB4MTNlNSkhPWluZGV4LgogYXBJbmRleFtpXSl7Z196UGJfQXBJbmRleFsoaW5kZXguYXBJbmRleFtpXSldPVBCTV9FUlJPUl9OT1RfRk9VTkQ7fX1yZXR1cm4gCiByZXN1bHQ7fVZPSUQgYXRQYl9EZWxBbGxSZWNzU2ltRGIoVk9JRCl7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09ewotKDB4MThiMCszNjcyLTB4MjcwOCl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHgxNWEyKzI1ODktMHgxZmJlKSwKKygweDM3OCszNDQ1LTB4MTBlZCl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKS0oMHg1YzQrNTQ3OC0weDFiMjkpLAogIlx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDY2XHg3Mlx4NmZceDZkXHgyMFx4MjVceDczXHgyMFx4NzdceDY4XHg2NVx4NzJceDY1XHgyMFx4NGNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgzZFx4MjVceDY0IgogLFpQQl9EQl9QQk1fVEFCTEUsWlBCX0xPQ0FUSU9OX1VTSU0pO2lmKFpQQl9EQl9PSz09YXRQYl9FeGVjRGJTcWwoc3FsLE5VTEwsTlVMTCkKICl7YXRQYl9DbGVhclNpbVBibUluZGV4QXJyYXkoKTtpZihaUEJfREJfT0shPWF0UGJfRXhlY0RiU3FsKApAQCAtNTEwLDI4ICs1MDksMjggQEAKICk7KFZPSUQpc2NfY2ZnX3NldChaUEJfTlZfV1JJVEVfRkxBRyxaUEJfREVMX0VSUk9SKTtyZXR1cm47fShWT0lEKXNjX2NmZ19zZXQoCiBaUEJfTlZfV1JJVEVfRkxBRyxaUEJfT1BFUkFURV9TVUMpO31lbHNleyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsCiBaUEJfREVMX0VSUk9SKTt9fVZPSUQgYXRQYl9EZWxBbGxSZWNzU2ltKFRfelBiX0RlbEluZm8qcGRlbFJlY29yZCxzZW1fdCBzZW1JZCl7Ci1DSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHhkYzArNTAyOC0weDIxNjQpfTtpbnQgYXRSZXM9Ci0oMHgxODkrMjkyMi0weGNmMyk7VUlOVDMyIGk9KDB4MWQyKzc1OS0weDRjOSk7Q0hBUiBzcWxbWlBCX01BWF9CWVRFU19EQl09ewotKDB4MTcyNys0MDItMHgxOGI5KX07VUlOVDMyIGNvdW50PSgweDljOSs3NDU3LTB4MjZlYSk7aWYocGRlbFJlY29yZCE9TlVMTCl7Ci1tZW1zZXQoJmdfelBiX0RlbFN0YXR1c1VzaW0sKDB4MTUwNisyNjQtMHgxNjBlKSxzaXplb2YoVF96UGJfRGVsU3RhdHVzTXVsdGlPckFsbAotKSk7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmxhZz1aUEJfREVMX0FMTF9SRUNPUkRfVVNJTTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCkKLS0oMHhjMzcrNjI3Ni0weDI0YmEpLAorQ0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4N2Y1KzM2MDktMHgxNjBlKX07aW50IGF0UmVzPQorKDB4MTJmYSszODQ5LTB4MjIwMyk7VUlOVDMyIGk9KDB4M2NkKzc5MTEtMHgyMmI0KTtDSEFSIHNxbFtaUEJfTUFYX0JZVEVTX0RCXT17CisoMHgxNWQrNTY3LTB4Mzk0KX07VUlOVDMyIGNvdW50PSgweDE3OCs0OTEzLTB4MTRhOSk7aWYocGRlbFJlY29yZCE9TlVMTCl7bWVtc2V0KAorJmdfelBiX0RlbFN0YXR1c1VzaW0sKDB4MTZlYisyODI2LTB4MjFmNSksc2l6ZW9mKFRfelBiX0RlbFN0YXR1c011bHRpT3JBbGwpKTsKK2dfelBiX0RlbFN0YXR1c1VzaW0uZGVhbEZsYWc9WlBCX0RFTF9BTExfUkVDT1JEX1VTSU07c25wcmludGYoc3FsLHNpemVvZihzcWwpLQorKDB4ZDYyKzM5NjEtMHgxY2RhKSwKICJceDczXHg2NVx4NmNceDY1XHg2M1x4NzRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9VU0lNKTsoVk9JRClhdFBiX0V4ZWNEYlNxbChzcWwsCi1hdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweGYyOCs1ODA1LTB4MjVkNSk8Y291bnQpe0NIQVIgcGJNaW5bCi0oMHhkMDUrMjUzNS0weDE2YmEpXT17KDB4MjJmKzU0MjktMHgxNzY0KX07Q0hBUiBwYk1heFsoMHgyMzBjKzEyNy0weDIzNTkpXT17Ci0oMHhhYmErNDA3MC0weDFhYTApfTtVSU5UMzIgaV9wYk1pbj0oMHhhZTQrNjQzNC0weDI0MDYpO1VJTlQzMiBpX3BiTWF4PQotKDB4ODZjKzU0OTEtMHgxZGRmKTtzY19jZmdfZ2V0KFpQQl9OVl9VU0lNSU5ERVhNSU4scGJNaW4sc2l6ZW9mKHBiTWluKSk7CithdFBiX0RiQ291bnRUYWJsZUxpbmVDYiwmY291bnQpO2lmKCgweDhiZis3MDExLTB4MjQyMik8Y291bnQpe0NIQVIgcGJNaW5bCisoMHgxNzcwKzIxODAtMHgxZmMyKV09eygweDY0NysyNjAwLTB4MTA2Zil9O0NIQVIgcGJNYXhbKDB4NzZhKzEwNTItMHhiNTQpXT17CisoMHgxNTM3KzIwNjgtMHgxZDRiKX07VUlOVDMyIGlfcGJNaW49KDB4MTdjKzkyNjAtMHgyNWE4KTtVSU5UMzIgaV9wYk1heD0KKygweDE3ODArMzc5My0weDI2NTEpO3NjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1JTixwYk1pbixzaXplb2YocGJNaW4pKTsKIHNjX2NmZ19nZXQoWlBCX05WX1VTSU1JTkRFWE1BWCxwYk1heCxzaXplb2YocGJNYXgpKTtpX3BiTWluPWF0b2kocGJNaW4pO2lfcGJNYXg9CiBhdG9pKHBiTWF4KTtpZihpX3BiTWluPlpQQl9TSU1fTUFYX1JFQ09SRHx8aV9wYk1heD5aUEJfU0lNX01BWF9SRUNPUkQpe3ByaW50ZigKICJceDViXHg1MFx4NDJceDVkXHgyMFx4NjFceDc0XHg1MFx4NjJceDVmXHg0NFx4NjVceDZjXHg0MVx4NmNceDZjXHg1Mlx4NjVceDYzXHg3M1x4NTNceDY5XHg2ZFx4MjBceDczXHg2OVx4NmRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1IiAiXG4iCiApO3JldHVybjt9Zm9yKGk9aV9wYk1pbjtpPD1pX3BiTWF4O2krKyl7aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfUEIsCiBNT0RVTEVfSURfQVRfQ1RMLE1TR19DTURfREVMRVRFX1BCX1JFUSxzaXplb2YoaW50KSwodW5zaWduZWQgY2hhciopJmksCi0oMHg0YjUrMjk2LTB4NWRkKSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdCE9Ci0oMHgxOGM5KzMxNjgtMHgyNTI4KSl7Z196UGJfRGVsU3RhdHVzVXNpbS5kZWFsRmFpbE51bSsrO3NjX2NmZ19zZXQoCisoMHgyZTArNzM5LTB4NWMzKSk7c2VtX3dhaXQoJmdfUGJfc2VtX2lkKTtpZihnX1BiT3B0UnNwLnJlc3VsdCE9CisoMHg4NTkrMzI1OS0weDE1MTMpKXtnX3pQYl9EZWxTdGF0dXNVc2ltLmRlYWxGYWlsTnVtKys7c2NfY2ZnX3NldCgKIFpQQl9OVl9XUklURV9GTEFHLFpQQl9ERUxfRVJST1IpO31lbHNle2dfelBiX0RlbFN0YXR1c1VzaW0uZGVhbFN1Y2NOdW0rKzsKIHNjX2NmZ19zZXQoWlBCX05WX1VTSU1NRU1PUllGVUxMLCJceDZlXHg2ZiIpO319c25wcmludGYoc3FsLHNpemVvZihzcWwpLQotKDB4NmIrNjc4NS0weDFhZWIpLAorKDB4YzdiKzI2NjAtMHgxNmRlKSwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDI1XHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVx4MjBceDRjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4M2RceDI1XHg2NCIKICxaUEJfREJfUEJNX1RBQkxFLFpQQl9MT0NBVElPTl9VU0lNKTtpZihaUEJfREJfT0s9PWF0UGJfRXhlY0RiU3FsKHNxbCxOVUxMLE5VTEwpCiApeyhWT0lEKXNjX2NmZ19zZXQoWlBCX05WX1dSSVRFX0ZMQUcsWlBCX09QRVJBVEVfU1VDKTthdFBiX0NsZWFyU2ltUGJtSW5kZXhBcnJheQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3J0Yy1zZXJ2aWNlL3J0Yy1zZXJ2aWNlLmMgYi9hcC9hcHAvenRlX2NvbW0vcnRjLXNlcnZpY2UvcnRjLXNlcnZpY2UuYwppbmRleCBkOWRiMjAxLi5iZGE0ZDkzIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vcnRjLXNlcnZpY2UvcnRjLXNlcnZpY2UuYworKysgYi9hcC9hcHAvenRlX2NvbW0vcnRjLXNlcnZpY2UvcnRjLXNlcnZpY2UuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgInJ0Yy1zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiaG90cGx1Zy5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgInB1Yl9kZWJ1Z19pbmZvLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCB2YXJpYWJsZSBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKgpAQCAtNDEwLDYgKzQxMSw4IEBACiAgICAgewogICAgICAgICBzbG9nKFJUQ19QUklOVCwgU0xPR19FUlIsICJoYW5kbGVfc250cF91cGRhdGUgaXMgZmFpbCxyZXQ6JWQgXG4iLCByZXQpOwogICAgIH0KKwlzY19kZWJ1Z19pbmZvX3JlY29yZCgiYXBfc250cCIsICJzbnRwIHRpbWUgc3luY2hyb25pemF0aW9uIHN1Y2Nlc3NmdWwhXG4iKTsKKwkKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2NvZGUuYyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19jb2RlLmMKaW5kZXggYWI1ZDdhYy4uZTRmMTMyMiAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2NvZGUuYworKysgYi9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfY29kZS5jCkBAIC02LDY2NCArNiw2NjIgQEAKICNpZmRlZiBXSU4zMg0KICNpbmNsdWRlIDx3Y2hhci5oPg0KICNlbmRpZg0KLSNkZWZpbmUgICAgIE5PTl9HU00gICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTA1NCsxNDI0LTB4MTVjNCkNCisjZGVmaW5lICAgICBOT05fR1NNICAgICAgICAgICAgICAgICAgICAgICAgICgweGRhOSsxMi0weGQ5NSkNCiAjZGVmaW5lICAgICBOT05fR1NNX1AgICAgICAgICAgICAgICAgICAgICAgIE5PTl9HU00NCiBleHRlcm4gVF96VWZpU21zX0NvbmNhdEluZm8gZ196VWZpU21zX0NvbmNhdFNtcztzdGF0aWMgY29uc3Qgd21zX3VkaF9zX3R5cGUqCi1jb25zdF9oZWFkZXI7Y2hhciBnX3pVZmlTbXNfRGlnQXNjTWFwWygweDE5OCs4NzAxLTB4MjM4NSldPXsKLSgoY2hhcikoMHhlZjkrNDU1LTB4MTA5MCkpLCgoY2hhcikoMHg2ZjArNDU1Ny0weDE4OGMpKSwKLSgoY2hhcikoMHgxMjA2KzM5MjItMHgyMTI2KSksKChjaGFyKSgweGE1ZCs3MTEwLTB4MjVmMCkpLAotKChjaGFyKSgweDE2Y2IrMjM2OC0weDFmZDcpKSwoKGNoYXIpKDB4YWU2KzI1MzktMHgxNDljKSksCi0oKGNoYXIpKDB4MjA1MisxMDQzLTB4MjQyZikpLCgoY2hhcikoMHg1YjYrNjAxMy0weDFjZmMpKSwKLSgoY2hhcikoMHhhNzIrMTMxMy0weGY1YikpLCgoY2hhcikoMHhjYys3NTc4LTB4MWUyZCkpLAotKChjaGFyKSgweDFlOCs3Nzk3LTB4MjAxYykpLCgoY2hhcikoMHhiNDErNTU3Mi0weDIwYzMpKSwKLSgoY2hhcikoMHhlOGErNjEyMi0weDI2MzEpKSwoKGNoYXIpKDB4MTVlMysyNTY3LTB4MWZhNikpLAotKChjaGFyKSgweDFkYzgrMTkyNy0weDI1MGEpKSwoKGNoYXIpKDB4MThiMCsyMjM4LTB4MjEyOCkpfTtleHRlcm4gU01TX1BBUkFNIAotZ196VWZpU21zX1NlbmRpbmdTbXM7ZXh0ZXJuIFVJTlQxNiBnX3pVZmlTbXNfSXNMYW5ndWFnZVNoaWZ0O2V4dGVybiBpbnQgCi1nX3pVZmlTbXNfTGFuZ3VhZ2U7c3RhdGljIGludCBTZXJpYWxpemVOdW1iZXJzX3Ntcyhjb25zdCBjaGFyKnBTcmMsY2hhcipwRHN0LGludAotIG5TcmNMZW5ndGgpO2NvbnN0IHVuc2lnbmVkIHNob3J0IGdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW109ewotKChjaGFyKSgweDk0NCsxODk2LTB4MTA4YykpLCgoY2hhcikoMHgxM2JmKzIzMDMtMHgxYzllKSksCi0oKGNoYXIpKDB4ODQyKzc2NjYtMHgyNjE0KSksKChjaGFyKSgweDE1YTYrNDMxMy0weDI2NWYpKSwKLSgoY2hhcikoMHgxMDExKzIyMTgtMHgxODliKSksKChjaGFyKSgweGE3Yis3MTQ1LTB4MjY0NCkpLAotKChjaGFyKSgweDFiYzUrMjUyMC0weDI1N2QpKSwoKGNoYXIpKDB4MmYzKzQzMDEtMHgxM2EwKSksCi0oKGNoYXIpKDB4ZGY4KzIwNDctMHgxNWQ3KSksKChjaGFyKSgweDNmNis2OTUtMHg2OGQpKSwKLSgoY2hhcikoMHg2M2MrNTA2MS0weDE5ZTEpKSwoKGNoYXIpKDB4ZjcyKzE5LTB4ZjY1KSksCi0oKGNoYXIpKDB4MTcxMCsxOTQ5LTB4MWU4ZCkpLCgoY2hhcikoMHgxODg0KzE5MTUtMHgxZmRmKSksCi0oKGNoYXIpKDB4YTQ5KzY2NjYtMHgyNDMzKSksKChjaGFyKSgweGRhMiszNTk3LTB4MWI4ZikpLAotKChjaGFyKSgweGUxZCsyNzY5LTB4MThjZSkpLCgoY2hhcikoMHhhMGIrNTU2OS0weDFmYWMpKSwKLSgoY2hhcikoMHgxYjMrNzkyNy0weDIwOGEpKSwoKGNoYXIpKDB4MWIyZCsyNzkzLTB4MjVmNikpLAotKChjaGFyKSgweDg3OSszMDAxLTB4MTQxMikpLCgoY2hhcikoMHgzZGIrMjctMHgzZDYpKSwoKGNoYXIpKDB4Nzc2KzYwODctMHgxZjFkKSkKLSwoKGNoYXIpKDB4MTJjMisxOTEzLTB4MWExYikpLCgoY2hhcikoMHgxMTdhKzUxNjEtMHgyNTgzKSksCi0oKGNoYXIpKDB4YjErODE2Mi0weDIwNzMpKSwoKGNoYXIpKDB4Yzk2KzQ4OS0weGU1ZikpLAotKChjaGFyKSgweDEwMTgrMTg2Mi0weDE3M2UpKSwoKGNoYXIpKDB4NGM5KzQyMTUtMHgxNTIwKSksCi0oKGNoYXIpKDB4MzI1KzI2ODEtMHhkN2UpKSwoKGNoYXIpKDB4MTA3MCsyMzc0LTB4MTk5NikpLAotKChjaGFyKSgweDlmYys0MzU4LTB4MWFlMikpLCgoY2hhcikoMHgxYzU5KzE3My0weDFjZTYpKSwKLSgoY2hhcikoMHgxOTk1KzE5NDktMHgyMTExKSksKDB4MWQ2KzgxNjItMHgyMTk2KSwoKGNoYXIpKDB4YjkwKzMyNjYtMHgxODJmKSksCi0oMHg5MzkrNTU1NC0weDFlZTkpLCgoY2hhcikoMHgyOGIrMzUwNS0weDEwMTcpKSwoKGNoYXIpKDB4MTI3OSs0MDE4LTB4MjIwNSkpLAotKDB4NWJiKzMzODAtMHgxMmM4KSwoKGNoYXIpKDB4MjQ4KzM2MDMtMHgxMDMzKSksKChjaGFyKSgweDEyZDMrMjY1LTB4MTNiMykpLAotKChjaGFyKSgweDExNjArMzY3NC0weDFmOTApKSwoKGNoYXIpKDB4MTRiYSs0OTUtMHgxNjdlKSksCi0oKGNoYXIpKDB4MzNjKzUxOTUtMHgxNzViKSksKChjaGFyKSgweGY1ZiszOTEwLTB4MWU3OCkpLAotKChjaGFyKSgweGJjMSs1MzgwLTB4MjA5NykpLCgoY2hhcikoMHgxNWQrNDEyMy0weDExNDkpKSwKLSgoY2hhcikoMHg3ZjUrNjg5OS0weDIyYjgpKSwoKGNoYXIpKDB4MWYyNis0NTgtMHgyMGJmKSksCi0oKGNoYXIpKDB4YTIrOTYyMi0weDI2MDYpKSwoKGNoYXIpKDB4YTY5KzIyNjAtMHgxMzBhKSksCi0oKGNoYXIpKDB4YmU4KzQwNjgtMHgxYjk4KSksKChjaGFyKSgweDlmMis1MzM1LTB4MWU5NCkpLAotKChjaGFyKSgweDgwMSs3OTY3LTB4MjZlYSkpLCgoY2hhcikoMHhjNGYrMzcyNS0weDFhYTUpKSwKLSgoY2hhcikoMHgxNTA0KzkzMy0weDE4NzEpKSwoKGNoYXIpKDB4MTc1YSszNjQ2LTB4MjU1ZikpLAotKChjaGFyKSgweDQ5ZCs4ODMtMHg3ZDYpKSwoKGNoYXIpKDB4MTRkNisyNTUtMHgxNTlhKSksKChjaGFyKSgweGZiNis4Ni0weGZkMCkpLAotKChjaGFyKSgweGY0ZCszOTMtMHgxMDk5KSksKChjaGFyKSgweDFmNis3ODQwLTB4MjA1OCkpLAotKChjaGFyKSgweGZiYysxNjk3LTB4MTYxZSkpLCgweDIzOTErNTA5LTB4MjU4ZSksKChjaGFyKSgweDZkKzE3NTEtMHg3MDMpKSwKLSgoY2hhcikoMHhhY2ErNDg2LTB4YzZlKSksKChjaGFyKSgweDFiMiszMzQ5LTB4ZTg0KSksKChjaGFyKSgweDRkNSs3MDI1LTB4MjAwMikpCi0sKChjaGFyKSgweGRjMSszMDg2LTB4MTk4YSkpLCgoY2hhcikoMHg5ZTErNzEwNi0weDI1NWQpKSwKLSgoY2hhcikoMHg5OTQrMTk3OS0weDExMDgpKSwoKGNoYXIpKDB4MWI5MisyNTQ0LTB4MjUzYSkpLAotKChjaGFyKSgweDExYTQrMzE0MS0weDFkYTApKSwoKGNoYXIpKDB4MjI3KzM3Ny0weDM1NikpLAotKChjaGFyKSgweDIwOGErMTQ3NC0weDI2MDEpKSwoKGNoYXIpKDB4MTRkZis0MTg3LTB4MjRlZSkpLAotKChjaGFyKSgweDZlYysxNTIxLTB4YzkwKSksKChjaGFyKSgweDIxNyszNi0weDFlZCkpLCgoY2hhcikoMHhjNjArNDQ5Ni0weDFkYTEpKSwKLSgoY2hhcikoMHg3ODIrNDM3NS0weDE4NDkpKSwoKGNoYXIpKDB4MTM3NSs4NTEtMHgxNjc3KSksCi0oKGNoYXIpKDB4MTMzYisyNTY2LTB4MWNlZikpLCgoY2hhcikoMHhlOGErMjY3Ni0weDE4YWIpKSwKLSgoY2hhcikoMHgyMDAyKzE0NC0weDIwM2UpKSwoKGNoYXIpKDB4ZDM3KzE0MDgtMHgxMjYyKSksCi0oKGNoYXIpKDB4MTlhKzI4ODItMHhjODYpKSwoKGNoYXIpKDB4NjQ2KzEwMTUtMHg5ZTYpKSwKLSgoY2hhcikoMHhlNjArMjAwOS0weDE1ZTEpKSwoKGNoYXIpKDB4OWMzKzY1MDktMHgyMmQ3KSksCi0oKGNoYXIpKDB4MTc4Zis5Mi0weDE3OTEpKSw2OTcyLDY5NTksNjk3NCwoMHgyNDczKzcwOC0weGMyMyksKDB4ODc3KzUzNTMtMHgxZDRmKQotLCgoY2hhcikoMHgxNjY1KzkyLTB4MTZhMSkpLCgoY2hhcikoMHgxOGFmKzUxMS0weDFhNGQpKSwKLSgoY2hhcikoMHhmNTMrMjUyMS0weDE4Y2EpKSwoKGNoYXIpKDB4ZjkwKzU3NDQtMHgyNTlkKSksCi0oKGNoYXIpKDB4MTY4OSszMDUwLTB4MjIwZikpLCgoY2hhcikoMHg0MTQrMzM4Ni0weDEwZTkpKSwKLSgoY2hhcikoMHhhNzQrMzMxLTB4YjU5KSksKChjaGFyKSgweDFjZGErMjE5OC0weDI1MDkpKSwKLSgoY2hhcikoMHgxOTBkKzM0NjUtMHgyNjJlKSksKChjaGFyKSgweGI1OSszMDgzLTB4MTZmYikpLAotKChjaGFyKSgweDE4YTUrMTM5MC0weDFkYTkpKSwoKGNoYXIpKDB4MmNiKzkxMTUtMHgyNWZiKSksCi0oKGNoYXIpKDB4ZTgyKzI0MjktMHgxNzkzKSksKChjaGFyKSgweGNiYysxODg4LTB4MTNhZikpLAotKChjaGFyKSgweGQ3NisyNDYtMHhkZmUpKSwoKGNoYXIpKDB4MTEwNSsyNzgzLTB4MWI3NSkpLAotKChjaGFyKSgweGFmMis0ODEzLTB4MWQ0ZikpLCgoY2hhcikoMHg3N2YrMTA5Mi0weGI1MikpLAotKChjaGFyKSgweDEyMWIrMjI4LTB4MTI4ZCkpLCgoY2hhcikoMHg3ZTYrNjE2OS0weDFmOGMpKSwKLSgoY2hhcikoMHgxZGY0KzEyMTItMHgyMjNjKSksKChjaGFyKSgweDE3ZjcrNTA2LTB4MTk3YykpLAotKChjaGFyKSgweDIwN2MrMTE1OC0weDI0OGMpKSwoKGNoYXIpKDB4MWVhKzE1OTYtMHg3YWYpKSwKLSgoY2hhcikoMHg5MGIrMzA4My0weDE0OWUpKSwoKGNoYXIpKDB4MTgwNCsxOTUtMHgxODRlKSksCi0oKGNoYXIpKDB4YTExKzQzMTItMHgxYTZmKSksKDB4MWZkMSs0MDk2LTB4MTRhOSksKDB4MjI1NSsxOTQ2LTB4ZWFmKSw2OTUzLAotKDB4MjFlNis2OTcyLTB4MjFlNSksKChjaGFyKSgweDEwMDUrMjA3My0weDE3ZmUpKSwoKGNoYXIpKDB4OTYzKzExNTYtMHhkYzcpKSwKLSgoY2hhcikoMHgxNjQwKzI4NzgtMHgyMTVlKSksKChjaGFyKSgweDQ2KzQ3MDEtMHgxMjgzKSksCi0oKGNoYXIpKDB4MWMxNCsxMjA4LTB4MjBhYykpLCgoY2hhcikoMHgxNzExKzIzNTItMHgyMDIxKSksCi0oKGNoYXIpKDB4MTNiKzU1MzQtMHgxNmI5KSksKChjaGFyKSgweDE1NmErMTM2OC0weDFhYTIpKSwKLSgoY2hhcikoMHhlZTIrNTkwMi0weDI1ZDApKSwoKGNoYXIpKDB4MjA1ZCs1MDMtMHgyMjM0KSksCi0oKGNoYXIpKDB4YTk0KzM4NTAtMHgxOTdlKSksKChjaGFyKSgweGE0Zis3MDQtMHhjZWYpKSwKLSgoY2hhcikoMHgxNzI4KzE4NDgtMHgxZTQwKSksKChjaGFyKSgweGE3Zis1MzExLTB4MWYxZSkpLAotKChjaGFyKSgweDExZTYrNDE3My0weDIyMTMpKSwoKGNoYXIpKDB4NTArNTU1Ny0weDE1ZTUpKSwKLSgoY2hhcikoMHgxMDhmKzU3NDQtMHgyNmRmKSksKChjaGFyKSgweDVhMCszMDIxLTB4MTE0ZCkpLAotKChjaGFyKSgweDQ5NCszMDU1LTB4MTA2MykpLCgoY2hhcikoMHgyMTY3KzMzMS0weDIyOTIpKSwKLSgoY2hhcikoMHgxZDE1KzkwOS0weDIwODIpKSwoKGNoYXIpKDB4MzgrMjAyMC0weDdmYykpLAotKChjaGFyKSgweDFhYjIrOTgwLTB4MWU2NikpLCgoY2hhcikoMHg0OWYrNjczOC0weDFlZDEpKSwKLSgoY2hhcikoMHgxMGRkKzUyNS0weDEyY2EpKSwoKGNoYXIpKDB4MzA2KzgyMjUtMHgyMzA3KSksCi0oKGNoYXIpKDB4ZWZhKzI4NDQtMHgxOWY2KSksKChjaGFyKSgweGI1Zis0MjE5LTB4MWJiYSkpLAotKChjaGFyKSgweDYyNCszMzI3LTB4MTMwMykpLCgoY2hhcikoMHgxZTU5KzI0Ni0weDFmMmYpKSwKLSgoY2hhcikoMHgxZDErNTAxMS0weDE1NDQpKSwoKGNoYXIpKDB4MTAzOCszMDcxLTB4MWMxNykpLAotKChjaGFyKSgweDc0Yys3NDczLTB4MjQ1ZCkpLCgoY2hhcikoMHg2ODkrNzMwOS0weDIyZjYpKSwoMHhkNzQrMjQ0MS0weDE2YmQpLAotKChjaGFyKSgweGQyYSs5MjMtMHgxMGE1KSksKDB4MTc4NyszNjQzLTB4MjVjMSksKDB4YTBiKzc0Ny0weGNkMiksCi0oMHg2ODkrMzQwMS0weDEzY2YpLCgoY2hhcikoMHgxNjA0KzI0OTEtMHgxZjlmKSksKDB4NTc2KzY5LTB4NTVjKSwKLSgoY2hhcikoMHhjMjkrNTc4Ny0weDIyYTQpKSwoKGNoYXIpKDB4NGE3KzcyNTUtMHgyMGRlKSksCi0oKGNoYXIpKDB4M2M1KzQyNC0weDU0ZCkpLCgoY2hhcikoMHhlODArNzA1LTB4MTEyMSkpLCgoY2hhcikoMHhhNjUrMjA4Ni0weDEyNmIpKQotLCgoY2hhcikoMHhkZjMrMzIwOC0weDFhNWIpKSwoKGNoYXIpKDB4NGM2Kzc2MzctMHgyMjdiKSksCi0oKGNoYXIpKDB4NGMxKzQ0MTctMHgxNWUyKSksKChjaGFyKSgweGJhNSszMTQxLTB4MTdjYSkpLAotKChjaGFyKSgweDE1MzcrMTY1My0weDFiOGMpKSwoKGNoYXIpKDB4NmRmKzEwMzUtMHhhY2EpKSwKLSgoY2hhcikoMHgxMDBhKzM0Mi0weDExNDApKSwoKGNoYXIpKDB4NDYyKzM1NjAtMHgxMjJhKSksCi0oKGNoYXIpKDB4MTQ2MCs5NTgtMHgxN2ZlKSksKChjaGFyKSgweDQ3KzU1NzItMHgxNWViKSksCi0oKGNoYXIpKDB4MTkzKzg5MzEtMHgyNDU2KSksKDB4MTU5OCsyMzgxLTB4MWVkYSksKChjaGFyKSgweDUwZCs3NzMwLTB4MjMxZikpLAotKChjaGFyKSgweDc0OSszNzg1LTB4MTVmMikpLCgoY2hhcikoMHg1ODUrNTU4NC0weDFiMzUpKSwKLSgoY2hhcikoMHg4YzYrOTQ5LTB4YzViKSksKChjaGFyKSgweDVkNCs3NDgwLTB4MjJlYykpLAotKChjaGFyKSgweDFhZDgrMTg2OC0weDIyMDQpKSwoMHhlMDIrMTExLTB4ZTExKSwoKGNoYXIpKDB4ZWM3KzQ0NjktMHgyMDFjKSksCi0oKGNoYXIpKDB4MTExMiszNTI5LTB4MWViYikpLCgoY2hhcikoMHgyMWQrNzU5OC0weDFmYWIpKSwKLSgoY2hhcikoMHgxZWU2KzEyODgtMHgyM2NlKSksKDB4MTJiMis5NDYtMHgxNjA5KSwoMHgxODg3KzE4NTItMHgxZmI1KSwKLSgweDE0NTYrNDA5Ny0weDI0M2IpLCgweDM0NSs3MTQxLTB4MWYyMSksKChjaGFyKSgweDIwYys2NTctMHg0N2QpKSwKLSgweDc4ZCs3MDQ4LTB4MjJmNiksKChjaGFyKSgweDE3YSs2OTMxLTB4MWM2ZCkpLCgoY2hhcikoMHhiOGMrNzM0LTB4ZTRhKSksCi0oKGNoYXIpKDB4ZmFhKzQzNTgtMHgyMDkwKSksKChjaGFyKSgweDFlNDIrMTc4MS0weDI1MTcpKSwKLSgoY2hhcikoMHg1MWYrMjA0LTB4NWNiKSksKChjaGFyKSgweDhiNCs0OTkyLTB4MWMxNCkpLAotKChjaGFyKSgweDFiZTArMjI5OS0weDI0YmIpKSwoMHg5ZmIrMTY1MS0weDEwMTEpLCgoY2hhcikoMHg4OTMrMjYzMS0weDEyYmEpKSwKLSgoY2hhcikoMHg5OTErMTg1Ny0weDEwYjIpKSwoKGNoYXIpKDB4MTI2Nis0NTktMHgxNDExKSksCi0oKGNoYXIpKDB4YzIyKzM1MjktMHgxOWNiKSksKDB4NTMyKzMyOTAtMHgxMWIwKSwoKGNoYXIpKDB4MjFhKzY2MzEtMHgxYmUxKSksCi0oKGNoYXIpKDB4ZjI1KzExNDItMHgxMzdiKSksKChjaGFyKSgweDM1MCs0Mzg1LTB4MTQ1MSkpLAotKChjaGFyKSgweDQxYSs4MTQ1LTB4MjNjYikpLCgoY2hhcikoMHgxZTEyKzIyODItMHgyNmRjKSksKDB4MmYyKzM3OC0weDQwZSksCi0oKGNoYXIpKDB4ZDYyKzIyMDgtMHgxNWUyKSksKChjaGFyKSgweDE0MTcrMTMyNC0weDE5MjMpKSwoMHg0ZTArODAwNS0weDI0MDcpLAotKDB4MTg0NCszMDg0LTB4MjNkMSksKChjaGFyKSgweGZjKzk1MTQtMHgyNjA2KSksKChjaGFyKSgweDgxKzI5MTAtMHhiYmYpKSwKLSgoY2hhcikoMHhkYis5NS0weDExYSkpLCgweDVmZCsyNTI1LTB4ZjVmKSwoMHg4N2ErMzEwMy0weDE0OGEpLAotKDB4ODVjKzY3NTQtMHgyMmExKSwoKGNoYXIpKDB4YjUwKzI3OS0weGM0NykpLCgweDEwYjgrNTAxOC0weDI0NGUpLAotKDB4NWJkKzIyMzktMHhlNzcpLCgoY2hhcikoMHg4MjErNTIxNi0weDFjNjEpKSwoKGNoYXIpKDB4MThmKzkzMzAtMHgyNWUxKSksCi0oMHgxNWMyKzk1NC0weDE5NzUpLCgoY2hhcikoMHg1OTYrODM2NC0weDI2MjIpKSwoKGNoYXIpKDB4MTc5ZiszMjY2LTB4MjQ0MSkpLAotKChjaGFyKSgweDNhYisyODUyLTB4ZWFmKSksKChjaGFyKSgweDIyYWMrMTAxNS0weDI2ODMpKSwoMHg0MDkrNTQ0NS0weDE4ZDEpLAotKDB4YjhhKzMyOTQtMHgxODYwKSwoKGNoYXIpKDB4M2IyKzY2NC0weDYyYSkpLCgoY2hhcikoMHgxNjVmKzQyNTktMHgyNmUyKSksCi0oKGNoYXIpKDB4MjFjZCs2NDAtMHgyNDJkKSksKDB4ZGJhKzQ2OTctMHgxZjk3KSwoKGNoYXIpKDB4M2JiKzc1ODEtMHgyMTM4KSksCi0oMHgxMmFmKzE2MDMtMHgxOGU2KSwoMHgzZDkrNDM1My0weDE0ZDQpLCgoY2hhcikoMHgxNDc1KzE2ODMtMHgxYWU4KSksCi0oKGNoYXIpKDB4MjE4KzkwNi0weDU4MikpLCgweDExNys0NDEwLTB4MTFkMyksKChjaGFyKSgweDY2NCsyMDAyLTB4ZTE2KSksCi0oKGNoYXIpKDB4MWUzOSs4OTEtMHgyMTk0KSksKChjaGFyKSgweDVkNCszOTA2LTB4MTRmNikpLH07Y29uc3QgdW5zaWduZWQgc2hvcnQgCi16dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4MTg5ZisxNDQ5LTB4MWU0NildPXt7Ci0oMHgxODdiKzI1NjItMHgyMjc0KSwoMHgyNjUrOTUzMy0weDI2YmIpfSx7KDB4MTIyNiszMDA3LTB4MWRkYiksCi0oMHgxMzYrODU2Mi0weDIyOWMpfSx7KDB4MjQ0KzUzNjUtMHgxNzJjKSwoMHgyYmYrMzY1My0weDEwZjcpfSx7Ci0oMHgxNDU3KzI0MzAtMHgxZGMxKSwoMHhiMzYrNjU1LTB4ZDY3KX0seygweDkwMSs1MTQzLTB4MWNmMCksKDB4YWIrMjE0My0weDg4Zil9LAoteygweDQ4Nis3NzcyLTB4MjJiOSksKDB4ODQzKzg5Ni0weGI0Nil9LHsoMHgxZmE1KzEyNDItMHgyNDUwKSwKLSgweDk5Mys2NjI4LTB4MjMxYil9LHsoMHg1MTUrNTcyNy0weDFiMzgpLCgweGMxNSsxNTgzLTB4MTFlOSl9LHsKLSgweDE2MDMrMTQ5MS0weDFiOTkpLCgweDk2MyszODUtMHhhNjYpfSx7KDB4NGMwKzc4MTUtMHgyMzA5KSwoMHg1MDArNTIwOC0weDE4ZmIpCi19LHsoMHg2ODcrMjg2OS0weDExN2MpLCgweDE4YzIrMjE2NS0weDIwYmIpfSx7KDB4NzE0KzI3LTB4NmVlKSwKLSgweDc1NCs2NDY4LTB4MWZkNyl9LHsoMHg0NzArNjQzOS0weDFkNGUpLCgweDE5NTIrMTkzOC0weDIwMTcpfSx7Ci0oMHhjZGQrMTUwNy0weDEyNzEpLCgweDFiN2IrNDUzLTB4MWM2ZCl9LHsoMHgxMDM0KzQzLTB4MTAwYSksCi0oMHgxM2NiKzEyMDEtMHgxN2EyKX0seygweDEyMzYrNTMwNi0weDI2OGYpLCgweDFkNysyMDU1LTB4OGZkKX0sewotKDB4MWNmYisyNTY5LTB4MjY5ZiksKDB4MjMzMis5NDAtMHg2MzIpfSx7KDB4OWQwKzUwODUtMHgxZDQ0KSwKLSgweDEyM2QrNTM4Ni0weDI2NWEpfSx7KDB4MWFhYis5NzAtMHgxZTA2KSwoMHhjODIrNDkwNi0weDFlYjkpfSx7Ci0oMHgyMzQyKzk1NC0weDI2ODcpLCgweDMwZCsyNzE2LTB4Y2FmKX0sfTtjb25zdCB1bnNpZ25lZCBzaG9ydCAKLVVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX1VDU1tdWygweDRmKzQ0MTgtMHgxMThmKV09e3soMHgxZmRiKzE4MDItMHgyNmQ1KSwKLSgweDE1YzErNDAxOC0weDIxZGYpfSx7KDB4MzZkKzE2NDgtMHg5Y2IpLCgweDExZjkrMTcwMC0weDE0ZjcpfSx7Ci0oMHg1NjErNDcyOC0weDE3YzYpLCgweDdjNysyNDQ1LTB4ZGMxKX0seygweDI2MDArMTk4LTB4MjZiMiksKDB4N2RjKzU0MzctMHgxOTdlKQotfSx7KDB4NjUwKzczNTUtMHgyMmY2KSwoMHgxNTgwKzIzMjMtMHgxYWVhKX0seygweDEzMTMrMTUxNS0weDE4ZTgpLAotKDB4YzVhKzc1NjctMHgyNjQ5KX0seygweGU1KzQ2NDktMHgxMmY3KSwoMHgxNjBiKzkyMy0weDE1ZmUpfSx7Ci0oMHhjYjYrNTM0OS0weDIxODMpLCgweDU0Yys4OTI2LTB4MjQ4Nyl9LHsoMHg5OTIrMzcwOC0weDE3ZjUpLAotKDB4ZGYzKzIzNzItMHgxMzlmKX0seygweDdkMSs0NDU0LTB4MTkxZCksKDB4MWQ5OCs3NjYtMHgxY2Y4KX0sfTtjb25zdCB1bnNpZ25lZCAKLWNoYXIgVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW109e05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg0YzcrNDg4NS0weDE3ZDIpLE5PTl9HU00sTk9OX0dTTSwKLSgweDViNSs3NzIwLTB4MjNkMCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK2NvbnN0X2hlYWRlcjtjaGFyIGdfelVmaVNtc19EaWdBc2NNYXBbKDB4Yzk1KzQ5OTUtMHgyMDA4KV09eworKChjaGFyKSgweGIzMys2NDc5LTB4MjQ1MikpLCgoY2hhcikoMHgxMGMrMzQyMy0weGUzYSkpLAorKChjaGFyKSgweGZkMSsyMDI5LTB4MTc4YykpLCgoY2hhcikoMHgyOWIrMTk4My0weGEyNykpLAorKChjaGFyKSgweDIzM2ErMjM4LTB4MjNmNCkpLCgoY2hhcikoMHgxMWI3KzEwODUtMHgxNWJmKSksCisoKGNoYXIpKDB4MTllZCszMDM1LTB4MjU5MikpLCgoY2hhcikoMHg0MTYrODI5Ni0weDI0NDcpKSwKKygoY2hhcikoMHg3OGMrNzQ0OC0weDI0NmMpKSwoKGNoYXIpKDB4NTI0KzM2Ni0weDY1OSkpLCgoY2hhcikoMHgxZGErMjE2MC0weGEwOSkpCissKChjaGFyKSgweDk5NCsxMDQ5LTB4ZDZiKSksKChjaGFyKSgweDg2NSs2NzA0LTB4MjI1MikpLAorKChjaGFyKSgweDE4MzkrMjc2NC0weDIyYzEpKSwoKGNoYXIpKDB4YzQwKzE1OTUtMHgxMjM2KSksCisoKGNoYXIpKDB4MWYzOSs0NDItMHgyMGFkKSl9O2V4dGVybiBTTVNfUEFSQU0gZ196VWZpU21zX1NlbmRpbmdTbXM7ZXh0ZXJuIFVJTlQxNgorIGdfelVmaVNtc19Jc0xhbmd1YWdlU2hpZnQ7ZXh0ZXJuIGludCBnX3pVZmlTbXNfTGFuZ3VhZ2U7c3RhdGljIGludCAKK1NlcmlhbGl6ZU51bWJlcnNfc21zKGNvbnN0IGNoYXIqcFNyYyxjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpO2NvbnN0IHVuc2lnbmVkIAorc2hvcnQgZ196VWZpU21zX0FzY2lpVG9Hc21kZWZhdWx0VGFibGVbXT17KChjaGFyKSgweDIyYSszMDg2LTB4ZTE4KSksCisoKGNoYXIpKDB4N2QrNjk3My0weDFiOWEpKSwoKGNoYXIpKDB4MWQ1MisxMDMwLTB4MjEzOCkpLAorKChjaGFyKSgweDE5NGQrMjg4Ny0weDI0NzQpKSwoKGNoYXIpKDB4MTNjMSsxMTktMHgxNDE4KSksCisoKGNoYXIpKDB4MTY4KzYxNTItMHgxOTUwKSksKChjaGFyKSgweGRiNisxNzIwLTB4MTQ0ZSkpLAorKChjaGFyKSgweDFhNDErMzM3LTB4MWI3MikpLCgoY2hhcikoMHgyMzBjKzU4MC0weDI1MzApKSwKKygoY2hhcikoMHgxMjUzKzI3NjUtMHgxZDAwKSksKChjaGFyKSgweDE3OCsyMjAxLTB4OWYxKSksCisoKGNoYXIpKDB4MTIwMys0Mzg2LTB4MjMwNSkpLCgoY2hhcikoMHg1M2YrMTE4LTB4NTk1KSksCisoKGNoYXIpKDB4MTUzZisyMzk3LTB4MWU3YykpLCgoY2hhcikoMHhlNjYrMjMxNy0weDE3NTMpKSwKKygoY2hhcikoMHg3NmErNTQxMC0weDFjNmMpKSwoKGNoYXIpKDB4MTI0YSsyODkxLTB4MWQ3NSkpLAorKChjaGFyKSgweDMxNSszNTAyLTB4MTBhMykpLCgoY2hhcikoMHgxZmRmKzYyNS0weDIyMzApKSwKKygoY2hhcikoMHg5OGQrNjQ1MC0weDIyOWYpKSwoKGNoYXIpKDB4MWY4KzU2OC0weDQxMCkpLAorKChjaGFyKSgweDNmNSs4MzI3LTB4MjQ1YykpLCgoY2hhcikoMHgxMzI0KzM4ODUtMHgyMjMxKSksCisoKGNoYXIpKDB4NzdjKzQ5MjgtMHgxYTljKSksKChjaGFyKSgweGQwYysyNzExLTB4MTc4MykpLAorKChjaGFyKSgweDYyYSsyODgxLTB4MTE0YikpLCgoY2hhcikoMHhhYTYrNTM3Mi0weDFmODIpKSwKKygoY2hhcikoMHg0YTErMTc0MS0weGI0ZSkpLCgoY2hhcikoMHg5ZTMrNjg2Ni0weDI0OTUpKSwKKygoY2hhcikoMHgyYzYrNzA3NS0weDFlNDkpKSwoKGNoYXIpKDB4NWFjKzg0NDgtMHgyNjhjKSksCisoKGNoYXIpKDB4NjMxKzQxNDctMHgxNjQ0KSksKChjaGFyKSgweDdlMCsyMjIwLTB4MTA2YykpLAorKChjaGFyKSgweGE5Mys4MjYtMHhkYWMpKSwoMHhlMDArMzUyOC0weDFiYTYpLCgoY2hhcikoMHgzN2YrMTIxOS0weDgxZikpLAorKDB4MjI4KzY0MjktMHgxYjQzKSwoKGNoYXIpKDB4MTkzNisxNzUxLTB4MWZlOCkpLCgoY2hhcikoMHgxYjUxKzE0NzgtMHgyMGYxKSksCisoMHgxMzJmKzE1MC0weDEzOWUpLCgoY2hhcikoMHgxYTI0KzI0MDItMHgyMzVlKSksKChjaGFyKSgweDE5Mis2MjMwLTB4MTliZikpLAorKChjaGFyKSgweGNiMSsxMTkxLTB4MTEyZSkpLCgoY2hhcikoMHgxODMwKzIwMDUtMHgxZmRhKSksCisoKGNoYXIpKDB4ZjA5KzIyMjktMHgxNzkyKSksKChjaGFyKSgweDU4Zis1Njg5LTB4MWI5YikpLAorKChjaGFyKSgweDE3NDYrODIzLTB4MWE0ZikpLCgoY2hhcikoMHgxNDI4KzE0OTMtMHgxOWNlKSksCisoKGNoYXIpKDB4M2U4KzI5NTMtMHhmNDEpKSwoKGNoYXIpKDB4Yjk3KzE1NDUtMHgxMTZmKSksCisoKGNoYXIpKDB4MTI3MSs0NjkyLTB4MjQ5MykpLCgoY2hhcikoMHgxMzc0KzExOTUtMHgxN2VjKSksCisoKGNoYXIpKDB4ZjBjKzMyMzUtMHgxYjdiKSksKChjaGFyKSgweDY1NSs3MTQyLTB4MjIwNikpLAorKChjaGFyKSgweDFkNmQrMjM4NC0weDI2ODcpKSwoKGNoYXIpKDB4MTdjZCsyMTIwLTB4MWZkZSkpLAorKChjaGFyKSgweDhlOSsxNjUxLTB4ZjI0KSksKChjaGFyKSgweDNjNis3MjI1LTB4MWZjNikpLAorKChjaGFyKSgweDhhNSs0OTk1LTB4MWJlZSkpLCgoY2hhcikoMHhmYyszMzA5LTB4ZGFlKSksCisoKGNoYXIpKDB4MTIyMSszNDgtMHgxMzQxKSksKChjaGFyKSgweDFlYWQrMTY0MS0weDI0ZDkpKSwKKygoY2hhcikoMHhkOWYrNDI3OC0weDFlMTcpKSwoKGNoYXIpKDB4MThmOCsxMDA0LTB4MWNhNSkpLCgweDkzYSs0MjIxLTB4MTliNyksCisoKGNoYXIpKDB4MTA5YSszNjMxLTB4MWU4OCkpLCgoY2hhcikoMHg5M2ErNDk0NC0weDFjNDgpKSwKKygoY2hhcikoMHgzYzYrMjU1NS0weGQ3ZSkpLCgoY2hhcikoMHgzMmMrMjY5MC0weGQ2YSkpLCgoY2hhcikoMHg3MjArNzctMHg3MjgpKSwKKygoY2hhcikoMHgyMDMwKzE0MjYtMHgyNTdjKSksKChjaGFyKSgweDFmMWQrNzkwLTB4MjFlYykpLAorKChjaGFyKSgweDFjNzArMTc1Mi0weDIzMDApKSwoKGNoYXIpKDB4Yjk3KzI3NjEtMHgxNjE3KSksCisoKGNoYXIpKDB4YzA0KzIyMi0weGM5OCkpLCgoY2hhcikoMHhjOTQrMTI5NS0weDExNTgpKSwKKygoY2hhcikoMHhkNzgrMjM0MS0weDE2NTEpKSwoKGNoYXIpKDB4ZWQ5KzQwNTctMHgxZTY1KSksCisoKGNoYXIpKDB4ZTkwKzUwNDYtMHgyMWY4KSksKChjaGFyKSgweDk3MSszNDQ2LTB4MTY5OCkpLAorKChjaGFyKSgweDEyNzkrMzAwNC0weDFkZTUpKSwoKGNoYXIpKDB4N2NmKzMxMjQtMHgxM2IyKSksCisoKGNoYXIpKDB4NDljKzc4ODMtMHgyMzE1KSksKChjaGFyKSgweGI0YiszMDY3LTB4MTZmMykpLAorKChjaGFyKSgweDk3Nys0MjM3LTB4MTliMCkpLCgoY2hhcikoMHg4MTYrMzE2NS0weDE0MWUpKSwKKygoY2hhcikoMHhhMjQrNzEyMy0weDI1YTEpKSwoKGNoYXIpKDB4MWI1KzcxODYtMHgxZDcwKSksCisoKGNoYXIpKDB4MjMxYis2NjYtMHgyNTVkKSksKChjaGFyKSgweDE1NjQrMTkwMC0weDFjNzcpKSwKKygoY2hhcikoMHhkNmMrNjA1MC0weDI0YjQpKSwoMHgyMzZhKzM3ODItMHgxNmY0KSw2OTU5LDY5NzQsKDB4MWI4YSs0Njk5LTB4MTJkMSksCisoMHgxNGM5KzUxOC0weDE2YmUpLCgoY2hhcikoMHgxNTU1KzIyNTctMHgxZTA2KSksKChjaGFyKSgweDE2NjYrNzEtMHgxNjRjKSksCisoKGNoYXIpKDB4OTgrNTA3Mi0weDE0MDYpKSwoKGNoYXIpKDB4MTk2YyszMjg0LTB4MjVkZCkpLAorKChjaGFyKSgweGZlMis1NDAyLTB4MjQ5OCkpLCgoY2hhcikoMHg1NDQrNjQ5NS0weDFlM2UpKSwKKygoY2hhcikoMHg1MmMrNTM1Ni0weDE5YjIpKSwoKGNoYXIpKDB4MWU5KzYzMDYtMHgxYTI0KSksCisoKGNoYXIpKDB4MjRmKzE5MzUtMHg5NzYpKSwoKGNoYXIpKDB4MTE1KzU1NDEtMHgxNjUxKSksCisoKGNoYXIpKDB4MTIwYSs1MTQyLTB4MjViNikpLCgoY2hhcikoMHgyYjUrNTA1MC0weDE2MDQpKSwKKygoY2hhcikoMHg0NmYrNjUzMy0weDFkODgpKSwoKGNoYXIpKDB4MTg0YysyODQ1LTB4MjJmYykpLAorKChjaGFyKSgweDFiMjUrMTc0OS0weDIxOGMpKSwoKGNoYXIpKDB4NGEzKzU1MTctMHgxOWMxKSksCisoKGNoYXIpKDB4MWYwMys2OTktMHgyMTRlKSksKChjaGFyKSgweDI4NSszNTM2LTB4ZmU0KSksKChjaGFyKSgweDZmYyszMy0weDZhYikpLAorKChjaGFyKSgweDE4YzcrMTM3Ni0weDFkYjQpKSwoKGNoYXIpKDB4OWM5KzQ1ODYtMHgxYjNmKSksCisoKGNoYXIpKDB4ZWY5KzQ0My0weDEwM2YpKSwoKGNoYXIpKDB4MWJmKzEyMTEtMHg2MDQpKSwoKGNoYXIpKDB4NzUwKzE1MTQtMHhjYzMpKQorLCgoY2hhcikoMHhkYWIrMTMwOC0weDEyNGYpKSwoKGNoYXIpKDB4YzQwKzY1MTAtMHgyNTM1KSksCisoKGNoYXIpKDB4NDk0Kzg0ODktMHgyNTQzKSksKDB4MjNjMCs1ODYxLTB4MWY3ZCksNjk3NiwoMHgyMTBhKzIzNy0weDZjZSksCisoMHgxZWY3KzI4NjItMHhlZTgpLCgoY2hhcikoMHg5MWQrNjQ3MC0weDIyNDMpKSwoKGNoYXIpKDB4MWRiNysxMTI2LTB4MjFmZCkpLAorKChjaGFyKSgweDE0NjIrMjc4OS0weDFmMjcpKSwoKGNoYXIpKDB4ODZkKzMxNTItMHgxNDlkKSksCisoKGNoYXIpKDB4YzA1KzQ0NTEtMHgxZDQ4KSksKChjaGFyKSgweDE5OWIrMTc0OC0weDIwNGYpKSwKKygoY2hhcikoMHg0M2IrMzcyMS0weDEyYTQpKSwoKGNoYXIpKDB4MWUwZis3MDAtMHgyMGFiKSksCisoKGNoYXIpKDB4OWI5KzI3OTAtMHgxNDdmKSksKChjaGFyKSgweDliYis2NDg0LTB4MjJlZikpLAorKChjaGFyKSgweDEyZDgrMjgyMy0weDFkYmYpKSwoKGNoYXIpKDB4MTJhZiszNTgyLTB4MjA4ZCkpLAorKChjaGFyKSgweGFkYys2MTA0LTB4MjI5NCkpLCgoY2hhcikoMHg4M2IrNDcxMi0weDFhODMpKSwKKygoY2hhcikoMHg2OTgrNjUxMi0weDFmZTgpKSwoKGNoYXIpKDB4MzQ0KzYyNjItMHgxYjlhKSksCisoKGNoYXIpKDB4Yjc0KzQ5MDMtMHgxZTdiKSksKChjaGFyKSgweGY3ZCs0OTMtMHgxMTRhKSksCisoKGNoYXIpKDB4OWViKzczMjgtMHgyNjZiKSksKChjaGFyKSgweDcwNis1MzgwLTB4MWJlYSkpLAorKChjaGFyKSgweGYzKzExODktMHg1NzgpKSwoKGNoYXIpKDB4MjM0Mis4NjktMHgyNjg3KSksCisoKGNoYXIpKDB4MTk4NSs1NDMtMHgxYjg0KSksKChjaGFyKSgweDIwZmYrMTUzMS0weDI2ZGEpKSwKKygoY2hhcikoMHg4Nis1NzQ0LTB4MTZkNikpLCgoY2hhcikoMHhlMWQrMzIxOC0weDFhOGYpKSwKKygoY2hhcikoMHg4NzYrMjE0MC0weDEwYjIpKSwoKGNoYXIpKDB4MmI3KzUwMTYtMHgxNjJmKSksCisoKGNoYXIpKDB4MTdmZCszMTMzLTB4MjQxYSkpLCgoY2hhcikoMHgyZmYrNTcwNS0weDE5MjgpKSwKKygoY2hhcikoMHg5NmIrNTExLTB4YjRhKSksKChjaGFyKSgweDgzZis3MDAzLTB4MjM3YSkpLCgoY2hhcikoMHhmYSs2NjM4LTB4MWFjOCkpCissKChjaGFyKSgweDQxKzMzODUtMHhkNWEpKSwoMHgxMjNiKzM2OTktMHgyMDZlKSwoKGNoYXIpKDB4MTUyNSsyNjM1LTB4MWY1MCkpLAorKDB4MTVjMysyMy0weDE1ZDkpLCgweDNkYys2NjQyLTB4MWRhYSksKDB4MTQ2MSsxMTYyLTB4MThlOCksCisoKGNoYXIpKDB4M2M4KzI1NTgtMHhkYTYpKSwoMHgxNmUwKzEwODEtMHgxYWJhKSwoKGNoYXIpKDB4MWFkMCsxNDI0LTB4MjA0MCkpLAorKChjaGFyKSgweDczNCs2NTYwLTB4MjBiNCkpLCgoY2hhcikoMHgxODc1KzM3NDQtMHgyNmY1KSksCisoKGNoYXIpKDB4ZTgrNjAyNy0weDE4NTMpKSwoKGNoYXIpKDB4NTErNjgwMC0weDFhYzEpKSwKKygoY2hhcikoMHgxOTNkKzExMy0weDE5OGUpKSwoKGNoYXIpKDB4ZWViKzE5NjgtMHgxNjdiKSksCisoKGNoYXIpKDB4MjczKzQ5NTEtMHgxNWFhKSksKChjaGFyKSgweDEwNjgrMzM1Mi0weDFkNjApKSwKKygoY2hhcikoMHgxZDFkKzE2MjgtMHgyMzU5KSksKChjaGFyKSgweDFhMCszMjI4LTB4ZTFjKSksCisoKGNoYXIpKDB4NGExKzM2NjYtMHgxMmQzKSksKChjaGFyKSgweGZlOCs0Nzc1LTB4MjI2ZikpLAorKChjaGFyKSgweDExZTkrMTA1Mi0weDE1ZTUpKSwoKGNoYXIpKDB4YzYzKzE0ODgtMHgxMjEzKSksCisoKGNoYXIpKDB4MTIwOCszMjQ3LTB4MWU5NykpLCgweGNmYys1NTExLTB4MjI3OCksKChjaGFyKSgweGRjZCs0MDAtMHhmM2QpKSwKKygoY2hhcikoMHgzYis1MDk2LTB4MTQwMykpLCgoY2hhcikoMHg3N2IrMjE1Ny0weGZjOCkpLAorKChjaGFyKSgweDdkZCs0MDA4LTB4MTc2NSkpLCgoY2hhcikoMHg2NDErMTYwMC0weGM2MSkpLAorKChjaGFyKSgweDE3OTgrMzAxNi0weDIzNDApKSwoMHgxYjYxKzIxNjYtMHgyMzc3KSwoKGNoYXIpKDB4Y2Y4KzE4OTYtMHgxNDQwKSksCisoKGNoYXIpKDB4YzU0KzE1ODMtMHgxMjYzKSksKChjaGFyKSgweDRmZis1NDc2LTB4MWE0MykpLAorKChjaGFyKSgweGE2Yis2OTIwLTB4MjU1MykpLCgweGE2Nys0MzI2LTB4MWFmMiksKDB4NGJiKzc2MzQtMHgyMjdmKSwKKygweDE4OTIrNTU3LTB4MWFhMyksKDB4ZDUxKzI3Mi0weGU1OCksKChjaGFyKSgweDFjZDYrMzMyLTB4MWUwMikpLAorKDB4NmFmKzQ1MC0weDg1MiksKChjaGFyKSgweDNjKzE0MTktMHg1YTcpKSwoKGNoYXIpKDB4MWVjNysxNzE4LTB4MjU1ZCkpLAorKChjaGFyKSgweDIwNDErNTE4LTB4MjIyNykpLCgoY2hhcikoMHgxZWQ5KzEwNjYtMHgyMmUzKSksCisoKGNoYXIpKDB4Yjg1KzQ0OTAtMHgxY2VmKSksKChjaGFyKSgweDIwNzcrNzc2LTB4MjM1ZikpLAorKChjaGFyKSgweGYwNisyOTUyLTB4MWE2ZSkpLCgweDE2MDgrMTAzMC0weDE5YjEpLCgoY2hhcikoMHgxM2Q4Kzk0OS0weDE3NmQpKSwKKygoY2hhcikoMHhiNzgrNTI5NS0weDIwMDcpKSwoKGNoYXIpKDB4YTljKzEyODYtMHhmODIpKSwKKygoY2hhcikoMHg4ZWYrMzU1My0weDE2YjApKSwoMHhjMmYrMjgtMHhiZWYpLCgoY2hhcikoMHgxYTEyKzEwMTUtMHgxZGU5KSksCisoKGNoYXIpKDB4NmNkKzg5NC0weGEyYikpLCgoY2hhcikoMHgxYTE0KzQyMi0weDFiOWEpKSwoKGNoYXIpKDB4MTc0NCs5My0weDE3ODEpKQorLCgoY2hhcikoMHg5N2MrNTIwNS0weDFkYjEpKSwoMHg4NzkrMTU5Ny0weGU1OCksKChjaGFyKSgweDY4OSszMDcwLTB4MTI2NykpLAorKChjaGFyKSgweDZkMis3NTA0LTB4MjQwMikpLCgweDZiNSs3OTI3LTB4MjU4ZSksKDB4YjErMTcyOC0weDZmMiksCisoKGNoYXIpKDB4YjU4KzUxNjAtMHgxZjYwKSksKChjaGFyKSgweDEzNjUrMzMzNi0weDIwNGQpKSwKKygoY2hhcikoMHhmNDIrMzQ2OS0weDFjYWYpKSwoMHgxNjVkKzUzOC0weDE3ZmMpLCgweGQ4ZCszOTg0LTB4MWQwZSksCisoMHgxZDNjKzMyNi0weDFlNjUpLCgoY2hhcikoMHgxZGU3KzMyOC0weDFmMGYpKSwoMHgxMzJjKzEwMjYtMHgxNzJhKSwKKygweDE1NzMrMTQxLTB4MTVmYiksKChjaGFyKSgweDE1MTYrMTA1MS0weDE5MTEpKSwoKGNoYXIpKDB4N2M0Kzc4MTgtMHgyNjJlKSksCisoMHgyMTAyKzEyOTgtMHgyNjBkKSwoKGNoYXIpKDB4MjlmKzc4MzUtMHgyMTFhKSksKChjaGFyKSgweDFiZjArMjg3OC0weDI3MGUpKSwKKygoY2hhcikoMHhjMjQrMjgyLTB4ZDFlKSksKChjaGFyKSgweDg1Nis2NDgxLTB4MjE4NykpLCgweGNhMSsxMTMzLTB4MTA5MSksCisoMHg0ODUrNDUxOS0weDE2MjQpLCgoY2hhcikoMHg3MDcrNDIzNy0weDE3NzQpKSwoKGNoYXIpKDB4NmRmKzI4NjAtMHgxMWViKSksCisoKGNoYXIpKDB4MTM4NCsxNjY5LTB4MTllOSkpLCgweGE0ZCsyOTM0LTB4MTU0NyksKChjaGFyKSgweDRmYis3NjktMHg3ZGMpKSwKKygweGEwYys0ODg2LTB4MWQxNiksKDB4NzU1KzU1NTQtMHgxZDAxKSwoKGNoYXIpKDB4Mzc1KzUzOS0weDU3MCkpLAorKChjaGFyKSgweGI3Zis2NDY5LTB4MjRhNCkpLCgweDk1KzIxMjktMHg4NjgpLCgoY2hhcikoMHgxNGQzKzQtMHgxNGI3KSksCisoKGNoYXIpKDB4NTYzKzc0MzctMHgyMjUwKSksKChjaGFyKSgweDEzYWErNjAyLTB4MTVlNCkpLH07Y29uc3QgdW5zaWduZWQgc2hvcnQgCit6dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4W11bKDB4YjI5KzIzNjQtMHgxNDYzKV09e3sKKygweDc2OSsxNTEzLTB4ZDQ5KSwoMHg2ZDcrMjU0MS0weGZkZCl9LHsoMHgxM2RmKzI3OTktMHgxZWM0KSwoMHgxODI4KzcxMy0weDFhZTUpCit9LHsoMHgyZGMrNTc5Ni0weDE5NzMpLCgweGUzMys1MDQ4LTB4MjFkZSl9LHsoMHgxNGU5KzI0NTYtMHgxZTZkKSwKKygweDk4Mys2MjUyLTB4MjE5MSl9LHsoMHg4MDQrMzc2LTB4OTU0KSwoMHhiMGQrNTEyOS0weDFlOWIpfSx7CisoMHgyOTcrNjcyNy0weDFjYjUpLCgweDFlYys4NTczLTB4MjJlYyl9LHsoMHhmMTUrMzY5Ny0weDFkNTcpLAorKDB4ZDhhKzEwMDktMHgxMTFmKX0seygweDE1YSs4MzQyLTB4MjFiNCksKDB4ZDQ3KzIyNS0weGRjZCl9LHsKKygweDEwYSs2NDU2LTB4MWEwNSksKDB4NzNkKzE0MjEtMHhjNGMpfSx7KDB4MzUwKzE5MTktMHhhOTEpLCgweDFhNTcrMjEwMi0weDIyMzApCit9LHsoMHgxNGYxKzMyMjYtMHgyMTRiKSwoMHgzZDIrODQ4NC0weDI0N2EpfSx7KDB4MWIyNSsyNTM5LTB4MjRjZiksCisoMHgxZGVhKzExNzgtMHgyMWMzKX0seygweDE4MjQrOTQwLTB4MWI4NyksKDB4MTZhMSszNjA2LTB4MjNlYSl9LHsKKygweDc1MiszMzQxLTB4MTQxMCksKDB4MTI5NSs0OTI3LTB4MjUwMSl9LHsoMHg1ZDkrNDQxNC0weDE2YzIpLAorKDB4MTA3OCsyMjQ3LTB4MTg2NSl9LHsoMHgxMzBhKzM0MTgtMHgyMDAzKSwoMHgyMjVjKzU5Ny0weDIzZDApfSx7CisoMHhmNjIrMjM2My0weDE4MzgpLDgzNjR9LHsoMHgxOGQ5KzkzOS0weDFjMWIpLCgweGU5Zis2MDM1LTB4MjU0NSl9LHsKKygweDg0KzgwMjgtMHgxZjcxKSwoMHgxMGRkKzM0MjgtMHgxZDRlKX0seygweGIyZis2ODg3LTB4MjVhMSksCisoMHgyMmQxKzU4NS0weDI0MjApfSx9O2NvbnN0IHVuc2lnbmVkIHNob3J0IFVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX1VDU1tdWworKDB4MjgzKzEzMzEtMHg3YjQpXT17eygweDEwNTArMTg2NC0weDE3ODgpLCgweGQ4OCs1MzMwLTB4MWVjNil9LHsKKygweDEyMSs3MTM3LTB4MWNmMCksKDB4OGQwKzMzNjItMHgxMjRjKX0seygweDdkYisxNjQtMHg4NmMpLCgweDE3ZTQrMTk0NS0weDFiZWEpCit9LHsoMHgxNTMrODU0OC0weDIyYTMpLCgweDIwOWMrMTk2MC0weDI0YTkpfSx7KDB4Y2IrNTU2Ny0weDE2NzUpLAorKDB4MjQ0NCs2OTQtMHgyMzUxKX0seygweDQwKzk0NjgtMHgyNTI2KSwoMHgxZDk4KzMyNDYtMHgyNmE2KX0seworKDB4NzhiKzM4MTMtMHgxNjU5KSwoMHhmZmErNTExNS0weDIwNGQpfSx7KDB4MTFhNysxNTQtMHgxMjI5KSwKKygweDI2ZjUrMjg0LTB4MjQ2ZSl9LHsoMHgxYjErMjAxMC0weDk3MiksKDB4MTUwMSs0MS0weDExOTIpfSx7CisoMHg3NzcrNDI5NS0weDE4MjQpLCgweDgzMysxNDU0LTB4YTQzKX0sfTtjb25zdCB1bnNpZ25lZCBjaGFyIAorVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW109e05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg3YjIrNTQ3My0weDFkMDkpLE5PTl9HU00sTk9OX0dTTSwKKygweGQyMCszNDQ2LTB4MWE4OSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLCgweGUzNys2MTM1LTB4MjYwZSksKDB4MTA1MisyNzA4LTB4MWFjNSksKDB4N2I0KzcyMDUtMHgyM2I3KSwKLSgweDY3MSs2MC0weDY4YSksKDB4ZWMwKzQ4NzUtMHgyMWM5KSwoMHgxZTQrNzIwNC0weDFkZTMpLCgweDFmYWErOTY2LTB4MjM0YSksCi0oMHgxM2U4KzQyOTItMHgyNDg1KSwoMHg5ZjQrMzk0NC0weDE5MzQpLCgweGJjOSs2MzcyLTB4MjQ4NCksKDB4ZmVhKzg3MS0weDEzMjcpLAotKDB4MTBmOSsyMTQ5LTB4MTkzMyksKDB4MTQ1Kzg1MjctMHgyMjY4KSwoMHg3M2QrNDgxNS0weDE5ZGYpLAotKDB4MTEyYSsxNjQxLTB4MTc2NSksKDB4ZDY5KzUyMDgtMHgyMTkyKSwoMHgxMzErODQ3Mi0weDIyMTkpLCgweDNkOSsxNzkwLTB4YWE2KSwKLSgweDljMyszNTE0LTB4MTc0YiksKDB4NDNhKzUyMDEtMHgxODU4KSwoMHgxZGYrMTU1MS0weDdiYSksKDB4OGY4KzI4MTMtMHgxM2MwKSwKLSgweDFkYTMrODIwLTB4MjBhMSksKDB4MWY2MysxNjAtMHgxZmNjKSwoMHg0MjcrNzU0Mi0weDIxNjUpLCgweDgwNSs2MjEtMHhhMzkpLAotKDB4MTJjOSsxODA2LTB4MTk5ZCksKDB4OTQyKzU2NTUtMHgxZjFlKSwoMHg3ZjQrNTM1MS0weDFjOWYpLCgweDdjYSszMTE0LTB4MTNiNykKLSwoMHgxMTQ4KzQ4MzktMHgyM2YxKSwoMHg0YzkrNjgwMC0weDFmMWEpLCgweDViNysyNjM1LTB4MTAwMiksCi0oMHgxMDM0KzI0NS0weDEwZTgpLCgweDY5Yys2MjM1LTB4MWViNSksKDB4MTQ0KzU3NS0weDM0MCksKDB4ZDcwKzU0NDQtMHgyMjcwKSwKLSgweDc4Yis0NzQ4LTB4MTlkMiksKDB4ZmQ3KzEyNzgtMHgxNDhmKSwoMHgxMThiKzQwNTItMHgyMTE4KSwoMHhiMTIrOTUyLTB4ZTgyKSwKLSgweDFlNzYrMjI1Ni0weDI2ZmQpLCgweDYzZisxMTUxLTB4YTc0KSwoMHgxMmMrNDQyMC0weDEyMjUpLCgweDIwMjQrMTAxNi0weDIzZDApCi0sKDB4MTk0KzU4Ny0weDM5MiksKDB4MmVhKzc1NjEtMHgyMDI1KSwoMHgxNjUrNzk2NC0weDIwMzIpLCgweDIwZGErMzUzLTB4MjFlYiksCi0oMHg2NjIrNDYwNS0weDE4MGUpLCgweDEzMWIrMzA4NS0weDFlZDYpLCgweDExZWYrMzM2OC0weDFlYzQpLAotKDB4MWIzMSsxNjAwLTB4MjExZCksKDB4MWEyNSs4MDktMHgxY2Y5KSwoMHgyMDU0Kzc5MS0weDIzMTUpLCgweDFiOGMrMTgwLTB4MWJlOSkKLSwoMHgxMWRiKzI0NTMtMHgxYjE4KSwoMHgxMzZiKzMxMTItMHgxZjNhKSwoMHgzNGIrODcxNC0weDI0ZmIpLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSwoMHgxNjUxKzM4Ny0weDE3YzMpLE5PTl9HU00sKDB4Y2EwKzkzOC0weGZlOSksKDB4NTZkKzEyODctMHhhMTIpCi0sKDB4MTI0YSsxNDQ5LTB4MTc5MCksKDB4Mzc0KzI3OTktMHhkZmYpLCgweGJmNyszMjQ1LTB4MTgzZiksKDB4MTFlYysyMDQtMHgxMjUyKQotLCgweDE4MTArMTczLTB4MTg1NiksKDB4NDM3KzI0NzMtMHhkNzgpLCgweGYzNys1NjM4LTB4MjRkNCksKDB4YzRhKzI5MjctMHgxNzRmKSwKLSgweDI4Nys0ODQ3LTB4MTUwYiksKDB4MjM5KzIxNDgtMHhhMzEpLCgweDE2M2IrNDUyLTB4MTc5MiksKDB4OTljKzM2MjAtMHgxNzUyKSwKLSgweGU3MiszMTUwLTB4MWE1MSksKDB4ZmViKzIxNTAtMHgxN2UxKSwoMHg1NDYrMzk5My0weDE0NmUpLCgweDJjYisxMjI3LTB4NzI0KSwKLSgweDE4OTgrMTA1LTB4MTg4ZSksKDB4MTI4MSs5NzEtMHgxNWQ4KSwoMHgyNjArMjI1OC0weGFiZCksKDB4NmMwKzQ4MDQtMHgxOTBlKSwKLSgweDIxYSs1MjgyLTB4MTY0NSksKDB4NTMyKzQ5NjctMHgxODIxKSwoMHgxMDM2KzEyMjktMHgxNDhhKSwoMHg4YjMrNDI4Mi0weDE4ZjMpCitOT05fR1NNLCgweDM4NSs1OTgxLTB4MWFjMiksKDB4MTA3KzUwNTAtMHgxNGEwKSwoMHg1MWYrODA5NC0weDI0OWIpLAorKDB4ODk0KzM2MjEtMHgxNjk2KSwoMHgxYzJkKzY1OC0weDFlYmQpLCgweDIxNis3NjYxLTB4MWZkZSksKDB4YWU4KzMzMzUtMHgxN2M5KSwKKygweDIyNisyNDgxLTB4YmIwKSwoMHgxMWQ3KzEyMzktMHgxNjg2KSwoMHgxNTM2KzI0OTEtMHgxZWM4KSwKKygweDE1NzQrMTk0Ni0weDFjZTQpLCgweDE1YTgrNDIzOS0weDI2MGMpLCgweGU0Yis2MDAtMHgxMDc3KSwoMHhkNjUrMjEwNS0weDE1NzEpCissKDB4YjE4KzM2NjktMHgxOTNmKSwoMHgxMzBhKzMzNjItMHgxZmZkKSwoMHgyYjIrODQ5My0weDIzYWYpLAorKDB4MTI4KzgyODYtMHgyMTU1KSwoMHhmYmYrNTU1MS0weDI1M2MpLCgweGM5Yis1ODU1LTB4MjM0NyksKDB4MTgxKzk0NzgtMHgyNjUzKSwKKygweDk4MCsxMzAxLTB4ZTYwKSwoMHgxMjRiKzQ4NTQtMHgyNTBiKSwoMHgxOTgrNzc4MC0weDFmYzUpLCgweDFjNDIrMjMzLTB4MWNmMyksCisoMHgxZDliKzE2OTgtMHgyNDA0KSwoMHgxMWFmKzQzMi0weDEzMjUpLCgweDE0N2IrNDI0NS0weDI0ZDUpLCgweGFjNCsyMTctMHhiNjEpLAorKDB4ZWQzKzMwMjgtMHgxYTZhKSwoMHgxNjZiKzI4NDEtMHgyMTQ2KSwoMHgxMDhjKzQ5MzMtMHgyMzkyKSwKKygweDEyMzMrMzYzOS0weDIwNmEpLCgweGUxYSs1NzQ2LTB4MjQ0YiksKDB4MWQ5ZisxNTgyLTB4MjM4YiksCisoMHhiOGIrNDI0MS0weDFiZDkpLCgweDJiOSs0OTMtMHg0NjIpLCgweDc4Mys0MzE4LTB4MTgxYyksKDB4ZjhhKzQ2MzMtMHgyMTVkKSwKKygweGI4OSsxMDY4LTB4ZjZlKSwoMHhhY2QrMjEzOC0weDEyZGYpLCgweDIzYjErODk1LTB4MjZlNyksKDB4MmI1KzM1MDItMHgxMDE5KSwKKygweDg4Zis3NzY5LTB4MjY5ZCksKDB4MzEyKzQzNTMtMHgxM2M3KSwoMHg3MzgrMjY3Ny0weDExNjApLCgweDEwNjgrMjgwNC0weDFiMGUpCissKDB4ZjJhKzg5Ni0weDEyNWIpLCgweGE5Nis1NDkzLTB4MWZiYiksKDB4MTFhZiszMzg1LTB4MWU5NyksKDB4NTJjKzEwNDgtMHg4ZjIpLAorKDB4NmU3KzE5OTEtMHhlNWIpLCgweDU0NCs4NjY1LTB4MjZjOSksKDB4ZGQxKzUwMjgtMHgyMTIwKSwoMHg4M2ErMTUwOS0weGRjOSksCisoMHgxMTFiKzI3ODEtMHgxYmExKSwoMHgxMjJmKzIxOS0weDEyYjIpLCgweDE1ZjUrNDMwMi0weDI2NmEpLCgweDI5MSszMDY4LTB4ZTMzKQorLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4NzhkKzcwNzgtMHgyMzIyKSxOT05fR1NNLCgweDM4MysyMjk5LTB4YzFkKSwKKygweGQ5ZCs0NTc2LTB4MWYxYiksKDB4MTdiNSszNjI5LTB4MjU3ZiksKDB4MTFhZCsxODAzLTB4MTg1NCksCisoMHg1ZjkrNjU4Mi0weDFmNGEpLCgweDExZCsyNjAzLTB4YWUyKSwoMHhiZDUrNTgyMC0weDIyMmEpLCgweGQyYys1NTgzLTB4MjI5MyksCisoMHg4MDkrNDUwLTB4OTYyKSwoMHgxMjMxKzI1OTktMHgxYmVlKSwoMHhlNDQrMTQ0MC0weDEzNzkpLCgweDQ3NCs0ODgtMHg1ZjApLAorKDB4NDU3KzcxNTAtMHgxZmQ4KSwoMHg0MmErODA2Mi0weDIzM2EpLCgweDY1NyszODAyLTB4MTRjMiksKDB4NWNhKzYyNzEtMHgxZGQ5KSwKKygweDQwMSs4MjkwLTB4MjNmMiksKDB4YWZjKzMwNjAtMHgxNjdlKSwoMHgxNTMzKzQwMS0weDE2NTEpLCgweGFhYyszNTAtMHhiOTYpLAorKDB4MWQxMisyNjktMHgxZGFhKSwoMHhhNGErMjkyOC0weDE1NDQpLCgweDUxZCs2MjExLTB4MWNlOSksKDB4ZGU0KzE5MTctMHgxNGU5KSwKKygweDc3Mis0MjE4LTB4MTc3MyksKDB4MTA5ZCs0NjQzLTB4MjI0NiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNCiAsTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTQogLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00KICxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNCi0sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHhkZGYrNTI3Ni0weDIyNjApLAotKDB4ZjU0KzQ1MjctMHgyMGMzKSxOT05fR1NNLCgweDRiYys0NzUxLTB4MTc0YSksKDB4MTM3MCszMzMwLTB4MjA0ZSksCi0oMHgyMDJkKzE2MzctMHgyNjhmKSxOT05fR1NNLCgweDY4YSsyMjE0LTB4ZWQxKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorLE5PTl9HU00sTk9OX0dTTSwoMHg2MzUrMTkyMi0weGQ5YyksKDB4ZWQrMzE3NC0weGQxMyksTk9OX0dTTSwKKygweDFhZjkrMjY3LTB4MWMwMyksKDB4MTZjMysyMDg2LTB4MWVjNSksKDB4OGIyKzExMDUtMHhkMDApLE5PTl9HU00sCisoMHhjNjQrMjA3MS0weDE0MWMpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHgxN2QxKzE2OTgtMHgxZTEzKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDlmNiszNDQ1LTB4MTcxMCksCi0oMHgxNjI5KzE4NjctMHgxZDY2KSwoMHg3ZTIrNjc1OC0weDIyMmMpLCgweGNmZis0MTU3LTB4MWQzMyksTk9OX0dTTSwKLSgweGQ0Yys0MDM2LTB4MWNmMSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLSgweDE4NzUrMTQ4MC0weDFkZTApLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4NDNhKzUyMDQtMHgxODMyKSxOT05fR1NNCi0sKDB4Y2Y5KzU1NDQtMHgyMjk2KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgyNDUrMTAzMS0weDVlZSksTk9OX0dTTSxOT05fR1NNLAotKDB4YmFiKzk3OS0weGY2MCksKDB4MWUwOSsyMzQ5LTB4MjZiNyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHg5YWQrMzQ0NC0weDE2YTYpLCgweDI5Zis2MTg4LTB4MWFiYyksKDB4ZjBkKzI1ODMtMHgxOTA3KSxOT05fR1NNLAotKDB4OGU5KzQyODYtMHgxOWEzKSwoMHg4M2MrNDk5LTB4YTJhKSxOT05fR1NNLE5PTl9HU00sKDB4YTgwKzM0MzQtMHgxN2UzKSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4OGZjKzU4MzEtMHgxZjQ2KSwoMHhlNTIrNTE2MS0weDIyNzMpLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sKDB4ZTA4KzQ0Ny0weGY0YiksTk9OX0dTTSwoMHhiYWErMjA2My0weDEzYWQpLCgweGNjKzU3OTktMHgxNzZkKQotLE5PTl9HU00sTk9OX0dTTSwoMHg4ZDYrNjY1Mi0weDIyNTQpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNfTtjb25zdCB1bnNpZ25lZCAKLXNob3J0IHp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbXVsoMHg0NTkrMjcxLTB4NTY2KV09e3sKLSgweDFlYzcrMzY4LTB4MjAzMiksKDB4MjNjNSs3NzYtMHgyNWUzKX0seygweGNjMCs5NDYtMHgxMDY5KSwKLSgweDE2ZTkrMzY5Ni0weDI0NzIpfSx7KDB4MTk2KzkwNTktMHgyNGVmKSwoMHhlZGQrMTg5My0weDE2MzYpfSx7Ci0oMHg4MzYrNDU3MC0weDFhMDUpLCgweDEyNys2OTE3LTB4MWI1OCl9LHsoMHgxZmFhKzE2MTAtMHgyNWU4KSwKLSgweDFkZjArMTQ2MC0weDIyYjApfSx7KDB4ZDY0KzQxNzYtMHgxZGE3KSwoMHgxNjFiKzIxNDQtMHgxZTZlKX0sewotKDB4NGNkKzEwNjEtMHg4ZTQpLCgweDFlZDIrMTA5MS0weDIyNTQpfSx7KDB4MTQ3OCs4Ni0weDE0YmYpLAotKDB4MWEyNysyNzM1LTB4MjNmNSl9LHsoMHgxNTA1KzI4NDYtMHgyMDExKSwoMHgxNTAxKzM3MzctMHgxZmY0KX0sewotKDB4MTA2MCs0OTAyLTB4MjM3MyksKDB4OTI2KzUxMjYtMHgxOTk5KX0seygweGI0ZisxMjA5LTB4ZmY0KSwKLSgweDg0Nys0NTk2LTB4MTlkZCl9LHsoMHgxNDJkKzIyNDktMHgxY2UxKSwoMHg5ZDArMTMwOC0weGI0Myl9LHsKLSgweDNjYSs3MzI4LTB4MjA1NCksKDB4MTQwNCszNDMwLTB4MWRjYSl9LHsoMHhhNmErMjY0OS0weDE0YWMpLAotKDB4NTk3Kzc2MzktMHgxZmM2KX0seygweDM0MCszNTUtMHg0OGIpLCgweDE5ZDkrMzQ2Mi0weDIzYmMpfSx7Ci0oMHhjYWQrMjIyOS0weDE1NDkpLCgweDRkMCs1NTMwLTB4MTZkMil9LHsoMHhlYjArMTc5LTB4ZjQ0KSwoMHgxN2VkKzEwNTgtMHgxYjQ1KQotfSx7KDB4MjE4KzI3OTAtMHhjZDYpLCgweGI1MysyMzQ1LTB4MTQwMSl9LHsoMHgxMGQ5KzI2NDEtMHgxYjAxKSwKLSgweDExZmIrMzU1My0weDFmNWYpfSx7KDB4N2QrOTg2Mi0weDI2ZDQpLCgweDIzNis2NDE2LTB4MWFlYSl9LHsKLSgweDE0NjcrMTc4Ny0weDFiMjYpLCgweGE0MSsxNTAxLTB4ZmMzKX0seygweDIzNys4ODU0LTB4MjQ5MCksCi0oMHgxNTczKzEyNDItMHgxOWNmKX0seygweDU0MCs1MzUyLTB4MTllYSksKDB4MzhkKzQwMDUtMHgxMmQ1KX0sewotKDB4MTk5MysxODgwLTB4MjBhYiksKDB4MTgzZCszNTUtMHgxOTI0KX0seygweGY0MiszMzU0LTB4MWMxYiksKDB4YjViKzQyMC0weGMzZikKLX0seygweDEzZjErNjI0LTB4MTYxOCksKDB4ZDcyKzI1MjgtMHgxNjg1KX0seygweDE1ODMrMzU5NC0weDIzM2UpLAotKDB4MjA0ZisxODE4LTB4MjY5Nil9LHsoMHgxMjY5KzE2NTQtMHgxODhhKSwoMHg5YTArNjY5MS0weDIyZTkpfSx7Ci0oMHgxZjQrOTQzNy0weDI2NzYpLCgweDFiYzgrMjI0MC0weDIzYzUpfSx7KDB4ZGUxKzQ0OTktMHgxZjE4KSwKLSgweDE0M2IrMTcwNC0weDFhMGUpfSx7KDB4N2UwKzI3OTgtMHgxMjZkKSwoMHgyYTMrMTY5MS0weDg3Yyl9LHsKLSgweDEyNTQrMzM5NS0weDFmMzIpLDgzNjR9LHsoMHgxN2QyKzM0NzMtMHgyNGZhKSwoMHgxMmIrNzA0MS0weDFiYmYpfSx7Ci0oMHhkMWIrMTU5OS0weDEyZWIpLCgweGNkMyszMjgzLTB4MThiMyl9LHsoMHhjNzErNjExOS0weDIzZTMpLAotKDB4MTllMCsyNjYyLTB4MjM0Yyl9LHsoMHg2MDArMjY5My0weDEwMGEpLCgweDExMSs4MjUwLTB4MjA2OCl9LHsKLSgweDJhMys0ODA4LTB4MTRlZiksKDB4MWQ0YysyNzM2LTB4MjcwNyl9LHsoMHg5NDErMjUwNS0weDEyOGIpLCgweDZhYisyNjYtMHg2ZDMpCi19LH07Y29uc3QgdW5zaWduZWQgc2hvcnQgVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTW11bCi0oMHgxNTYwKzQwMjUtMHgyNTE3KV09e3soMHg5MzArNTE4Ni0weDFkNjIpLCgweDE1ZDgrNTE3MC0weDI2NzYpfSx7Ci0oMHgxNTEyKzIyNjAtMHgxZGQxKSw4OTI5fSx7KDB4MjJhYys2OTctMHgyNTRkKSw4MzY0fSx7KDB4NzljKzQ4OTktMHgxYTVhKSw4MzY0fQotLH07Y29uc3QgdW5zaWduZWQgY2hhciBVY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9BU0NbXT17Tk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4MTcxNysxMzIwLTB4MWMzNSksTk9OX0dTTSxOT05fR1NNLCgweGUzYSsyMDUtMHhlZmEpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTQzMCs0Njc4LTB4MjYxNiksTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweGJhKzM4NzAtMHhmN2QpLCgweDFkMjUrMTUyNy0weDIzMGUpLAorKDB4ODVkKzYwMDYtMHgxZmI3KSwoMHgxYTExKzMwNTMtMHgyNWY1KSxOT05fR1NNLCgweGE4MCs2OTk2LTB4MjViNSksTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDIwZjcrMTIwMy0weDI1NGQpLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxOGYrMjkxMS0weGM5MiksTk9OX0dTTSwoMHgyNWYrMTk4NS0weGExNSksTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSwoMHgxNDg2KzI5MS0weDE1NGIpLE5PTl9HU00sTk9OX0dTTSwoMHgxYjE2KzM1Ny0weDFjNWQpLAorKDB4NWI3KzMxNDktMHgxMTg1KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg5ZWYrMjM5MS0weDEyY2IpLAorKDB4OTQ4KzQ1MjQtMHgxYWU1KSwoMHgxMjQ2KzI5OTQtMHgxZGRiKSxOT05fR1NNLCgweDExMis5MTE3LTB4MjRhYiksCisoMHhjNDMrMzIxNy0weDE4Y2YpLE5PTl9HU00sTk9OX0dTTSwoMHgxNDYrNzkyOS0weDIwMzgpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSwoMHgxODg4KzM1Mi0weDE5NmIpLCgweDEyZmErMjgyMi0weDFkZjgpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorKDB4MTkwMSsxNzkzLTB4MWY4NiksTk9OX0dTTSwoMHg0MzkrNDM3MC0weDE1M2YpLCgweGE4OSs0MjYxLTB4MWIyOCksTk9OX0dTTSwKK05PTl9HU00sKDB4MTE3ZiszODEwLTB4MWZlMyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU019O2NvbnN0IHVuc2lnbmVkIHNob3J0IAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFtdWygweDEyOTkrNDIxNC0weDIzMGQpXT17eworKDB4MjRhMys1MTgtMHgyNmE0KSwoMHgyYzYrNDgwOC0weDE0YTQpfSx7KDB4MTM5NSs0NzU1LTB4MjYxZiksCisoMHgxNWRiKzQwODYtMHgyNGVhKX0seygweDVjKzUwMDgtMHgxM2UyKSwoMHgxMzFmKzE4NjMtMHgxYTVhKX0seworKDB4MTAwNis0MTc5LTB4MjA0ZSksKDB4NjA1KzMzOS0weDY4NCl9LHsoMHg2OSs3MjE5LTB4MWM5MCksKDB4MmU5KzkxNTAtMHgyNWIzKX0KKyx7KDB4MTFlNSs1MTI5LTB4MjVlMSksKDB4YjQ2KzE0NjQtMHgxMGYxKX0seygweDY0Yys0MjM1LTB4MTZjOSksCisoMHhkMDArMTc5Mi0weDEzM2YpfSx7KDB4NDYzKzEzMDctMHg5NmYpLCgweDE4MzErMzEzNy0weDIzOTEpfSx7CisoMHg0YjMrNjkyOC0weDFmYjEpLCgweDU0Zis2MTk2LTB4MTlkZCl9LHsoMHg5OTArNjYwMi0weDIzNDcpLAorKDB4NzAwKzcyODAtMHgxZmRkKX0seygweGU1NCs2NTItMHgxMGNjKSwoMHgxNDkwKzEwMzEtMHgxODM5KX0seworKDB4MTllYysxMjc5LTB4MWVkNiksKDB4MTFhMisyNTg2LTB4MTgxMyl9LHsoMHg5OTQrNTk2Ny0weDIwY2QpLAorKDB4MTYwOCszNDE1LTB4MWZiZil9LHsoMHgxMmYwKzIwNzMtMHgxYWYyKSwoMHgxNmFjKzI3MTAtMHgxZDlhKX0seworKDB4MjUzKzMwMC0weDM2NyksKDB4OTFjKzI3OTUtMHgxMDY0KX0seygweDIzZis1NTI1LTB4MTdiYiksKDB4NGE2KzEzOTgtMHg2ODQpfSwKK3soMHgxYThmKzE2MDctMHgyMGI3KSwoMHg2NjkrNTk0Mi0weDFjZDUpfSx7KDB4MTkyMyszMDQ4LTB4MjRlMyksCisoMHhkNmIrNTU0MS0weDIyOTUpfSx7KDB4Y2JmKzE4MTgtMHgxM2IwKSwoMHg0MWIrNDQ5My0weDE1MmIpfSx7CisoMHg2OTYrMTIwLTB4NmRmKSwoMHgxMGErNC0weGIyKX0seygweDZiOSs0ODIwLTB4MTk1MSksKDB4ZmIwKzUzNzgtMHgyNDU3KX0seworKDB4MTE3KzQ1MDEtMHgxMjZmKSwoMHhmNjgrMzc3My0weDFkYTcpfSx7KDB4OTQyKzE3NDQtMHhmZDQpLCgweGM0Kzk3MzItMHgyNjZiKX0KKyx7KDB4OTdiKzIwNzAtMHgxMTUxKSwoMHgxNzIwKzcyNC0weDE5NzgpfSx7KDB4MTE3KzIyMzctMHg5OTMpLAorKDB4ZTJkKzM3NTQtMHgxYzE3KX0seygweDg1KzIwNzMtMHg4NTUpLCgweGQzOCsxNTIyLTB4MTI1ZCl9LHsKKygweDhhOCsyNTYwLTB4MTI1OSksKDB4MTA0OSszOTktMHgxMTA1KX0seygweDFiMzErMTM4NC0weDIwNDQpLAorKDB4MTY0MiszMTcyLTB4MjFjYyl9LHsoMHg2MysyMC0weDFjKSwoMHgxNDFhKzIxOTQtMHgxYmU5KX0seygweDY2NSszOTA4LTB4MTU0ZCkKKywoMHgxMmEzKzQ5MzItMHgyNTEyKX0seygweDEyMzUrNDM1My0weDIyZDUpLCgweDE5Mis1ODUtMHgzMTkpfSx7CisoMHgxMDFiKzUwNjItMHgyMzdjKSw4MzY0fSx7KDB4MTViZCszMTE4LTB4MjE4MiksKDB4MTE4Yis0NTEwLTB4MjIzYyl9LHsKKygweDJkMCs5NTQtMHg2MWIpLCgweDFiYTYrMTQ5LTB4MWI0OCl9LHsoMHg0MDQrMjQ2NS0weGQzMCksKDB4MjIzYys5OTYtMHgyNTI2KX0sCit7KDB4MTM3MCsyNDk0LTB4MWNiMyksKDB4MWJkYysxMDUyLTB4MWYxNSl9LHsoMHg4MTgrNzM2My0weDI0NWYpLAorKDB4MTY3OCs2MDctMHgxN2UyKX0seygweDNlNis1NzkyLTB4MWEwNyksKDB4NjZhKzY4MzEtMHgyMDM3KX0sfTtjb25zdCB1bnNpZ25lZCAKK3Nob3J0IFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDU1tdWygweDEyOTkrMTkzNi0weDFhMjcpXT17eworKDB4ODA5KzY4NTMtMHgyMmJlKSwoMHhjNWMrNjYxMC0weDIyOWEpfSx7KDB4ZjI1KzQxOTUtMHgxZjczKSwoMHgyNTliKzIzMS0weDNhMSkKK30seygweGNmZis1NzQ2LTB4MjM1OSksODM2NH0seygweDFlMTgrNTEtMHgxZGU2KSw4MzY0fSx9O2NvbnN0IHVuc2lnbmVkIGNoYXIgCitVY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9BU0NbXT17Tk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDQxYyszNzItMHg1ODYpLE5PTl9HU00sTk9OX0dTTSwKKygweDFkMCs3OTM4LTB4MjBjNSksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MWE3YisxOTYzLTB4MjIwNiksCi0oMHgxNWJkKzE5MjAtMHgxZDFjKSwoMHhkOWYrNTUxNC0weDIzMDcpLCgweGZhYys1ODYtMHgxMWQzKSwoMHgxOTZkKzIyNTctMHgyMjNjKQotLCgweDE0ZWQrMTgxOS0weDFiZTMpLCgweGQyKzQyOTktMHgxMTc3KSwoMHg0ZDErMjIzNC0weGQ2NCksKDB4ZWViKzE2MzgtMHgxNTI5KSwKLSgweDQ4Yis2NjU5LTB4MWU2NSksKDB4ZGRhKzE3ODQtMHgxNGE4KSwoMHgxNmYwKzkyOS0weDFhNjYpLCgweDU4NSs2MzItMHg3ZDEpLAotKDB4NDVmKzczOC0weDcxNCksKDB4ZDg1KzY0MS0weGZkOCksKDB4MTJiOSsyNTYtMHgxMzhhKSwoMHgxNDAwKzQ2MDUtMHgyNWNkKSwKLSgweDMwZis3NDQwLTB4MWZlZSksKDB4YTVhKzEzOTAtMHhmOTYpLCgweDk4MCszMDk2LTB4MTU2NSksKDB4YzFiKzI0NDAtMHgxNTZmKSwKLSgweDFkYisyNzUzLTB4YzY3KSwoMHgxZTdiKzExNTQtMHgyMmM3KSwoMHgyNTVjKzIxOS0weDI2MDApLCgweDEyZWErMjc4Ni0weDFkOTQpCi0sKDB4MTQzZisxMjY0LTB4MThmNiksKDB4MTdiMysxNTA0LTB4MWQ1OSksKDB4MjM1KzY0MDItMHgxYWZjKSwKLSgweDEzMDcrNzA3LTB4MTU4ZSksKDB4YWI4KzYwOTEtMHgyMjQ2KSwoMHgxMGVhKzQ0MjQtMHgyMWY0KSwoMHgzOGIrNTQ0Ny0weDE4OTMpCi0sKDB4OGFkKzYyMC0weGIxOSksKDB4Y2QzKzI2MzAtMHgxNmQ4KSwoMHhlMWMrMzY3OC0weDFjMzgpLCgweDE2NzgrNDAwOC0weDI1ZGQpLAotKDB4MWYyNys0Ni0weDFmMTEpLCgweDEyMmQrMjYxNy0weDFjMjEpLCgweDUwNCszNDcwLTB4MTI0YyksKDB4YzQrNTExNC0weDE0NzcpLAotKDB4YTg5KzQ4MzktMHgxZDI4KSwoMHgxNDI1KzMxOTItMHgyMDU0KSwoMHgxMGVkKzI3MjYtMHgxYjQ5KSwoMHgyZGQrMTQ5NS0weDg2OSkKLSwoMHg5MzYrMTA5OC0weGQzNCksKDB4MTBjMCs0OTM5LTB4MjNiZSksKDB4N2M0KzI0MjAtMHgxMGVhKSwoMHgxNTArNzI4OC0weDFkNzkpCi0sKDB4MTkyKzQ2MTktMHgxMzRkKSwoMHgxYjg5KzI0MDUtMHgyNDlkKSwoMHhhNzgrMTQyNS0weGZiNyksKDB4Y2JhKzExODktMHgxMTBjKQotLCgweDFhMTQrMTAyNS0weDFkYzEpLCgweDM1Mis2MTY0LTB4MWIxMSksKDB4MTg4NSszNDE5LTB4MjU4YSksCi0oMHg0YWQrNDY5Mi0weDE2YWEpLCgweDgzZis1NjQxLTB4MWRmMCksKDB4ZGJiKzMyMDUtMHgxOWU3KSwoMHgzZTUrMjQ2LTB4NDgxKSwKLU5PTl9HU00sKDB4NjM3KzI0Ny0weDcxNyksTk9OX0dTTSwoMHg2NzErNDY0NS0weDE4ODApLCgweGM1ZiszNDczLTB4MTlkZiksCi0oMHhmYjcrNTQ5Ny0weDI0YjMpLCgweDRmMis2MDM4LTB4MWMyNyksKDB4MzYyKzI0MjEtMHhjNzUpLCgweDE2Mys2MzgtMHgzN2UpLAotKDB4NDY1KzI1NTItMHhkZjkpLCgweDE2M2ErMjg0NS0weDIwZjIpLCgweDFiMDgrMjc5NS0weDI1OGQpLCgweGY1NCs0ODU3LTB4MjFlNikKLSwoMHgzYTYrNTQ2NC0weDE4OTYpLCgweDEzNjgrNDk1MC0weDI2NTUpLCgweDJmYis0OTg1LTB4MTYwYSksCi0oMHgxMDVjKzQ0NTUtMHgyMTU4KSwoMHg1MjUrNzQ5LTB4N2E2KSwoMHgyMDIrNTUxNi0weDE3MjEpLCgweGRiMisyMDM3LTB4MTUzOSksCi0oMHgzMTArMTE1NS0weDcyNCksKDB4MzY3KzYyMzAtMHgxYjRkKSwoMHg3MmYrMjY2Mi0weDExMjQpLCgweDExYSs3NTIxLTB4MWUwOSksCi0oMHhmNjErNTA3LTB4MTBlOSksKDB4MTc1NCsxMTEwLTB4MWIzNiksKDB4MjQyKzMyMS0weDMwZSksKDB4NzYxKzMwODAtMHgxMmYzKSwKLSgweDQwNys1NTg1LTB4MTk2MSksKDB4MTYzYSsyNDkwLTB4MWY3YyksKDB4OTYyKzMwNzItMHgxNGU5KSwoMHhlMWErNDkxNy0weDIwZDUpCi0sTk9OX0dTTSwoMHgxNWFkKzEyMTktMHgxYTU2KSxOT05fR1NNLCgweGQwYis1MTQyLTB4MjBjMSksTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSwoMHgxMzg5KzI5ODAtMHgxZjBkKSwoMHgzZGQrODUxMC0weDI0ZmEpLCgweDE1YzQrMjI4MC0weDFlOGEpLAorKDB4MTFkYysyMjgxLTB4MWFhMiksKDB4MWM1KzU5NjYtMHgxOTExKSwoMHgyODMrNjIwOC0weDFhOWUpLCgweDg1Yys1NDctMHhhNTkpLAorKDB4MzRjKzY1NzctMHgxY2Q2KSwoMHg0ZTcrNzc5LTB4N2NhKSwoMHgxZmJmKzQ5MC0weDIxODApLCgweDhiMis3MzUwLTB4MjUzZSksCisoMHgxZDcrNjMtMHgxZWIpLCgweDE5OSs5MjY2LTB4MjU5ZiksKDB4M2Q1KzM0MTYtMHgxMTAwKSwoMHg2NWIrMTYzMy0weGM4ZSksCisoMHgyMjg3KzEwNTQtMHgyNjc2KSwoMHgyZjIrNzg3OC0weDIxODgpLCgweDE0NTYrNDQ3Ni0weDI1YTEpLAorKDB4MTcwYisxNzI3LTB4MWQ5OCksKDB4MmE3KzcyMDAtMHgxZTk0KSwoMHgyMzQrODkyNS0weDI0ZGQpLCgweDk5YSsxMzUtMHg5ZWMpLAorKDB4NjFjKzcyNzQtMHgyMjUwKSwoMHgyMWIzKzEwMTMtMHgyNTcxKSwoMHgxNzc1KzMwNDItMHgyMzFmKSwoMHg3YmYrNzYyLTB4YTgwKSwKKygweDQ3KzE2MTMtMHg2NWEpLCgweDI5MysyMDYzLTB4YTY3KSwoMHgxMTE2KzMwMzktMHgxY2I5KSwoMHgxZWYrMzA1Mi0weGQ5ZSksCisoMHg5ZTkrMzIyNy0weDE2NDYpLCgweGEyZis0OTcyLTB4MWQ1YyksKDB4ZWM3KzU4NTUtMHgyNWE2KSwoMHg3NTIrOTItMHg3NmQpLAorKDB4Nzk0KzI5MDYtMHgxMmFjKSwoMHg1MjErNjU1My0weDFlNzcpLCgweGQxMCszMDQ1LTB4MThiMSksKDB4MjIyMCs3ODYtMHgyNGVkKSwKKygweDdjZis3Mzg3LTB4MjQ2NCksKDB4MjJlZis5NDUtMHgyNjU5KSwoMHg0YWYrMzc1Ny0weDEzMTQpLCgweDEwY2QrNDQ1My0weDIxZTkpCissKDB4MTI0MisxODM4LTB4MTkyNiksKDB4YmYrNjEwNC0weDE4NGMpLCgweDQ2YSs4NjU3LTB4MjVlZiksKDB4NjFjKzEzMjUtMHhhZmMpLAorKDB4MWM1MSsxNzU3LTB4MjJlMCksKDB4MTY0YSsyOTg5LTB4MjFhOCksKDB4YjcwKzY4OTEtMHgyNjBiKSwKKygweGE4Zis1MTk3LTB4MWU4YiksKDB4MTFiNCsyMTY2LTB4MTlkOCksKDB4MzQxKzEzNDctMHg4MzEpLCgweDE2YTArMzA4Ny0weDIyNWIpCissKDB4MWVhYisxNzQ4LTB4MjUyYSksKDB4ODA0KzQ0OTAtMHgxOTM4KSwoMHgxMzQ5KzM2NTgtMHgyMTNjKSwKKygweDg5ZCsyODUxLTB4MTM2OCksKDB4NDIxKzMyNTYtMHgxMDgwKSwoMHgxNGRiKzM4NTEtMHgyMzhjKSxOT05fR1NNLAorKDB4MTEwZis1MjI5LTB4MjU2NSksTk9OX0dTTSwoMHgxMDIwKzI4NTItMHgxYjJlKSwoMHgxZDRkKzYwMS0weDFmOTUpLAorKDB4MTZlOCsyMTYwLTB4MWVkYiksKDB4MWJiMSszNDgtMHgxY2FjKSwoMHgxMTZmKzUwNjItMHgyNGQzKSwKKygweDRmMys2OTcyLTB4MWZjYyksKDB4MTY4Nis0MDY5LTB4MjYwNyksKDB4MjdkKzgwOTAtMHgyMWIyKSwoMHgxN2I1KzQ0LTB4MTc3YiksCisoMHgxM2Q4KzE3NDYtMHgxYTQzKSwoMHgxYTdjKzIzODktMHgyMzY5KSwoMHg5OTMrMTc5MS0weDEwMjkpLAorKDB4MWZhNysxNzUzLTB4MjYxNiksKDB4YjFmKzY4MTMtMHgyNTUxKSwoMHg3ZGMrNTgxNC0weDFlMjYpLAorKDB4MTg1NysyMTkzLTB4MjA3YiksKDB4OTc2KzE4NjYtMHgxMDUyKSwoMHg0NzkrMTQwMy0weDk4NSksKDB4MTM2Mys0NzE4LTB4MjU2MSkKKywoMHhjZDkrNjU0MC0weDI1ZjQpLCgweDE3OCs3Njg3LTB4MWYwZCksKDB4YjdhKzIxODctMHgxMzkyKSwoMHg0ZjMrODU4LTB4N2Q5KSwKKygweDhlNSsyOTM4LTB4MTNlYSksKDB4NWY5KzE3Mi0weDYyZiksKDB4ODEwKzExOTItMHhjNDEpLCgweDE1MDErMjA5NS0weDFjYjgpLAorKDB4NmUyKzIxNTYtMHhlZDUpLCgweDE1NTMrNjcyLTB4MTc3OSksTk9OX0dTTSwoMHg0NTUrNjI4NS0weDFjYzgpLE5PTl9HU00sCisoMHhlYTkrNzY3LTB4MTE0OCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4OTNkKzE5NzMtMHgxMGQ3KSxOT05fR1NNX1AsCitOT05fR1NNLCgweDkwNisyNTU2LTB4MTMwMSksTk9OX0dTTV9QLCgweDI3YSs3NjEzLTB4MjAzNCksTk9OX0dTTSwKKygweDEwZmYrMjY0MS0weDFhZjEpLE5PTl9HU00sTk9OX0dTTSwoMHgxZDE3KzI0ODUtMHgyNmJhKSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgyMTViKzU1OC0weDIzNjUpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSwoMHg1N2MrNjU3NC0weDFmMTYpLCgweDE1MDIrMzc5NS0weDIzYzcpLCgweDE5OTQrMzExOC0weDI1YTYpLAorKDB4ODE0KzQ5NDQtMHgxYjA5KSxOT05fR1NNX1AsTk9OX0dTTV9QLE5PTl9HU01fUCwoMHhmYis4MzMwLTB4MjE3MiksTk9OX0dTTSwKKygweGMxYSs1OTE5LTB4MjMxYSksKDB4OGQxKzI4MjUtMHgxM2JjKSxOT05fR1NNLE5PTl9HU00sKDB4MWU0MysxMTQzLTB4MjI3YSksCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTSwoMHhmMSs3MDg4LTB4MWM4OCksKDB4MTdjKzM2NDMtMHhmYWMpLAorKDB4NjE4KzM5OTItMHgxNTU0KSxOT05fR1NNX1AsTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTSwoMHgxNzIwKzEwODItMHgxYWZkKSwKK05PTl9HU00sKDB4OGY0KzI3MzUtMHgxMzQ1KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTV9QLCgweDExZTUrMzY0NS0weDFmYTMpLAorKDB4MTAyOSszNDI0LTB4MWQ3YSksKDB4MmY3KzcyNy0weDViMSksKDB4YTVjKzM3MC0weGI1MyksTk9OX0dTTV9QLE5PTl9HU01fUCwKK05PTl9HU01fUCwoMHg4MDArMzA1NS0weDEzZTYpLE5PTl9HU01fUCwoMHg2M2YrNDczNS0weDE4YjkpLCgweDRmMCs4MjYtMHg4MjYpLAorTk9OX0dTTSxOT05fR1NNX1AsKDB4OTYzKzMxMDEtMHgxNTc5KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNX1AsCitOT05fR1NNX1AsKDB4MjM4OSs1OTAtMHgyNWNmKSwoMHgyZCs2NDg5LTB4MTk3YSksKDB4MmY4KzIwOS0weDM0ZCksTk9OX0dTTV9QLAorTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTV9QLCgweGU4ZCszNzE3LTB4MWQwYyksTk9OX0dTTSwoMHgxYWYwKzM1Mi0weDFiZDIpLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU019O2NvbnN0IHVuc2lnbmVkIHNob3J0IAorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbXVsoMHg0MWErNzU1MC0weDIxOTYpXT17eygweGI3Nis1MDgtMHhkNjgpLAorKDB4MWU5YSsxMjkzLTB4MjM5Yil9LHsoMHgxMmMyKzM5OTMtMHgyMjQ3KSwoMHgzOTgrNjA5Ni0weDFiMGEpfSx7CisoMHgxM2JjKzM0NS0weDE0ZWQpLCgweDFjZCs0MTkyLTB4MTFiMil9LHsoMHhmNWIrNTcxOC0weDI1ODgpLAorKDB4N2E0KzMzODYtMHgxNDYxKX0seygweDIwYmIrMzQ2LTB4MjFlNiksKDB4MjQxKzUwNzYtMHgxNWI5KX0seworKDB4NTJkKzcwNTYtMHgyMDgxKSwoMHgxNTA5Kzg3Ni0weDE4MWEpfSx7KDB4MzJkKzkwMDQtMHgyNjFjKSwKKygweDFiMis4MDIyLTB4MjA4YSl9LHsoMHhkMGQrNDM1OS0weDFkZDYpLCgweGE0YiszMDQwLTB4MTVjZSl9LHsKKygweDEzZDQrMTQwOS0weDE5MTUpLCgweDNiMysyMDUwLTB4YjM5KX0seygweDFiNisxOTg0LTB4OTExKSw4MzY0fSx9O2NvbnN0IAordW5zaWduZWQgc2hvcnQgVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbXVsoMHgxMDk0KzQzNjAtMHgyMTlhKV09e3sKKygweDQ1YSs3ODA4LTB4MjJjYSksKDB4ZjgxKzUwOTEtMHgxZmQwKX0seygweDUxMCs3ODg5LTB4MjNjZiksCisoMHgxNmZiKzMwMjktMHgxZjJhKX0seygweDExNmQrOTg5LTB4MTUzNyksKDB4ZmM0KzQ0MTAtMHgxZDZiKX0seworKDB4MTA1ZisyODUzLTB4MWI3MCksKDB4MTY3MSszNDY1LTB4MjA1Zil9LHsoMHg2ZjMrNjA1Ny0weDFlODcpLAorKDB4MjUyMys1NDQtMHgyMzlhKX0seygweDE5N2ErMzQzNi0weDI2ZDApLCgweDE0MDcrMzktMHgxMDhlKX0seworKDB4YTZjKzY5NDItMHgyNTczKSwoMHg3MzcrMzA5MC0weGZhMSl9LHsoMHgxMDc3KzQ1NTEtMHgyMjI2KSwoMHhmMjYrNzMzLTB4ZTYwKX0KKyx7KDB4NTBkKzY1ODYtMHgxZWFlKSwoMHhhMDcrMzQxMC0weDEzYzEpfSx7KDB4Mjk3Kzg0MzQtMHgyMzZmKSwKKygweDkxMSsyNzY3LTB4MTA0Mil9LH07Y29uc3QgdW5zaWduZWQgY2hhciBVQ1MyX1RvX0dTTURlZmF1bHRfVGFibGVfQVNDW109eworTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKKygweDEwYmIrNDAxMS0weDIwNWMpLE5PTl9HU00sTk9OX0dTTSwoMHgxNGU5KzQyMTMtMHgyNTUxKSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4NGJiKzExNDItMHg5MTEpLAorKDB4MTMwNCs4MDEtMHgxNjA0KSwoMHg1ZDkrNDA3NS0weDE1YTIpLCgweDZkZCs2MDcwLTB4MWU3MCksKDB4MjIxYis2NDItMHgyNDliKSwKKygweDE2NjcrNjc2LTB4MThlNiksKDB4YTczKzMyNzctMHgxNzFhKSwoMHgyMTE3KzE5OC0weDIxYjYpLCgweDZmYisyNTAyLTB4MTA5OSksCisoMHhiMTQrMzU5Ny0weDE4ZjgpLCgweDExY2MrMzkwMC0weDIwZGUpLCgweDI0OTMrNjYzLTB4MjZmZiksKDB4MjE5Nys2OTItMHgyNDFmKQorLCgweDgwNSs2MjE1LTB4MjAxZiksKDB4OTg2KzcyMzEtMHgyNTk3KSwoMHg0OCs5NTU2LTB4MjU2ZCksKDB4NTk0KzQzMzgtMHgxNjU2KSwKKygweDZiMys0NjAxLTB4MTg3YiksKDB4MTdiNysxMjI5LTB4MWM1MiksKDB4ZjErMjg4Ni0weGMwNCksKDB4NmMzKzE1OTYtMHhjY2IpLAorKDB4MTUzYSs3MS0weDE1NGMpLCgweDEwNGQrMzAyLTB4MTE0NSksKDB4MjlmKzczMjctMHgxZjA3KSwoMHhiZDArMzYxMC0weDE5YjIpLAorKDB4MTgyMis5ODctMHgxYmM0KSwoMHgzNzUrNDk5MC0weDE2YjkpLCgweDFhMDUrMTgwNS0weDIwZDcpLCgweGJiMisyMDMxLTB4MTM2NSkKKywoMHhiNGIrNTcxMS0weDIxNWQpLCgweDExYTgrNDI5My0weDIyMmYpLCgweGNjYis0MTk0LTB4MWNlZSksCisoMHgyMDRjKzM1NS0weDIxYWYpLCgweDM0OSs0MDkzLTB4MTMwNSksKDB4Y2M1KzY1OTQtMHgyNjQ1KSwoMHhjZjgrMzctMHhjZGEpLAorKDB4NzUzKzMyMjItMHgxM2E1KSwoMHg1MjQrMzQ3MC0weDEyNmQpLCgweDE2MSs3MjYyLTB4MWQ3OSksKDB4NGFkKzI5MDctMHhmYzEpLAorKDB4MjQ5KzU4LTB4MjNiKSwoMHg1NTQrMzE4MS0weDExNzgpLCgweDE3OTIrNzc0LTB4MWE0ZSksKDB4NmRkKzU0MDYtMHgxYmIwKSwKKygweDY5Mys2NTQtMHg4ZDUpLCgweGI1Yys5MDYtMHhlOTkpLCgweGYwMis1Nzc3LTB4MjU0NSksKDB4MWRkKzEyOS0weDIwZiksCisoMHg4M2QrNzU3NC0weDI1ODMpLCgweGViYSszMzQtMHhmYjcpLCgweGNlNis1MjgwLTB4MjEzNCksKDB4ZmUyKzIxODAtMHgxODEzKSwKKygweDkwMCsyMDQzLTB4MTBhNyksKDB4Yjg5KzU5MzMtMHgyMjYxKSwoMHgxMmU3KzE3NDYtMHgxOTYzKSwoMHhmYmQrMzY0MS0weDFkOWYpCissKDB4NDVmKzMwNDMtMHhmZWEpLCgweDFjMTUrMjcwNi0weDI2NGUpLCgweDE3ZmYrMjk5Ny0weDIzNWEpLE5PTl9HU00sTk9OX0dTTSwKK05PTl9HU00sTk9OX0dTTSwoMHg2YiszMzQzLTB4ZDY5KSxOT05fR1NNLCgweGY4Zis0MjYwLTB4MWZkMiksCisoMHgxMDRiKzQ1MDMtMHgyMTgwKSwoMHgyY2ErNDc3Mi0weDE1MGIpLCgweDY5NSszMjI2LTB4MTJjYiksCisoMHgxMjE5KzMyOTEtMHgxZThmKSwoMHgxMWFhKzIzNTQtMHgxYTc2KSwoMHhiZGQrMzM4Ny0weDE4YjEpLCgweGFkKzk1MDItMHgyNTYzKQorLCgweGVhMysyNDI0LTB4MTdiMiksKDB4YThhKzcxOTgtMHgyNjNlKSwoMHgxZTI4KzE4OTQtMHgyNTIzKSwKKygweDE2MzYrOTMwLTB4MTk2YyksKDB4MmMzKzUxMTEtMHgxNjRkKSwoMHg4ZGErNjY5Ny0weDIyOTUpLCgweDE1M2IrMzc4LTB4MTY0NiksCisoMHgyMWJmKzExNzQtMHgyNWU1KSwoMHhmYTMrMzM1MC0weDFjNDgpLCgweDU2NysxOTQ0LTB4YzhkKSwoMHg2YTYrNDEwNi0weDE2M2QpLAorKDB4MTEwKzM2OTgtMHhmMGUpLCgweDdkMCszMjc3LTB4MTQyOCksKDB4MTY4NysyMDE4LTB4MWRmMyksKDB4NTUyKzEzOTctMHhhNTApLAorKDB4MTVkNis0NDkxLTB4MjZlOSksKDB4MWM5ZCsxODIzLTB4MjM0MyksKDB4NDZjKzgzMzMtMHgyNDdmKSxOT05fR1NNLE5PTl9HU00sCiBOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAogTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLCgweDFhZTgrMjQwNC0weDI0MzEpLE5PTl9HU01fUCxOT05fR1NNLCgweDMwKzU0MzUtMHgxNTZhKSxOT05fR1NNX1AsCi0oMHg2N2MrMTg4MS0weGRkMiksTk9OX0dTTSwoMHgxYTEzKzI5NjEtMHgyNTQ1KSxOT05fR1NNLE5PTl9HU00sCi0oMHgxZDk2KzkyNC0weDIxMjApLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHg3YjkrMTc0OS0weGU2YSksCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTAyMSszMjMxLTB4MWNhNSksKDB4YmUxKzUyMTQtMHgxZmZmKQorLE5PTl9HU00sKDB4MTgxKzg2MTItMHgyMzI0KSwoMHgxMjBmKzM4NDAtMHgyMGViKSwoMHgzYTMrMjk3My0weGYzZCksTk9OX0dTTSwKKygweGMwNCszODg5LTB4MWFkNiksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKIE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4MTkzNSsyMjE4LTB4MjFjYiksKDB4MWFjKzUzNzItMHgxNjlhKQotLCgweDg0KzIzOTAtMHg5YmUpLCgweDg5NCs3MjI2LTB4MjQ3MyksTk9OX0dTTV9QLE5PTl9HU01fUCxOT05fR1NNX1AsCi0oMHhkNTcrODc2LTB4MTBiMCksTk9OX0dTTSwoMHhkYjUrNDQwNi0weDFlY2MpLCgweDY0OCszMjM0LTB4MTJjYyksTk9OX0dTTSwKLU5PTl9HU00sKDB4YmUxKzQzNTctMHgxY2E2KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTSwKLSgweDkwZCsxNTMzLTB4ZWYxKSwoMHgxMjVhKzEwMTgtMHgxNjQ5KSwoMHg0N2YrNzgwMi0weDIyOWQpLE5PTl9HU01fUCxOT05fR1NNLAotTk9OX0dTTV9QLE5PTl9HU00sKDB4MWNmNis4OTctMHgyMDFhKSxOT05fR1NNLCgweDQyNSs3OTcxLTB4MjJlYSksTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTV9QLCgweDEzMjUrNDc2LTB4MTQ4MiksKDB4MTBkOSs1MzM2LTB4MjVhMiksKDB4MmNkKzIyMjItMHhiNWUpLAotKDB4NzAwKzgzMy0weDljNiksTk9OX0dTTV9QLE5PTl9HU01fUCxOT05fR1NNX1AsKDB4MjcrNDQwMS0weDExNGYpLE5PTl9HU01fUCwKLSgweDExOGIrMjc4OC0weDFjNmEpLCgweDg1NSs2ODY5LTB4MjMyNiksTk9OX0dTTSxOT05fR1NNX1AsKDB4MTAwYysxMjI2LTB4MTRjZiksCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNX1AsTk9OX0dTTV9QLCgweDc4Zis0MjU2LTB4MTgyNyksCi0oMHgxMzQ3KzM4MzUtMHgyMjM2KSwoMHg0ODArNTA2NS0weDE3Y2QpLE5PTl9HU01fUCxOT05fR1NNLE5PTl9HU01fUCxOT05fR1NNX1AsCi0oMHg2NzYrNjkzMC0weDIxODIpLE5PTl9HU00sKDB4NGQ4KzQ0NTUtMHgxNWMxKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTX07Y29uc3QgCi11bnNpZ25lZCBzaG9ydCB6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtdWygweDU3Nys0MjMtMHg3MWMpXT17ewotKDB4MjRjOCsyNzItMHgyNWNlKSwoMHgxNzk3KzE0MS0weDE4MTgpfSx7KDB4M2QzKzI1OTMtMHhkZTApLCgweDRkZCsyMDAyLTB4YzUxKX0KLSx7KDB4YzFiKzYwOTUtMHgyM2MyKSwoMHhjOGIrMjk5MC0weDE3YmUpfSx7KDB4ZWNhKzQyOTAtMHgxZjYzKSwKLSgweDFkYys3OTIyLTB4MjA1MSl9LHsoMHgzMWQrNjQxMC0weDFiZjgpLCgweDIxNDkrMTMzOS0weDI2MjgpfSx7Ci0oMHgxZGE2KzUzNC0weDFmODApLCgweDE1NzArMTM5Ny0weDFhOGEpfSx7KDB4NmEwKzE5NTItMHhlMDMpLCgweDQ2NSsyMTItMHg0YmIpfQotLHsoMHg3NWYrMzYxMC0weDE1M2IpLCgweDFhOWErMTk0Mi0weDIxZDMpfSx7KDB4MTQ0OSsxMTAwLTB4MTg1NSksCi0oMHgxMWIwKzUxMTMtMHgyNTJkKX0seygweDJiMisxMDM5LTB4NjVjKSw4MzY0fSx9O2NvbnN0IHVuc2lnbmVkIHNob3J0IAotVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbXVsoMHhjNzcrNDg1NS0weDFmNmMpXT17eygweDZiYys1MjYtMHg4YmEpLAotKDB4NDc2KzU3OTMtMHgxNzgzKX0seygweDdkZCszMTIxLTB4MTNmYyksKDB4MTRmOCsxMTM0LTB4MTVjMCl9LHsKLSgweDE0Mys4NDY5LTB4MjI0NSksKDB4OTBhKzUzNjItMHgxYTY5KX0seygweGNhKzczMzItMHgxZDVhKSwoMHhiNzQrNTYxOC0weDFkY2IpCi19LHsoMHgxNTArNTk2Ny0weDE4OGEpLCgweGQ3YiszMy0weDlmMyl9LHsoMHg0NDMrNzA2Ni0weDFmYzcpLAotKDB4NDc4KzQwNDMtMHgxMGEzKX0seygweDE2YjIrNjgxLTB4MTk0NCksKDB4MTg2NCszNzAzLTB4MjMzMyl9LHsKLSgweGE3Mis3MDg4LTB4MjYwYSksKDB4YWU1KzYwMjctMHgxZWNkKX0seygweDE3YjcrMTkwMy0weDFmMGQpLAotKDB4MTE5Yis2MDMxLTB4MjU5Mil9LHsoMHhmNSs3MzU5LTB4MWQ5YSksKDB4Y2ExKzQ2NDItMHgxYjI1KX0sfTtjb25zdCB1bnNpZ25lZCAKLWNoYXIgVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tdPXtOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4ZGErMjEyOS0weDkyMSksTk9OX0dTTSxOT05fR1NNLAotKDB4ODQ5KzI5MDctMHgxMzk3KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sKDB4YTY4KzQzMzEtMHgxYjMzKSwoMHg3ZTQrMjQ4OS0weDExN2MpLCgweDFiNSs5MDkxLTB4MjUxNiksCi0oMHgyNTE4KzIyLTB4MjUwYiksKDB4OTJmKzMyOTgtMHgxNjBmKSwoMHgzNis0OTc5LTB4MTM4NCksKDB4YzZiKzU5NjEtMHgyMzhlKSwKLSgweDVjYys3MTM0LTB4MjE4MyksKDB4MWFhMisxMjM3LTB4MWY0ZiksKDB4MTMxYSsxNzMtMHgxMzllKSwoMHg4NWQrMzA0Mi0weDE0MTUpCi0sKDB4ZmJhKzEyMjAtMHgxNDUzKSwoMHgxMWJjKzQxNjctMHgyMWQ3KSwoMHhjNjgrMTM3OC0weDExOWQpLAotKDB4YTE2KzI5MTQtMHgxNTRhKSwoMHg1MDkrMjA4MS0weGNmYiksKDB4MWIyOSsyNy0weDFiMTQpLCgweDFjNDErOTk3LTB4MWZmNSksCi0oMHg0OGMrNDU3My0weDE2MzcpLCgweDFiMCs1Njk2LTB4MTdiZCksKDB4YWYzKzY4OS0weGQ3MCksKDB4YjdiKzE3NzYtMHgxMjM2KSwKLSgweDVlNys1MTk3LTB4MTlmZSksKDB4YTRiKzYwMzUtMHgyMWE3KSwoMHgyNDNmKzE5Ny0weDI0Y2MpLCgweDE2ZTArNzU2LTB4MTk5YiksCi0oMHgxOWQzKzMzNjYtMHgyNmJmKSwoMHg5ODUrMjgxLTB4YTYzKSwoMHg0MDkrNzQzMS0weDIwZDQpLCgweDFiNTQrMjYxMS0weDI1NGEpLAotKDB4MWVlOSsyMDctMHgxZjdhKSwoMHgxNGM4Kzk4Ni0weDE4NjMpLCgweDVjYyszMjk3LTB4MTJhZCksKDB4MmMyKzM3NDgtMHgxMTI1KSwKLSgweGQ1KzE5MDUtMHg4MDQpLCgweDUzNSs4NDE4LTB4MjVkNCksKDB4MWVjNCs1ODAtMHgyMGM0KSwoMHgxZDA2Kzg5OS0weDIwNDQpLAotKDB4NjNjKzIyODUtMHhlZTMpLCgweDE3YzgrMzQyNi0weDI0ZTMpLCgweDEyMjcrMTM2My0weDE3MzIpLCgweDVmYysyOTgzLTB4MTE1YSkKLSwoMHgxY2VkKzE2NDMtMHgyMzBlKSwoMHg0NDMrMjk3MC0weGY5MiksKDB4MjFmMSsyMTMtMHgyMjdhKSwKLSgweDE3MDcrMzAyNC0weDIyOGEpLCgweDg5YSs2MTEyLTB4MjAyYyksKDB4MWNjZCs4Ni0weDFjZDQpLCgweDE0MmErMTIwNi0weDE4OTApCi0sKDB4MzhmKzE1Ny0weDNkYiksKDB4NTcwKzI4MDUtMHgxMDEzKSwoMHgyMWZiKzg4My0weDI1MWIpLCgweGQzYSs4NzYtMHgxMDUyKSwKLSgweDFhY2MrMTMzLTB4MWFmYyksKDB4MjFkOCs0MTctMHgyMzIzKSwoMHhhMDMrNzIwMi0weDI1Y2UpLCgweDM5YysyMDkyLTB4YjcwKSwKLSgweDZjNCszNTEyLTB4MTQyMyksKDB4NDAwKzQ5NzYtMHgxNzE2KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotKDB4YmQyKzEwMjktMHhmYzYpLE5PTl9HU00sKDB4MWM1NisyMzUwLTB4MjUyMyksKDB4NzVjKzI2NjItMHgxMTYwKSwKLSgweGYzMSs0MTE0LTB4MWVlMCksKDB4MWVjKzcwMTYtMHgxY2YwKSwoMHhiZWErMTU1OC0weDExOWIpLCgweDljNSs0MTE5LTB4MTk3NiksCi0oMHg3MisyMzYwLTB4OTQzKSwoMHgxYjk0KzEyMDgtMHgxZmU0KSwoMHgxYmQwKzQwNS0weDFjZmMpLCgweGQxYSsyNDY1LTB4MTY1MSksCi0oMHhlODIrNTA3NS0weDIxZWEpLCgweDEwMSs5MDk1LTB4MjQxYyksKDB4OWZiKzU4NDAtMHgyMDVlKSwoMHg3YTgrNjYyNy0weDIxMWQpLAotKDB4YWRkKzY2MjgtMHgyNDUyKSwoMHg0OGQrNTgyMy0weDFhZGMpLCgweDVkMCs2MzU5LTB4MWUzNiksKDB4MjBjKzE1NzItMHg3YmUpLAotKDB4MTZhKzI2OTUtMHhiN2UpLCgweDE2OGQrMjk5OS0weDIxZDApLCgweDE3MjkrMjA4Mi0weDFlZDYpLCgweDQ3NyszOTc1LTB4MTM4OCkKLSwoMHgxNzYrOTIxNC0weDI0ZmQpLCgweDEzZmErMzk4NS0weDIzMTMpLCgweGFjMis2NTQ2LTB4MjNkYiksCi0oMHgyN2YrNjkwNC0weDFjZmQpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHg3MzkrMTA2MS0weGI0MyksKDB4ODdmKzQxMjAtMHgxODU3KSxOT05fR1NNLCgweDE1N2ErMjM3OS0weDFlYzQpLAotKDB4ODNhKzMyNTItMHgxNGNhKSwoMHgxYTE2KzkyMC0weDFkYWIpLE5PTl9HU00sKDB4ZTUwKzUxMTYtMHgyMWVkKSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLU5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLE5PTl9HU00sKDB4M2UwKzIwNDItMHhiN2EpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi0oMHgzMTErNTkyMC0weDE5ZDYpLCgweDFhOWErMTU5NS0weDIwYzcpLCgweGYxKzI0NDQtMHhhNjEpLCgweDIwOGErNTk3LTB4MjJkNiksCi1OT05fR1NNLCgweDIzNiszNjI5LTB4MTA0NCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCi1OT05fR1NNLCgweDNkNSs0NzY3LTB4MTYxNyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxMGI0KzIzMC0weDExM2UpLAotTk9OX0dTTSwoMHgxYzQzKzE5MDUtMHgyM2E5KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHhiZDgrMjkwMS0weDE2Y2YpLE5PTl9HU00KLSxOT05fR1NNLCgweGJmMCsyODM3LTB4MTZlNyksKDB4MjU1ZisxODktMHgyNTlkKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwKLSgweDIwYjkrMTY4MS0weDI2Y2YpLCgweDExODUrMzA5Ny0weDFkOGYpLCgweGU5MyszMDI3LTB4MWE0OSksTk9OX0dTTSwKLSgweDE3ZGMrMzc0Ny0weDI2N2IpLCgweDQzMis4MDk5LTB4MjNkMCksTk9OX0dTTSxOT05fR1NNLCgweDQwNys3MjI0LTB4MjAzOCksCi1OT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLCgweDdjOCs2MTA2LTB4MWYyNSksKDB4MzFmKzY3NjMtMHgxZDgyKSxOT05fR1NNLAotTk9OX0dTTSxOT05fR1NNLCgweDEzZTErMzMxMy0weDIwNTYpLE5PTl9HU00sKDB4MTA0NSs0MTg3LTB4MjA5NCksCi0oMHgxMTNmKzQ5NDgtMHgyNDhkKSxOT05fR1NNLE5PTl9HU00sKDB4MmMwKzU4MjktMHgxOTA3KSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTQotfTtjb25zdCB1bnNpZ25lZCBzaG9ydCB6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW109ewotKDB4MTI2YyszNzc4LTB4MjBlZSksKDB4ZGI3KzQ5NzktMHgyMDg3KSwoMHgxZTQrNzgyOS0weDIwNTUpLCgweDFkYiszMzQxLTB4ZTQzKSwKLSgweDEwOTArMTQ2OC0weDE1NjIpLCgweGI0MyszMDkyLTB4MTY2ZSksKDB4MTYyZis4MzYtMHgxODc5KSwoMHhkYjgrNTUyMi0weDIyNWQpCi0sKDB4MTI1MysxNjY0LTB4MTdlMCksKDB4Yjc0KzUwOTktMHgxZTc4KSwoMHg2MWQrNTMxOC0weDFhZDkpLAotKDB4NjQ5KzczMTAtMHgyMjAzKSwoMHg5YjIrNjY4LTB4YjVhKSwoMHgyZmIrMjMyMi0weGMwMCksKDB4MTdjNyszMDk1LTB4MjMxZCksCi0oMHhmZGIrMTI5Ny0weDE0MGIpLCgweDQ1Nys5MzEyLTB4MjUyMyksKDB4MTU2KzEwNjUtMHg1MjApLCgweDFkMTUrMTAxNy0weDIwNjQpLAotKDB4YmUzKzM3MjMtMHgxOWE3KSwoMHg2ODQrNjI1LTB4ODM1KSwoMHgyNWEzKzIwMjItMHhiNmIpLCgweDFjZCsyMDE2LTB4OTRmKSwKLSgweDEwYys0MTk4LTB4MTExNiksKDB4MjZiNSsxNjk5LTB4Y2FjKSwoMHgyMjU0KzkzMC0weDI1MjMpLCgweGUxZCs1Njc5LTB4MjNkMCksCi0oMHgxMGEzKzE2NDctMHgxNjcyKSwoMHgyNjcrODM5OS0weDIyNzQpLCgweDRlMys0NzE5LTB4MTY3MCksKDB4MjM2Yys5MzEtMHgyNjQ1KQotLCgweDFjYis5MDM2LTB4MjQ0ZSksKDB4MTgzKzc4NDgtMHgyMDBiKSwoMHg3MmQrNjg4NS0weDIxZjEpLCgweGM2MSsxMDk0LTB4MTA4NSkKLSwoMHhkNzErNDk5MS0weDIwY2QpLCgweDFlY2QrNjM1LTB4MjA5OCksKDB4MWJmZCsyMzUtMHgxY2MzKSwKLSgweDEzM2ErMTM2NS0weDE4NjkpLCgweDU0ZisxODcyLTB4Yzc4KSwoMHgxYjIxKzI2NzQtMHgyNTZiKSwKLSgweDEzNDUrMjAzOS0weDFiMTMpLCgweDU3OSs4NTc5LTB4MjZkMiksKDB4ZTIzKzYxMzEtMHgyNWViKSwoMHg0N2IrNzYxNy0weDIyMTApCi0sKDB4OWY4KzQ5MjQtMHgxZDA3KSwoMHgyYzMrOTA1Ni0weDI1ZjUpLCgweDk5NSsyMDI5LTB4MTE1MyksCi0oMHgxYzU5KzE1NzMtMHgyMjRlKSwoMHhjN2ErMTkxNC0weDEzYzMpLCgweDExYzYrMTA3MC0weDE1YzIpLAotKDB4NTkzKzY0NjctMHgxZWEzKSwoMHgzMzErNDU4OS0weDE0ZWEpLCgweDE0NWErODkwLTB4MTc5ZiksKDB4MWJjOSsxNzQtMHgxYzQxKSwKLSgweDE0NTkrNjkxLTB4MTZkNSksKDB4YmM3KzY5ODYtMHgyNmQ5KSwoMHgyM2Y5KzIwMS0weDI0ODkpLCgweGMyYysxNzU4LTB4MTJkMCksCi0oMHg4ODYrNDEzOC0weDE4NzUpLCgweDkwZCs1ODkxLTB4MWZkNCksKDB4NzViKzUwMTMtMHgxYWIzKSwoMHg0YTQrNzUxMC0weDIxYmMpLAotKDB4N2E4KzM0NC0weDhjMSksKDB4NGRkKzIyNjItMHhjZTYpLCgweDNjNCs0MTMtMHg1MjApLCgweDdhZCs1MTQwLTB4MWI3ZiksCi0oMHhkOGErMzgyMy0weDFjMzYpLCgweDFlYzErMTY0OC0weDI0ZWQpLCgweGM2OSsxMzE2LTB4MTE0OCksKDB4NTg2KzE1OTUtMHhiN2IpLAotKDB4MjZmKzI3MC0weDMzNiksKDB4MzMzKzU4NjktMHgxOWQ4KSwoMHgzOGIrNjQyMC0weDFjNTYpLCgweDFiMDgrMjUyOS0weDI0OWYpLAotKDB4YjA3KzM1MDYtMHgxODZlKSwoMHhlZjkrNDAyMy0weDFlNjQpLCgweDFmNmQrMTY5NS0weDI1YmYpLCgweDVhNys2ODUzLTB4MjAxZSkKLSwoMHhkZTkrOTk0LTB4MTE3YyksKDB4NjYyKzY3MDgtMHgyMDQ2KSwoMHg0MmYrODgyNS0weDI2NTcpLCgweDU4NSsyODA1LTB4MTAyOCksCi0oMHg5Mys4MjE2LTB4MjA1OCksKDB4MTYxYisyMDI3LTB4MWRiMiksKDB4MTdjNis0MTgtMHgxOTEzKSwoMHgxNjc0KzE3NzYtMHgxZDBlKQotLCgweDc4MysxODEzLTB4ZTQxKSwoMHhkYTIrNTQ1Ny0weDIyOWIpLCgweDExYjUrMjQ4MC0weDFiMGMpLCgweGE1OSs0NDkxLTB4MWI4YSkKLSwoMHg2NTMrNTY1OS0weDFiYWIpLCgweGFmZis1MzQzLTB4MWYwOSksKDB4ZTYxKzQwOTUtMHgxZDg2KSwKLSgweDEwYTUrMzYwNi0weDFkZGYpLCgweDZhOCs0NDIyLTB4MTc0NyksKDB4MTBmZCs1MzM4LTB4MjU1OSksKDB4MWYxYis0MS0weDFlZTMpCi0sKDB4MzRmKzEwNTYtMHg3MGQpLCgweDQ4MCsxMzk4LTB4OTkzKSwoMHgyNmErMTM4MC0weDc2YSksKDB4NTBmKzI0MDUtMHhlMGYpLAotKDB4MTVkKzI2MjAtMHhiMzMpLCgweDMxNiszODE2LTB4MTE5NyksKDB4MjExOSszOTAtMHgyMjM3KSwoMHgyMWYwKzg1My0weDI0ZGMpLAotKDB4MTA5Mis0NTQ5LTB4MjFlZCksKDB4MTQ4NSszNTY3LTB4MjIwOSksKDB4MmIyKzgzOTQtMHgyMzEwKSwKLSgweDFkZGQrMTE5Ny0weDIyMWQpLCgweDg5YSsyMjc4LTB4MTExMiksKDB4MWRkZCsxODU2LTB4MjRhZSksCi0oMHgyNTExKzM4Ny0weDI2MjQpLCgweDhiZCszMjkyLTB4MTUyOCksKDB4MjkzKzI2MzItMHhjNjkpLCgweDY0OCsxMDYtMHg2M2YpLAotKDB4MjBkMisxNDQ5LTB4MjYwNyksKDB4MTlhMisxMTEwLTB4MWQ4MyksKDB4MTEwOCszMzA1LTB4MWQ3YiksCi0oMHhiMDgrNTEzNS0weDFlYTApLCgweDNkYys4MDYtMHg2OGEpLCgweDU5ZisyMzItMHg2MGUpLCgweDk4MCsyMDczLTB4MTExZiksCi0oMHgxZDQ4KzIzNDEtMHgyNThhKSwoMHhhM2IrNTA3MC0weDFkMTQpLCgweDEyY2IrMzc4Ny0weDIxMzYpLAotKDB4MWE4ZisyODg1LTB4MjRkOCksKDB4MjIzNysxMjk2LTB4MjY2Nyl9O2NvbnN0IHVuc2lnbmVkIHNob3J0IAotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbXT17KDB4MTQ0ZisxNDgxLTB4MTlkOCksKDB4OTFiKzQxMjgtMHgxODk4KSwKLSgweDhlZisxNTU3LTB4ZWUwKSwoMHgzYWErMjUwMC0weGNjOSksKDB4ZWUyKzQxMjUtMHgxZTE3KSwoMHhmN2MrMzUyOC0weDFjNWIpLAotKDB4MTM5Mis1MTQ5LTB4MjZiNiksKDB4OWE1KzE1OTUtMHhlZjQpLCgweDdiMSs1MDU2LTB4MWE3ZiksKDB4MTRmNisxMjk5LTB4MTk0MikKLSwoMHg1MCs1ODgtMHgyOTIpLCgweDFhZDIrMTA2Ni0weDFlMjQpLCgweDE5YjQrMzQ2My0weDI2NDMpLCgweDQ3NiszNzMyLTB4MTJmZCksCi0oMHhhMzErMjQzOS0weDEyZjMpLCgweDI0MzcrNzUxLTB4MjY0MSksKDB4NTQ3KzYxNjUtMHgxOWM4KSwoMHgzMzgrNjAwMC0weDFhNDkpLAotKDB4NjRkKzc4NzYtMHgyMTZiKSwoMHgxY2YyKzIzMjMtMHgyMjcyKSwoMHgxNzNhKzQxMjEtMHgyM2I4KSwKLSgweDFiODUrMTE4LTB4MTg1MiksKDB4Njc0KzE2MjAtMHg5MjgpLCgweGI0NCsyNTU1LTB4MTE5NyksKDB4MWY4NiszNjUtMHgxZDUwKSwKLSgweDExYTIrMTI2LTB4ZTg4KSwoMHgxNjY5KzEwODgtMHgxNzBiKSwoMHg3MDIrODEzMS0weDI2MjUpLCgweDE1Mys0MzA3LTB4MTE2MCksCi0oMHgyNTMyKzI0OS0weDI1NDUpLCgweGUxNysxODg5LTB4MTQ5OSksKDB4MTAxNys1ODUtMHgxMTk3KSwoMHhjZTcrNjUyLTB4ZjUzKSwKLSgweDY0Kzk2MDMtMHgyNWM2KSwoMHg5ZDkrNzA0NC0weDI1M2IpLCgweGI3ZCs1NjY1LTB4MjE3YiksKDB4MTM5NCs0ODU4LTB4MjVlYSksCi0oMHhhNjUrNjMyOC0weDIyZjgpLCgweDQzNCszMDcxLTB4MTAwZCksKDB4YjIyKzMtMHhhZmUpLCgweDE5MWYrOTU3LTB4MWNiNCksCi0oMHhlYjIrMzE3Ni0weDFhZjEpLCgweGM2KzMzODMtMHhkZDMpLCgweDFiNDIrMjg2NC0weDI2NDcpLCgweDY4Nis2MTAzLTB4MWUzMSksCi0oMHgxMGYzKzM2NzktMHgxZjI1KSwoMHgxMGZjKzQwLTB4MTBmNiksKDB4ZGU5KzE0MzgtMHgxMzU4KSwoMHgxNjU4KzcyOS0weDE5MDEpLAotKDB4OTk1KzEzOTQtMHhlZDYpLCgweDQ3NSszMDQyLTB4MTAyNSksKDB4YzIxKzMyMDQtMHgxODcyKSwoMHgyZGQrNTQ4LTB4NGNkKSwKLSgweDc3Yys1ODIxLTB4MWUwNCksKDB4ZGErNTg4MS0weDE3OWQpLCgweDgyOSszMDM0LTB4MTNjYyksKDB4MTZhOSsxNDg0LTB4MWMzZCksCi0oMHhmYzErNTg0OS0weDI2NjEpLCgweDc0Nis5Ni0weDc2YyksKDB4MThlZCsxODE5LTB4MWZjZCksKDB4ODk4KzI3NS0weDk2ZiksCi0oMHg5NjkrNzQwMC0weDI2MTQpLCgweDg4NCs2MC0weDg4MiksKDB4ZWI4KzQ3MzAtMHgyMGYzKSwoMHgxMTM5KzMyNDAtMHgxZDQwKSwKLSgweDIwYjYrMzAwLTB4MjFhMSksKDB4NmE5KzY3OTYtMHgyMGYzKSwoMHgxYWZjKzE4MS0weDFiNmUpLCgweDk4NyszNzAyLTB4MTdiOSksCi0oMHgxYWU1Kzk4Ny0weDFlN2IpLCgweDE0NSs3My0weDE0OCksKDB4NjFjKzUwODktMHgxOWI2KSwoMHgyMDU2KzY4MS0weDIyYjcpLAotKDB4MTFmKzIwNTUtMHg4ZGQpLCgweDEzMWYrNDcxNi0weDI1NDEpLCgweDEwZTkrMzIzNi0weDFkNDIpLCgweDZhZCsyMTY5LTB4ZWRhKSwKLSgweDRlMys1MjgzLTB4MTkzOSksKDB4MTU4ZCszOTk4LTB4MjRkZCksKDB4MTY1MisxMTgyLTB4MWFhMSksCi0oMHgxMTQ5KzE1MzQtMHgxNmY3KSwoMHhiYjIrOTgyLTB4ZjM3KSwoMHhmYzMrMzE4OC0weDFiZTUpLCgweDhhYSs2MDQ4LTB4MWZmNyksCi0oMHgxYTU2KzEzNS0weDFhODkpLCgweDRkZCszMjcxLTB4MTE0ZiksKDB4MzM0KzQ3NzYtMHgxNTg2KSwoMHgxZWM1KzU4Ny0weDIwYjkpLAotKDB4NWNiKzM5NDEtMHgxNGQ4KSwoMHg3NDMrNzM0MC0weDIzOTYpLCgweDYzOCsyNTg5LTB4ZmZiKSwoMHgxN2M2KzE2NTgtMHgxZDdjKSwKLSgweDkwOCs2NzQ0LTB4MjI4YSksKDB4MjI4KzQ4MjAtMHgxNDJiKSwoMHgxMmE4KzI1NzctMHgxYmRkKSwoMHhmZjMrNTk4OS0weDI2YjEpCi0sKDB4MTY1MiszODQ4LTB4MjQ5YiksKDB4NDViKzU1NTEtMHgxOWE5KSwoMHgxYzBmKzE0NzMtMHgyMTZlKSwKLSgweDE5ZTErMjE4MS0weDIyMDMpLCgweGEwNSs2OTY1LTB4MjRkNiksKDB4MWI1OSs4NTgtMHgxZTRlKSwKLSgweDEwN2ErMTQ2NC0weDE1Y2MpLCgweDkwOCs3NTk2LTB4MjY0ZCksKDB4YTdiKzIyMi0weGFmMSksKDB4MTFjYSszMTkzLTB4MWRkYSksCi0oMHhkMGIrMjYwNy0weDE2ZDApLCgweDFmMmYrMTYzMS0weDI1MjMpLCgweDEwN2ErNDgzNy0weDIyZjMpLAotKDB4ZDM4KzUxNzQtMHgyMTAxKSwoMHgxMzg2Kzk2OC0weDE2ZTApLCgweDRiZCs2MDA2LTB4MWJjNCksKDB4YmI3KzYzOS0weGRjNiksCi0oMHhhMSs2MTM4LTB4MTgyYSksKDB4YzgzKzE3NjYtMHgxMmY3KSwoMHgxNmYzKzM2ODUtMHgyNGU1KSwoMHgxNDYyKzE0Ni0weDE0ODApLAotKDB4M2NhKzE5NjQtMHhiMDEpLCgweDkyNSs3MTc4LTB4MjRiOSksKDB4YzI5KzQzOTgtMHgxY2UwKSwoMHhhMjYrOTM3LTB4ZDU3KSwKLSgweDkyMSs4MzktMHhiZWYpLCgweDExYTkrMzkwNC0weDIwNmYpLCgweDY4NSsxNzc1LTB4YzkwKSwoMHgxZjgrODg1My0weDIzOTcpLAotKDB4MWU1Zis3MTYtMHgyMDNhKSwoMHgxZTcrNTY5Ni0weDE3MmIpLCgweGNkNCsyMDM2LTB4MTNlOCl9O2ludCBCeXRlczJTdHJpbmcoCitOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgxOGU3KzI4MDUtMHgyMzdjKSxOT05fR1NNLAorTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4YWJjKzI1NDAtMHgxNDRkKSwoMHgyNDcrNzc1Mi0weDIwODEpLAorKDB4YzlhKzIxMzctMHgxNGQ3KSwoMHhiY2IrODY3LTB4ZjI1KSxOT05fR1NNLCgweGVhKzU5MzQtMHgxN2Y5KSxOT05fR1NNLE5PTl9HU00KKyxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sKDB4OGI0KzUwMTUtMHgxYmVlKSxOT05fR1NNLE5PTl9HU00sCitOT05fR1NNLE5PTl9HU00sKDB4MjM5KzI5ODEtMHhkODIpLE5PTl9HU00sKDB4MTM4YiszMDI0LTB4MWY1MCksTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSwoMHgxNmU2KzI5MzYtMHgyMjAwKSxOT05fR1NNLE5PTl9HU00sKDB4Zjc4KzM4OC0weDEwZGUpLAorKDB4Y2FhKzY2NzUtMHgyNjNlKSxOT05fR1NNLE5PTl9HU00sTk9OX0dTTSwoMHgyYTErOTA1Ny0weDI1ODcpLAorKDB4MjIzMis5OTItMHgyNjAzKSwoMHgyMzgrMzIxMy0weGVhOCksTk9OX0dTTSwoMHhkZjIrMjk1My0weDE5NzcpLAorKDB4ZjNiKzQ3OS0weDExMTUpLE5PTl9HU00sTk9OX0dTTSwoMHgyZDkrOTctMHgzMzMpLE5PTl9HU00sTk9OX0dTTSxOT05fR1NNLAorTk9OX0dTTSwoMHgxMzQ0KzQ3ODAtMHgyNTczKSwoMHgyOGMrOS0weDI4ZCksTk9OX0dTTSxOT05fR1NNLE5PTl9HU00sCisoMHhkNDErMzQyLTB4ZTFiKSxOT05fR1NNLCgweDIzNys4ODQtMHg1OWYpLCgweDI1Yis1MTMxLTB4MTY2MCksTk9OX0dTTSxOT05fR1NNLAorKDB4NTlmKzY4My0weDdjYyksTk9OX0dTTSxOT05fR1NNLE5PTl9HU019O2NvbnN0IHVuc2lnbmVkIHNob3J0IAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZVtdPXsoMHgzNGYrNzc4NS0weDIxNzgpLCgweDJhNiszMTAtMHgzMzkpLAorKDB4MTc1YisxNzg1LTB4MWUzMCksKDB4MTBmKzUyMjYtMHgxNGQ0KSwoMHgxYzdjKzI4MTYtMHgyNjkyKSwKKygweDE1OGErMjIzMy0weDFkNWEpLCgweDIzMzkrNTI5LTB4MjQ1MCksKDB4OTYxKzI5MzUtMHgxM2ViKSwoMHhhMzkrNzIxMC0weDI1NzApCissKDB4MWQ3ZCsxNTMxLTB4MjI5MSksKDB4Zjk5KzIxNjItMHgxODAxKSwoMHg3MGYrMjcwNy0weDEwY2UpLAorKDB4MTM3NSs0MzExLTB4MjM1OCksKDB4YjZkKzU4NjItMHgyMjQ2KSwoMHhlNmIrNTEwMS0weDIxOTcpLCgweGQyMSsxNTgxLTB4MTI2ZCkKKywoMHg0ZDArODUyOC0weDIyOGMpLCgweDE3MTArNDAwNi0weDI2NTcpLCgweDUzYisyNjQ2LTB4ZWU3KSwoMHg0OWQrNjk0Ni0weDFlZjgpCissKDB4MWM1MCsyMTk0LTB4MjQyMiksKDB4MjIyNyszMjY2LTB4Y2NiKSwoMHgxYjNmKzE3NjItMHgyMWMzKSwKKygweDI0Yys3MjI3LTB4MWUyYiksODM2NCwoMHgxNjg2KzMxODUtMHgyMjI0KSwoMHgxMTYwKzI2MzMtMHgxYjJkKSwKKygweGYwZis1MjQtMHgxMDdiKSwoMHgxYjFiKzE4OTgtMHgyMWMzKSwoMHgyMDEyKzE1NDUtMHgyNTM5KSwoMHhhMDUrNDk5OS0weDFjYzIpCissKDB4NGZjKzY0MzItMHgxZDUzKSwoMHgxYjEwKzI0ODMtMHgyNGEzKSwoMHgxYzE3KzYxOC0weDFlNjApLCgweDdmZisxMDE0LTB4YmQzKQorLCgweDE3YTArNjE0LTB4MTllMyksKDB4YmM0KzY4MDEtMHgyNWE1KSwoMHgzMzcrNzg4Ni0weDIxZTApLCgweGY5OCs0NDk2LTB4MjEwMikKKywoMHgxMTk4KzExMC0weDExZGYpLCgweDFiMCs0ODgxLTB4MTQ5OSksKDB4MTI5NysxODI2LTB4MTk5MCksCisoMHgxMmY1KzgzMC0weDE2MDkpLCgweDE3NDYrMzIzMS0weDIzYmEpLCgweDNhKzMxMzUtMHhjNGQpLCgweDJiOSs2MjQ4LTB4MWFmNCksCisoMHg3ZDMrMjUzMy0weDExOGEpLCgweGU3ZCsxMTg0LTB4MTJlZSksKDB4ODg1KzYxNjAtMHgyMDY1KSwoMHhmMTkrNTg5NC0weDI1ZWUpLAorKDB4MzJmKzQ1ODUtMHgxNGU2KSwoMHg1Yys3MzItMHgzMDUpLCgweDg3NCszOTE3LTB4MTc4ZCksKDB4OGRhKzcyMi0weGI3NyksCisoMHgxMmRiKzQyMDMtMHgyMzEwKSwoMHhhZmYrNDg2MC0weDFkYzQpLCgweDE2MCs0NDE1LTB4MTI2NyksCisoMHgxYWI5KzMwNTUtMHgyNjZmKSwoMHgxNjVhKzMwMzItMHgyMWY4KSwoMHgxYWIxKzExOC0weDFhZWMpLAorKDB4MWY4NysxMDgxLTB4MjM4NCksKDB4MTcwYysyOTgzLTB4MjI3NiksKDB4NjRjKzY2NTYtMHgyMDBlKSwoMHhkMDkrNDA3LTB4ZTYxKSwKKygweDEwNDErNDAxNC0weDFmMjIpLCgweGI2Mis1NjgzLTB4MjE1NCksKDB4MTk0MCsyMjg2LTB4MjFlYyksCisoMHg1OGIrNDQ1MS0weDE2YWIpLCgweDFkNis1NDAzLTB4MTZhZCksKDB4MWUyKzIwOTEtMHg5YzgpLCgweDFiOWIrMjQ0Ni0weDI0ZTMpLAorKDB4MWU3ZisxOTIzLTB4MjViYiksKDB4OGFjKzQ1NjQtMHgxYTM4KSwoMHg5ZGMrNTgyMS0weDIwNTApLCgweDIwMCs1MDM2LTB4MTU2MikKKywoMHgyYzErNzY3OS0weDIwNzUpLCgweDFjODMrMjYxMC0weDI2NjkpLCgweDIzMDArMzIxLTB4MjNmNCksCisoMHgxMTVjKzU1Ni0weDEzM2EpLCgweGU3YSs2MjYyLTB4MjZhMSksKDB4YjMzKzY2MS0weGQ3OCksKDB4MWI4MSsyNzEyLTB4MjVjOCksCisoMHhhOTErMzI4Ny0weDE3MTYpLCgweDI0MysyMjA2LTB4YThlKSwoMHg0ZTUrMjM2NC0weGRjZCksKDB4OTQ1KzgxOC0weGMyMiksCisoMHgxMDkrNTE4MS0weDE0ZjApLCgweDFiYTcrNDkzLTB4MWQzZCksKDB4YjIzKzQ5NzMtMHgxZTM4KSwoMHgxNTc0KzYzNi0weDE3OTcpLAorKDB4NmZjKzM2NzktMHgxNTAxKSwoMHg1NjErMTM0NC0weDlkZSksKDB4NWQ4KzMxMDgtMHgxMTI3KSwoMHgyMWFkKzM5Mi0weDIyNWIpLAorKDB4NzczKzI5NDEtMHgxMjE0KSwoMHg0NmMrODI5LTB4NzAyKSwoMHgxZjRjKzc0Mi0weDIxYjQpLCgweDE3ZDcrMzM2NS0weDI0OWIpLAorKDB4ZDA1KzU4NzMtMHgyMzk0KSwoMHg0MzErNDcyNi0weDE2NDQpLCgweDg1ZisxMzExLTB4ZDFhKSwoMHg2NWErOTcwLTB4OWJmKSwKKygweGZkKzkxMDItMHgyNDI1KSwoMHg2MmQrNzMtMHg2MGYpLCgweDEyZmMrMjQ3Ni0weDFjNDApLCgweGNhOSsyOTU1LTB4MTdjYiksCisoMHgxNTY5KzI4MzgtMHgyMDE1KSwoMHgxZDc0KzEwMTQtMHgyMGZmKSwoMHhhZTYrMzg3NC0weDE5OWMpLAorKDB4N2JiKzY3NDItMHgyMWE0KSwoMHgxMjArNTE0Mi0weDE0YzgpLCgweDFiNDArMTYzNS0weDIxMzQpLCgweDQxMis2OTIxLTB4MWVhYikKKywoMHgxZTQzKzIyNTgtMHgyNmE0KSwoMHhlOGErMjkyMS0weDE5ODEpLCgweDcwYys4MjE0LTB4MjZhZiksCisoMHgyNDc3KzM1Ny0weDI1NjgpLCgweDUyMSs3NDc4LTB4MjFlMiksKDB4ZDcyKzYwNjAtMHgyNGE4KSwoMHg1M2IrNjgyOC0weDFmNzApLAorKDB4YjkrMjYzMy0weGE4YSksKDB4ZTM2KzQyNjgtMHgxZTY5KSwoMHhmOTArNjA0OS0weDI2YjcpLCgweGQ4MCszODcyLTB4MWJiZCksCisoMHhiMWIrMTc0NC0weDEwZjYpLCgweGIwOCs0Mjc3LTB4MWI1ZCksKDB4MTc0MCsyNTMzLTB4MjAyOSksCisoMHgxYTA1KzMwMTQtMHgyNGViKX07Y29uc3QgdW5zaWduZWQgc2hvcnQgenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbXT17CisoMHhhM2MrNjcxMC0weDI0MzIpLCgweDY3Yis4MjIwLTB4MjVmNCksKDB4YTdiKzI5MzctMHgxNWQwKSwoMHgyMWI0KzUxNi0weDIzMTMpLAorKDB4MjU1Zis1NDAtMHgyNjkzKSwoMHgxMjYzKzU0NDktMHgyNmMzKSwoMHgxMzA4KzM5NjgtMHgyMThmKSwoMHhjZTIrOTAtMHhjNTApLAorKDB4OTAwKzY5ODMtMHgyMzU1KSwoMHgxNzA4KzMwODQtMHgyMjRkKSwoMHgxMzcrMTI1OS0weDYxOCksKDB4MThmNSszMjAtMHgxOTVkKSwKKygweDIyYjIrMTA3LTB4MjIyNSksKDB4MzIwKzI2MjAtMHhkNGYpLCgweDE0N2QrMjgwMC0weDFlYTgpLCgweDIzYis3NTItMHg0NDYpLAorKDB4NzFkKzk0LTB4M2U3KSwoMHgxOTgyKzMyNDEtMHgyNWNjKSwoMHgyMmZjKzEyNzctMHgyNDUzKSwoMHgxNWExKzE1ODgtMHgxODQyKSwKKygweDEyYTQrMzE3OC0weDFiNzMpLCgweDIwNDArMjM3NS0weDI1ZGUpLCgweGJkZis1NzkwLTB4MWVkZCksKDB4NzhmKzkzMi0weDc4YiksCisoMHgxZmExKzE3MDgtMHgyMmFhKSwoMHg2MzErNTQwMS0weDE3YjIpLCgweDExZGMrNDU1OS0weDIwMGQpLAorKDB4YjUwKzY4NTgtMHgyNTdhKSwoMHgxZTYwKzEyMzAtMHgyMjY4KSwoMHhiZmErNDMzMi0weDFjMDApLCgweDVkNSsyMDAxLTB4Y2M3KSwKKygweDEwODQrMjIxNy0weDE4NjQpLCgweDE2ZTQrMjQyMi0weDIwM2EpLCgweGU3Zis2MjQ4LTB4MjZjNiksKDB4NTE2KzEzOTUtMHhhNjcpCissKDB4NDZmKzY2MzktMHgxZTNiKSwoMHgxZjMrMzYyNC0weGY3NyksKDB4MWY4NSsxOTQzLTB4MjZmNyksKDB4MWQ4KzI3MjAtMHhjNTIpLAorKDB4ZmE1KzM5NTgtMHgxZWY0KSwoMHgxMzk3KzEyNy0weDEzZWUpLCgweDE4MCs5MTQzLTB4MjUwZSksKDB4Yjk5KzM3MDYtMHgxOWU5KSwKKygweDZjYis3NTgwLTB4MjQzYyksKDB4NzhkKzQzMTgtMHgxODNmKSwoMHg0Yis1NDc5LTB4MTU4NSksKDB4MWM2Kzg5OTQtMHgyNGJhKSwKKygweDJlNSs3ODE1LTB4MjEzZCksKDB4MTA1NSsyMjQ5LTB4MThlZSksKDB4ZDE4KzQyMDYtMHgxZDU1KSwoMHg5MjQrNDM1LTB4YWE1KSwKKygweGUwNCs0MjA1LTB4MWUzZSksKDB4MTA4Nis0MTMyLTB4MjA3NiksKDB4NzQ3Kzc3NjQtMHgyNTY2KSwoMHg1NjMrMTM1Mi0weGE3NSksCisoMHhkYmYrOTUyLTB4MTE0MCksKDB4OTBmKzQyODgtMHgxOTk3KSwoMHgxNDFmKzQyODktMHgyNGE3KSwoMHgzOTkrNTk4LTB4NWI1KSwKKygweGFiNyszMDgxLTB4MTY4NSksKDB4MTc3MiszMDEzLTB4MjJmYiksKDB4OGZhKzU2NDAtMHgxZWM1KSwKKygweDE3NzkrMzEzMS0weDIzNzYpLCgweDUyNysyNDQ2LTB4ZTc2KSwoMHhkZCs1NTc5LTB4MTYwNyksKDB4NWY3Kzc4Mi0weDhjNCksCisoMHgyNjQrMjk3OS0weGRjNSksKDB4MzBjKzgzNDgtMHgyMzY1KSwoMHg3ODgrNzk2OS0weDI2NjUpLCgweDE0ZjMrNDY2Ni0weDI2ZTgpLAorKDB4NThkKzQ1NTQtMHgxNzExKSwoMHhmZmIrNTE1MS0weDIzZDMpLCgweDE2MzkrMTg1Mi0weDFkMmQpLCgweDlmMysxNDM2LTB4ZjQ2KSwKKygweGE0OSszNDMyLTB4MTc2NyksKDB4MTFmZisxMzcwLTB4MTcwZSksKDB4MTM4KzIzMDUtMHg5ZWQpLCgweDE1MDkrMzQ2NS0weDIyNDUpCissKDB4MmI0Kzg2OTUtMHgyNDVkKSwoMHg2MjYrMTMyMC0weGFmZiksKDB4Njk1KzY0NjItMHgxZjgzKSwoMHg4ZTQrNzI0MC0weDI0ZGIpLAorKDB4Mzk2KzQyODktMHgxNDA1KSwoMHgxMmExKzQ4NjAtMHgyNTRhKSwoMHgyYjArNTAwLTB4NDUwKSwoMHhmNjIrNDYyNC0weDIxMWQpLAorKDB4ZDNmKzExNzAtMHgxMTdiKSwoMHgxM2U3KzQ5NDQtMHgyNmUwKSwoMHg5MTkrMTY5Ni0weGY2MSksKDB4OGY1KzM3MDUtMHgxNzE1KSwKKygweDEzYTErMzY2My0weDIxOTYpLCgweGM2OSsxNDA4LTB4MTEyNSksKDB4MmFiKzgwMTUtMHgyMTI0KSwoMHg3YjkrNTkwMi0weDFkZjYpCissKDB4MWI4NysyNTUxLTB4MjRhMiksKDB4MWQ2OSsyODgtMHgxZGUyKSwoMHgyNmErNDA1MS0weDExN2UpLAorKDB4YjMzKzM4NTEtMHgxOWRkKSwoMHgxZTI5KzE3NzYtMHgyNGI3KSwoMHg2YjcrMTk1NC0weGRmNiksKDB4OWYwKzU5NzctMHgyMGU1KSwKKygweDEwNGIrMTA2OC0weDE0MTIpLCgweDMzZCs3MDEyLTB4MWUzYiksKDB4NjdiKzY2NTgtMHgyMDE2KSwoMHgyMjkwKzUtMHgyMjJkKSwKKygweGFhMisxMjE2LTB4ZWY5KSwoMHg1ZmQrMTM3MS0weGFlZSksKDB4YTQ5KzI4NjItMHgxNTBjKSwoMHgxMjU2Kzg2MS0weDE1NDcpLAorKDB4NjQ4KzMyNTItMHgxMjhmKSwoMHhkMGYrNTg1Mi0weDIzN2QpLCgweGJhMisyMTM0LTB4MTM4OSksKDB4MmU5KzYzMzQtMHgxYjM3KSwKKygweGMzMisyNTc2LTB4MTVkMSksKDB4ZTg1KzgzNi0weDExNTcpLCgweDEyYmMrMjI5My0weDFiM2UpLCgweDFiMDcrMjg5Mi0weDI1ZGYpCissKDB4Y2IrMjQxMS0weDljMSksKDB4MTZiNCs4MC0weDE2OGUpLCgweGMzNis2NDM3LTB4MjRlNCksKDB4MTkxOCsyMDc4LTB4MjBiZSksCisoMHg4NTcrNTMxMi0weDFjOWUpLCgweDcyMyszNzYzLTB4MTU1YyksKDB4YjEzKzQ1OTgtMHgxYzI1KSwoMHhlZjkrMTUxNC0weDEzZWQpLAorKDB4NjJhKzE2NjUtMHhiYmEpLCgweGUxYis1NzU2LTB4MjM5YiksKDB4ODAxKzE2NTYtMHhkOTkpfTtpbnQgQnl0ZXMyU3RyaW5nKAogY29uc3QgdW5zaWduZWQgY2hhcipwU3JjLGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7Y29uc3QgY2hhciB0YWJbXT0KLSIwMTIzNDU2Nzg5QUJDREVGIjtpbnQgaT0oMHgxZTI2KzExMjQtMHgyMjhhKTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHwKLW5TcmNMZW5ndGg8KDB4NjFiKzEyMzEtMHhhZWEpKXtyZXR1cm4tKDB4MTNhMyszOTk4LTB4MjM0MCk7fWZvcihpPQotKDB4Y2FiKzU1Ni0weGVkNyk7aTxuU3JjTGVuZ3RoO2krKyl7KnBEc3QrKz10YWJbKnBTcmM+PigweDEzOWQrMTA3My0weDE3Y2EpXTsqCi1wRHN0Kys9dGFiWypwU3JjJigweDEyNWErMTQ3NC0weDE4MGQpXTtwU3JjKys7fSpwRHN0PSdcMCc7cmV0dXJuIG5TcmNMZW5ndGgqCi0oMHgxMTgrNzM5Mi0weDFkZjYpO31pbnQgU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKnBEc3QsaW50IAotblNyY0xlbmd0aCl7aW50IGk9KDB4NDQzKzI1NzctMHhlNTQpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8Ci0oMHg0YWErMTA4Ny0weDhlOSkpe3JldHVybi0oMHhjMWErMTkyNC0weDEzOWQpO31mb3IoaT0oMHgxNDIrNzgzMS0weDFmZDkpO2k8Ci1uU3JjTGVuZ3RoO2krPSgweDEwM2YrMTUwNy0weDE2MjApKXtpZigqcFNyYz49KChjaGFyKSgweDExMTcrNDQyNC0weDIyMmYpKSYmKgotcFNyYzw9KChjaGFyKSgweDE5NGQrMTU4MS0weDFmNDEpKSl7KnBEc3Q9KCpwU3JjLSgoY2hhcikoMHg0ZDQrMTUyNy0weGE5YikpKTw8Ci0oMHhiNzgrMzg1Mi0weDFhODApO31lbHNleypwRHN0PSgodG91cHBlcigqcFNyYyktKChjaGFyKSgweGJmOCszNDU1LTB4MTkzNikpKSsKLSgweDJhNCs3NTc5LTB4MjAzNSkpPDwoMHgzMDQrNzc3Ny0weDIxNjEpO31wU3JjKys7aWYoKnBTcmM+PQotKChjaGFyKSgweGVjNCs4MDYtMHgxMWJhKSkmJipwU3JjPD0oKGNoYXIpKDB4MWQ3Kzc2MTMtMHgxZjViKSkpeypwRHN0fD0qcFNyYy0KLSgoY2hhcikoMHgxMjM3KzY2NC0weDE0OWYpKTt9ZWxzZXsqcERzdHw9KHRvdXBwZXIoKnBTcmMpLQotKChjaGFyKSgweDEzMWErMzkzNC0weDIyMzcpKSkrKDB4MTg3Zis5MjEtMHgxYzBlKTt9cFNyYysrO3BEc3QrKzt9cmV0dXJuIAotblNyY0xlbmd0aC8oMHg2MzErMzE2MC0weDEyODcpO31pbnQgRW5jb2RlVWNzMihjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgY2hhcioKLXBEc3QsaW50IG5TcmNMZW5ndGgpe2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MzA2KzE1OTktMHg5NDUpKXsKLXJldHVybi0oMHgxMzQ0KzQ1NDQtMHgyNTAzKTt9KHZvaWQpU3RyaW5nMkJ5dGVzKHBTcmMscERzdCwoaW50KW5TcmNMZW5ndGgpOwotcmV0dXJuIG5TcmNMZW5ndGgvKDB4MTNiKzMyOTAtMHhlMTMpO31pbnQgRW5jb2RlN2JpdChjb25zdCBjaGFyKnBTcmMsdW5zaWduZWQgCi1jaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBuU3JjO2ludCBuRHN0O2ludCBuQ2hhcjt1bnNpZ25lZCBjaGFyIG5MZWZ0PQotKDB4MzdhKzY4MjAtMHgxZTFlKTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDJmZis2MTIwLTB4MWFlNykpewotcmV0dXJuLSgweDE2MDUrMzgtMHgxNjJhKTt9blNyYz0oMHgxZTNjKzc0NS0weDIxMjUpO25Ec3Q9KDB4YWNiKzUyNjYtMHgxZjVkKTsKLXdoaWxlKG5TcmM8blNyY0xlbmd0aCl7bkNoYXI9blNyYyYoMHg0NDcrNTcxMy0weDFhOTEpO2lmKG5DaGFyPT0KLSgweDE0MTUrMjk1MC0weDFmOWIpKXtuTGVmdD0qcFNyYztpZigoZ196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2c+Ci0oMHgyNTE0KzQzNy0weDI2YzgpKSYmKG5TcmM9PShuU3JjTGVuZ3RoLSgweDFjNjArMTc2NS0weDIzNDQpKSkpe25Ec3QrKzt9fWVsc2V7KgotcERzdD0oKnBTcmM8PCgoMHg2NWIrMjE2My0weGVjNiktbkNoYXIpKXxuTGVmdDtuTGVmdD0qcFNyYz4+bkNoYXI7cERzdCsrO25Ec3QrKzsKLX1wU3JjKys7blNyYysrO31yZXR1cm4gbkRzdDt9U0lOVDMyIHpVZmlTbXNfRW5jb2RlUGR1X0RlbGl2ZXJSZXBvcnQoQ0hBUipwRHN0LAotVUlOVDggVFBfRkNTKXtTSU5UMzIgbkxlbmd0aD0oMHhjYWErNDIzMC0weDFkMzApO1NJTlQzMiBuRHN0TGVuZ3RoPQotKDB4ZTZmKzM4NTEtMHgxZDdhKTtVSU5UOCBidWZbKDB4OGI3KzY2MjUtMHgyMTk4KV09eygweGUyOCs3NDItMHgxMTBlKX07aWYoTlVMTAotPT1wRHN0KXtyZXR1cm4tKDB4MThmMSszOTMtMHgxYTc5KTt9aWYoVFBfRkNTIT0oMHgyM2U5KzQ5NS0weDI1ZDgpKXtidWZbCi0oMHhmMjUrNDc3Mi0weDIxYzkpXT0oMHgxMDg1KzM3MjQtMHgxZjExKTtidWZbKDB4ZDEwKzIxNTAtMHgxNTc1KV09VFBfRkNTO2J1ZlsKLSgweGRmNis5OTUtMHgxMWQ3KV09KDB4ODZkKzc0MjMtMHgyNTZjKTtuRHN0TGVuZ3RoKz1CeXRlczJTdHJpbmcoYnVmLCZwRHN0WwotbkRzdExlbmd0aF0sKDB4MTZhNCsyMzgyLTB4MWZlZikpO31lbHNle2J1ZlsoMHgzYis5Mjk2LTB4MjQ4YildPQotKDB4MmFkKzYxNzctMHgxYWNlKTtidWZbKDB4MWJlNisxNDUyLTB4MjE5MSldPSgweGY3Yis1OTk5LTB4MjZlYSk7bkRzdExlbmd0aCs9Ci1CeXRlczJTdHJpbmcoYnVmLCZwRHN0W25Ec3RMZW5ndGhdLCgweDMwNSszMjAtMHg0NDMpKTt9cmV0dXJuIG5Ec3RMZW5ndGg7fQorIjAxMjM0NTY3ODlBQkNERUYiO2ludCBpPSgweDFjNWQrNy0weDFjNjQpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGgKKzwoMHgxMDYxKzU1MTItMHgyNWU5KSl7cmV0dXJuLSgweDI0OSsyMzI4LTB4YjYwKTt9Zm9yKGk9KDB4MThmOCsxMzc1LTB4MWU1Nyk7aTwKK25TcmNMZW5ndGg7aSsrKXsqcERzdCsrPXRhYlsqcFNyYz4+KDB4MTI3OSsxMzg4LTB4MTdlMSldOypwRHN0Kys9dGFiWypwU3JjJgorKDB4MTgwMSszNTg2LTB4MjVmNCldO3BTcmMrKzt9KnBEc3Q9J1wwJztyZXR1cm4gblNyY0xlbmd0aCooMHgxMDMzKzQwNTYtMHgyMDA5KTsKK31pbnQgU3RyaW5nMkJ5dGVzKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBpPQorKDB4MTA4YSsyNDk2LTB4MWE0YSk7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgxMzM1KzM2NS0weDE0YTIpKXsKK3JldHVybi0oMHgxYzU3KzExOTYtMHgyMTAyKTt9Zm9yKGk9KDB4YzBjKzY2MTItMHgyNWUwKTtpPG5TcmNMZW5ndGg7aSs9CisoMHg3M2IrMTY5Ni0weGRkOSkpe2lmKCpwU3JjPj0oKGNoYXIpKDB4YjI0KzI1NTAtMHgxNGVhKSkmJipwU3JjPD0KKygoY2hhcikoMHg2M2YrMjYxNy0weDEwM2YpKSl7KnBEc3Q9KCpwU3JjLSgoY2hhcikoMHgxMzFiKzE1NjgtMHgxOTBiKSkpPDwKKygweGNlNis0MjY5LTB4MWQ4Zik7fWVsc2V7KnBEc3Q9KCh0b3VwcGVyKCpwU3JjKS0oKGNoYXIpKDB4MWNiYSsyMjUyLTB4MjU0NSkpKSsKKygweDEzOGQrMTgyMi0weDFhYTEpKTw8KDB4MTRmNisyMTIxLTB4MWQzYik7fXBTcmMrKztpZigqcFNyYz49CisoKGNoYXIpKDB4M2NkKzIwNDgtMHhiOWQpKSYmKnBTcmM8PSgoY2hhcikoMHgxYTAzKzY5NS0weDFjODEpKSl7KnBEc3R8PSpwU3JjLQorKChjaGFyKSgweDcxYysyOTU0LTB4MTI3NikpO31lbHNleypwRHN0fD0odG91cHBlcigqcFNyYyktCisoKGNoYXIpKDB4ODFmKzE3NC0weDg4YykpKSsoMHgzODkrMzkyOC0weDEyZDcpO31wU3JjKys7cERzdCsrO31yZXR1cm4gblNyY0xlbmd0aAorLygweDEzMDUrMzk3LTB4MTQ5MCk7fWludCBFbmNvZGVVY3MyKGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKnBEc3QsaW50IAorblNyY0xlbmd0aCl7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgyMGJjKzE1MjItMHgyNmFlKSl7cmV0dXJuLQorKDB4MTg0OCsxMzYtMHgxOGNmKTt9KHZvaWQpU3RyaW5nMkJ5dGVzKHBTcmMscERzdCwoaW50KW5TcmNMZW5ndGgpO3JldHVybiAKK25TcmNMZW5ndGgvKDB4MTkyNSsxNzY1LTB4MjAwOCk7fWludCBFbmNvZGU3Yml0KGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKgorcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IG5TcmM7aW50IG5Ec3Q7aW50IG5DaGFyO3Vuc2lnbmVkIGNoYXIgbkxlZnQ9CisoMHg3NmMrNzU5Ni0weDI1MTgpO2lmKHBTcmM9PU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4MTQzMSsyMDItMHgxNGZiKSl7CityZXR1cm4tKDB4MTBlMCs0NDYtMHgxMjlkKTt9blNyYz0oMHhlMWErNDI2MS0weDFlYmYpO25Ec3Q9KDB4ZmI0KzI0NTMtMHgxOTQ5KTsKK3doaWxlKG5TcmM8blNyY0xlbmd0aCl7bkNoYXI9blNyYyYoMHgyNys5MjEwLTB4MjQxYSk7aWYobkNoYXI9PQorKDB4MTAyNisxMDM3LTB4MTQzMykpe25MZWZ0PSpwU3JjO2lmKChnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZz4KKygweDZkZCs2MDY3LTB4MWU4ZikpJiYoblNyYz09KG5TcmNMZW5ndGgtKDB4YjJhKzQxOTMtMHgxYjhhKSkpKXtuRHN0Kys7fX1lbHNleyoKK3BEc3Q9KCpwU3JjPDwoKDB4NjQxKzY2MDctMHgyMDA4KS1uQ2hhcikpfG5MZWZ0O25MZWZ0PSpwU3JjPj5uQ2hhcjtwRHN0Kys7bkRzdCsrCis7fXBTcmMrKztuU3JjKys7fXJldHVybiBuRHN0O31TSU5UMzIgelVmaVNtc19FbmNvZGVQZHVfRGVsaXZlclJlcG9ydChDSEFSKnBEc3QsCitVSU5UOCBUUF9GQ1Mpe1NJTlQzMiBuTGVuZ3RoPSgweGZiMysxOTY1LTB4MTc2MCk7U0lOVDMyIG5Ec3RMZW5ndGg9CisoMHgxMzA3Kzc1OC0weDE1ZmQpO1VJTlQ4IGJ1ZlsoMHgxMzYrNDAzMi0weGZmNildPXsoMHg4NDMrNzE3My0weDI0NDgpfTtpZihOVUxMCis9PXBEc3Qpe3JldHVybi0oMHgxNWVjKzMxMjMtMHgyMjFlKTt9aWYoVFBfRkNTIT0oMHg3NGMrNTEzOS0weDFiNWYpKXtidWZbCisoMHg2Y2QrMjgyMi0weDExZDMpXT0oMHg0NjkrMzE3MS0weDEwY2MpO2J1ZlsoMHgzZDkrMTEyNS0weDgzZCldPVRQX0ZDUztidWZbCisoMHg0ZjUrNTY1My0weDFiMDgpXT0oMHg4OGQrMjAwOC0weDEwNjUpO25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbCituRHN0TGVuZ3RoXSwoMHgxN2IzKzMyMDctMHgyNDM3KSk7fWVsc2V7YnVmWygweDExZjArMTgyMy0weDE5MGYpXT0KKygweGVjZis1MzUzLTB4MjNiOCk7YnVmWygweGRmYiszMTI0LTB4MWEyZSldPSgweDc2YysxNDEtMHg3ZjkpO25Ec3RMZW5ndGgrPQorQnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFtuRHN0TGVuZ3RoXSwoMHg3NGQrNDQ4Ny0weDE4ZDIpKTt9cmV0dXJuIG5Ec3RMZW5ndGg7fQogdW5zaWduZWQgbG9uZyB6VWZpU21zX0NvbnZlcnRBc2NpaVRvR3NtRGVmYXVsdChjb25zdCB1bnNpZ25lZCBjaGFyKmlucHV0cywKLXVuc2lnbmVkIGNoYXIqb3V0cHV0cyx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPSgweDU1Mys1OTA1LTB4MWM2NCk7Ci11bnNpZ25lZCBsb25nIGo9KDB4ZDAxKzYzNDUtMHgyNWNhKTt1bnNpZ25lZCBsb25nIGs9KDB4NTRjKzMxNzUtMHgxMWIzKTtpZihOVUxMCi09PWlucHV0c3x8TlVMTD09b3V0cHV0cyl7cHJpbnRmKAordW5zaWduZWQgY2hhcipvdXRwdXRzLHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4NjVhKzI5MDItMHgxMWIwKTsKK3Vuc2lnbmVkIGxvbmcgaj0oMHhhMzUrMTc2Ny0weDExMWMpO3Vuc2lnbmVkIGxvbmcgaz0oMHgzZmErMjExNS0weGMzZCk7aWYoTlVMTD09CitpbnB1dHN8fE5VTEw9PW91dHB1dHMpe3ByaW50ZigKICJceDczXHg2ZFx4NzNceDNhXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NFx4NzMiKTsKLXJldHVybigweDUxNCs1NzUxLTB4MWI4Yik7fWZvcihpPSgweDg1NSs1NjQ0LTB4MWU2MSk7aTxsZW47aSsrKXtqPWlucHV0c1tpXTtpZigKLWdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW2pdPCgweDIwNTArNDU3LTB4MjExYSkpe291dHB1dHNba109CityZXR1cm4oMHg5OWMrNjEyOS0weDIxOGQpO31mb3IoaT0oMHgzYTIrMTkwNC0weGIxMik7aTxsZW47aSsrKXtqPWlucHV0c1tpXTtpZigKK2dfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW2pdPCgweDJmZCszMDA3LTB4ZGJkKSl7b3V0cHV0c1trXT0KIGdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW2pdO31lbHNle291dHB1dHNba109KAotZ196VWZpU21zX0FzY2lpVG9Hc21kZWZhdWx0VGFibGVbal0mNjUyODApPj4oMHgyNjA2KzE1MC0weDI2OTQpO2srKztvdXRwdXRzW2tdPSgKLWdfelVmaVNtc19Bc2NpaVRvR3NtZGVmYXVsdFRhYmxlW2pdJigweDEzYis0ODEtMHgyMWQpKTt9aysrO31yZXR1cm4gazt9dW5zaWduZWQgCitnX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXSY2NTI4MCk+PigweGZiYys4MTMtMHgxMmUxKTtrKys7b3V0cHV0c1trXT0oCitnX3pVZmlTbXNfQXNjaWlUb0dzbWRlZmF1bHRUYWJsZVtqXSYoMHgzNDcrMTE0LTB4MmJhKSk7fWsrKzt9cmV0dXJuIGs7fXVuc2lnbmVkIAogbG9uZyB6VWZpU21zX0NvbnZlcnRVY3MyVG9TcGFuaXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqZGVmLHVuc2lnbmVkIGNoYXIqCi1nc21fZGVmYXVsdCx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPSgweGQ5KzMwMTMtMHhjOWUpO3Vuc2lnbmVkIGxvbmcgawotPSgweGQxNSsxOTkyLTB4MTRkZCk7dW5zaWduZWQgbG9uZyBwPSgweDFmOCs5MTg4LTB4MjVkYyk7dW5zaWduZWQgbG9uZyB0bXA9Ci0oMHg0ZmErMzYxOC0weDEzMWMpO3Vuc2lnbmVkIGxvbmcgczE9KDB4MTE1YysyMDk5LTB4MTk4ZiksczI9Ci0oMHgxMGViKzIyMDAtMHgxOTgzKTt1bnNpZ25lZCBsb25nIHE9KDB4MWM1KzEyOTQtMHg2ZDMpO3MxPXNpemVvZigKK2dzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4MTgwMSszMzEwLTB4MjRlZik7dW5zaWduZWQgCitsb25nIGs9KDB4NTY2KzM5NjItMHgxNGUwKTt1bnNpZ25lZCBsb25nIHA9KDB4YmQ1KzYxMTUtMHgyM2I4KTt1bnNpZ25lZCBsb25nIHRtcAorPSgweDFhNDYrMjQxMS0weDIzYjEpO3Vuc2lnbmVkIGxvbmcgczE9KDB4MWE4MysyNTQxLTB4MjQ3MCksczI9CisoMHgzNDcrODMzNC0weDIzZDUpO3Vuc2lnbmVkIGxvbmcgcT0oMHgxOWVkKzMwNzctMHgyNWYyKTtzMT1zaXplb2YoCiB6dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCi16dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4WygweDkzMCsyODQzLTB4MTQ0YildKTtzMj1zaXplb2YoCit6dGVfc21zX0dTTTdfU1BBTklTSF9Ub19VQ1MyX1RhYmxlX0V4WygweDM0NSs4ODItMHg2YjcpXSk7czI9c2l6ZW9mKAogVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTKS9zaXplb2YoVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTWwotKDB4MTI4MSs3OTUtMHgxNTljKV0pO2ZvcihpPSgweDEzNWErNDI5NC0weDI0MjApO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KLSgweDE1MWIrMjI0OS0weDFkZTQpKXtpKys7aWYoVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW2RlZltpXV0hPU5PTl9HU00peworKDB4MTQ3ZCszOTU1LTB4MjNmMCldKTtmb3IoaT0oMHg5Y2QrMTk4NS0weDExOGUpO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KKygweDE4NTgrMzE1My0weDI0YTkpKXtpKys7aWYoVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW2RlZltpXV0hPU5PTl9HU00pewogZ3NtX2RlZmF1bHRba109VWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfQVNDW2RlZltpXV07aysrO2NvbnRpbnVlO31lbHNlIGlmKCgKLVVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09KDB4MjA3MSsyMDQtMHgyMTFkKSkpCi17Z3NtX2RlZmF1bHRba109KDB4MTYxMysxMTkxLTB4MWE5YSk7aysrO2NvbnRpbnVlO31mb3IocT0oMHhjYWQrMTQ1MS0weDEyNTgpO3E8Ci1zMTtxKyspe2lmKGRlZltpXT09enRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFtxXVsoMHhmOTErNTU2OC0weDI1NTApXQotKXtnc21fZGVmYXVsdFtrXT0oMHg5YTErODctMHg5ZGQpO2srKztnc21fZGVmYXVsdFtrXT0KLXp0ZV9zbXNfR1NNN19TUEFOSVNIX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4NGYyKzM5NDktMHgxNDVmKV07YnJlYWs7fX19ZWxzZXt0bXA9Ci0oZGVmW2ldPDwoMHgyZTQrMTUxNC0weDhjNikpK2RlZltpKygweGNhNisyNDE1LTB4MTYxNCldO2krKztpZih0bXA9PQotKDB4MjJhYSszMDc2LTB4ZTAyKSl7Z3NtX2RlZmF1bHRba109KDB4OTRiKzQ5NzktMHgxY2EzKTtrKys7Z3NtX2RlZmF1bHRba109Ci0oMHgyMjkrNTgzMC0weDE4OGEpO2srKzt9Zm9yKHA9KDB4ZDEyKzQ2OTItMHgxZjY2KTtwPHMyO3ArKyl7aWYodG1wPT0KLVVjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX1VDU1twXVsoMHgxMTg1KzM4NS0weDEzMDUpXSl7Z3NtX2RlZmF1bHRba109Ci1VY3MyX1RvX0dzbTdfU1BBTklTSF9UYWJsZV9VQ1NbcF1bKDB4MTRiYSsxMjUwLTB4MTk5YyldO2JyZWFrO319fWsrKzt9Ci1nc21fZGVmYXVsdFtrXT0nXDAnO3JldHVybiBrO311bnNpZ25lZCBsb25nIHpVZmlTbXNfQ29udmVydFVjczJUb1BvcnR1Z3Vlc2UoCi1jb25zdCB1bnNpZ25lZCBjaGFyKmRlZix1bnNpZ25lZCBjaGFyKmdzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCAKLWxvbmcgaT0oMHgxYTczKzIxNjItMHgyMmU1KTt1bnNpZ25lZCBsb25nIGs9KDB4MjBiKzQ5OTEtMHgxNThhKTt1bnNpZ25lZCBsb25nIHA9Ci0oMHgxNGU5KzQwMTktMHgyNDljKTt1bnNpZ25lZCBsb25nIHRtcD0oMHhkYTErMzExMC0weDE5YzcpO3Vuc2lnbmVkIGxvbmcgczE9Ci0oMHg0NzIrNzUxLTB4NzYxKSxzMj0oMHgxMTJjKzQ5OTEtMHgyNGFiKTt1bnNpZ25lZCBsb25nIHE9KDB4NDk2KzI5MjAtMHhmZmUpO3MxPQotc2l6ZW9mKHp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXgpL3NpemVvZigKLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbKDB4OWMxKzY3MTktMHgyNDAwKV0pO3MyPXNpemVvZigKK1VjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09KDB4MWNhOSsxMzUtMHgxZDEwKSkpCit7Z3NtX2RlZmF1bHRba109KDB4NDVkKzQwMDEtMHgxM2RlKTtrKys7Y29udGludWU7fWZvcihxPSgweDliKzYzMTYtMHgxOTQ3KTtxPHMxOworcSsrKXtpZihkZWZbaV09PXp0ZV9zbXNfR1NNN19TUEFOSVNIX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4YmZjKzIxMjktMHgxNDRjKV0peworZ3NtX2RlZmF1bHRba109KDB4YjZjKzUzNC0weGQ2Nyk7aysrO2dzbV9kZWZhdWx0W2tdPQorenRlX3Ntc19HU003X1NQQU5JU0hfVG9fVUNTMl9UYWJsZV9FeFtxXVsoMHgxNTlmKzc1Ny0weDE4OTQpXTticmVhazt9fX1lbHNle3RtcD0KKyhkZWZbaV08PCgweGQyNyszNjY3LTB4MWI3MikpK2RlZltpKygweDQxYys2NzA4LTB4MWU0ZildO2krKztpZih0bXA9PQorKDB4MjE0NisxMjE5LTB4NTVkKSl7Z3NtX2RlZmF1bHRba109KDB4MTA3Mys3ODAtMHgxMzY0KTtrKys7Z3NtX2RlZmF1bHRba109CisoMHg3MDQrNTI3Ny0weDFiM2MpO2srKzt9Zm9yKHA9KDB4NDZhKzIwMDMtMHhjM2QpO3A8czI7cCsrKXtpZih0bXA9PQorVWNzMl9Ub19Hc203X1NQQU5JU0hfVGFibGVfVUNTW3BdWygweDliZis1OTc4LTB4MjExOCldKXtnc21fZGVmYXVsdFtrXT0KK1VjczJfVG9fR3NtN19TUEFOSVNIX1RhYmxlX1VDU1twXVsoMHgyNTErNDQ0Ni0weDEzYWYpXTticmVhazt9fX1rKys7fWdzbV9kZWZhdWx0Citba109J1wwJztyZXR1cm4gazt9dW5zaWduZWQgbG9uZyB6VWZpU21zX0NvbnZlcnRVY3MyVG9Qb3J0dWd1ZXNlKGNvbnN0IHVuc2lnbmVkIAorY2hhcipkZWYsdW5zaWduZWQgY2hhcipnc21fZGVmYXVsdCx1bnNpZ25lZCBsb25nIGxlbil7dW5zaWduZWQgbG9uZyBpPQorKDB4ZWM3KzEwNTgtMHgxMmU5KTt1bnNpZ25lZCBsb25nIGs9KDB4NGQ3KzMwMTAtMHgxMDk5KTt1bnNpZ25lZCBsb25nIHA9CisoMHgxOGY4KzIyNTItMHgyMWM0KTt1bnNpZ25lZCBsb25nIHRtcD0oMHgxOGJkKzYyMC0weDFiMjkpO3Vuc2lnbmVkIGxvbmcgczE9CisoMHhlNSs4MDQwLTB4MjA0ZCksczI9KDB4ZThkKzEzOTUtMHgxNDAwKTt1bnNpZ25lZCBsb25nIHE9KDB4M2Q5KzU3NTgtMHgxYTU3KTtzMQorPXNpemVvZih6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCit6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4WygweDcxOSsxODgtMHg3ZDUpXSk7czI9c2l6ZW9mKAogVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTKS9zaXplb2YoVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTWwotKDB4MWM1Mis4OTctMHgxZmQzKV0pO2ZvcihpPSgweDIwNys4OTAtMHg1ODEpO2k8bGVuO2krKyl7aWYoZGVmW2ldPT0KLSgweDVhNCsxODYxLTB4Y2U5KSl7aSsrO2lmKFVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX0FTQ1tkZWZbaV1dIT1OT05fR1NNKXsKKygweGE0MSs1OTM4LTB4MjE3MyldKTtmb3IoaT0oMHgxN2VjKzI0MDItMHgyMTRlKTtpPGxlbjtpKyspe2lmKGRlZltpXT09CisoMHg1YjgrNTYxMS0weDFiYTMpKXtpKys7aWYoVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW2RlZltpXV0hPU5PTl9HU00pewogZ3NtX2RlZmF1bHRba109VWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW2RlZltpXV07aysrO2NvbnRpbnVlO31lbHNlIGlmKCgKLVVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09Ci0oMHgxMzY2KzIyMjctMHgxYmY5KSkpe2dzbV9kZWZhdWx0W2tdPSgweDFmNCs2NDQ1LTB4MWIwMSk7aysrO2NvbnRpbnVlO31mb3IocT0KLSgweGMyMysyNjU0LTB4MTY4MSk7cTxzMTtxKyspe2lmKGRlZltpXT09Ci16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3FdWygweDk1Mis1NTI3LTB4MWVlOCldKXtnc21fZGVmYXVsdFtrXQotPSgweDFjODYrMjU4MC0weDI2N2YpO2srKztnc21fZGVmYXVsdFtrXT0KLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4Zjk1KzU2NjEtMHgyNWIyKV07YnJlYWs7fX19ZWxzZXsKLXRtcD0oZGVmW2ldPDwoMHgyNTAyKzEyOS0weDI1N2IpKStkZWZbaSsoMHgyNGYrNzg2Ni0weDIxMDgpXTtpKys7aWYodG1wPT0KLSgweDIyZTErNTE2Mi0weDE2NWYpKXtnc21fZGVmYXVsdFtrXT0oMHgxN2Y0KzE0NjItMHgxZDhmKTtrKys7Z3NtX2RlZmF1bHRba109Ci0oMHgxMjFkKzEzOTUtMHgxNzJiKTtrKys7Y29udGludWU7fWZvcihwPSgweDQ5OSs2MzU5LTB4MWQ3MCk7cDxzMjtwKyspe2lmKHRtcD09Ci1VY3MyX1RvX0dzbTdfUE9SVFVHVUVTRV9UYWJsZV9VQ1NbcF1bKDB4MTE4Mys0MzI1LTB4MjI2NyldKXtnc21fZGVmYXVsdFtrXT0KLVVjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDU1twXVsoMHg2NWQrNzE0MC0weDIyNDEpXTticmVhazt9fX1rKys7fQorVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfQVNDW2RlZltpXV09PU5PTl9HU00pJiYoZGVmW2ldPT0oMHgyZDErMTk2Ny0weGE2MCkKKykpe2dzbV9kZWZhdWx0W2tdPSgweDE0NysyODk0LTB4Yzc1KTtrKys7Y29udGludWU7fWZvcihxPSgweDFmZis4NTEyLTB4MjMzZik7cTwKK3MxO3ErKyl7aWYoZGVmW2ldPT16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3FdWygweDJmNis5NDEtMHg2YTIpCitdKXtnc21fZGVmYXVsdFtrXT0oMHgyZDQrNzIzNi0weDFlZmQpO2srKztnc21fZGVmYXVsdFtrXT0KK3p0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4NmRkKzE2NDQtMHhkNDkpXTticmVhazt9fX1lbHNlewordG1wPShkZWZbaV08PCgweDc3ZCs2OTc2LTB4MjJiNSkpK2RlZltpKygweDIyNGYrMTYyLTB4MjJmMCldO2krKztpZih0bXA9PTgzNjQpeworZ3NtX2RlZmF1bHRba109KDB4MTg5YSsxODIzLTB4MWY5ZSk7aysrO2dzbV9kZWZhdWx0W2tdPSgweDEyMmIrNDczNi0weDI0NDYpO2srKzsKK2NvbnRpbnVlO31mb3IocD0oMHg4YmYrMzI1NS0weDE1NzYpO3A8czI7cCsrKXtpZih0bXA9PQorVWNzMl9Ub19Hc203X1BPUlRVR1VFU0VfVGFibGVfVUNTW3BdWygweDdiMSs1NDY1LTB4MWQwOSldKXtnc21fZGVmYXVsdFtrXT0KK1VjczJfVG9fR3NtN19QT1JUVUdVRVNFX1RhYmxlX1VDU1twXVsoMHhhMjUrMTQzNy0weGZjMildO2JyZWFrO319fWsrKzt9CiBnc21fZGVmYXVsdFtrXT0nXDAnO3JldHVybiBrO311bnNpZ25lZCBsb25nIHpVZmlTbXNfQ29udmVydFVjczJUb0dzbURlZmF1bHQoCiBjb25zdCB1bnNpZ25lZCBjaGFyKmRlZix1bnNpZ25lZCBjaGFyKmdzbV9kZWZhdWx0LHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCAKLWxvbmcgaT0oMHg2ODYrOTM4LTB4YTMwKTt1bnNpZ25lZCBsb25nIGs9KDB4MWNkNysxNjM3LTB4MjMzYyk7dW5zaWduZWQgbG9uZyBwPQotKDB4MTQ0KzE1NTAtMHg3NTIpO3Vuc2lnbmVkIGxvbmcgdG1wPSgweGZjZiszNTIwLTB4MWQ4Zik7dW5zaWduZWQgbG9uZyBzMT0KLSgweDI0NiszNzgtMHgzYzApLHMyPSgweDIxNCs4MTYwLTB4MjFmNCk7dW5zaWduZWQgbG9uZyBxPSgweDk2ZCs0ODItMHhiNGYpO3MxPQotc2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFsoMHhhYTQrNTM5NC0weDFmYjYpXSk7czI9c2l6ZW9mKAorbG9uZyBpPSgweDEyN2IrMjcxNC0weDFkMTUpO3Vuc2lnbmVkIGxvbmcgaz0oMHgxMWNjKzEyNjgtMHgxNmMwKTt1bnNpZ25lZCBsb25nIHAKKz0oMHgyMGRkKzEyNzktMHgyNWRjKTt1bnNpZ25lZCBsb25nIHRtcD0oMHgxMmEwKzE3OTEtMHgxOTlmKTt1bnNpZ25lZCBsb25nIHMxPQorKDB4ZTk1KzU2NDMtMHgyNGEwKSxzMj0oMHgxMDg1KzE4MjMtMHgxN2E0KTt1bnNpZ25lZCBsb25nIHE9KDB4NTYzKzc3NzItMHgyM2JmKTsKK3MxPXNpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbKDB4MThhMyszMTY0LTB4MjRmZildKTtzMj1zaXplb2YoCiBVQ1MyX1RvX0dTTURlZmF1bHRfVGFibGVfVUNTMikvc2l6ZW9mKFVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9VQ1MyWwotKDB4N2YyKzY2MDItMHgyMWJjKV0pO2ZvcihpPSgweGJjYys0MTIzLTB4MWJlNyk7aTxsZW47aSsrKXtpZihkZWZbaV09PQotKDB4MTg5Nys4NTUtMHgxYmVlKSl7aSsrO2lmKFVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9BU0NbZGVmW2ldXSE9Tk9OX0dTTSl7CisoMHhjYjgrOTg1LTB4MTA5MSldKTtmb3IoaT0oMHg0YjkrOTQ3LTB4ODZjKTtpPGxlbjtpKyspe2lmKGRlZltpXT09CisoMHgxZTcyKzE1MjUtMHgyNDY3KSl7aSsrO2lmKFVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9BU0NbZGVmW2ldXSE9Tk9OX0dTTSl7CiBnc21fZGVmYXVsdFtrXT1VQ1MyX1RvX0dTTURlZmF1bHRfVGFibGVfQVNDW2RlZltpXV07aysrO2NvbnRpbnVlO31lbHNlIGlmKCgKLVVDUzJfVG9fR1NNRGVmYXVsdF9UYWJsZV9BU0NbZGVmW2ldXT09Tk9OX0dTTSkmJihkZWZbaV09PSgweDk2YiszNDc0LTB4MTZkZCkpKXsKLWdzbV9kZWZhdWx0W2tdPSgweDM5OSs4OTcwLTB4MjY4Myk7aysrO2NvbnRpbnVlO31mb3IocT0oMHgxMDBmKzQ5MjItMHgyMzQ5KTtxPHMxCi07cSsrKXtpZihkZWZbaV09PXp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3FdWygweDE4OGYrMjYwMy0weDIyYjkpXSl7Ci1nc21fZGVmYXVsdFtrXT0oMHg2OWIrMTY3MC0weGQwNik7aysrO2dzbV9kZWZhdWx0W2tdPQotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4MTllNSsxMTMwLTB4MWU0ZildO2JyZWFrO319fWVsc2V7dG1wPSgKLWRlZltpXTw8KDB4OTE1Kzc4NS0weGMxZSkpK2RlZltpKygweGQ0ZCsyMDgtMHhlMWMpXTtpKys7aWYodG1wPT04MzY0KXsKLWdzbV9kZWZhdWx0W2tdPSgweDM1NCsxNzk2LTB4YTNkKTtrKys7Z3NtX2RlZmF1bHRba109KDB4Njg5KzEwNzctMHhhNTkpO2srKzsKLWNvbnRpbnVlO31mb3IocD0oMHgxMDJkKzc2Ni0weDEzMmIpO3A8czI7cCsrKXtpZih0bXA9PQotVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4OTRiKzIzMTAtMHgxMjUwKV0pe2dzbV9kZWZhdWx0W2tdPQotVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4YzVjKzg3MS0weGZjMyldO2JyZWFrO319fWsrKzt9Z3NtX2RlZmF1bHRba10KLT0nXDAnO3JldHVybiBrO31VSU5UOCB6VWZpU21zX1RzSW50VG9CY2QoY29uc3QgVUlOVDggaSl7cmV0dXJuKFVJTlQ4KSgoKGklCi0oMHgxNDhjKzIwOTAtMHgxY2FjKSkrKChpLygweGJhYSs2NTc2LTB4MjU1MCkpPDwoMHgxZTkrNTA4OC0weDE1YzUpKSkpO312b2lkIAorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX0FTQ1tkZWZbaV1dPT1OT05fR1NNKSYmKGRlZltpXT09KDB4OGYrNDk1Ni0weDEzY2IpKSl7Citnc21fZGVmYXVsdFtrXT0oMHgxYWExKzIyNzktMHgyMzY4KTtrKys7Y29udGludWU7fWZvcihxPSgweDE3OSsxMDM5LTB4NTg4KTtxPHMxOworcSsrKXtpZihkZWZbaV09PXp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3FdWygweDFiMis4MzIwLTB4MjIzMSldKXsKK2dzbV9kZWZhdWx0W2tdPSgweDNiOCs1NTQ1LTB4MTk0Nik7aysrO2dzbV9kZWZhdWx0W2tdPQorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcV1bKDB4MWIwMSsyMDYwLTB4MjMwZCldO2JyZWFrO319fWVsc2V7dG1wPSgKK2RlZltpXTw8KDB4NjM4KzQxMjMtMHgxNjRiKSkrZGVmW2krKDB4NzE4KzUyODktMHgxYmMwKV07aSsrO2lmKHRtcD09ODM2NCl7Citnc21fZGVmYXVsdFtrXT0oMHhhZDQrNjg3MS0weDI1OTApO2srKztnc21fZGVmYXVsdFtrXT0oMHg4NjYrNTk3Mi0weDFmNTUpO2srKzsKK2NvbnRpbnVlO31mb3IocD0oMHg4MGIrMjU3Ny0weDEyMWMpO3A8czI7cCsrKXtpZih0bXA9PQorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4MTA1Mis2OTctMHgxMzBhKV0pe2dzbV9kZWZhdWx0W2tdPQorVUNTMl9Ub19HU01EZWZhdWx0X1RhYmxlX1VDUzJbcF1bKDB4OWQrNjQwMy0weDE5YTApXTticmVhazt9fX1rKys7fWdzbV9kZWZhdWx0W2sKK109J1wwJztyZXR1cm4gazt9VUlOVDggelVmaVNtc19Uc0ludFRvQmNkKGNvbnN0IFVJTlQ4IGkpe3JldHVybihVSU5UOCkoKChpJQorKDB4NjAzKzQxMS0weDc5NCkpKygoaS8oMHgxMjgrNjQyNy0weDFhMzkpKTw8KDB4NDMzKzU4NDQtMHgxYjAzKSkpKTt9dm9pZCAKIHpVZmlTbXNfRGVjb2RlUmVsYXRpdmVUaW1lKFVJTlQ4IGlWYWxpZFRpbWUsVF96VWZpU21zX1RpbWVTdGFtcCpwdFRpbWVTdGFtcCl7Ci11aW50MzIgaT0oMHgxNjg1KzExMDAtMHgxYWQxKTtpZihwdFRpbWVTdGFtcCE9TlVMTCl7bWVtc2V0KCh2b2lkKilwdFRpbWVTdGFtcCwKLSgweDFhMTYrMjAwLTB4MWFkZSksc2l6ZW9mKHdtc190aW1lc3RhbXBfc190eXBlKSk7aWYoaVZhbGlkVGltZTwKLSgweDU5Yys2NzAtMHg3YWEpKXtpPShpVmFsaWRUaW1lKygweDcwYSszMzg1LTB4MTQ0MikpKigweGMyYSs0ODc4LTB4MWYzMyk7Ci1wdFRpbWVTdGFtcC0+aG91cj0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaS8oMHgxYmJjKzY3OC0weDFlMjYpKSk7Ci1wdFRpbWVTdGFtcC0+bWludXRlPShVSU5UOCl6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpJSgweDRmOSszNTc0LTB4MTJiMykpKTt9Ci1lbHNlIGlmKGlWYWxpZFRpbWU8KDB4MTM0ZisxNzA5LTB4MTk1NSkpe2k9KGlWYWxpZFRpbWUtKDB4OWFhKzk0NC0weGNjYikpKgotKDB4MzlmKzM1NjEtMHgxMTZhKTtwdFRpbWVTdGFtcC0+aG91cj0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoCi0oMHhmNjgrNzU1LTB4MTI0ZikraS8oMHgzYmYrNjI0MC0weDFiZTMpKSk7cHRUaW1lU3RhbXAtPm1pbnV0ZT0oVUlOVDgpCi16VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpJSgweDE0OTArNDI5NS0weDI1MWIpKSk7fWVsc2UgaWYoaVZhbGlkVGltZTwKLSgweDI5NSsyNjgyLTB4YzRhKSl7aT1pVmFsaWRUaW1lLSgweGYwYysyMjYyLTB4MTczYyk7cHRUaW1lU3RhbXAtPm1vbnRoPShVSU5UOCkKLXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGkvKDB4MjFjKzg1ODEtMHgyMzgzKSkpO3B0VGltZVN0YW1wLT5kYXk9KFVJTlQ4KQotelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaSUoMHhiYWQrNjY2OC0weDI1OWIpKSk7fWVsc2V7aT0oaVZhbGlkVGltZS0KLSgweDc5MiszNjcxLTB4MTUyOSkpKigweDEyMDMrMTA2My0weDE2MjMpO3B0VGltZVN0YW1wLT55ZWFyPShVSU5UOCkKLXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKGkvKDB4MWNmYis1MTQtMHgxZDkwKSkpO3B0VGltZVN0YW1wLT5tb250aD0oVUlOVDgpCi16VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KSgoaSUoMHgxMzZiKzE0MDYtMHgxNzdjKSkvKDB4MWUwKzczNDEtMHgxZTZmKSkpOwotcHRUaW1lU3RhbXAtPmRheT0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoKGklKDB4ZGY4KzQzNDgtMHgxZDg3KSklCi0oMHgxMTI2KzMxMjAtMHgxZDM4KSkpO319ZWxzZXtwcmludGYoCit1aW50MzIgaT0oMHhiYTErMjc4LTB4Y2I3KTtpZihwdFRpbWVTdGFtcCE9TlVMTCl7bWVtc2V0KCh2b2lkKilwdFRpbWVTdGFtcCwKKygweDcwZCsxMDYtMHg3NzcpLHNpemVvZih3bXNfdGltZXN0YW1wX3NfdHlwZSkpO2lmKGlWYWxpZFRpbWU8CisoMHhiZTYrNTk4My0weDIyYjUpKXtpPShpVmFsaWRUaW1lKygweDMxMys4NTE4LTB4MjQ1OCkpKigweDIyMCszNjg5LTB4MTA4NCk7CitwdFRpbWVTdGFtcC0+aG91cj0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaS8oMHg3YjIrOTE2LTB4YjBhKSkpOworcHRUaW1lU3RhbXAtPm1pbnV0ZT0oVUlOVDgpelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaSUoMHgxNTkyKzI5MTctMHgyMGJiKSkpO30KK2Vsc2UgaWYoaVZhbGlkVGltZTwoMHhiOTUrMjUyNy0weDE0Y2QpKXtpPShpVmFsaWRUaW1lLSgweDE3NDcrMzI3Mi0weDIzODApKSoKKygweDliOCsxNjY4LTB4MTAxZSk7cHRUaW1lU3RhbXAtPmhvdXI9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKAorKDB4MTY2MSsxOTAzLTB4MWRjNCkraS8oMHgxYzI0KzExNTctMHgyMDZkKSkpO3B0VGltZVN0YW1wLT5taW51dGU9KFVJTlQ4KQorelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaSUoMHg2ZTMrMzQ2OC0weDE0MzMpKSk7fWVsc2UgaWYoaVZhbGlkVGltZTwKKygweDEwNCsxMTE1LTB4NDlhKSl7aT1pVmFsaWRUaW1lLSgweDE4NjMrMjQ1OS0weDIxNTgpO3B0VGltZVN0YW1wLT5tb250aD0oVUlOVDgpCit6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpLygweDM0KzgwOTctMHgxZmI3KSkpO3B0VGltZVN0YW1wLT5kYXk9KFVJTlQ4KQorelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoaSUoMHgxNWUwKzEwMjktMHgxOWM3KSkpO31lbHNle2k9KGlWYWxpZFRpbWUtCisoMHhkMjArMjQzLTB4ZDUzKSkqKDB4MzdiKzYzNzktMHgxYzVmKTtwdFRpbWVTdGFtcC0+eWVhcj0oVUlOVDgpCit6VWZpU21zX1RzSW50VG9CY2QoKFVJTlQ4KShpLygweGIzZisxNjMwLTB4MTAzMCkpKTtwdFRpbWVTdGFtcC0+bW9udGg9KFVJTlQ4KQorelVmaVNtc19Uc0ludFRvQmNkKChVSU5UOCkoKGklKDB4ZGU3KzY1Ni0weGYwYSkpLygweDFhOTgrMzk2LTB4MWMwNikpKTsKK3B0VGltZVN0YW1wLT5kYXk9KFVJTlQ4KXpVZmlTbXNfVHNJbnRUb0JjZCgoVUlOVDgpKChpJSgweDc3Yys2OTg5LTB4MjE1YykpJQorKDB4MTI5NSsyMzkyLTB4MWJjZikpKTt9fWVsc2V7cHJpbnRmKAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzJceDY1XHg2Y1x4NjFceDc0XHg2OVx4NzZceDY1XHg1Zlx4NzRceDY5XHg2ZFx4NjUiCiApO319aW50IHpVZmlTbXNfQ2hhclRvSW50KGNoYXIqcENoYXJBcnJheSxpbnQgaUxlbix1bnNpZ25lZCBjaGFyKnBJbnRBcnJheSl7aW50IAotaT0oMHgxNzlkKzc0NS0weDFhODYpO2lmKHBJbnRBcnJheT09TlVMTHx8cENoYXJBcnJheT09TlVMTCl7cmV0dXJuIFpVRklfRkFJTDt9Ci1mb3IoaT0oMHgxNjYwKzE5NDEtMHgxZGY1KTtpPGlMZW47aSsrKXtwSW50QXJyYXlbaV09cENoYXJBcnJheVtpXS0KLSgoY2hhcikoMHhmNDErNDAzMi0weDFlZDEpKTt9cmV0dXJuIFpVRklfU1VDQzt9dm9pZCB6VWZpU21zX0ZpbGxHbG9iYWxUcHVkR3NtNygKK2k9KDB4MWI4Nis5MzEtMHgxZjI5KTtpZihwSW50QXJyYXk9PU5VTEx8fHBDaGFyQXJyYXk9PU5VTEwpe3JldHVybiBaVUZJX0ZBSUw7fQorZm9yKGk9KDB4OWRkKzQ1NjEtMHgxYmFlKTtpPGlMZW47aSsrKXtwSW50QXJyYXlbaV09cENoYXJBcnJheVtpXS0KKygoY2hhcikoMHg0ZjMrMzYwOS0weDEyZGMpKTt9cmV0dXJuIFpVRklfU1VDQzt9dm9pZCB6VWZpU21zX0ZpbGxHbG9iYWxUcHVkR3NtNygKIFRfelVmaVNtc19TdWJtaXRUcGR1KnB0U3VibWl0LFRfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLAotVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSl7aW50IGk9KDB4N2YzKzg3Ny0weGI2MCk7aWYocHRDb25jYXRTbXMtPgotdG90YWxfbXNnPigweDFlYTErMTU3Ni0weDI0YzgpKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VREhJPSgweDkyNCs2NzYzLTB4MjM4ZSkKLTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgzOTgrMjE2Mi0weGMwYSldPSgweDcyYSs4MjAtMHhhNTkpOwotZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MWQwYSsxMTcwLTB4MjE5YildPSgweDJlZisyNzY3LTB4ZGI5KTsKLWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDEzYmIrNDc1MS0weDI2NDgpXT0oMHgxMzE0KzQ3MTEtMHgyNTc4KTsKLWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDNhMis4NTkzLTB4MjUzMCldPShjaGFyKXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHgxNzU5KzEwNzItMHgxYjg5KV0lKDB4ODdiKzE1OTItMHhkYjQpO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWwotKDB4YjQ5KzQ2ODctMHgxZDk0KV09KGNoYXIpcHRDb25jYXRTbXMtPnRvdGFsX21zZztnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsKLSgweDg5Mis3Mjc4LTB4MjRmYildPShjaGFyKXB0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmcrKDB4MWVlOCsxMzM4LTB4MjQyMSk7Ci1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHhhNDYrNjU1NC0weDIzZGEpXT0oMHg2YWQrNzU4Mi0weDI0NDUpO2ZvcihpPQotKDB4OGU0KzQzNS0weGE5Nyk7aTxwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbjtpKyspe2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEW2kKLSsoMHgxNGUyKzQxOTMtMHgyNTNjKV09cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9kYXRhW2ldO31nX3pVZmlTbXNfU2VuZGluZ1Ntcy4KLVRQX1VETGVuZ3RoPXB0U3VibWl0LT51c2VyX2RhdGEuc21fbGVuKygweGM2Zis2NjczLTB4MjY3OSk7fWVsc2V7Zm9yKGk9Ci0oMHhiZTQrMTQ4MC0weDExYWMpO2k8cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9sZW47aSsrKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRAotW2ldPXB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YVtpXTt9Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURMZW5ndGg9cHRTdWJtaXQtPgotdXNlcl9kYXRhLnNtX2xlbjt9fXZvaWQgelVmaVNtc19GaWxsR2xvYmFsVHB1ZFVjczIoVF96VWZpU21zX1N1Ym1pdFRwZHUqcHRTdWJtaXQKLSxUX3pVZmlTbXNfQ29uY2F0SW5mbypwdENvbmNhdFNtcyxUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhKXtpZigKLXB0Q29uY2F0U21zLT50b3RhbF9tc2c+KDB4MzY2KzEwMjQtMHg3NjUpKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VREhJPQotKDB4ZmIzKzMwNzMtMHgxYmIzKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHg3Yys2OTE5LTB4MWI4MyldPQotKDB4ZjM1KzM2NDMtMHgxZDZiKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHhiN2MrMTM1My0weDEwYzQpXT0KLSgweDEzNjgrMjI1MS0weDFjMmUpO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDU4Mys1MDYxLTB4MTk0NildPQotKDB4MWQ5Mis2ODctMHgyMDNlKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHg0YjUrMzIxLTB4NWYzKV09KGNoYXIpCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDE2NjkrMjE5MS0weDFlZjgpXSUoMHgxMmYzKzIyNzctMHgxYWQ5KTsKLWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDY3MSs0OTU4LTB4MTljYildPShjaGFyKXB0Q29uY2F0U21zLT50b3RhbF9tc2c7Ci1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHhlMDkrMzc4NS0weDFjY2QpXT0oY2hhcilwdENvbmNhdFNtcy0+Ci1jdXJyZW50X3NlbmRpbmcrKDB4ZjFjKzI0ODctMHgxOGQyKTsodm9pZClCeXRlczJTdHJpbmcocHRTdWJtaXQtPnVzZXJfZGF0YS4KLXNtX2RhdGEsJmdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDFjNCs1Njc3LTB4MTdlYildLHB0U3VibWl0LT51c2VyX2RhdGEuCi1zbV9sZW4pO31lbHNleyh2b2lkKUJ5dGVzMlN0cmluZyhwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2RhdGEsCi1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRCxwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbik7fX11bnNpZ25lZCBjaGFyIAotelVmaVNtc19Mb3cySGlnaCh1bnNpZ25lZCBjaGFyIHgpe2lmKHg+PSgoY2hhcikoMHgyNDgrNjg5OS0weDFjZGEpKSYmeDwKLSgoY2hhcikoMHhjOGQrNTA4NC0weDIwMDIpKSl7eD0oeC0oKGNoYXIpKDB4MTA3NCsyMzUyLTB4MTk0MykpKSsKLSgoY2hhcikoMHgxYzArMjQ4NC0weGIzMykpO31yZXR1cm4geDt9dW5zaWduZWQgY2hhciB6VWZpU21zX0NoYXIyRGVjKHVuc2lnbmVkIAotY2hhciB4KXt1bnNpZ25lZCBjaGFyIGQ9KDB4N2UzKzc4Ny0weGFmNik7aWYoeD49KChjaGFyKSgweDFhNmErMTg2NC0weDIxNzEpKSYmeDwKLSgoY2hhcikoMHg5OTMrNDM3NC0weDFhNjIpKSl7ZD0oeC0oKGNoYXIpKDB4ZTdkKzYyMzAtMHgyNjkyKSkpKwotKDB4MjI1OCsxMjgtMHgyMmNlKTt9ZWxzZXtkPXgtKChjaGFyKSgweDcxNCs0MzYwLTB4MTdlYykpO31yZXR1cm4gZDt9dW5zaWduZWQgCi1jaGFyIHpVZmlTbXNfQ2hhcjJCeXRlKHVuc2lnbmVkIGNoYXIgYSx1bnNpZ25lZCBjaGFyIGIpe3Vuc2lnbmVkIGNoYXIgZGF0YT0KLSgweDk4NSs0MzE1LTB4MWE2MCk7dW5zaWduZWQgY2hhciBsPSgweGM1YSs2NTkyLTB4MjYxYSksaD0oMHg3NmErMTM2MS0weGNiYik7YT0KLXpVZmlTbXNfTG93MkhpZ2goYSk7Yj16VWZpU21zX0xvdzJIaWdoKGIpO2g9elVmaVNtc19DaGFyMkRlYyhhKTtsPQotelVmaVNtc19DaGFyMkRlYyhiKTtkYXRhPWgqKDB4MTk4NSsyNDc2LTB4MjMyMSkrbDtyZXR1cm4gZGF0YTt9dm9pZCAKLXpVZmlTbXNfU3RyMkJ5dGVzKHVuc2lnbmVkIGNoYXIqdGV4dCxpbnQgdGV4dF9sZW4sdW5zaWduZWQgY2hhcipkYXRhLGludCAKLWRhdGFfbGVuKXtpbnQgaT0oMHgzMzgrODYyMy0weDI0ZTcpO3doaWxlKCgweDk4NisxMTQ4LTB4ZTAwKSppKwotKDB4MWI5Yis2ODgtMHgxZTRhKTx0ZXh0X2xlbil7ZGF0YVtpXT16VWZpU21zX0NoYXIyQnl0ZSh0ZXh0WwotKDB4MTMwZCsyODEzLTB4MWUwOCkqaV0sdGV4dFsoMHg1MzQrNjA4My0weDFjZjUpKmkrKDB4NWQ3KzQwLTB4NWZlKV0pO2krKzt9fWludCAKLXpVZmlTbXNfU3BsaXRTdHJpbmcoY2hhcippbnB1dCxjaGFyKioqb3V0cHV0LGNoYXIgY01hdGNoQ2hhcil7aW50IHNyYz0KLSgweDIwYmQrMTA5NS0weDI1MDQpO2ludCBkc3Q9KDB4NmRkKzI0NDQtMHgxMDY5KTtpbnQgY291bnQ9KDB4MWFlOCsxNzAwLTB4MjE4Yyk7Ci1pbnQgc2l6ZT0oMHgxMDkyKzM0MDYtMHgxZGQ4KTtjaGFyIHF1b3RlZD0oMHhmMmErNDUxOC0weDIwZDApO2NoYXIqKnRtcG91dD1OVUxMOwotKm91dHB1dD0oY2hhcioqKW1hbGxvYyhzaXplb2YoY2hhciopKnNpemUpO2lmKE5VTEw9PSpvdXRwdXQpe3JldHVybi0KLSgweGM3ZCs0NzU5LTB4MWYxMyk7fSgqb3V0cHV0KVtjb3VudCsrXT1pbnB1dDtmb3Ioc3JjPWRzdD0oMHgzNDYrODAyLTB4NjY4KTsKK1RfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2ludCBpPSgweDQwNSsxMjItMHg0N2YpO2lmKHB0Q29uY2F0U21zLT4KK3RvdGFsX21zZz4oMHgxZTA5KzEyMzYtMHgyMmRjKSl7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURIST0KKygweDEwY2ErMjMwNi0weDE5Y2IpO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDdlMCs0MDMyLTB4MTdhMCldPQorKDB4Njk2KzM0NTEtMHgxNDBjKTtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHhiOTgrMjMxMi0weDE0OWYpXT0KKygweGRmMSs2MTc5LTB4MjYwZik7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MTAzMisyOTY4LTB4MWJjOCldPQorKDB4Y2ErMzYyMy0weGVlZSk7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4MTA0NCszMzg0LTB4MWQ3OSldPShjaGFyKQorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxYTgwKzIwOTgtMHgyMmIyKV0lKDB4M2M1KzIxLTB4MmRiKTsKK2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweGU0Yys0MTY0LTB4MWU4YyldPShjaGFyKXB0Q29uY2F0U21zLT50b3RhbF9tc2c7CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgxNzFjKzI3NzQtMHgyMWVkKV09KGNoYXIpcHRDb25jYXRTbXMtPgorY3VycmVudF9zZW5kaW5nKygweDZhZCszODAzLTB4MTU4Nyk7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbCisoMHgxZjY1KzEyOTktMHgyNDcyKV09KDB4MTU4OSsxNDk1LTB4MWI1YSk7Zm9yKGk9KDB4ODBiKzQxOC0weDlhZCk7aTxwdFN1Ym1pdC0+Cit1c2VyX2RhdGEuc21fbGVuO2krKyl7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbaSsoMHgxMjM3KzEwMzMtMHgxNjM5KV09CitwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2RhdGFbaV07fWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VETGVuZ3RoPXB0U3VibWl0LT4KK3VzZXJfZGF0YS5zbV9sZW4rKDB4MWY0MysxMjQyLTB4MjQxNik7fWVsc2V7Zm9yKGk9KDB4MjJlNys2MzctMHgyNTY0KTtpPHB0U3VibWl0CistPnVzZXJfZGF0YS5zbV9sZW47aSsrKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFtpXT1wdFN1Ym1pdC0+dXNlcl9kYXRhLgorc21fZGF0YVtpXTt9Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURMZW5ndGg9cHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9sZW47fX12b2lkIAorelVmaVNtc19GaWxsR2xvYmFsVHB1ZFVjczIoVF96VWZpU21zX1N1Ym1pdFRwZHUqcHRTdWJtaXQsVF96VWZpU21zX0NvbmNhdEluZm8qCitwdENvbmNhdFNtcyxUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhKXtpZihwdENvbmNhdFNtcy0+dG90YWxfbXNnPgorKDB4MTIyMCszMy0weDEyNDApKXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VREhJPSgweGVkNCsyMDg3LTB4MTZmYSk7CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHhhNDMrMjA2My0weDEyNTIpXT0oMHgyNDArOTMwOC0weDI2OTcpOworZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbKDB4ZDBjKzM4LTB4ZDMxKV09KDB4ZTZhKzQ3NDYtMHgyMGVmKTsKK2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWygweDVlYSs3MTgyLTB4MjFmNildPSgweDE2ZDQrNjY2LTB4MTk2Yik7CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFsoMHgxMzRiKzEyNDEtMHgxODIxKV09KGNoYXIpcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mbworWygweDExY2QrMzg1MS0weDIwZDgpXSUoMHgxZTIrMTc5Mi0weDdlMyk7Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbCisoMHg2M2ErMjgwMC0weDExMjYpXT0oY2hhcilwdENvbmNhdFNtcy0+dG90YWxfbXNnO2dfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEWworKDB4MTE1ZCsxMTgtMHgxMWNlKV09KGNoYXIpcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHg3MjgrNzMwMS0weDIzYWMpOygKK3ZvaWQpQnl0ZXMyU3RyaW5nKHB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YSwmZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURbCisoMHgxOTJiKzI2Ni0weDFhMmYpXSxwdFN1Ym1pdC0+dXNlcl9kYXRhLnNtX2xlbik7fWVsc2V7KHZvaWQpQnl0ZXMyU3RyaW5nKAorcHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9kYXRhLGdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VELHB0U3VibWl0LT51c2VyX2RhdGEuCitzbV9sZW4pO319dW5zaWduZWQgY2hhciB6VWZpU21zX0xvdzJIaWdoKHVuc2lnbmVkIGNoYXIgeCl7aWYoeD49CisoKGNoYXIpKDB4MTFiNys5MDUtMHgxNGRmKSkmJng8KChjaGFyKSgweDE1MDArMjM3MS0weDFkZGMpKSl7eD0oeC0KKygoY2hhcikoMHgxMjI5KzI5Ny0weDEyZjEpKSkrKChjaGFyKSgweDFkOTYrMTM3MC0weDIyYWYpKTt9cmV0dXJuIHg7fXVuc2lnbmVkIAorY2hhciB6VWZpU21zX0NoYXIyRGVjKHVuc2lnbmVkIGNoYXIgeCl7dW5zaWduZWQgY2hhciBkPSgweDQxNSszMDY2LTB4MTAwZik7aWYoeAorPj0oKGNoYXIpKDB4MTNlZCsxOTg1LTB4MWI2ZCkpJiZ4PCgoY2hhcikoMHgxMDkrMTQ2Ni0weDY3YykpKXtkPSh4LQorKChjaGFyKSgweDM4Mis0ODU2LTB4MTYzOSkpKSsoMHhjNzgrNDMyMS0weDFkNGYpO31lbHNle2Q9eC0KKygoY2hhcikoMHhjNWMrMjQ1NC0weDE1YzIpKTt9cmV0dXJuIGQ7fXVuc2lnbmVkIGNoYXIgelVmaVNtc19DaGFyMkJ5dGUodW5zaWduZWQgCitjaGFyIGEsdW5zaWduZWQgY2hhciBiKXt1bnNpZ25lZCBjaGFyIGRhdGE9KDB4ZGI3KzE0MjQtMHgxMzQ3KTt1bnNpZ25lZCBjaGFyIGw9CisoMHgyNGFjKzEwMS0weDI1MTEpLGg9KDB4ODY2KzU0NTUtMHgxZGI1KTthPXpVZmlTbXNfTG93MkhpZ2goYSk7Yj0KK3pVZmlTbXNfTG93MkhpZ2goYik7aD16VWZpU21zX0NoYXIyRGVjKGEpO2w9elVmaVNtc19DaGFyMkRlYyhiKTtkYXRhPWgqCisoMHgxZmYrNDM0NC0weDEyZTcpK2w7cmV0dXJuIGRhdGE7fXZvaWQgelVmaVNtc19TdHIyQnl0ZXModW5zaWduZWQgY2hhcip0ZXh0LGludAorIHRleHRfbGVuLHVuc2lnbmVkIGNoYXIqZGF0YSxpbnQgZGF0YV9sZW4pe2ludCBpPSgweGZiZCsyOTgwLTB4MWI2MSk7d2hpbGUoCisoMHg2N2YrNDYyMy0weDE4OGMpKmkrKDB4MWIxNysyMTU2LTB4MjM4Mik8dGV4dF9sZW4pe2RhdGFbaV09elVmaVNtc19DaGFyMkJ5dGUoCit0ZXh0WygweDIzMCszMzkzLTB4ZjZmKSppXSx0ZXh0WygweDMxKzM2NzUtMHhlOGEpKmkrKDB4MTZiZCs0OC0weDE2ZWMpXSk7aSsrO319CitpbnQgelVmaVNtc19TcGxpdFN0cmluZyhjaGFyKmlucHV0LGNoYXIqKipvdXRwdXQsY2hhciBjTWF0Y2hDaGFyKXtpbnQgc3JjPQorKDB4M2ZkKzg4MTctMHgyNjZlKTtpbnQgZHN0PSgweDRhMiszMzM5LTB4MTFhZCk7aW50IGNvdW50PSgweDcwZCsxNzAwLTB4ZGIxKTtpbnQKKyBzaXplPSgweDE5ZTUrMTE4NS0weDFlN2UpO2NoYXIgcXVvdGVkPSgweGY3OSsyOTk0LTB4MWIyYik7Y2hhcioqdG1wb3V0PU5VTEw7Kgorb3V0cHV0PShjaGFyKiopbWFsbG9jKHNpemVvZihjaGFyKikqc2l6ZSk7aWYoTlVMTD09Km91dHB1dCl7cmV0dXJuLQorKDB4YzIwKzY2NTktMHgyNjIyKTt9KCpvdXRwdXQpW2NvdW50KytdPWlucHV0O2ZvcihzcmM9ZHN0PSgweDIwZis1NDItMHg0MmQpOwogaW5wdXRbc3JjXTspe2NoYXIgY0lucHV0Q2hhcj1pbnB1dFtzcmNdO2lmKCFxdW90ZWQmJmNJbnB1dENoYXI9PWNNYXRjaENoYXIpewotaW5wdXRbZHN0KytdPSgweDM3MSs0NDgwLTB4MTRmMSk7d2hpbGUoaW5wdXRbKytzcmNdJiYoaW50KWlzc3BhY2UoaW5wdXRbc3JjXSkpe30KLTtpZihjb3VudD49c2l6ZSl7c2l6ZSs9KDB4NzVhKzc0NzAtMHgyNDc4KTt0bXBvdXQ9KGNoYXIqKilyZWFsbG9jKCpvdXRwdXQsc2l6ZW9mCi0oY2hhciopKnNpemUpO2lmKE5VTEw9PXRtcG91dCl7cmV0dXJuLSgweDQxMis3NzQ1LTB4MjI1Mik7fSpvdXRwdXQ9dG1wb3V0O30oKgoraW5wdXRbZHN0KytdPSgweDc0MSsxODg2LTB4ZTlmKTt3aGlsZShpbnB1dFsrK3NyY10mJihpbnQpaXNzcGFjZShpbnB1dFtzcmNdKSl7fTsKK2lmKGNvdW50Pj1zaXplKXtzaXplKz0oMHgyMzM2KzM0MC0weDI0N2EpO3RtcG91dD0oY2hhcioqKXJlYWxsb2MoKm91dHB1dCxzaXplb2YoCitjaGFyKikqc2l6ZSk7aWYoTlVMTD09dG1wb3V0KXtyZXR1cm4tKDB4MjUxMisyMDUtMHgyNWRlKTt9Km91dHB1dD10bXBvdXQ7fSgqCiBvdXRwdXQpW2NvdW50KytdPWlucHV0K2RzdDt9ZWxzZSBpZighcXVvdGVkJiYoY0lucHV0Q2hhcj09J1wnJ3x8Y0lucHV0Q2hhcj09Ci0oKGNoYXIpKDB4MWJiYysyMzItMHgxYzgyKSkpKXtxdW90ZWQ9Y0lucHV0Q2hhcjtzcmMrKzt9ZWxzZSBpZihjSW5wdXRDaGFyPT0KLXF1b3RlZCl7cXVvdGVkPSgweDFlNzErNTU1LTB4MjA5Yyk7c3JjKys7fWVsc2V7aWYoY0lucHV0Q2hhcj09J1xcJyYmcXVvdGVkIT0nXCcnCisoKGNoYXIpKDB4ODUxKzYxNDctMHgyMDMyKSkpKXtxdW90ZWQ9Y0lucHV0Q2hhcjtzcmMrKzt9ZWxzZSBpZihjSW5wdXRDaGFyPT0KK3F1b3RlZCl7cXVvdGVkPSgweGM0YSs0MDQ4LTB4MWMxYSk7c3JjKys7fWVsc2V7aWYoY0lucHV0Q2hhcj09J1xcJyYmcXVvdGVkIT0nXCcnCiApe3NyYysrO2NJbnB1dENoYXI9aW5wdXRbc3JjXTtpZighY0lucHV0Q2hhcil7ZnJlZSgqb3V0cHV0KTsqb3V0cHV0PU5VTEw7cmV0dXJuLQotKDB4MjRhKzkyMTctMHgyNjRhKTt9fWlucHV0W2RzdCsrXT1jSW5wdXRDaGFyO3NyYysrO319aW5wdXRbZHN0XT0KLSgweDFkZTUrMjE0MS0weDI2NDIpO2lmKHF1b3RlZCl7ZnJlZSgqb3V0cHV0KTsqb3V0cHV0PU5VTEw7cmV0dXJuLQotKDB4YzM2KzE3OTAtMHgxMzMzKTt9cmV0dXJuIGNvdW50O31pbnQgelVmaVNtc19hdG9oZXgoY2hhciBjKXtpbnQgcmVzdWx0PQotKDB4MjNiKzU2MDMtMHgxODFlKTtpZihjPj0oKGNoYXIpKDB4NDg1KzI3MzgtMHhmMDcpKSYmYzw9Ci0oKGNoYXIpKDB4NGNiKzM5ODUtMHgxNDIzKSkpe3Jlc3VsdD1jLSgoY2hhcikoMHg1ODQrNzUyNC0weDIyYjgpKTt9ZWxzZSBpZihjPj0KLSgoY2hhcikoMHgxNzczKzE3ODktMHgxZTBmKSkmJmM8PSgoY2hhcikoMHhkN2IrMTY2NC0weDEzOTUpKSl7cmVzdWx0PShjLQotKChjaGFyKSgweGYzNCsyMjg3LTB4MTdjMikpKSsoMHg4MjcrNDU3OS0weDFhMDApO31lbHNlIGlmKGM+PQotKChjaGFyKSgweGY1NSsyNTQxLTB4MTkwMSkpJiZjPD0oKGNoYXIpKDB4YWIzKzIzOC0weGI1YikpKXtyZXN1bHQ9KGMtCi0oKGNoYXIpKDB4MTgzKzUxMDgtMHgxNTM2KSkpKygweGE4KzM4MzAtMHhmOTQpO31lbHNle2F0X3ByaW50KExPR19ERUJVRywKKygweDdhMys2ODMxLTB4MjI1MSk7fX1pbnB1dFtkc3QrK109Y0lucHV0Q2hhcjtzcmMrKzt9fWlucHV0W2RzdF09CisoMHg3NmQrMjA3NC0weGY4Nyk7aWYocXVvdGVkKXtmcmVlKCpvdXRwdXQpOypvdXRwdXQ9TlVMTDtyZXR1cm4tCisoMHgyMGY3KzYtMHgyMGZjKTt9cmV0dXJuIGNvdW50O31pbnQgelVmaVNtc19hdG9oZXgoY2hhciBjKXtpbnQgcmVzdWx0PQorKDB4N2MxKzM2NDctMHgxNjAwKTtpZihjPj0oKGNoYXIpKDB4MWQ3MSsxMDU2LTB4MjE2MSkpJiZjPD0KKygoY2hhcikoMHg2MDQrNDI4NS0weDE2ODgpKSl7cmVzdWx0PWMtKChjaGFyKSgweGE1MisyNjE0LTB4MTQ1OCkpO31lbHNlIGlmKGM+PQorKChjaGFyKSgweGVmKzI0NTUtMHhhMjUpKSYmYzw9KChjaGFyKSgweGUzZis0NjM5LTB4MWZmOCkpKXtyZXN1bHQ9KGMtCisoKGNoYXIpKDB4MTYwKzg2NTctMHgyMmQwKSkpKygweDFjODMrMjcwMi0weDI3MDcpO31lbHNlIGlmKGM+PQorKChjaGFyKSgweDU1ZCsyNzE4LTB4ZmJhKSkmJmM8PSgoY2hhcikoMHhmZDgrNDQ5LTB4MTE1MykpKXtyZXN1bHQ9KGMtCisoKGNoYXIpKDB4MWE0OSs2ODItMHgxY2IyKSkpKygweDFmZjkrMTA2Mi0weDI0MTUpO31lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NjFceDc0XHg2Zlx4NjhceDY1XHg3OFx4MjBceDY1XHg3Mlx4NzJceDZmXHg3Mlx4MmNceDYzXHg2MVx4NmVceDIwXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDYzXHg2OFx4NjFceDcyXHgzYVx4MjVceDYzIiAiXG4iCiAsYyk7cmV0dXJuIHJlc3VsdDt9cmV0dXJuIHJlc3VsdDt9aW50IHpVZmlTbXNfRGlzcGF0Y2hXdG9pKHVuc2lnbmVkIGNoYXIqaW5fcHRyLAotaW50IGlMZW5ndGgsdW5zaWduZWQgY2hhcipvdXRfcHRyKXtpbnQgbG93PSgweDc4NSs2NzYwLTB4MjFlZCk7aW50IGhpZ2g9Ci0oMHgxMzY0KzI1MDItMHgxZDJhKTtpZihpbl9wdHI9PU5VTEx8fG91dF9wdHI9PU5VTEwpe3ByaW50ZigKK2ludCBpTGVuZ3RoLHVuc2lnbmVkIGNoYXIqb3V0X3B0cil7aW50IGxvdz0oMHgxNDM1KzMxMjYtMHgyMDZiKTtpbnQgaGlnaD0KKygweDEzZDkrNDAwNi0weDIzN2YpO2lmKGluX3B0cj09TlVMTHx8b3V0X3B0cj09TlVMTCl7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4M2FceDY5XHg2ZVx4NzZceDYxXHg2OVx4NmNceDY0XHgyMFx4NzBceDYxXHg3Mlx4NjFceDZkXHg2NVx4NzRceDY1XHg3MiIgIlxuIgotKTtyZXR1cm4gWlVGSV9GQUlMO313aGlsZShpTGVuZ3RoPigweDEwMDArMTE5OC0weDE0YWUpKXtsb3c9aW5fcHRyW2lMZW5ndGgtCi0oMHgzNTErNjMzLTB4NWM5KV0mKDB4MWE5ZCsxNjk1LTB4MjEyZCk7aGlnaD0oaW5fcHRyW2lMZW5ndGgtCi0oMHgxNGUwKzQ0MTUtMHgyNjFlKV0mKDB4MTRkMCs0NjY1LTB4MjYxOSkpPj4oMHgzZWIrNzE1NC0weDFmZDkpO291dF9wdHJbCi0oMHg2ODkrNDE4Ni0weDE2ZTEpKmlMZW5ndGgtKDB4MTY3YyszNTU5LTB4MjQ2MildPWdfelVmaVNtc19EaWdBc2NNYXBbbG93XTsKLW91dF9wdHJbKDB4MWRkMCsyMDY3LTB4MjVlMSkqaUxlbmd0aC0oMHgxNTJmKzI1OTYtMHgxZjUxKV09Z196VWZpU21zX0RpZ0FzY01hcFsKLWhpZ2hdO2lMZW5ndGgtLTt9cmV0dXJuIFpVRklfU1VDQzt9dW5zaWduZWQgaW50IAotenRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMihjb25zdCB1bnNpZ25lZCBjaGFyKmdzbWRlZix1bnNpZ25lZCBjaGFyKnVjczIKLSx1bnNpZ25lZCBpbnQgbGVuKXt1bnNpZ25lZCBpbnQgaT0oMHgxYjQzKzEyNjctMHgyMDM2KTt1bnNpZ25lZCBpbnQgaj0KLSgweGIxNSs3OTYtMHhlMzEpO3Vuc2lnbmVkIGludCBrPSgweDVmMCsyMjUyLTB4ZWJjKTt1bnNpZ25lZCBpbnQgcD0KLSgweDExZjcrMjk2NS0weDFkOGMpO3Vuc2lnbmVkIGludCBzPSgweDE4NWYrMTAwLTB4MThjMyk7cz1zaXplb2YoCispO3JldHVybiBaVUZJX0ZBSUw7fXdoaWxlKGlMZW5ndGg+KDB4MWQrMzMyOC0weGQxZCkpe2xvdz1pbl9wdHJbaUxlbmd0aC0KKygweDFmNjcrMjU3LTB4MjA2NyldJigweGI2KzU3NjItMHgxNzI5KTtoaWdoPShpbl9wdHJbaUxlbmd0aC0oMHgyZWErODY5MC0weDI0ZGIpCitdJigweDkzYSs0OTgyLTB4MWJjMCkpPj4oMHg4YWErNDU1Ny0weDFhNzMpO291dF9wdHJbKDB4ODUzKzQ0NzctMHgxOWNlKSppTGVuZ3RoLQorKDB4ZjYrMjc0OS0weGJiMildPWdfelVmaVNtc19EaWdBc2NNYXBbbG93XTtvdXRfcHRyWygweDZiNiszMjU1LTB4MTM2YikqaUxlbmd0aC0KKygweDEzMzcrMzk1NS0weDIyYTgpXT1nX3pVZmlTbXNfRGlnQXNjTWFwW2hpZ2hdO2lMZW5ndGgtLTt9cmV0dXJuIFpVRklfU1VDQzt9Cit1bnNpZ25lZCBpbnQgenRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMihjb25zdCB1bnNpZ25lZCBjaGFyKmdzbWRlZiwKK3Vuc2lnbmVkIGNoYXIqdWNzMix1bnNpZ25lZCBpbnQgbGVuKXt1bnNpZ25lZCBpbnQgaT0oMHg5NzcrMzEwNC0weDE1OTcpO3Vuc2lnbmVkCisgaW50IGo9KDB4ZWMyKzU1MzktMHgyNDY1KTt1bnNpZ25lZCBpbnQgaz0oMHgxOTErMTM1Mi0weDZkOSk7dW5zaWduZWQgaW50IHA9CisoMHgxZTA2KzIxNTgtMHgyNjc0KTt1bnNpZ25lZCBpbnQgcz0oMHg4YTQrNDc4NC0weDFiNTQpO3M9c2l6ZW9mKAogenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAotenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFsoMHg2Nis4MDQ1LTB4MWZkMyldKTtmb3IoaT0KLSgweGUyZCsyNzQzLTB4MThlNCk7aTxsZW47aSsrKXtqPWdzbWRlZltpXTtpZihqPT0oMHgxMmZjKzQ4MC0weDE0YzEpKXtpKys7Zm9yKHA9Ci0oMHgxNDJmKzc2LTB4MTQ3Yik7cDxzO3ArKyl7aWYoenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFtwXVsKLSgweGE3OSs3Mjk2LTB4MjZmOSldPT1nc21kZWZbaV0pe3VjczJba109Ci16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweDE2ZmIrMzgxMy0weDI1ZGYpXT4+Ci0oMHgyMDIrNjA3MS0weDE5YjEpO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCBjaGFyKSgKLXp0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcF1bKDB4OGQ2KzcxNy0weGJhMildKTticmVhazt9fX1lbHNlewotdWNzMltrXT16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdPj4oMHhlOWQrMzgyOS0weDFkOGEpO2srKzt1Y3MyW2sKK3p0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbKDB4MWFiMisyMjYxLTB4MjM4NyldKTtmb3IoaT0KKygweGU2MysxMDg4LTB4MTJhMyk7aTxsZW47aSsrKXtqPWdzbWRlZltpXTtpZihqPT0oMHg5MDIrNjI0Ny0weDIxNGUpKXtpKys7Zm9yKHA9CisoMHgxM2U1KzM5NTQtMHgyMzU3KTtwPHM7cCsrKXtpZih6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlX0V4W3BdWworKDB4MWI1OCsyMTctMHgxYzMxKV09PWdzbWRlZltpXSl7dWNzMltrXT0KK3p0ZV9zbXNfR1NNN19QT1JUVUdVRVNFX1RvX1VDUzJfVGFibGVfRXhbcF1bKDB4MWYzYysxNzU3LTB4MjYxOCldPj4KKygweDFjMTQrNjU1LTB4MWU5Yik7aysrO3VjczJba109KHVuc2lnbmVkIGNoYXIpKAorenRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxMzArNDQ0OS0weDEyOTApXSk7YnJlYWs7fX19ZWxzZXsKK3VjczJba109enRlX3Ntc19HU003X1BPUlRVR1VFU0VfVG9fVUNTMl9UYWJsZVtqXT4+KDB4MTAyMSs1MDUtMHgxMjEyKTtrKys7dWNzMltrCiBdPSh1bnNpZ25lZCBjaGFyKSh6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7CiByZXR1cm4gazt9dW5zaWduZWQgaW50IHp0ZV93bXNfY29udmVydF9QT1JUVUdVRVNFX1RvX1VDUzJfVVNFX0dTTTdfU1NfUE9SVFVfTFMoCiBjb25zdCB1bnNpZ25lZCBjaGFyKmdzbWRlZix1bnNpZ25lZCBjaGFyKnVjczIsdW5zaWduZWQgaW50IGxlbil7dW5zaWduZWQgaW50IGk9Ci0oMHhhMWMrMTYwOC0weDEwNjQpO3Vuc2lnbmVkIGludCBqPSgweDJiYis0MzgzLTB4MTNkYSk7dW5zaWduZWQgaW50IGs9Ci0oMHg2NTMrNTAxNy0weDE5ZWMpO3Vuc2lnbmVkIGludCBwPSgweDE0NGYrMjA4Mi0weDFjNzEpO3Vuc2lnbmVkIGludCBzPQotKDB4NzQ3KzEzMzYtMHhjN2YpO3M9c2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4KS9zaXplb2YoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFsoMHgxMTMrMzY5OS0weGY4NildKTtmb3IoaT0KLSgweGVmNys0NTAzLTB4MjA4ZSk7aTxsZW47aSsrKXtqPWdzbWRlZltpXTtpZihqPT0oMHhiYTcrNDQwNC0weDFjYzApKXtpKys7Zm9yKHA9Ci0oMHgxKzIwNTItMHg4MDUpO3A8cztwKyspe2lmKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWwotKDB4MTQ2MSsyMjcxLTB4MWQ0MCldPT1nc21kZWZbaV0pe3VjczJba109enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF0KLVsoMHgzZGIrMTk4LTB4NGEwKV0+PigweDU3MSs4NDAwLTB4MjYzOSk7aysrO3VjczJba109KHVuc2lnbmVkIGNoYXIpKAotenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF1bKDB4YjBmKzMzOC0weGM2MCldKTticmVhazt9fX1lbHNle3VjczJba10KLT16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdPj4oMHhiOTArNTM1OS0weDIwNzcpO2srKzt1Y3MyW2tdPSgKKygweDQ1KzgzMzUtMHgyMGQ0KTt1bnNpZ25lZCBpbnQgaj0oMHhkNzQrMTE4NC0weDEyMTQpO3Vuc2lnbmVkIGludCBrPQorKDB4YTlkKzE0ODctMHgxMDZjKTt1bnNpZ25lZCBpbnQgcD0oMHgxODY3KzMwMTgtMHgyNDMxKTt1bnNpZ25lZCBpbnQgcz0KKygweDIyNCsyNTY0LTB4YzI4KTtzPXNpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKAorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbKDB4OGJiKzUxMTYtMHgxY2I3KV0pO2ZvcihpPQorKDB4NjdmKzU1NTctMHgxYzM0KTtpPGxlbjtpKyspe2o9Z3NtZGVmW2ldO2lmKGo9PSgweDI3NSs1MTE5LTB4MTY1OSkpe2krKztmb3IocD0KKygweDE0ZjUrNDQ0MS0weDI2NGUpO3A8cztwKyspe2lmKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWworKDB4NGRhKzcyMTktMHgyMTBkKV09PWdzbWRlZltpXSl7dWNzMltrXT16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsKKygweDgwZCsxNzY0LTB4ZWYwKV0+PigweDEzMjQrNDAyNC0weDIyZDQpO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCBjaGFyKSgKK3p0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweGI5YSs1MjU1LTB4MjAyMCldKTticmVhazt9fX1lbHNle3VjczJbCitrXT16dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdPj4oMHgxMWFjKzQ0MjEtMHgyMmU5KTtrKys7dWNzMltrXT0oCiB1bnNpZ25lZCBjaGFyKSh6dGVfc21zX0dTTTdfUE9SVFVHVUVTRV9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7CiByZXR1cm4gazt9dW5zaWduZWQgbG9uZyB6dGVfd21zX2NvbnZlcnRfR1NNRGVmYXVsdF90b19VQ1MyKGNvbnN0IHVuc2lnbmVkIGNoYXIqCi1nc21kZWYsdW5zaWduZWQgY2hhcip1Y3MyLHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4MTFjMis5MzEtMHgxNTY1KQotO3Vuc2lnbmVkIGxvbmcgaj0oMHg5NDArNTMwNS0weDFkZjkpO3Vuc2lnbmVkIGxvbmcgaz0oMHg5NTcrNTQ4OS0weDFlYzgpOwotdW5zaWduZWQgbG9uZyBwPSgweDEyZGQrNTAyMi0weDI2N2IpO3Vuc2lnbmVkIGxvbmcgcz0oMHhhZDErMTg3Ny0weDEyMjYpOwotdW5zaWduZWQgbG9uZyBpc19maW5kPSgweGFmYisyMTAxLTB4MTMzMCk7cz1zaXplb2YoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeCkvc2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4WwotKDB4MWZkMysyODItMHgyMGVkKV0pO2ZvcihpPSgweDc3Yys3OTYyLTB4MjY5Nik7aTxsZW47aSsrKXtqPWdzbWRlZltpXTtpZihqPT0KLSgweGYyNys3NDgtMHgxMWY4KSl7aSsrO2ZvcihwPSgweDc0Mis2NDE4LTB4MjA1NCk7cDxzO3ArKyl7aWYoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHhiNzArMTA2Ny0weGY5YildPT1nc21kZWZbaV0pe3VjczJba109Ci16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxMGZhKzE0MDMtMHgxNjc0KV0+PgotKDB4MzFjKzM2NDktMHgxMTU1KTtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoCi16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsoMHgxOTEzKzEyMTgtMHgxZGQ0KV0pO2lzX2ZpbmQ9Ci0oMHgxOWEyKzE5NzQtMHgyMTU3KTticmVhazt9fWlmKCFpc19maW5kKXthdF9wcmludChMT0dfREVCVUcsCitnc21kZWYsdW5zaWduZWQgY2hhcip1Y3MyLHVuc2lnbmVkIGxvbmcgbGVuKXt1bnNpZ25lZCBsb25nIGk9KDB4ODA0KzU0NDItMHgxZDQ2KQorO3Vuc2lnbmVkIGxvbmcgaj0oMHhmNCsyNTcyLTB4YjAwKTt1bnNpZ25lZCBsb25nIGs9KDB4ZjFmKzQwMjYtMHgxZWQ5KTt1bnNpZ25lZCAKK2xvbmcgcD0oMHgzYjMrNzE4Ny0weDFmYzYpO3Vuc2lnbmVkIGxvbmcgcz0oMHhiZjMrMjY3OC0weDE2NjkpO3Vuc2lnbmVkIGxvbmcgCitpc19maW5kPSgweDE2ZDcrMjA5NC0weDFmMDUpO3M9c2l6ZW9mKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4KS8KK3NpemVvZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFsoMHgyMzErNjQ2OS0weDFiNzYpXSk7Zm9yKGk9CisoMHgzOTcrNjE4NS0weDFiYzApO2k8bGVuO2krKyl7aj1nc21kZWZbaV07aWYoaj09KDB4ZjExKzQ1NDAtMHgyMGIyKSl7aSsrO2ZvcihwPQorKDB4ZDI3KzIyNTYtMHgxNWY3KTtwPHM7cCsrKXtpZih6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZV9FeFtwXVsKKygweGFjMisxNy0weGFkMyldPT1nc21kZWZbaV0pe3VjczJba109enRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVfRXhbcF1bCisoMHg2MWQrNDAyLTB4N2FlKV0+PigweDI3KzI5MTktMHhiODYpO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCBjaGFyKSgKK3p0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlX0V4W3BdWygweDE2NzArNDE4OS0weDI2Y2MpXSk7aXNfZmluZD0KKygweDZlNCs3NzIxLTB4MjUwYyk7YnJlYWs7fX1pZighaXNfZmluZCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzNceDZkXHg3M1x4M2FceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDNkXHgyMFx4MjVceDY0XHgyMFx4NmVceDZmXHg3NFx4MjBceDY2XHg2OVx4NmVceDY0XHgyMFx4NjlceDZlXHgyMFx4NjdceDczXHg2ZFx4NjRceDY1XHg2Nlx4NjFceDc1XHg2Y1x4NzRceDIwXHg2NVx4NzhceDc0XHg2NVx4NmVceDczXHg2OVx4NmZceDZlXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1IiAiXG4iCiAsZ3NtZGVmW2ldKTtpLS07dWNzMltrXT16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZVtqXT4+Ci0oMHgxNWNjKzE4MzYtMHgxY2YwKTtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoCisoMHgxNzljKzE4MzUtMHgxZWJmKTtrKys7dWNzMltrXT0odW5zaWduZWQgY2hhcikoCiB6dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZVtqXSk7fX1lbHNle3VjczJba109Ci16dGVfc21zX0dTTURlZmF1bHRfVG9fVUNTMl9UYWJsZVtqXT4+KDB4MTE2Mys0MjA5LTB4MjFjYyk7aysrO3VjczJba109KHVuc2lnbmVkIAorenRlX3Ntc19HU01EZWZhdWx0X1RvX1VDUzJfVGFibGVbal0+PigweDFiZjErMTk0My0weDIzODApO2srKzt1Y3MyW2tdPSh1bnNpZ25lZCAKIGNoYXIpKHp0ZV9zbXNfR1NNRGVmYXVsdF9Ub19VQ1MyX1RhYmxlW2pdKTt9aysrO311Y3MyW2tdPSdcMCc7cmV0dXJuIGs7fXZvaWQgCiB6VWZpU21zX0NvbnZlcnRVY3MyKGNoYXIqZGF0YSxVSU5UMTYgc21zX2xlbixjaGFyKm91dF9jb250ZW50KXtjaGFyIAotYXNjaWlfY29udGVudFsoMHgxZDliKzE4ODctMHgyNGY4KSpaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKwotKDB4MWNmYysxNjgyLTB4MjM4ZCldPXsoMHgzNjArMjM2OC0weGNhMCl9O1VJTlQxNiBsZW49KDB4MTRiOSsyMjIwLTB4MWQ2NSk7Ci1zd2l0Y2goZ196VWZpU21zX0xhbmd1YWdlKXtjYXNlIERDU19QT1JUVUdVRVNFOmlmKGdfelVmaVNtc19Jc0xhbmd1YWdlU2hpZnQ9PQorYXNjaWlfY29udGVudFsoMHhlNjQrNjAxMi0weDI1ZGUpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgrCisoMHg5MmErOTYxLTB4Y2VhKV09eygweGQwNis1NzU2LTB4MjM4Mil9O1VJTlQxNiBsZW49KDB4ZGJkKzU5NDUtMHgyNGY2KTtzd2l0Y2goCitnX3pVZmlTbXNfTGFuZ3VhZ2Upe2Nhc2UgRENTX1BPUlRVR1VFU0U6aWYoZ196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD09CiBXTVNfVURIX05BVF9MQU5HX1NTKXtsZW49enRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMigoY29uc3QgVUlOVDgqKWRhdGEsKAogVUlOVDgqKWFzY2lpX2NvbnRlbnQsc21zX2xlbik7fWVsc2UgaWYoZ196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD09CiBXTVNfVURIX05BVF9MQU5HX0xTKXtsZW49enRlX3dtc19jb252ZXJ0X1BPUlRVR1VFU0VfVG9fVUNTMl9VU0VfR1NNN19TU19QT1JUVV9MUwpAQCAtNjcyLDQ3ICs2NzAsNDcgQEAKIHNtc19sZW4pO2JyZWFrO30odm9pZCl6VWZpU21zX0Rpc3BhdGNoV3RvaSgoY2hhciopYXNjaWlfY29udGVudCxsZW4sKGNoYXIqKQogb3V0X2NvbnRlbnQpO31ib29sZWFuIHpVZmlTbXNfRGVjb2RlQ29udGVudChjaGFyKm1zZ19jb250ZW50LFVJTlQxNiBzbXNfbGVuLAogYm9vbGVhbiBpc0VzYyxjaGFyKm91dF9jb250ZW50KXtib29sZWFuIGVuZEVzYz1GQUxTRTtjaGFyKnA9TlVMTDtzdGF0aWMgY2hhciAKLWRhdGFbKDB4MTQ1NysyOTYtMHgxNTdlKSsoMHgxZWMrNjUyNC0weDFhYzgpKygweDVjNSs3NjEtMHg4YmQpXT17Ci0oMHgzNGMrNTgxMi0weDFhMDApfTtpbnQgbGVuPSgweGMwKzcwOTUtMHgxYzc3KTtpZihtc2dfY29udGVudD09TlVMTHx8Ci1vdXRfY29udGVudD09TlVMTHx8c21zX2xlbj4oMHg5NWErNDIwNi0weDE4ODgpfHxzbXNfbGVuPCgweDEwOTkrMTc1OC0weDE3NzUpKXsKLXJldHVybiBlbmRFc2M7fWxlbj1zbXNfbGVuO21lbXNldChkYXRhLCgweDE4OWErNDIxLTB4MWEzZiksKDB4MTdmZCs1NTYtMHgxOTg3KSk7Ci1wPWRhdGE7aWYoaXNFc2MpeypwPSgweDEzYmIrOTk0LTB4MTc4Mik7cCsrO316VWZpU21zX1N0cjJCeXRlcygodW5zaWduZWQgY2hhciopCi1tc2dfY29udGVudCxsZW4sKHVuc2lnbmVkIGNoYXIqKXAsKDB4MTg4OCsyNjA1LTB4MjIxNSkpO2lmKHBbbGVuLwotKDB4Y2RhKzM1MDktMHgxYThkKS0oMHg1MWQrNTEwMS0weDE5MDkpXT09KDB4NjE2KzgyMTEtMHgyNjBlKSl7ZW5kRXNjPVRSVUU7fQotelVmaVNtc19Db252ZXJ0VWNzMihkYXRhLGxlbi8oMHhhNGQrNzE0Mi0weDI2MzEpKyhpc0VzYz8oMHgxY2MrNTQ4Ni0weDE3MzkpOgotKDB4MjRhKzI0MzgtMHhiZDApKS0oZW5kRXNjPygweGIzYis1MTIwLTB4MWYzYSk6KDB4MTMyYys0OTAyLTB4MjY1MikpLAorZGF0YVsoMHhmKzk1NjMtMHgyNTY5KSsoMHgyMDgrODA0My0weDIwZDMpKygweDQ3Zis5NDMtMHg4MmQpXT17CisoMHhkYWIrNTMxMC0weDIyNjkpfTtpbnQgbGVuPSgweDE2MjYrMTg4LTB4MTZlMik7aWYobXNnX2NvbnRlbnQ9PU5VTEx8fAorb3V0X2NvbnRlbnQ9PU5VTEx8fHNtc19sZW4+KDB4NjcwKzM5OTktMHgxNGNmKXx8c21zX2xlbjwoMHhiZjYrMTA3MC0weDEwMjIpKXsKK3JldHVybiBlbmRFc2M7fWxlbj1zbXNfbGVuO21lbXNldChkYXRhLCgweGEyZCszMzctMHhiN2UpLCgweDFjMGMrMzExLTB4MWNhMSkpO3A9CitkYXRhO2lmKGlzRXNjKXsqcD0oMHgzODArNzIxNC0weDFmOTMpO3ArKzt9elVmaVNtc19TdHIyQnl0ZXMoKHVuc2lnbmVkIGNoYXIqKQorbXNnX2NvbnRlbnQsbGVuLCh1bnNpZ25lZCBjaGFyKilwLCgweDE1ZTkrNzY2LTB4MTg0NykpO2lmKHBbbGVuLworKDB4MTQ3OCs2NjQtMHgxNzBlKS0oMHg0ZTErMjM5OS0weGUzZildPT0oMHg2MSsxLTB4NDcpKXtlbmRFc2M9VFJVRTt9Cit6VWZpU21zX0NvbnZlcnRVY3MyKGRhdGEsbGVuLygweDM1Yis1NTQyLTB4MThmZikrKGlzRXNjPygweDNiYys0ODAwLTB4MTY3Yik6CisoMHgxMzc2KzQ3MjMtMHgyNWU5KSktKGVuZEVzYz8oMHg5Y2QrMTIwNC0weGU4MCk6KDB4MTY5YyszNjA4LTB4MjRiNCkpLAogb3V0X2NvbnRlbnQpO3JldHVybiBlbmRFc2M7fWJ5dGUqelVmaVNtc19TbXNpVXRpbGl0b2EodWludDMyIHYsYnl0ZSpzLFVJTlQxNiByKXsKLWJ5dGUgYnVmWygweDkwNSs3NTAyLTB4MjYzMildLGM7aW50IG47bj1zaXplb2YoYnVmKS0oMHhiZTUrMjQ2LTB4Y2RhKTtidWZbbl09Ci0nXDAnO2Rve2M9KGJ5dGUpKHYlcik7aWYobjw9KDB4NGNkKzMwNjAtMHgxMGMxKSl7cHJpbnRmKAorYnl0ZSBidWZbKDB4MTFhMSs0ODI0LTB4MjQ1OCldLGM7aW50IG47bj1zaXplb2YoYnVmKS0oMHg2ZDQrMTU4NS0weGQwNCk7YnVmW25dPQorJ1wwJztkb3tjPShieXRlKSh2JXIpO2lmKG48PSgweDg4Yis0ODk1LTB4MWJhYSkpe3ByaW50ZigKICJceDRmXHg1Nlx4NDVceDUyXHg0Nlx4NGNceDRmXHg1N1x4MjAiKTticmVhazt9YnVmWy0tbl09KGJ5dGUpKChjPgotKDB4Y2Q1KzE4MjUtMHgxM2VkKSk/YysoKGNoYXIpKDB4YzgyKzQwODEtMHgxYzMyKSktKDB4NzY0KzMxMjctMHgxMzkxKTpjKwotKChjaGFyKSgweGNmMys1MzMxLTB4MjE5NikpKTt9d2hpbGUoKHYvPXIpPigweDEzMzcrMzAwNy0weDFlZjYpKTt3aGlsZSgoKnMrKz1idWYKLVtuKytdKSE9KDB4ZjA1KzM4NzgtMHgxZTJiKSk7cmV0dXJuKHMtKDB4MTNhMSsyMDI0LTB4MWI4OCkpO31ieXRlKgorKDB4YjFiKzY5NjItMHgyNjQ0KSk/YysoKGNoYXIpKDB4NjQrMzE5NS0weGM5ZSkpLSgweDFlNTUrNjA1LTB4MjBhOCk6YysKKygoY2hhcikoMHhkMTIrMzc2LTB4ZTVhKSkpO313aGlsZSgodi89cik+KDB4ZjIwKzMwODEtMHgxYjI5KSk7d2hpbGUoKCpzKys9YnVmW24KKysrXSkhPSgweDFlZCszMDgxLTB4ZGY2KSk7cmV0dXJuKHMtKDB4OGE1KzU3NDAtMHgxZjEwKSk7fWJ5dGUqCiB6VWZpU21zX1Ntc2lBZGRyVG9TdHIod21zX2FkZHJlc3Nfc190eXBlIGFkZHIsYnl0ZSpyZXNfcHRyLFVJTlQ4KnR5cGVfb2ZfYWRkcil7Ci1ieXRlIGJjZF9pZHg9KDB4MWY3OCsxODY4LTB4MjZjNCk7VUlOVDggdGVtcD0oMHgxOGUxKzg2Ny0weDFjNDQpOyp0eXBlX29mX2FkZHI9Ci0oMHg4OTQrMzk0My0weDE3ZmIpO3RlbXA9KFVJTlQ4KSgodWludDMyKWFkZHIubnVtYmVyX3R5cGUmKDB4M2Y2KzI0MC0weDRkZikpOyoKLXR5cGVfb2ZfYWRkcj0oVUlOVDgpKCgqdHlwZV9vZl9hZGRyfHRlbXApPDwoMHg3Y2QrMjI4NS0weDEwYjYpKTt0ZW1wPShVSU5UOCkoKAotdWludDMyKWFkZHIubnVtYmVyX3BsYW4mKDB4NjcyKzY4OTUtMHgyMTVhKSk7KnR5cGVfb2ZfYWRkcj0qdHlwZV9vZl9hZGRyfHRlbXA7KgotdHlwZV9vZl9hZGRyPSp0eXBlX29mX2FkZHJ8KDB4ZTAyKzUyNTItMHgyMjA2KTt3aGlsZShiY2RfaWR4PGFkZHIuCi1udW1iZXJfb2ZfZGlnaXRzKXtpZihhZGRyLmRpZ2l0c1tiY2RfaWR4XT09KDB4M2UzKzQyNzItMHgxNDg5KSl7YWRkci5kaWdpdHNbCi1iY2RfaWR4XT0oMHgxNmZjKzM0MTgtMHgyNDU2KTt9cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYSgodWludDMyKWFkZHIuZGlnaXRzWwotYmNkX2lkeF0scmVzX3B0ciwoMHgxYzlhKzExMzktMHgyMGZkKSk7YmNkX2lkeCsrO31yZXR1cm4gcmVzX3B0cjt9Ynl0ZSoKK2J5dGUgYmNkX2lkeD0oMHgxYzQwKzE5Mi0weDFkMDApO1VJTlQ4IHRlbXA9KDB4NjEzKzM3MC0weDc4NSk7KnR5cGVfb2ZfYWRkcj0KKygweDEyMWIrNzI3LTB4MTRmMik7dGVtcD0oVUlOVDgpKCh1aW50MzIpYWRkci5udW1iZXJfdHlwZSYoMHg3ODYrNzIwNy0weDIzYTYpKTsqCit0eXBlX29mX2FkZHI9KFVJTlQ4KSgoKnR5cGVfb2ZfYWRkcnx0ZW1wKTw8KDB4MTNmKzI4MjktMHhjNDgpKTt0ZW1wPShVSU5UOCkoKAordWludDMyKWFkZHIubnVtYmVyX3BsYW4mKDB4MTUzOSsyOTYwLTB4MjBjMikpOyp0eXBlX29mX2FkZHI9KnR5cGVfb2ZfYWRkcnx0ZW1wOyoKK3R5cGVfb2ZfYWRkcj0qdHlwZV9vZl9hZGRyfCgweDRmYys3NzQxLTB4MjJiOSk7d2hpbGUoYmNkX2lkeDxhZGRyLgorbnVtYmVyX29mX2RpZ2l0cyl7aWYoYWRkci5kaWdpdHNbYmNkX2lkeF09PSgweDZkYys2MTY3LTB4MWVlOSkpe2FkZHIuZGlnaXRzWworYmNkX2lkeF09KDB4YTNhKzQ0LTB4YTY2KTt9cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYSgodWludDMyKWFkZHIuZGlnaXRzWworYmNkX2lkeF0scmVzX3B0ciwoMHhkOGYrNTQwMi0weDIyOTkpKTtiY2RfaWR4Kys7fXJldHVybiByZXNfcHRyO31ieXRlKgogelVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKHdvcmQgdixieXRlKnJiX3B0cil7aW50IG47Ynl0ZSBjLCpwdHI7cHRyPXJiX3B0cisKLSgweDYyMis0MjkxLTB4MTZlMyk7KnB0cj0nXDAnO2ZvcihuPSgweDE2MjMrMzIxMS0weDIyYWUpO248KDB4NjM1KzM0MzgtMHgxM2ExKTsKLSsrbil7Yz0oYnl0ZSkodiUoMHg0MSs3ODU5LTB4MWVlYSkpO3YvPSgweDE3NjErNjM5LTB4MTlkNik7Ki0tcHRyPShjKwotKChjaGFyKSgweGI2NCs2MzEyLTB4MjNkYykpKTt9cmV0dXJuIHJiX3B0cisoMHg3NWIrNjA3NS0weDFmMTQpO312b2lkIAotelVmaVNtc19TcHJpbnRmVGltZShjaGFyKnN0cl90aW1lLGludCBsZW4saW50IHQpe2lmKHQ8KDB4NjU5Kzc3NTQtMHgyNDk5KSl7CisoMHgyODYrMTY3LTB4MzJiKTsqcHRyPSdcMCc7Zm9yKG49KDB4MjM3OSs3NDctMHgyNjY0KTtuPCgweDEwY2MrMjk1NC0weDFjNTQpOysrbgorKXtjPShieXRlKSh2JSgweDE1MmQrMzE1LTB4MTY1ZSkpO3YvPSgweDE1MGQrMzIxNC0weDIxOTEpOyotLXB0cj0oYysKKygoY2hhcikoMHhmNmYrMjE3MC0weDE3YjkpKSk7fXJldHVybiByYl9wdHIrKDB4OTRmKzIwMTgtMHgxMTJmKTt9dm9pZCAKK3pVZmlTbXNfU3ByaW50ZlRpbWUoY2hhcipzdHJfdGltZSxpbnQgbGVuLGludCB0KXtpZih0PCgweDEwNTMrMjYyMi0weDFhODcpKXsKIHNucHJpbnRmKHN0cl90aW1lLGxlbiwiXHgzMFx4MjVceDc4Iix0KTt9ZWxzZXtzbnByaW50ZihzdHJfdGltZSxsZW4sIlx4MjVceDc4Iix0CiApO319c3RhdGljIHZvaWQgelVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQ4KFRfelVmaVNtc19VZGhDb25jYXQ4KmNvbmNhdF84LAotVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCBtdXg9KDB4ZDBhKzQ1MzEtMHgxZWJkKTtjb25jYXRfOC0+c2VxX251bS0tOworVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCBtdXg9KDB4MTBlYisxOTY0LTB4MTg5Nyk7Y29uY2F0XzgtPnNlcV9udW0tLTsKIGlmKGNvbmNhdF84LT50b3RhbF9zbT5aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXttdXg9KGNvbmNhdF84LT5zZXFfbnVtLQogY29uY2F0XzgtPnNlcV9udW0lWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCkvWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDt9Ci1kYl9kYXRhLT5jb25jYXRfc21zPSgweDEyNDYrNDcwNS0weDI0YTYpO2RiX2RhdGEtPmNvbmNhdF9pbmZvWygweGY2Nis1MzQtMHgxMTdjKQotXT0oMHg1ZTUrNDA3NS0weDE0ZDEpKm11eCtjb25jYXRfOC0+bXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1sKLSgweDE2YSs4NDY4LTB4MjI3YyldPWNvbmNhdF84LT5zZXFfbnVtJVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgrCi0oMHgxYjg3KzIzMTctMHgyNDkzKTtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHg1ZmQrNzY4NS0weDI0MDEpXT1jb25jYXRfOC0+Ci10b3RhbF9zbS1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKm11eD5aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYLQotKDB4NTY1Kzc2NzEtMHgyMzViKT9aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYOihjb25jYXRfOC0+dG90YWxfc20lCitkYl9kYXRhLT5jb25jYXRfc21zPSgweDEzNzArNDM0Ny0weDI0NmEpO2RiX2RhdGEtPmNvbmNhdF9pbmZvWworKDB4MTUwMys0NTE0LTB4MjZhNSldPSgweDI1MCs5MTk2LTB4MjUzZCkqbXV4K2NvbmNhdF84LT5tc2dfcmVmO2RiX2RhdGEtPgorY29uY2F0X2luZm9bKDB4MWZiKzIxMDEtMHhhMmUpXT1jb25jYXRfOC0+c2VxX251bSVaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKworKDB4MWE1KzcyOS0weDQ3ZCk7ZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4YTQ0KzcyODEtMHgyNmI0KV09Y29uY2F0XzgtPnRvdGFsX3NtLQorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCptdXg+WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWC0KKygweDZhNCs0Nzg5LTB4MTk1OCk/WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDooY29uY2F0XzgtPnRvdGFsX3NtJQogWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCk7fXN0YXRpYyB2b2lkIHpVZmlTbXNfUGFyc2VyTGFuZ1NzKHdtc191ZGhfc190eXBlKgogdXNlcl9kYXRhX2hlYWRlcil7aWYodXNlcl9kYXRhX2hlYWRlcj09TlVMTCl7cmV0dXJuO31zd2l0Y2godXNlcl9kYXRhX2hlYWRlci0+dS4KIG5hdF9sYW5nX3NzLm5hdF9sYW5nX2lkKXtjYXNlIFdNU19VREhfTkFUX0xBTkdfUE9SVFVHVUVTRTpnX3pVZmlTbXNfTGFuZ3VhZ2U9CkBAIC03MjEsMjcgKzcxOSwyNyBAQAogdXNlcl9kYXRhX2hlYWRlci0+dS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZCl7Y2FzZSBXTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U6CiBnX3pVZmlTbXNfTGFuZ3VhZ2U9RENTX1BPUlRVR1VFU0U7YnJlYWs7ZGVmYXVsdDpicmVhazt9fXN0YXRpYyB2b2lkIAogelVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQxNihUX3pVZmlTbXNfVWRoQ29uY2F0MTYqY29uY2F0XzE2LAotVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCBtdXg9KDB4MWUwMysyMjMxLTB4MjZiYSk7Y29uY2F0XzE2LT5zZXFfbnVtLS0KLTtkYl9kYXRhLT5jb25jYXRfc21zPSgweDdjOCs3MTE2LTB4MjM5Myk7Ci0jaWYgKDB4ZTQ3KzUzOC0weDEwNjEpDQotZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4MmIrMjUyNS0weGEwOCldPWNvbmNhdF8xNi0+bXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1sKLSgweDEzNGErMzE1Ni0weDFmOWQpXT1jb25jYXRfMTYtPnRvdGFsX3NtO2RiX2RhdGEtPmNvbmNhdF9pbmZvWwotKDB4NDQ4KzUwNDAtMHgxN2Y2KV09Y29uY2F0XzE2LT5zZXFfbnVtOworVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCBtdXg9KDB4M2E4KzY3MzEtMHgxZGYzKTtjb25jYXRfMTYtPnNlcV9udW0tLTsKK2RiX2RhdGEtPmNvbmNhdF9zbXM9KDB4YTMxKzY0NTgtMHgyMzZhKTsKKyNpZiAoMHg5YSsyNjcwLTB4YjA4KQ0KK2RiX2RhdGEtPmNvbmNhdF9pbmZvWygweGZkOSsxMTI3LTB4MTQ0MCldPWNvbmNhdF8xNi0+bXNnX3JlZjtkYl9kYXRhLT4KK2NvbmNhdF9pbmZvWygweDllNSs1OTM0LTB4MjExMildPWNvbmNhdF8xNi0+dG90YWxfc207ZGJfZGF0YS0+Y29uY2F0X2luZm9bCisoMHhlNzQrNzcyLTB4MTE3NildPWNvbmNhdF8xNi0+c2VxX251bTsKICNlbmRpZg0KIGlmKGNvbmNhdF8xNi0+dG90YWxfc20+WlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCl7bXV4PShjb25jYXRfMTYtPnNlcV9udW0tCiBjb25jYXRfMTYtPnNlcV9udW0lWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCkvWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDt9Ci1kYl9kYXRhLT5jb25jYXRfaW5mb1soMHhiOWYrNTYxNy0weDIxOTApXT0oMHg0YTkrNDM2OS0weDE0YmIpKm11eCtjb25jYXRfMTYtPgotbXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgxNGZjKzM5NTQtMHgyNDZjKV09Y29uY2F0XzE2LT5zZXFfbnVtJQotWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCsoMHgzZGMrMjQ1NC0weGQ3MSk7ZGJfZGF0YS0+Y29uY2F0X2luZm9bCi0oMHhjYTMrMTQxMS0weDEyMjUpXT1jb25jYXRfMTYtPnRvdGFsX3NtLVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgqbXV4PgotWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWC0oMHg0OTMrNTU3LTB4NmJmKT9aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYOigKK2RiX2RhdGEtPmNvbmNhdF9pbmZvWygweGIzYSs2Njk5LTB4MjU2NSldPSgweDEyMjkrNTM3NC0weDI2MjgpKm11eCtjb25jYXRfMTYtPgorbXNnX3JlZjtkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgxNDI2KzIwODgtMHgxYzRjKV09Y29uY2F0XzE2LT5zZXFfbnVtJQorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCsoMHhhNjkrNjk1MS0weDI1OGYpO2RiX2RhdGEtPmNvbmNhdF9pbmZvWworKDB4MWZmKzY5MDctMHgxY2Y5KV09Y29uY2F0XzE2LT50b3RhbF9zbS1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKm11eD4KK1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgtKDB4YzcwKzIyODYtMHgxNTVkKT9aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYOigKIGNvbmNhdF8xNi0+dG90YWxfc20lWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCk7fXN0YXRpYyBpbnQgCiB6VWZpU21zX1BhcnNlVWRoaURhdGEoVF96VWZpU21zX1VkaCp1c2VyX2RhdGFfaGVhZGVyLFRfelVmaVNtc19EYlN0b3JlRGF0YSoKIGRiX2RhdGEpe2lmKE5VTEw9PXVzZXJfZGF0YV9oZWFkZXJ8fE5VTEw9PWRiX2RhdGEpe3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3M1x4MmUiKTtyZXR1cm4gWlVGSV9GQUlMCiA7fXN3aXRjaCh1c2VyX2RhdGFfaGVhZGVyLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODpkYl9kYXRhLT5jb25jYXRfc21zPQotKDB4MTUwNCsxMTQ1LTB4MTk3Yyk7elVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQ4KCYodXNlcl9kYXRhX2hlYWRlci0+dS5jb25jYXRfOCkKLSxkYl9kYXRhKTticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2OmRiX2RhdGEtPmNvbmNhdF9zbXM9KDB4MThkZis3MDMtMHgxYjlkKTsKKygweGI2NCs0NTk2LTB4MWQ1Nyk7elVmaVNtc19QYXJzZURlbGl2ZXJDb25jYXQ4KCYodXNlcl9kYXRhX2hlYWRlci0+dS5jb25jYXRfOCksCitkYl9kYXRhKTticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2OmRiX2RhdGEtPmNvbmNhdF9zbXM9KDB4NDIyKzc3MjktMHgyMjUyKTsKIHpVZmlTbXNfUGFyc2VEZWxpdmVyQ29uY2F0MTYoJih1c2VyX2RhdGFfaGVhZGVyLT51LmNvbmNhdF8xNiksZGJfZGF0YSk7YnJlYWs7CiBjYXNlIFdNU19VREhfTkFUX0xBTkdfU1M6Z196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD1XTVNfVURIX05BVF9MQU5HX1NTOwogelVmaVNtc19QYXJzZXJMYW5nU3ModXNlcl9kYXRhX2hlYWRlcik7YnJlYWs7Y2FzZSBXTVNfVURIX05BVF9MQU5HX0xTOgpAQCAtNzUxLDE1NCArNzQ5LDE1NSBAQAogKTticmVhazt9cmV0dXJuIFpVRklfU1VDQzt9aW50IHpVZmlTbXNfRm9ybWF0RGVsaXZlckRiZGF0YSgKIFRfelVmaVNtc19DbGllbnRUc0RhdGEqdHNfZGF0YV9wdHIsVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCByZXN1bHQ9CiBaVUZJX1NVQ0M7d21zX2FkZHJlc3Nfc190eXBlKmFkZHJlc3NfcHRyPU5VTEw7d21zX2d3X2FscGhhYmV0X2VfdHlwZSB0cF9kY3M9Ci1XTVNfR1dfQUxQSEFCRVRfTUFYMzI7aW50IGk9KDB4N2E0KzUzNjktMHgxYzlkKTtpbnQgaW5kPSgweGQxKzUzNDQtMHgxNWIxKTtpZigoCitXTVNfR1dfQUxQSEFCRVRfTUFYMzI7aW50IGk9KDB4MTQ3KzY3NjQtMHgxYmIzKTtpbnQgaW5kPSgweDZhOCs4MDQ5LTB4MjYxOSk7aWYoKAogTlVMTD09dHNfZGF0YV9wdHIpfHwoTlVMTD09ZGJfZGF0YSkpe3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjlceDZlXHg3MFx4NzVceDc0XHg3M1x4MmUiKTtyZXR1cm4gWlVGSV9GQUlMCiA7fWFkZHJlc3NfcHRyPSYodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLmFkZHJlc3MpO2lmKAogV01TX05VTUJFUl9JTlRFUk5BVElPTkFMPT1hZGRyZXNzX3B0ci0+bnVtYmVyX3R5cGUpe21lbXNldChkYl9kYXRhLT5udW1iZXIsCi0oMHhlYjIrMTA4OS0weDEyZjMpLFpURV9XTVNfQUREUkVTU19MRU5fTUFYKygweDc2Yys0MzIyLTB4MTg0ZCkpO2RiX2RhdGEtPm51bWJlcgotWygweDEwZTArMjgzMy0weDFiZjEpXT0oKGNoYXIpKDB4MTQxYSsxMDk0LTB4MTgzNSkpO2ZvcihpPSgweDE1YWQrMzQ5OS0weDIzNTgpO2kKLTxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmKCgweDE2ZjcrMzkwNC0weDI2MmQpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzCi1baV0pe2RiX2RhdGEtPm51bWJlcltpKygweDU2MCs2NjA0LTB4MWYyYildPSgoY2hhcikoMHgxYTZjKzEwNzUtMHgxZTZmKSk7fWVsc2V7Ci1kYl9kYXRhLT5udW1iZXJbaSsoMHg4Y2MrNDU5My0weDFhYmMpXT0oKGNoYXIpKDB4YTZkKzY1ODUtMHgyM2Y2KSkrYWRkcmVzc19wdHItPgotZGlnaXRzW2ldO319fWVsc2UgaWYoV01TX05VTUJFUl9BTFBIQU5VTUVSSUM9PWFkZHJlc3NfcHRyLT5udW1iZXJfdHlwZSl7bWVtY3B5KAotZGJfZGF0YS0+bnVtYmVyLGFkZHJlc3NfcHRyLT5kaWdpdHMsYWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHMpO31lbHNle2lmKAorKDB4MTliMSszNzQtMHgxYjI3KSxaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHhiZTQrNDUzMC0weDFkOTUpKTtkYl9kYXRhLT5udW1iZXIKK1soMHhhODIrMjU4OS0weDE0OWYpXT0oKGNoYXIpKDB4Y2U3KzM1MTItMHgxYTc0KSk7Zm9yKGk9KDB4MTJjNisxNzQ1LTB4MTk5Nyk7aTwKK2FkZHJlc3NfcHRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7aWYoKDB4ODA5KzEyNjctMHhjZjIpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldCispe2RiX2RhdGEtPm51bWJlcltpKygweDY1Yis0NTY3LTB4MTgzMSldPSgoY2hhcikoMHhhZCs2NjY1LTB4MWE4NikpO31lbHNleworZGJfZGF0YS0+bnVtYmVyW2krKDB4MWQ5YysxMDQ1LTB4MjFiMCldPSgoY2hhcikoMHgxOWMyKzMxMTUtMHgyNWJkKSkrYWRkcmVzc19wdHIKKy0+ZGlnaXRzW2ldO319fWVsc2UgaWYoV01TX05VTUJFUl9BTFBIQU5VTUVSSUM9PWFkZHJlc3NfcHRyLT5udW1iZXJfdHlwZSl7bWVtY3B5CisoZGJfZGF0YS0+bnVtYmVyLGFkZHJlc3NfcHRyLT5kaWdpdHMsYWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHMpO31lbHNle2lmKAogYWRkcmVzc19wdHItPmRpZ2l0X21vZGU9PVdNU19ESUdJVF9NT0RFXzhfQklUKXttZW1jcHkoJihkYl9kYXRhLT5udW1iZXJbCi0oMHgxMTYyKzgxNC0weDE0OGYpXSksYWRkcmVzc19wdHItPmRpZ2l0cyxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cyk7fWVsc2V7Ci1mb3IoaT0oMHgyMjQrNjExMi0weDFhMDQpO2k8YWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtpZigKLSgweDEwZDcrMTMzNy0weDE2MDYpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldKXtkYl9kYXRhLT5udW1iZXJbaV09Ci0oKGNoYXIpKDB4NDY5KzExOS0weDRiMCkpO31lbHNle2RiX2RhdGEtPm51bWJlcltpXT0oKGNoYXIpKDB4MTUwNSszMzY4LTB4MjFmZCkpKwotYWRkcmVzc19wdHItPmRpZ2l0c1tpXTt9fX19KHZvaWQpelVmaVNtc19VdGlsVGltZVN0YW1wKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuCisoMHhjOTMrNjQwMi0weDI1OTQpXSksYWRkcmVzc19wdHItPmRpZ2l0cyxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cyk7fWVsc2V7Citmb3IoaT0oMHgxMjVhKzIzMDAtMHgxYjU2KTtpPGFkZHJlc3NfcHRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7aWYoCisoMHhhZCsxOTk2LTB4ODZmKT09YWRkcmVzc19wdHItPmRpZ2l0c1tpXSl7ZGJfZGF0YS0+bnVtYmVyW2ldPQorKChjaGFyKSgweDZkOCs2MjI2LTB4MWVmYSkpO31lbHNle2RiX2RhdGEtPm51bWJlcltpXT0oKGNoYXIpKDB4ODA1KzY5MzctMHgyMmVlKSkKKythZGRyZXNzX3B0ci0+ZGlnaXRzW2ldO319fX0odm9pZCl6VWZpU21zX1V0aWxUaW1lU3RhbXAodHNfZGF0YV9wdHItPnUuZ3dfcHAudS4KIGRlbGl2ZXIudGltZXN0YW1wLGRiX2RhdGEtPnRwX3NjdHMsJmRiX2RhdGEtPmp1bGlhbl9kYXRlKTtpZih0c19kYXRhX3B0ci0+dS4KLWd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpe2RiX2RhdGEtPnRwX3VkaGk9KDB4MTk3NysyMDE0LTB4MjE1NCk7Ci19ZWxzZXtkYl9kYXRhLT50cF91ZGhpPSgweGRlNis1NzUxLTB4MjQ1ZCk7fWlmKGRiX2RhdGEtPnRwX3VkaGk9PQotKDB4Mjc5KzMwNjQtMHhlNzApKXtmb3IoaW5kPSgweDUxMis3NzM5LTB4MjM0ZCk7aW5kPHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuCitnd19wcC51LmRlbGl2ZXIudXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50KXtkYl9kYXRhLT50cF91ZGhpPSgweDQxKzQ2NjYtMHgxMjdhKTt9CitlbHNle2RiX2RhdGEtPnRwX3VkaGk9KDB4MTBiKzM5NzItMHgxMDhmKTt9aWYoZGJfZGF0YS0+dHBfdWRoaT09CisoMHgxMDIrNDkwNC0weDE0MjkpKXtmb3IoaW5kPSgweGY3Yys0ODA2LTB4MjI0Mik7aW5kPHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuCiBkZWxpdmVyLnVzZXJfZGF0YS5udW1faGVhZGVycztpbmQrKyl7cmVzdWx0PXpVZmlTbXNfUGFyc2VVZGhpRGF0YSgmKHRzX2RhdGFfcHRyCiAtPnUuZ3dfcHAudS5kZWxpdmVyLnVzZXJfZGF0YS5oZWFkZXJzW2luZF0pLGRiX2RhdGEpO2lmKAotWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHg3NDUrNTU1OC0weDFjZmEpXSl7cHJpbnRmKAorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgxMzdkKzY1NC0weDE2MGEpXSl7cHJpbnRmKAogIlx4NzRceDY4XHg2NVx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg3M1x4NmRceDczXHgyMFx4NzNceDY1XHg2N1x4NmRceDY1XHg2ZVx4NzRceDIwXHg2OVx4NzNceDIwXHgyNVx4NjRceDJjXHg2MVx4NmVceDY0XHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHg3Mlx4MjBceDc0XHg2OFx4NjVceDZlXHgyMFx4NzRceDY4XHg2NVx4MjBceDIwXHg3M1x4NzVceDcwXHg3MFx4NmZceDcyXHg3NFx4NjVceDY0XHgyMFx4MjVceDY0XHgyMFx4NzNceDY1XHg2N1x4NmRceDY1XHg2ZVx4NzRceDczXHgyY1x4NzNceDZmXHgyMFx4NjRceDY5XHg2NFx4MjBceDZlXHg2Zlx4NzRceDIwXHg2NFx4NjVceDYxXHg2Y1x4MjBceDc0XHg2OFx4NjVceDIwXHg2M1x4NmZceDZlXHg2M1x4NjFceDc0XHgyMFx4NzNceDZkXHg3M1x4MmVceDIwIgotLGRiX2RhdGEtPmNvbmNhdF9pbmZvWygweDczNys5MTctMHhhY2IpXSxaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKTtpZigKKyxkYl9kYXRhLT5jb25jYXRfaW5mb1soMHgyNys1NjU2LTB4MTYzZSldLFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpO2lmKAogV01TX1NUT1JBR0VfVFlQRV9OVl9WMDE9PWRiX2RhdGEtPm1lbV9zdG9yZSl7elVmaVNtc19EZWxNb2RlbVNtcyhkYl9kYXRhLT5pbmRleCkKIDt9cmVzdWx0PVpVRklfRkFJTDt9fX10cF9kY3M9dHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLmRjcy5hbHBoYWJldDtkYl9kYXRhCiAtPnNtc19jbGFzcz10c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIuZGNzLm1zZ19jbGFzcztpZigKIFdNU19HV19BTFBIQUJFVF84X0JJVD49dHBfZGNzKXtkYl9kYXRhLT50cF9kY3M9KHVuc2lnbmVkIGNoYXIpCi0oMHg2MDUrMjk3MS0weDExOWYpO31lbHNlIGlmKFdNU19HV19BTFBIQUJFVF9VQ1MyPT10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0oCi11bnNpZ25lZCBjaGFyKSgweGM3ZiszOTMxLTB4MWJkOCk7fWVsc2V7cHJpbnRmKAorKDB4YzVjKzQxODctMHgxY2I2KTt9ZWxzZSBpZihXTVNfR1dfQUxQSEFCRVRfVUNTMj09dHBfZGNzKXtkYl9kYXRhLT50cF9kY3M9KAordW5zaWduZWQgY2hhcikoMHg0YTUrMjc4OC0weGY4Nyk7fWVsc2V7cHJpbnRmKAogIlx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg3NFx4NzBceDVmXHg2NFx4NjNceDczXHgzZFx4MjVceDY0Iix0cF9kY3MpO30KIGRiX2RhdGEtPnRwX3BpZD0odW5zaWduZWQgY2hhcil0c19kYXRhX3B0ci0+dS5nd19wcC51LmRlbGl2ZXIucGlkO2lmKHRzX2RhdGFfcHRyCiAtPnUuZ3dfcHAudS5kZWxpdmVyLmRjcy5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUX1VDUzIpe3Jlc3VsdD0KIHpVZmlTbXNfRGlzcGF0Y2hXdG9pKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fZGF0YSwKIHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fbGVuLGRiX2RhdGEtPnNtc19jb250ZW50KTtkYl9kYXRhLT4KIGFscGhhYmV0PVdNU19HV19BTFBIQUJFVF9VQ1MyO31lbHNlIGlmKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci5kY3MuCi1hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzhfQklUKXtmb3IoaW5kPSgweDFhYWErMjkwNy0weDI2MDUpO2luZDx0c19kYXRhX3B0ci0+dQotLmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fbGVuO2luZCsrKXtkYl9kYXRhLT5zbXNfY29udGVudFsKLSgweDEzOTUrNDIzMC0weDI0MTcpKmluZF09KChjaGFyKSgweDRiYys0NjI2LTB4MTY5ZSkpO2RiX2RhdGEtPnNtc19jb250ZW50WwotKDB4M2NjKzU1ODYtMHgxOTlhKSppbmQrKDB4NTlmKzE0NjItMHhiNTQpXT0oKGNoYXIpKDB4M2M2KzgyMjMtMHgyM2I1KSk7ZGJfZGF0YQotLT5zbXNfY29udGVudFsoMHgxMjM4KzUwMi0weDE0MmEpKmluZCsoMHgxM2I3KzI5NTktMHgxZjQ0KV09Z196VWZpU21zX0RpZ0FzY01hcFsKLSgodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLnVzZXJfZGF0YS5zbV9kYXRhW2luZF0mKDB4ZjRmKzI3MzUtMHgxOTBlKSk+PgotKDB4MTk1YSs1OTAtMHgxYmE0KSldO2RiX2RhdGEtPnNtc19jb250ZW50WygweGE0NSsyOC0weGE1ZCkqaW5kKwotKDB4MjQ1Kzc3NTAtMHgyMDg4KV09Z196VWZpU21zX0RpZ0FzY01hcFsodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLgotdXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHg5YjMrNTkwNS0weDIwYjUpKV07ZGJfZGF0YS0+YWxwaGFiZXQ9CithbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzhfQklUKXtmb3IoaW5kPSgweDdhZCs1NTQ3LTB4MWQ1OCk7aW5kPHRzX2RhdGFfcHRyLT51LgorZ3dfcHAudS5kZWxpdmVyLnVzZXJfZGF0YS5zbV9sZW47aW5kKyspe2RiX2RhdGEtPnNtc19jb250ZW50WygweGEyZCs3MDE5LTB4MjU5NCkKKyppbmRdPSgoY2hhcikoMHgxNmYyKzI4NTQtMHgyMWU4KSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbKDB4NmQ2KzMxNjgtMHgxMzMyKSppbmQrCisoMHgxOGQ5KzI5MTctMHgyNDNkKV09KChjaGFyKSgweDM2Nys1NDQ5LTB4MTg4MCkpO2RiX2RhdGEtPnNtc19jb250ZW50WworKDB4MWU1ZisyMTEyLTB4MjY5YikqaW5kKygweDQ5Nys0Mzk3LTB4MTVjMildPWdfelVmaVNtc19EaWdBc2NNYXBbKCh0c19kYXRhX3B0cgorLT51Lmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fZGF0YVtpbmRdJigweDFjYSs4NjkwLTB4MjJjYykpPj4KKygweDFiZjYrMzI2LTB4MWQzOCkpXTtkYl9kYXRhLT5zbXNfY29udGVudFsoMHgxMTg5KzM2MzEtMHgxZmI0KSppbmQrCisoMHgxYjQ1KzE5NTctMHgyMmU3KV09Z196VWZpU21zX0RpZ0FzY01hcFsodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLgordXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHg5ZjgrMjEwMS0weDEyMWUpKV07ZGJfZGF0YS0+YWxwaGFiZXQ9CiBXTVNfR1dfQUxQSEFCRVRfVUNTMjt9fWVsc2UgaWYodHNfZGF0YV9wdHItPnUuZ3dfcHAudS5kZWxpdmVyLmRjcy5hbHBoYWJldD09CiBXTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVCl7cmVzdWx0PXpVZmlTbXNfRGlzcGF0Y2hXdG9pKHRzX2RhdGFfcHRyLT51Lmd3X3BwLgogdS5kZWxpdmVyLnVzZXJfZGF0YS5zbV9kYXRhLHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuZGVsaXZlci51c2VyX2RhdGEuc21fbGVuLAogZGJfZGF0YS0+c21zX2NvbnRlbnQpO2RiX2RhdGEtPmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO2RiX2RhdGEtPgotdHBfZGNzPSh1bnNpZ25lZCBjaGFyKSgweDRiOSs2NjYzLTB4MWViZSk7fXJldHVybiByZXN1bHQ7fWludCAKK3RwX2Rjcz0odW5zaWduZWQgY2hhcikoMHg0YTUrNjUwMS0weDFlMDgpO31yZXR1cm4gcmVzdWx0O31pbnQgCiB6VWZpU21zX0Zvcm1hdFN1Ym1pdERiZGF0YShUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKnRzX2RhdGFfcHRyLAogVF96VWZpU21zX0RiU3RvcmVEYXRhKmRiX2RhdGEpe2ludCByZXN1bHQ9WlVGSV9TVUNDO3dtc19hZGRyZXNzX3NfdHlwZSoKIGFkZHJlc3NfcHRyPU5VTEw7d21zX2d3X2FscGhhYmV0X2VfdHlwZSB0cF9kY3M9V01TX0dXX0FMUEhBQkVUX01BWDMyO2ludCBpPQotKDB4MTg0Kzg1NTYtMHgyMmYwKTtpbnQgaW5kPSgweGQ1NCs2NTU5LTB4MjZmMyk7aWYoKE5VTEw9PXRzX2RhdGFfcHRyKXx8KE5VTEw9PQorKDB4NThmKzQyNTAtMHgxNjI5KTtpbnQgaW5kPSgweDFmYTErNDkyLTB4MjE4ZCk7aWYoKE5VTEw9PXRzX2RhdGFfcHRyKXx8KE5VTEw9PQogZGJfZGF0YSkpe3ByaW50ZigiXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY5XHg2ZVx4NzBceDc1XHg3NFx4NzNceDJlIikKIDtyZXR1cm4gWlVGSV9GQUlMO31hZGRyZXNzX3B0cj0mKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmFkZHJlc3MpO2lmKCgKIFdNU19OVU1CRVJfSU5URVJOQVRJT05BTD09YWRkcmVzc19wdHItPm51bWJlcl90eXBlKSl7ZGJfZGF0YS0+bnVtYmVyWwotKDB4MTMwMCs0MTU3LTB4MjMzZCldPSgoY2hhcikoMHg0YzArMjk5MS0weDEwNDQpKTtmb3IoaT0oMHgxMmRiKzI4MS0weDEzZjQpO2k8Ci1hZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmKCgweDJiOSs4Njk5LTB4MjRhYSk9PWFkZHJlc3NfcHRyLT5kaWdpdHNbaQotXSl7ZGJfZGF0YS0+bnVtYmVyW2krKDB4OTliKzY1OTYtMHgyMzVlKV09KChjaGFyKSgweDZjYisyNTg3LTB4MTBiNikpO31lbHNlewotZGJfZGF0YS0+bnVtYmVyW2krKDB4ODNmKzY4NTctMHgyMzA3KV09KChjaGFyKSgweGFjOCs1MTg5LTB4MWVkZCkpK2FkZHJlc3NfcHRyLT4KLWRpZ2l0c1tpXTt9fX1lbHNle2ZvcihpPSgweDE5KzcwNC0weDJkOSk7aTxhZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmCi0oKDB4MWY1NysxNzA1LTB4MjVmNik9PWFkZHJlc3NfcHRyLT5kaWdpdHNbaV0pe2RiX2RhdGEtPm51bWJlcltpXT0KLSgoY2hhcikoMHg0OTIrMTczLTB4NTBmKSk7fWVsc2V7ZGJfZGF0YS0+bnVtYmVyW2ldPSgoY2hhcikoMHgxMDg3KzMzOTAtMHgxZDk1KSkrCi1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldO319fXRwX2Rjcz10c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5kY3MuYWxwaGFiZXQ7CisoMHgxOTg2KzEzMzAtMHgxZWI4KV09KChjaGFyKSgweDIyMDcrNzEzLTB4MjRhNSkpO2ZvcihpPSgweDE1NzQrMzg1MS0weDI0N2YpO2k8CithZGRyZXNzX3B0ci0+bnVtYmVyX29mX2RpZ2l0cztpKyspe2lmKCgweDQ4Yis3NDcwLTB4MjFhZik9PWFkZHJlc3NfcHRyLT5kaWdpdHNbaQorXSl7ZGJfZGF0YS0+bnVtYmVyW2krKDB4MzU0Kzk4NS0weDcyYyldPSgoY2hhcikoMHgxOWYxKzEyNTMtMHgxZWE2KSk7fWVsc2V7CitkYl9kYXRhLT5udW1iZXJbaSsoMHgxZDMxKzcyOS0weDIwMDkpXT0oKGNoYXIpKDB4YWRjKzE5Mi0weGI2YykpK2FkZHJlc3NfcHRyLT4KK2RpZ2l0c1tpXTt9fX1lbHNle2ZvcihpPSgweDEwZDMrMjczOS0weDFiODYpO2k8YWRkcmVzc19wdHItPm51bWJlcl9vZl9kaWdpdHM7aSsrCispe2lmKCgweDkzOSszODAtMHhhYWIpPT1hZGRyZXNzX3B0ci0+ZGlnaXRzW2ldKXtkYl9kYXRhLT5udW1iZXJbaV09CisoKGNoYXIpKDB4ZDMzKzMzNDQtMHgxYTEzKSk7fWVsc2V7ZGJfZGF0YS0+bnVtYmVyW2ldPSgoY2hhcikoMHgzMjQrODQyMS0weDIzZDkpKQorK2FkZHJlc3NfcHRyLT5kaWdpdHNbaV07fX19dHBfZGNzPXRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmRjcy5hbHBoYWJldDsKIGRiX2RhdGEtPnNtc19jbGFzcz10c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5kY3MubXNnX2NsYXNzO2lmKAotV01TX0dXX0FMUEhBQkVUXzhfQklUPj10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0odW5zaWduZWQgY2hhcikKLSgweDE5MzYrMTg4MC0weDIwOGQpO31lbHNlIGlmKFdNU19HV19BTFBIQUJFVF9VQ1MyPT10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0oCi11bnNpZ25lZCBjaGFyKSgweGI1NyszNTU2LTB4MTkzOSk7fWVsc2V7cHJpbnRmKAorV01TX0dXX0FMUEhBQkVUXzhfQklUPj10cF9kY3Mpe2RiX2RhdGEtPnRwX2Rjcz0odW5zaWduZWQgY2hhcikoMHg4Yys5MzUwLTB4MjUxMSkKKzt9ZWxzZSBpZihXTVNfR1dfQUxQSEFCRVRfVUNTMj09dHBfZGNzKXtkYl9kYXRhLT50cF9kY3M9KHVuc2lnbmVkIGNoYXIpCisoMHhhZWQrMTU2My0weDExMDYpO31lbHNle3ByaW50ZigKICJceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NzRceDcwXHg1Zlx4NjRceDYzXHg3M1x4M2RceDI1XHg2NCIsdHBfZGNzKTt9CiBkYl9kYXRhLT50cF9waWQ9KHVuc2lnbmVkIGNoYXIpdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQucGlkO2RiX2RhdGEtPgogbXNnX3JlZj0odW5zaWduZWQgY2hhcil0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5tZXNzYWdlX3JlZmVyZW5jZTtpZigKIHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCl7ZGJfZGF0YS0+dHBfdWRoaT0KLSgweGM0MisyNDY1LTB4MTVlMik7fWVsc2V7ZGJfZGF0YS0+dHBfdWRoaT0oMHg5OSs5NTM4LTB4MjVkYik7fWlmKGRiX2RhdGEtPgotdHBfdWRoaT09KDB4Mjc3KzM0NTktMHhmZjkpKXtmb3IoaW5kPSgweGRkMCsyNjI2LTB4MTgxMik7aW5kPHRzX2RhdGFfcHRyLT51LgorKDB4NmRkKzgyMjQtMHgyNmZjKTt9ZWxzZXtkYl9kYXRhLT50cF91ZGhpPSgweDU0NSs3MTEwLTB4MjEwYik7fWlmKGRiX2RhdGEtPgordHBfdWRoaT09KDB4MTU4ZCsxNTU2LTB4MWJhMCkpe2ZvcihpbmQ9KDB4NDNhKzQxMS0weDVkNSk7aW5kPHRzX2RhdGFfcHRyLT51LgogZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLm51bV9oZWFkZXJzO2luZCsrKXtyZXN1bHQ9elVmaVNtc19QYXJzZVVkaGlEYXRhKCYoCiB0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC51c2VyX2RhdGEuaGVhZGVyc1tpbmRdKSxkYl9kYXRhKTtpZigKLVpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg8ZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4NGViKzQyMDEtMHgxNTUzKV0pe3ByaW50ZigKK1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVg8ZGJfZGF0YS0+Y29uY2F0X2luZm9bKDB4OGErODI1MS0weDIwYzQpXSl7cHJpbnRmKAogIlx4NzRceDY4XHg2NVx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg3M1x4NmRceDczXHgyMFx4NzNceDY1XHg2N1x4NmRceDY1XHg2ZVx4NzRceDIwXHg2OVx4NzNceDIwXHg2Y1x4NjFceDcyXHg2N1x4NjVceDcyXHgyMFx4NzRceDY4XHg2NVx4NmVceDIwXHg3NFx4NjhceDY1XHgyMFx4MjBceDczXHg3NVx4NzBceDcwXHg2Zlx4NzJceDc0XHg2NVx4NjRceDIwXHg3M1x4NjVceDY3XHg2ZFx4NjVceDZlXHg3NFx4NzNceDJjXHg3M1x4NmZceDIwXHg2NFx4NjlceDY0XHgyMFx4NmVceDZmXHg3NFx4MjBceDY0XHg2NVx4NjFceDZjXHgyMFx4NzRceDY4XHg2NVx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg3M1x4NmRceDczXHgyZSIKICk7aWYoV01TX1NUT1JBR0VfVFlQRV9OVl9WMDE9PWRiX2RhdGEtPm1lbV9zdG9yZSl7elVmaVNtc19EZWxNb2RlbVNtcyhkYl9kYXRhLT4KIGluZGV4KTt9cmVzdWx0PVpVRklfRkFJTDt9fX1pZih0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC5kY3MuYWxwaGFiZXQ9PQogV01TX0dXX0FMUEhBQkVUX1VDUzIpe3Jlc3VsdD16VWZpU21zX0Rpc3BhdGNoV3RvaSh0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC4KIHVzZXJfZGF0YS5zbV9kYXRhLHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LnVzZXJfZGF0YS5zbV9sZW4sZGJfZGF0YS0+CiBzbXNfY29udGVudCk7ZGJfZGF0YS0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUX1VDUzI7fWVsc2UgaWYodHNfZGF0YV9wdHItPnUuCi1nd19wcC51LnN1Ym1pdC5kY3MuYWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF84X0JJVCl7Zm9yKGluZD0oMHg2MzgrNjc5OS0weDIwYzcpOworZ3dfcHAudS5zdWJtaXQuZGNzLmFscGhhYmV0PT1XTVNfR1dfQUxQSEFCRVRfOF9CSVQpe2ZvcihpbmQ9KDB4YjY0KzE4NDMtMHgxMjk3KTsKIGluZDx0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC51c2VyX2RhdGEuc21fbGVuO2luZCsrKXtkYl9kYXRhLT5zbXNfY29udGVudFsKLSgweDk5OCs0NzUwLTB4MWMyMikqaW5kXT0oKGNoYXIpKDB4YzcxKzIzNi0weGQyZCkpO2RiX2RhdGEtPnNtc19jb250ZW50WwotKDB4ZGYwKzYyNTktMHgyNjVmKSppbmQrKDB4MmFkKzc1OTgtMHgyMDVhKV09KChjaGFyKSgweDUzMSs0NzkzLTB4MTdiYSkpO2RiX2RhdGEKLS0+c21zX2NvbnRlbnRbKDB4MmQ2KzEyMzYtMHg3YTYpKmluZCsoMHgxM2UyKzQyMjMtMHgyNDVmKV09Z196VWZpU21zX0RpZ0FzY01hcFsoCi0odHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHgxMTZmKzUwNTQtMHgyNDNkKSk+PgotKDB4NmUzKzEzMy0weDc2NCkpXTtkYl9kYXRhLT5zbXNfY29udGVudFsoMHgxMDliKzQxODQtMHgyMGVmKSppbmQrCi0oMHgxYTkrNzcyOS0weDFmZDcpXT1nX3pVZmlTbXNfRGlnQXNjTWFwWyh0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC4KLXVzZXJfZGF0YS5zbV9kYXRhW2luZF0mKDB4M2YzKzI1NS0weDRlMykpXTtkYl9kYXRhLT5hbHBoYWJldD0KKygweDFhYjMrMTA0MC0weDFlYmYpKmluZF09KChjaGFyKSgweDEwYisxMTE2LTB4NTM3KSk7ZGJfZGF0YS0+c21zX2NvbnRlbnRbCisoMHg3OTYrMTAzMy0weGI5YikqaW5kKygweDI1NCs2MTYxLTB4MWE2NCldPSgoY2hhcikoMHhhMzMrMjMwOS0weDEzMDgpKTtkYl9kYXRhCistPnNtc19jb250ZW50WygweDI5Yis1OTk0LTB4MWEwMSkqaW5kKygweDFiZmQrMTMyOC0weDIxMmIpXT1nX3pVZmlTbXNfRGlnQXNjTWFwWworKCh0c19kYXRhX3B0ci0+dS5nd19wcC51LnN1Ym1pdC51c2VyX2RhdGEuc21fZGF0YVtpbmRdJigweDE1ZjIrMzY5Ni0weDIzNzIpKT4+CisoMHgxOTAxKzIzODgtMHgyMjUxKSldO2RiX2RhdGEtPnNtc19jb250ZW50WygweDEzODErMTgwMS0weDFhODYpKmluZCsKKygweGZlYysyMzgwLTB4MTkzNSldPWdfelVmaVNtc19EaWdBc2NNYXBbKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LgordXNlcl9kYXRhLnNtX2RhdGFbaW5kXSYoMHgyMTA4KzExNTAtMHgyNTc3KSldO2RiX2RhdGEtPmFscGhhYmV0PQogV01TX0dXX0FMUEhBQkVUX1VDUzI7fX1lbHNlIGlmKHRzX2RhdGFfcHRyLT51Lmd3X3BwLnUuc3VibWl0LmRjcy5hbHBoYWJldD09CiBXTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVCl7cmVzdWx0PXpVZmlTbXNfRGlzcGF0Y2hXdG9pKHRzX2RhdGFfcHRyLT51Lmd3X3BwLgogdS5zdWJtaXQudXNlcl9kYXRhLnNtX2RhdGEsdHNfZGF0YV9wdHItPnUuZ3dfcHAudS5zdWJtaXQudXNlcl9kYXRhLnNtX2xlbiwKIGRiX2RhdGEtPnNtc19jb250ZW50KTtkYl9kYXRhLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDtkYl9kYXRhLT4KLXRwX2Rjcz0odW5zaWduZWQgY2hhcikoMHgxOWIyKzI5MDAtMHgyNTA0KTt9cmV0dXJuIHJlc3VsdDt9aW50IEludmVydE51bWJlcnMoCit0cF9kY3M9KHVuc2lnbmVkIGNoYXIpKDB4NWJkKzQxOTctMHgxNjIwKTt9cmV0dXJuIHJlc3VsdDt9aW50IEludmVydE51bWJlcnMoCiBjb25zdCBjaGFyKnBTcmMsY2hhcipwRHN0LGludCBuU3JjTGVuZ3RoKXtpbnQgbkRzdExlbmd0aDtjaGFyIGNoO2ludCBpPQotKDB4OTJiKzcyMTMtMHgyNTU4KTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDI5MSszNjg3LTB4MTBmOCkpewotcmV0dXJuLSgweDNmOCs1NTYzLTB4MTliMik7fW5Ec3RMZW5ndGg9blNyY0xlbmd0aDtmb3IoaT0oMHgzM2ErODE2MS0weDIzMWIpO2k8Ci1uU3JjTGVuZ3RoO2krPSgweDJkKzE3MzktMHg2ZjYpKXtjaD0qcFNyYysrOypwRHN0Kys9KnBTcmMrKzsqcERzdCsrPWNoO31pZigKLW5TcmNMZW5ndGgmKDB4MmUyKzgyNDAtMHgyMzExKSl7KihwRHN0LSgweDYzMCsyNjUzLTB4MTA4YikpPQotKChjaGFyKSgweDVlMSs2NzYwLTB4MjAwMykpO25Ec3RMZW5ndGgrKzt9KnBEc3Q9J1wwJztyZXR1cm4gbkRzdExlbmd0aDt9aW50IAorKDB4ZWIyKzYxNTUtMHgyNmJkKTtpZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweGYwYyszNTE3LTB4MWNjOSkpeworcmV0dXJuLSgweDJlNSs0OTE0LTB4MTYxNik7fW5Ec3RMZW5ndGg9blNyY0xlbmd0aDtmb3IoaT0oMHgxOWVmKzkwMy0weDFkNzYpO2k8CituU3JjTGVuZ3RoO2krPSgweGIwKzk2MjItMHgyNjQ0KSl7Y2g9KnBTcmMrKzsqcERzdCsrPSpwU3JjKys7KnBEc3QrKz1jaDt9aWYoCituU3JjTGVuZ3RoJigweDEwYzkrNTQyMy0weDI1ZjcpKXsqKHBEc3QtKDB4MTkxMCsyMjEwLTB4MjFiMCkpPQorKChjaGFyKSgweDEzODYrNjg5LTB4MTVmMSkpO25Ec3RMZW5ndGgrKzt9KnBEc3Q9J1wwJztyZXR1cm4gbkRzdExlbmd0aDt9aW50IAogY29kZV9pc19nc203KGNvbnN0IFNNU19QQVJBTSpwU3JjLHVuc2lnbmVkIGNoYXIgYnVmW10saW50IG5MZW5ndGgpe2lmKHBTcmMtPgotVFBfVURIST09KDB4ZDU0KzUyNjgtMHgyMWU3KSl7YnVmWygweDE0NTYrMjEwNC0weDFjOGIpXT0odW5zaWduZWQgY2hhciluTGVuZ3RoOwotYnVmWygweDY5YSs2NDAyLTB4MWY5OCldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweGQ4KzE4NS0weDE5MSldO2J1ZlsKLSgweDFjMzYrMjUyNy0weDI2MTApXT0oMHgxNTkrNzM3MC0weDFlMjMpO2J1ZlsoMHgxMzliKzU5My0weDE1ZTYpXT0odW5zaWduZWQgCi1jaGFyKXBTcmMtPlRQX1VEWygweGQ4Yys1NzEzLTB4MjNkYildO2J1ZlsoMHg1ODIrNjIwMC0weDFkYjMpXT0odW5zaWduZWQgY2hhcikKLXBTcmMtPlRQX1VEWygweDJjNSs3MTIyLTB4MWU5NCldO2J1ZlsoMHgxMjk4KzQ3MTktMHgyNGZmKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+Ci1UUF9VRFsoMHg3ZWYrNTcyOC0weDFlNGIpXTtidWZbKDB4MjJkNSsxMDM3LTB4MjZkOSldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWwotKDB4MTAxYiszNjI2LTB4MWU0MCldO2J1ZlsoMHgxMDIyKzUwOTItMHgyM2ZjKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHgyOTUrODE4Mi0weDIyODQpXTtidWZbKDB4MTU5MSszNDMtMHgxNmRlKV09KHVuc2lnbmVkIGNoYXIpKGJ1ZlsKLSgweDE1OTkrNDA2NC0weDI1NmYpXTw8KDB4OTExKzYwODQtMHgyMGQ0KSk7bkxlbmd0aD1uTGVuZ3RoLSgweDU5OSs0OTM0LTB4MThkOCk7Ci1uTGVuZ3RoPUVuY29kZTdiaXQoJihwU3JjLT5UUF9VRFsoMHg4OTYrNjQ1My0weDIxYzMpXSksJmJ1ZlsoMHgyNTVjKzItMHgyNTUzKV0sCi1uTGVuZ3RoKygweDk5Mys0Mzc2LTB4MWFhYSkpKygweGExYSszMDUxLTB4MTYwMSkrKDB4MTEyNyszMzIwLTB4MWUxOSk7Ci0jaWYgKDB4MTJjMyszOTU3LTB4MjIzOCkKLW5MZW5ndGgrPSgweDJhNyszODA5LTB4MTE4Nik7CitUUF9VREhJPT0oMHgxNjdiKzM0MS0weDE3Y2YpKXtidWZbKDB4ODYwKzIxMjAtMHgxMGE1KV09KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDsKK2J1ZlsoMHgxOGE3KzM2MTktMHgyNmM2KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4MWQyYisxMzQ0LTB4MjI2YildO2J1ZlsKKygweDExNmIrNjI2LTB4MTNkOCldPSgweDEyMzUrMjgwNi0weDFkMmIpO2J1ZlsoMHhmYysyMTY1LTB4OTZiKV09KHVuc2lnbmVkIGNoYXIpCitwU3JjLT5UUF9VRFsoMHhiNDYrNDkxMi0weDFlNzQpXTtidWZbKDB4NjgyKzQ5MjktMHgxOWJjKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+CitUUF9VRFsoMHg1YTUrNTI5MS0weDFhNGQpXTtidWZbKDB4NGMzKzI0NzQtMHhlNjUpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsKKygweDcyMCsyMzI2LTB4MTAzMildO2J1ZlsoMHgxZGMwKzEwNDQtMHgyMWNiKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCisoMHg1YzgrNjY3Ni0weDFmZDcpXTtidWZbKDB4OGE1KzE3MzktMHhmNjYpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsKKygweDgxNSsxODE3LTB4ZjI3KV07YnVmWygweDEyZjYrNTEzOS0weDI2ZmYpXT0odW5zaWduZWQgY2hhcikoYnVmWworKDB4NjU0KzY3ODgtMHgyMGNlKV08PCgweDE3MzgrMTA3OS0weDFiNmUpKTtuTGVuZ3RoPW5MZW5ndGgtKDB4MTY0OSs0MjAyLTB4MjZhYykKKztuTGVuZ3RoPUVuY29kZTdiaXQoJihwU3JjLT5UUF9VRFsoMHgxM2E2KzM3MzctMHgyMjM3KV0pLCZidWZbCisoMHhiYTcrNTEzOS0weDFmYWYpXSxuTGVuZ3RoKygweDE2N2YrNDIxMC0weDI2ZjApKSsoMHg4MjUrMzI3OC0weDE0ZWYpKworKDB4YWUxKzI2NjktMHgxNTQ4KTsKKyNpZiAoMHg4OSszNDM5LTB4ZGY4KQorbkxlbmd0aCs9KDB4MTExKzY4NDMtMHgxYmNhKTsKICNlbmRpZg0KLX1lbHNle25MZW5ndGg9cFNyYy0+VFBfVURMZW5ndGg7YnVmWygweDQxMis0NTgwLTB4MTVmMyldPW5MZW5ndGg7bkxlbmd0aD0KLUVuY29kZTdiaXQocFNyYy0+VFBfVUQsJmJ1ZlsoMHg3ZjYrNTU2My0weDFkYWQpXSxuTGVuZ3RoKygweDExOTMrMTk1MS0weDE5MzEpKSsKLSgweDExMCs2NzcwLTB4MWI3ZSk7fWF0X3ByaW50KExPR19ERUJVRywKK31lbHNle25MZW5ndGg9cFNyYy0+VFBfVURMZW5ndGg7YnVmWygweGY3NSsyMDEwLTB4MTc0YyldPW5MZW5ndGg7bkxlbmd0aD0KK0VuY29kZTdiaXQocFNyYy0+VFBfVUQsJmJ1ZlsoMHhjYjArMTExOS0weDExMGIpXSxuTGVuZ3RoKygweDE1ZTQrMTMzOS0weDFiMWUpKSsKKygweDhkNSs2NTQxLTB4MjI1ZSk7fWF0X3ByaW50KExPR19ERUJVRywKICJceDYyXHg3NVx4NjZceDIwXHg2OVx4NzNceDIwXHgyNVx4NzMiICJcbiIsYnVmKTtyZXR1cm4gbkxlbmd0aDt9aW50IAogY29kZV9pc191Y3MyKGNvbnN0IFNNU19QQVJBTSpwU3JjLHVuc2lnbmVkIGNoYXIgYnVmW10saW50IG5MZW5ndGgpe25MZW5ndGg9Ci1zdHJsZW4ocFNyYy0+VFBfVUQpO2lmKHBTcmMtPlRQX1VESEk9PSgweDQ2MSsxNTctMHg0ZmQpKXtidWZbCi0oMHgxNjk0KzE3NDAtMHgxZDVkKV09KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDtidWZbKDB4OGRmKzE0NDUtMHhlODApXT0odW5zaWduZWQgCi1jaGFyKXBTcmMtPlRQX1VEWygweDEyOWYrMzc5NS0weDIxNzIpXTtidWZbKDB4MmQ5KzQ1OC0weDQ5ZSldPQotKDB4YjIwKzQ1MzEtMHgxY2QzKTtidWZbKDB4NjU1KzQ0MzgtMHgxN2E1KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHgxY2ExKzc2OC0weDFmOWYpXTtidWZbKDB4NTYzKzMzOTEtMHgxMjliKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHgzOTQrMTQ1LTB4NDIyKV07YnVmWygweDExM2MrMjMtMHgxMTRiKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHg0OTIrNzI1NS0weDIwZTUpXTtidWZbKDB4N2U2KzQxNDUtMHgxODBlKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCi0oMHgxNTFiKzY5NC0weDE3Y2MpXTtidWZbKDB4MWUwNSsyMTI1LTB4MjY0ZildPSh1bnNpZ25lZCBjaGFyKShFbmNvZGVVY3MyKCYocFNyYwotLT5UUF9VRFsoMHgyMzcrNzU1NC0weDFmYjMpXSksJmJ1ZlsoMHgxZTY2KzY5MS0weDIxMGYpXSxuTGVuZ3RoLQotKDB4NzY2KzQwODctMHgxNzU3KSkrKDB4MTBhNys0OTMyLTB4MjNlNSkpO25MZW5ndGg9YnVmWygweDFjM2IrMjM4Ni0weDI1OGEpXSsKLSgweDFjZjQrMTIzMi0weDIxYzApO31lbHNle2J1ZlsoMHg0NjMrNDI2OC0weDE1MGMpXT1FbmNvZGVVY3MyKHBTcmMtPlRQX1VELCZidWZbCi0oMHgzMmIrMzA2Ny0weGYyMildLG5MZW5ndGgpO25MZW5ndGg9YnVmWygweGI3KzU0ODktMHgxNjI1KV0rKDB4M2YrMzQ5NS0weGRlMik7fQotcmV0dXJuIG5MZW5ndGg7fWludCBFbmNvZGU4Yml0KGNvbnN0IGNoYXIqcFNyYyx1bnNpZ25lZCBjaGFyKnBEc3QsaW50IG5TcmNMZW5ndGgKLSl7aWYocFNyYz09TlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHg5MTUrNjk5NS0weDI0NjgpKXtyZXR1cm4tCi0oMHgyMDQ3KzEwNTItMHgyNDYyKTt9bWVtY3B5KHBEc3QscFNyYyxuU3JjTGVuZ3RoKTtyZXR1cm4gblNyY0xlbmd0aDt9aW50IAotRW5jb2RlUGR1X1N1Ym1pdChjb25zdCBTTVNfUEFSQU0qcFNyYyxjaGFyKnBEc3Qpe2ludCBuTGVuZ3RoPSgweDNjNSsyNTc0LTB4ZGQzKTsKLWludCBuRHN0TGVuZ3RoPSgweDUwMysyODMxLTB4MTAxMik7dW5zaWduZWQgY2hhciBidWZbKDB4MWU4OCsxNDg4LTB4MjM1OCldPXsKLSgweDM1Nis3MTEtMHg2MWQpfTtjaGFyIHRtcFNDQVsoMHg0MmYrMjE2MS0weGM3YyldPXsoMHgyYTArNzczMS0weDIwZDMpfTtpbnQgCi1jaGVja191ZGw9KDB4MTI5ZisxNjMyLTB4MThmZik7bWVtc2V0KHRtcFNDQSwoMHg0NDIrNDQ1LTB4NWZmKSxzaXplb2YodG1wU0NBKSk7Ci1pZihwU3JjPT1OVUxMfHxwRHN0PT1OVUxMKXtyZXR1cm4tKDB4MTBiNCs3MzgtMHgxMzk1KTt9Ci0jaWYgKDB4NWRmKzQ2NDctMHgxODA1KQorc3RybGVuKHBTcmMtPlRQX1VEKTtpZihwU3JjLT5UUF9VREhJPT0oMHgxMmMrNTYxNC0weDE3MTkpKXtidWZbKDB4ZGI0KzQxNC0weGY0ZikKK109KHVuc2lnbmVkIGNoYXIpbkxlbmd0aDtidWZbKDB4MTEzZis0Njc2LTB4MjM3ZildPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWworKDB4NmVjKzcwNDktMHgyMjc1KV07YnVmWygweGVlOSs1MzgtMHgxMGZlKV09KDB4ZjBiKzMzMzktMHgxYzE2KTtidWZbCisoMHgxYzArMjM3Ny0weGIwMyldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDUyOSs2NDM1LTB4MWU0YSldO2J1ZlsKKygweDI4Mis3MDQtMHg1M2IpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHhjYys1MjcxLTB4MTU2MCldO2J1ZlsKKygweDgxMysxMTgyLTB4Y2E5KV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4ZDQ0Kzg2MS0weDEwOWQpXTtidWZbCisoMHgxOWIrNTE1OC0weDE1YjgpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxMTAxKzEzODYtMHgxNjY2KV07YnVmWworKDB4ZmYyKzM0ODMtMHgxZDhhKV09KHVuc2lnbmVkIGNoYXIpKEVuY29kZVVjczIoJihwU3JjLT5UUF9VRFsKKygweDFjYzkrMTM5Ni0weDIyMzcpXSksJmJ1ZlsoMHgxMDIzKzM3MzYtMHgxZWIxKV0sbkxlbmd0aC0oMHhjMjIrNDkxLTB4ZTA3KSkrCisoMHgxNWJhKzEwMjQtMHgxOWI0KSk7bkxlbmd0aD1idWZbKDB4MjI2KzE2NDQtMHg4OGYpXSsoMHhhYzQrNDczNC0weDFkM2UpO31lbHNleworYnVmWygweGFjYSsxNjgxLTB4MTE1OCldPUVuY29kZVVjczIocFNyYy0+VFBfVUQsJmJ1ZlsoMHhjMTArMzE4Mi0weDE4N2EpXSwKK25MZW5ndGgpO25MZW5ndGg9YnVmWygweDEyMmQrMTE3My0weDE2YmYpXSsoMHgyNGMrMTMzLTB4MmNkKTt9cmV0dXJuIG5MZW5ndGg7fQoraW50IEVuY29kZThiaXQoY29uc3QgY2hhcipwU3JjLHVuc2lnbmVkIGNoYXIqcERzdCxpbnQgblNyY0xlbmd0aCl7aWYocFNyYz09TlVMTAorfHxwRHN0PT1OVUxMfHxuU3JjTGVuZ3RoPCgweDc1Nys3NDM0LTB4MjQ2MSkpe3JldHVybi0oMHhiOTQrMzQwOS0weDE4ZTQpO31tZW1jcHkKKyhwRHN0LHBTcmMsblNyY0xlbmd0aCk7cmV0dXJuIG5TcmNMZW5ndGg7fWludCBFbmNvZGVQZHVfU3VibWl0KGNvbnN0IFNNU19QQVJBTSoKK3BTcmMsY2hhcipwRHN0KXtpbnQgbkxlbmd0aD0oMHg0YTgrMzIxMy0weDExMzUpO2ludCBuRHN0TGVuZ3RoPQorKDB4OWUyKzQ5NDUtMHgxZDMzKTt1bnNpZ25lZCBjaGFyIGJ1ZlsoMHhlY2QrMjU0LTB4ZWNiKV09eygweGQ0YSsxODQtMHhlMDIpfTsKK2NoYXIgdG1wU0NBWygweGQ2Yys2MjY3LTB4MjVjMyldPXsoMHgxOGJhKzMzNDEtMHgyNWM3KX07aW50IGNoZWNrX3VkbD0KKygweDUxMSs3Mjk2LTB4MjE5MSk7bWVtc2V0KHRtcFNDQSwoMHhiODMrNjU2NC0weDI1MjcpLHNpemVvZih0bXBTQ0EpKTtpZihwU3JjPT0KK05VTEx8fHBEc3Q9PU5VTEwpe3JldHVybi0oMHhjYTcrMTYxMS0weDEyZjEpO30KKyNpZiAoMHgxNDArMzI1Ni0weGRmNykKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHgyMFx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4NTBceDY0XHg3NVx4NWZceDUzXHg3NVx4NjJceDZkXHg2OVx4NzRceDIwXHg2ZFx4NjFceDZiXHg2NVx4MjBceDcwXHg2NFx4NzVceDIwXHg2NFx4NjFceDc0XHg2MSIgIlxuIgogKTtwcmludGYoCkBAIC05MDksMzkzICs5MDgsMzkyIEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NzNceDYzXHg2MVx4M2FceDI1XHg3MyIgIlxuIixwU3JjLT4KIFNDQSk7CiAjZW5kaWYNCi1uTGVuZ3RoPXN0cmxlbihwU3JjLT5TQ0EpO2J1ZlsoMHgxNjUwKzI2MzYtMHgyMDljKV09KGNoYXIpKCgobkxlbmd0aCkmCi0oMHg5N2IrNjAyMi0weDIxMDApKT09KDB4MmU4KzU0MDYtMHgxODA2KT8obkxlbmd0aCk6bkxlbmd0aCsoMHgxYzI2KzI0OTMtMHgyNWUyKQotKS8oMHg0NDcrNjg5OS0weDFmMzgpKygweGE2Yis1NDEwLTB4MWY4Yyk7YnVmWygweGUzZCs0OTM5LTB4MjE4NyldPQotKDB4MTA3MysyNTUyLTB4MTllYSk7c3RybmNweSh0bXBTQ0EscFNyYy0+U0NBLHNpemVvZih0bXBTQ0EpLQotKDB4MTc2MisyODc5LTB4MjJhMCkpO2lmKCEoc3RybmNtcChwU3JjLT5TQ0EsIlx4MzBceDMwXHgzOFx4MzYiLAotKDB4YzQ5KzMxOTMtMHgxOGJlKSkpKXttZW1zZXQodG1wU0NBLCgweDcyMys3NjM3LTB4MjRmOCksc2l6ZW9mKHRtcFNDQSkpO25MZW5ndGgKLT1uTGVuZ3RoLSgweDFiZWYrNTU1LTB4MWUxOSk7Ci0jaWYgKDB4NmFkKzUwMDMtMHgxYTM3KQotbkxlbmd0aD1uTGVuZ3RoLSgweDE0MmQrMTAzNy0weDE4MzkpO3N0cm5jcHkodG1wU0NBLCYocFNyYy0+U0NBWwotKDB4NWY5KzUzNTItMHgxYWRmKV0pLHNpemVvZih0bXBTQ0EpLSgweDEzNjQrNDgzNi0weDI2NDcpKTsKK25MZW5ndGg9c3RybGVuKHBTcmMtPlNDQSk7YnVmWygweGNjKzgzMzctMHgyMTVkKV09KGNoYXIpKCgobkxlbmd0aCkmCisoMHgzOGQrODIzLTB4NmMzKSk9PSgweDFjODMrMjQ2OC0weDI2MjcpPyhuTGVuZ3RoKTpuTGVuZ3RoKygweDE3MzgrNTc2LTB4MTk3NykpLworKDB4YWFhKzY2OTUtMHgyNGNmKSsoMHg3NWYrMjcxMS0weDExZjUpO2J1ZlsoMHgxMzkxKzkzLTB4MTNlZCldPQorKDB4M2FkKzY0MzMtMHgxYzRkKTtzdHJuY3B5KHRtcFNDQSxwU3JjLT5TQ0Esc2l6ZW9mKHRtcFNDQSktKDB4OTExKzI3MDItMHgxMzllKSkKKztpZighKHN0cm5jbXAocFNyYy0+U0NBLCJceDMwXHgzMFx4MzhceDM2IiwoMHg0MTQrMzIxMi0weDEwOWMpKSkpe21lbXNldCh0bXBTQ0EsCisoMHhmNTgrMjY5MC0weDE5ZGEpLHNpemVvZih0bXBTQ0EpKTtuTGVuZ3RoPW5MZW5ndGgtKDB4MTBiKzgxMTgtMHgyMGMwKTsKKyNpZiAoMHgxNTkyKzMxNjgtMHgyMWYxKQorbkxlbmd0aD1uTGVuZ3RoLSgweDc4NCsyNzAwLTB4MTIwZik7c3RybmNweSh0bXBTQ0EsJihwU3JjLT5TQ0FbCisoMHgxN2JhKzMxMS0weDE4ZWYpXSksc2l6ZW9mKHRtcFNDQSktKDB4MWYyOCs1MDMtMHgyMTFlKSk7CiAjZWxzZQ0KLXRtcFNDQVsoMHgyM2RiKzQ3Ny0weDI1YjgpXT0oKGNoYXIpKDB4MTNiZCszOTA4LTB4MjJkNikpO3N0cmNweSgmKHRtcFNDQVsKLSgweDMyMysyMTQwLTB4YjdlKV0pLCYocFNyYy0+U0NBWygweDhkKzgzNDQtMHgyMTIzKV0pKTsKK3RtcFNDQVsoMHgxYzE1KzI2MzQtMHgyNjVmKV09KChjaGFyKSgweGE4YSsyMDY3LTB4MTI3MikpO3N0cmNweSgmKHRtcFNDQVsKKygweDdjKzQzNTYtMHgxMTdmKV0pLCYocFNyYy0+U0NBWygweDIzYzIrMjUzLTB4MjRiZCldKSk7CiAjZW5kaWYNCi1idWZbKDB4MjE5KzcxNTItMHgxZTA5KV09KGNoYXIpKChuTGVuZ3RoJigweDZhNSszMzMyLTB4MTNhOCkpPT0KLSgweDE2NSs2MTAxLTB4MTkzYSk/bkxlbmd0aDpuTGVuZ3RoKygweDFkNTcrMjI1OS0weDI2MjkpKS8oMHg0NzUrNTE0Mi0weDE4ODkpKwotKDB4MTViNys0MjUwLTB4MjY1MCk7YnVmWygweDdlNys2ODQzLTB4MjJhMSldPSgweDc4MSs0MDY5LTB4MTZkNSk7fWVsc2UgaWYoCi0oKGNoYXIpKDB4NDJiKzY0NDMtMHgxZDJiKSk9PXBTcmMtPlNDQVsoMHgyNTkrNjU3MC0weDFjMDMpXSl7bWVtc2V0KHRtcFNDQSwKLSgweDEwYWErNjA3LTB4MTMwOSksc2l6ZW9mKHRtcFNDQSkpOwotI2lmICgweDg1YSs1MDczLTB4MWMyYSkKLW5MZW5ndGg9bkxlbmd0aC0oMHgxMTRiKzI4MjItMHgxYzUwKTtzdHJuY3B5KHRtcFNDQSwmKHBTcmMtPlNDQVsKLSgweDEwNys0MDExLTB4MTBiMSldKSxzaXplb2YodG1wU0NBKS0oMHgxZDUrNTgzNi0weDE4YTApKTsKK2J1ZlsoMHgxNDMrNTQ2MC0weDE2OTcpXT0oY2hhcikoKG5MZW5ndGgmKDB4YjBiKzQ0NzEtMHgxYzgxKSk9PQorKDB4MTYwNSsxNjMtMHgxNmE4KT9uTGVuZ3RoOm5MZW5ndGgrKDB4YjA0KzIxNS0weGJkYSkpLygweGQ0OSszODY0LTB4MWM1ZikrCisoMHgxOWE1KzExMDEtMHgxZGYxKTtidWZbKDB4MzZhKzg3NzMtMHgyNWFlKV09KDB4NzNiKzY5NjUtMHgyMWRmKTt9ZWxzZSBpZigKKygoY2hhcikoMHhiMDUrNTA4OC0weDFlYmEpKT09cFNyYy0+U0NBWygweGM0Mis2NjE2LTB4MjYxYSldKXttZW1zZXQodG1wU0NBLAorKDB4MTYxMisyNzA1LTB4MjBhMyksc2l6ZW9mKHRtcFNDQSkpOworI2lmICgweGFjKzE1ODUtMHg2ZGMpCituTGVuZ3RoPW5MZW5ndGgtKDB4ZjI0KzMxNS0weDEwNWUpO3N0cm5jcHkodG1wU0NBLCYocFNyYy0+U0NBWygweGNiKzkwNDItMHgyNDFjKQorXSksc2l6ZW9mKHRtcFNDQSktKDB4MWM2MysyNjI2LTB4MjZhNCkpOwogI2Vsc2UNCiBzdHJjcHkodG1wU0NBLHBTcmMtPlNDQSk7CiAjZW5kaWYNCi1idWZbKDB4ZDRmKzE0MjMtMHgxMmRlKV09KGNoYXIpKChuTGVuZ3RoJigweDk3ZCs2NjY2LTB4MjM4NikpPT0KLSgweDQ3MSsyNDMzLTB4ZGYyKT8obkxlbmd0aCk6bkxlbmd0aCsoMHg4OGYrMzU2NC0weDE2N2EpKS8oMHg3OGYrMTgzNS0weGViOCkrCi0oMHhlOTgrMjIwNS0weDE3MzQpO2J1ZlsoMHgxYmU4KzIyNzAtMHgyNGM1KV09KDB4Y2UxKzY1NzctMHgyNjAxKTt9Ci0jaWYgKDB4ZmJhKzQ0NjUtMHgyMTJhKQorYnVmWygweDEzMDgrMjU4Ni0weDFkMjIpXT0oY2hhcikoKG5MZW5ndGgmKDB4MWM3KzM2OC0weDMzNikpPT0KKygweDE0OGQrMTQ2Ny0weDFhNDgpPyhuTGVuZ3RoKTpuTGVuZ3RoKygweDE4NjUrMTMxMC0weDFkODIpKS8oMHhiNGIrNDQyNi0weDFjOTMpCisrKDB4NmZhKzc4OTAtMHgyNWNiKTtidWZbKDB4NmFhKzE3MzYtMHhkNzEpXT0oMHgzZDMrNjAxNS0weDFhYzEpO30KKyNpZiAoMHgxMDhkKzE4NzMtMHgxN2RkKQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDcwXHg2NFx4NzNceDc0XHgzMlx4M2FceDI1XHg3MyIgIlxuIiwKIHBEc3QpOwogI2VuZGlmDQotaWYobkxlbmd0aDwoMHgyMTUrODI4LTB4NTUwKXx8bkxlbmd0aD49c2l6ZW9mKHRtcFNDQSkpcmV0dXJuLQotKDB4MTUwMiszMDIzLTB4MjBkMCk7bkRzdExlbmd0aD1CeXRlczJTdHJpbmcoYnVmLHBEc3QsKDB4MWE1YyszMDExLTB4MjYxZCkpOworaWYobkxlbmd0aDwoMHgzYTMrNjE3NC0weDFiYzApfHxuTGVuZ3RoPj1zaXplb2YodG1wU0NBKSlyZXR1cm4tCisoMHgxNzYrNDMwNi0weDEyNDcpO25Ec3RMZW5ndGg9Qnl0ZXMyU3RyaW5nKGJ1ZixwRHN0LCgweGVkMCsyMDA4LTB4MTZhNikpOwogbkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycyh0bXBTQ0EsJnBEc3RbbkRzdExlbmd0aF0sbkxlbmd0aCk7Ci0jaWYgKDB4MTBkMSsyMjEzLTB4MTk3NSkKKyNpZiAoMHhkODgrMzEyOS0weDE5YzApCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NzBceDY0XHg3M1x4NzRceDMzXHgzYVx4MjVceDczIiAiXG4iLAogcERzdCk7CiAjZW5kaWYNCi1pZihwU3JjLT5UUEFbKDB4ZDViKzE4MDQtMHgxNDY3KV09PSgoY2hhcikoMHhkZTArMTYyLTB4ZTU3KSkpe25MZW5ndGg9c3RybGVuKCYoCi1wU3JjLT5UUEFbKDB4YTQ3KzMwODYtMHgxNjU0KV0pKTt9ZWxzZXtuTGVuZ3RoPXN0cmxlbihwU3JjLT5UUEEpO31pZihwU3JjLT4KLVRQX1VESEk9PSgweDFmY2YrNDUxLTB4MjE5Mikpe2lmKHBTcmMtPlRQX1NSUj09KDB4ZWIwKzgyNy0weDExZWIpKXtidWZbCi0oMHgxMGNjKzI4MzgtMHgxYmUyKV09KDB4NDA4KzEwMy0weDQ1ZSk7fWlmKHBTcmMtPlRQX1NSUj09KDB4MWZkNys0NS0weDIwMDMpKXsKLWJ1ZlsoMHhhODMrMzM4Mi0weDE3YjkpXT0oMHgxNmViKzIwNTUtMHgxZWMxKTt9fWlmKHBTcmMtPlRQX1VESEk9PQotKDB4YjgyKzIwMy0weGM0Yykpe2lmKHBTcmMtPlRQX1NSUj09KDB4NTFkKzE5OTgtMHhjZWIpKXtidWZbKDB4MTg2OCszMjAzLTB4MjRlYikKLV09KDB4M2M2KzY4OTgtMHgxZTY3KTt9aWYocFNyYy0+VFBfU1JSPT0oMHgxNmZhKzM3NTQtMHgyNWEzKSl7YnVmWwotKDB4YjM0KzkwOC0weGVjMCldPSgweDIxNDcrMTM1LTB4MjE1ZCk7fX1idWZbKDB4OTNmKzYwOS0weGI5ZildPQotKDB4MWEzKzI0MTctMHhiMTQpO2J1ZlsoMHhkMDErNzcwLTB4MTAwMSldPShjaGFyKW5MZW5ndGg7aWYocFNyYy0+VFBBWwotKDB4OTkxKzMzNjQtMHgxNmI1KV09PSgoY2hhcikoMHgxYjcyKzY2Ny0weDFkZTIpKSl7YnVmWygweDI4ZCs2ODg3LTB4MWQ3MSldPQotKDB4MWE4KzU1NjctMHgxNmQ2KTtuRHN0TGVuZ3RoKz1CeXRlczJTdHJpbmcoYnVmLCZwRHN0W25Ec3RMZW5ndGhdLAotKDB4MjUxKzc4MDgtMHgyMGNkKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycygmKHBTcmMtPlRQQVsoMHgxZjliKzM0MC0weDIwZWUpXSkKLSwmcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9ZWxzZSBpZighKHN0cm5jbXAocFNyYy0+VFBBLCJceDMwXHgzMFx4MzhceDM2IiwKLSgweDg3NysyNTkwLTB4MTI5MSkpKSl7YnVmWygweDU5KzY2NTYtMHgxYTU3KV09KGNoYXIpbkxlbmd0aC0oMHg2OTArNzAyLTB4OTRjKTsKLWJ1ZlsoMHhhMTQrNjc2OS0weDI0ODIpXT0oMHg1MWIrNzgxNS0weDIzMTEpO25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbCi1uRHN0TGVuZ3RoXSwoMHhmY2YrNTg5Ni0weDI2ZDMpKTtuRHN0TGVuZ3RoKz1JbnZlcnROdW1iZXJzKCYocFNyYy0+VFBBWwotKDB4MWUwMysyOTMtMHgxZjI2KV0pLCZwRHN0W25Ec3RMZW5ndGhdLG5MZW5ndGgtKDB4NDNkKzU0NTYtMHgxOThiKSk7fWVsc2V7YnVmWwotKDB4MjQ0Yys1MzAtMHgyNjViKV09KDB4MTRjYysyMTAyLTB4MWM4MSk7bkRzdExlbmd0aCs9Qnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdFsKLW5Ec3RMZW5ndGhdLCgweDE4YTArMTY5MC0weDFmMzYpKTtuRHN0TGVuZ3RoKz1JbnZlcnROdW1iZXJzKHBTcmMtPlRQQSwmcERzdFsKK2lmKHBTcmMtPlRQQVsoMHgxMDViKzQwNC0weDExZWYpXT09KChjaGFyKSgweDIwZDcrMTA5OS0weDI0ZjcpKSl7bkxlbmd0aD1zdHJsZW4oCismKHBTcmMtPlRQQVsoMHgxODc3KzYwLTB4MThiMildKSk7fWVsc2V7bkxlbmd0aD1zdHJsZW4ocFNyYy0+VFBBKTt9aWYocFNyYy0+CitUUF9VREhJPT0oMHhkMmIrMzA2Ny0weDE5MjYpKXtpZihwU3JjLT5UUF9TUlI9PSgweDEzMDArMjEyNy0weDFiNGYpKXtidWZbCisoMHg5OSsyNDc2LTB4YTQ1KV09KDB4Y2E3KzExMTItMHgxMGVlKTt9aWYocFNyYy0+VFBfU1JSPT0oMHg1ZDYrNjc0MC0weDIwMjkpKXsKK2J1ZlsoMHg5MjArNDc0NS0weDFiYTkpXT0oMHgyMzE1KzEwNy0weDIzNGYpO319aWYocFNyYy0+VFBfVURIST09CisoMHgxYjU0Kzc4OC0weDFlNjcpKXtpZihwU3JjLT5UUF9TUlI9PSgweGJiYyszOTkzLTB4MWI1NSkpe2J1ZlsKKygweDEyNWIrMjc0MC0weDFkMGYpXT0oMHg1N2MrNjcyNy0weDFmNzIpO31pZihwU3JjLT5UUF9TUlI9PSgweGFmMSsyNTI0LTB4MTRjYykpCit7YnVmWygweDQ4NisyNjY5LTB4ZWYzKV09KDB4MjE2MisxMjUwLTB4MjVkMyk7fX1idWZbKDB4MTA0Nis0NzgwLTB4MjJmMSldPQorKDB4MTRhYisyMzkyLTB4MWUwMyk7YnVmWygweDEwZTYrMTY3NC0weDE3NmUpXT0oY2hhciluTGVuZ3RoO2lmKHBTcmMtPlRQQVsKKygweDk4NCs3MzkyLTB4MjY2NCldPT0oKGNoYXIpKDB4YmRmKzUxMDItMHgxZmEyKSkpe2J1ZlsoMHgxOWE0KzE2MTMtMHgxZmVlKV09CisoMHg2ZjkrNTQxOS0weDFiOTMpO25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbbkRzdExlbmd0aF0sCisoMHgxYTU1KzI3MjItMHgyNGYzKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycygmKHBTcmMtPlRQQVsoMHhmNTYrMjExNy0weDE3OWEpXQorKSwmcERzdFtuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9ZWxzZSBpZighKHN0cm5jbXAocFNyYy0+VFBBLCJceDMwXHgzMFx4MzhceDM2IiwKKygweDI5MSs1Nzk0LTB4MTkyZikpKSl7YnVmWygweDEyYzYrNjUyLTB4MTU1MCldPShjaGFyKW5MZW5ndGgtKDB4ZGMrNjM3NC0weDE5YzApCis7YnVmWygweDE3MTIrODMyLTB4MWE0ZildPSgweGQ2MiszMTQ5LTB4MTkxZSk7bkRzdExlbmd0aCs9Qnl0ZXMyU3RyaW5nKGJ1ZiwmcERzdAorW25Ec3RMZW5ndGhdLCgweDdjOCsyODE4LTB4MTJjNikpO25Ec3RMZW5ndGgrPUludmVydE51bWJlcnMoJihwU3JjLT5UUEFbCisoMHhkMjcrNTYzMS0weDIzMjQpXSksJnBEc3RbbkRzdExlbmd0aF0sbkxlbmd0aC0oMHg5NDUrNjExOC0weDIxMjkpKTt9ZWxzZXtidWZbCisoMHgxNDcrNTU0Ny0weDE2ZWYpXT0oMHgyMDErODE1MC0weDIxNTYpO25Ec3RMZW5ndGgrPUJ5dGVzMlN0cmluZyhidWYsJnBEc3RbCituRHN0TGVuZ3RoXSwoMHgxMTRiKzIyNDQtMHgxYTBiKSk7bkRzdExlbmd0aCs9SW52ZXJ0TnVtYmVycyhwU3JjLT5UUEEsJnBEc3RbCiBuRHN0TGVuZ3RoXSxuTGVuZ3RoKTt9Ci0jaWYgKDB4Y2Y3KzE4MzgtMHgxNDI0KQorI2lmICgweDFiNjErMjM1NC0weDI0OTIpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NzBceDY0XHg3M1x4NzRceDM0XHgzYVx4MjVceDczIiAiXG4iLAogcERzdCk7CiAjZW5kaWYNCi1uTGVuZ3RoPShpbnQpcFNyYy0+VFBfVURMZW5ndGg7YnVmWygweDIxNis5MDA5LTB4MjU0NyldPXBTcmMtPlRQX1BJRDtidWZbCi0oMHgyMGMrNjg4Ni0weDFjZjEpXT1wU3JjLT5UUF9EQ1M7YnVmWygweGZkOSs1OTE1LTB4MjZmMildPXBTcmMtPlRQX1ZQO2lmKHBTcmMtPgotVFBfRENTPT1DT0RFX0dTTTcpe25MZW5ndGg9Y29kZV9pc19nc203KHBTcmMsYnVmLG5MZW5ndGgpO31lbHNlIGlmKHBTcmMtPlRQX0RDUwotPT1DT0RFX1VDUzIpe25MZW5ndGg9Y29kZV9pc191Y3MyKHBTcmMsYnVmLG5MZW5ndGgpO31lbHNle25MZW5ndGg9c3RybGVuKHBTcmMtPgotVFBfVUQpO2lmKHBTcmMtPlRQX1VESEk9PSgweDljNysxMTA2LTB4ZTE4KSl7YnVmWygweGJmOCs5MzAtMHhmOTcpXT0odW5zaWduZWQgCi1jaGFyKW5MZW5ndGg7YnVmWygweDEyNjcrOTIwLTB4MTVmYildPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWwotKDB4ZjkzKzM0MzQtMHgxY2ZkKV07YnVmWygweDFiMWMrMTM0MC0weDIwNTMpXT0oMHg5NjYrMjEzLTB4YTNiKTtidWZbCi0oMHgzZmQrNjY1LTB4NjkwKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4ODQ0KzY1NjEtMHgyMWUzKV07YnVmWwotKDB4MjI4KzIwMTItMHg5ZmQpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxNDNjKzEzNjYtMHgxOThmKV07YnVmWwotKDB4MTAzYSs1NTE0LTB4MjViYyldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDE3Yis2MjMwLTB4MTljZCldO2J1ZlsKLSgweDEyMTArMTQyMi0weDE3OTUpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxODMrNzE3LTB4NDRiKV07aWYobkxlbmd0aC0KLSgweDFjODgrMTQzLTB4MWQxMSk8PSgweDE5YzcrMjIzLTB4MWFhNil8fG5MZW5ndGgtKDB4N2Y5KzI1OTgtMHgxMjE5KT49c2l6ZW9mKAotYnVmKS0oMHhhNTIrMjk4Mi0weDE1ZWUpKXJldHVybi0oMHgxMTIzKzEzMTQtMHgxNjQ0KTtidWZbKDB4YmJhKzI3Mi0weGNjNyldPSgKLXVuc2lnbmVkIGNoYXIpKEVuY29kZThiaXQoJihwU3JjLT5UUF9VRFsoMHgxZTk3KzMzMC0weDFmZGIpXSksJmJ1ZlsKLSgweDE5ZmIrMTkxOS0weDIxNzApXSwodW5zaWduZWQgc2hvcnQpKG5MZW5ndGgtKDB4ZWVmKzYxMjItMHgyNmQzKSkpKwotKDB4OGRjKzcyMjctMHgyNTExKSk7bkxlbmd0aD1idWZbKDB4MTI3MisxNjgwLTB4MThmZildKygweDFkNWErMTQxOC0weDIyZTApO30KLWVsc2V7aWYobkxlbmd0aDw9KDB4NzhiKzExOTQtMHhjMzUpfHxuTGVuZ3RoPj1zaXplb2YoYnVmKS0oMHg2YjUrNDAwNC0weDE2NTUpKQotcmV0dXJuLSgweDEyZTYrMzA3Ni0weDFlZTkpO2J1ZlsoMHgzODIrNDAzNi0weDEzNDMpXT1FbmNvZGU4Yml0KHBTcmMtPlRQX1VELCZidWYKLVsoMHg5MzkrNjkzOS0weDI0NTApXSxuTGVuZ3RoKTtuTGVuZ3RoPWJ1ZlsoMHg5ZDgrNTAxNi0weDFkNmQpXSsKLSgweDExMzcrNDk4OS0weDI0YjApO319Y2hlY2tfdWRsPW5MZW5ndGgtKDB4MTQ2MCsxNDQxLTB4MTlmZCk7bkRzdExlbmd0aCs9CituTGVuZ3RoPShpbnQpcFNyYy0+VFBfVURMZW5ndGg7YnVmWygweGQ4NSs0MjU1LTB4MWUyNCldPXBTcmMtPlRQX1BJRDtidWZbCisoMHgxYzAzKzI0OTQtMHgyNWMwKV09cFNyYy0+VFBfRENTO2J1ZlsoMHgxNmM4KzEyMDUtMHgxYjdiKV09cFNyYy0+VFBfVlA7aWYocFNyYworLT5UUF9EQ1M9PUNPREVfR1NNNyl7bkxlbmd0aD1jb2RlX2lzX2dzbTcocFNyYyxidWYsbkxlbmd0aCk7fWVsc2UgaWYocFNyYy0+CitUUF9EQ1M9PUNPREVfVUNTMil7bkxlbmd0aD1jb2RlX2lzX3VjczIocFNyYyxidWYsbkxlbmd0aCk7fWVsc2V7bkxlbmd0aD1zdHJsZW4oCitwU3JjLT5UUF9VRCk7aWYocFNyYy0+VFBfVURIST09KDB4OGIrMjU5NS0weGFhZCkpe2J1ZlsoMHg5MzcrNzUzNy0weDI2YTUpXT0oCit1bnNpZ25lZCBjaGFyKW5MZW5ndGg7YnVmWygweDQ5NysxMTgxLTB4OTMwKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbCisoMHgxMTM0KzQzNDktMHgyMjMxKV07YnVmWygweDQ2Yys3NzI3LTB4MjI5NildPSgweDFiNzcrNzEyLTB4MWUzZik7YnVmWworKDB4ZDFiKzE1NDktMHgxMzIyKV09KHVuc2lnbmVkIGNoYXIpcFNyYy0+VFBfVURbKDB4M2NjKzc1NTAtMHgyMTQ4KV07YnVmWworKDB4Yzk1KzcyMy0weGY2MSldPSh1bnNpZ25lZCBjaGFyKXBTcmMtPlRQX1VEWygweDk4MCs3OTgtMHhjOWIpXTtidWZbCisoMHg4OTkrNTQ0MC0weDFkZDEpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgzYmIrNjkwNS0weDFlYjApXTtidWZbCisoMHg4M2ErMjA5Ny0weDEwNjIpXT0odW5zaWduZWQgY2hhcilwU3JjLT5UUF9VRFsoMHgxMGE1KzI1Mi0weDExOWMpXTtpZihuTGVuZ3RoLQorKDB4YWY4KzM4NzctMHgxYTE3KTw9KDB4YzhhKzY2ODctMHgyNmE5KXx8bkxlbmd0aC0oMHgxN2YyKzk1NS0weDFiYTcpPj1zaXplb2YoCitidWYpLSgweGExZis2ODg1LTB4MjRmYSkpcmV0dXJuLSgweDEzMjUrNTAzLTB4MTUxYik7YnVmWygweGQwOSs0OTUxLTB4MjA1ZCldPSgKK3Vuc2lnbmVkIGNoYXIpKEVuY29kZThiaXQoJihwU3JjLT5UUF9VRFsoMHgxZGQzKzgwMi0weDIwZWYpXSksJmJ1ZlsKKygweDg2OSsxNDQyLTB4ZTAxKV0sKHVuc2lnbmVkIHNob3J0KShuTGVuZ3RoLSgweDlkKzQyMjYtMHgxMTE5KSkpKworKDB4NmFjKzY5OTQtMHgyMWY4KSk7bkxlbmd0aD1idWZbKDB4MTU3MyszMjg4LTB4MjI0OCldKygweDE0ZmIrMTI5OC0weDFhMDkpO30KK2Vsc2V7aWYobkxlbmd0aDw9KDB4MTFkMisxNjgxLTB4MTg2Myl8fG5MZW5ndGg+PXNpemVvZihidWYpLSgweDE0OWIrNDM5My0weDI1YzApCispcmV0dXJuLSgweDE4OGIrMzU4LTB4MTlmMCk7YnVmWygweDMzMCs4MzkzLTB4MjNmNildPUVuY29kZThiaXQocFNyYy0+VFBfVUQsJmJ1ZgorWygweDEyZTMrMTgyMi0weDE5ZmQpXSxuTGVuZ3RoKTtuTGVuZ3RoPWJ1ZlsoMHg2ODcrMzY3MC0weDE0ZGEpXSsKKygweDFhMTQrNTcyLTB4MWM0Yyk7fX1jaGVja191ZGw9bkxlbmd0aC0oMHg4YSs0NDU3LTB4MTFlZik7bkRzdExlbmd0aCs9CiBCeXRlczJTdHJpbmcoYnVmLCZwRHN0W25Ec3RMZW5ndGhdLG5MZW5ndGgpO3NjX2NmZ19zZXQoTlZfQ0hFQ0tfVURMLCIiKTtpZigKLWNoZWNrX3VkbD4oMHg5NmYrMjA2Ny0weDEwZjYpKXtzY19jZmdfc2V0KE5WX0NIRUNLX1VETCwiXHg2NVx4NzJceDcyXHg2Zlx4NzIiKTt9Ci0jaWYgKDB4MTQzNiszNTkzLTB4MjIzZSkKK2NoZWNrX3VkbD4oMHgxZDMrNDU1LTB4MzBlKSl7c2NfY2ZnX3NldChOVl9DSEVDS19VREwsIlx4NjVceDcyXHg3Mlx4NmZceDcyIik7fQorI2lmICgweDQzOCsyNzgyLTB4ZjE1KQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NjRceDc1XHg1Zlx4NTNceDc1XHg2Mlx4NmRceDY5XHg3NFx4MjBceDY1XHg2ZVx4NjRceDIwXHg2ZFx4NjFceDZiXHg2NVx4MjBceDcwXHg2NFx4NzVceDIwXHg2NFx4NjFceDc0XHg2MSIgIlxuIgogKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4NmNceDY1XHg2ZVx4M2FceDI1XHg2NFx4MmNceDIwXHg3NFx4NzBceDc1XHg2NFx4M2FceDI1XHg3MyIgIlxuIgogLG5Ec3RMZW5ndGgscFNyYy0+VFBfVUQpOwogI2VuZGlmDQotI2lmICgweDU1KzY4MzQtMHgxYjA2KQorI2lmICgweGE3OSs0ODIwLTB4MWQ0YykKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3MFx4NjRceDczXHg3NFx4MzVceDNhXHgyNVx4NzMiICJcbiIsCiBwRHN0KTsKICNlbmRpZg0KIHJldHVybiBuRHN0TGVuZ3RoO31pbnQgRGVjb2RlN2JpdChjb25zdCB1bnNpZ25lZCBjaGFyKnBTcmMsY2hhcipwRHN0LGludCAKIG5TcmNMZW5ndGgpe2ludCBuU3JjO2ludCBuRHN0O2ludCBuQnl0ZTt1bnNpZ25lZCBjaGFyIG5MZWZ0O2lmKHBTcmM9PU5VTEx8fHBEc3QKLT09TlVMTHx8blNyY0xlbmd0aDwoMHgxN2MxKzE3NDctMHgxZTk0KSl7cmV0dXJuLSgweDFmYis3Njc2LTB4MWZmNik7fW5TcmM9Ci0oMHgxOWQwKzMxOTUtMHgyNjRiKTtuRHN0PSgweDFkZjYrOTIyLTB4MjE5MCk7bkJ5dGU9KDB4OTcrNTY3Mi0weDE2YmYpO25MZWZ0PQotKDB4YjQrNDcyNi0weDEzMmEpO3doaWxlKG5TcmM8blNyY0xlbmd0aCl7KnBEc3Q9KCgqcFNyYzw8bkJ5dGUpfG5MZWZ0KSYKLSgweDRmMSs2OTg0LTB4MWZiYSk7bkxlZnQ9KnBTcmM+PigoMHg0M2ErMTQyNC0weDljMyktbkJ5dGUpO3BEc3QrKztuRHN0Kys7bkJ5dGUKLSsrO2lmKG5CeXRlPT0oMHgyODErMjkzNC0weGRmMCkpeypwRHN0PW5MZWZ0O3BEc3QrKztuRHN0Kys7bkJ5dGU9Ci0oMHgxYTQyKzE3OS0weDFhZjUpO25MZWZ0PSgweDEyOSszNjIxLTB4ZjRlKTt9cFNyYysrO25TcmMrKzt9KnBEc3Q9J1wwJztyZXR1cm4gCi1uRHN0O31pbnQgRGVjb2RlUHVzaFBkdShjb25zdCBjaGFyKnBTcmNQZHUsU01TX1BBUkFNKnBEc3Qpe2ludCBuRHN0TGVuZ3RoPQotKDB4OWE3KzQyNTUtMHgxYTQ2KTt1bnNpZ25lZCBjaGFyIHRtcD0oMHhjZCsyNDY0LTB4YTZkKTtpbnQgdWRfbGVuZ3RoPQotKDB4MWUxNCsxOTg0LTB4MjVkNCk7dW5zaWduZWQgY2hhciBidWZbKDB4YjQxKzIyNTYtMHgxMzExKV09eygweDEwYTArMTEzLTB4MTExMSkKLX07Y2hhciB0ZW1wX251bVsoMHhmMDIrNTczMy0weDI1MDMpXT17KDB4MTQxNCs0Nzc2LTB4MjZiYyl9O3Vuc2lnbmVkIGNoYXIgCi1maXJzdF9vY3RldD0oMHgxY2E5KzcxNC0weDFmNzMpO3Vuc2lnbmVkIGNoYXIgdWRobD0oMHhhMjkrNDgwMy0weDFjZWMpO3Vuc2lnbmVkIAotaW50IGhhbGZ0bXA9KDB4ZTA4KzIyMzQtMHgxNmMyKTtjaGFyIHRwX3JhWygweGIxKzM1MDYtMHhlNjApXT17Ci0oMHgzZDcrNzUyMS0weDIxMzgpfTtpbnQgdG1wbGVuPSgweGIyMCs1MTQ4LTB4MWYzYyk7dW5zaWduZWQgY2hhciBJRUlETDtpbnQgCi1wdXNoVHlwZT0oMHgxMmIrNDI0Ny0weDExYzIpO2NvbnN0IGNoYXIqcFNyYz1wU3JjUGR1O2lmKHBTcmNQZHU9PU5VTEx8fHBEc3Q9PQotTlVMTCl7cHJpbnRmKAorPT1OVUxMfHxuU3JjTGVuZ3RoPCgweDE3Zis3MDY3LTB4MWQxYSkpe3JldHVybi0oMHhhNjMrNzcyLTB4ZDY2KTt9blNyYz0KKygweDE1ZTkrMjY5My0weDIwNmUpO25Ec3Q9KDB4MTU1KzY0NTItMHgxYTg5KTtuQnl0ZT0oMHg1MDcrNDE4NC0weDE1NWYpO25MZWZ0PQorKDB4NGI0KzcwNzItMHgyMDU0KTt3aGlsZShuU3JjPG5TcmNMZW5ndGgpeypwRHN0PSgoKnBTcmM8PG5CeXRlKXxuTGVmdCkmCisoMHgyNDNhKzM1NS0weDI1MWUpO25MZWZ0PSpwU3JjPj4oKDB4MTRlYis4NzgtMHgxODUyKS1uQnl0ZSk7cERzdCsrO25Ec3QrKztuQnl0ZQorKys7aWYobkJ5dGU9PSgweDFmNjErMjQyLTB4MjA0YykpeypwRHN0PW5MZWZ0O3BEc3QrKztuRHN0Kys7bkJ5dGU9CisoMHgxMzg5KzE2OTktMHgxYTJjKTtuTGVmdD0oMHhhZDQrMzU5MC0weDE4ZGEpO31wU3JjKys7blNyYysrO30qcERzdD0nXDAnO3JldHVybgorIG5Ec3Q7fWludCBEZWNvZGVQdXNoUGR1KGNvbnN0IGNoYXIqcFNyY1BkdSxTTVNfUEFSQU0qcERzdCl7aW50IG5Ec3RMZW5ndGg9CisoMHgxMjRmKzQwMjMtMHgyMjA2KTt1bnNpZ25lZCBjaGFyIHRtcD0oMHg2YWIrNjE4Ny0weDFlZDYpO2ludCB1ZF9sZW5ndGg9CisoMHgxNTgrNTc2Mi0weDE3ZGEpO3Vuc2lnbmVkIGNoYXIgYnVmWygweDczZCs2MjY4LTB4MWViOSldPXsoMHgxNmNjKzQwNjItMHgyNmFhKQorfTtjaGFyIHRlbXBfbnVtWygweGIzKzc5NDItMHgxZjU1KV09eygweDEyYzgrNDUyOC0weDI0NzgpfTt1bnNpZ25lZCBjaGFyIAorZmlyc3Rfb2N0ZXQ9KDB4MTJjNyszODM5LTB4MjFjNik7dW5zaWduZWQgY2hhciB1ZGhsPSgweDUxMSs4NTY2LTB4MjY4Nyk7dW5zaWduZWQKKyBpbnQgaGFsZnRtcD0oMHhkNDkrNjM3OS0weDI2MzQpO2NoYXIgdHBfcmFbKDB4NTAyKzUxOTQtMHgxOTQ5KV09eworKDB4NDkyKzQ5MDYtMHgxN2JjKX07aW50IHRtcGxlbj0oMHgxNzQxKzU5NS0weDE5OTQpO3Vuc2lnbmVkIGNoYXIgSUVJREw7aW50IAorcHVzaFR5cGU9KDB4NDYzKzM5MS0weDVlYSk7Y29uc3QgY2hhcipwU3JjPXBTcmNQZHU7aWYocFNyY1BkdT09TlVMTHx8cERzdD09TlVMTCkKK3twcmludGYoCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDcwXHg2MVx4NzJceDYxXHgyMFx4NmVceDc1XHg2Y1x4NmNceDJlXHgyMCIgIlxuIgotKTtyZXR1cm4tKDB4MTEyYisyNTMtMHgxMjI3KTt9U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHhlNTMrNjAwLTB4MTBhOSkpOworKTtyZXR1cm4tKDB4MTUzNCs4NTAtMHgxODg1KTt9U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHgxYzIrNjQ3My0weDFiMDkpKTsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NzRceDZkXHg3MFx4MjBceDNkXHgyMFx4MjVceDY0XHgyZSIgIlxuIgotLHRtcCk7aWYodG1wPT0oMHhiZDcrNTk4NS0weDIzMzgpKXtwU3JjKz0oMHhlZDIrNjAyOC0weDI2NWMpO31lbHNle3RtcD0odG1wLQotKDB4MTdkZisxMjI4LTB4MWNhYSkpKigweDE2MSs3ODcwLTB4MjAxZCk7cFNyYys9KDB4MTQwNiszODY0LTB4MjMxYSk7aWYodG1wPgotKDB4Y2RiKzY2ODQtMHgyNmQ3KSl7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5TQ0EsKDB4MTdjKzE2NDktMHg3Y2QpKTt0bXAKLT0oMHgxMDczKzM1MjUtMHgxZTE4KTt9ZWxzZXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlNDQSx0bXApO31wU3JjKz10bXA7Ci19U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHgxNTY1KzExOTYtMHgxYTBmKSk7Zmlyc3Rfb2N0ZXQ9dG1wO3BTcmMrPQotKDB4MjI2KzcxMjEtMHgxZGY1KTtTdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweDJjNys1NTA0LTB4MTg0NSkpO2hhbGZ0bXA9dG1wO2lmKAotdG1wJigweDQxNis1MTktMHg2MWMpKXRtcCs9KDB4YjdiKzUzMDMtMHgyMDMxKTtwU3JjKz0oMHgxNGVjKzQ1Mi0weDE2YWUpO21lbXNldCgKLXRwX3JhLCgweDFmYzQrNTIxLTB4MjFjZCksc2l6ZW9mKHRwX3JhKSk7U3RyaW5nMkJ5dGVzKHBTcmMsdHBfcmEsCi0oMHg2YTArMTYxLTB4NzNmKSk7cFNyYys9KDB4YmE0KzUxMzUtMHgxZmIxKTtpZigodHBfcmFbKDB4MTQwNiszMDY5LTB4MjAwMyldJgotKDB4NzJjKzQ1OTAtMHgxOGNhKSk9PSgweGJiYis0MTQwLTB4MWI5Nykpe2NoYXIgdGVtcHJhWygweGEzKzc0MDktMHgxZDE0KV07Y2hhciAKLWFjQXNjWygweDhmOCs1MjYwLTB4MWQwNCldO2lmKGhhbGZ0bXA+PSgweDgxOCszNzgxLTB4MTZjZikpe2hhbGZ0bXA9KHRtcC8KLSgweGYwMCsxODA0LTB4MTYwYSkpLygweDZhZCs0Nzg4LTB4MTk1YSkrKHRtcC8oMHhhN2QrMTI2LTB4YWY5KSk7fWVsc2V7aGFsZnRtcD0KLXRtcC8oMHg0NjErNDE5Ni0weDE0YzMpO31tZW1zZXQodGVtcHJhLCgweDJkMys1NzAwLTB4MTkxNyksc2l6ZW9mKHRlbXByYSkpOwotbWVtY3B5KHRlbXByYSxwU3JjLHRtcCk7bWVtc2V0KGFjQXNjLCgweDFhZWYrMTYyNi0weDIxNDkpLHNpemVvZihhY0FzYykpOwotbkRzdExlbmd0aD1TdHJpbmcyQnl0ZXModGVtcHJhLGJ1ZixoYWxmdG1wJigweGU4MCsyMzYtMHhmNjUpPyhpbnQpaGFsZnRtcCoKLSgweGUxMisyOTYwLTB4MTk5YikvKDB4OTljKzIyMDktMHgxMjM5KSsoMHgxNTk1KzE1NjEtMHgxYmFjKTooaW50KWhhbGZ0bXAqCi0oMHgxYzA5KzcyNC0weDFlZDYpLygweGFhMis1NDI2LTB4MWZkMCkpO2hhbGZ0bXA9RGVjb2RlN2JpdChidWYsYWNBc2MsbkRzdExlbmd0aAotKTttZW1zZXQocERzdC0+VFBBLCgweDE5YTkrMjE5MC0weDIyMzcpLHNpemVvZihwRHN0LT5UUEEpKTtpZihoYWxmdG1wPgotKDB4MTgzNSsyMzc1LTB4MjE1Yykpe21lbWNweShwRHN0LT5UUEEsYWNBc2MsKDB4NzFkKzIzMDctMHgxMDAwKSk7dG1wPQotKDB4Y2JhKzQ2NTAtMHgxZWM0KTt9ZWxzZXttZW1jcHkocERzdC0+VFBBLGFjQXNjLGhhbGZ0bXApO319ZWxzZXtpZih0bXA+Ci0oMHg3ZmMrNTg3Ni0weDFlZDApKXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlRQQSwoMHhjNzcrMzg2Ni0weDFiNzEpKTt9Ci1lbHNle1NlcmlhbGl6ZU51bWJlcnNfc21zKHBTcmMscERzdC0+VFBBLHRtcCk7fWlmKCh0cF9yYVsoMHgyYjkrMjI3MS0weGI5OCldJgotKDB4NzZmKzUyMTYtMHgxYjNlKSk9PSgweDU4Nys4MDE4LTB4MjQ0OCkpe21lbXNldCh0ZW1wX251bSwoMHg0YTgrNDI4My0weDE1NjMpLAotc2l6ZW9mKHRlbXBfbnVtKSk7aWYocERzdC0+VFBBWygweDE0NmMrMzU0NC0weDIyNDQpXSE9Ci0oKGNoYXIpKDB4MjEyYSs0NjAtMHgyMmNiKSkpe3NucHJpbnRmKHRlbXBfbnVtLHNpemVvZih0ZW1wX251bSksCi0iXHgyNVx4NzNceDI1XHg3MyIsIlx4MmIiLHBEc3QtPlRQQSk7aWYoc3RybGVuKHRlbXBfbnVtKT4oMHhiNiszMTQwLTB4Y2RhKSl7Ci1zbnByaW50ZihwRHN0LT5UUEEsc2l6ZW9mKHBEc3QtPlRQQSksIlx4MjVceDMzXHgzMlx4NzMiLHRlbXBfbnVtKTt9ZWxzZXtzbnByaW50ZgotKHBEc3QtPlRQQSxzaXplb2YocERzdC0+VFBBKSwiXHgyNVx4NzMiLHRlbXBfbnVtKTt9fX19cFNyYys9dG1wO1N0cmluZzJCeXRlcygKLXBTcmMsKHVuc2lnbmVkIGNoYXIqKSZwRHN0LT5UUF9QSUQsKDB4YTkrMTAyMi0weDRhNSkpO3BTcmMrPSgweDY3MCs0MzYtMHg4MjIpOwotU3RyaW5nMkJ5dGVzKHBTcmMsKHVuc2lnbmVkIGNoYXIqKSZwRHN0LT5UUF9EQ1MsKDB4ODU3KzMxMzEtMHgxNDkwKSk7cFNyYys9Ci0oMHg5MDMrMTU2MS0weGYxYSk7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5UUF9TQ1RTLCgweDhjMSsyMjg5LTB4MTFhNCkpOwotcFNyYys9KDB4MTIrNzkwMS0weDFlZTEpO1N0cmluZzJCeXRlcyhwU3JjLCZ0bXAsKDB4ZGVjKzU3MjktMHgyNDRiKSk7cFNyYys9Ci0oMHg1YjYrMjY3NC0weDEwMjYpO21lbXNldChwRHN0LT5UUF9VRCwoMHg0YzcrMjYyNS0weGYwOCksc2l6ZW9mKHBEc3QtPlRQX1VEKSk7Ci1hdF9wcmludChMT0dfREVCVUcsCissdG1wKTtpZih0bXA9PSgweDFiZGMrMjgzOS0weDI2ZjMpKXtwU3JjKz0oMHhiZjQrNjY3Mi0weDI2MDIpO31lbHNle3RtcD0odG1wLQorKDB4NWZkKzU5OC0weDg1MikpKigweGY4ZisxMTYyLTB4MTQxNyk7cFNyYys9KDB4ZGYxKzM5NjAtMHgxZDY1KTtpZih0bXA+CisoMHgxODAzKzY2MC0weDFhNzcpKXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlNDQSwoMHgzMzcrNTY0My0weDE5MjIpKTsKK3RtcD0oMHgxNWYwKzEyNTMtMHgxYWI1KTt9ZWxzZXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlNDQSx0bXApO31wU3JjKz0KK3RtcDt9U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHgxNGYrNzgzLTB4NDVjKSk7Zmlyc3Rfb2N0ZXQ9dG1wO3BTcmMrPQorKDB4MTRmMCsxNjgtMHgxNTk2KTtTdHJpbmcyQnl0ZXMocFNyYywmdG1wLCgweDE1NzYrMjU0Ny0weDFmNjcpKTtoYWxmdG1wPXRtcDtpZigKK3RtcCYoMHg1MDkrODY2OS0weDI2ZTUpKXRtcCs9KDB4MjJiKzMyMS0weDM2Yik7cFNyYys9KDB4MjE5KzM1LTB4MjNhKTttZW1zZXQoCit0cF9yYSwoMHg3Mys5MDkwLTB4MjNmNSksc2l6ZW9mKHRwX3JhKSk7U3RyaW5nMkJ5dGVzKHBTcmMsdHBfcmEsCisoMHhhZTYrMjY2OC0weDE1NTApKTtwU3JjKz0oMHg1NiszOTQxLTB4ZmI5KTtpZigodHBfcmFbKDB4NDhkKzc2ODEtMHgyMjhlKV0mCisoMHg0OWIrMjg4LTB4NTZiKSk9PSgweGZjYSs0MC0weGZhMikpe2NoYXIgdGVtcHJhWygweDEwYWIrNDA2My0weDIwMGEpXTtjaGFyIAorYWNBc2NbKDB4MTE4Nis1MTY5LTB4MjUzNyldO2lmKGhhbGZ0bXA+PSgweGY5ZCs1MjMzLTB4MjQwMCkpe2hhbGZ0bXA9KHRtcC8KKygweDE0MzMrMTc3Ni0weDFiMjEpKS8oMHgxODE3KzM1NDktMHgyNWVkKSsodG1wLygweDMrMzk2Ni0weGY3ZikpO31lbHNle2hhbGZ0bXA9Cit0bXAvKDB4NGQ0KzY2MDEtMHgxZTliKTt9bWVtc2V0KHRlbXByYSwoMHgxOTMyKzk0OC0weDFjZTYpLHNpemVvZih0ZW1wcmEpKTsKK21lbWNweSh0ZW1wcmEscFNyYyx0bXApO21lbXNldChhY0FzYywoMHgxODA0KzU3MC0weDFhM2UpLHNpemVvZihhY0FzYykpOworbkRzdExlbmd0aD1TdHJpbmcyQnl0ZXModGVtcHJhLGJ1ZixoYWxmdG1wJigweDEyYSs1NDEyLTB4MTY0Nyk/KGludCloYWxmdG1wKgorKDB4MTNlOCs0MjY4LTB4MjQ4ZCkvKDB4MTZjYSsxNDEyLTB4MWM0YSkrKDB4NjVkKzEzODktMHhiYzgpOihpbnQpaGFsZnRtcCoKKygweDc3MSs1NjU2LTB4MWQ4MikvKDB4MTE4YysyOTUtMHgxMmFmKSk7aGFsZnRtcD1EZWNvZGU3Yml0KGJ1ZixhY0FzYyxuRHN0TGVuZ3RoCispO21lbXNldChwRHN0LT5UUEEsKDB4NTlkKzcwMi0weDg1Yiksc2l6ZW9mKHBEc3QtPlRQQSkpO2lmKGhhbGZ0bXA+CisoMHg0YzMrMjc2MC0weGY2Yikpe21lbWNweShwRHN0LT5UUEEsYWNBc2MsKDB4MWRlNCs5NDItMHgyMTcyKSk7dG1wPQorKDB4MThlMSsxMjI0LTB4MWQ4OSk7fWVsc2V7bWVtY3B5KHBEc3QtPlRQQSxhY0FzYyxoYWxmdG1wKTt9fWVsc2V7aWYodG1wPgorKDB4MjMxZis1OTctMHgyNTU0KSl7U2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5UUEEsKDB4MTk2Mys0NDItMHgxYWZkKSk7fQorZWxzZXtTZXJpYWxpemVOdW1iZXJzX3NtcyhwU3JjLHBEc3QtPlRQQSx0bXApO31pZigodHBfcmFbKDB4ODgyKzMwOTQtMHgxNDk4KV0mCisoMHgxNDMzKzM4NDktMHgyMmFiKSk9PSgweDE4MjQrMjAwMC0weDFmNjMpKXttZW1zZXQodGVtcF9udW0sKDB4YjQrNDY5OC0weDEzMGUpLAorc2l6ZW9mKHRlbXBfbnVtKSk7aWYocERzdC0+VFBBWygweDJhMys0NTExLTB4MTQ0MildIT0oKGNoYXIpKDB4YTY2KzUwNS0weGMzNCkpKXsKK3NucHJpbnRmKHRlbXBfbnVtLHNpemVvZih0ZW1wX251bSksIlx4MjVceDczXHgyNVx4NzMiLCJceDJiIixwRHN0LT5UUEEpO2lmKAorc3RybGVuKHRlbXBfbnVtKT4oMHgyNWYrNzI2Ny0weDFlYTIpKXtzbnByaW50ZihwRHN0LT5UUEEsc2l6ZW9mKHBEc3QtPlRQQSksCisiXHgyNVx4MzNceDMyXHg3MyIsdGVtcF9udW0pO31lbHNle3NucHJpbnRmKHBEc3QtPlRQQSxzaXplb2YocERzdC0+VFBBKSwKKyJceDI1XHg3MyIsdGVtcF9udW0pO319fX1wU3JjKz10bXA7U3RyaW5nMkJ5dGVzKHBTcmMsKHVuc2lnbmVkIGNoYXIqKSZwRHN0LT4KK1RQX1BJRCwoMHgyMTQzKzY1OS0weDIzZDQpKTtwU3JjKz0oMHgxM2ZjKzQ0NjQtMHgyNTZhKTtTdHJpbmcyQnl0ZXMocFNyYywoCit1bnNpZ25lZCBjaGFyKikmcERzdC0+VFBfRENTLCgweDE0Y2YrMTIyOC0weDE5OTkpKTtwU3JjKz0oMHhlMDErNjE0MS0weDI1ZmMpOworU2VyaWFsaXplTnVtYmVyc19zbXMocFNyYyxwRHN0LT5UUF9TQ1RTLCgweGYyYysyMjY1LTB4MTdmNykpO3BTcmMrPQorKDB4MTI1ZCszODU2LTB4MjE1Zik7U3RyaW5nMkJ5dGVzKHBTcmMsJnRtcCwoMHg2MGYrNDA3LTB4N2E0KSk7cFNyYys9CisoMHgxNTYwKzEzOTAtMHgxYWNjKTttZW1zZXQocERzdC0+VFBfVUQsKDB4MTc0ZisyNDI0LTB4MjBjNyksc2l6ZW9mKHBEc3QtPlRQX1VEKQorKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDY2XHg2OVx4NzJceDczXHg3NFx4NWZceDZmXHg2M1x4NzRceDY1XHg3NFx4MjBceDNkXHgyMFx4MzBceDc4XHgyNVx4MzBceDMyXHg3OFx4MmUiICJcbiIKLSxmaXJzdF9vY3RldCk7aWYoZmlyc3Rfb2N0ZXQmKDB4ODhkKzI0MTUtMHgxMWJjKSl7Y29uc3QgY2hhcip0ZW1wPXBTcmM7dW5zaWduZWQgCissZmlyc3Rfb2N0ZXQpO2lmKGZpcnN0X29jdGV0JigweGRlYSszNTkyLTB4MWJiMikpe2NvbnN0IGNoYXIqdGVtcD1wU3JjO3Vuc2lnbmVkIAogY2hhciBwZHVUeXBlO3Vuc2lnbmVkIGNoYXIgd3NwTGVuO3Vuc2lnbmVkIGNoYXIgdWRoTGVuO3Vuc2lnbmVkIGNoYXIgRGVzdFBvcnQxOwogdW5zaWduZWQgY2hhciBEZXN0UG9ydDI7dW5zaWduZWQgY2hhciBSZWZOdW0xO3Vuc2lnbmVkIGNoYXIgUmVmTnVtMjtwdXNoVHlwZT0KLVNNU19OT19QVVNIO1N0cmluZzJCeXRlcyh0ZW1wLCZ1ZGhsLCgweGM1OCsxODIwLTB4MTM3MikpO3RlbXArPQotKDB4YTViKzQ0MjUtMHgxYmEyKTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJnBEc3QtPlRQX0lFSSwoMHgxODJhKzE1ODctMHgxZTViKSkKK1NNU19OT19QVVNIO1N0cmluZzJCeXRlcyh0ZW1wLCZ1ZGhsLCgweDE2NDgrMjQ4Mi0weDFmZjgpKTt0ZW1wKz0KKygweGI0OCs0ODA0LTB4MWUwYSk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9JRUksKDB4MTE4NCszMDQ5LTB4MWQ2YikpCiA7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDY1XHg2M1x4NmZceDY0XHg2NVx4NTBceDc1XHg3M1x4NjhceDUwXHg2NFx4NzVceDIwXHg1NFx4NTBceDVmXHg0OVx4NDVceDQ5XHgyMFx4M2RceDIwXHgzMFx4NzhceDI1XHgzMFx4MzJceDc4XHgyZSIgIlxuIgotLHBEc3QtPlRQX0lFSSk7aWYocERzdC0+VFBfSUVJPT0oMHhhMTIrMzU4OS0weDE4MTIpKXt0ZW1wKz0oMHg5ZWYrMzU5MC0weDE3ZjMpKgotdG1wbGVuKygweGM2Yis1NjktMHhlYTIpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmRGVzdFBvcnQxLCgweDFiOWYrNjE0LTB4MWUwMykKKyxwRHN0LT5UUF9JRUkpO2lmKHBEc3QtPlRQX0lFST09KDB4ODk5Kzc3ODMtMHgyNmZiKSl7dGVtcCs9KDB4ODQzKzMyNTgtMHgxNGZiKSoKK3RtcGxlbisoMHgxNmU4KzI4LTB4MTcwMik7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZEZXN0UG9ydDEsKDB4MjE0MCs1OC0weDIxNzgpCiApO2F0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NDRceDY1XHg3M1x4NzRceDUwXHg2Zlx4NzJceDc0XHgzMVx4MjBceDNkXHgyMFx4MzBceDc4XHgyNVx4MzBceDMyXHg3OFx4MmUiICJcbiIKLSxEZXN0UG9ydDEpO3RlbXArPSgweDIwMis1NTc3LTB4MTdjOSkqdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmRGVzdFBvcnQyCi0sKDB4Mjg5KzU3MDktMHgxOGQ0KSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorLERlc3RQb3J0MSk7dGVtcCs9KDB4NDY2KzI5MzAtMHhmZDYpKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJkRlc3RQb3J0MiwKKygweDdjMSs1NjI0LTB4MWRiNykpO2F0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NDRceDY1XHg3M1x4NzRceDUwXHg2Zlx4NzJceDc0XHgzMlx4MjBceDNkXHgyMFx4MzBceDc4XHgyNVx4MzBceDMyXHg3OFx4MmUiICJcbiIKLSxEZXN0UG9ydDIpO2lmKChEZXN0UG9ydDE9PSgweDdjNSs3NTMtMHhhYWIpKSYmKChEZXN0UG9ydDI9PSgweDQ1ZCs2Mjg5LTB4MWM2YSkpCi18fChEZXN0UG9ydDI9PSgweDE3NSsyMzIyLTB4YTAyKSkpKXtwdXNoVHlwZT1TTVNfUFVTSDt9fWlmKFNNU19QVVNIIT1wdXNoVHlwZSl7Ci1yZXR1cm4gcHVzaFR5cGU7fXRlbXA9cFNyYyt1ZGhsKigweDEyOTYrNDE2MS0weDIyZDUpKygweDE3OTkrMTM0OS0weDFjZGEpO3RtcGxlbgotPVN0cmluZzJCeXRlcyh0ZW1wLCZwZHVUeXBlLCgweDE5ZDMrNzY3LTB4MWNkMCkpO2lmKHBkdVR5cGU9PSgweDE1NjMrNDk0LTB4MTc0YikKLSl7cHVzaFR5cGU9U01TX1BVU0g7dGVtcCs9KDB4Y2QxKzIwMzQtMHgxNGJmKTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJnBkdVR5cGUsCi0oMHgxNTUrMzcwMC0weGZjNykpO2lmKHBkdVR5cGU9PSgweGYzNis1MDg4LTB4MjI1Mikpe3B1c2hUeXBlPVNNU19OT1RJRklDQVRJT047fQotZWxzZXt0ZW1wKz0oMHg4YjArMjM0Ny0weDExZDcpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmcGR1VHlwZSwKLSgweDgxYys1NjA0LTB4MWRmZSkpO2lmKChwZHVUeXBlPT0oMHgxZTErODM1LTB4NDYyKSl8fChwZHVUeXBlPT0KLSgweDZlNysyNjE2LTB4MTA2OSkpKXtwdXNoVHlwZT1TTVNfQk9PVFNUUkFQO319fWlmKChwRHN0LT5UUF9JRUk9PQotKDB4M2MwKzczNDYtMHgyMDZlKSl8fChwRHN0LT5UUF9JRUk9PSgweDkzNSs0MTg5LTB4MTk4ZCkpfHwocERzdC0+VFBfSUVJPT0KLSgweDViMys5MDAtMHg5MmYpKSl7dGVtcD1wU3JjKygweDQwKzgzNzAtMHgyMGVlKTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJklFSURMCi0sKDB4YzBiKzQxMDItMHgxYzBmKSk7aWYoSUVJREw9PSh1ZGhsLSgweDMxMis3NTAyLTB4MjA1ZSkpKXt9ZWxzZXt0ZW1wKz0KLSgweDU5OSs0NTc1LTB4MTc3NikqKDB4ZDg4KzIyNDctMHgxNjQ5KTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJnVkaExlbiwKLSgweGI1OSszMTY1LTB4MTdiNCkpO2lmKHVkaExlbj09KDB4Yys4NzEzLTB4MjIxMikpe3RlbXArPSgweDM5ZCsxNzg2LTB4YTk1KSoKLXRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJlJlZk51bTEsKDB4MTM2Kzc4NTEtMHgxZmRmKSk7cERzdC0+VFBfUmVmZXJOdW09Ci1SZWZOdW0xO3RlbXArPSgweGZjOSs0NTItMHgxMThiKSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT4KLVRQX0FsbFBpZWNlTnVtLCgweGNmMCs1MzkzLTB4MjFmZikpO3RlbXArPSgweDg2MCszMTQ5LTB4MTRhYikqdG1wbGVuO3RtcGxlbj0KLVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0sKDB4ZGYwKzI4MjMtMHgxOGY1KSk7dGVtcCs9Ci0oMHgyZGYrMTU3Ny0weDkwNikqdG1wbGVuO31lbHNlIGlmKHVkaExlbj09KDB4YzY4KzQ0MTktMHgxZGE3KSl7dGVtcCs9Ci0oMHgxZTI1KzE2MDgtMHgyNDZiKSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZSZWZOdW0xLCgweDQ5NCsxMDI3LTB4ODk1KQotKTt0ZW1wKz0oMHg3MjArNzcxOC0weDI1NDQpKnRtcGxlbjt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJlJlZk51bTIsCi0oMHhjYTMrMjI1MC0weDE1NmIpKTtpbnQgUmVmZXJOdW09UmVmTnVtMitSZWZOdW0xKigweDM0Nys0NzU4LTB4MTRkZCk7cERzdC0+Ci1UUF9SZWZlck51bT1SZWZlck51bTt0ZW1wKz0oMHgxNjkzKzM5NTEtMHgyNjAwKSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLAotJnBEc3QtPlRQX0FsbFBpZWNlTnVtLCgweGZhNisyMzk2LTB4MTkwMCkpO3RlbXArPSgweDEyNSs4NzIwLTB4MjMzMykqdG1wbGVuOwotdG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0sKDB4NjYwKzcyMTMtMHgyMjhiKSk7dGVtcCs9Ci0oMHgxZDlkKzE5MTgtMHgyNTE5KSp0bXBsZW47fX19YXRfcHJpbnQoTE9HX0RFQlVHLAorLERlc3RQb3J0Mik7aWYoKERlc3RQb3J0MT09KDB4MTlmNSsyNjU3LTB4MjQ0YikpJiYoKERlc3RQb3J0Mj09KDB4OTIxKzcwMi0weGI1YikKKyl8fChEZXN0UG9ydDI9PSgweDFlOTkrMTUyMy0weDI0MDcpKSkpe3B1c2hUeXBlPVNNU19QVVNIO319aWYoU01TX1BVU0ghPXB1c2hUeXBlCispe3JldHVybiBwdXNoVHlwZTt9dGVtcD1wU3JjK3VkaGwqKDB4NjA3KzY1NzgtMHgxZmI3KSsoMHgxNzlhKzExMzgtMHgxYzA4KTsKK3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmcGR1VHlwZSwoMHg3YmMrMTU1NC0weGRjYykpO2lmKHBkdVR5cGU9PQorKDB4NDliKzM0MjMtMHgxMWY0KSl7cHVzaFR5cGU9U01TX1BVU0g7dGVtcCs9KDB4NjZiKzUwMzAtMHgxYTBkKTt0bXBsZW49CitTdHJpbmcyQnl0ZXModGVtcCwmcGR1VHlwZSwoMHg2NCsxMDMtMHhjOSkpO2lmKHBkdVR5cGU9PSgweDE0NjErNDc3Mi0weDI2NDEpKXsKK3B1c2hUeXBlPVNNU19OT1RJRklDQVRJT047fWVsc2V7dGVtcCs9KDB4ZGVkKzYxNi0weDEwNTEpO3RtcGxlbj1TdHJpbmcyQnl0ZXMoCit0ZW1wLCZwZHVUeXBlLCgweDE1ODIrMjc0MS0weDIwMzUpKTtpZigocGR1VHlwZT09KDB4OTM5KzQ4NDEtMHgxYjYwKSl8fChwZHVUeXBlCis9PSgweDgxMCsyODI1LTB4MTI2MykpKXtwdXNoVHlwZT1TTVNfQk9PVFNUUkFQO319fWlmKChwRHN0LT5UUF9JRUk9PQorKDB4ZDNjKzI4ODctMHgxODdmKSl8fChwRHN0LT5UUF9JRUk9PSgweDk5Nis1MTYzLTB4MWRiYykpfHwocERzdC0+VFBfSUVJPT0KKygweDEyNzgrMTYzOS0weDE4ZDcpKSl7dGVtcD1wU3JjKygweDNlOCs1NzUwLTB4MWE1YSk7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCYKK0lFSURMLCgweDFiNTYrMTE5OS0weDIwMDMpKTtpZihJRUlETD09KHVkaGwtKDB4OTBmKzI0NTQtMHgxMmEzKSkpe31lbHNle3RlbXArPQorKDB4MThiNSszMzM0LTB4MjViOSkqKDB4YTE5KzU1MTgtMHgxZmExKTt0bXBsZW49U3RyaW5nMkJ5dGVzKHRlbXAsJnVkaExlbiwKKygweDFhZTErNTM5LTB4MWNmYSkpO2lmKHVkaExlbj09KDB4YjEzKzcwMTktMHgyNjdiKSl7dGVtcCs9KDB4MWZkYys3NC0weDIwMjQpKgordG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmUmVmTnVtMSwoMHg5NmQrMjQ1NC0weDEzMDEpKTtwRHN0LT5UUF9SZWZlck51bT0KK1JlZk51bTE7dGVtcCs9KDB4YzdkKzM2ODktMHgxYWU0KSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT4KK1RQX0FsbFBpZWNlTnVtLCgweDEzNSs3MzU1LTB4MWRlZSkpO3RlbXArPSgweDVmOCsxNTg4LTB4YzJhKSp0bXBsZW47dG1wbGVuPQorU3RyaW5nMkJ5dGVzKHRlbXAsJnBEc3QtPlRQX0N1cnJlbnRQaWVjZU51bSwoMHg4YTUrMjI4Ni0weDExOTEpKTt0ZW1wKz0KKygweDFiMzkrMjI1MC0weDI0MDEpKnRtcGxlbjt9ZWxzZSBpZih1ZGhMZW49PSgweDM2Zis3NzU4LTB4MjFiOSkpe3RlbXArPQorKDB4Mzk0Kzc4MjgtMHgyMjI2KSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZSZWZOdW0xLCgweDQ1Mys1NDY2LTB4MTlhYikKKyk7dGVtcCs9KDB4MTAwMCsxNDA5LTB4MTU3ZikqdG1wbGVuO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmUmVmTnVtMiwKKygweDhhNCs2OTQ5LTB4MjNjNykpO2ludCBSZWZlck51bT1SZWZOdW0yK1JlZk51bTEqKDB4ODMxKzIxNzYtMHhmYjEpO3BEc3QtPgorVFBfUmVmZXJOdW09UmVmZXJOdW07dGVtcCs9KDB4OTY2KzY2ODktMHgyMzg1KSp0bXBsZW47dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCYKK3BEc3QtPlRQX0FsbFBpZWNlTnVtLCgweDVhYisxNDE1LTB4YjMwKSk7dGVtcCs9KDB4MTk0MCsyMjQ4LTB4MjIwNikqdG1wbGVuOwordG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0sKDB4MTNhNSsyMjE4LTB4MWM0ZCkpO3RlbXArPQorKDB4ZTMrNDE0Ni0weDExMTMpKnRtcGxlbjt9fX1hdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1MFx4NzVceDczXHg2OFx4NTBceDY0XHg3NVx4MjBceDUyXHg2NVx4NjZceDY1XHg3Mlx4NGVceDc1XHg2ZFx4MjBceDNkXHgyMFx4MjVceDY0XHgyY1x4NDFceDZjXHg2Y1x4NGVceDc1XHg2ZFx4MjBceDNkXHgyNVx4NjRceDJjXHg0M1x4NzVceDcyXHg0ZVx4NzVceDZkXHgyMFx4M2RceDI1XHg2NFx4MmUiICJcbiIKICxwRHN0LT5UUF9SZWZlck51bSxwRHN0LT5UUF9BbGxQaWVjZU51bSxwRHN0LT5UUF9DdXJyZW50UGllY2VOdW0pO2lmKAotU01TX05PVElGSUNBVElPTj09cHVzaFR5cGUpe3RlbXA9cFNyYyt1ZGhsKigweGRkMisxOTc3LTB4MTU4OSkrCi0oMHhkYTArMTQwNC0weDEzMTYpO3RtcGxlbj1TdHJpbmcyQnl0ZXModGVtcCwmd3NwTGVuLCgweGZmYysyODAtMHgxMTEyKSk7dGVtcD0KLXRlbXArd3NwTGVuKigweGU1YysyMTQ1LTB4MTZiYikrKDB4NTUrMzgyNS0weGY0NCk7fWVsc2V7dGVtcD1wU3JjK3VkaGwqCi0oMHhkZTcrNDkwNS0weDIxMGUpKygweDI4Nys1MzA2LTB4MTczZik7fW5Ec3RMZW5ndGg9KChzdHJsZW4odGVtcCk8c2l6ZW9mKHBEc3QtPgotVFBfVUQpKT9zdHJsZW4odGVtcCk6KHNpemVvZihwRHN0LT5UUF9VRCktKDB4MTdhYiszNTIxLTB4MjU2YikpKTttZW1jcHkocERzdC0+CitTTVNfTk9USUZJQ0FUSU9OPT1wdXNoVHlwZSl7dGVtcD1wU3JjK3VkaGwqKDB4MjNkKzQwMjAtMHgxMWVmKSsKKygweDkyMysxODc3LTB4MTA3Mik7dG1wbGVuPVN0cmluZzJCeXRlcyh0ZW1wLCZ3c3BMZW4sKDB4MTNmOSszODM1LTB4MjJmMikpO3RlbXA9Cit0ZW1wK3dzcExlbiooMHgxMDI3KzM5NDMtMHgxZjhjKSsoMHgxMjVkKzE0MjctMHgxN2VlKTt9ZWxzZXt0ZW1wPXBTcmMrdWRobCoKKygweGI5Yys5MTEtMHhmMjkpKygweDI1NTErMjQ5LTB4MjY0OCk7fW5Ec3RMZW5ndGg9KChzdHJsZW4odGVtcCk8c2l6ZW9mKHBEc3QtPgorVFBfVUQpKT9zdHJsZW4odGVtcCk6KHNpemVvZihwRHN0LT5UUF9VRCktKDB4MzRkKzU2NzEtMHgxOTczKSkpO21lbWNweShwRHN0LT4KIFRQX1VELHRlbXAsbkRzdExlbmd0aCk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDY1XHg2M1x4NmZceDY0XHg2NVx4NTBceDc1XHg3M1x4NjhceDUwXHg2NFx4NzVceDIwXHg3MFx4NDRceDczXHg3NFx4MmRceDNlXHg1NFx4NTBceDVmXHg1NVx4NDRceDIwXHgzZFx4MjBceDI1XHg3M1x4MmUiICJcbiIKICxwRHN0LT5UUF9VRCk7fWF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2NVx4NjNceDZmXHg2NFx4NjVceDUwXHg3NVx4NzNceDY4XHg1MFx4NjRceDc1XHgyMFx4NzBceDc1XHg3M1x4NjhceDU0XHg3OVx4NzBceDY1XHgyMFx4M2RceDIwXHgyNVx4NjRceDJlIiAiXG4iCiAscHVzaFR5cGUpO3JldHVybiBwdXNoVHlwZTt9c3RhdGljIGludCBTZXJpYWxpemVOdW1iZXJzX3Ntcyhjb25zdCBjaGFyKnBTcmMsY2hhcgotKnBEc3QsaW50IG5TcmNMZW5ndGgpe2ludCBuRHN0TGVuZ3RoO2NoYXIgY2g7aW50IGk9KDB4MTFjZCsyMTYtMHgxMmE1KTtpZihwU3JjPT0KLU5VTEx8fHBEc3Q9PU5VTEx8fG5TcmNMZW5ndGg8KDB4NDYrNTE1NS0weDE0NjkpKXtyZXR1cm4tKDB4NmE4KzYyNzYtMHgxZjJiKTt9Ci1uRHN0TGVuZ3RoPW5TcmNMZW5ndGg7Zm9yKGk9KDB4MTNiZisxMzAyLTB4MThkNSk7aTxuU3JjTGVuZ3RoO2krPQotKDB4Mjk3KzQzNDktMHgxMzkyKSl7Y2g9KnBTcmMrKzsqcERzdCsrPSpwU3JjKys7KnBEc3QrKz1jaDt9aWYoKihwRHN0LQotKDB4YzlmKzUyNzAtMHgyMTM0KSk9PSgoY2hhcikoMHg2OWYrMzM5NC0weDEzOWIpKSl7cERzdC0tO25Ec3RMZW5ndGgtLTt9KnBEc3Q9Ci0nXDAnO3JldHVybiBuRHN0TGVuZ3RoO31VSU5UMTYgd21zX3RzX3BhY2tfZ3dfN19iaXRfY2hhcnMoY29uc3QgVUlOVDgqaW4sVUlOVDE2IAotaW5fbGVuLFVJTlQxNiBzaGlmdCxVSU5UMTYgb3V0X2xlbl9tYXgsVUlOVDgqb3V0KXtVSU5UMTYgaT0oMHg2ODMrMzU1NC0weDE0NjUpOwotVUlOVDE2IHBvcz0oMHgyMTBjKzExNTItMHgyNThjKTtpZihpbj09TlVMTHx8b3V0PT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisqcERzdCxpbnQgblNyY0xlbmd0aCl7aW50IG5Ec3RMZW5ndGg7Y2hhciBjaDtpbnQgaT0oMHgzM2MrMzUwMS0weDEwZTkpO2lmKHBTcmM9PQorTlVMTHx8cERzdD09TlVMTHx8blNyY0xlbmd0aDwoMHgxY2NmKzMxNC0weDFlMDkpKXtyZXR1cm4tKDB4MWRjMSs0MjQtMHgxZjY4KTt9CituRHN0TGVuZ3RoPW5TcmNMZW5ndGg7Zm9yKGk9KDB4MzcrMTgzMC0weDc1ZCk7aTxuU3JjTGVuZ3RoO2krPQorKDB4ZDlhKzQzMTctMHgxZTc1KSl7Y2g9KnBTcmMrKzsqcERzdCsrPSpwU3JjKys7KnBEc3QrKz1jaDt9aWYoKihwRHN0LQorKDB4MTQ5KzI3NzYtMHhjMjApKT09KChjaGFyKSgweDFlNWErMTMtMHgxZTIxKSkpe3BEc3QtLTtuRHN0TGVuZ3RoLS07fSpwRHN0PSdcMCcKKztyZXR1cm4gbkRzdExlbmd0aDt9VUlOVDE2IHdtc190c19wYWNrX2d3XzdfYml0X2NoYXJzKGNvbnN0IFVJTlQ4KmluLFVJTlQxNiAKK2luX2xlbixVSU5UMTYgc2hpZnQsVUlOVDE2IG91dF9sZW5fbWF4LFVJTlQ4Km91dCl7VUlOVDE2IGk9KDB4MWY3ZCs0OTAtMHgyMTY3KTsKK1VJTlQxNiBwb3M9KDB4MzkwKzMxNTYtMHhmZTQpO2lmKGluPT1OVUxMfHxvdXQ9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NzBceDYxXHg2M1x4NmJceDVmXHg2N1x4NzdceDVmXHgzN1x4NWZceDYyXHg2OVx4NzRceDVmXHg2M1x4NjhceDYxXHg3Mlx4NzMiCi0pO3JldHVybigweDE1YjErMzAyNi0weDIxODMpO31zaGlmdCU9KDB4ZWIyKzI0MzUtMHgxODJlKTtpZihzaGlmdCE9Ci0oMHhmZTgrNjAwLTB4MTI0MCkpe291dFtwb3NdfD0oVUlOVDgpKGluW2ldPDxzaGlmdCk7c2hpZnQ9KCgweGEwNiszOTA5LTB4MTk0NCktCi1zaGlmdCkrKDB4MTE5Mis0MTI3LTB4MjFiMCk7aWYoc2hpZnQ9PSgweGM3Mys0OTQ5LTB4MWZjMSkpe3NoaWZ0PQotKDB4MzQ2KzQyMzgtMHgxM2Q0KTtpKys7fXBvcysrO31mb3IoO3BvczxvdXRfbGVuX21heCYmaTxpbl9sZW47cG9zKyssaSsrKXtvdXRbCi1wb3NdPWluW2ldPj5zaGlmdDtpZihpKygweDFhYWMrMjMyNS0weDIzYzApPGluX2xlbil7b3V0W3Bvc118PShVSU5UOCkoaW5baSsKLSgweGNkMSsyNjEwLTB4MTcwMildPDwoKDB4OTFhKzQ0OS0weGFkNCktc2hpZnQpKTtzaGlmdCsrO2lmKHNoaWZ0PT0KLSgweDhlZCs3NjctMHhiZTUpKXtzaGlmdD0oMHhlNTArMTc4My0weDE1NDcpO2krKzt9fX1yZXR1cm4gcG9zO31VSU5UOCAKKyk7cmV0dXJuKDB4YTQ1KzQ2MDAtMHgxYzNkKTt9c2hpZnQlPSgweDEwNGQrNzQ4LTB4MTMzMik7aWYoc2hpZnQhPQorKDB4MWZkKzIwMTctMHg5ZGUpKXtvdXRbcG9zXXw9KFVJTlQ4KShpbltpXTw8c2hpZnQpO3NoaWZ0PSgoMHg5MTUrMTE1OC0weGQ5NCktCitzaGlmdCkrKDB4YTU0KzQ1MzgtMHgxYzBkKTtpZihzaGlmdD09KDB4MmFmKzkyMTEtMHgyNmEzKSl7c2hpZnQ9CisoMHgxNjdmKzE2NTgtMHgxY2Y5KTtpKys7fXBvcysrO31mb3IoO3BvczxvdXRfbGVuX21heCYmaTxpbl9sZW47cG9zKyssaSsrKXtvdXRbCitwb3NdPWluW2ldPj5zaGlmdDtpZihpKygweDEwNzArNTUyLTB4MTI5Nyk8aW5fbGVuKXtvdXRbcG9zXXw9KFVJTlQ4KShpbltpKworKDB4MTU2OSszMjA3LTB4MjFlZildPDwoKDB4MTFhMys1MzUzLTB4MjY4NSktc2hpZnQpKTtzaGlmdCsrO2lmKHNoaWZ0PT0KKygweGY0OSszMjM2LTB4MWJlNikpe3NoaWZ0PSgweDhkZCs3NjkxLTB4MjZlOCk7aSsrO319fXJldHVybiBwb3M7fVVJTlQ4IAogd21zX3RzX2VuY29kZV9hZGRyZXNzKGNvbnN0IHdtc19hZGRyZXNzX3NfdHlwZSphZGRyLFVJTlQ4KmRhdGEpe1VJTlQ4IGkscG9zPQotKDB4NjcxKzQ4NzMtMHgxOTdhKTtpZihhZGRyLT5udW1iZXJfb2ZfZGlnaXRzPldNU19HV19BRERSRVNTX01BWCl7YXRfcHJpbnQoCisoMHgyZjgrNjkxNi0weDFkZmMpO2lmKGFkZHItPm51bWJlcl9vZl9kaWdpdHM+V01TX0dXX0FERFJFU1NfTUFYKXthdF9wcmludCgKIExPR19ERUJVRywKICJceDQxXHg2NFx4NjRceDcyXHgyMFx4NmNceDY1XHg2ZVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDIwXHgyNVx4NjQiCi0sYWRkci0+bnVtYmVyX29mX2RpZ2l0cyk7cmV0dXJuKDB4MWYxMSsxMDU1LTB4MjMzMCk7fWlmKGFkZHItPm51bWJlcl90eXBlPT0KKyxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzKTtyZXR1cm4oMHgxMDhhKzU2MDEtMHgyNjZiKTt9aWYoYWRkci0+bnVtYmVyX3R5cGU9PQogV01TX05VTUJFUl9BTFBIQU5VTUVSSUMpe2RhdGFbcG9zXT0oVUlOVDgpKChhZGRyLT5udW1iZXJfb2ZfZGlnaXRzKgotKDB4OTFkKzcyMDYtMHgyNTNjKSsoMHgxOTcrNDMzOC0weDEyODYpKS8oMHgyM2U5KzQ0LTB4MjQxMSkpO31lbHNle2RhdGFbcG9zXT0KLWFkZHItPm51bWJlcl9vZl9kaWdpdHM7fXBvcysrO2RhdGFbcG9zXT0oMHhkMDErNDYwOC0weDFlODEpO2RhdGFbcG9zXXw9KFVJTlQ4KSgoCi1VSU5UOClhZGRyLT5udW1iZXJfdHlwZTw8KDB4MWM5KzY2ODAtMHgxYmRkKSk7ZGF0YVtwb3NdfD0oVUlOVDgpYWRkci0+CisoMHgxNDcwKzIwMTctMHgxYzRhKSsoMHg3ZDArMzI1NC0weDE0ODMpKS8oMHhlNWYrNTg0OS0weDI1MzQpKTt9ZWxzZXtkYXRhW3Bvc109CithZGRyLT5udW1iZXJfb2ZfZGlnaXRzO31wb3MrKztkYXRhW3Bvc109KDB4MWVkMCsyMTcyLTB4MjZjYyk7ZGF0YVtwb3NdfD0oVUlOVDgpKAorKFVJTlQ4KWFkZHItPm51bWJlcl90eXBlPDwoMHgxMzQyKzM2MjctMHgyMTY5KSk7ZGF0YVtwb3NdfD0oVUlOVDgpYWRkci0+CiBudW1iZXJfcGxhbjtwb3MrKztpZihhZGRyLT5udW1iZXJfdHlwZT09V01TX05VTUJFUl9BTFBIQU5VTUVSSUMpe3Bvcys9KFVJTlQ4KQogd21zX3RzX3BhY2tfZ3dfN19iaXRfY2hhcnMoYWRkci0+ZGlnaXRzLGFkZHItPm51bWJlcl9vZl9kaWdpdHMsCi0oMHg5NTUrMjU3MC0weDEzNWYpLFdNU19HV19BRERSRVNTX01BWCwmZGF0YVtwb3NdKTt9ZWxzZXtmb3IoaT0KLSgweGEyNCszMTc1LTB4MTY4Yik7aTxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7ZGF0YVtwb3NdPShVSU5UOCkoYWRkci0+ZGlnaXRzCi1baSsrXSYoMHgyMDdmKzEzMzItMHgyNWE0KSk7e2RhdGFbcG9zXXw9KFVJTlQ4KShhZGRyLT5kaWdpdHNbaV08PAotKDB4Njc3KzE3NzMtMHhkNjApKTt9cG9zKys7fX1yZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZW5jb2RlX2Rjcyhjb25zdCAKLXdtc19nd19kY3Nfc190eXBlKmRjcyxVSU5UOCpkYXRhKXtVSU5UOCBwb3M9KDB4MjE5Zis3NTQtMHgyNDkxKTtpZihkY3MtPgorKDB4MTNjZis0Mjc5LTB4MjQ4NiksV01TX0dXX0FERFJFU1NfTUFYLCZkYXRhW3Bvc10pO31lbHNle2ZvcihpPQorKDB4MzIyKzYyMTMtMHgxYjY3KTtpPGFkZHItPm51bWJlcl9vZl9kaWdpdHM7aSsrKXtkYXRhW3Bvc109KFVJTlQ4KShhZGRyLT5kaWdpdHMKK1tpKytdJigweDhiMCsxODk0LTB4MTAwNykpO3tkYXRhW3Bvc118PShVSU5UOCkoYWRkci0+ZGlnaXRzW2ldPDwKKygweDFjMjArNTk4LTB4MWU3MikpO31wb3MrKzt9fXJldHVybiBwb3M7fVVJTlQ4IHdtc190c19lbmNvZGVfZGNzKGNvbnN0IAord21zX2d3X2Rjc19zX3R5cGUqZGNzLFVJTlQ4KmRhdGEpe1VJTlQ4IHBvcz0oMHhlMSs2MjE2LTB4MTkyOSk7aWYoZGNzLT4KIG1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfTk9ORSl7ZGF0YVtwb3NdPWRjcy0+aXNfY29tcHJlc3NlZD8KLSgweGExKzEzMjItMHg1YWIpOigweDEyZmIrNDI0OS0weDIzOTQpO2RhdGFbcG9zXXw9KGRjcy0+bXNnX2NsYXNzIT0KLVdNU19NRVNTQUdFX0NMQVNTX05PTkUpPygweDgzMCs3NDM4LTB4MjUyZSk6KDB4ZGNiKzQyNzgtMHgxZTgxKTtkYXRhW3Bvc118PWRjcy0+Ci1hbHBoYWJldDw8KDB4NjExKzYyNzctMHgxZTk0KTtkYXRhW3Bvc118PWRjcy0+bXNnX2NsYXNzJigweDFmYWIrMzIwLTB4MjBlOCk7fQorKDB4NTQ5KzI1NTUtMHhmMjQpOigweGUwNCs0Mjk4LTB4MWVjZSk7ZGF0YVtwb3NdfD0oZGNzLT5tc2dfY2xhc3MhPQorV01TX01FU1NBR0VfQ0xBU1NfTk9ORSk/KDB4MTZhZisxMzA0LTB4MWJiNyk6KDB4YmRkKzE5ODItMHgxMzliKTtkYXRhW3Bvc118PWRjcworLT5hbHBoYWJldDw8KDB4ODYxKzMzODAtMHgxNTkzKTtkYXRhW3Bvc118PWRjcy0+bXNnX2NsYXNzJigweDE4OSs0ODI3LTB4MTQ2MSk7fQogZWxzZSBpZihkY3MtPm1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfTk9ORV8xMTExKXtkYXRhW3Bvc109Ci0oMHgxZjA0KzM2NC0weDFmODApO2lmKGRjcy0+YWxwaGFiZXQ9PVdNU19HV19BTFBIQUJFVF84X0JJVClkYXRhW3Bvc118PQotKDB4MWI2Kzg5MzgtMHgyNDljKTtkYXRhW3Bvc118PWRjcy0+bXNnX2NsYXNzJigweDE3YysyMDI0LTB4OTYxKTt9ZWxzZXtpZihkY3MtPgotbXNnX3dhaXRpbmc9PVdNU19HV19NU0dfV0FJVElOR19ESVNDQVJEKXtkYXRhW3Bvc109KDB4MjJhMisxMzE0LTB4MjcwNCk7fWVsc2UgaWYKLShkY3MtPm1zZ193YWl0aW5nPT1XTVNfR1dfTVNHX1dBSVRJTkdfU1RPUkUmJmRjcy0+YWxwaGFiZXQ9PQotV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2RhdGFbcG9zXT0oMHg5ZWMrNjk0NC0weDI0M2MpO31lbHNle2RhdGFbcG9zXT0KLSgweDNhNCsxNzUzLTB4OTlkKTt9ZGF0YVtwb3NdfD0oZGNzLT5tc2dfd2FpdGluZ19hY3RpdmU9PVRSVUUpPwotKDB4MWE3MSsxODM4LTB4MjE5Nyk6KDB4OGYyKzYwODEtMHgyMGIzKTtkYXRhW3Bvc118PWRjcy0+bXNnX3dhaXRpbmdfa2luZCYKLSgweDEzNjErMjMyNS0weDFjNzMpO31wb3MrKztyZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfYmNkX3RvX2ludChjb25zdCBVSU5UOCBiY2QsCi1VSU5UOCpyZXN1bHQpe3Vuc2lnbmVkIGNoYXIgbG93X2JpdD0oYmNkJigweGQ4NSszODUwLTB4MWM4MCkpO3Vuc2lnbmVkIGNoYXIgCi1oaWdoX2JpdD0oKGJjZCYoMHg4ODgrMzkwMi0weDE2ZDYpKT4+KDB4N2M0KzcxLTB4ODA3KSk7aWYobG93X2JpdD4KLSgweDU4Yis1MTg0LTB4MTljMil8fGhpZ2hfYml0PigweGRkMCs4NjUtMHgxMTI4KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4MTBlYyszMTM5LTB4MWMzZik7aWYoZGNzLT5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzhfQklUKWRhdGFbcG9zXXw9CisoMHgxODViKzI4MDktMHgyMzUwKTtkYXRhW3Bvc118PWRjcy0+bXNnX2NsYXNzJigweDEwOTQrNTAyMy0weDI0MzApO31lbHNle2lmKGRjcworLT5tc2dfd2FpdGluZz09V01TX0dXX01TR19XQUlUSU5HX0RJU0NBUkQpe2RhdGFbcG9zXT0oMHgxNmZkKzg5OC0weDE5YmYpO31lbHNlIAoraWYoZGNzLT5tc2dfd2FpdGluZz09V01TX0dXX01TR19XQUlUSU5HX1NUT1JFJiZkY3MtPmFscGhhYmV0PT0KK1dNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUKXtkYXRhW3Bvc109KDB4ZmRmKzYwNDEtMHgyNmE4KTt9ZWxzZXtkYXRhW3Bvc109CisoMHg4YWMrNjAwMy0weDFmM2YpO31kYXRhW3Bvc118PShkY3MtPm1zZ193YWl0aW5nX2FjdGl2ZT09VFJVRSk/CisoMHhhYzUrMjY5NC0weDE1NDMpOigweDY4MyszNDM4LTB4MTNmMSk7ZGF0YVtwb3NdfD1kY3MtPm1zZ193YWl0aW5nX2tpbmQmCisoMHg0YSs2MTk3LTB4MTg3Yyk7fXBvcysrO3JldHVybiBwb3M7fVVJTlQ4IHdtc190c19iY2RfdG9faW50KGNvbnN0IFVJTlQ4IGJjZCwKK1VJTlQ4KnJlc3VsdCl7dW5zaWduZWQgY2hhciBsb3dfYml0PShiY2QmKDB4MTI2KzE0NjAtMHg2Y2IpKTt1bnNpZ25lZCBjaGFyIAoraGlnaF9iaXQ9KChiY2QmKDB4MjQwKzMyODMtMHhlMjMpKT4+KDB4MTNmNSsxODQ3LTB4MWIyOCkpO2lmKGxvd19iaXQ+CisoMHhiZGQrMzgwMS0weDFhYWQpfHxoaWdoX2JpdD4oMHgyNGErNDE2MC0weDEyODEpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDQyXHg0M1x4NDRceDIwXHg2NFx4NjlceDY3XHg2OVx4NzRceDIxIik7KgotcmVzdWx0PSgweDE2ZTgrMzQwOC0weDI0MzgpO3JldHVybiBGQUxTRTt9ZWxzZXsqcmVzdWx0PSgoYmNkJigweGE1ZCs0MDQtMHhiZTIpKSsKLSgoKGJjZCYoMHgxNGY3KzE1NjQtMHgxYTIzKSk+PigweDJjNys4MTY0LTB4MjJhNykpKigweGIyMis0ODkwLTB4MWUzMikpKTtyZXR1cm4gCityZXN1bHQ9KDB4MWRhNCsyOTEtMHgxZWM3KTtyZXR1cm4gRkFMU0U7fWVsc2V7KnJlc3VsdD0oKGJjZCYoMHgxYjA3Kzg5NC0weDFlNzYpKQorKygoKGJjZCYoMHhjNTgrNDU5My0weDFkNTkpKT4+KDB4NmJjKzEyNjUtMHhiYTkpKSooMHgyMTBkKzExMjMtMHgyNTY2KSkpO3JldHVybiAKIFRSVUU7fX1VSU5UOCB3bXNfdHNfZW5jb2RlX3RpbWVzdGFtcChjb25zdCB3bXNfdGltZXN0YW1wX3NfdHlwZSp0aW1lc3RhbXAsVUlOVDgqCi1kYXRhKXtzaW50NyBpO1VJTlQ4IHBvcz0oMHgxOGMxKzE2MTQtMHgxZjBmKSxqO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPgoteWVhciwmaikpe3JldHVybigweDFlODUrMTU2Mi0weDI0OWYpO31kYXRhW3Bvc109KCh0aW1lc3RhbXAtPnllYXImCi0oMHhhMSs4MDk5LTB4MjAzNSkpPDwoMHg2MDkrNjQ1MS0weDFmMzgpKSsoKHRpbWVzdGFtcC0+eWVhciYoMHgyNmI3KzE3OC0weDI2NzkpKQotPj4oMHgxZmY1KzE3LTB4MjAwMikpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bW9udGgsJmopKXtpZihqPgotKDB4ZGE2KzkwMS0weDExMWYpfHxqPCgweDYwMSs1ODM1LTB4MWNjYikpe2F0X3ByaW50KExPR19ERUJVRywKK2RhdGEpe3NpbnQ3IGk7VUlOVDggcG9zPSgweDI3NCsyNzA4LTB4ZDA4KSxqO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPgoreWVhciwmaikpe3JldHVybigweDRkYys0NzEwLTB4MTc0Mik7fWRhdGFbcG9zXT0oKHRpbWVzdGFtcC0+eWVhciYKKygweDY5Yis0OTc3LTB4MTlmZCkpPDwoMHhmYTArMzAzNS0weDFiNzcpKSsoKHRpbWVzdGFtcC0+eWVhciYoMHhmODArNDQ3My0weDIwMDkpCispPj4oMHhlMGIrMzA0Ny0weDE5ZWUpKTtwb3MrKztpZih3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPm1vbnRoLCZqKSl7aWYoaj4KKygweGRiOCs1MjA0LTB4MjIwMCl8fGo8KDB4N2U2KzExOTctMHhjOTIpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0ZFx4NmZceDZlXHg3NFx4NjhceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7cmV0dXJuKDB4MWZiMysxNjQ1LTB4MjYyMCk7fX1lbHNle3JldHVybigweGJiKzQ1NDAtMHgxMjc3KTt9ZGF0YVtwb3NdPSgoCi10aW1lc3RhbXAtPm1vbnRoJigweDIxYis2NTI0LTB4MWI4OCkpPDwoMHhlZWErMzc0LTB4MTA1YykpKygodGltZXN0YW1wLT5tb250aCYKLSgweDMxYisyNzE1LTB4Y2M2KSk+PigweDhiNyszNDAwLTB4MTVmYikpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+Ci1kYXksJmopKXtpZihqPigweDE2MTgrMjQzOC0weDFmN2YpfHxqPCgweGRkYSsyMDAyLTB4MTVhYikpe2F0X3ByaW50KExPR19ERUJVRywKKyxqKTtyZXR1cm4oMHhjMDIrOTQ1LTB4ZmIzKTt9fWVsc2V7cmV0dXJuKDB4YyszNTgxLTB4ZTA5KTt9ZGF0YVtwb3NdPSgodGltZXN0YW1wCistPm1vbnRoJigweDYyNCsxODA2LTB4ZDIzKSk8PCgweDM4Yys0MDk3LTB4MTM4OSkpKygodGltZXN0YW1wLT5tb250aCYKKygweDEzNWMrMjM0OC0weDFiOTgpKT4+KDB4MWI4KzYyODktMHgxYTQ1KSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wCistPmRheSwmaikpe2lmKGo+KDB4MjA4YisxNDk5LTB4MjY0Nyl8fGo8KDB4OTgyKzIyNzQtMHgxMjYzKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDYxXHg3OVx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIsaik7Ci1yZXR1cm4oMHgxM2JjKzI0NTItMHgxZDUwKTt9fWVsc2V7cmV0dXJuKDB4MWM3ZisxNTk5LTB4MjJiZSk7fWRhdGFbcG9zXT0oKAotdGltZXN0YW1wLT5kYXkmKDB4MTEwZCszNDYxLTB4MWU4MykpPDwoMHg4YzkrNTkwNC0weDFmZDUpKSsoKHRpbWVzdGFtcC0+ZGF5JgotKDB4NDQ1KzQ2NTItMHgxNTgxKSk+PigweDFiMTkrMjQ2Mi0weDI0YjMpKTtwb3MrKztpZih3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAKLS0+aG91ciwmaikpe2lmKGo+KDB4ZDQwKzQ0NjctMHgxZTljKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorcmV0dXJuKDB4MTg1Kzc1MDMtMHgxZWQ0KTt9fWVsc2V7cmV0dXJuKDB4OTBmKzU1NjEtMHgxZWM4KTt9ZGF0YVtwb3NdPSgoCit0aW1lc3RhbXAtPmRheSYoMHgzYWMrNDY1Ny0weDE1Y2UpKTw8KDB4YmY2KzYzNjgtMHgyNGQyKSkrKCh0aW1lc3RhbXAtPmRheSYKKygweGE4NSs2MjU3LTB4MjIwNikpPj4oMHgxYTRkKzMwMjEtMHgyNjE2KSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wCistPmhvdXIsJmopKXtpZihqPigweDNiNisyODM1LTB4ZWIyKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDhceDZmXHg3NVx4NzJceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiLGoKLSk7cmV0dXJuKDB4NzYrOTQyNy0weDI1NDkpO319ZWxzZXtyZXR1cm4oMHg5NjUrNDAwNy0weDE5MGMpO31kYXRhW3Bvc109KCgKLXRpbWVzdGFtcC0+aG91ciYoMHgxMzI2KzI0MDMtMHgxYzdhKSk8PCgweDYzNysxNzQ3LTB4ZDA2KSkrKCh0aW1lc3RhbXAtPmhvdXImCi0oMHhkODErMzE5OC0weDE5MGYpKT4+KDB4ODA1KzQyMi0weDlhNykpO3BvcysrO2lmKHdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+Ci1taW51dGUsJmopKXtpZihqPigweDEzMis2NTEtMHgzODIpKXthdF9wcmludChMT0dfREVCVUcsCispO3JldHVybigweDRmMiszNy0weDUxNyk7fX1lbHNle3JldHVybigweDhiMSs0OTU1LTB4MWMwYyk7fWRhdGFbcG9zXT0oKHRpbWVzdGFtcAorLT5ob3VyJigweDE4YjMrMzYwNy0weDI2YmIpKTw8KDB4ODdkKzI5MzMtMHgxM2VlKSkrKCh0aW1lc3RhbXAtPmhvdXImCisoMHgyYTQrODY2OC0weDIzOTApKT4+KDB4MWZmNCszOTEtMHgyMTc3KSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wCistPm1pbnV0ZSwmaikpe2lmKGo+KDB4MThhNysyNTQ3LTB4MjI1Zikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiCi0saik7cmV0dXJuKDB4MjFiYSs3NTItMHgyNGFhKTt9fWVsc2V7cmV0dXJuKDB4OWZmKzI2MTQtMHgxNDM1KTt9ZGF0YVtwb3NdPSgoCi10aW1lc3RhbXAtPm1pbnV0ZSYoMHg2MTUrNTU4MC0weDFiZDIpKTw8KDB4NDMzKzg3OTAtMHgyNjg1KSkrKCh0aW1lc3RhbXAtPm1pbnV0ZQotJigweDE1YTcrMTc4MC0weDFiYWIpKT4+KDB4M2QxKzIzLTB4M2U0KSk7cG9zKys7aWYod21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT4KLXNlY29uZCwmaikpe2lmKGo+KDB4MTIwKzEyNDQtMHg1YzEpKXthdF9wcmludChMT0dfREVCVUcsCissaik7cmV0dXJuKDB4MTk5OSsxMTI3LTB4MWUwMCk7fX1lbHNle3JldHVybigweDFlMTIrMjA0Ny0weDI2MTEpO31kYXRhW3Bvc109KCgKK3RpbWVzdGFtcC0+bWludXRlJigweGQ0MSsyNzkwLTB4MTgxOCkpPDwoMHgxMDYzKzUwNjQtMHgyNDI3KSkrKCh0aW1lc3RhbXAtPgorbWludXRlJigweGQ2NSszMjg0LTB4MTk0OSkpPj4oMHgxYWM0KzU1Ni0weDFjZWMpKTtwb3MrKztpZih3bXNfdHNfYmNkX3RvX2ludCgKK3RpbWVzdGFtcC0+c2Vjb25kLCZqKSl7aWYoaj4oMHgzNzMrNzMxNS0weDFmY2IpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IgotLGopO3JldHVybigweDE2Y2QrMjY1LTB4MTdkNik7fX1lbHNle3JldHVybigweDJhZCs2MTczLTB4MWFjYSk7fWRhdGFbcG9zXT0oKAotdGltZXN0YW1wLT5zZWNvbmQmKDB4YzM4KzE2NjItMHgxMmE3KSk8PCgweDM1NSs2NDY4LTB4MWM5NSkpKygodGltZXN0YW1wLT5zZWNvbmQKLSYoMHgxNzVjKzY5NS0weDE5MjMpKT4+KDB4N2I5KzM1NTUtMHgxNTk4KSk7cG9zKys7aT0oc2ludDcpdGltZXN0YW1wLT50aW1lem9uZTsKLWlmKGk+KDB4MjA0KzEzMTAtMHg2ZjIpfHxpPC0oMHhiMzErNTk5MS0weDIyNjgpKXthdF9wcmludChMT0dfREVCVUcsCissaik7cmV0dXJuKDB4Mzk0KzI2NTUtMHhkZjMpO319ZWxzZXtyZXR1cm4oMHgxNjQ2KzMxMjMtMHgyMjc5KTt9ZGF0YVtwb3NdPSgoCit0aW1lc3RhbXAtPnNlY29uZCYoMHg3MGMrMTExNy0weGI1YSkpPDwoMHgxZTIwKzEyOTMtMHgyMzI5KSkrKCh0aW1lc3RhbXAtPnNlY29uZAorJigweDE5MzcrMjU5NS0weDIyNmEpKT4+KDB4OGI0KzQ3NjMtMHgxYjRiKSk7cG9zKys7aT0oc2ludDcpdGltZXN0YW1wLT50aW1lem9uZTsKK2lmKGk+KDB4MjEyNSs1OS0weDIxMzApfHxpPC0oMHg4NCs0ODQ3LTB4MTM0Mykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU0XHg2OVx4NmRceDY1XHg3YVx4NmZceDZlXHg2NVx4MjBceDY5XHg3M1x4MjBceDZmXHg3NVx4NzRceDIwXHg2Zlx4NjZceDIwXHg2Mlx4NmZceDc1XHg2ZVx4NjRceDNhXHgyMFx4MjVceDY0IgotLGkpO3JldHVybigweDE4NjMrMTkzLTB4MTkyNCk7fWlmKGk+PSgweDJkMSs4MzI4LTB4MjM1OSkpe2RhdGFbcG9zXT0oVUlOVDgpKCgoCi1VSU5UOCkoaSUoMHg4ZWQrNjYwMC0weDIyYWIpKSk8PCgweDExZjErMTIzNS0weDE2YzApKTtkYXRhW3Bvc118PShpLwotKDB4ODczKzc3NjAtMHgyNmI5KSk7fWVsc2V7aSo9KC0oMHhjMDMrMzAwNi0weDE3YzApKTtkYXRhW3Bvc109KFVJTlQ4KSgoKFVJTlQ4KSgKLWklKDB4MmNhKzg3MzktMHgyNGUzKSkpPDwoMHg4Zis5ODctMHg0NjYpKTtkYXRhW3Bvc118PShpLygweDg3NSs2MjE2LTB4MjBiMykpOwotZGF0YVtwb3NdfD0oMHgzNjYrOTAxNS0weDI2OTUpO31wb3MrKztyZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZ2V0X3VkaF9sZW5ndGgoCi1jb25zdCB3bXNfdWRoX3NfdHlwZSp1ZGgpe1VJTlQ4IGxlbmd0aD0oMHg2OTQrNzk4Ny0weDI1YzcpO2lmKHVkaCE9TlVMTCl7c3dpdGNoKAotdWRoLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODpsZW5ndGg9KDB4ZjViKzU3MDUtMHgyNWEzKSsKLSgweDEwNDIrMzczOC0weDFlZGIpK1dNU19VREhfT0NURVRTX0NPTkNBVDg7YnJlYWs7Y2FzZSBXTVNfVURIX0NPTkNBVF8xNjpsZW5ndGg9Ci0oMHgzZGYrODgxNy0weDI2NGYpKygweDFlNSs1NTI5LTB4MTc3ZCkrV01TX1VESF9PQ1RFVFNfQ09OQ0FUMTY7YnJlYWs7Y2FzZSAKLVdNU19VREhfU1BFQ0lBTF9TTTpsZW5ndGg9KDB4MjY0KzY3MDgtMHgxYzk3KSsoMHgxNDErOTI3Ny0weDI1N2QpKwotV01TX1VESF9PQ1RFVFNfU1BFQ0lBTF9TTTticmVhaztjYXNlIFdNU19VREhfUE9SVF84Omxlbmd0aD0oMHgxMTI1KzQwODQtMHgyMTE4KSsKLSgweDkxYysxODQtMHg5ZDMpK1dNU19VREhfT0NURVRTX1BPUlQ4O2JyZWFrO2Nhc2UgV01TX1VESF9QT1JUXzE2Omxlbmd0aD0KLSgweDMyOSsxNjgyLTB4OWJhKSsoMHhkMzcrMzQxMy0weDFhOGIpK1dNU19VREhfT0NURVRTX1BPUlQxNjticmVhaztjYXNlIAotV01TX1VESF9TTVNDX0NPTlRST0w6bGVuZ3RoPSgweDM1MiszMDM5LTB4ZjMwKSsoMHgxYmY4KzY1Mi0weDFlODMpK3VkaC0+dS5vdGhlci4KLWhlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSBXTVNfVURIX1NPVVJDRTpsZW5ndGg9KDB4ZmMrNjEyMi0weDE4ZTUpKwotKDB4MTQ2NysxMzUwLTB4MTlhYykrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSBXTVNfVURIX1dDTVA6bGVuZ3RoPQotKDB4MTg4ZCszODEtMHgxYTA5KSsoMHhjNDUrNDY3NS0weDFlODcpK3VkaC0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2JyZWFrO2Nhc2UgCissaSk7cmV0dXJuKDB4ODRhKzMzNjgtMHgxNTcyKTt9aWYoaT49KDB4MTJhOSszNDc1LTB4MjAzYykpe2RhdGFbcG9zXT0oVUlOVDgpKCgoCitVSU5UOCkoaSUoMHgxM2UyKzk4Ny0weDE3YjMpKSk8PCgweDE5ZTQrNzk5LTB4MWNmZikpO2RhdGFbcG9zXXw9KGkvCisoMHg3ODErMTAxMy0weGI2YykpO31lbHNle2kqPSgtKDB4MjE4MisxMjQ2LTB4MjY1ZikpO2RhdGFbcG9zXT0oVUlOVDgpKCgoVUlOVDgpKAoraSUoMHhiZjgrMzA3Ni0weDE3ZjIpKSk8PCgweDc2Nys1NzE1LTB4MWRiNikpO2RhdGFbcG9zXXw9KGkvKDB4NTRjKzMxNjItMHgxMTljKSkKKztkYXRhW3Bvc118PSgweDE3ZDcrMjg0Ni0weDIyZWQpO31wb3MrKztyZXR1cm4gcG9zO31VSU5UOCB3bXNfdHNfZ2V0X3VkaF9sZW5ndGgoCitjb25zdCB3bXNfdWRoX3NfdHlwZSp1ZGgpe1VJTlQ4IGxlbmd0aD0oMHhjMmErMjc2Mi0weDE2ZjQpO2lmKHVkaCE9TlVMTCl7c3dpdGNoKAordWRoLT5oZWFkZXJfaWQpe2Nhc2UgV01TX1VESF9DT05DQVRfODpsZW5ndGg9KDB4ZDAwKzIwMzMtMHgxNGYwKSsKKygweDJiNyszNzY1LTB4MTE2YikrV01TX1VESF9PQ1RFVFNfQ09OQ0FUODticmVhaztjYXNlIFdNU19VREhfQ09OQ0FUXzE2Omxlbmd0aD0KKygweDNhNCs4ODQ5LTB4MjYzNCkrKDB4MWYyKzIxNjQtMHhhNjUpK1dNU19VREhfT0NURVRTX0NPTkNBVDE2O2JyZWFrO2Nhc2UgCitXTVNfVURIX1NQRUNJQUxfU006bGVuZ3RoPSgweDE4NzIrMjIwMi0weDIxMGIpKygweDE4NWQrMTkzNy0weDFmZWQpKworV01TX1VESF9PQ1RFVFNfU1BFQ0lBTF9TTTticmVhaztjYXNlIFdNU19VREhfUE9SVF84Omxlbmd0aD0oMHgxZjk4KzE2NDUtMHgyNjA0KSsKKygweGU1Nis0MTEyLTB4MWU2NSkrV01TX1VESF9PQ1RFVFNfUE9SVDg7YnJlYWs7Y2FzZSBXTVNfVURIX1BPUlRfMTY6bGVuZ3RoPQorKDB4ZTNjKzg5NS0weDExYmEpKygweDhiZisxMzQwLTB4ZGZhKStXTVNfVURIX09DVEVUU19QT1JUMTY7YnJlYWs7Y2FzZSAKK1dNU19VREhfU01TQ19DT05UUk9MOmxlbmd0aD0oMHhhKzIzMTUtMHg5MTQpKygweDEwNzQrNDM4MC0weDIxOGYpK3VkaC0+dS5vdGhlci4KK2hlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSBXTVNfVURIX1NPVVJDRTpsZW5ndGg9KDB4MTE4KzY1MjgtMHgxYTk3KSsKKygweGFhZis0OTA3LTB4MWRkOSkrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7Y2FzZSBXTVNfVURIX1dDTVA6bGVuZ3RoPQorKDB4MTA1MCs4MzctMHgxMzk0KSsoMHhhY2ErNTYxMC0weDIwYjMpK3VkaC0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2JyZWFrO2Nhc2UgCiBXTVNfVURIX1RFWFRfRk9STUFUSU5HOmlmKCF1ZGgtPnUudGV4dF9mb3JtYXRpbmcuaXNfY29sb3JfcHJlc2VudCl7bGVuZ3RoPQotKDB4OThjKzg4NC0weGNmZikrKDB4NDVjKzQzODItMHgxNTc5KStXTVNfVURIX09DVEVUU19URVhUX0ZPUk1BVFRJTkc7fWVsc2V7Ci1sZW5ndGg9KDB4ZGJhKzE1NjEtMHgxM2QyKSsoMHg5Kzc0MTEtMHgxY2ZiKStXTVNfVURIX09DVEVUU19URVhUX0ZPUk1BVFRJTkcrCi0oMHhlMjQrMjQ3Mi0weDE3Y2IpO31icmVhaztjYXNlIFdNU19VREhfUFJFX0RFRl9TT1VORDpsZW5ndGg9KDB4MzQ3KzgyODgtMHgyM2E2KQotKygweDE3ZTArODI2LTB4MWIxOSkrV01TX1VESF9PQ1RFVFNfUFJFX0RFRjticmVhaztjYXNlIFdNU19VREhfVVNFUl9ERUZfU09VTkQ6Ci1sZW5ndGg9KDB4MTk3MisyMTktMHgxYTRjKSsoMHgxNDY0KzEzOC0weDE0ZWQpK3VkaC0+dS51c2VyX2RlZl9zb3VuZC5kYXRhX2xlbmd0aAotKygweDEyNjErMjAxNS0weDFhM2YpO2JyZWFrO2Nhc2UgV01TX1VESF9QUkVfREVGX0FOSU06bGVuZ3RoPSgweDY4OCs3NzcwLTB4MjRlMSkKLSsoMHhhYzErNjE5LTB4ZDJiKStXTVNfVURIX09DVEVUU19QUkVfREVGO2JyZWFrO2Nhc2UgV01TX1VESF9MQVJHRV9BTklNOmxlbmd0aD0KLSgweDE5ODcrMjQ0NS0weDIzMTMpKygweGU4NisyMTk2LTB4MTcxOSkrV01TX1VESF9MQVJHRV9CSVRNQVBfU0laRSoKLVdNU19VREhfQU5JTV9OVU1fQklUTUFQUysoMHg1OTgrNzY0OS0weDIzNzgpO2JyZWFrO2Nhc2UgV01TX1VESF9TTUFMTF9BTklNOgotbGVuZ3RoPSgweGNmNSszMTMxLTB4MTkyZikrKDB4MmMwKzU5MTktMHgxOWRlKStXTVNfVURIX1NNQUxMX0JJVE1BUF9TSVpFKgotV01TX1VESF9BTklNX05VTV9CSVRNQVBTKygweDFiMjcrMTYwMy0weDIxNjkpO2JyZWFrO2Nhc2UgV01TX1VESF9MQVJHRV9QSUNUVVJFOgotbGVuZ3RoPSgweDExNTcrNTMyNi0weDI2MjQpKygweDE3ODErMzAwMy0weDIzM2IpK1dNU19VREhfTEFSR0VfUElDX1NJWkUrCi0oMHg2MjArNTEyNy0weDFhMjYpO2JyZWFrO2Nhc2UgV01TX1VESF9TTUFMTF9QSUNUVVJFOmxlbmd0aD0oMHg2ZWQrMzA2MC0weDEyZTApKwotKDB4ODVhKzM1MjctMHgxNjIwKStXTVNfVURIX1NNQUxMX1BJQ19TSVpFKygweDExZTUrNDQ2Ni0weDIzNTYpO2JyZWFrO2Nhc2UgCi1XTVNfVURIX1ZBUl9QSUNUVVJFOmxlbmd0aD0oMHgyMTMxKzQ4My0weDIzMTMpKygweDEwMTkrOTkwLTB4MTNmNikrKFVJTlQ4KSh1ZGgtPgotdS52YXJfcGljdHVyZS5oZWlnaHQqdWRoLT51LnZhcl9waWN0dXJlLndpZHRoLygweDEzZis1NzIzLTB4MTc5MikpKwotKDB4ODgwKzY2NDYtMHgyMjczKTticmVhaztjYXNlIFdNU19VREhfUkZDODIyOmxlbmd0aD0oMHgyMTg0KzY3OS0weDI0MmEpKwotKDB4YmJhKzUzODMtMHgyMGMwKStXTVNfVURIX09DVEVUU19SRkM4MjI7YnJlYWs7Y2FzZSBXTVNfVURIX05BVF9MQU5HX1NTOmxlbmd0aD0KLSgweDE3ODcrMjA0OC0weDFmODYpKygweDY1NCs2MjYyLTB4MWVjOSkrV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1M7YnJlYWs7Y2FzZSAKLVdNU19VREhfTkFUX0xBTkdfTFM6bGVuZ3RoPSgweDc4ZCs2ODI4LTB4MjIzOCkrKDB4N2YxKzM4MDItMHgxNmNhKSsKLVdNU19VREhfT0NURVRTX05BVF9MQU5HX0xTO2JyZWFrO2Nhc2UgV01TX1VESF9VU0VSX1BST01QVDpsZW5ndGg9Ci0oMHgxYTMzKzEwOTItMHgxZTc2KSsoMHg3Y2IrODgzLTB4YjNkKStXTVNfVURIX09DVEVUU19VU0VSX1BST01QVDticmVhaztjYXNlIAotV01TX1VESF9FWFRFTkRFRF9PQkpFQ1Q6bGVuZ3RoPSgweDE0YmMrMjQ0OC0weDFlNGIpKygweDZiYyszNjI2LTB4MTRlNSkrdWRoLT51LgotZW8uY29udGVudC5sZW5ndGg7aWYodWRoLT51LmVvLmZpcnN0X3NlZ21lbnQ9PVRSVUUpe2xlbmd0aCs9Ci1XTVNfVURIX09DVEVUU19FT19IRUFERVI7fWJyZWFrO2RlZmF1bHQ6bGVuZ3RoPSgweDFkNzArMjQzNS0weDI2ZjIpKwotKDB4NWE1KzM2MDktMHgxM2JkKSt1ZGgtPnUub3RoZXIuaGVhZGVyX2xlbmd0aDticmVhazt9fXJldHVybiBsZW5ndGg7fXVpbnQzMiAKLXdtc190c19jb21wdXRlX3VzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKGNvbnN0IFVJTlQ4IG51bV9oZWFkZXJzLGNvbnN0IAotd21zX3VkaF9zX3R5cGUqaGVhZGVycyl7dWludDMyIGxlbmd0aD0oMHgxN2JjKzExNTItMHgxYzNjKTt1aW50MzIgaTtpZihoZWFkZXJzPT0KLU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKygweDI1MSs3OTA4LTB4MjEzNCkrKDB4MTY3OSsyODMtMHgxNzkzKStXTVNfVURIX09DVEVUU19URVhUX0ZPUk1BVFRJTkc7fWVsc2V7CitsZW5ndGg9KDB4ZDFjKzU4NTQtMHgyM2Y5KSsoMHgxMmU3KzUxMzQtMHgyNmY0KStXTVNfVURIX09DVEVUU19URVhUX0ZPUk1BVFRJTkcrCisoMHg1N2YrNzc3Ny0weDIzZGYpO31icmVhaztjYXNlIFdNU19VREhfUFJFX0RFRl9TT1VORDpsZW5ndGg9CisoMHgxYTg3KzE4OTQtMHgyMWVjKSsoMHgxMTUxKzE5NDAtMHgxOGU0KStXTVNfVURIX09DVEVUU19QUkVfREVGO2JyZWFrO2Nhc2UgCitXTVNfVURIX1VTRVJfREVGX1NPVU5EOmxlbmd0aD0oMHgyMGQ1KzI0MC0weDIxYzQpKygweDE4MjcrMTk3Mi0weDFmZGEpK3VkaC0+dS4KK3VzZXJfZGVmX3NvdW5kLmRhdGFfbGVuZ3RoKygweGQ3MCs2MzA5LTB4MjYxNCk7YnJlYWs7Y2FzZSBXTVNfVURIX1BSRV9ERUZfQU5JTToKK2xlbmd0aD0oMHgxOGQyKzEyMTMtMHgxZDhlKSsoMHgxYTlhKzEyNS0weDFiMTYpK1dNU19VREhfT0NURVRTX1BSRV9ERUY7YnJlYWs7CitjYXNlIFdNU19VREhfTEFSR0VfQU5JTTpsZW5ndGg9KDB4MTY3ZiszNS0weDE2YTEpKygweDMxOCs0NzEwLTB4MTU3ZCkrCitXTVNfVURIX0xBUkdFX0JJVE1BUF9TSVpFKldNU19VREhfQU5JTV9OVU1fQklUTUFQUysoMHhiMjArMTAwNC0weGYwYik7YnJlYWs7Y2FzZQorIFdNU19VREhfU01BTExfQU5JTTpsZW5ndGg9KDB4NzVkKzI2ODgtMHgxMWRjKSsoMHgzMmYrMzY2NC0weDExN2UpKworV01TX1VESF9TTUFMTF9CSVRNQVBfU0laRSpXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFMrKDB4NjcwKzIxNzgtMHhlZjEpO2JyZWFrO2Nhc2UKKyBXTVNfVURIX0xBUkdFX1BJQ1RVUkU6bGVuZ3RoPSgweDM1Nis2NDgtMHg1ZGQpKygweGRmNys0MTExLTB4MWUwNSkrCitXTVNfVURIX0xBUkdFX1BJQ19TSVpFKygweDc3Yis2MDQ0LTB4MWYxNik7YnJlYWs7Y2FzZSBXTVNfVURIX1NNQUxMX1BJQ1RVUkU6CitsZW5ndGg9KDB4ZWQ4KzM0MjEtMHgxYzM0KSsoMHhlMGIrMzI1My0weDFhYmYpK1dNU19VREhfU01BTExfUElDX1NJWkUrCisoMHg4MDUrNDk0MC0weDFiNTApO2JyZWFrO2Nhc2UgV01TX1VESF9WQVJfUElDVFVSRTpsZW5ndGg9KDB4NWYzKzI3NTItMHgxMGIyKSsKKygweDE1Nis1NTU3LTB4MTcwYSkrKFVJTlQ4KSh1ZGgtPnUudmFyX3BpY3R1cmUuaGVpZ2h0KnVkaC0+dS52YXJfcGljdHVyZS53aWR0aC8KKygweGUyNisxMjc2LTB4MTMxYSkpKygweGVjNCsyMTUwLTB4MTcyNyk7YnJlYWs7Y2FzZSBXTVNfVURIX1JGQzgyMjpsZW5ndGg9CisoMHgxNWY4KzU2LTB4MTYyZikrKDB4MzExKzUxMzMtMHgxNzFkKStXTVNfVURIX09DVEVUU19SRkM4MjI7YnJlYWs7Y2FzZSAKK1dNU19VREhfTkFUX0xBTkdfU1M6bGVuZ3RoPSgweDUwYis2ODIyLTB4MWZiMCkrKDB4OTk4KzYzMTUtMHgyMjQyKSsKK1dNU19VREhfT0NURVRTX05BVF9MQU5HX1NTO2JyZWFrO2Nhc2UgV01TX1VESF9OQVRfTEFOR19MUzpsZW5ndGg9CisoMHgxMWI4KzEwNTEtMHgxNWQyKSsoMHg3ZWQrNjEwNi0weDFmYzYpK1dNU19VREhfT0NURVRTX05BVF9MQU5HX0xTO2JyZWFrO2Nhc2UgCitXTVNfVURIX1VTRVJfUFJPTVBUOmxlbmd0aD0oMHhhNDIrNTM1LTB4YzU4KSsoMHgxNjg2KzM3NDMtMHgyNTI0KSsKK1dNU19VREhfT0NURVRTX1VTRVJfUFJPTVBUO2JyZWFrO2Nhc2UgV01TX1VESF9FWFRFTkRFRF9PQkpFQ1Q6bGVuZ3RoPQorKDB4NDE0KzgzMTgtMHgyNDkxKSsoMHg0NzkrMzY3Ni0weDEyZDQpK3VkaC0+dS5lby5jb250ZW50Lmxlbmd0aDtpZih1ZGgtPnUuZW8uCitmaXJzdF9zZWdtZW50PT1UUlVFKXtsZW5ndGgrPVdNU19VREhfT0NURVRTX0VPX0hFQURFUjt9YnJlYWs7ZGVmYXVsdDpsZW5ndGg9CisoMHgxMWM5KzI5OS0weDEyZjMpKygweGVjYSs1NjcxLTB4MjRmMCkrdWRoLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7YnJlYWs7fX0KK3JldHVybiBsZW5ndGg7fXVpbnQzMiB3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aChjb25zdCBVSU5UOCAKK251bV9oZWFkZXJzLGNvbnN0IHdtc191ZGhfc190eXBlKmhlYWRlcnMpe3VpbnQzMiBsZW5ndGg9KDB4MTVmYis3OTctMHgxOTE4KTsKK3VpbnQzMiBpO2lmKGhlYWRlcnM9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjNceDZmXHg2ZFx4NzBceDc1XHg3NFx4NjVceDVmXHg3NVx4NzNceDY1XHg3Mlx4NWZceDY0XHg2MVx4NzRceDYxXHg1Zlx4NjhceDY1XHg2MVx4NjRceDY1XHg3Mlx4NWZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIxIgotKTtyZXR1cm4oMHgyNDErOTMxMC0weDI2OWYpO31pZihudW1faGVhZGVycz4oMHgxNmEzKzgyNy0weDE5ZGUpKXtsZW5ndGgrPQotKDB4YzM1KzM1MDktMHgxOWU5KTtmb3IoaT0oMHhjMjIrMjI1My0weDE0ZWYpO2k8bnVtX2hlYWRlcnMmJmk8CispO3JldHVybigweDkwYSszODkxLTB4MTgzZCk7fWlmKG51bV9oZWFkZXJzPigweDU4OCszMzY4LTB4MTJiMCkpe2xlbmd0aCs9CisoMHg4NzUrNjY3OS0weDIyOGIpO2ZvcihpPSgweGNmMSsyMTQ0LTB4MTU1MSk7aTxudW1faGVhZGVycyYmaTwKIFdNU19NQVhfVURfSEVBREVSUztpKyspe2xlbmd0aCs9KHVpbnQzMil3bXNfdHNfZ2V0X3VkaF9sZW5ndGgoJmhlYWRlcnNbaV0pO319CiByZXR1cm4gbGVuZ3RoO311aW50MzIgd21zX3RzX2NvbXB1dGVfZ3dfdXNlcl9kYXRhX2xlbmd0aChjb25zdCB3bXNfZ3dfZGNzX3NfdHlwZQotKmRjcyxjb25zdCB3bXNfZ3dfdXNlcl9kYXRhX3NfdHlwZSp1c2VyX2RhdGEpe3VpbnQzMiBsZW5ndGg9KDB4Mjg0KzkwNzYtMHgyNWY4KTsKKypkY3MsY29uc3Qgd21zX2d3X3VzZXJfZGF0YV9zX3R5cGUqdXNlcl9kYXRhKXt1aW50MzIgbGVuZ3RoPSgweDIxOGIrOTc0LTB4MjU1OSk7CiBpZihkY3M9PU5VTEx8fHVzZXJfZGF0YT09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2M1x4NmZceDZkXHg3MFx4NzVceDc0XHg2NVx4NWZceDY3XHg3N1x4NWZceDc1XHg3M1x4NjVceDcyXHg1Zlx4NjRceDYxXHg3NFx4NjFceDVmXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMSIKLSk7cmV0dXJuKDB4MTQ1NSsxNDI5LTB4MTllYSk7fWxlbmd0aCs9d21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgoCispO3JldHVybigweDQwMys0NzgyLTB4MTZiMSk7fWxlbmd0aCs9d21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgoCiB1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+aGVhZGVycyk7aWYoZGNzLT5hbHBoYWJldD09Ci1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVCl7bGVuZ3RoKz0oKHVzZXJfZGF0YS0+c21fbGVuKigweDE2YzgrMTMtMHgxNmNlKSkrCi0oMHgxYWNiKzI3OTgtMHgyNWIyKSkvKDB4MjA3YysxMjUzLTB4MjU1OSk7fWVsc2V7bGVuZ3RoKz11c2VyX2RhdGEtPnNtX2xlbjt9Ci1yZXR1cm4gbGVuZ3RoO31zdGF0aWMgaW50IHdtc190c19lbmNvZGVfdWRoX2NvbmNhdF84KFVJTlQ4KnVkaCl7aW50IHBvcz0KLSgweDNiYSsxNjUxLTB4YTJkKTtpZihjb25zdF9oZWFkZXItPnUuY29uY2F0XzgudG90YWxfc209PSgweDExMmMrMzExNC0weDFkNTYpfHwKLWNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC5zZXFfbnVtPT0oMHg1OTArMzc2MS0weDE0NDEpfHxjb25zdF9oZWFkZXItPnUuY29uY2F0XzguCi1zZXFfbnVtPmNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC50b3RhbF9zbSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2xlbmd0aCs9KCh1c2VyX2RhdGEtPnNtX2xlbiooMHgyMTc4KzQ3LTB4MjFhMCkpKworKDB4NTdiKzIwMjctMHhkNWYpKS8oMHgxMmIxKzE3OC0weDEzNWIpO31lbHNle2xlbmd0aCs9dXNlcl9kYXRhLT5zbV9sZW47fXJldHVybiAKK2xlbmd0aDt9c3RhdGljIGludCB3bXNfdHNfZW5jb2RlX3VkaF9jb25jYXRfOChVSU5UOCp1ZGgpe2ludCBwb3M9CisoMHg4OTMrNDMwLTB4YTQxKTtpZihjb25zdF9oZWFkZXItPnUuY29uY2F0XzgudG90YWxfc209PSgweDgzNSszOTQ1LTB4MTc5ZSl8fAorY29uc3RfaGVhZGVyLT51LmNvbmNhdF84LnNlcV9udW09PSgweDFlNTgrMTgzOS0weDI1ODcpfHxjb25zdF9oZWFkZXItPnUuY29uY2F0XzgKKy5zZXFfbnVtPmNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC50b3RhbF9zbSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NjlceDY0XHgyMFx4MjVceDY0XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDZlXHg2Zlx4MjBceDQ0XHg2MVx4NzRceDYxIgotLGNvbnN0X2hlYWRlci0+aGVhZGVyX2lkKTtyZXR1cm4oMHgxODZkKzI1NDEtMHgyMjVhKTt9dWRoW3BvcysrXT0oVUlOVDgpCissY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpO3JldHVybigweDEzZTMrNjE2LTB4MTY0Yik7fXVkaFtwb3MrK109KFVJTlQ4KQogV01TX1VESF9DT05DQVRfODt1ZGhbcG9zKytdPShVSU5UOClXTVNfVURIX09DVEVUU19DT05DQVQ4O3VkaFtwb3MrK109CiBjb25zdF9oZWFkZXItPnUuY29uY2F0XzgubXNnX3JlZjt1ZGhbcG9zKytdPWNvbnN0X2hlYWRlci0+dS5jb25jYXRfOC50b3RhbF9zbTsKIHVkaFtwb3MrK109Y29uc3RfaGVhZGVyLT51LmNvbmNhdF84LnNlcV9udW07cmV0dXJuIHBvczt9c3RhdGljIGludCAKLXdtc190c19lbmNvZGVfdWRoX2NvbmNhdDE2KFVJTlQ4KnVkaCl7aW50IHBvcz0oMHhlMGMrNDcyLTB4ZmU0KTtpZihjb25zdF9oZWFkZXIKLS0+dS5jb25jYXRfMTYudG90YWxfc209PSgweDdmMSs2OTQyLTB4MjMwZil8fGNvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYuc2VxX251bT09Ci0oMHgzMjkrODE5Ni0weDIzMmQpfHxjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnNlcV9udW0+Y29uc3RfaGVhZGVyLT51LmNvbmNhdF8xNgotLnRvdGFsX3NtKXthdF9wcmludChMT0dfREVCVUcsCit3bXNfdHNfZW5jb2RlX3VkaF9jb25jYXQxNihVSU5UOCp1ZGgpe2ludCBwb3M9KDB4YTE3KzEwNTUtMHhlMzYpO2lmKGNvbnN0X2hlYWRlcgorLT51LmNvbmNhdF8xNi50b3RhbF9zbT09KDB4ODQyKzEyMjMtMHhkMDkpfHxjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnNlcV9udW09PQorKDB4NDI3Kzg2NC0weDc4Nyl8fGNvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYuc2VxX251bT5jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LgordG90YWxfc20pe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDY5XHg2NFx4MjBceDI1XHg2NFx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2ZVx4NmZceDIwXHg0NFx4NjFceDc0XHg2MSIKLSxjb25zdF9oZWFkZXItPmhlYWRlcl9pZCk7cmV0dXJuKDB4MWVjMCsxNjYwLTB4MjUzYyk7fXVkaFtwb3MrK109KFVJTlQ4KQorLGNvbnN0X2hlYWRlci0+aGVhZGVyX2lkKTtyZXR1cm4oMHg2ZGErNDY2OC0weDE5MTYpO311ZGhbcG9zKytdPShVSU5UOCkKIFdNU19VREhfQ09OQ0FUXzE2O3VkaFtwb3MrK109KFVJTlQ4KVdNU19VREhfT0NURVRTX0NPTkNBVDE2O3VkaFtwb3MrK109KFVJTlQ4KSgoCi1jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2Lm1zZ19yZWYmNjUyODApPj4oMHgxZTkrMTkxLTB4MmEwKSk7dWRoW3BvcysrXT0oVUlOVDgpKAotY29uc3RfaGVhZGVyLT51LmNvbmNhdF8xNi5tc2dfcmVmJigweDJhZCs2MDY1LTB4MTk1ZikpO3VkaFtwb3MrK109Y29uc3RfaGVhZGVyLT4KLXUuY29uY2F0XzE2LnRvdGFsX3NtO3VkaFtwb3MrK109Y29uc3RfaGVhZGVyLT51LmNvbmNhdF8xNi5zZXFfbnVtO3JldHVybiBwb3M7fQotaW50IHdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX3NzKFVJTlQ4KnVkaCl7aW50IHBvcz0oMHhiOWIrNjMzLTB4ZTE0KTt1ZGhbcG9zKysKLV09KFVJTlQ4KVdNU19VREhfTkFUX0xBTkdfU1M7dWRoW3BvcysrXT0oVUlOVDgpV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1M7dWRoWwotcG9zKytdPShVSU5UOCljb25zdF9oZWFkZXItPnUubmF0X2xhbmdfc3MubmF0X2xhbmdfaWQ7cmV0dXJuIHBvczt9aW50IAotd21zX3RzX2VuY29kZV91ZGhfbmF0X2xhbmdfbHMoVUlOVDgqdWRoKXtpbnQgcG9zPSgweDE4NTkrMTY2OC0weDFlZGQpO3VkaFtwb3MrK10KLT0oVUlOVDgpV01TX1VESF9OQVRfTEFOR19MUzt1ZGhbcG9zKytdPShVSU5UOClXTVNfVURIX09DVEVUU19OQVRfTEFOR19MUzt1ZGhbcG9zCi0rK109KFVJTlQ4KWNvbnN0X2hlYWRlci0+dS5uYXRfbGFuZ19scy5uYXRfbGFuZ19pZDtyZXR1cm4gcG9zO31pbnQgCi13bXNfdHNfZW5jb2RlX3VkaF9vdGhlcihVSU5UOCp1ZGgsd21zX3VkaF9pZF9lX3R5cGUgaGVhZGVyX2lkKXtpbnQgaT0KLSgweDE1MDErMjg4My0weDIwNDQpO2ludCBwb3M9KDB4MTdkOSszMTg1LTB4MjQ0YSk7dWRoW3BvcysrXT0oVUlOVDgpY29uc3RfaGVhZGVyCi0tPnUub3RoZXIuaGVhZGVyX2lkO3VkaFtwb3MrK109Y29uc3RfaGVhZGVyLT51Lm90aGVyLmhlYWRlcl9sZW5ndGg7Zm9yKGk9Ci0oMHg0NmQrNTA3LTB4NjY4KTtpPGNvbnN0X2hlYWRlci0+dS5vdGhlci5oZWFkZXJfbGVuZ3RoO2krKyl7dWRoW3BvcysrXT0KK2NvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYubXNnX3JlZiY2NTI4MCk+PigweDEzNmQrMzExMy0weDFmOGUpKTt1ZGhbcG9zKytdPSgKK1VJTlQ4KShjb25zdF9oZWFkZXItPnUuY29uY2F0XzE2Lm1zZ19yZWYmKDB4MTViNCsyMDUtMHgxNTgyKSk7dWRoW3BvcysrXT0KK2NvbnN0X2hlYWRlci0+dS5jb25jYXRfMTYudG90YWxfc207dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPnUuY29uY2F0XzE2LnNlcV9udW07CityZXR1cm4gcG9zO31pbnQgd21zX3RzX2VuY29kZV91ZGhfbmF0X2xhbmdfc3MoVUlOVDgqdWRoKXtpbnQgcG9zPQorKDB4NzUzKzIyNjgtMHgxMDJmKTt1ZGhbcG9zKytdPShVSU5UOClXTVNfVURIX05BVF9MQU5HX1NTO3VkaFtwb3MrK109KFVJTlQ4KQorV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1M7dWRoW3BvcysrXT0oVUlOVDgpY29uc3RfaGVhZGVyLT51Lm5hdF9sYW5nX3NzLgorbmF0X2xhbmdfaWQ7cmV0dXJuIHBvczt9aW50IHdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX2xzKFVJTlQ4KnVkaCl7aW50IHBvcz0KKygweGMwOCszOTA3LTB4MWI0Yik7dWRoW3BvcysrXT0oVUlOVDgpV01TX1VESF9OQVRfTEFOR19MUzt1ZGhbcG9zKytdPShVSU5UOCkKK1dNU19VREhfT0NURVRTX05BVF9MQU5HX0xTO3VkaFtwb3MrK109KFVJTlQ4KWNvbnN0X2hlYWRlci0+dS5uYXRfbGFuZ19scy4KK25hdF9sYW5nX2lkO3JldHVybiBwb3M7fWludCB3bXNfdHNfZW5jb2RlX3VkaF9vdGhlcihVSU5UOCp1ZGgsd21zX3VkaF9pZF9lX3R5cGUgCitoZWFkZXJfaWQpe2ludCBpPSgweGJhYSszMjItMHhjZWMpO2ludCBwb3M9KDB4MmEzKzgyNzgtMHgyMmY5KTt1ZGhbcG9zKytdPShVSU5UOAorKWNvbnN0X2hlYWRlci0+dS5vdGhlci5oZWFkZXJfaWQ7dWRoW3BvcysrXT1jb25zdF9oZWFkZXItPnUub3RoZXIuaGVhZGVyX2xlbmd0aDsKK2ZvcihpPSgweDcwZCs1NjQ4LTB4MWQxZCk7aTxjb25zdF9oZWFkZXItPnUub3RoZXIuaGVhZGVyX2xlbmd0aDtpKyspe3VkaFtwb3MrK109CiBjb25zdF9oZWFkZXItPnUub3RoZXIuZGF0YVtpXTt9cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2VuY29kZV91c2VyX2RhdGFfaGVhZGVyKAogVUlOVDggbnVtX2hlYWRlcnMsY29uc3Qgd21zX3VkaF9zX3R5cGUqaGVhZGVycyxVSU5UOCpkYXRhKXtpbnQgaSxwb3M9Ci0oMHg2NDUrNDU2Ni0weDE4MWIpO2lmKG51bV9oZWFkZXJzPT0oMHhjZjErNTc0OC0weDIzNjUpKXJldHVybigweGM4NSs2Ny0weGNjOCk7Ci0rK3Bvcztmb3IoaT0oMHgxZjFjKzE4ODUtMHgyNjc5KTtpPFdNU19NQVhfVURfSEVBREVSUyYmaTxudW1faGVhZGVycztpKyspewotY29uc3RfaGVhZGVyPSZoZWFkZXJzW2ldO3N3aXRjaChjb25zdF9oZWFkZXItPmhlYWRlcl9pZCl7Y2FzZSBXTVNfVURIX0NPTkNBVF84OgotcG9zKz13bXNfdHNfZW5jb2RlX3VkaF9jb25jYXRfOChkYXRhK3Bvcyk7YnJlYWs7Y2FzZSBXTVNfVURIX0NPTkNBVF8xNjpwb3MrPQotd21zX3RzX2VuY29kZV91ZGhfY29uY2F0MTYoZGF0YStwb3MpO2JyZWFrOwotI2lmICgweGRlNis0Mjc3LTB4MWU5YikNCisoMHgzZjUrMTE3NC0weDg4Yik7aWYobnVtX2hlYWRlcnM9PSgweDExMjQrMzY3My0weDFmN2QpKXJldHVybgorKDB4MTExMys1MjczLTB4MjVhYyk7Kytwb3M7Zm9yKGk9KDB4MTgzMiszNTAxLTB4MjVkZik7aTxXTVNfTUFYX1VEX0hFQURFUlMmJmk8CitudW1faGVhZGVycztpKyspe2NvbnN0X2hlYWRlcj0maGVhZGVyc1tpXTtzd2l0Y2goY29uc3RfaGVhZGVyLT5oZWFkZXJfaWQpe2Nhc2UgCitXTVNfVURIX0NPTkNBVF84OnBvcys9d21zX3RzX2VuY29kZV91ZGhfY29uY2F0XzgoZGF0YStwb3MpO2JyZWFrO2Nhc2UgCitXTVNfVURIX0NPTkNBVF8xNjpwb3MrPXdtc190c19lbmNvZGVfdWRoX2NvbmNhdDE2KGRhdGErcG9zKTticmVhazsKKyNpZiAoMHgyMTE5KzMxNy0weDIyNTYpDQogY2FzZSBXTVNfVURIX1NQRUNJQUxfU006cG9zKz13bXNfdHNfZW5jb2RlX3VkaF9zcGVjaWFsX3NtKGRhdGErcG9zKTticmVhaztjYXNlIAogV01TX1VESF9QT1JUXzg6cG9zKz13bXNfdHNfZW5jb2RlX3VkaF9wb3J0XzgoZGF0YStwb3MpO2JyZWFrO2Nhc2UgCiBXTVNfVURIX1BPUlRfMTY6cG9zKz13bXNfdHNfZW5jb2RlX3VkaF9wb3J0MTYoZGF0YStwb3MpO2JyZWFrO2Nhc2UgCkBAIC0xMzE1LDEwNCArMTMxMywxMDQgQEAKIGNhc2UgV01TX1VESF9OQVRfTEFOR19TUzpwb3MrPXdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX3NzKGRhdGErcG9zKTticmVhaztjYXNlCiAgV01TX1VESF9OQVRfTEFOR19MUzpwb3MrPXdtc190c19lbmNvZGVfdWRoX25hdF9sYW5nX2xzKGRhdGErcG9zKTticmVhaztkZWZhdWx0OgogcG9zKz13bXNfdHNfZW5jb2RlX3VkaF9vdGhlcihkYXRhK3Bvcyxjb25zdF9oZWFkZXItPmhlYWRlcl9pZCk7fX1kYXRhWwotKDB4MjFkKzM5MjUtMHgxMTcyKV09KFVJTlQ4KShwb3MtKDB4OWFjKzE2NTctMHgxMDI0KSk7cmV0dXJuKChVSU5UOCkocG9zLQotKDB4MTE1YiszMDE0LTB4MWQyMCkpKTt9VUlOVDggd21zX3RzX2VuY29kZV9nd191c2VyX2RhdGEoY29uc3Qgd21zX2d3X2Rjc19zX3R5cGUKKygweDQ5OCs3MjUtMHg3NmQpXT0oVUlOVDgpKHBvcy0oMHgzODMrNDk5OC0weDE3MDgpKTtyZXR1cm4oKFVJTlQ4KShwb3MtCisoMHgxNTU1KzEwMDYtMHgxOTQyKSkpO31VSU5UOCB3bXNfdHNfZW5jb2RlX2d3X3VzZXJfZGF0YShjb25zdCB3bXNfZ3dfZGNzX3NfdHlwZQogKmRjcyxjb25zdCB3bXNfZ3dfdXNlcl9kYXRhX3NfdHlwZSp1c2VyX2RhdGEsVUlOVDgqZGF0YSl7VUlOVDE2IGkscG9zPQotKDB4MzU5KzgxMTItMHgyMzA5KTtVSU5UOCBmaWxsX2JpdHM9KDB4MjNlMSs0MjEtMHgyNTg2KTtVSU5UMTYgCisoMHhmMzErMjk3OS0weDFhZDQpO1VJTlQ4IGZpbGxfYml0cz0oMHgzYmErMzM1Mi0weDEwZDIpO1VJTlQxNiAKIHRvdGFsX2JpdHNfb2NjdXBpZWQ7VUlOVDggdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg7VUlOVDE2IHVzZXJfZGF0YV9sZW5ndGg7ZGF0YVsKIHBvc109KFVJTlQ4KXVzZXJfZGF0YS0+c21fbGVuO3BvcysrO2lmKGRjcy0+YWxwaGFiZXQ9PQotV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKHVzZXJfZGF0YS0+bnVtX2hlYWRlcnM+KDB4MTcxMCsyMzUzLTB4MjA0MSkpewotaWYod21zX3RzX2NvbXB1dGVfdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgodXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPgorV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKHVzZXJfZGF0YS0+bnVtX2hlYWRlcnM+KDB4OTFjKzQ4MTctMHgxYmVkKSl7aWYKKyh3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCh1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+CiBoZWFkZXJzKTw9V01TX1NNU19VRExfTUFYXzhfQklUKXt1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD0KIHdtc190c19lbmNvZGVfdXNlcl9kYXRhX2hlYWRlcih1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+aGVhZGVycyxkYXRhKwotcG9zKTtwb3MrPXVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDI0ZmQrNDA2LTB4MjY5Mik7dG90YWxfYml0c19vY2N1cGllZD0oCi11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHgxY2Y3KzE0NzMtMHgyMmI3KSkqKDB4MTY5ZCszNjQ3LTB4MjRkNCk7ZmlsbF9iaXRzPSgKLXRvdGFsX2JpdHNfb2NjdXBpZWQlKDB4MTFmYisyMDIzLTB4MTlkYikpO2lmKGZpbGxfYml0cyE9KDB4NzNkKzc4NDUtMHgyNWUyKSl7Ci1maWxsX2JpdHM9KDB4OTI0Kzc0MS0weGMwMiktZmlsbF9iaXRzO311c2VyX2RhdGFfbGVuZ3RoPSh0b3RhbF9iaXRzX29jY3VwaWVkKwotZmlsbF9iaXRzKyh1c2VyX2RhdGEtPnNtX2xlbiooMHgxMDMzKzM0NzktMHgxZGMzKSkpLygweGZjZCszMTAtMHgxMGZjKTtkYXRhWwotKDB4MWNkKzY3MDgtMHgxYzAxKV09KFVJTlQ4KXVzZXJfZGF0YV9sZW5ndGg7ZGF0YVsoMHg2MTkrNTU5Mi0weDFiZjApXT0KK3Bvcyk7cG9zKz11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHgzMzArNjQwMi0weDFjMzEpO3RvdGFsX2JpdHNfb2NjdXBpZWQ9KAordXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4N2QzKzE3My0weDg3ZikpKigweDllYSs0MzA1LTB4MWFiMyk7ZmlsbF9iaXRzPSgKK3RvdGFsX2JpdHNfb2NjdXBpZWQlKDB4MWM0NCsyMzYwLTB4MjU3NSkpO2lmKGZpbGxfYml0cyE9KDB4MjNiOSszNDYtMHgyNTEzKSl7CitmaWxsX2JpdHM9KDB4OTRkKzI4MTktMHgxNDQ5KS1maWxsX2JpdHM7fXVzZXJfZGF0YV9sZW5ndGg9KHRvdGFsX2JpdHNfb2NjdXBpZWQrCitmaWxsX2JpdHMrKHVzZXJfZGF0YS0+c21fbGVuKigweDI0MjYrNTQ1LTB4MjY0MCkpKS8oMHgyMmVjKzE0My0weDIzNzQpO2RhdGFbCisoMHhmYmYrNTIyMy0weDI0MjYpXT0oVUlOVDgpdXNlcl9kYXRhX2xlbmd0aDtkYXRhWygweGU1KzU2NzgtMHgxNzEyKV09CiB1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aDt9ZWxzZXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHgyMFx4NTVceDczXHg2NVx4NzJceDIwXHg0NFx4NjFceDc0XHg2MVx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0NVx4NzhceDYzXHg2NVx4NjVceDY0XHg3M1x4MjBceDQzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4MjBceDJkXHgyMFx4NTNceDZiXHg2OVx4NzBceDcwXHg2OVx4NmVceDY3XHgyMFx4NTVceDQ0XHg0OCIKICk7fX1pPXdtc190c19wYWNrX2d3XzdfYml0X2NoYXJzKHVzZXJfZGF0YS0+c21fZGF0YSx1c2VyX2RhdGEtPnNtX2xlbixmaWxsX2JpdHMsCiAoVUlOVDE2KShXTVNfTUFYX0xFTi1wb3MpLCZkYXRhW3Bvc10pO3Bvcys9aTt9ZWxzZXtpZih1c2VyX2RhdGEtPm51bV9oZWFkZXJzPgotKDB4OWYzKzEyMzktMHhlY2EpKXtpZih3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCh1c2VyX2RhdGEtPgorKDB4NTU5KzExMjktMHg5YzIpKXtpZih3bXNfdHNfY29tcHV0ZV91c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCh1c2VyX2RhdGEtPgogbnVtX2hlYWRlcnMsdXNlcl9kYXRhLT5oZWFkZXJzKTw9V01TX1NNU19VRExfTUFYXzhfQklUKXt1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD0KIHdtc190c19lbmNvZGVfdXNlcl9kYXRhX2hlYWRlcih1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+aGVhZGVycyxkYXRhKwotcG9zKTtkYXRhWygweDI0MWYrNTMtMHgyNDU0KV09KFVJTlQ4KSh1c2VyX2RhdGEtPnNtX2xlbit1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsKLSgweDFiMzcrNzc2LTB4MWUzZSkpO3Bvcys9dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4NTgzKzE0MzUtMHhiMWQpO31lbHNlewotYXRfcHJpbnQoTE9HX0RFQlVHLAorcG9zKTtkYXRhWygweDE4MTMrMzMwOS0weDI1MDApXT0oVUlOVDgpKHVzZXJfZGF0YS0+c21fbGVuKwordXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4MmY4KzQwMTItMHgxMmEzKSk7cG9zKz11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsKKygweGFhNys0MzA0LTB4MWI3Nik7fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDVceDZlXHg2M1x4NmZceDY0XHg2NVx4MjBceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NDVceDc4XHg2M1x4NjVceDY1XHg2NFx4NzNceDIwXHg0M1x4NjFceDcwXHg2MVx4NjNceDY5XHg3NFx4NzlceDIwXHgyZFx4MjBceDUzXHg2Ylx4NjlceDcwXHg3MFx4NjlceDZlXHg2N1x4MjBceDU1XHg0NFx4NDgiCiApO319bWVtY3B5KCZkYXRhW3Bvc10sdXNlcl9kYXRhLT5zbV9kYXRhLHVzZXJfZGF0YS0+c21fbGVuKTtwb3MrPXVzZXJfZGF0YS0+CiBzbV9sZW47fXJldHVybihVSU5UOClwb3M7fXdtc19zdGF0dXNfZV90eXBlIHdtc190c19lbmNvZGVfZGVsaXZlcihjb25zdCAKIHdtc19nd19kZWxpdmVyX3NfdHlwZSpkZWxpdmVyLFRfelVmaVNtc19SYXdUc0RhdGEqcmF3X3RzX2RhdGFfcHRyKXsKLXdtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO1VJTlQ4KmRhdGE7VUlOVDggcG9zPSgweDJjOSs2NTgtMHg1NWIpLGk7aWYoCit3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUztVSU5UOCpkYXRhO1VJTlQ4IHBvcz0oMHg0NzgrNDQxNy0weDE1YjkpLGk7aWYoCiBkZWxpdmVyPT1OVUxMfHxyYXdfdHNfZGF0YV9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjVceDZlXHg2M1x4NmZceDY0XHg2NVx4NWZceDY0XHg2NVx4NmNceDY5XHg3Nlx4NjVceDcyXHgyMSIKICk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31kYXRhPXJhd190c19kYXRhX3B0ci0+ZGF0YTsodm9pZCltZW1zZXQoZGF0YSwKLSgweDE5MDYrMTE0NS0weDFkN2YpLFdNU19NQVhfTEVOKTtkYXRhW3Bvc109KDB4YjE4KzI3ODUtMHgxNWY5KTtkYXRhW3Bvc118PQotZGVsaXZlci0+bW9yZT8oMHgxODAxKzgzOC0weDFiNDcpOigweDEyOTUrNjQ5LTB4MTUxYSk7ZGF0YVtwb3NdfD1kZWxpdmVyLT4KLXN0YXR1c19yZXBvcnRfZW5hYmxlZD8oMHgxMTM1KzMwMDItMHgxY2NmKTooMHg2N2IrNjQ3Ni0weDFmYzcpO2RhdGFbcG9zXXw9Ci1kZWxpdmVyLT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ/KDB4MWY4KzMwNTAtMHhkYTIpOigweDFhNWMrMjI1Ny0weDIzMmQpO2RhdGFbCi1wb3NdfD1kZWxpdmVyLT5yZXBseV9wYXRoX3ByZXNlbnQ/KDB4MTY5MSsyMjA5LTB4MWViMik6KDB4MTU0Mis3NzQtMHgxODQ4KTtwb3MrKwotO2k9d21zX3RzX2VuY29kZV9hZGRyZXNzKCZkZWxpdmVyLT5hZGRyZXNzLCZkYXRhW3Bvc10pO2lmKGk9PQotKDB4MTM1MCsyODY4LTB4MWU4NCkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzt9cG9zKz1pO2RhdGFbcG9zXT1kZWxpdmVyLT4KLXBpZDtwb3MrKztwb3MrPXdtc190c19lbmNvZGVfZGNzKCZkZWxpdmVyLT5kY3MsZGF0YStwb3MpO2k9Ci13bXNfdHNfZW5jb2RlX3RpbWVzdGFtcCgmZGVsaXZlci0+dGltZXN0YW1wLGRhdGErcG9zKTtpZihpPT0oMHg3OTUrNDc2Ny0weDFhMzQpKQote3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtpZih3bXNfdHNfY29tcHV0ZV9nd191c2VyX2RhdGFfbGVuZ3RoKCYKLWRlbGl2ZXItPmRjcywmZGVsaXZlci0+dXNlcl9kYXRhKT5XTVNfU01TX1VETF9NQVhfOF9CSVQpe2F0X3ByaW50KExPR19ERUJVRywKKygweDE5MWErNTY5LTB4MWI1MyksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHgxNTcrNjY1Mi0weDFiNTMpO2RhdGFbcG9zXXw9CitkZWxpdmVyLT5tb3JlPygweGIwZis1MjE1LTB4MWY2ZSk6KDB4OWE3KzEzMjEtMHhlY2MpO2RhdGFbcG9zXXw9ZGVsaXZlci0+CitzdGF0dXNfcmVwb3J0X2VuYWJsZWQ/KDB4MWEyYSsyNzY1LTB4MjRkNyk6KDB4MWFlZisyNTQ4LTB4MjRlMyk7ZGF0YVtwb3NdfD0KK2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHgxZWVkKzgzLTB4MWYwMCk6KDB4MTA1MCsyNDA0LTB4MTliNCk7ZGF0YVsKK3Bvc118PWRlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD8oMHgxZDArNzk0NC0weDIwNTgpOigweDlkYys0NTc0LTB4MWJiYSk7cG9zKys7CitpPXdtc190c19lbmNvZGVfYWRkcmVzcygmZGVsaXZlci0+YWRkcmVzcywmZGF0YVtwb3NdKTtpZihpPT0oMHg4NDgrMjQ4NS0weDExZmQpKQore3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUzt9cG9zKz1pO2RhdGFbcG9zXT1kZWxpdmVyLT5waWQ7cG9zKys7cG9zKz0KK3dtc190c19lbmNvZGVfZGNzKCZkZWxpdmVyLT5kY3MsZGF0YStwb3MpO2k9d21zX3RzX2VuY29kZV90aW1lc3RhbXAoJmRlbGl2ZXItPgordGltZXN0YW1wLGRhdGErcG9zKTtpZihpPT0oMHg1NDUrODI2My0weDI1OGMpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO30KK3Bvcys9aTtpZih3bXNfdHNfY29tcHV0ZV9nd191c2VyX2RhdGFfbGVuZ3RoKCZkZWxpdmVyLT5kY3MsJmRlbGl2ZXItPnVzZXJfZGF0YSk+CitXTVNfU01TX1VETF9NQVhfOF9CSVQpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OSIKICk7c3Q9V01TX0lOVkFMSURfVVNFUl9EQVRBX1NJWkVfUzt9ZWxzZXtpPXdtc190c19lbmNvZGVfZ3dfdXNlcl9kYXRhKCZkZWxpdmVyLT4KIGRjcywmZGVsaXZlci0+dXNlcl9kYXRhLGRhdGErcG9zKTtwb3MrPWk7fXJhd190c19kYXRhX3B0ci0+dHBkdV90eXBlPQogV01TX1RQRFVfREVMSVZFUjtyYXdfdHNfZGF0YV9wdHItPmxlbj1wb3M7cmV0dXJuIHN0O31VSU5UOCAKIHdtc190c19lbmNvZGVfcmVsYXRpdmVfdGltZShjb25zdCB3bXNfdGltZXN0YW1wX3NfdHlwZSp0aW1lc3RhbXApe3VpbnQzMiBpO1VJTlQ4Ci0gdj0oMHgxMTk0KzUzNzktMHgyNjk3KSxqO2lmKHRpbWVzdGFtcCE9TlVMTCl7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+Cisgdj0oMHg2MTcrNDY0OS0weDE4NDApLGo7aWYodGltZXN0YW1wIT1OVUxMKXtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT4KIHllYXIsJmopKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1OVx4NjVceDYxXHg3Mlx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIsagotKTt9aT1qKigweGZlYys0MzI5LTB4MWY2OCk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bW9udGgsJmopKXthdF9wcmludCgKKyk7fWk9aiooMHgyOTErMzAwLTB4MjUwKTtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5tb250aCwmaikpe2F0X3ByaW50KAogTE9HX0RFQlVHLAogIlx4NGRceDZmXHg2ZVx4NzRceDY4XHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IgotLGopO31pPWkraiooMHhkNzErMzU3Ni0weDFiNGIpO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPmRheSwmaikpeworLGopO31pPWkraiooMHg4ZDErMTk4Ni0weDEwNzUpO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPmRheSwmaikpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDRceDYxXHg3OVx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIsaik7fWkKLSs9ajtpZihpPigweDFkMDQrMTIxMi0weDIxYTIpKXt2PShVSU5UOCkoKGkrKDB4ZTUrMjUyNi0weGFiZCkpLwotKDB4NDk5KzE4NTUtMHhiZDEpKygweGNkKzY2OTYtMHgxYTM1KSk7fWVsc2UgaWYoaT49KDB4MWMyKzQyNzctMHgxMjc2KSl7dj0oVUlOVDgKLSkoaSsoMHhmNTgrNDQ2OC0weDIwMjYpKTt9ZWxzZXtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5kYXksJmopKXsKKys9ajtpZihpPigweDVkKzk1MzgtMHgyNTgxKSl7dj0oVUlOVDgpKChpKygweDg1NSsyNzI1LTB4MTJmNCkpLworKDB4YTI3KzI2OTgtMHgxNGFhKSsoMHhmYzIrNTQ2OC0weDI0NWUpKTt9ZWxzZSBpZihpPj0oMHgxNTE2KzI1Ni0weDE2MTUpKXt2PSgKK1VJTlQ4KShpKygweDEzNzQrNTA1OS0weDI2OTEpKTt9ZWxzZXtpZighd21zX3RzX2JjZF90b19pbnQodGltZXN0YW1wLT5kYXksJmopKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDQ0XHg2MVx4NzlceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiLGopO31pCi09aiooMHg1OGQrMzU2NS0weDEzNjIpKigweGJhOSszNjMtMHhjZDgpO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPmhvdXIsJgotaikpe2F0X3ByaW50KExPR19ERUJVRywKKz1qKigweDEwMjUrNTgwNi0weDI2YmIpKigweDgzNys3NTkzLTB4MjVhNCk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+Citob3VyLCZqKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDhceDZmXHg3NVx4NzJceDIwXHg2OVx4NzNceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4M2FceDIwXHgyNVx4NjQiLGoKLSk7fWk9aStqKigweDk3MSszOTI3LTB4MTg4Yyk7aWYoIXdtc190c19iY2RfdG9faW50KHRpbWVzdGFtcC0+bWludXRlLCZqKSl7CispO31pPWkraiooMHgzOGErNDMxOC0weDE0MmMpO2lmKCF3bXNfdHNfYmNkX3RvX2ludCh0aW1lc3RhbXAtPm1pbnV0ZSwmaikpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGRceDY5XHg2ZVx4NzVceDc0XHg2NVx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIKLSxqKTt9aSs9ajtpZihpPigweDIxYTUrMTIyNy0weDI2NjQpKigweGFiYSszMTI1LTB4MTZiMykpe3Y9KFVJTlQ4KSgoaS0oKAotKDB4OTZjKzE5MTAtMHgxMGQ2KSooMHhlMjUrNTYxNi0weDIzZDkpKSsoMHgyNzIrNDkyLTB4NDQxKSkpLwotKDB4MTlkYSsyODQ2LTB4MjRkYSkrKDB4MTEzKzE5ODktMHg4NDkpKTt9ZWxzZXt2PShVSU5UOCkoKGkrKDB4NzYrNzgzMi0weDFmMGEpKS8KLSgweGE3OSszNjc3LTB4MThkMSktKDB4ODMwKzI4ODktMHgxMzc4KSk7fX19ZWxzZXthdF9wcmludChMT0dfREVCVUcsCissaik7fWkrPWo7aWYoaT4oMHgyMjhkKzQ0MC0weDI0MzkpKigweDc4ZCs3OTgzLTB4MjY4MCkpe3Y9KFVJTlQ4KSgoaS0oKAorKDB4M2E4KzQ3MTYtMHgxNjA4KSooMHhkMjYrMjY3Ni0weDE3NWUpKSsoMHhjOWQrMTE3OC0weDExMWEpKSkvCisoMHg1YWMrMzA4NC0weDExOWEpKygweDc3NysxMjA2LTB4YjllKSk7fWVsc2V7dj0oVUlOVDgpKChpKygweDExNGYrMjE0OS0weDE5YjApKQorLygweDlhMys2OTQ4LTB4MjRjMiktKDB4NzgrMzMzNS0weGQ3ZSkpO319fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzJceDY1XHg2Y1x4NjFceDc0XHg2OVx4NzZceDY1XHg1Zlx4NzRceDY5XHg2ZFx4NjUiCiApO31yZXR1cm4gdjt9VUlOVDggd21zX3RzX2VuY29kZV9nd192YWxpZGl0eShjb25zdCB3bXNfZ3dfdmFsaWRpdHlfc190eXBlKgotdmFsaWRpdHksVUlOVDgqZGF0YSl7VUlOVDggaSxwb3M9KDB4MTgzKzYwNDgtMHgxOTIzKTtzd2l0Y2godmFsaWRpdHktPmZvcm1hdCl7Cit2YWxpZGl0eSxVSU5UOCpkYXRhKXtVSU5UOCBpLHBvcz0oMHhlYjcrMTQxMS0weDE0M2EpO3N3aXRjaCh2YWxpZGl0eS0+Zm9ybWF0KXsKIGNhc2UgV01TX0dXX1ZBTElESVRZX05PTkU6YnJlYWs7Y2FzZSBXTVNfR1dfVkFMSURJVFlfUkVMQVRJVkU6ZGF0YVtwb3NdPQogd21zX3RzX2VuY29kZV9yZWxhdGl2ZV90aW1lKCZ2YWxpZGl0eS0+dS50aW1lKTtwb3MrKzticmVhaztjYXNlIAogV01TX0dXX1ZBTElESVRZX0FCU09MVVRFOmk9d21zX3RzX2VuY29kZV90aW1lc3RhbXAoJnZhbGlkaXR5LT51LnRpbWUsZGF0YStwb3MpOwotaWYoaT09KDB4OWE0KzE3MTMtMHgxMDU1KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAoraWYoaT09KDB4YTM0KzMyODQtMHgxNzA4KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDVceDcyXHg3Mlx4NmZceDcyXHgyMFx4NzdceDY4XHg2OVx4NmNceDY1XHgyMFx4NDRceDY1XHg2M1x4NmZceDY0XHg2OVx4NmVceDY3XHgyMFx4NDFceDYyXHg3M1x4NmZceDZjXHg3NVx4NzRceDY1XHgyMFx4NTZceDYxXHg2Y1x4NjlceDY0XHg2OVx4NzRceDc5XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MCIKICk7fXBvcys9aTticmVhaztjYXNlIFdNU19HV19WQUxJRElUWV9FTkhBTkNFRDpicmVhaztkZWZhdWx0OmJyZWFrO31yZXR1cm4gcG9zO30KIHdtc19zdGF0dXNfZV90eXBlIHdtc190c19lbmNvZGVfc3VibWl0KGNvbnN0IHdtc19nd19zdWJtaXRfc190eXBlKnN1Ym1pdCwKIFRfelVmaVNtc19SYXdUc0RhdGEqcmF3X3RzX2RhdGFfcHRyKXt3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUztVSU5UOCpkYXRhOwotVUlOVDggcG9zPSgweDE2YjIrMjM0My0weDFmZDkpLGk7aWYoc3VibWl0PT1OVUxMfHxyYXdfdHNfZGF0YV9wdHI9PU5VTEwpeworVUlOVDggcG9zPSgweDEzYjIrMTg5My0weDFiMTcpLGk7aWYoc3VibWl0PT1OVUxMfHxyYXdfdHNfZGF0YV9wdHI9PU5VTEwpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzNceDc1XHg2Mlx4NmRceDY5XHg3NFx4MjEiCiApO3JldHVybiBXTVNfTlVMTF9QVFJfUzt9ZGF0YT1yYXdfdHNfZGF0YV9wdHItPmRhdGE7KHZvaWQpbWVtc2V0KGRhdGEsCi0oMHg5OTQrNzA3Ny0weDI1MzkpLFdNU19NQVhfTEVOKTtkYXRhW3Bvc109KDB4NWJjKzc0MzAtMHgyMmMxKTtkYXRhW3Bvc118PXN1Ym1pdAotLT5yZWplY3RfZHVwbGljYXRlcz8oMHgxNzQrNTIwNS0weDE1YzUpOigweDE3NDErMjkzNi0weDIyYjkpO2lmKHN1Ym1pdC0+dmFsaWRpdHkKLS5mb3JtYXQ+KDB4MThjMis1NTgtMHgxYWVkKSl7cmV0dXJuIHN0PVdNU19JTlZBTElEX1ZBTElESVRZX0ZPUk1BVF9TO31kYXRhW3Bvc10KLXw9c3VibWl0LT52YWxpZGl0eS5mb3JtYXQ8PCgweDZkKzMzNDUtMHhkN2IpO2RhdGFbcG9zXXw9c3VibWl0LT4KLXN0YXR1c19yZXBvcnRfZW5hYmxlZD8oMHg1YzErNjg2LTB4ODRmKTooMHgxNDlmKzU5My0weDE2ZjApO2RhdGFbcG9zXXw9c3VibWl0LT4KLXVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHg5NTkrMjY2Ny0weDEzODQpOigweDEzYjcrNDI1My0weDI0NTQpO2RhdGFbcG9zXXw9Ci1zdWJtaXQtPnJlcGx5X3BhdGhfcHJlc2VudD8oMHhjMDQrNzc0LTB4ZThhKTooMHhlZGErNDM0OS0weDFmZDcpO3BvcysrO2RhdGFbcG9zXQotPShVSU5UOClzdWJtaXQtPm1lc3NhZ2VfcmVmZXJlbmNlO3BvcysrO2k9d21zX3RzX2VuY29kZV9hZGRyZXNzKCZzdWJtaXQtPmFkZHJlc3MKLSwmZGF0YVtwb3NdKTtpZihpPT0oMHgxYmE0KzkwOS0weDFmMzEpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9TSVpFX1M7fXBvcys9aTsKKygweDY2Nis2MjI1LTB4MWViNyksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHhkMjkrMTgzOC0weDE0NTYpO2RhdGFbcG9zXXw9c3VibWl0CistPnJlamVjdF9kdXBsaWNhdGVzPygweDE3MzgrMzEwMi0weDIzNTIpOigweDJlMCs4Mjg0LTB4MjMzYyk7aWYoc3VibWl0LT52YWxpZGl0eQorLmZvcm1hdD4oMHgzYzUrODM1NC0weDI0NjQpKXtyZXR1cm4gc3Q9V01TX0lOVkFMSURfVkFMSURJVFlfRk9STUFUX1M7fWRhdGFbcG9zXQorfD1zdWJtaXQtPnZhbGlkaXR5LmZvcm1hdDw8KDB4MzVmKzY2NjYtMHgxZDY2KTtkYXRhW3Bvc118PXN1Ym1pdC0+CitzdGF0dXNfcmVwb3J0X2VuYWJsZWQ/KDB4NzcxKzUwNTYtMHgxYjExKTooMHgxZjYrNDg1My0weDE0ZWIpO2RhdGFbcG9zXXw9c3VibWl0CistPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHgzYjErMzE2My0weGZjYyk6KDB4YzRmKzIxODYtMHgxNGQ5KTtkYXRhW3Bvc118PQorc3VibWl0LT5yZXBseV9wYXRoX3ByZXNlbnQ/KDB4MjBmYSs4NTktMHgyM2Q1KTooMHg3OTkrMjAtMHg3YWQpO3BvcysrO2RhdGFbcG9zXT0KKyhVSU5UOClzdWJtaXQtPm1lc3NhZ2VfcmVmZXJlbmNlO3BvcysrO2k9d21zX3RzX2VuY29kZV9hZGRyZXNzKCZzdWJtaXQtPmFkZHJlc3MsCismZGF0YVtwb3NdKTtpZihpPT0oMHgxYTY3KzIxNzctMHgyMmU4KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7CiBkYXRhW3Bvc109c3VibWl0LT5waWQ7cG9zKys7cG9zKz13bXNfdHNfZW5jb2RlX2Rjcygmc3VibWl0LT5kY3MsZGF0YStwb3MpO3Bvcys9CiB3bXNfdHNfZW5jb2RlX2d3X3ZhbGlkaXR5KCZzdWJtaXQtPnZhbGlkaXR5LGRhdGErcG9zKTtpZigKIHdtc190c19jb21wdXRlX2d3X3VzZXJfZGF0YV9sZW5ndGgoJnN1Ym1pdC0+ZGNzLCZzdWJtaXQtPnVzZXJfZGF0YSk+CkBAIC0xNDIzLDIxICsxNDIxLDIxIEBACiBXTVNfVFBEVV9TVUJNSVQ7cmF3X3RzX2RhdGFfcHRyLT5sZW49cG9zO3JldHVybiBzdDt9d21zX3N0YXR1c19lX3R5cGUgCiB3bXNfdHNfZW5jb2RlX3N0YXR1c19yZXBvcnQoY29uc3Qgd21zX2d3X3N0YXR1c19yZXBvcnRfc190eXBlKnN0YXR1c19yZXBvcnQsCiBUX3pVZmlTbXNfUmF3VHNEYXRhKnJhd190c19kYXRhX3B0cil7d21zX3N0YXR1c19lX3R5cGUgc3Q9V01TX09LX1M7VUlOVDgqZGF0YTsKLVVJTlQ4IHBvcz0oMHhhM2QrMjA5OC0weDEyNmYpLGk7aWYoc3RhdHVzX3JlcG9ydD09TlVMTHx8cmF3X3RzX2RhdGFfcHRyPT1OVUxMKXsKK1VJTlQ4IHBvcz0oMHg3MDkrNzEzNy0weDIyZWEpLGk7aWYoc3RhdHVzX3JlcG9ydD09TlVMTHx8cmF3X3RzX2RhdGFfcHRyPT1OVUxMKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjVceDZlXHg2M1x4NmZceDY0XHg2NVx4NWZceDczXHg3NFx4NjFceDc0XHg3NVx4NzNceDVmXHg3Mlx4NjVceDcwXHg2Zlx4NzJceDc0XHgyMSIKICk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31kYXRhPXJhd190c19kYXRhX3B0ci0+ZGF0YTsodm9pZCltZW1zZXQoZGF0YSwKLSgweGEyYys2MTE4LTB4MjIxMiksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHhiNjIrMzE5OS0weDE3ZDEpO2RhdGFbcG9zXXw9Ci1zdGF0dXNfcmVwb3J0LT5tb3JlPygweDEyODYrMjA4NC0weDFhYWEpOigweDRiYSsyOTg5LTB4MTA2Myk7ZGF0YVtwb3NdfD0KLXN0YXR1c19yZXBvcnQtPnN0YXR1c19yZXBvcnRfcXVhbGlmaWVyPygweDY4MysxNDMtMHg2ZjIpOigweDE0ZTkrMzAyMS0weDIwYjYpOwotZGF0YVtwb3NdfD1zdGF0dXNfcmVwb3J0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ/KDB4ZWExKzE3ODAtMHgxNTU1KToKLSgweDE5MjArMjU5LTB4MWEyMyk7cG9zKys7ZGF0YVtwb3NdPShVSU5UOClzdGF0dXNfcmVwb3J0LT5tZXNzYWdlX3JlZmVyZW5jZTtwb3MKKygweGE3NCszNDM2LTB4MTdlMCksV01TX01BWF9MRU4pO2RhdGFbcG9zXT0oMHg0ZmQrMTE1My0weDk2ZSk7ZGF0YVtwb3NdfD0KK3N0YXR1c19yZXBvcnQtPm1vcmU/KDB4MWY2KzI4My0weDMxMSk6KDB4MzA5KzIwMTUtMHhhZTQpO2RhdGFbcG9zXXw9CitzdGF0dXNfcmVwb3J0LT5zdGF0dXNfcmVwb3J0X3F1YWxpZmllcj8oMHg2ZTErNDQ4Mi0weDE4NDMpOigweDIzNiszNzgzLTB4MTBmZCk7CitkYXRhW3Bvc118PXN0YXR1c19yZXBvcnQtPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD8oMHgzNDQrODc1NS0weDI1MzcpOgorKDB4ZjA5KzI3NTItMHgxOWM5KTtwb3MrKztkYXRhW3Bvc109KFVJTlQ4KXN0YXR1c19yZXBvcnQtPm1lc3NhZ2VfcmVmZXJlbmNlO3BvcwogKys7aT13bXNfdHNfZW5jb2RlX2FkZHJlc3MoJnN0YXR1c19yZXBvcnQtPmFkZHJlc3MsJmRhdGFbcG9zXSk7aWYoaT09Ci0oMHgxYmJmKzU0MS0weDFkZGMpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9TSVpFX1M7fXBvcys9aTtpPQorKDB4YTNhKzIxMDQtMHgxMjcyKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7aT0KIHdtc190c19lbmNvZGVfdGltZXN0YW1wKCZzdGF0dXNfcmVwb3J0LT50aW1lc3RhbXAsZGF0YStwb3MpO2lmKGk9PQotKDB4MTlkYysyOTU0LTB4MjU2Nikpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtpPQorKDB4ZGM5KzYyNDktMHgyNjMyKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2k9CiB3bXNfdHNfZW5jb2RlX3RpbWVzdGFtcCgmc3RhdHVzX3JlcG9ydC0+ZGlzY2hhcmdlX3RpbWUsZGF0YStwb3MpO2lmKGk9PQotKDB4MTJhMCs0Nzc3LTB4MjU0OSkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtkYXRhW3Bvc109CisoMHhhMGQrODA5LTB4ZDM2KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2RhdGFbcG9zXT0KIHN0YXR1c19yZXBvcnQtPnRwX3N0YXR1cztwb3MrKztkYXRhW3Bvc109KFVJTlQ4KXN0YXR1c19yZXBvcnQtPm1hc2s7cG9zKys7aWYoCiBzdGF0dXNfcmVwb3J0LT5tYXNrJldNU19UUERVX01BU0tfUElEKXtkYXRhW3Bvc109c3RhdHVzX3JlcG9ydC0+cGlkO3BvcysrO31pZigKIHN0YXR1c19yZXBvcnQtPm1hc2smV01TX1RQRFVfTUFTS19EQ1Mpe3Bvcys9d21zX3RzX2VuY29kZV9kY3MoJnN0YXR1c19yZXBvcnQtPgpAQCAtMTQ1Miw3ICsxNDUwLDcgQEAKIFRfelVmaVNtc19SYXdUc0RhdGEqcHRSYXdUc0RhdGEpe3dtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO2NvbnN0IAogd21zX2d3X3BwX3RzX2RhdGFfc190eXBlKm1zZztpZihwdENsaWVudFRzRGF0YT09TlVMTHx8cHRSYXdUc0RhdGE9PU5VTEwpe3JldHVybiAKIFdNU19OVUxMX1BUUl9TO31tc2c9JnB0Q2xpZW50VHNEYXRhLT51Lmd3X3BwO3N3aXRjaChwdENsaWVudFRzRGF0YS0+Zm9ybWF0KXsKLSNpZiAoMHgyODArNjU1NS0weDFjMWIpDQorI2lmICgweGExKzk1MDMtMHgyNWMwKQ0KIGNhc2UgV01TX0ZPUk1BVF9DRE1BOmNhc2UgV01TX0ZPUk1BVF9BTkFMT0dfQVdJU01TOmNhc2UgV01TX0ZPUk1BVF9BTkFMT0dfQ0xJOgogY2FzZSBXTVNfRk9STUFUX0FOQUxPR19WT0lDRV9NQUlMOmNhc2UgV01TX0ZPUk1BVF9BTkFMT0dfU01TOmNhc2UgV01TX0ZPUk1BVF9NV0kKIDpzdD13bXNfdHNfZW5jb2RlX2JlYXJlcl9kYXRhKCZwdENsaWVudFRzRGF0YS0+dS5jZG1hLHB0UmF3VHNEYXRhKTticmVhazsKQEAgLTE0NjIsNyArMTQ2MCw3IEBACiBwdFJhd1RzRGF0YSk7YnJlYWs7Y2FzZSBXTVNfVFBEVV9TVUJNSVQ6c3Q9d21zX3RzX2VuY29kZV9zdWJtaXQoJm1zZy0+dS5zdWJtaXQsCiBwdFJhd1RzRGF0YSk7YnJlYWs7Y2FzZSBXTVNfVFBEVV9TVEFUVVNfUkVQT1JUOnN0PXdtc190c19lbmNvZGVfc3RhdHVzX3JlcG9ydCgmCiBtc2ctPnUuc3RhdHVzX3JlcG9ydCxwdFJhd1RzRGF0YSk7YnJlYWs7Ci0jaWYgKDB4MTQ3YiszNzEwLTB4MjJmOSkNCisjaWYgKDB4ODgwKzM5MjctMHgxN2Q3KQ0KIGNhc2UgV01TX1RQRFVfU1VCTUlUX1JFUE9SVF9BQ0s6c3Q9d21zX3RzX2VuY29kZV9zdWJtaXRfcmVwb3J0X2FjaygmbXNnLT51Lgogc3VibWl0X3JlcG9ydF9hY2sscHRSYXdUc0RhdGEpO2JyZWFrO2Nhc2UgV01TX1RQRFVfU1VCTUlUX1JFUE9SVF9FUlJPUjpzdD0KIHdtc190c19lbmNvZGVfc3VibWl0X3JlcG9ydF9lcnJvcigmbXNnLT51LnN1Ym1pdF9yZXBvcnRfZXJyb3IscHRSYXdUc0RhdGEpO2JyZWFrCkBAIC0xNDc5LDM2MyArMTQ3NywzNjMgQEAKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjZceDZmXHg3Mlx4NmRceDYxXHg3NFx4M2FceDIwXHgyNVx4NjQiLAogcHRDbGllbnRUc0RhdGEtPmZvcm1hdCk7YnJlYWs7fXB0UmF3VHNEYXRhLT5mb3JtYXQ9cHRDbGllbnRUc0RhdGEtPmZvcm1hdDtyZXR1cm4KICBzdDt9VUlOVDggd21zX3RzX3VucGFja19nd183X2JpdF9jaGFycyhjb25zdCBVSU5UOCppbixVSU5UOCBpbl9sZW4sVUlOVDggCi1vdXRfbGVuX21heCxVSU5UMTYgc2hpZnQsVUlOVDgqb3V0KXtpbnQgaT0oMHgxNzZjKzM5OTYtMHgyNzA4KTtVSU5UMTYgcG9zPQotKDB4YTY2KzQ1MC0weGMyOCk7aWYoaW49PU5VTEx8fG91dD09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorb3V0X2xlbl9tYXgsVUlOVDE2IHNoaWZ0LFVJTlQ4Km91dCl7aW50IGk9KDB4MWU0Mys2MjUtMHgyMGI0KTtVSU5UMTYgcG9zPQorKDB4NGU0KzMyNDMtMHgxMThmKTtpZihpbj09TlVMTHx8b3V0PT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDc1XHg2ZVx4NzBceDYxXHg2M1x4NmJceDVmXHg2N1x4NzdceDVmXHgzN1x4NWZceDYyXHg2OVx4NzRceDVmXHg2M1x4NjhceDYxXHg3Mlx4NzMiCi0pO3JldHVybigweGMyZCsyNTU5LTB4MTYyYyk7fWlmKHNoaWZ0IT0oMHhlNjkrNjIzNC0weDI2YzMpKXBvcz1wb3MrCi0oMHgxMWQ5KzQ2MjYtMHgyM2VhKTtpZihzaGlmdD09KDB4ZGY0KzE5NjktMHgxNTllKSl7b3V0WygweGY0NyszNDU5LTB4MWNjYSldPWluWwotKDB4OWIrNDY5Ni0weDEyZjMpXT4+KDB4NTdiKzE4MTAtMHhjOGMpO3NoaWZ0PSgweDE3ZDcrNDcxLTB4MTlhZSk7aT0KLSgweDE0ZTUrMzU0OC0weDIyYzApO31mb3IoaT1pO2k8b3V0X2xlbl9tYXgmJmk8aW5fbGVuO2krKyxwb3MrKyl7b3V0W2ldPShpbltwb3NdCi08PHNoaWZ0KSYoMHgyMTE5KzEwODEtMHgyNGQzKTtpZihwb3MhPSgweGUxNis0OTY4LTB4MjE3ZSkpewotI2lmICgweDQ3Zis3NDQ5LTB4MjE5NykgICAgICAgCi1pZihzaGlmdD09KDB4MTlhYSsxNTItMHgxYTQyKSl7b3V0W2ldfD0oMHhiYzMrNTE1Mi0weDFmZTMpO31lbHNle291dFtpXXw9aW5bcG9zLQotKDB4ZGIrNTI2NC0weDE1NmEpXT4+KCgweDE4NjUrNzctMHgxOGFhKS1zaGlmdCk7fQorKTtyZXR1cm4oMHgxMWErMzU2Ny0weGYwOSk7fWlmKHNoaWZ0IT0oMHg1MTArODYzOS0weDI2Y2YpKXBvcz1wb3MrCisoMHgxNjI3KzE1MC0weDE2YmMpO2lmKHNoaWZ0PT0oMHhiMmIrNzAwLTB4ZGUwKSl7b3V0WygweDRhZCsyNjEwLTB4ZWRmKV09aW5bCisoMHg4YjkrNTg4My0weDFmYjQpXT4+KDB4NThjKzgwNDMtMHgyNGY2KTtzaGlmdD0oMHgxODY2KzI0ODYtMHgyMjFjKTtpPQorKDB4MTNjMSszNTE3LTB4MjE3ZCk7fWZvcihpPWk7aTxvdXRfbGVuX21heCYmaTxpbl9sZW47aSsrLHBvcysrKXtvdXRbaV09KGluW3Bvc10KKzw8c2hpZnQpJigweDEwYSszMzk0LTB4ZGNkKTtpZihwb3MhPSgweGMrNzUxMy0weDFkNjUpKXsKKyNpZiAoMHhiYTIrNTI4Ni0weDIwNDcpICAgICAgIAoraWYoc2hpZnQ9PSgweDFhOTgrODM3LTB4MWRkZCkpe291dFtpXXw9KDB4OTRkKzM1MTktMHgxNzBjKTt9ZWxzZXtvdXRbaV18PWluW3Bvcy0KKygweDE4OTIrMTE4OC0weDFkMzUpXT4+KCgweDExOCsyMDY1LTB4OTIxKS1zaGlmdCk7fQogI2Vsc2UNCi1vdXRbaV18PWluW3Bvcy0oMHgyNGM0KzQ0My0weDI2N2UpXT4+KCgweDc0Yis3NzEwLTB4MjU2MSktc2hpZnQpOworb3V0W2ldfD1pbltwb3MtKDB4OTkxKzE2MDUtMHhmZDUpXT4+KCgweGRiZisyMTc0LTB4MTYzNSktc2hpZnQpOwogI2VuZGlmDQotfXNoaWZ0Kys7aWYoc2hpZnQ9PSgweDVmOSsyMzg4LTB4ZjQ2KSl7c2hpZnQ9KDB4MjkrOTUxOS0weDI1NTgpO2krKztpZihpPj0KK31zaGlmdCsrO2lmKHNoaWZ0PT0oMHgxZjBhKzk2NC0weDIyYzcpKXtzaGlmdD0oMHgxMTErNDExLTB4MmFjKTtpKys7aWYoaT49CiBvdXRfbGVuX21heCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NGVceDZmXHg3NFx4MjBceDY1XHg2ZVx4NmZceDc1XHg2N1x4NjhceDIwXHg2Zlx4NzVceDc0XHg3MFx4NzVceDc0XHgyMFx4NjJceDc1XHg2Nlx4NjZceDY1XHg3Mlx4MjBceDY2XHg2Zlx4NzJceDIwXHg3NVx4NmVceDcwXHg2MVx4NjNceDZiXHg2OVx4NmVceDY3XHgyMSIKLSk7YnJlYWs7fW91dFtpXT1pbltwb3NdPj4oMHg3ZDMrNDI5OS0weDE4OWQpO319cmV0dXJuKFVJTlQ4KShwb3MpO31VSU5UOCAKKyk7YnJlYWs7fW91dFtpXT1pbltwb3NdPj4oMHg1Y2ErNjM3OC0weDFlYjMpO319cmV0dXJuKFVJTlQ4KShwb3MpO31VSU5UOCAKIHdtc190c19kZWNvZGVfYWRkcmVzcyhjb25zdCBVSU5UOCpkYXRhLHdtc19hZGRyZXNzX3NfdHlwZSphZGRyKXtVSU5UOCBpLHBvcz0KLSgweDVkYysyODgyLTB4MTExZSk7aT1kYXRhW3Bvc107aWYoaT5XTVNfR1dfQUREUkVTU19NQVgpe2F0X3ByaW50KExPR19ERUJVRywKKygweGQ0OSs1NDk3LTB4MjJjMik7aT1kYXRhW3Bvc107aWYoaT5XTVNfR1dfQUREUkVTU19NQVgpe2F0X3ByaW50KExPR19ERUJVRywKICJceDQxXHg2NFx4NjRceDcyXHgyMFx4NmNceDY1XHg2ZVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDIwXHgyNVx4NjQiCi0saSk7cmV0dXJuKDB4OTViKzMyMjUtMHgxNWY0KTt9YWRkci0+bnVtYmVyX29mX2RpZ2l0cz1pO3BvcysrO2FkZHItPmRpZ2l0X21vZGU9CissaSk7cmV0dXJuKDB4MWZjZCs4MzEtMHgyMzBjKTt9YWRkci0+bnVtYmVyX29mX2RpZ2l0cz1pO3BvcysrO2FkZHItPmRpZ2l0X21vZGU9CiBXTVNfRElHSVRfTU9ERV80X0JJVDthZGRyLT5udW1iZXJfdHlwZT0od21zX251bWJlcl90eXBlX2VfdHlwZSkoKGRhdGFbcG9zXSYKLSgweDhiYysxOTYtMHg5MTApKT4+KDB4MTk5YisyMTAxLTB4MjFjYykpO2FkZHItPm51bWJlcl9wbGFuPSgKLXdtc19udW1iZXJfcGxhbl9lX3R5cGUpKGRhdGFbcG9zXSYoMHg2ZDMrNTQxOC0weDFiZWUpKTtwb3MrKztpZihhZGRyLT4KLW51bWJlcl90eXBlPT1XTVNfTlVNQkVSX0FMUEhBTlVNRVJJQyl7VUlOVDggYnl0ZXNfaW5jcmVtZW50PSgweDQ1Zis2NDUwLTB4MWQ5MSk7CisoMHg0ZTErODIyMi0weDI0OGYpKT4+KDB4ZDM1KzM3ODctMHgxYmZjKSk7YWRkci0+bnVtYmVyX3BsYW49KAord21zX251bWJlcl9wbGFuX2VfdHlwZSkoZGF0YVtwb3NdJigweDFhZjYrMTEyMC0weDFmNDcpKTtwb3MrKztpZihhZGRyLT4KK251bWJlcl90eXBlPT1XTVNfTlVNQkVSX0FMUEhBTlVNRVJJQyl7VUlOVDggYnl0ZXNfaW5jcmVtZW50PSgweGM0OSs2Mjk4LTB4MjRlMyk7CiBhZGRyLT5kaWdpdF9tb2RlPVdNU19ESUdJVF9NT0RFXzhfQklUO2J5dGVzX2luY3JlbWVudD0oYWRkci0+bnVtYmVyX29mX2RpZ2l0cysKLSgweGIyNCs2MDgzLTB4MjJlNikpLygweGJmOSsyNjEtMHhjZmMpO2FkZHItPm51bWJlcl9vZl9kaWdpdHM9KFVJTlQ4KShhZGRyLT4KLW51bWJlcl9vZl9kaWdpdHMqKDB4MTBlNis4ODEtMHgxNDUzKS8oMHg5ZjcrMjYwNS0weDE0MWQpKTsodm9pZCkKKygweDZhOCs0MzE2LTB4MTc4MykpLygweGZiMisyNi0weGZjYSk7YWRkci0+bnVtYmVyX29mX2RpZ2l0cz0oVUlOVDgpKGFkZHItPgorbnVtYmVyX29mX2RpZ2l0cyooMHgxMjVkKzMzMzgtMHgxZjYzKS8oMHhjOWYrNTM5MC0weDIxYTYpKTsodm9pZCkKIHdtc190c191bnBhY2tfZ3dfN19iaXRfY2hhcnMoJmRhdGFbcG9zXSxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzLAotV01TX0dXX0FERFJFU1NfTUFYLCgweDE4Nys1MTI1LTB4MTU4YyksYWRkci0+ZGlnaXRzKTtwb3MrPWJ5dGVzX2luY3JlbWVudDt9ZWxzZXsKLWZvcihpPSgweGU5MCsyNTM4LTB4MTg3YSk7aTxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7YWRkci0+ZGlnaXRzW2krK109ZGF0YVsKLXBvc10mKDB4MWZkKzc4NTctMHgyMDlmKTthZGRyLT5kaWdpdHNbaV09KGRhdGFbcG9zXSYoMHg0YzQrMzQ2MS0weDExNTkpKT4+Ci0oMHg1ZjIrNDAyNy0weDE1YTkpO3BvcysrO319cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2RlY29kZV9kY3MoY29uc3QgVUlOVDgqZGF0YQotLHdtc19nd19kY3Nfc190eXBlKmRjcyl7VUlOVDggcG9zPSgweGY4Yys5NTMtMHgxMzQ1KTtVSU5UOCBpO2lmKGRhdGE9PU5VTEx8fGRjcworV01TX0dXX0FERFJFU1NfTUFYLCgweDFmYTIrMTg3NC0weDI2ZjQpLGFkZHItPmRpZ2l0cyk7cG9zKz1ieXRlc19pbmNyZW1lbnQ7fWVsc2UKK3tmb3IoaT0oMHg2Y2MrMTAxMS0weGFiZik7aTxhZGRyLT5udW1iZXJfb2ZfZGlnaXRzO2krKyl7YWRkci0+ZGlnaXRzW2krK109ZGF0YVsKK3Bvc10mKDB4OWQ3KzQ0MjQtMHgxYjEwKTthZGRyLT5kaWdpdHNbaV09KGRhdGFbcG9zXSYoMHgyMWErODg5LTB4NGEzKSk+PgorKDB4ODhhKzUwNzgtMHgxYzVjKTtwb3MrKzt9fXJldHVybiBwb3M7fVVJTlQ4IHdtc190c19kZWNvZGVfZGNzKGNvbnN0IFVJTlQ4KmRhdGEKKyx3bXNfZ3dfZGNzX3NfdHlwZSpkY3Mpe1VJTlQ4IHBvcz0oMHhiZTArNDQyNy0weDFkMmIpO1VJTlQ4IGk7aWYoZGF0YT09TlVMTHx8ZGNzCiA9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDY0XHg2M1x4NzMiCi0pO3JldHVybigweDQ0NCsxMTEyLTB4ODljKTt9ZGNzLT5tc2dfY2xhc3M9V01TX01FU1NBR0VfQ0xBU1NfTk9ORTtkY3MtPgorKTtyZXR1cm4oMHgxMzlmKzMxMjMtMHgxZmQyKTt9ZGNzLT5tc2dfY2xhc3M9V01TX01FU1NBR0VfQ0xBU1NfTk9ORTtkY3MtPgogbXNnX3dhaXRpbmc9V01TX0dXX01TR19XQUlUSU5HX05PTkU7ZGNzLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDsKLWRjcy0+aXNfY29tcHJlc3NlZD1GQUxTRTtpPShkYXRhW3Bvc10mKDB4NTEyKzI3NTYtMHhmMTYpKT4+KDB4MTM4Nis0MzQ2LTB4MjQ3YSk7Ci1zd2l0Y2goaSl7Y2FzZSgweGU3YysxMTEtMHhlZWIpOmRjcy0+aXNfY29tcHJlc3NlZD1kYXRhW3Bvc10mKDB4NDFiKzQ5MC0weDVlNSk7Ci1pZihkYXRhW3Bvc10mKDB4MTk0KzEwMTYtMHg1N2MpKXtkY3MtPm1zZ19jbGFzcz0od21zX21lc3NhZ2VfY2xhc3NfZV90eXBlKShkYXRhWwotcG9zXSYoMHg0MzQrMjgxMS0weGYyYykpO31lbHNle2Rjcy0+bXNnX2NsYXNzPVdNU19NRVNTQUdFX0NMQVNTX05PTkU7fWRjcy0+Ci1hbHBoYWJldD0od21zX2d3X2FscGhhYmV0X2VfdHlwZSkoKGRhdGFbcG9zXSYoMHgxMGFjKzM5NjYtMHgyMDFlKSk+PgotKDB4OTUzKzMyMjMtMHgxNWU4KSk7YnJlYWs7Y2FzZSgweGRmMCszMjg2LTB4MWFjMyk6aWYoKGRhdGFbcG9zXSYKLSgweGI0Yis2NDYtMHhkYTEpKT09KDB4NmJiKzYzNjctMHgxZjZhKSl7ZGNzLT5hbHBoYWJldD0oZGF0YVtwb3NdJgotKDB4MzVhKzE4MzUtMHhhODEpKT9XTVNfR1dfQUxQSEFCRVRfOF9CSVQ6V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ7ZGNzLT4KLW1zZ19jbGFzcz0od21zX21lc3NhZ2VfY2xhc3NfZV90eXBlKShkYXRhW3Bvc10mKDB4MTk5MysxODA4LTB4MjBhMCkpO2Rjcy0+CitkY3MtPmlzX2NvbXByZXNzZWQ9RkFMU0U7aT0oZGF0YVtwb3NdJigweGE1Yys5MTItMHhkMmMpKT4+KDB4YzMxKzM5NTAtMHgxYjk5KTsKK3N3aXRjaChpKXtjYXNlKDB4ODQ5KzIxMjctMHgxMDk4KTpkY3MtPmlzX2NvbXByZXNzZWQ9ZGF0YVtwb3NdJgorKDB4NDc0KzIyMTEtMHhjZjcpO2lmKGRhdGFbcG9zXSYoMHgzYWQrNjQ3OS0weDFjZWMpKXtkY3MtPm1zZ19jbGFzcz0oCit3bXNfbWVzc2FnZV9jbGFzc19lX3R5cGUpKGRhdGFbcG9zXSYoMHhhODkrNDQ0MC0weDFiZGUpKTt9ZWxzZXtkY3MtPm1zZ19jbGFzcz0KK1dNU19NRVNTQUdFX0NMQVNTX05PTkU7fWRjcy0+YWxwaGFiZXQ9KHdtc19nd19hbHBoYWJldF9lX3R5cGUpKChkYXRhW3Bvc10mCisoMHhjZGQrMjUxLTB4ZGNjKSk+PigweGMyZCsyMTA1LTB4MTQ2NCkpO2JyZWFrO2Nhc2UoMHhiNmIrNDM1MC0weDFjNjYpOmlmKChkYXRhWworcG9zXSYoMHgxOTUrNDY4LTB4MzM5KSk9PSgweGRiMis2MzMzLTB4MjYzZikpe2Rjcy0+YWxwaGFiZXQ9KGRhdGFbcG9zXSYKKygweDIyMmMrNDIyLTB4MjNjZSkpP1dNU19HV19BTFBIQUJFVF84X0JJVDpXTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDtkY3MtPgorbXNnX2NsYXNzPSh3bXNfbWVzc2FnZV9jbGFzc19lX3R5cGUpKGRhdGFbcG9zXSYoMHhkYjUrMjE5MC0weDE2NDApKTtkY3MtPgogaXNfY29tcHJlc3NlZD1GQUxTRTtkY3MtPm1zZ193YWl0aW5nPVdNU19HV19NU0dfV0FJVElOR19OT05FXzExMTE7fWVsc2V7ZGNzLT4KIGlzX2NvbXByZXNzZWQ9RkFMU0U7ZGNzLT5tc2dfY2xhc3M9V01TX01FU1NBR0VfQ0xBU1NfTk9ORTtpZigoZGF0YVtwb3NdJgotKDB4MTE0Zis1ODUtMHgxMzY4KSk9PSgweDNmNys3NzA3LTB4MjIxMikpe2Rjcy0+bXNnX3dhaXRpbmc9CisoMHg5OTQrNjQxMi0weDIyNzApKT09KDB4MTZjMyszMjc2LTB4MjM4Zikpe2Rjcy0+bXNnX3dhaXRpbmc9CiBXTVNfR1dfTVNHX1dBSVRJTkdfRElTQ0FSRDtkY3MtPmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO31lbHNlIGlmKAotKGRhdGFbcG9zXSYoMHg2NmQrNTE0MC0weDFhNTEpKT09KDB4OGZjKzMyMDktMHgxNTc1KSl7ZGNzLT5tc2dfd2FpdGluZz0KKyhkYXRhW3Bvc10mKDB4MTMyYiszODkyLTB4MjIyZikpPT0oMHgxMDM5KzI3ODUtMHgxYjBhKSl7ZGNzLT5tc2dfd2FpdGluZz0KIFdNU19HV19NU0dfV0FJVElOR19TVE9SRTtkY3MtPmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO31lbHNle2Rjcy0+CiBtc2dfd2FpdGluZz1XTVNfR1dfTVNHX1dBSVRJTkdfU1RPUkU7ZGNzLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfVUNTMjt9ZGNzLT4KLW1zZ193YWl0aW5nX2FjdGl2ZT0oZGF0YVtwb3NdJigweDFjMTYrMTU3NC0weDIyMzQpKT9UUlVFOkZBTFNFO2Rjcy0+Ci1tc2dfd2FpdGluZ19raW5kPSh3bXNfZ3dfbXNnX3dhaXRpbmdfa2luZF9lX3R5cGUpKGRhdGFbcG9zXSYoMHgyOTkrOTI0OS0weDI2YjcpKQorbXNnX3dhaXRpbmdfYWN0aXZlPShkYXRhW3Bvc10mKDB4NjhkKzI4MzEtMHgxMTk0KSk/VFJVRTpGQUxTRTtkY3MtPgorbXNnX3dhaXRpbmdfa2luZD0od21zX2d3X21zZ193YWl0aW5nX2tpbmRfZV90eXBlKShkYXRhW3Bvc10mKDB4MTc4Zis5MDQtMHgxYjE0KSkKIDt9YnJlYWs7ZGVmYXVsdDphdF9wcmludChMT0dfREVCVUcsCiAiXHg0OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDQ0XHg0M1x4NTNceDNhXHgyMFx4MjVceDc4IixkYXRhW3Bvc10pO2Rjcy0+CiBhbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDtkY3MtPmlzX2NvbXByZXNzZWQ9RkFMU0U7ZGNzLT5tc2dfd2FpdGluZwogPVdNU19HV19NU0dfV0FJVElOR19OT05FO2Rjcy0+bXNnX2NsYXNzPVdNU19NRVNTQUdFX0NMQVNTX05PTkU7YnJlYWs7fWlmKGRjcy0+CiBhbHBoYWJldD5XTVNfR1dfQUxQSEFCRVRfVUNTMil7ZGNzLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfN19CSVRfREVGQVVMVDt9ZGNzCiAtPnJhd19kY3NfZGF0YT1kYXRhW3Bvc107cG9zKys7cmV0dXJuIHBvczt9VUlOVDggd21zX3RzX2RlY29kZV90aW1lc3RhbXAoY29uc3QgCi1VSU5UOCpkYXRhLHdtc190aW1lc3RhbXBfc190eXBlKnRpbWVzdGFtcCl7VUlOVDggcG9zPSgweDQxYis1NDAwLTB4MTkzMyksaSxqO2lmKAorVUlOVDgqZGF0YSx3bXNfdGltZXN0YW1wX3NfdHlwZSp0aW1lc3RhbXApe1VJTlQ4IHBvcz0oMHg4OWYrMjY2My0weDEzMDYpLGksajtpZigKIGRhdGE9PU5VTEx8fHRpbWVzdGFtcD09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MCIKLSk7cmV0dXJuKDB4Mzc1KzQ5NjItMHgxNmQ3KTt9aT0oKGRhdGFbcG9zXSYoMHg1OTQrNTM4MC0weDFhODkpKTw8Ci0oMHgxNiszNTcwLTB4ZTA0KSkrKChkYXRhW3Bvc10mKDB4MjAyZCsxNjU1LTB4MjViNCkpPj4oMHgxYjZjKzI1Ni0weDFjNjgpKTtpZighCispO3JldHVybigweDIxMGErODY2LTB4MjQ2Yyk7fWk9KChkYXRhW3Bvc10mKDB4MTE1KzE5MTQtMHg4ODApKTw8CisoMHg3NzIrNzY3My0weDI1NjcpKSsoKGRhdGFbcG9zXSYoMHgxODQrMjAyOC0weDg4MCkpPj4oMHgxNTYwKzExOTQtMHgxYTA2KSk7aWYoIQogd21zX3RzX2JjZF90b19pbnQoaSwmaikpe2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg1OVx4NjVceDYxXHg3Mlx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHg0NjcrMzYxOC0weDEyODkpO310aW1lc3RhbXAtPnllYXI9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgotKDB4OGRhKzMwNi0weDlmZCkpPDwoMHg0ZjArODExOC0weDI0YTIpKSsoKGRhdGFbcG9zXSYoMHgxODU4Kzc5Ni0weDFhODQpKT4+Ci0oMHhkOTErNTQ4MC0weDIyZjUpKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHgxMDk5KzI0NTktMHgxYTI4KXx8ajwKLSgweGRiZis1NjY3LTB4MjNlMSkpe2F0X3ByaW50KExPR19ERUJVRywKKyxkYXRhW3Bvc10pO2k9KDB4NzIwKzMxMi0weDg1OCk7fXRpbWVzdGFtcC0+eWVhcj1pO3BvcysrO2k9KChkYXRhW3Bvc10mCisoMHhhYTYrMzQwMS0weDE3ZTApKTw8KDB4MWUxZis4MjAtMHgyMTRmKSkrKChkYXRhW3Bvc10mKDB4MTQ0MCs0MjgzLTB4MjQwYikpPj4KKygweDE3MjArMzc0My0weDI1YmIpKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHhlZjQrNTE2MC0weDIzMTApfHxqPAorKDB4MTI5Yys0NDA2LTB4MjNkMSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2Zlx4NmVceDc0XHg2OFx4MjBceDY5XHg3M1x4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgzYVx4MjBceDI1XHg2NCIKLSxqKTtpPSgweDg2NCsyMzgtMHg5NTEpO319ZWxzZXthdF9wcmludChMT0dfREVCVUcsCissaik7aT0oMHgxNjY1KzI5MTgtMHgyMWNhKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg0Mlx4NDNceDQ0XHgyMFx4NDRceDY5XHg2N1x4NjlceDc0XHg3M1x4MjBceDY5XHg2ZVx4MjBceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MFx4MjBceDRkXHg2Zlx4NmVceDc0XHg2OFx4MjBceDNhXHgyMFx4MjVceDY0IgotLGRhdGFbcG9zXSk7aT0oMHgxZTMrMjQ3My0weGI4Yik7fXRpbWVzdGFtcC0+bW9udGg9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgotKDB4YTNmKzI3NTYtMHgxNGY0KSk8PCgweDE2MDkrMzA5MC0weDIyMTcpKSsoKGRhdGFbcG9zXSYoMHg1NTkrNTMwMi0weDE5MWYpKT4+Ci0oMHhmYTgrOTEzLTB4MTMzNSkpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweDE1MSszMDA4LTB4Y2YyKXx8ajwKLSgweDEwNTIrNTcwLTB4MTI4Yikpe2F0X3ByaW50KExPR19ERUJVRywKKyxkYXRhW3Bvc10pO2k9KDB4MTNjYSsyMzMzLTB4MWNlNik7fXRpbWVzdGFtcC0+bW9udGg9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgorKDB4MjEwMSs4NjUtMHgyNDUzKSk8PCgweGJiZis1Nzc5LTB4MjI0ZSkpKygoZGF0YVtwb3NdJigweDFjYTArNTk1LTB4MWUwMykpPj4KKygweDFjNjIrMTg4OS0weDIzYmYpKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHhlODArMTEzMy0weDEyY2UpfHxqPAorKDB4MTg5KzEwNzMtMHg1YjkpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0NFx4NjFceDc5XHgyMFx4NjlceDczXHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDNhXHgyMFx4MjVceDY0IixqKTtpPQotKDB4MWI4NSs0OTMtMHgxZDcxKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4MTU4NysxNTg3LTB4MWJiOSk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg0NFx4NjFceDc5XHgyMFx4M2FceDIwXHgyNVx4NjQiCi0sZGF0YVtwb3NdKTtpPSgweDExMDIrNDc4MS0weDIzYWUpO310aW1lc3RhbXAtPmRheT1pO3BvcysrO2k9KChkYXRhW3Bvc10mCi0oMHhjZTUrMjMwNi0weDE1ZDgpKTw8KDB4OWUzKzEzNjctMHhmMzYpKSsoKGRhdGFbcG9zXSYoMHgxMGU1KzUyMTItMHgyNDUxKSk+PgotKDB4NWE4KzI5MTEtMHgxMTAzKSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4YjM1KzUzMTEtMHgxZmRkKSl7CissZGF0YVtwb3NdKTtpPSgweGE4MisyNzMzLTB4MTUyZSk7fXRpbWVzdGFtcC0+ZGF5PWk7cG9zKys7aT0oKGRhdGFbcG9zXSYKKygweDFkMDUrMjExLTB4MWRjOSkpPDwoMHgxZTM2KzE1MTEtMHgyNDE5KSkrKChkYXRhW3Bvc10mKDB4NThjKzcwMzMtMHgyMDE1KSk+PgorKDB4MjA1NCsxNDE5LTB4MjVkYikpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweGQ4Yis0MzQxLTB4MWU2OSkpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDhceDZmXHg3NVx4NzJceDIwXHg2OVx4NzNceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHgzYVx4MjBceDI1XHg2NCIKLSxqKTtpPSgweGVmKzkwOTAtMHgyNDcxKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAorLGopO2k9KDB4MTU5Yys5NDEtMHgxOTQ5KTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg0Mlx4NDNceDQ0XHgyMFx4NDRceDY5XHg2N1x4NjlceDc0XHg3M1x4MjBceDY5XHg2ZVx4MjBceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MFx4MjBceDQ4XHg2Zlx4NzVceDcyXHgyMFx4M2FceDIwXHgyNVx4NjQiCi0sZGF0YVtwb3NdKTtpPSgweGU4NCszNjctMHhmZjMpO310aW1lc3RhbXAtPmhvdXI9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgotKDB4NjUrNDc2LTB4MjMyKSk8PCgweDExMzcrMTAyNS0weDE1MzQpKSsoKGRhdGFbcG9zXSYoMHhhYjIrMTAwMy0weGRhZCkpPj4KLSgweDE1M2IrNjQ1LTB4MTdiYykpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweGU4NSsyMS0weGU1Zikpe2F0X3ByaW50Ci0oTE9HX0RFQlVHLAorLGRhdGFbcG9zXSk7aT0oMHgxNTk2KzI3Ny0weDE2YWIpO310aW1lc3RhbXAtPmhvdXI9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgorKDB4M2E1KzE0ODAtMHg5NWUpKTw8KDB4MTI1ZisxNDY2LTB4MTgxNSkpKygoZGF0YVtwb3NdJigweDg0Nis1Nzc0LTB4MWRlNCkpPj4KKygweDFjZTUrMjU5Mi0weDI3MDEpKTtpZih3bXNfdHNfYmNkX3RvX2ludChpLCZqKSl7aWYoaj4oMHhkMmMrMzQ3NC0weDFhODMpKXsKK2F0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2OVx4NmVceDc1XHg3NFx4NjVceDIwXHg2OVx4NzNceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDYxXHg3Mlx4NjdceDY1XHgzYVx4MjBceDI1XHg2NCIKLSxqKTtpPSgweDZiYis2NzE4LTB4MjBmOSk7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKKyxqKTtpPSgweDM1YSs2NDcyLTB4MWNhMik7fX1lbHNle2F0X3ByaW50KExPR19ERUJVRywKICJceDQ5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NDJceDQzXHg0NFx4MjBceDQ0XHg2OVx4NjdceDY5XHg3NFx4NzNceDIwXHg2OVx4NmVceDIwXHg0NVx4NmVceDYzXHg2Zlx4NjRceDY1XHg2NFx4MjBceDU0XHg2OVx4NmRceDY1XHg3M1x4NzRceDYxXHg2ZFx4NzBceDIwXHg0ZFx4NjlceDZlXHg3NVx4NzRceDY1XHgyMFx4M2FceDIwXHgyNVx4NjQiCi0sZGF0YVtwb3NdKTtpPSgweGUyZis4ODEtMHgxMWEwKTt9dGltZXN0YW1wLT5taW51dGU9aTtwb3MrKztpPSgoZGF0YVtwb3NdJgotKDB4MThiMSsyNzE4LTB4MjM0MCkpPDwoMHgxOWU3KzE1MTMtMHgxZmNjKSkrKChkYXRhW3Bvc10mKDB4MTIzOSsxOTctMHgxMjBlKSk+PgotKDB4NDQzKzcyNjctMHgyMGEyKSk7aWYod21zX3RzX2JjZF90b19pbnQoaSwmaikpe2lmKGo+KDB4MmZkKzYwNjktMHgxYTc3KSl7CissZGF0YVtwb3NdKTtpPSgweDEyODArMzIyNS0weDFmMTkpO310aW1lc3RhbXAtPm1pbnV0ZT1pO3BvcysrO2k9KChkYXRhW3Bvc10mCisoMHg1Y2ErNDY5Ni0weDE4MTMpKTw8KDB4OTdjKzM1MzAtMHgxNzQyKSkrKChkYXRhW3Bvc10mKDB4YzRhKzQxMi0weGNmNikpPj4KKygweDI1MSs4MjAyLTB4MjI1NykpO2lmKHdtc190c19iY2RfdG9faW50KGksJmopKXtpZihqPigweDFiOSs3NTE5LTB4MWVkZCkpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDY1XHg2M1x4NmZceDZlXHg2NFx4MjBceDY5XHg3M1x4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NjFceDcyXHg2N1x4NjVceDNhXHgyMFx4MjVceDY0IgotLGkpO2k9KDB4MjQxYys1My0weDI0NTEpO319ZWxzZXthdF9wcmludChMT0dfREVCVUcsCissaSk7aT0oMHgxNTI3KzE2ODYtMHgxYmJkKTt9fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NDlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg0Mlx4NDNceDQ0XHgyMFx4NDRceDY5XHg2N1x4NjlceDc0XHg3M1x4MjBceDY5XHg2ZVx4MjBceDQ1XHg2ZVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NTRceDY5XHg2ZFx4NjVceDczXHg3NFx4NjFceDZkXHg3MFx4MjBceDUzXHg2NVx4NjNceDZmXHg2ZVx4NjRceDIwXHgzYVx4MjBceDI1XHg2NCIKLSxkYXRhW3Bvc10pO2k9KDB4ZDJkKzE0MDgtMHgxMmFkKTt9dGltZXN0YW1wLT5zZWNvbmQ9aTtwb3MrKztpZihkYXRhW3Bvc10mCi0oMHgzZGIrMzA3LTB4NTA2KSl7dGltZXN0YW1wLT50aW1lem9uZT0oZGF0YVtwb3NdJigweGIyOCs3MDQwLTB4MjZhMSkpKgotKDB4MTBlNCszMzgwLTB4MWUwZSkrKChkYXRhW3Bvc10mKDB4NzFkKzYzMjktMHgxZWU2KSk+PigweGE3KzMzMzctMHhkYWMpKTsKLXRpbWVzdGFtcC0+dGltZXpvbmUqPSgtKDB4ODRmKzQ2MzQtMHgxYTY4KSk7fWVsc2V7dGltZXN0YW1wLT50aW1lem9uZT0oc2ludDcpKCgKLWRhdGFbcG9zXSYoMHgxNzhmKzExMTAtMHgxYmQ2KSkqKDB4ODA5KzQ3NjAtMHgxYTk3KSsoKGRhdGFbcG9zXSYKLSgweDE5NSs0MzYtMHgyNTkpKT4+KDB4YmQ4KzM2MjYtMHgxOWZlKSkpO31pZih0aW1lc3RhbXAtPnRpbWV6b25lPgotKDB4MTZkYyszODAzLTB4MjU4Nyl8fHRpbWVzdGFtcC0+dGltZXpvbmU8LSgweGIyZCsxODM3LTB4MTIyYSkpe2F0X3ByaW50KAorLGRhdGFbcG9zXSk7aT0oMHg4NTArMjE1Ni0weDEwYmMpO310aW1lc3RhbXAtPnNlY29uZD1pO3BvcysrO2lmKGRhdGFbcG9zXSYKKygweDk1OSszODQ0LTB4MTg1NSkpe3RpbWVzdGFtcC0+dGltZXpvbmU9KGRhdGFbcG9zXSYoMHg1MDMrNjIzMC0weDFkNTIpKSoKKygweDFkNys5MjUxLTB4MjVmMCkrKChkYXRhW3Bvc10mKDB4NjIyKzg2MjItMHgyNmUwKSk+PigweDY2Kzk0MTMtMHgyNTI3KSk7Cit0aW1lc3RhbXAtPnRpbWV6b25lKj0oLSgweDMwNCs5MTI4LTB4MjZhYikpO31lbHNle3RpbWVzdGFtcC0+dGltZXpvbmU9KHNpbnQ3KSgoCitkYXRhW3Bvc10mKDB4MzkrNjg4OS0weDFiMTMpKSooMHg5YjUrMTk2Mi0weDExNTUpKygoZGF0YVtwb3NdJgorKDB4MWIyMisxMzQ4LTB4MWY3NikpPj4oMHgxMDI1KzU1NS0weDEyNGMpKSk7fWlmKHRpbWVzdGFtcC0+dGltZXpvbmU+CisoMHg5MzErMzcyMC0weDE3ODkpfHx0aW1lc3RhbXAtPnRpbWV6b25lPC0oMHgxNTVmKzI5NzctMHgyMGQwKSl7YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg1NFx4NjlceDZkXHg2NVx4N2FceDZmXHg2ZVx4NjVceDIwXHg2OVx4NzNceDIwXHg2Zlx4NzVceDc0XHgyMFx4NmZceDY2XHgyMFx4NjJceDZmXHg3NVx4NmVceDY0XHgzYVx4MjBceDI1XHg2NCIKLSx0aW1lc3RhbXAtPnRpbWV6b25lKTt0aW1lc3RhbXAtPnRpbWV6b25lPSgweGEwYSszMDktMHhiM2YpO31wb3MrKztyZXR1cm4gcG9zO30KLXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9jb25jYXRfOChjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqCi1oZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4NGFkKzEzOTEtMHhhMWMpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7CissdGltZXN0YW1wLT50aW1lem9uZSk7dGltZXN0YW1wLT50aW1lem9uZT0oMHgxM2M4KzEwMTUtMHgxN2JmKTt9cG9zKys7cmV0dXJuIHBvcworO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfY29uY2F0XzgoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKgoraGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDE4YjQrODExLTB4MWJkZik7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXsKIGF0X3ByaW50KExPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4KLSgweDU1YSs4NDE1LTB4MjYzOSk7fWlmKHVkaFtwb3NdPCgweDIxMzUrMTE5MC0weDI1ZDgpKXthdF9wcmludChMT0dfREVCVUcsCisoMHg4NDQrMjEyMS0weDEwOGQpO31pZih1ZGhbcG9zXTwoMHgxMTljKzQ4NTUtMHgyNDkwKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHgyMFx4MzhceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4Y2ZiKzIwNjAtMHgxNTA3KTt9aWYodWRoW3BvcysoMHg5MSs5MTA3LTB4MjQyMildPT0KLSgweDFiMGErMTA3Ny0weDFmM2YpfHx1ZGhbcG9zKygweGUzYSs1OTk0LTB4MjVhMSldPnVkaFtwb3MrKDB4MTRmZCsyNzM1LTB4MWZhYSldCi0pe2F0X3ByaW50KExPR19ERUJVRywKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4YzdmKzM0NDEtMHgxOWYwKTt9aWYodWRoW3BvcysoMHg4NzgrMjAzMS0weDEwNjUpXT09CisoMHg4YjMrMzY1MS0weDE2ZjYpfHx1ZGhbcG9zKygweDUxYiszNjIwLTB4MTMzYyldPnVkaFtwb3MrKDB4NDA3KzcxOTYtMHgyMDIxKV0peworYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4MjBceDM4XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2Zlx4NzVceDc0XHgyMFx4NmZceDY2XHgyMFx4NjJceDZmXHg3NVx4NmVceDY0XHgyMFx4NmRceDYxXHg3OFx4MjBceDZkXHg2NVx4NzNceDczXHg2MVx4NjdceDY1XHg3MyIKLSk7cmV0dXJuKDB4MTAxOSsxOTEzLTB4MTc5Mik7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX0NPTkNBVF84OworKTtyZXR1cm4oMHhhNzcrNDcxLTB4YzRlKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfQ09OQ0FUXzg7CiBoZWFkZXJfcHRyLT51LmNvbmNhdF84Lm1zZ19yZWY9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF84LnRvdGFsX3NtPXVkaFsKLXBvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF84LnNlcV9udW09dWRoW3BvcysrXTtyZXR1cm4odWRoWygweGUwZCsyNDA3LTB4MTc3NCldCi0rKDB4MTY5YisxNTgwLTB4MWNjNikpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfY29uY2F0MTYoY29uc3QgVUlOVDgqdWRoLAotd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDMxYis5MTUwLTB4MjZkOSk7aWYodWRoPT1OVUxMfHwKK3BvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF84LnNlcV9udW09dWRoW3BvcysrXTtyZXR1cm4odWRoWygweGQ5Zis0NzM1LTB4MjAxZSldCisrKDB4ZTNhKzEwNTktMHgxMjVjKSk7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9jb25jYXQxNihjb25zdCBVSU5UOCp1ZGgsCit3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MjEyYysyMjgtMHgyMjEwKTtpZih1ZGg9PU5VTEx8fAogaGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4YjcxKzQ5MDEtMHgxZTk2KTt9aWYoCi11ZGhbcG9zXTwoMHgxNDQyKzQ0NjgtMHgyNWIyKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTE1NCs1MTUzLTB4MjU3NSk7fWlmKAordWRoW3Bvc108KDB4N2E4KzQ5NDctMHgxYWY3KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4MzFceDM2XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDY5YSs2NDcxLTB4MWZlMSk7fWlmKHVkaFtwb3MrKDB4MzAyKzQ1OTctMHgxNGY0KV09PQotKDB4OTZiKzM3MDItMHgxN2UxKXx8dWRoW3BvcysoMHgxMDYrMzE3OS0weGQ2ZCldPT0oMHg4NjgrNjY3LTB4YjAzKXx8dWRoW3BvcysKLSgweDIxYzUrMzIzLTB4MjMwNCldPnVkaFtwb3MrKDB4NGYxKzgxODEtMHgyNGUzKV0pcmV0dXJuKDB4YzErMjk4NC0weGM2OSk7CissdWRoW3Bvc10pO3JldHVybigweGNlMisyMjQtMHhkYzIpO31pZih1ZGhbcG9zKygweDE0Yys2NTA0LTB4MWFiMSldPT0KKygweDE1NjErNDMzMS0weDI2NGMpfHx1ZGhbcG9zKygweDk4OSsxNDI5LTB4ZjFhKV09PSgweDExNjIrMTA1Ny0weDE1ODMpfHx1ZGhbcG9zCisrKDB4MTg0MyszNzg0LTB4MjcwNyldPnVkaFtwb3MrKDB4MWM0MysxODM5LTB4MjM2ZildKXJldHVybigweDRiOCsyMjMyLTB4ZDcwKTsKIGhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX0NPTkNBVF8xNjtwb3MrKztoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi5tc2dfcmVmPQogdWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi5tc2dfcmVmPShVSU5UMTYpKGhlYWRlcl9wdHItPnUuY29uY2F0XzE2LgotbXNnX3JlZjw8KDB4ODYrODQ4OS0weDIxYTcpKXx1ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0XzE2LnRvdGFsX3NtPXVkaFtwb3MKLSsrXTtoZWFkZXJfcHRyLT51LmNvbmNhdF8xNi5zZXFfbnVtPXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHgxMDUrMzI2Ny0weGRjOCldKwotKDB4OTljKzM5MjYtMHgxOGYxKSk7fXN0YXRpYyBVSU5UOCB3bXNfdHNfdWRoX2RlY29kZV9maXJzdF9zZWdfY2hlY2soY29uc3QgVUlOVDgKLSBsZW4sY29uc3QgVUlOVDgqZGF0YSxVSU5UOCppc19maXJzdF9zZWdtZW50X3B0cil7VUlOVDggcG9zPSgweDkwYysyMjI1LTB4MTFiZCk7Ci1VSU5UOCBudW1faGVhZGVycz0oMHgxNTBmKzI2MS0weDE2MTQpO1VJTlQ4IHVkaGw9KDB4MTA0MCs0OTU4LTB4MjM5ZSk7VUlOVDggaWVkbAotPSgweDVlOCsyMDc3LTB4ZTA1KTtVSU5UOCBpZWk9KDB4MTk0KzMyMjYtMHhlMmUpOyppc19maXJzdF9zZWdtZW50X3B0cj1UUlVFO2lmKAotZGF0YT09TlVMTHx8ZGF0YVtwb3NdPT0oMHgzM2IrNDI4OC0weDEzZmIpfHxsZW49PSgweDFjZDArMTQ3My0weDIyOTEpKXthdF9wcmludCgKK21zZ19yZWY8PCgweDZhNiszMDIyLTB4MTI2YykpfHVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5jb25jYXRfMTYudG90YWxfc209dWRoWworcG9zKytdO2hlYWRlcl9wdHItPnUuY29uY2F0XzE2LnNlcV9udW09dWRoW3BvcysrXTtyZXR1cm4odWRoWygweGNkYiszNjUtMHhlNDgpXSsKKygweDk3NyszNjM4LTB4MTdhYykpO31zdGF0aWMgVUlOVDggd21zX3RzX3VkaF9kZWNvZGVfZmlyc3Rfc2VnX2NoZWNrKGNvbnN0IFVJTlQ4CisgbGVuLGNvbnN0IFVJTlQ4KmRhdGEsVUlOVDgqaXNfZmlyc3Rfc2VnbWVudF9wdHIpe1VJTlQ4IHBvcz0oMHhjZmQrMzk2My0weDFjNzgpOworVUlOVDggbnVtX2hlYWRlcnM9KDB4MTdhMysyNzAzLTB4MjIzMik7VUlOVDggdWRobD0oMHgxNGVhKzcwNS0weDE3YWIpO1VJTlQ4IGllZGwKKz0oMHg3NjUrNDQ2MC0weDE4ZDEpO1VJTlQ4IGllaT0oMHg5ODQrMzUyNC0weDE3NDgpOyppc19maXJzdF9zZWdtZW50X3B0cj1UUlVFO2lmCisoZGF0YT09TlVMTHx8ZGF0YVtwb3NdPT0oMHg4MDUrMTgzMi0weGYyZCl8fGxlbj09KDB4YWYrMjY3NS0weGIyMikpe2F0X3ByaW50KAogTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NzVceDY0XHg2OFx4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2Nlx4NjlceDcyXHg3M1x4NzRceDVmXHg3M1x4NjVceDY3XHg1Zlx4NjNceDY4XHg2NVx4NjNceDZiIgogKTtyZXR1cm4gRkFMU0U7fXVkaGw9ZGF0YVtwb3NdO3BvcysrO3doaWxlKChwb3M8dWRobCkmJihudW1faGVhZGVyczwKLVdNU19NQVhfVURfSEVBREVSUykpe2llaT1kYXRhW3Bvc107aWVkbD1kYXRhW3BvcysoMHgzZTQrMzgzNC0weDEyZGQpXTtpZihpZWk9PQotV01TX1VESF9DT05DQVRfMTYpe2lmKGRhdGFbcG9zKygweDFlMCs1MDQ4LTB4MTU5MyldIT0oMHg4OTYrNTQ2OS0weDFkZjIpKXsKK1dNU19NQVhfVURfSEVBREVSUykpe2llaT1kYXRhW3Bvc107aWVkbD1kYXRhW3BvcysoMHgxNDFmKzQyMTYtMHgyNDk2KV07aWYoaWVpPT0KK1dNU19VREhfQ09OQ0FUXzE2KXtpZihkYXRhW3BvcysoMHg1MmYrNDY2MC0weDE3NWUpXSE9KDB4MTkzZCs4NS0weDE5OTEpKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDU3XHg0ZFx4NTNceDVmXHg1NVx4NDRceDQ4XHg1Zlx4NDNceDRmXHg0ZVx4NDNceDQxXHg1NFx4NWZceDMxXHgzNlx4MjBceDZlXHg2Zlx4NzRceDIwXHg2Nlx4NjlceDcyXHg3M1x4NzRceDIwXHg3M1x4NjVceDY3XHg2ZFx4NjVceDZlXHg3NFx4MjEiCiApOyppc19maXJzdF9zZWdtZW50X3B0cj1GQUxTRTtyZXR1cm4gVFJVRTt9ZWxzZXtyZXR1cm4gVFJVRTt9fWVsc2V7bnVtX2hlYWRlcnMrKwotO3Bvcys9KCgweDFlMjkrNzQ3LTB4MjExMikraWVkbCk7fX1yZXR1cm4gVFJVRTt9c3RhdGljIFVJTlQ4IAorO3Bvcys9KCgweGM3NSs2NTQ4LTB4MjYwNykraWVkbCk7fX1yZXR1cm4gVFJVRTt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfc3BlY2lhbF9zbShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCi1wb3M9KDB4NDEzKzIzMDUtMHhkMTQpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTg2MCszMjE4LTB4MjRmMik7fWlmKAotdWRoW3Bvc108KDB4NWY1KzU0MDAtMHgxYjBiKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorcG9zPSgweDEzNGIrMjA0Ni0weDFiNDkpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTgzZCszNzM5LTB4MjZkOCk7fWlmKAordWRoW3Bvc108KDB4MTlhYisyOTAzLTB4MjUwMCkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUzXHg3MFx4NjVceDYzXHg2OVx4NjFceDZjXHgyMFx4NTNceDRkXHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDRiMSs0MTI4LTB4MTRkMSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4NWFmKzU0ODItMHgxYjE5KTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9TUEVDSUFMX1NNO2hlYWRlcl9wdHItPnUuc3BlY2lhbF9zbS5tc2dfd2FpdGluZz0oCi13bXNfZ3dfbXNnX3dhaXRpbmdfZV90eXBlKSgodWRoW3Bvc10+PigweDg0Mis1MDYzLTB4MWMwMik9PSgweDFjODArMjU0LTB4MWQ3ZSkpPword21zX2d3X21zZ193YWl0aW5nX2VfdHlwZSkoKHVkaFtwb3NdPj4oMHgxMzUrNDQ4OC0weDEyYjYpPT0oMHg3NzUrNjI5OS0weDIwMTApKT8KIFdNU19HV19NU0dfV0FJVElOR19ESVNDQVJEOldNU19HV19NU0dfV0FJVElOR19TVE9SRSk7aGVhZGVyX3B0ci0+dS5zcGVjaWFsX3NtLgotbXNnX3dhaXRpbmdfa2luZD0od21zX2d3X21zZ193YWl0aW5nX2tpbmRfZV90eXBlKSh1ZGhbcG9zKytdJigweGFjMCs3MTYxLTB4MjYzYSkKLSk7aGVhZGVyX3B0ci0+dS5zcGVjaWFsX3NtLm1lc3NhZ2VfY291bnQ9dWRoW3BvcysrXTtyZXR1cm4odWRoWwotKDB4NDM2KzUzMjctMHgxOTA1KV0rKDB4OWRmKzYzNTctMHgyMmIzKSk7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9wb3J0XzgKLShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGI0KzM3NzctMHhmNzUpO2lmKHVkaD09Ci1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHhmZmErNTIwOS0weDI0NTMpO31pZigKLXVkaFtwb3NdPCgweDMwNSs4MjMwLTB4MjMyOSkpe2F0X3ByaW50KExPR19ERUJVRywKK21zZ193YWl0aW5nX2tpbmQ9KHdtc19nd19tc2dfd2FpdGluZ19raW5kX2VfdHlwZSkodWRoW3BvcysrXSYKKygweDE0M2QrNDE0OS0weDIzZjMpKTtoZWFkZXJfcHRyLT51LnNwZWNpYWxfc20ubWVzc2FnZV9jb3VudD11ZGhbcG9zKytdO3JldHVybigKK3VkaFsoMHgxNWYwKzM2ODAtMHgyNDUwKV0rKDB4MTUwOCsyMTA4LTB4MWQ0MykpO31zdGF0aWMgVUlOVDggCit3bXNfdHNfZGVjb2RlX3VkaF9wb3J0XzgoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0KKygweDFjMDQrNzgtMHgxYzUyKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweGRhYisxOTE0LTB4MTUyNSk7fWlmKAordWRoW3Bvc108KDB4MjUyKzE5Ny0weDMxNSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTBceDZmXHg3Mlx4NzRceDIwXHgzOFx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHgyMTY3KzEyMzgtMHgyNjNkKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQotV01TX1VESF9QT1JUXzg7aGVhZGVyX3B0ci0+dS53YXBfOC5kZXN0X3BvcnQ9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LndhcF84Lgotb3JpZ19wb3J0PXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHgxNzQ3KzI2OTAtMHgyMWM5KV0rKDB4NGMxKzM0ODYtMHgxMjVlKSk7fQotc3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3BvcnQxNihjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cikKLXtVSU5UOCBwb3M9KDB4MTBlYSszNDY3LTB4MWU3NSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludCgKLUxPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4KLSgweDE0YmMrNjA1LTB4MTcxOSk7fWlmKHVkaFtwb3NdPCgweDljYyszNDgzLTB4MTc2Mykpe2F0X3ByaW50KExPR19ERUJVRywKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4NGRmKzMyMTgtMHgxMTcxKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfUE9SVF84Cis7aGVhZGVyX3B0ci0+dS53YXBfOC5kZXN0X3BvcnQ9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LndhcF84Lm9yaWdfcG9ydD11ZGhbcG9zCisrK107cmV0dXJuKHVkaFsoMHg2ZWIrMTIwMS0weGI5YyldKygweDE3MTUrMzgxMS0weDI1ZjcpKTt9c3RhdGljIFVJTlQ4IAord21zX3RzX2RlY29kZV91ZGhfcG9ydDE2KGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9CisoMHhlODErNTgzOC0weDI1NGYpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MzgwKzQ1MTEtMHgxNTFmKTt9aWYoCit1ZGhbcG9zXTwoMHgxNTliKzgxNS0weDE4YzYpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg1MFx4NmZceDcyXHg3NFx4MzFceDM2XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDk4Nis3MTU3LTB4MjU3Yik7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1BPUlRfMTY7cG9zCissdWRoW3Bvc10pO3JldHVybigweDFlYWQrMTMyLTB4MWYzMSk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1BPUlRfMTY7cG9zCiArKztoZWFkZXJfcHRyLT51LndhcF8xNi5kZXN0X3BvcnQ9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LndhcF8xNi5kZXN0X3BvcnQ9KAotVUlOVDE2KShoZWFkZXJfcHRyLT51LndhcF8xNi5kZXN0X3BvcnQ8PCgweGZiZis1ODI5LTB4MjY3YykpfHVkaFtwb3MrK107CitVSU5UMTYpKGhlYWRlcl9wdHItPnUud2FwXzE2LmRlc3RfcG9ydDw8KDB4MTI3MisyNjQ3LTB4MWNjMSkpfHVkaFtwb3MrK107CiBoZWFkZXJfcHRyLT51LndhcF8xNi5vcmlnX3BvcnQ9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LndhcF8xNi5vcmlnX3BvcnQ9KFVJTlQxNgotKShoZWFkZXJfcHRyLT51LndhcF8xNi5vcmlnX3BvcnQ8PCgweDMxMysyNjMwLTB4ZDUxKSl8dWRoW3BvcysrXTtyZXR1cm4odWRoWwotKDB4MzkrOTkyNC0weDI2ZmQpXSsoMHgyZjgrNTU2MC0weDE4YWYpKTt9c3RhdGljIFVJTlQ4IAorKShoZWFkZXJfcHRyLT51LndhcF8xNi5vcmlnX3BvcnQ8PCgweDE1MjErMTU4NC0weDFiNDkpKXx1ZGhbcG9zKytdO3JldHVybih1ZGhbCisoMHgxNzg0KzE2ODktMHgxZTFkKV0rKDB4MWE4YisyNzE4LTB4MjUyOCkpO31zdGF0aWMgVUlOVDggCiB3bXNfdHNfZGVjb2RlX3VkaF90ZXh0X2Zvcm1hdHRpbmcoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpewotVUlOVDggcG9zPSgweDJiYSsyMjg0LTB4YmE2KTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKLSJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDFjNzkrMTkxLTB4MWQzOCk7fWlmKAotdWRoW3Bvc108KDB4ZGI4KzQ0NTMtMHgxZjFhKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorVUlOVDggcG9zPSgweDEyOGYrNzk5LTB4MTVhZSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcKKywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHg0ODQrNDg4LTB4NjZjKTt9aWYodWRoCitbcG9zXTwoMHgxNGJjKzE2NDItMHgxYjIzKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTRceDY1XHg3OFx4NzRceDIwXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg3NFx4NjlceDZlXHg2N1x4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHgxNTBkKzQ0NDQtMHgyNjY5KTt9aWYodWRoW3Bvc10+PSgweDFmMjgrMTcwMi0weDI1Y2EpKXsKKyx1ZGhbcG9zXSk7cmV0dXJuKDB4OGYyKzEzMS0weDk3NSk7fWlmKHVkaFtwb3NdPj0oMHgxNGFhKzI2OTAtMHgxZjI4KSl7CiBoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmlzX2NvbG9yX3ByZXNlbnQ9VFJVRTt9ZWxzZXtoZWFkZXJfcHRyLT51LgogdGV4dF9mb3JtYXRpbmcuaXNfY29sb3JfcHJlc2VudD1GQUxTRTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9URVhUX0ZPUk1BVElORztoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLnN0YXJ0X3Bvc2l0aW9uPXVkaFtwb3MrK107CiBoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLnRleHRfZm9ybWF0dGluZ19sZW5ndGg9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LgogdGV4dF9mb3JtYXRpbmcuYWxpZ25tZW50X3R5cGU9KHdtc191ZGhfYWxpZ25tZW50X2VfdHlwZSkodWRoW3Bvc10mCi0oMHgxOTIrNTE3MC0weDE1YzEpKTtoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmZvbnRfc2l6ZT0oCi13bXNfdWRoX2ZvbnRfc2l6ZV9lX3R5cGUpKCh1ZGhbcG9zXSYoMHhlZmQrMjgxOC0weDE5ZjMpKT4+KDB4MWNkOCsxOTU5LTB4MjQ3ZCkpOwotaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy5zdHlsZV9ib2xkPSh1ZGhbcG9zXSYoMHhkZTIrNDI3MC0weDFlODApKT4+Ci0oMHg3OWMrNDExOS0weDE3YWYpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfaXRhbGljPSh1ZGhbcG9zXSYKLSgweDEwNjIrNTY2LTB4MTI3OCkpPj4oMHg1NzArNzMxMy0weDIxZmMpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuCi1zdHlsZV91bmRlcmxpbmVkPSh1ZGhbcG9zXSYoMHgyMGQzKzI2MS0weDIxOTgpKT4+KDB4OTEzKzYzNzUtMHgyMWY0KTtoZWFkZXJfcHRyCi0tPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfc3RyaWtldGhyb3VnaD0odWRoW3Bvc10mKDB4Mzg5KzE3OS0weDNiYykpPj4KLSgweDdmOSs0OTEzLTB4MWIyMyk7cG9zKys7aWYoaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy5pc19jb2xvcl9wcmVzZW50KXsKKygweDEwNTIrMzQ5OC0weDFkZjkpKTtoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmZvbnRfc2l6ZT0oCit3bXNfdWRoX2ZvbnRfc2l6ZV9lX3R5cGUpKCh1ZGhbcG9zXSYoMHg3MTQrNDM1MC0weDE4MDYpKT4+KDB4NzJhKzU5Mi0weDk3OCkpOworaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy5zdHlsZV9ib2xkPSh1ZGhbcG9zXSYoMHhhNDMrNTk0Ny0weDIxNmUpKT4+CisoMHhjZjIrNDE1NC0weDFkMjgpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfaXRhbGljPSh1ZGhbcG9zXSYKKygweDVjOSs0NzgwLTB4MTg1NSkpPj4oMHhhNWErMjc0Mi0weDE1MGIpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcuCitzdHlsZV91bmRlcmxpbmVkPSh1ZGhbcG9zXSYoMHhjODgrMjk3OC0weDE3ZWEpKT4+KDB4NTQ5KzgyNTUtMHgyNTgyKTtoZWFkZXJfcHRyCistPnUudGV4dF9mb3JtYXRpbmcuc3R5bGVfc3RyaWtldGhyb3VnaD0odWRoW3Bvc10mKDB4YmZhKzQwNjItMHgxYjU4KSk+PgorKDB4OTU4KzI4NTMtMHgxNDc2KTtwb3MrKztpZihoZWFkZXJfcHRyLT51LnRleHRfZm9ybWF0aW5nLmlzX2NvbG9yX3ByZXNlbnQpewogaGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy50ZXh0X2NvbG9yX2ZvcmVncm91bmQ9KHdtc191ZGhfdGV4dF9jb2xvcl9lX3R5cGUpKAotdWRoW3Bvc10mKDB4Y2YyKzQ2NTAtMHgxZjBkKSk7aGVhZGVyX3B0ci0+dS50ZXh0X2Zvcm1hdGluZy50ZXh0X2NvbG9yX2JhY2tncm91bmQKLT0od21zX3VkaF90ZXh0X2NvbG9yX2VfdHlwZSkoKHVkaFtwb3NdJigweDY4Nis3NzkzLTB4MjQwNykpPj4oMHhkYzkrNTAyMy0weDIxNjQpCi0pO3BvcysrO31yZXR1cm4odWRoWygweDE4MyszNzYtMHgyZmIpXSsoMHg0MWYrODkyNy0weDI2ZmQpKTt9c3RhdGljIFVJTlQ4IAordWRoW3Bvc10mKDB4YjkwKzQzNC0weGQzMykpO2hlYWRlcl9wdHItPnUudGV4dF9mb3JtYXRpbmcudGV4dF9jb2xvcl9iYWNrZ3JvdW5kPSgKK3dtc191ZGhfdGV4dF9jb2xvcl9lX3R5cGUpKCh1ZGhbcG9zXSYoMHg2YTIrMTI1MC0weGE5NCkpPj4oMHhmNCsxMzU0LTB4NjNhKSk7cG9zCisrKzt9cmV0dXJuKHVkaFsoMHg3ODErMzYwOC0weDE1OTkpXSsoMHhkN2YrMTUyNi0weDEzNzQpKTt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfcHJlX2RlZl9zb3VuZChjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDgKLSBwb3M9KDB4MTAyOCsyNDg3LTB4MTlkZik7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHhmNmYrMS0weGY3MCk7fWlmKHVkaFsKLXBvc108KDB4OTUwKzMxNDAtMHgxNTkyKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIHBvcz0oMHg4MGQrMzE2OS0weDE0NmUpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTFjYSszMjUzLTB4MWU3Zik7fWlmKAordWRoW3Bvc108KDB4ZTFjKzE1MTgtMHgxNDA4KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTBceDcyXHg2NVx4MjBceDQ0XHg2NVx4NjZceDY5XHg2ZVx4NjVceDY0XHgyMFx4NTNceDZmXHg3NVx4NmVceDY0XHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDEyNSs1MTc4LTB4MTU1Zik7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4M2Q5Kzc5OTYtMHgyMzE1KTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9QUkVfREVGX1NPVU5EO2hlYWRlcl9wdHItPnUucHJlX2RlZl9zb3VuZC5wb3NpdGlvbj11ZGhbcG9zKytdO2hlYWRlcl9wdHIKLS0+dS5wcmVfZGVmX3NvdW5kLnNuZF9udW1iZXI9dWRoW3BvcysrXTtyZXR1cm4odWRoWygweGU0MSsxOTE5LTB4MTVjMCldKwotKDB4NThiKzI1MjItMHhmNjQpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3VzZXJfZGVmX3NvdW5kKGNvbnN0IFVJTlQ4KgotdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHg4NDIrNDMyNC0weDE5MjYpLGo7aWYodWRoPT1OVUxMfHwKKy0+dS5wcmVfZGVmX3NvdW5kLnNuZF9udW1iZXI9dWRoW3BvcysrXTtyZXR1cm4odWRoWygweDFmMGErNjcxLTB4MjFhOSldKworKDB4MWFmYisyMTMzLTB4MjM0ZikpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfdXNlcl9kZWZfc291bmQoY29uc3QgVUlOVDgKKyp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGI3Nis2NDg0LTB4MjRjYSksajtpZih1ZGg9PU5VTEx8fAogaGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTRhNisxODYwLTB4MWJlYSk7fWlmKAotdWRoW3Bvc109PSgweDE3ZWQrNzc1LTB4MWFmNCkpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDExOCs2OTcxLTB4MWM1Myk7fWlmKAordWRoW3Bvc109PSgweDYzMys1NzgwLTB4MWNjNykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDY1XHg2Nlx4NjlceDZlXHg2NVx4NjRceDIwXHg1M1x4NmZceDc1XHg2ZVx4NjRceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NmVceDZmXHgyMFx4NDRceDYxXHg3NFx4NjEiCi0pO3JldHVybigweDdhMCs3ODM2LTB4MjYzYyk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD1XTVNfVURIX1VTRVJfREVGX1NPVU5EOwotaGVhZGVyX3B0ci0+dS51c2VyX2RlZl9zb3VuZC5kYXRhX2xlbmd0aD11ZGhbcG9zKytdLSgweDk5MCs0MTEwLTB4MTk5ZCk7CispO3JldHVybigweDFjZTErMTMwNy0weDIxZmMpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9VU0VSX0RFRl9TT1VORDsKK2hlYWRlcl9wdHItPnUudXNlcl9kZWZfc291bmQuZGF0YV9sZW5ndGg9dWRoW3BvcysrXS0oMHgxMDlkKzU3MDUtMHgyNmU1KTsKIGhlYWRlcl9wdHItPnUudXNlcl9kZWZfc291bmQucG9zaXRpb249dWRoW3BvcysrXTtpZihoZWFkZXJfcHRyLT51LnVzZXJfZGVmX3NvdW5kCiAuZGF0YV9sZW5ndGg+V01TX1VESF9NQVhfU05EX1NJWkUpe2F0X3ByaW50KExPR19ERUJVRywKICJceDRkXHg2MVx4NzhceDIwXHg1M1x4NjlceDdhXHg2NVx4MjBceDQ1XHg3OFx4NjNceDY1XHg2NVx4NjRceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NjlceDY0XHgyMFx4MjVceDY0XHgyMCIKLSxoZWFkZXJfcHRyLT5oZWFkZXJfaWQpO3JldHVybigweGYwYis1NjI2LTB4MjUwNSk7fW1lbXNldChoZWFkZXJfcHRyLT51LgotdXNlcl9kZWZfc291bmQudXNlcl9kZWZfc291bmQsKDB4MTdhYyszMDMyLTB4MjI4NSksV01TX1VESF9NQVhfU05EX1NJWkUpO2ZvcihqPQotKDB4MTY5MSszMzYzLTB4MjNiNCk7ajxoZWFkZXJfcHRyLT51LnVzZXJfZGVmX3NvdW5kLmRhdGFfbGVuZ3RoO2orKyloZWFkZXJfcHRyLT4KLXUudXNlcl9kZWZfc291bmQudXNlcl9kZWZfc291bmRbal09dWRoW3BvcysrXTtyZXR1cm4gcG9zO31zdGF0aWMgVUlOVDggCissaGVhZGVyX3B0ci0+aGVhZGVyX2lkKTtyZXR1cm4oMHgxMjgxKzM3OTItMHgyMTUxKTt9bWVtc2V0KGhlYWRlcl9wdHItPnUuCit1c2VyX2RlZl9zb3VuZC51c2VyX2RlZl9zb3VuZCwoMHg3ZjErMzQ3MS0weDE0ODEpLFdNU19VREhfTUFYX1NORF9TSVpFKTtmb3Ioaj0KKygweDIzYzYrMjc0LTB4MjRkOCk7ajxoZWFkZXJfcHRyLT51LnVzZXJfZGVmX3NvdW5kLmRhdGFfbGVuZ3RoO2orKyloZWFkZXJfcHRyLT51CisudXNlcl9kZWZfc291bmQudXNlcl9kZWZfc291bmRbal09dWRoW3BvcysrXTtyZXR1cm4gcG9zO31zdGF0aWMgVUlOVDggCiB3bXNfdHNfZGVjb2RlX3VkaF9wcmVfZGVmX2FuaW0oY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IAotcG9zPSgweGRjNCs1OTYzLTB4MjUwZik7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHg5MDIrMTI5NS0weGUxMSk7fWlmKHVkaAotW3Bvc10hPSgweGE4NSsyNjE1LTB4MTRiYSkpe2F0X3ByaW50KExPR19ERUJVRywKK3Bvcz0oMHg0KzI4OTEtMHhiNGYpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4NmMwKzEzNDktMHhjMDUpO31pZih1ZGgKK1twb3NdIT0oMHgxZmQ1KzEzMjMtMHgyNGZlKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTBceDcyXHg2NVx4MjBceDQ0XHg2NVx4NjZceDY5XHg2ZVx4NjVceDY0XHgyMFx4NDFceDZlXHg2OVx4NmRceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHg3NTUrNzM3My0weDI0MjIpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CissdWRoW3Bvc10pO3JldHVybigweGU4Mys2MDg4LTB4MjY0Yik7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KIFdNU19VREhfUFJFX0RFRl9BTklNO2hlYWRlcl9wdHItPnUucHJlX2RlZl9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+CiB1LnByZV9kZWZfYW5pbS5hbmltYXRpb25fbnVtYmVyPXVkaFtwb3MrK107cmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4IAogd21zX3RzX2RlY29kZV91ZGhfbGFyZ2VfYW5pbShjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggCi1wb3M9KDB4ZTI3KzE4OTYtMHgxNThmKSxqLGs7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHhlNmIrMzE1Mi0weDFhYmIpO31pZigKLXVkaFtwb3NdIT0oV01TX1VESF9BTklNX05VTV9CSVRNQVBTKldNU19VREhfTEFSR0VfQklUTUFQX1NJWkUrCi0oMHgyNTRiKzEyMi0weDI1YzQpKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorcG9zPSgweDNmNSs4NDQtMHg3NDEpLGosaztpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDdjYys4NzktMHhiM2IpO31pZih1ZGhbCitwb3NdIT0oV01TX1VESF9BTklNX05VTV9CSVRNQVBTKldNU19VREhfTEFSR0VfQklUTUFQX1NJWkUrKDB4MjhmKzU4MzgtMHgxOTVjKSkpeworYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NGNceDYxXHg3Mlx4NjdceDY1XHgyMFx4NDRceDY1XHg2Nlx4NjlceDZlXHg2NVx4NjRceDIwXHg0MVx4NmVceDY5XHg2ZFx4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NTBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDE0NjUrMzE0OC0weDIwYjEpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9MQVJHRV9BTklNOwotcG9zKys7aGVhZGVyX3B0ci0+dS5sYXJnZV9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKGo9KDB4M2U2KzUwNzItMHgxN2I2KTtqPAotV01TX1VESF9BTklNX05VTV9CSVRNQVBTO2orKylmb3Ioaz0oMHgxOTI4KzE0ODQtMHgxZWY0KTtrPAorLHVkaFtwb3NdKTtyZXR1cm4oMHhiN2MrNDM0OS0weDFjNzkpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9MQVJHRV9BTklNOworcG9zKys7aGVhZGVyX3B0ci0+dS5sYXJnZV9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKGo9KDB4MmQzKzEzNzMtMHg4MzApO2o8CitXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFM7aisrKWZvcihrPSgweDE3MTMrMzY5NC0weDI1ODEpO2s8CiBXTVNfVURIX0xBUkdFX0JJVE1BUF9TSVpFO2srKyloZWFkZXJfcHRyLT51LmxhcmdlX2FuaW0uZGF0YVtqXVtrXT11ZGhbcG9zKytdOwogcmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3NtYWxsX2FuaW0oY29uc3QgVUlOVDgqdWRoLAotd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGFiYisyNTQtMHhiYjkpLGosaztpZih1ZGg9PU5VTEx8fAord21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGQ0MSs2NTY0LTB4MjZlNSksaixrO2lmKHVkaD09TlVMTHx8CiBoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgyYmMrNDgzOC0weDE1YTIpO31pZigKLXVkaFtwb3NdIT0oV01TX1VESF9BTklNX05VTV9CSVRNQVBTKldNU19VREhfU01BTExfQklUTUFQX1NJWkUrCi0oMHgxYzU3KzE1MDUtMHgyMjM3KSkpe2F0X3ByaW50KExPR19ERUJVRywKKyJceDc1XHg2NFx4NjhceDIwXHg2OVx4NzNceDIwXHg0ZVx4NTVceDRjXHg0YyIpO3JldHVybigweDExMSs1OTgwLTB4MTg2ZCk7fWlmKAordWRoW3Bvc10hPShXTVNfVURIX0FOSU1fTlVNX0JJVE1BUFMqV01TX1VESF9TTUFMTF9CSVRNQVBfU0laRSsoMHgzN2ErMTU3My0weDk5ZSkKKykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDRjXHg2MVx4NzJceDY3XHg2NVx4MjBceDQ0XHg2NVx4NjZceDY5XHg2ZVx4NjVceDY0XHgyMFx4NDFceDZlXHg2OVx4NmRceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHg3ZjQrMjQ1Mi0weDExODgpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9TTUFMTF9BTklNOwotcG9zKys7aGVhZGVyX3B0ci0+dS5zbWFsbF9hbmltLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKGo9KDB4ZWMrOTUxNS0weDI2MTcpO2o8Ci1XTVNfVURIX0FOSU1fTlVNX0JJVE1BUFM7aisrKWZvcihrPSgweDRhKzYyMTktMHgxODk1KTtrPAorLHVkaFtwb3NdKTtyZXR1cm4oMHgxZDNhKzI0MTktMHgyNmFkKTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfU01BTExfQU5JTTsKK3BvcysrO2hlYWRlcl9wdHItPnUuc21hbGxfYW5pbS5wb3NpdGlvbj11ZGhbcG9zKytdO2ZvcihqPSgweDJkZisyMDg4LTB4YjA3KTtqPAorV01TX1VESF9BTklNX05VTV9CSVRNQVBTO2orKylmb3Ioaz0oMHgxNGM3KzE1NzktMHgxYWYyKTtrPAogV01TX1VESF9TTUFMTF9CSVRNQVBfU0laRTtrKyspaGVhZGVyX3B0ci0+dS5zbWFsbF9hbmltLmRhdGFbal1ba109dWRoW3BvcysrXTsKIHJldHVybiBwb3M7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF9sYXJnZV9waWN0dXJlKGNvbnN0IFVJTlQ4KnVkaCwKLXdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgzODcrMjc5OC0weGU3NSksajtpZih1ZGg9PU5VTEx8fAord21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGMyKzg5MTUtMHgyMzk1KSxqO2lmKHVkaD09TlVMTHx8CiBoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCi0iXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxYzFjKzE4OTgtMHgyMzg2KTt9aWYoCi11ZGhbcG9zXSE9V01TX1VESF9MQVJHRV9QSUNfU0laRSsoMHgxOGEzKzIzMDctMHgyMWE1KSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4NWE2KzM5NjMtMHgxNTIxKTt9aWYoCit1ZGhbcG9zXSE9V01TX1VESF9MQVJHRV9QSUNfU0laRSsoMHhhNTQrMjgzNy0weDE1NjgpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0Y1x4NjFceDcyXHg2N1x4NjVceDIwXHg1MFx4NjlceDYzXHg3NFx4NzVceDcyXHg2NVx4MjBceDUwXHg3Mlx4NjVceDczXHg2NVx4NmVceDc0XHgyMFx4NzdceDY5XHg3NFx4NjhceDIwXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDY0XHg2MVx4NzRceDYxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNkXHgyMFx4MjVceDY0IgotLHVkaFtwb3NdKTtyZXR1cm4oMHgxYTZhKzE5NDctMHgyMjA1KTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQorLHVkaFtwb3NdKTtyZXR1cm4oMHgzYzQrODM4MS0weDI0ODEpO31oZWFkZXJfcHRyLT5oZWFkZXJfaWQ9CiBXTVNfVURIX0xBUkdFX1BJQ1RVUkU7cG9zKys7aGVhZGVyX3B0ci0+dS5sYXJnZV9waWN0dXJlLnBvc2l0aW9uPXVkaFtwb3MrK107Zm9yKAotaj0oMHg3OGIrMTA2MS0weGJiMCk7ajxXTVNfVURIX0xBUkdFX1BJQ19TSVpFO2orKyloZWFkZXJfcHRyLT51LmxhcmdlX3BpY3R1cmUuCitqPSgweDFiOTkrMjY1LTB4MWNhMik7ajxXTVNfVURIX0xBUkdFX1BJQ19TSVpFO2orKyloZWFkZXJfcHRyLT51LmxhcmdlX3BpY3R1cmUuCiBkYXRhW2pdPXVkaFtwb3MrK107cmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX3NtYWxsX3BpY3R1cmUoCi1jb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDIwNys0Nzk1LTB4MTRjMiksajtpZigKK2NvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MTQzYysxMjkzLTB4MTk0OSksajtpZigKIHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTMyMSszOTQ3LTB4MjI4Yyk7fWlmKAotdWRoW3Bvc10hPVdNU19VREhfU01BTExfUElDX1NJWkUrKDB4ZGNjKzU4MjUtMHgyNDhjKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTkxMSsxNDA1LTB4MWU4ZSk7fWlmKAordWRoW3Bvc10hPVdNU19VREhfU01BTExfUElDX1NJWkUrKDB4NTc1KzU0MzktMHgxYWIzKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NTNceDZkXHg2MVx4NmNceDZjXHgyMFx4NTBceDY5XHg2M1x4NzRceDc1XHg3Mlx4NjVceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NjdceDZlXHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4MTc5YysyMTkyLTB4MjAyYyk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MTIxNys0MTM3LTB4MjI0MCk7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD0KIFdNU19VREhfU01BTExfUElDVFVSRTtwb3MrKztoZWFkZXJfcHRyLT51LnNtYWxsX3BpY3R1cmUucG9zaXRpb249dWRoW3BvcysrXTtmb3IoCi1qPSgweDM1Nys1MjUtMHg1NjQpO2o8V01TX1VESF9TTUFMTF9QSUNfU0laRTtqKyspaGVhZGVyX3B0ci0+dS5zbWFsbF9waWN0dXJlLgoraj0oMHg4YWErNjcwNS0weDIyZGIpO2o8V01TX1VESF9TTUFMTF9QSUNfU0laRTtqKyspaGVhZGVyX3B0ci0+dS5zbWFsbF9waWN0dXJlLgogZGF0YVtqXT11ZGhbcG9zKytdO3JldHVybiBwb3M7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF92YXJfcGljdHVyZShjb25zdCAKLVVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MThmMysxNDUyLTB4MWU5ZiksaixwaWNfc2l6ZTsKLWlmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4OGJjKzE5ODQtMHgxMDdjKTt9aWYoCi11ZGhbcG9zXT5XTVNfVURIX1ZBUl9QSUNfU0laRSsoMHhhM2YrNDMwNS0weDFiMGQpKXthdF9wcmludChMT0dfREVCVUcsCitVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDM1NCszNzQwLTB4MTFmMCksaixwaWNfc2l6ZTtpZgorKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAorIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4MTY0OSs2MDMtMHgxOGE0KTt9aWYoCit1ZGhbcG9zXT5XTVNfVURIX1ZBUl9QSUNfU0laRSsoMHhkNDkrNjA1NC0weDI0ZWMpKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg1Nlx4NjFceDcyXHgyMFx4NTBceDY5XHg2M1x4NzRceDc1XHg3Mlx4NjVceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4NjcxKzUyODQtMHgxYjE1KTt9aWYoKHVkaFtwb3NdLSgweDNiYSsxMDU3LTB4N2Q4KSkhPSh1ZGhbcG9zCi0rKDB4NmJmKzMyMzYtMHgxMzYxKV0qdWRoW3BvcysoMHgxNDQ2KzQ0MTAtMHgyNTdkKV0pKXthdF9wcmludChMT0dfREVCVUcsCissdWRoW3Bvc10pO3JldHVybigweDZkOCs2MDEwLTB4MWU1Mik7fWlmKCh1ZGhbcG9zXS0oMHg2OTkrNTk3OS0weDFkZjEpKSE9KHVkaFsKK3BvcysoMHg2NWMrNDcwMS0weDE4YjcpXSp1ZGhbcG9zKygweDFjNzcrMTc0Ni0weDIzNDYpXSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDU2XHg2MVx4NzJceDIwXHg1MFx4NjlceDYzXHg3NFx4NzVceDcyXHg2NVx4MmNceDIwXHg3MFx4NjlceDYzXHgyMFx4NzNceDY5XHg3YVx4NjVceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDIwXHg2ZFx4NjlceDczXHg2ZFx4NjFceDc0XHg2M1x4NjhceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY4XHg2NVx4NjlceDY3XHg3NFx4MjBceDYxXHg2ZVx4NjRceDIwXHg3N1x4NjVceDY5XHg2N1x4NjhceDc0IgotKTtyZXR1cm4oMHgxYzJjKzI4Ny0weDFkNGIpO31waWNfc2l6ZT11ZGhbcG9zKytdLSgweDFkYjIrMTYyMC0weDI0MDMpO2hlYWRlcl9wdHIKKyk7cmV0dXJuKDB4YWE4KzUxODEtMHgxZWU1KTt9cGljX3NpemU9dWRoW3BvcysrXS0oMHg4OTMrNTgxNi0weDFmNDgpO2hlYWRlcl9wdHIKIC0+aGVhZGVyX2lkPVdNU19VREhfVkFSX1BJQ1RVUkU7aGVhZGVyX3B0ci0+dS52YXJfcGljdHVyZS5wb3NpdGlvbj11ZGhbcG9zKytdOwotaGVhZGVyX3B0ci0+dS52YXJfcGljdHVyZS53aWR0aD0oVUlOVDgpKHVkaFtwb3MrK10qKDB4ZWNhKzQ3NTYtMHgyMTU2KSk7Ci1oZWFkZXJfcHRyLT51LnZhcl9waWN0dXJlLmhlaWdodD11ZGhbcG9zKytdO2ZvcihqPSgweDk5Mys1OTgxLTB4MjBmMCk7ajxwaWNfc2l6ZQoraGVhZGVyX3B0ci0+dS52YXJfcGljdHVyZS53aWR0aD0oVUlOVDgpKHVkaFtwb3MrK10qKDB4NTEyKzg0NTEtMHgyNjBkKSk7CitoZWFkZXJfcHRyLT51LnZhcl9waWN0dXJlLmhlaWdodD11ZGhbcG9zKytdO2ZvcihqPSgweDIzMGQrOTg0LTB4MjZlNSk7ajxwaWNfc2l6ZQogJiZqPFdNU19VREhfVkFSX1BJQ19TSVpFO2orKyloZWFkZXJfcHRyLT51LnZhcl9waWN0dXJlLmRhdGFbal09dWRoW3BvcysrXTtyZXR1cm4KICBwb3M7fXN0YXRpYyBVSU5UOCB3bXNfdHNfZGVjb2RlX3VkaF91c2VyX3Byb21wdChjb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqCi1oZWFkZXJfcHRyKXtVSU5UOCBwb3M9KDB4MjhmKzQxOTEtMHgxMmVlKTtpZih1ZGg9PU5VTEx8fGhlYWRlcl9wdHI9PU5VTEwpeworaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweGM3Yys1MzUzLTB4MjE2NSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXsKIGF0X3ByaW50KExPR19ERUJVRywiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4KLSgweGRiNSs1NzEwLTB4MjQwMyk7fWlmKHVkaFtwb3NdPCgweDcxZCszNDU5LTB4MTQ5Zikpe2F0X3ByaW50KExPR19ERUJVRywKKygweGNkMCszMjA5LTB4MTk1OSk7fWlmKHVkaFtwb3NdPCgweDk5OSs0Njk0LTB4MWJlZSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NTVceDczXHg2NVx4NzJceDIwXHg1MFx4NzJceDZmXHg2ZFx4NzBceDc0XHgyMFx4NzBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDY5XHg2ZVx4NzZceDYxXHg2Y1x4NjlceDY0XHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2RceDIwXHgyNVx4NjQiCi0sdWRoW3Bvc10pO3JldHVybigweDZmZCs1NTMyLTB4MWM5OSk7fXBvcysrO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4NzMxKzc0NTQtMHgyNDRmKTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9VU0VSX1BST01QVDtoZWFkZXJfcHRyLT51LnVzZXJfcHJvbXB0Lm51bWJlcl9vZl9vYmplY3RzPXVkaFtwb3MrK107Ci1yZXR1cm4odWRoWygweGU5OCsyMTY1LTB4MTcwZCldKygweDc0ZCs5MDAtMHhhZDApKTt9c3RhdGljIFVJTlQ4IAorcmV0dXJuKHVkaFsoMHhlM2YrNzMzLTB4MTExYyldKygweDdjZiszMzc0LTB4MTRmYykpO31zdGF0aWMgVUlOVDggCiB3bXNfdHNfZGVjb2RlX3VkaF9lbyhjb25zdCBVSU5UOCp1ZGgsVUlOVDggZmlyc3Rfc2VnbWVudCx3bXNfdWRoX3NfdHlwZSoKLWhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgxMjFiKzcxNS0weDE0ZTYpLHVkaF9sZW5ndGg7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT0KK2hlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHhhYTcrOTYzLTB4ZTZhKSx1ZGhfbGVuZ3RoO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09CiBOVUxMKXthdF9wcmludChMT0dfREVCVUcsIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuCi0oMHgyMjUrMzkxNS0weDExNzApO31pZih1ZGhbcG9zXT09KDB4MTJiZisxNzI4LTB4MTk3Zikpe2F0X3ByaW50KExPR19ERUJVRywKKygweDEyYzkrMzE5NS0weDFmNDQpO31pZih1ZGhbcG9zXT09KDB4MTE3ZisxMzAtMHgxMjAxKSl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NTNceDRkXHg1M1x4MjBceDU1XHg0NFx4NDhceDIwXHg0NVx4NzhceDc0XHg2NVx4NmVceDY0XHg2NVx4NjRceDIwXHg0Zlx4NjJceDZhXHg2NVx4NjNceDc0XHgyMFx4NzBceDcyXHg2NVx4NzNceDY1XHg2ZVx4NzRceDIwXHg3N1x4NjlceDc0XHg2OFx4MjBceDZlXHg2Zlx4MjBceDQ0XHg2MVx4NzRceDYxIgotKTtyZXR1cm4oMHg3M2IrNzIzLTB4YTBlKTt9dWRoX2xlbmd0aD11ZGhbcG9zKytdO2hlYWRlcl9wdHItPmhlYWRlcl9pZD0KKyk7cmV0dXJuKDB4ZDdjKzgyNC0weDEwYjQpO311ZGhfbGVuZ3RoPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+aGVhZGVyX2lkPQogV01TX1VESF9FWFRFTkRFRF9PQkpFQ1Q7aGVhZGVyX3B0ci0+dS5lby5maXJzdF9zZWdtZW50PWZpcnN0X3NlZ21lbnQ7aWYoCiBmaXJzdF9zZWdtZW50PT1UUlVFKXtpZih1ZGhfbGVuZ3RoPFdNU19VREhfT0NURVRTX0VPX0hFQURFUil7cmV0dXJuCi0oMHg2NDErNTY5OC0weDFjODMpO31oZWFkZXJfcHRyLT51LmVvLnJlZmVyZW5jZT11ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuZW8uCi1sZW5ndGg9dWRoW3BvcysrXTw8KDB4NTIyKzI2MzAtMHhmNjApO2hlYWRlcl9wdHItPnUuZW8ubGVuZ3RofD11ZGhbcG9zKytdOworKDB4NDFjKzU2NDMtMHgxYTI3KTt9aGVhZGVyX3B0ci0+dS5lby5yZWZlcmVuY2U9dWRoW3BvcysrXTtoZWFkZXJfcHRyLT51LmVvLgorbGVuZ3RoPXVkaFtwb3MrK108PCgweDE4MzYrMzM4NC0weDI1NjYpO2hlYWRlcl9wdHItPnUuZW8ubGVuZ3RofD11ZGhbcG9zKytdOwogaGVhZGVyX3B0ci0+dS5lby5jb250cm9sPXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5lby50eXBlPSh3bXNfdWRoX2VvX2lkX2VfdHlwZSkKLXVkaFtwb3MrK107aGVhZGVyX3B0ci0+dS5lby5wb3NpdGlvbj11ZGhbcG9zKytdPDwoMHhkMWErMjI1LTB4ZGYzKTtoZWFkZXJfcHRyLT51Ci0uZW8ucG9zaXRpb258PXVkaFtwb3MrK107fWhlYWRlcl9wdHItPnUuZW8uY29udGVudC5sZW5ndGg9KHVkaF9sZW5ndGgtcG9zKSsKLSgweDE3YTIrMjgwNS0weDIyOTYpO21lbWNweShoZWFkZXJfcHRyLT51LmVvLmNvbnRlbnQuZGF0YSx1ZGgrcG9zLGhlYWRlcl9wdHItPnUuCit1ZGhbcG9zKytdO2hlYWRlcl9wdHItPnUuZW8ucG9zaXRpb249dWRoW3BvcysrXTw8KDB4YTViKzE3MTktMHgxMTBhKTtoZWFkZXJfcHRyCistPnUuZW8ucG9zaXRpb258PXVkaFtwb3MrK107fWhlYWRlcl9wdHItPnUuZW8uY29udGVudC5sZW5ndGg9KHVkaF9sZW5ndGgtcG9zKSsKKygweDYyYis3MTcxLTB4MjIyZCk7bWVtY3B5KGhlYWRlcl9wdHItPnUuZW8uY29udGVudC5kYXRhLHVkaCtwb3MsaGVhZGVyX3B0ci0+dS4KIGVvLmNvbnRlbnQubGVuZ3RoKTtwb3MrPWhlYWRlcl9wdHItPnUuZW8uY29udGVudC5sZW5ndGg7cmV0dXJuIHBvczt9c3RhdGljIFVJTlQ4CiAgd21zX3RzX2RlY29kZV91ZGhfcmZjODIyKGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCBwb3M9Ci0oMHg0ZTErNDMwMy0weDE1YjApO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4YzBkKzE2NjgtMHgxMjkxKTt9aWYoCi11ZGhbcG9zXTwoMHgxY2ErMzEwMS0weGRlNikpe2F0X3ByaW50KExPR19ERUJVRywKKygweDI0MSs4ODIxLTB4MjRiNik7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxYWM4KzE0NzQtMHgyMDhhKTt9aWYoCit1ZGhbcG9zXTwoMHgzOGErMjc3Ni0weGU2MSkpe2F0X3ByaW50KExPR19ERUJVRywKICJceDUzXHg0ZFx4NTNceDIwXHg1NVx4NDRceDQ4XHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4MjBceDUyXHg2Nlx4NjNceDM4XHgzMlx4MzJceDIwXHg1MFx4NzJceDY1XHg3M1x4NjVceDZlXHg3NFx4MjBceDc3XHg2OVx4NzRceDY4XHgyMFx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZFx4MjBceDI1XHg2NCIKLSx1ZGhbcG9zXSk7cmV0dXJuKDB4OTA5KzM3MzktMHgxN2E0KTt9cG9zKys7aGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfUkZDODIyCi07aGVhZGVyX3B0ci0+dS5yZmM4MjIuaGVhZGVyX2xlbmd0aD11ZGhbcG9zKytdO3JldHVybih1ZGhbKDB4NGM2KzgxOTYtMHgyNGNhKV0rCi0oMHgxZDdjKzU1MS0weDFmYTIpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX25hdF9sYW5nX3NzKGNvbnN0IFVJTlQ4KnVkaAotLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHgxMTdkKzQxNTgtMHgyMWJiKTtpZih1ZGg9PU5VTEx8fAotaGVhZGVyX3B0cj09TlVMTCl7cmV0dXJuKDB4MTQ3OSs0MTY1LTB4MjRiZSk7fWlmKHVkaFtwb3NdIT0KLVdNU19VREhfT0NURVRTX05BVF9MQU5HX1NTKXtyZXR1cm4oMHhkZjQrNDM0NC0weDFlZWMpO31wb3MrKztoZWFkZXJfcHRyLT4KKyx1ZGhbcG9zXSk7cmV0dXJuKDB4MWI2KzMxOTUtMHhlMzEpO31wb3MrKztoZWFkZXJfcHRyLT5oZWFkZXJfaWQ9V01TX1VESF9SRkM4MjI7CitoZWFkZXJfcHRyLT51LnJmYzgyMi5oZWFkZXJfbGVuZ3RoPXVkaFtwb3MrK107cmV0dXJuKHVkaFsoMHgxOGRiKzEwODItMHgxZDE1KV0rCisoMHg3NTkrNDQzNS0weDE4YWIpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX25hdF9sYW5nX3NzKGNvbnN0IFVJTlQ4KnVkaAorLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHhhNzcrMzM5MC0weDE3YjUpO2lmKHVkaD09TlVMTHx8CitoZWFkZXJfcHRyPT1OVUxMKXtyZXR1cm4oMHgxNjhjKzMwMzctMHgyMjY5KTt9aWYodWRoW3Bvc10hPQorV01TX1VESF9PQ1RFVFNfTkFUX0xBTkdfU1Mpe3JldHVybigweDExYWErMTA0MC0weDE1YmEpO31wb3MrKztoZWFkZXJfcHRyLT4KIGhlYWRlcl9pZD1XTVNfVURIX05BVF9MQU5HX1NTO2lmKChXTVNfVURIX05BVF9MQU5HX1RVUktJU0g+dWRoW3Bvc10pfHwoCi1XTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U8dWRoW3Bvc10pKXtyZXR1cm4oMHgzNjIrMTMyMS0weDg4Yik7fWhlYWRlcl9wdHItPnUuCitXTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U8dWRoW3Bvc10pKXtyZXR1cm4oMHgyMDArNzAxNy0weDFkNjkpO31oZWFkZXJfcHRyLT51LgogbmF0X2xhbmdfc3MubmF0X2xhbmdfaWQ9KHdtc191ZGhfbmF0X2xhbmdfaWRfZV90eXBlKXVkaFtwb3MrK107cmV0dXJuKHVkaFsKLSgweDEyMTYrNzI4LTB4MTRlZSldKygweDEzNTkrNDAwMy0weDIyZmIpKTt9c3RhdGljIFVJTlQ4IAorKDB4NGZkKzcyMTEtMHgyMTI4KV0rKDB4YTdiKzU0MzQtMHgxZmI0KSk7fXN0YXRpYyBVSU5UOCAKIHdtc190c19kZWNvZGVfdWRoX25hdF9sYW5nX2xzKGNvbnN0IFVJTlQ4KnVkaCx3bXNfdWRoX3NfdHlwZSpoZWFkZXJfcHRyKXtVSU5UOCAKLXBvcz0oMHgzNjQrMjg2MS0weGU5MSk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXtyZXR1cm4oMHgxMjZhKzM5OC0weDEzZjgpCi07fWlmKHVkaFtwb3NdIT1XTVNfVURIX09DVEVUU19OQVRfTEFOR19MUyl7cmV0dXJuKDB4NzBiKzM2OTktMHgxNTdlKTt9cG9zKys7Citwb3M9KDB4ODIyKzE0MzgtMHhkYzApO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7cmV0dXJuKDB4NTgyKzE0MDUtMHhhZmYpOworfWlmKHVkaFtwb3NdIT1XTVNfVURIX09DVEVUU19OQVRfTEFOR19MUyl7cmV0dXJuKDB4NDVkKzE4Ny0weDUxOCk7fXBvcysrOwogaGVhZGVyX3B0ci0+aGVhZGVyX2lkPVdNU19VREhfTkFUX0xBTkdfTFM7aWYoKFdNU19VREhfTkFUX0xBTkdfVFVSS0lTSD51ZGhbcG9zXSkKLXx8KFdNU19VREhfTkFUX0xBTkdfUE9SVFVHVUVTRTx1ZGhbcG9zXSkpe3JldHVybigweDZmYys2ODczLTB4MjFkNSk7fWhlYWRlcl9wdHIKK3x8KFdNU19VREhfTkFUX0xBTkdfUE9SVFVHVUVTRTx1ZGhbcG9zXSkpe3JldHVybigweDEyOTMrNDIzMS0weDIzMWEpO31oZWFkZXJfcHRyCiAtPnUubmF0X2xhbmdfbHMubmF0X2xhbmdfaWQ9KHdtc191ZGhfbmF0X2xhbmdfaWRfZV90eXBlKXVkaFtwb3MrK107cmV0dXJuKHVkaFsKLSgweDE5YmIrMTMxLTB4MWEzZSldKygweDZjNys2MTU2LTB4MWVkMikpO31zdGF0aWMgVUlOVDggd21zX3RzX2RlY29kZV91ZGhfb3RoZXIoCi1jb25zdCBVSU5UOCp1ZGgsd21zX3VkaF9zX3R5cGUqaGVhZGVyX3B0cil7VUlOVDggcG9zPSgweDYwZCs5NzgtMHg5ZGYpLGk9Ci0oMHhkM2IrNDA1Ni0weDFkMTMpO2lmKHVkaD09TlVMTHx8aGVhZGVyX3B0cj09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAotIlx4NzVceDY0XHg2OFx4MjBceDY5XHg3M1x4MjBceDRlXHg1NVx4NGNceDRjIik7cmV0dXJuKDB4Nzg5KzQ0OTktMHgxOTFjKTt9aWYoCi11ZGhbcG9zKygweDExYzgrMjM1MS0weDFhZjYpXT5XTVNfVURIX09USEVSX1NJWkUpe2F0X3ByaW50KExPR19ERUJVRywKKygweDIxYSs1MTIzLTB4MTYxZCldKygweDEwYjcrMjQ5OS0weDFhNzkpKTt9c3RhdGljIFVJTlQ4IHdtc190c19kZWNvZGVfdWRoX290aGVyCisoY29uc3QgVUlOVDgqdWRoLHdtc191ZGhfc190eXBlKmhlYWRlcl9wdHIpe1VJTlQ4IHBvcz0oMHg4NzgrMzE2LTB4OWI0KSxpPQorKDB4MWJhOSsxNjkxLTB4MjI0NCk7aWYodWRoPT1OVUxMfHxoZWFkZXJfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCisiXHg3NVx4NjRceDY4XHgyMFx4NjlceDczXHgyMFx4NGVceDU1XHg0Y1x4NGMiKTtyZXR1cm4oMHgxZjRkKzE3MTktMHgyNjA0KTt9aWYoCit1ZGhbcG9zKygweDY0NysxMTQwLTB4YWJhKV0+V01TX1VESF9PVEhFUl9TSVpFKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDQ4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg0Zlx4NzRceDY4XHg2NVx4NzJceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHg2NVx4NzhceDYzXHg2NVx4NjVceDY0XHg2OVx4NmVceDY3XHgyMFx4MzJceDMyXHgzNiIKLSk7cmV0dXJuKDB4YWEwKzQwNDMtMHgxYTZiKTt9aGVhZGVyX3B0ci0+aGVhZGVyX2lkPSh3bXNfdWRoX2lkX2VfdHlwZSl1ZGhbcG9zXTsKKyk7cmV0dXJuKDB4MTMwMCszOTkwLTB4MjI5Nik7fWhlYWRlcl9wdHItPmhlYWRlcl9pZD0od21zX3VkaF9pZF9lX3R5cGUpdWRoW3Bvc107CiBoZWFkZXJfcHRyLT51Lm90aGVyLmhlYWRlcl9pZD0od21zX3VkaF9pZF9lX3R5cGUpdWRoW3BvcysrXTtoZWFkZXJfcHRyLT51Lm90aGVyLgotaGVhZGVyX2xlbmd0aD11ZGhbcG9zKytdO2ZvcihpPSgweDIwYzgrNTU4LTB4MjJmNik7aTxoZWFkZXJfcHRyLT51Lm90aGVyLgoraGVhZGVyX2xlbmd0aD11ZGhbcG9zKytdO2ZvcihpPSgweDE0YWErNDI2MS0weDI1NGYpO2k8aGVhZGVyX3B0ci0+dS5vdGhlci4KIGhlYWRlcl9sZW5ndGg7aSsrKXtoZWFkZXJfcHRyLT51Lm90aGVyLmRhdGFbaV09dWRoW3BvcysrXTt9cmV0dXJuIHBvczt9VUlOVDggCiB3bXNfdHNfZGVjb2RlX3VzZXJfZGF0YV9oZWFkZXIoY29uc3QgVUlOVDggbGVuLGNvbnN0IFVJTlQ4KmRhdGEsVUlOVDgqCi1udW1faGVhZGVyc19wdHIsd21zX3VkaF9zX3R5cGUqdWRoX3B0cil7VUlOVDggcG9zPSgweDFjN2ErMTEyNS0weDIwZGYpO1VJTlQ4IAotaGVhZGVyX2xlbmd0aD0oMHgyMjJkKzI2MC0weDIzMzEpLG51bV9oZWFkZXJzPSgweDQ5ZCs4NzA3LTB4MjZhMCk7VUlOVDggdWRobDsKLVVJTlQ4IGZpcnN0X3NlZ21lbnQ9VFJVRTtpZihkYXRhPT1OVUxMfHxsZW49PSgweGEzNCs0NzIwLTB4MWNhNCl8fGRhdGFbcG9zXT09Ci0oMHgxMzQ2KzM2MjItMHgyMTZjKXx8bnVtX2hlYWRlcnNfcHRyPT1OVUxMfHx1ZGhfcHRyPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCitudW1faGVhZGVyc19wdHIsd21zX3VkaF9zX3R5cGUqdWRoX3B0cil7VUlOVDggcG9zPSgweDFjYTcrMTQ2Mi0weDIyNWQpO1VJTlQ4IAoraGVhZGVyX2xlbmd0aD0oMHgyMmIrMzc5MC0weDEwZjkpLG51bV9oZWFkZXJzPSgweDVkYyszMTQtMHg3MTYpO1VJTlQ4IHVkaGw7VUlOVDgKKyBmaXJzdF9zZWdtZW50PVRSVUU7aWYoZGF0YT09TlVMTHx8bGVuPT0oMHhlMzQrODgxLTB4MTFhNSl8fGRhdGFbcG9zXT09CisoMHg3MzUrMjU4Mi0weDExNGIpfHxudW1faGVhZGVyc19wdHI9PU5VTEx8fHVkaF9wdHI9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRywKICJceDZlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDc1XHg3M1x4NjVceDcyXHg1Zlx4NjRceDYxXHg3NFx4NjFceDVmXHg2OFx4NjVceDYxXHg2NFx4NjVceDcyIgotKTtyZXR1cm4oMHg5ZjIrMTkzNS0weDExODEpO311ZGhsPWRhdGFbcG9zXTtwb3MrKzt3aGlsZSgocG9zPHVkaGwpJiYobnVtX2hlYWRlcnMKLTxXTVNfTUFYX1VEX0hFQURFUlMpKXtzd2l0Y2goZGF0YVtwb3MrK10pe2Nhc2UgV01TX1VESF9DT05DQVRfODpoZWFkZXJfbGVuZ3RoPQotd21zX3RzX2RlY29kZV91ZGhfY29uY2F0XzgoZGF0YStwb3MsJnVkaF9wdHJbbnVtX2hlYWRlcnNdKTticmVhaztjYXNlIAotV01TX1VESF9DT05DQVRfMTY6aGVhZGVyX2xlbmd0aD13bXNfdHNfZGVjb2RlX3VkaF9jb25jYXQxNihkYXRhK3BvcywmdWRoX3B0clsKLW51bV9oZWFkZXJzXSk7YnJlYWs7Y2FzZSBXTVNfVURIX1NQRUNJQUxfU006aGVhZGVyX2xlbmd0aD0KKyk7cmV0dXJuKDB4MTYyNCszNTAyLTB4MjNkMik7fXVkaGw9ZGF0YVtwb3NdO3BvcysrO3doaWxlKChwb3M8dWRobCkmJigKK251bV9oZWFkZXJzPFdNU19NQVhfVURfSEVBREVSUykpe3N3aXRjaChkYXRhW3BvcysrXSl7Y2FzZSBXTVNfVURIX0NPTkNBVF84OgoraGVhZGVyX2xlbmd0aD13bXNfdHNfZGVjb2RlX3VkaF9jb25jYXRfOChkYXRhK3BvcywmdWRoX3B0cltudW1faGVhZGVyc10pO2JyZWFrOworY2FzZSBXTVNfVURIX0NPTkNBVF8xNjpoZWFkZXJfbGVuZ3RoPXdtc190c19kZWNvZGVfdWRoX2NvbmNhdDE2KGRhdGErcG9zLCYKK3VkaF9wdHJbbnVtX2hlYWRlcnNdKTticmVhaztjYXNlIFdNU19VREhfU1BFQ0lBTF9TTTpoZWFkZXJfbGVuZ3RoPQogd21zX3RzX2RlY29kZV91ZGhfc3BlY2lhbF9zbShkYXRhK3BvcywmdWRoX3B0cltudW1faGVhZGVyc10pO2JyZWFrO2Nhc2UgCiBXTVNfVURIX1BPUlRfODpoZWFkZXJfbGVuZ3RoPXdtc190c19kZWNvZGVfdWRoX3BvcnRfOChkYXRhK3BvcywmdWRoX3B0clsKIG51bV9oZWFkZXJzXSk7YnJlYWs7Y2FzZSBXTVNfVURIX1BPUlRfMTY6aGVhZGVyX2xlbmd0aD13bXNfdHNfZGVjb2RlX3VkaF9wb3J0MTYoCkBAIC0xODY1LDY2ICsxODYzLDY2IEBACiBkYXRhK3BvcywmdWRoX3B0cltudW1faGVhZGVyc10pO2JyZWFrO31pZigoVUlOVDE2KXBvcysoVUlOVDE2KWhlYWRlcl9sZW5ndGg+CiBXTVNfTUFYX0xFTil7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4MjBceDZmXHg2Nlx4MjBceDYyXHg3OVx4NzRceDY1XHg3M1x4MjBceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDY0XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDU1XHg0NFx4NDhceDRjXHgyMFx4NzZceDYxXHg2Y1x4NzVceDY1XHgyMFx4NmZceDY2XHgyMFx4MjVceDY0IgotLHVkaGwpO3JldHVybigweGNkYys2NDc4LTB4MjYyYSk7fWVsc2UgaWYoaGVhZGVyX2xlbmd0aCE9KDB4MTQ0MysxOTYxLTB4MWJlYykpeworLHVkaGwpO3JldHVybigweDQ2ZCs4MTY2LTB4MjQ1Myk7fWVsc2UgaWYoaGVhZGVyX2xlbmd0aCE9KDB4YjQ0KzY1OTgtMHgyNTBhKSl7CiBwb3MrPWhlYWRlcl9sZW5ndGg7bnVtX2hlYWRlcnMrKzt9ZWxzZXthdF9wcmludChMT0dfREVCVUcsCiAiXHg0Mlx4NjFceDY0XHgyMFx4NTVceDQ0XHg0OFx4M2FceDIwXHg3MFx4NmZceDczXHgzZFx4MjVceDY0XHgyY1x4MjBceDY0XHg2MVx4NzRceDYxXHg1Ylx4NzBceDZmXHg3M1x4NWRceDNkXHgyNVx4NjQiCi0scG9zLGRhdGFbcG9zXSk7Km51bV9oZWFkZXJzX3B0cj0oMHg1KzMwOTItMHhjMTkpO3JldHVybigweDEwNGIrNTE1Ni0weDI0NmYpO319CisscG9zLGRhdGFbcG9zXSk7Km51bV9oZWFkZXJzX3B0cj0oMHg1OSsxOTA4LTB4N2NkKTtyZXR1cm4oMHhkNTkrMTMyOS0weDEyOGEpO319CiBpZihudW1faGVhZGVycz49V01TX01BWF9VRF9IRUFERVJTKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NzVceDY0XHg2OFx4M2FceDIwXHg0ZVx4NzVceDZkXHgyMFx4NDhceDY1XHg2MVx4NjRceDY1XHg3Mlx4NzNceDIwXHg2OFx4NjFceDczXHgyMFx4NjVceDc4XHg2M1x4NjVceDY1XHg2NFx4NjVceDY0XHgyMFx4NTdceDRkXHg1M1x4NWZceDRkXHg0MVx4NThceDVmXHg1NVx4NDRceDVmXHg0OFx4NDVceDQxXHg0NFx4NDVceDUyXHg1MyIKLSk7cG9zPXVkaGwrKDB4MjJkNisyMTctMHgyM2FlKTt9aWYocG9zIT0odWRobCsoMHgzZDErMjI4MC0weGNiOCkpKXthdF9wcmludCgKKyk7cG9zPXVkaGwrKDB4MWRhOSs1MjYtMHgxZmI2KTt9aWYocG9zIT0odWRobCsoMHhiYTUrNTk2OC0weDIyZjQpKSl7YXRfcHJpbnQoCiBMT0dfREVCVUcsCiAiXHg1M1x4NGRceDUzXHgyMFx4NTVceDQ0XHg0OFx4MjBceDYzXHg2Zlx4NzVceDZjXHg2NFx4MjBceDZlXHg2Zlx4NzRceDIwXHg2Mlx4NjVceDIwXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg2NCIKLSk7bnVtX2hlYWRlcnM9KDB4MTJjNis0NTk0LTB4MjRiOCk7dWRobD0oMHgzZDcrMzE4Ny0weDEwNGEpO31pZihudW1faGVhZGVycz4KLSgweDdiMCs3MjMtMHhhODMpKXsqbnVtX2hlYWRlcnNfcHRyPW51bV9oZWFkZXJzO31yZXR1cm4gdWRobDt9VUlOVDggCispO251bV9oZWFkZXJzPSgweGEwZis2MTQ4LTB4MjIxMyk7dWRobD0oMHgxNTBmKzM1NjctMHgyMmZlKTt9aWYobnVtX2hlYWRlcnM+CisoMHgxNDk0Kzc1NS0weDE3ODcpKXsqbnVtX2hlYWRlcnNfcHRyPW51bV9oZWFkZXJzO31yZXR1cm4gdWRobDt9VUlOVDggCiB3bXNfdHNfZGVjb2RlX2d3X3VzZXJfZGF0YShjb25zdCB3bXNfZ3dfZGNzX3NfdHlwZSpkY3MsY29uc3QgVUlOVDggbGVuLGNvbnN0IAogVUlOVDgqZGF0YSxjb25zdCBVSU5UOCB1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQsd21zX2d3X3VzZXJfZGF0YV9zX3R5cGUqCi11c2VyX2RhdGEpe1VJTlQ4IGkscG9zPSgweDExMjgrMjIwLTB4MTIwNCk7VUlOVDggZmlsbF9iaXRzPSgweDZkOSs5MTctMHhhNmUpOwotVUlOVDggdXNlcl9kYXRhX2xlbmd0aDtVSU5UOCB1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD0oMHgzZjMrMTEzNy0weDg2NCk7aWYoZGNzPT0KLU5VTEx8fGRhdGE9PU5VTEx8fHVzZXJfZGF0YT09TlVMTCl7YXRfcHJpbnQoTE9HX0RFQlVHLAordXNlcl9kYXRhKXtVSU5UOCBpLHBvcz0oMHgyNGJhKzM0Ny0weDI2MTUpO1VJTlQ4IGZpbGxfYml0cz0oMHgxZTBiKzExMzYtMHgyMjdiKTsKK1VJTlQ4IHVzZXJfZGF0YV9sZW5ndGg7VUlOVDggdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg9KDB4MWY5KzU1NDYtMHgxN2EzKTtpZihkY3MKKz09TlVMTHx8ZGF0YT09TlVMTHx8dXNlcl9kYXRhPT1OVUxMKXthdF9wcmludChMT0dfREVCVUcsCiAiXHg2ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2N1x4NzdceDVmXHg3NVx4NzNceDY1XHg3Mlx4NWZceDY0XHg2MVx4NzRceDYxIgotKTtyZXR1cm4oMHgxZCs4NTIzLTB4MjE2OCk7fSh2b2lkKW1lbXNldCh1c2VyX2RhdGEsKDB4ODBjKzEyOTMtMHhkMTkpLHNpemVvZigKLXdtc19nd191c2VyX2RhdGFfc190eXBlKSk7aWYobGVuPT0oMHgyMjYrNTQ2OS0weDE3ODMpKXtyZXR1cm4oMHgzZGQrMTcxMy0weGE4ZSk7Ci19aWYoZGNzLT5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKGxlbj5XTVNfU01TX1VETF9NQVhfN19CSVQpewotYXRfcHJpbnQoTE9HX0RFQlVHLAorKTtyZXR1cm4oMHgxMDkwKzM2OTUtMHgxZWZmKTt9KHZvaWQpbWVtc2V0KHVzZXJfZGF0YSwoMHgxYTczKzI1NjEtMHgyNDc0KSxzaXplb2YKKyh3bXNfZ3dfdXNlcl9kYXRhX3NfdHlwZSkpO2lmKGxlbj09KDB4MWNhNSsxNzI1LTB4MjM2Mikpe3JldHVybgorKDB4ZWY3KzExOTgtMHgxM2E1KTt9aWYoZGNzLT5hbHBoYWJldD09V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQpe2lmKGxlbj4KK1dNU19TTVNfVURMX01BWF83X0JJVCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzVceDczXHg2NVx4NzJceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZVx4MjBceDZkXHg2MVx4NzhceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDIwXHg2Nlx4NmZceDcyXHgyMFx4NjdceDc3XHgyMFx4MzdceDJkXHg2Mlx4NjlceDc0XHgyMFx4NjFceDZjXHg3MFx4NjhceDYxXHg2Mlx4NjVceDc0IgotKTtyZXR1cm4oMHg0MmMrNTAxMC0weDE3YmUpO311c2VyX2RhdGFfbGVuZ3RoPWxlbjtpZih1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpeworKTtyZXR1cm4oMHgxMTk0KzE2NzEtMHgxODFiKTt9dXNlcl9kYXRhX2xlbmd0aD1sZW47aWYodXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50KXsKIHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPXdtc190c19kZWNvZGVfdXNlcl9kYXRhX2hlYWRlcihkYXRhW3Bvc10sZGF0YStwb3MsJgogdXNlcl9kYXRhLT5udW1faGVhZGVycyx1c2VyX2RhdGEtPmhlYWRlcnMpO31pZih1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD5sZW4pewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzVceDczXHg2NVx4NzJceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDY4XHg2NVx4NjFceDY0XHg2NVx4NzJceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4M2VceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNceDIwXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4IgotKTtyZXR1cm4oMHgyYmMrNjE5NC0weDFhZWUpO31pZih1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aD4oMHgyMTc1KzMxMS0weDIyYWMpKXsKLWZpbGxfYml0cz0oKGxlbiooMHgzMmErNDE1Mi0weDEzNWIpKS0oKHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKwotKDB4NGE0KzcxNTItMHgyMDkzKSkqKDB4MTU0ZCs0MjA1LTB4MjViMikpKSUoMHg2YjArNjU1Ni0weDIwNDUpO3VzZXJfZGF0YV9sZW5ndGgKLT0oVUlOVDgpKCgobGVuKigweDgyOCs0MDQ4LTB4MTdmMSkpLSgodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrCi0oMHg2OGYrMzEzOS0weDEyZDEpKSooMHg5ZjErMzIwNS0weDE2NmUpKSkvKDB4MTg5NiszMzIxLTB4MjU4OCkpO3Bvcz0KLXVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweDE3MTErMzMwNC0weDIzZjgpO2lmKGZpbGxfYml0cyE9KDB4MTVjMSszMTAyLTB4MjFkZikpCi17ZmlsbF9iaXRzPSgweDIzMDgrNTE0LTB4MjUwMiktZmlsbF9iaXRzO319aT13bXNfdHNfdW5wYWNrX2d3XzdfYml0X2NoYXJzKCZkYXRhWwotcG9zXSx1c2VyX2RhdGFfbGVuZ3RoLFdNU19NQVhfTEVOLGZpbGxfYml0cyx1c2VyX2RhdGEtPnNtX2RhdGEpO3VzZXJfZGF0YS0+Ci1zbV9sZW49dXNlcl9kYXRhX2xlbmd0aDt9ZWxzZXtpZihsZW4+V01TX1NNU19VRExfTUFYXzhfQklUKXthdF9wcmludChMT0dfREVCVUcsCispO3JldHVybigweDgwNys0MTUwLTB4MTgzZCk7fWlmKHVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoPigweGQ3Nys0MDY5LTB4MWQ1YykpeworZmlsbF9iaXRzPSgobGVuKigweDJlZCsyNDI3LTB4YzYxKSktKCh1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHgxNTYrMzIwOS0weGRkZSkKKykqKDB4YzM3KzMwNTItMHgxODFiKSkpJSgweGJhMSs2NzA0LTB4MjVjYSk7dXNlcl9kYXRhX2xlbmd0aD0oVUlOVDgpKCgobGVuKgorKDB4MmIyKzU2NTUtMHgxOGMyKSktKCh1c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCsoMHg2YmQrNTE1NS0weDFhZGYpKSoKKygweGE3ZCsxNjk2LTB4MTExNSkpKS8oMHgyMTQyKzY0Mi0weDIzYmQpKTtwb3M9dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrCisoMHg2YjErNDA2My0weDE2OGYpO2lmKGZpbGxfYml0cyE9KDB4MWQwNys3NzEtMHgyMDBhKSl7ZmlsbF9iaXRzPQorKDB4YTZiKzEyMTctMHhmMjQpLWZpbGxfYml0czt9fWk9d21zX3RzX3VucGFja19nd183X2JpdF9jaGFycygmZGF0YVtwb3NdLAordXNlcl9kYXRhX2xlbmd0aCxXTVNfTUFYX0xFTixmaWxsX2JpdHMsdXNlcl9kYXRhLT5zbV9kYXRhKTt1c2VyX2RhdGEtPnNtX2xlbj0KK3VzZXJfZGF0YV9sZW5ndGg7fWVsc2V7aWYobGVuPldNU19TTVNfVURMX01BWF84X0JJVCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzVceDczXHg2NVx4NzJceDIwXHg2NFx4NjFceDc0XHg2MVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDIwXHgzZVx4MjBceDZkXHg2MVx4NzhceDIwXHg3Nlx4NjFceDZjXHg3NVx4NjVceDIwXHg2Nlx4NmZceDcyXHgyMFx4MzhceDJkXHg2Mlx4NjlceDc0XHgyMFx4NjNceDY4XHg2MVx4NzJceDYxXHg3Mlx4NjFceDYzXHg3NFx4NjVceDcyXHg3MyIKLSk7cmV0dXJuKDB4YTM2KzEwOTMtMHhlN2IpO311c2VyX2RhdGFfbGVuZ3RoPWxlbjtpZih1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpeworKTtyZXR1cm4oMHhiNjkrNDg1Ni0weDFlNjEpO311c2VyX2RhdGFfbGVuZ3RoPWxlbjtpZih1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQpewogdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg9d21zX3RzX2RlY29kZV91c2VyX2RhdGFfaGVhZGVyKGRhdGFbcG9zXSxkYXRhK3BvcywmCiB1c2VyX2RhdGEtPm51bV9oZWFkZXJzLHVzZXJfZGF0YS0+aGVhZGVycyk7aWYodXNlcl9kYXRhX2hlYWRlcl9sZW5ndGg+bGVuKXsKIGF0X3ByaW50KExPR19ERUJVRywKICJceDc1XHg3M1x4NjVceDcyXHgyMFx4NjRceDYxXHg3NFx4NjFceDIwXHg2OFx4NjVceDYxXHg2NFx4NjVceDcyXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDNlXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OCIKLSk7cmV0dXJuKDB4MWQ1Nis2OS0weDFkOWIpO31wb3MrPXVzZXJfZGF0YV9oZWFkZXJfbGVuZ3RoKygweGY0Kzc0NzktMHgxZTJhKTsKLXVzZXJfZGF0YV9sZW5ndGg9KGxlbi11c2VyX2RhdGFfaGVhZGVyX2xlbmd0aCktKDB4NGQxKzE5NzctMHhjODkpO31tZW1jcHkoCispO3JldHVybigweDM1YiszOTAyLTB4MTI5OSk7fXBvcys9dXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgrKDB4MTdlNisyMTQ3LTB4MjA0OCk7Cit1c2VyX2RhdGFfbGVuZ3RoPShsZW4tdXNlcl9kYXRhX2hlYWRlcl9sZW5ndGgpLSgweDEwNzMrMzg4NC0weDFmOWUpO31tZW1jcHkoCiB1c2VyX2RhdGEtPnNtX2RhdGEsZGF0YStwb3MsdXNlcl9kYXRhX2xlbmd0aCk7dXNlcl9kYXRhLT5zbV9sZW49dXNlcl9kYXRhX2xlbmd0aAogO2k9KFVJTlQ4KXVzZXJfZGF0YS0+c21fbGVuO31wb3MrPWk7cmV0dXJuIHBvczt9d21zX3N0YXR1c19lX3R5cGUgCiB3bXNfdHNfZGVjb2RlX2RlbGl2ZXIoY29uc3QgVF96VWZpU21zX1Jhd1RzRGF0YSpwdFJhd1RzRGF0YSwKIHdtc19nd19kZWxpdmVyX3NfdHlwZSpkZWxpdmVyKXt3bXNfc3RhdHVzX2VfdHlwZSBzdD1XTVNfT0tfUzt1aW50MzIgcG9zPQotKDB4MTNlYysxNDE3LTB4MTk3NSksaTtjb25zdCBVSU5UOCpkYXRhPXB0UmF3VHNEYXRhLT5kYXRhO2lmKHB0UmF3VHNEYXRhPT1OVUxMfHwKKygweDFjNSszNjEzLTB4ZmUyKSxpO2NvbnN0IFVJTlQ4KmRhdGE9cHRSYXdUc0RhdGEtPmRhdGE7aWYocHRSYXdUc0RhdGE9PU5VTEx8fAogZGVsaXZlcj09TlVMTCl7cHJpbnRmKAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjRceDY1XHg2Y1x4NjlceDc2XHg2NVx4NzIiCi0pO3JldHVybiBXTVNfTlVMTF9QVFJfUzt9ZWxzZSBpZigoZGF0YVtwb3NdJigweGFmNys3MTIzLTB4MjZjNykpIT0KLSgweDE1NTYrMzAyLTB4MTY4NCkpe3ByaW50ZigKKyk7cmV0dXJuIFdNU19OVUxMX1BUUl9TO31lbHNlIGlmKChkYXRhW3Bvc10mKDB4MTBiZCs5ODEtMHgxNDhmKSkhPQorKDB4YjNkKzI2OTgtMHgxNWM3KSl7cHJpbnRmKAogIlx4NjlceDZlXHg3Nlx4NjFceDZjXHg2OVx4NjRceDIwXHg3NFx4NzBceDY0XHg3NVx4MjBceDc0XHg3OVx4NzBceDY1XHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2NFx4NjVceDZjXHg2OVx4NzZceDY1XHg3MiIKICk7cmV0dXJuIFdNU19JTlZBTElEX1RQRFVfVFlQRV9TO31lbHNle2RlbGl2ZXItPm1vcmU9KGRhdGFbcG9zXSYKLSgweDE3ODArMTI4OC0weDFjODQpKT9GQUxTRTpUUlVFO2RlbGl2ZXItPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0oZGF0YVtwb3NdJgotKDB4NzErMjY3MC0weGFiZikpP1RSVUU6RkFMU0U7ZGVsaXZlci0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PShkYXRhW3Bvc10mCi0oMHg4NWIrNDk4NS0weDFiOTQpKT9UUlVFOkZBTFNFO2RlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD0oZGF0YVtwb3NdJgotKDB4MTAzNisyNDMtMHgxMGE5KSk/VFJVRTpGQUxTRTtwb3MrKztpPXdtc190c19kZWNvZGVfYWRkcmVzcygmZGF0YVtwb3NdLCYKLWRlbGl2ZXItPmFkZHJlc3MpO2lmKGk9PSgweDQ5Mys3MDY4LTB4MjAyZikpe3ByaW50ZigKKygweDE5MTgrMTcyNi0weDFmZDIpKT9GQUxTRTpUUlVFO2RlbGl2ZXItPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0oZGF0YVtwb3NdJgorKDB4MTFhMSsyNzI1LTB4MWMyNikpP1RSVUU6RkFMU0U7ZGVsaXZlci0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PShkYXRhW3Bvc10mCisoMHgzNDMrNjIwMy0weDFiM2UpKT9UUlVFOkZBTFNFO2RlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD0oZGF0YVtwb3NdJgorKDB4NzlhKzM4ODktMHgxNjRiKSk/VFJVRTpGQUxTRTtwb3MrKztpPXdtc190c19kZWNvZGVfYWRkcmVzcygmZGF0YVtwb3NdLCYKK2RlbGl2ZXItPmFkZHJlc3MpO2lmKGk9PSgweDEyMTcrMjU3Ni0weDFjMjcpKXtwcmludGYoCiAiXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4MjBceDczXHg2OVx4N2FceDY1XHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg2NFx4NjVceDZjXHg2OVx4NzZceDY1XHg3MiIKICk7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7ZGVsaXZlci0+cGlkPSh3bXNfcGlkX2VfdHlwZSlkYXRhW3Bvc107CiBwb3MrKztwb3MrPXdtc190c19kZWNvZGVfZGNzKGRhdGErcG9zLCZkZWxpdmVyLT5kY3MpO2lmKGRlbGl2ZXItPmRjcy4KQEAgLTE5MzIsNzUgKzE5MzAsNzQgQEAKIFdNU19QSURfUkVUVVJOX0NBTEwpe2RlbGl2ZXItPmRjcy5tc2dfd2FpdGluZz1XTVNfR1dfTVNHX1dBSVRJTkdfU1RPUkU7ZGVsaXZlci0+CiBkY3MubXNnX3dhaXRpbmdfYWN0aXZlPVRSVUU7ZGVsaXZlci0+ZGNzLm1zZ193YWl0aW5nX2tpbmQ9CiBXTVNfR1dfTVNHX1dBSVRJTkdfVk9JQ0VNQUlMO319aT13bXNfdHNfZGVjb2RlX3RpbWVzdGFtcChkYXRhK3BvcywmZGVsaXZlci0+Ci10aW1lc3RhbXApO2lmKGk9PSgweDNiNCsxODQ4LTB4YWVjKSl7cHJpbnRmKAordGltZXN0YW1wKTtpZihpPT0oMHhjMjErMTQyNS0weDExYjIpKXtwcmludGYoCiAiXHg2OVx4NmVceDc2XHg2MVx4NmNceDY5XHg2NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4MjBceDc2XHg2MVx4NmNceDc1XHg2NVx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjRceDY1XHg2Y1x4NjlceDc2XHg2NVx4NzIiCiApO3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1ZBTFVFX1M7fXBvcys9aTtwb3MrKztpPXdtc190c19kZWNvZGVfZ3dfdXNlcl9kYXRhKCYKLWRlbGl2ZXItPmRjcyxkYXRhW3Bvcy0oMHhkNjYrMjY0NS0weDE3YmEpXSxkYXRhK3BvcyxkZWxpdmVyLT4KK2RlbGl2ZXItPmRjcyxkYXRhW3Bvcy0oMHgyMzliKzc1Mi0weDI2OGEpXSxkYXRhK3BvcyxkZWxpdmVyLT4KIHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCwmZGVsaXZlci0+dXNlcl9kYXRhKTtpZihpPldNU19TTVNfVURMX01BWF84X0JJVCl7cHJpbnRmCiAoCiAiXHg1NVx4NzNceDY1XHg3Mlx4MjBceDQ0XHg2MVx4NzRceDYxXHgyMFx4NGNceDY1XHg2ZVx4NjdceDc0XHg2OFx4MjBceDY4XHg2MVx4NzNceDIwXHg2NVx4NzhceDYzXHg2NVx4NjVceDY0XHg2NVx4NjRceDIwXHg2M1x4NjFceDcwXHg2MVx4NjNceDY5XHg3NFx4NzlceDNhXHgyMFx4NTVceDQ0XHg0Y1x4MjBceDNkXHgyMFx4MjVceDZjXHg3NSIKICxpKTtzdD1XTVNfSU5WQUxJRF9VU0VSX0RBVEFfU0laRV9TO31wb3MrPWk7cmV0dXJuIHN0O319VUlOVDggCiB3bXNfdHNfZGVjb2RlX2d3X3ZhbGlkaXR5KGNvbnN0IFVJTlQ4KmRhdGEsd21zX2d3X3ZhbGlkaXR5X3NfdHlwZSp2YWxpZGl0eSl7Ci1VSU5UOCBpLHBvcz0oMHgxNzk5KzI4MzUtMHgyMmFjKTtpZihkYXRhPT1OVUxMfHx2YWxpZGl0eT09TlVMTCl7YXRfcHJpbnQoCi1MT0dfREVCVUcsCitVSU5UOCBpLHBvcz0oMHg4NjErMTU3OS0weGU4Yyk7aWYoZGF0YT09TlVMTHx8dmFsaWRpdHk9PU5VTEwpe2F0X3ByaW50KExPR19ERUJVRworLAogIlx4NmVceDc1XHg2Y1x4NmNceDIwXHg3MFx4NmZceDY5XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDc3XHg2ZFx4NzNceDVmXHg3NFx4NzNceDVmXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHg1Zlx4NjdceDc3XHg1Zlx4NzZceDYxXHg2Y1x4NjlceDY0XHg2OVx4NzRceDc5IgotKTtyZXR1cm4oMHgyZGYrNDg1NS0weDE1ZDYpO31lbHNle3N3aXRjaCh2YWxpZGl0eS0+Zm9ybWF0KXtjYXNlIAotV01TX0dXX1ZBTElESVRZX05PTkU6bWVtc2V0KHZhbGlkaXR5LCgweDljYysxOTY5LTB4MTE3ZCksc2l6ZW9mKAorKTtyZXR1cm4oMHgyODMrNzE5NS0weDFlOWUpO31lbHNle3N3aXRjaCh2YWxpZGl0eS0+Zm9ybWF0KXtjYXNlIAorV01TX0dXX1ZBTElESVRZX05PTkU6bWVtc2V0KHZhbGlkaXR5LCgweDliZCszMjg0LTB4MTY5MSksc2l6ZW9mKAogd21zX2d3X3ZhbGlkaXR5X3NfdHlwZSkpO2JyZWFrO2Nhc2UgV01TX0dXX1ZBTElESVRZX1JFTEFUSVZFOgogelVmaVNtc19EZWNvZGVSZWxhdGl2ZVRpbWUoZGF0YVtwb3NdLCZ2YWxpZGl0eS0+dS50aW1lKTtwb3MrKzticmVhaztjYXNlIAogV01TX0dXX1ZBTElESVRZX0FCU09MVVRFOmk9d21zX3RzX2RlY29kZV90aW1lc3RhbXAoZGF0YStwb3MsJnZhbGlkaXR5LT51LnRpbWUpOwogcG9zKz1pO2JyZWFrO2Nhc2UgV01TX0dXX1ZBTElESVRZX0VOSEFOQ0VEOmJyZWFrO2RlZmF1bHQ6YnJlYWs7fXJldHVybiBwb3M7fX0KIHdtc19zdGF0dXNfZV90eXBlIHdtc190c19kZWNvZGVfc3VibWl0KGNvbnN0IFRfelVmaVNtc19SYXdUc0RhdGEqcHRSYXdUc0RhdGEsCiB3bXNfZ3dfc3VibWl0X3NfdHlwZSpzdWJtaXQpe3dtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO3VpbnQzMiBwb3M9Ci0oMHg2NjMrNTE0MS0weDFhNzgpLGk7Y29uc3QgVUlOVDgqZGF0YTtpZihwdFJhd1RzRGF0YT09TlVMTHx8c3VibWl0PT1OVUxMKXsKKygweDFhNmErMTkwNC0weDIxZGEpLGk7Y29uc3QgVUlOVDgqZGF0YTtpZihwdFJhd1RzRGF0YT09TlVMTHx8c3VibWl0PT1OVUxMKXsKIHByaW50ZigKICJceDRlXHg3NVx4NmNceDZjXHgyMFx4NzBceDZmXHg2OVx4NmVceDc0XHg2NVx4NzJceDIwXHg2OVx4NmVceDIwXHg3N1x4NmRceDczXHg1Zlx4NzRceDczXHg1Zlx4NjRceDY1XHg2M1x4NmZceDY0XHg2NVx4NWZceDczXHg3NVx4NjJceDZkXHg2OVx4NzRceDIxIgogKTtyZXR1cm4gV01TX05VTExfUFRSX1M7fWRhdGE9cHRSYXdUc0RhdGEtPmRhdGE7c3VibWl0LT5yZWplY3RfZHVwbGljYXRlcz0oZGF0YVsKLXBvc10mKDB4MjBlOCsxMzA1LTB4MjVmZCkpP1RSVUU6RkFMU0U7c3VibWl0LT52YWxpZGl0eS5mb3JtYXQ9KAotd21zX2d3X3ZhbGlkaXR5X2Zvcm1hdF9lX3R5cGUpKChkYXRhW3Bvc10mKDB4ODlkKzIyOTYtMHgxMTdkKSk+PgotKDB4NmEwKzUxNzUtMHgxYWQ0KSk7c3VibWl0LT5zdGF0dXNfcmVwb3J0X2VuYWJsZWQ9KGRhdGFbcG9zXSYKLSgweDEyOSs3NDQ4LTB4MWUyMSkpP1RSVUU6RkFMU0U7c3VibWl0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9KGRhdGFbcG9zXSYKLSgweDQ5YSs1MTgyLTB4MTg5OCkpP1RSVUU6RkFMU0U7c3VibWl0LT5yZXBseV9wYXRoX3ByZXNlbnQ9KGRhdGFbcG9zXSYKLSgweGYzNiszMzctMHgxMDA3KSk/VFJVRTpGQUxTRTtwb3MrKztzdWJtaXQtPm1lc3NhZ2VfcmVmZXJlbmNlPWRhdGFbcG9zXTtwb3MrKztpCi09d21zX3RzX2RlY29kZV9hZGRyZXNzKCZkYXRhW3Bvc10sJnN1Ym1pdC0+YWRkcmVzcyk7aWYoaT09KDB4MTYzYisxNjM2LTB4MWM5ZikpewotcmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7c3VibWl0LT5waWQ9KHdtc19waWRfZV90eXBlKWRhdGFbcG9zXTtwb3MKLSsrO3Bvcys9d21zX3RzX2RlY29kZV9kY3MoZGF0YStwb3MsJnN1Ym1pdC0+ZGNzKTtpPXdtc190c19kZWNvZGVfZ3dfdmFsaWRpdHkoCi1kYXRhK3Bvcywmc3VibWl0LT52YWxpZGl0eSk7aWYoKHN1Ym1pdC0+dmFsaWRpdHkuZm9ybWF0IT1XTVNfR1dfVkFMSURJVFlfTk9ORSkmJgotKGk9PSgweDkzNCs1ODg5LTB4MjAzNSkpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7cG9zKys7aT0KLXdtc190c19kZWNvZGVfZ3dfdXNlcl9kYXRhKCZzdWJtaXQtPmRjcyxkYXRhW3Bvcy0oMHgyMmRkKzUwMy0weDI0ZDMpXSxkYXRhK3BvcywKLXN1Ym1pdC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50LCZzdWJtaXQtPnVzZXJfZGF0YSk7aWYoaT5XTVNfU01TX1VETF9NQVhfOF9CSVQpCi17cHJpbnRmKAorcG9zXSYoMHhlOWQrMjMwMi0weDE3OTcpKT9UUlVFOkZBTFNFO3N1Ym1pdC0+dmFsaWRpdHkuZm9ybWF0PSgKK3dtc19nd192YWxpZGl0eV9mb3JtYXRfZV90eXBlKSgoZGF0YVtwb3NdJigweDFhY2ErMzAxMi0weDI2NzYpKT4+CisoMHg3MDArMTA5NS0weGI0NCkpO3N1Ym1pdC0+c3RhdHVzX3JlcG9ydF9lbmFibGVkPShkYXRhW3Bvc10mKDB4MTdhKzU4NjMtMHgxODQxKQorKT9UUlVFOkZBTFNFO3N1Ym1pdC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PShkYXRhW3Bvc10mKDB4NjQzKzgyMi0weDkzOSkpP1RSVUUKKzpGQUxTRTtzdWJtaXQtPnJlcGx5X3BhdGhfcHJlc2VudD0oZGF0YVtwb3NdJigweDEzODgrNTEyMS0weDI3MDkpKT9UUlVFOkZBTFNFOworcG9zKys7c3VibWl0LT5tZXNzYWdlX3JlZmVyZW5jZT1kYXRhW3Bvc107cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbCitwb3NdLCZzdWJtaXQtPmFkZHJlc3MpO2lmKGk9PSgweDE2ZDIrMjMyLTB4MTdiYSkpe3JldHVybiBXTVNfSU5WQUxJRF9QQVJNX1NJWkVfUworO31wb3MrPWk7c3VibWl0LT5waWQ9KHdtc19waWRfZV90eXBlKWRhdGFbcG9zXTtwb3MrKztwb3MrPXdtc190c19kZWNvZGVfZGNzKGRhdGEKKytwb3MsJnN1Ym1pdC0+ZGNzKTtpPXdtc190c19kZWNvZGVfZ3dfdmFsaWRpdHkoZGF0YStwb3MsJnN1Ym1pdC0+dmFsaWRpdHkpO2lmKCgKK3N1Ym1pdC0+dmFsaWRpdHkuZm9ybWF0IT1XTVNfR1dfVkFMSURJVFlfTk9ORSkmJihpPT0oMHhiZjYrNDg2My0weDFlZjUpKSl7cmV0dXJuCisgV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7cG9zKys7aT13bXNfdHNfZGVjb2RlX2d3X3VzZXJfZGF0YSgmc3VibWl0LT4KK2RjcyxkYXRhW3Bvcy0oMHg4YTArNjgxNy0weDIzNDApXSxkYXRhK3BvcyxzdWJtaXQtPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudCwmCitzdWJtaXQtPnVzZXJfZGF0YSk7aWYoaT5XTVNfU01TX1VETF9NQVhfOF9CSVQpe3ByaW50ZigKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4M2FceDIwXHg1NVx4NDRceDRjXHgyMFx4M2RceDIwXHgyNVx4NmNceDc1IgogLGkpO3N0PVdNU19JTlZBTElEX1VTRVJfREFUQV9TSVpFX1M7fXBvcys9aTtyZXR1cm4gc3Q7fXdtc19zdGF0dXNfZV90eXBlIAogd21zX3RzX2RlY29kZV9zdGF0dXNfcmVwb3J0KGNvbnN0IFRfelVmaVNtc19SYXdUc0RhdGEqcHRSYXdUc0RhdGEsCiB3bXNfZ3dfc3RhdHVzX3JlcG9ydF9zX3R5cGUqc3RhdHVzX3JlcG9ydCl7d21zX3N0YXR1c19lX3R5cGUgc3Q9V01TX09LX1M7dWludDMyIAotcG9zPSgweDU4ZCs0NTA3LTB4MTcyOCksaTtjb25zdCBVSU5UOCpkYXRhO2lmKHB0UmF3VHNEYXRhPT1OVUxMfHxzdGF0dXNfcmVwb3J0PT0KK3Bvcz0oMHg4MmYrNzYxMy0weDI1ZWMpLGk7Y29uc3QgVUlOVDgqZGF0YTtpZihwdFJhd1RzRGF0YT09TlVMTHx8c3RhdHVzX3JlcG9ydD09CiBOVUxMKXtwcmludGYoCiAiXHg0ZVx4NzVceDZjXHg2Y1x4MjBceDcwXHg2Zlx4NjlceDZlXHg3NFx4NjVceDcyXHgyMFx4NjlceDZlXHgyMFx4NzdceDZkXHg3M1x4NWZceDc0XHg3M1x4NWZceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDVmXHg3M1x4NzRceDYxXHg3NFx4NzVceDczXHg1Zlx4NzJceDY1XHg3MFx4NmZceDcyXHg3NFx4MjEiCiApO3JldHVybiBXTVNfTlVMTF9QVFJfUzt9ZGF0YT1wdFJhd1RzRGF0YS0+ZGF0YTtzdGF0dXNfcmVwb3J0LT5tb3JlPWRhdGFbcG9zXSYKLSgweDVkMCszMjY2LTB4MTI4ZSk/RkFMU0U6VFJVRTtzdGF0dXNfcmVwb3J0LT5zdGF0dXNfcmVwb3J0X3F1YWxpZmllcj1kYXRhW3Bvc10mCi0oMHg1MSs2MDgwLTB4MTdmMSk/VFJVRTpGQUxTRTtzdGF0dXNfcmVwb3J0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9KGRhdGFbcG9zXQotJigweDFhNys1ODY5LTB4MTg1NCkpP1RSVUU6RkFMU0U7cG9zKys7c3RhdHVzX3JlcG9ydC0+bWVzc2FnZV9yZWZlcmVuY2U9ZGF0YVtwb3MKLV07cG9zKys7aT13bXNfdHNfZGVjb2RlX2FkZHJlc3MoJmRhdGFbcG9zXSwmc3RhdHVzX3JlcG9ydC0+YWRkcmVzcyk7aWYoaT09Ci0oMHgxNDFmKzQxMzAtMHgyNDQxKSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7aT0KKygweGI5MCs0MDMyLTB4MWI0Yyk/RkFMU0U6VFJVRTtzdGF0dXNfcmVwb3J0LT5zdGF0dXNfcmVwb3J0X3F1YWxpZmllcj1kYXRhW3Bvc10mCisoMHhmZDIrMzgxOS0weDFlOWQpP1RSVUU6RkFMU0U7c3RhdHVzX3JlcG9ydC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PShkYXRhW3BvcworXSYoMHhlMGMrMjY3Ny0weDE4NDEpKT9UUlVFOkZBTFNFO3BvcysrO3N0YXR1c19yZXBvcnQtPm1lc3NhZ2VfcmVmZXJlbmNlPWRhdGFbCitwb3NdO3BvcysrO2k9d21zX3RzX2RlY29kZV9hZGRyZXNzKCZkYXRhW3Bvc10sJnN0YXR1c19yZXBvcnQtPmFkZHJlc3MpO2lmKGk9PQorKDB4NmJjKzM2NzUtMHgxNTE3KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fU0laRV9TO31wb3MrPWk7aT0KIHdtc190c19kZWNvZGVfdGltZXN0YW1wKGRhdGErcG9zLCZzdGF0dXNfcmVwb3J0LT50aW1lc3RhbXApO2lmKGk9PQotKDB4ODE3KzM5MzctMHgxNzc4KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2k9CisoMHhhODIrNjk0LTB4ZDM4KSl7cmV0dXJuIFdNU19JTlZBTElEX1BBUk1fVkFMVUVfUzt9cG9zKz1pO2k9CiB3bXNfdHNfZGVjb2RlX3RpbWVzdGFtcChkYXRhK3Bvcywmc3RhdHVzX3JlcG9ydC0+ZGlzY2hhcmdlX3RpbWUpO2lmKGk9PQotKDB4OWU1KzE0NDgtMHhmOGQpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7c3RhdHVzX3JlcG9ydC0+CisoMHhjMDgrMTk3OS0weDEzYzMpKXtyZXR1cm4gV01TX0lOVkFMSURfUEFSTV9WQUxVRV9TO31wb3MrPWk7c3RhdHVzX3JlcG9ydC0+CiB0cF9zdGF0dXM9KHdtc190cF9zdGF0dXNfZV90eXBlKWRhdGFbcG9zXTtwb3MrKztzdGF0dXNfcmVwb3J0LT5tYXNrPWRhdGFbcG9zXTsKLXN0YXR1c19yZXBvcnQtPnBpZD0od21zX3BpZF9lX3R5cGUpKDB4MTY3KzI5MzItMHhjZGIpO3N0YXR1c19yZXBvcnQtPnVzZXJfZGF0YS4KLXNtX2xlbj0oMHhhYjQrMjkxOC0weDE2MWEpO3N0YXR1c19yZXBvcnQtPm1hc2smPSgweGUyYis1NDM3LTB4MjI2OSk7aWYoKAotc3RhdHVzX3JlcG9ydC0+bWFzayE9KDB4MjI3Kzc1NzgtMHgxZWMyKSkmJihzdGF0dXNfcmVwb3J0LT5tYXNrIT0KLSgweDIzNDMrNDQzLTB4MjRmZSkpKXtwb3MrKztpZihzdGF0dXNfcmVwb3J0LT5tYXNrJldNU19UUERVX01BU0tfUElEKXsKK3N0YXR1c19yZXBvcnQtPnBpZD0od21zX3BpZF9lX3R5cGUpKDB4MTE5OCsxOTYxLTB4MTk0MSk7c3RhdHVzX3JlcG9ydC0+dXNlcl9kYXRhCisuc21fbGVuPSgweGUzMys0NDIwLTB4MWY3Nyk7c3RhdHVzX3JlcG9ydC0+bWFzayY9KDB4MTA1OSsyMTYyLTB4MTdjYyk7aWYoKAorc3RhdHVzX3JlcG9ydC0+bWFzayE9KDB4NWVmKzQ1NTctMHgxNmJkKSkmJihzdGF0dXNfcmVwb3J0LT5tYXNrIT0KKygweDcyYSs2MzQ1LTB4MWZmMykpKXtwb3MrKztpZihzdGF0dXNfcmVwb3J0LT5tYXNrJldNU19UUERVX01BU0tfUElEKXsKIHN0YXR1c19yZXBvcnQtPnBpZD0od21zX3BpZF9lX3R5cGUpZGF0YVtwb3NdO3BvcysrO31pZihzdGF0dXNfcmVwb3J0LT5tYXNrJgogV01TX1RQRFVfTUFTS19EQ1Mpe3Bvcys9d21zX3RzX2RlY29kZV9kY3MoZGF0YStwb3MsJnN0YXR1c19yZXBvcnQtPmRjcyk7fWlmKAogc3RhdHVzX3JlcG9ydC0+bWFzayZXTVNfVFBEVV9NQVNLX1VTRVJfREFUQSl7cG9zKys7aT13bXNfdHNfZGVjb2RlX2d3X3VzZXJfZGF0YSgKLSZzdGF0dXNfcmVwb3J0LT5kY3MsZGF0YVtwb3MtKDB4MzdiKzQwOTUtMHgxMzc5KV0sZGF0YStwb3Msc3RhdHVzX3JlcG9ydC0+Cismc3RhdHVzX3JlcG9ydC0+ZGNzLGRhdGFbcG9zLSgweGI5Mis2ODQ5LTB4MjY1MildLGRhdGErcG9zLHN0YXR1c19yZXBvcnQtPgogdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50LCZzdGF0dXNfcmVwb3J0LT51c2VyX2RhdGEpO2lmKGk+V01TX1NNU19VRExfTUFYXzhfQklUKXsKIHByaW50ZigKICJceDU1XHg3M1x4NjVceDcyXHgyMFx4NDRceDYxXHg3NFx4NjFceDIwXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjhceDYxXHg3M1x4MjBceDY1XHg3OFx4NjNceDY1XHg2NVx4NjRceDY1XHg2NFx4MjBceDYzXHg2MVx4NzBceDYxXHg2M1x4NjlceDc0XHg3OVx4M2FceDIwXHg1NVx4NDRceDRjXHgyMFx4M2RceDIwXHgyNVx4NmNceDc1IgogLGkpO3N0PVdNU19JTlZBTElEX1VTRVJfREFUQV9TSVpFX1M7fXBvcys9aTt9fWVsc2V7c3RhdHVzX3JlcG9ydC0+bWFzaz0KLSgweDE4MTYrMjQ0MS0weDIxOWYpO31yZXR1cm4gc3Q7fXdtc19zdGF0dXNfZV90eXBlIHdtc190c19kZWNvZGUoY29uc3QgCisoMHg0ODArNTYzLTB4NmIzKTt9cmV0dXJuIHN0O313bXNfc3RhdHVzX2VfdHlwZSB3bXNfdHNfZGVjb2RlKGNvbnN0IAogVF96VWZpU21zX1Jhd1RzRGF0YSpwdFJhd1RzRGF0YSxUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKnB0Q2xpZW50VHNEYXRhKXsKIHdtc19zdGF0dXNfZV90eXBlIHN0PVdNU19PS19TO3dtc19nd19wcF90c19kYXRhX3NfdHlwZSptc2c7aWYocHRSYXdUc0RhdGE9PU5VTEwKIHx8cHRDbGllbnRUc0RhdGE9PU5VTEwpe3JldHVybiBXTVNfTlVMTF9QVFJfUzt9bXNnPSZwdENsaWVudFRzRGF0YS0+dS5nd19wcDsKZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19kYi5jIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKaW5kZXggZWQ0ODAwYy4uZGRhM2IzYyAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2RiLmMKQEAgLTEwMSw4NSArMTAxLDg1IEBACiAjZGVmaW5lIE9VVERBVEVJTlRFUlZBTCA3Nzc2MDAwDQogdHlwZWRlZiBzdHJ1Y3R7Y2hhcipidWZfYWRkcjtpbnQgYnVmX2xlbjt9VF96VWZpU21zX0J1ZkluZm87dHlwZWRlZiBzdHJ1Y3R7aW50IAogdmFsaWQ7Y2hhcipzdHJTUUw7fVRfelVmaVNtc19TUUxNYXA7c3FsaXRlMypnX3pVZmlTbXNfRGJQb2ludGVyPQotKDB4ODBmKzIyNjYtMHgxMGU5KTtleHRlcm4gVF96VWZpU21zX1BhcmFJbmZvIGdfelVmaVNtc19DdXJTbXNQYXJhO2V4dGVybiAKKygweGIwMSs1MjI4LTB4MWY2ZCk7ZXh0ZXJuIFRfelVmaVNtc19QYXJhSW5mbyBnX3pVZmlTbXNfQ3VyU21zUGFyYTtleHRlcm4gCiB1bnNpZ25lZCBsb25nIGdfelVmaVNtc19TdG9yZUNhcGFibGl0eVtaVEVfV01TX01FTU9SWV9NQVhdO2V4dGVybiAKIFRfelVmaVNtc19EZWxTbXMgZ196VWZpU21zX0RlbE1zZztzdGF0aWMgaW50IGlzU3VjZXNzKFRfelVmaVNtc19EYlJlc3VsdCBkYlJzdCl7CiByZXR1cm4gZGJSc3Q9PVpURV9XTVNfREJfT0s/WlVGSV9TVUNDOlpVRklfRkFJTDt9dGltZV90IHp0ZV9nZXRzZWNvbmQoCi1UX3pVZmlTbXNfRGF0ZSBkYXRlKXt0aW1lX3QgdGltZXQ7c3RydWN0IHRtIHRtdGltZT17KDB4MTU3NCszNjgtMHgxNmU0KX07aW50IAotdG1wX2k9KDB4NTAzKzc0NzItMHgyMjMzKTsKLSNpZiAoMHgxMjEyKzIwNTctMHgxYTFiKQ0KLWlmKGF0b2koZGF0ZS55ZWFyKT4oMHgxY2ZkKzEzNzgtMHgyMWZjKXx8YXRvaShkYXRlLnllYXIpPCgweDEzNjcrNDQyMy0weDI0YWUpKXsKK1RfelVmaVNtc19EYXRlIGRhdGUpe3RpbWVfdCB0aW1ldDtzdHJ1Y3QgdG0gdG10aW1lPXsoMHgxNWI1KzM0NzktMHgyMzRjKX07aW50IAordG1wX2k9KDB4ODA4KzEzOTItMHhkNzgpOworI2lmICgweDNhYys4ODUzLTB4MjY0MSkNCitpZihhdG9pKGRhdGUueWVhcik+KDB4NDJjKzkwNC0weDc1MSl8fGF0b2koZGF0ZS55ZWFyKTwoMHhkNzMrMjg2OC0weDE4YTcpKXsKIHByaW50ZigiW1NNU10gZ2V0c2Vjb25kIGVycm9yLCB5ZWFyIG91dCBvZiByYW5nZTogJWQhISEiLGF0b2koZGF0ZS55ZWFyKSk7cmV0dXJuCi0oMHgxNmNiKzQwMDItMHgyNjZkKTt9CisoMHg2ZDYrNTc5OS0weDFkN2QpO30KICNlbmRpZg0KLXRtcF9pPWF0b2koZGF0ZS55ZWFyKTtpZih0bXBfaTwoMHgxYmFhKzYzMy0weDFlMjMpfHx0bXBfaT5JTlRfTUFYLQotKDB4MTE0OSsyNjIwLTB4MWI4NCkpe2F0X3ByaW50KExPR19FUlIsCit0bXBfaT1hdG9pKGRhdGUueWVhcik7aWYodG1wX2k8KDB4ZmNhKzI5OTktMHgxYjgxKXx8dG1wX2k+SU5UX01BWC0KKygweDExYjYrMTYxLTB4MTI1Nikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDY0XHg2MVx4NzRceDY1XHgyZVx4NzlceDY1XHg2MVx4NzJceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweDJkMCsxNzAyLTB4OTc2KTt9dG10aW1lLnRtX3llYXI9dG1wX2krKDB4MTU2ZCs5ODItMHgxMTczKS0KLSgweDljNCs0NTU5LTB4MTQyNyk7dG1wX2k9YXRvaShkYXRlLm1vbnRoKTtpZih0bXBfaTwoMHg3NCszNzQyLTB4ZjEyKXx8dG1wX2k+Ci1JTlRfTUFYLSgweDFkMTUrNzctMHgxZDYxKSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4ZDIyKzIyNjItMHgxNWY4KTt9dG10aW1lLnRtX3llYXI9dG1wX2krKDB4YTFiKzEwMTctMHg2NDQpLQorKDB4MTQ3Nys1NzI4LTB4MjM2Yik7dG1wX2k9YXRvaShkYXRlLm1vbnRoKTtpZih0bXBfaTwoMHg0ZGErMjk0OS0weDEwNWYpfHx0bXBfaT4KK0lOVF9NQVgtKDB4YTc0KzcwOTItMHgyNjI3KSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2ZFx4NmZceDZlXHg3NFx4NjhceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweDEzY2ErMTEyOC0weDE4MzIpO310bXRpbWUudG1fbW9uPXRtcF9pLSgweGFjKzIxNTItMHg5MTMpO3RtcF9pPQotYXRvaShkYXRlLmRheSk7aWYodG1wX2k8KDB4Y2Y4KzU1NzgtMHgyMmMyKXx8dG1wX2k+SU5UX01BWC0oMHg2NGIrMTUyMS0weGMzYikpewotYXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4MzViKzg3NDEtMHgyNTgwKTt9dG10aW1lLnRtX21vbj10bXBfaS0oMHhiZjErOTEtMHhjNGIpO3RtcF9pPQorYXRvaShkYXRlLmRheSk7aWYodG1wX2k8KDB4MThhYyszNDQ1LTB4MjYyMSl8fHRtcF9pPklOVF9NQVgtKDB4MTUyMyszNjc4LTB4MjM4MCkKKyl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2NFx4NjFceDc5XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4oMHg3MjgrNTY4My0weDFkNWIpO310bXRpbWUudG1fbWRheT10bXBfaTt0bXBfaT1hdG9pKGRhdGUuaG91cik7aWYKLSh0bXBfaTwoMHhlZWQrNDA5Ny0weDFlZWUpfHx0bXBfaT5JTlRfTUFYLSgweDEzZTErMjc0Ni0weDFlOWEpKXthdF9wcmludChMT0dfRVJSCi0sCissdG1wX2kpO3JldHVybigweDE3ODArMjgxMS0weDIyN2IpO310bXRpbWUudG1fbWRheT10bXBfaTt0bXBfaT1hdG9pKGRhdGUuaG91cik7CitpZih0bXBfaTwoMHgzMDQrMzQyMS0weDEwNjEpfHx0bXBfaT5JTlRfTUFYLSgweDdmNis1MTMyLTB4MWMwMSkpe2F0X3ByaW50KAorTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2OFx4NmZceDc1XHg3Mlx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSx0bXBfaSk7cmV0dXJuKDB4ODkrODU2LTB4M2UxKTt9dG10aW1lLnRtX2hvdXI9dG1wX2k7dG1wX2k9YXRvaShkYXRlLm1pbik7aWYoCi10bXBfaTwoMHgyMmUwKzEwMTMtMHgyNmQ1KXx8dG1wX2k+SU5UX01BWC0oMHgzZmIrNjA1LTB4NjU3KSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4M2UzKzU1ODQtMHgxOWIzKTt9dG10aW1lLnRtX2hvdXI9dG1wX2k7dG1wX2k9YXRvaShkYXRlLm1pbik7aWYoCit0bXBfaTwoMHg1ODErODExOC0weDI1MzcpfHx0bXBfaT5JTlRfTUFYLSgweDkwMCsxNjYzLTB4ZjdlKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjRceDYxXHg3NFx4NjVceDJlXHg2ZFx4NjlceDZlXHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHRtcF9pKTtyZXR1cm4oMHhmMDMrMjU1MS0weDE4ZmEpO310bXRpbWUudG1fbWluPXRtcF9pO3RtcF9pPWF0b2koZGF0ZS5zZWMpO2lmKAotdG1wX2k8KDB4MTJkZisyNTAyLTB4MWNhNSl8fHRtcF9pPklOVF9NQVgtKDB4ZTI3KzQxNTYtMHgxZTYyKSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx0bXBfaSk7cmV0dXJuKDB4NTY4Kzc0NC0weDg1MCk7fXRtdGltZS50bV9taW49dG1wX2k7dG1wX2k9YXRvaShkYXRlLnNlYyk7aWYoCit0bXBfaTwoMHg4MWErNjczMC0weDIyNjQpfHx0bXBfaT5JTlRfTUFYLSgweDEzNGIrMTQxOS0weDE4ZDUpKXthdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2NFx4NjFceDc0XHg2NVx4MmVceDczXHg2NVx4NjNceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG1wX2kpO3JldHVybigweDE5NzkrMjkwLTB4MWE5Yik7fXRtdGltZS50bV9zZWM9dG1wX2k7dGltZXQ9bWt0aW1lKCZ0bXRpbWUpOworLHRtcF9pKTtyZXR1cm4oMHgyMmIrNzM4MS0weDFmMDApO310bXRpbWUudG1fc2VjPXRtcF9pO3RpbWV0PW1rdGltZSgmdG10aW1lKTsKIHJldHVybiB0aW1ldDt9VF96VWZpU21zX0RiUmVzdWx0IHpVZmlTbXNfT3BlbkRiKHZvaWQpe2ludCByZXRyeV90aW1lcz0KLSgweGU0NSszODIzLTB4MWQzNCk7aW50IG9wZW5fcnN0PVNRTElURV9FUlJPUjtpZihnX3pVZmlTbXNfRGJQb2ludGVyIT1OVUxMKXsKKygweDE5ZjQrMTY0Ni0weDIwNjIpO2ludCBvcGVuX3JzdD1TUUxJVEVfRVJST1I7aWYoZ196VWZpU21zX0RiUG9pbnRlciE9TlVMTCl7CiBzcWxpdGUzX2Nsb3NlKGdfelVmaVNtc19EYlBvaW50ZXIpO2dfelVmaVNtc19EYlBvaW50ZXI9TlVMTDt9ZG97b3Blbl9yc3Q9CiBzcWxpdGUzX29wZW4oWlRFX1dNU19EQl9QQVRILCZnX3pVZmlTbXNfRGJQb2ludGVyKTt9d2hpbGUob3Blbl9yc3Q9PQotU1FMSVRFX0NBTlRPUEVOJiZyZXRyeV90aW1lcysrPCgweDU3Yys3MjQzLTB4MjFiZCkpO3ByaW50ZigKK1NRTElURV9DQU5UT1BFTiYmcmV0cnlfdGltZXMrKzwoMHgzZGQrNTc4NS0weDFhNmMpKTtwcmludGYoCiAiXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRmXHg3MFx4NjVceDZlXHg0NFx4NjJceDNhXHgyMFx4NzJceDY1XHg3NFx4NzJceDc5XHg1Zlx4NzRceDY5XHg2ZFx4NjVceDczXHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NmZceDcwXHg2NVx4NmVceDVmXHg3Mlx4NzNceDc0XHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKICxyZXRyeV90aW1lcyxvcGVuX3JzdCk7cmV0dXJuIG9wZW5fcnN0PT1TUUxJVEVfT0s/WlRFX1dNU19EQl9PSzoKIFpURV9TTVNfREJfRVJST1JfTk9UX09QRU5fREI7fVRfelVmaVNtc19EYlJlc3VsdCB6VWZpU21zX0Nsb3NlRGIodm9pZCl7aWYoCiBzcWxpdGUzX2Nsb3NlKGdfelVmaVNtc19EYlBvaW50ZXIpIT1TUUxJVEVfT0spe3JldHVybiBaVEVfU01TX0RCX0VSUk9SO30KIGdfelVmaVNtc19EYlBvaW50ZXI9TlVMTDtyZXR1cm4gWlRFX1dNU19EQl9PSzt9VF96VWZpU21zX0RiUmVzdWx0IAogelVmaVNtc19FeGVjU3FsKGNvbnN0IGNoYXIqZXhlY19zcWwsenRlX3dtc19kYl9jYWxsYmFjayBjYWxsYmFjayx2b2lkKmZ2YXJnKXtpbnQKLSB0cnlfdGltZXM9KDB4MjM3NCs4MDUtMHgyNjk5KTtpbnQgc3FsUnN0PVNRTElURV9FUlJPUjt3aGlsZSh0cnlfdGltZXMrKzwKLSgweDIxYzgrNDAyLTB4MjM1MCkpe3NxbFJzdD1zcWxpdGUzX2V4ZWMoZ196VWZpU21zX0RiUG9pbnRlcixleGVjX3NxbCxjYWxsYmFjaywKKyB0cnlfdGltZXM9KDB4M2JiKzUyNy0weDVjYSk7aW50IHNxbFJzdD1TUUxJVEVfRVJST1I7d2hpbGUodHJ5X3RpbWVzKys8CisoMHgxMGY1KzQ5OTYtMHgyNDZmKSl7c3FsUnN0PXNxbGl0ZTNfZXhlYyhnX3pVZmlTbXNfRGJQb2ludGVyLGV4ZWNfc3FsLGNhbGxiYWNrLAogZnZhcmcsTlVMTCk7aWYoc3FsUnN0IT1TUUxJVEVfQlVTWSYmc3FsUnN0IT1TUUxJVEVfTE9DS0VEJiZzcWxSc3QhPVNRTElURV9JT0VSUikKIHticmVhazt9cHJpbnRmKAogIlx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NVx4NzhceDY1XHg2M1x4NTNceDcxXHg2Y1x4M2FceDIwXHg3NFx4NzJceDc5XHg1Zlx4NzRceDY5XHg2ZFx4NjVceDczXHgzZFx4MjVceDY0XHgyY1x4MjBceDUzXHg1MVx4NGNceDNkXHgyNVx4NzNceDJjXHgyMFx4NDVceDcyXHg3Mlx4NmRceDczXHg2N1x4M2RceDI1XHg3MyIgIlxuIgotLHRyeV90aW1lcyxleGVjX3NxbCxzcWxpdGUzX2Vycm1zZyhnX3pVZmlTbXNfRGJQb2ludGVyKSk7c2xlZXAoCi0oMHgyMWI2Kzk4OS0weDI1OTIpKTt9aWYoc3FsUnN0IT1TUUxJVEVfT0spe3ByaW50ZigKKyx0cnlfdGltZXMsZXhlY19zcWwsc3FsaXRlM19lcnJtc2coZ196VWZpU21zX0RiUG9pbnRlcikpO3NsZWVwKCgweDk2MSs4NTYtMHhjYjgpCispO31pZihzcWxSc3QhPVNRTElURV9PSyl7cHJpbnRmKAogIlx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NVx4NzhceDY1XHg2M1x4NTNceDcxXHg2Y1x4M2FceDIwXHg3NFx4NzJceDc5XHg1Zlx4NzRceDY5XHg2ZFx4NjVceDczXHgzZFx4MjVceDY0XHgyY1x4MjBceDUzXHg1MVx4NGNceDNkXHgyNVx4NzNceDJjXHgyMFx4NDVceDcyXHg3Mlx4NmRceDczXHg2N1x4M2RceDI1XHg3MyIgIlxuIgogLHRyeV90aW1lcyxleGVjX3NxbCxzcWxpdGUzX2Vycm1zZyhnX3pVZmlTbXNfRGJQb2ludGVyKSk7cmV0dXJuIFpURV9TTVNfREJfRVJST1IKIDt9ZWxzZXsKICNpZmRlZiBXRUJTX1NFQ1VSSVRZDQotaWYoYWNjZXNzKFpURV9XTVNfVE1QMV9QQVRILEZfT0spPT0oMHg5MTgrNjEyLTB4YjdjKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKK2lmKGFjY2VzcyhaVEVfV01TX1RNUDFfUEFUSCxGX09LKT09KDB4ZGQ5KzIzNTctMHgxNzBlKSl7c2xvZyhQQl9QUklOVCxTTE9HX0VSUiwKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDVceDc4XHg2NVx4NjNceDUzXHg3MVx4NmNceDIwXHg2NFx4NjJceDIwXHg3M1x4NzRceDYxXHg3OSIKLSk7aWYocmVtb3ZlKFpURV9XTVNfVE1QMV9QQVRIKSE9KDB4ZTQ2KzEyMjAtMHgxMzBhKSl7c2xvZyhTTVNfUFJJTlQsU0xPR19FUlIsCispO2lmKHJlbW92ZShaVEVfV01TX1RNUDFfUEFUSCkhPSgweDE2MDArMTEyMi0weDFhNjIpKXtzbG9nKFNNU19QUklOVCxTTE9HX0VSUiwKICJceDcyXHg2NVx4NmRceDZmXHg3Nlx4NjVceDIwXHg1N1x4NGRceDUzXHg1Zlx4NTRceDRkXHg1MFx4MzFceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgotKTt9fXtjaGFyIHJudW1fYnVmWygweDEwOSsyMjE3LTB4OTlhKV09eygweDkyNys4My0weDk3YSl9O2NoYXIgY21kWwotKDB4MTE1MCs1MjM4LTB4MjU0NildPXsoMHgxMjJmKzQwOS0weDEzYzgpfTtzY19jZmdfZ2V0KAorKTt9fXtjaGFyIHJudW1fYnVmWygweDJhYys2NTk5LTB4MWM1YildPXsoMHhiNTMrMTc3NC0weDEyNDEpfTtjaGFyIGNtZFsKKygweGYzNis0MjEyLTB4MWYyYSldPXsoMHhjNjErMzcwMi0weDFhZDcpfTtzY19jZmdfZ2V0KAogIlx4NzJceDZlXHg3NVx4NmRceDVmXHg2MVx4NzQiLHJudW1fYnVmLHNpemVvZihybnVtX2J1ZikpO3NucHJpbnRmKGNtZCxzaXplb2YoCiBjbWQpLAogIlx4MmZceDYyXHg2OVx4NmVceDJmXHg2Zlx4NzBceDY1XHg2ZVx4NzNceDczXHg2Y1x4MjBceDY1XHg2ZVx4NjNceDIwXHgyZFx4NjVceDIwXHgyZFx4NjFceDY1XHg3M1x4MzJceDM1XHgzNlx4MjBceDJkXHg3M1x4NjFceDZjXHg3NFx4MjBceDJkXHg2OVx4NmVceDIwXHgyNVx4NzNceDIwXHgyZFx4NmZceDc1XHg3NFx4MjBceDI1XHg3M1x4MjBceDJkXHg3MFx4NjFceDczXHg3M1x4MjBceDcwXHg2MVx4NzNceDczXHgzYVx4MjVceDczIgogLFpURV9XTVNfREJfUEFUSCxaVEVfV01TX1RNUDFfUEFUSCxybnVtX2J1Zik7enhpY19zeXN0ZW0oY21kKTtpZihhY2Nlc3MoCi1aVEVfV01TX1RNUDFfUEFUSCxGX09LKT09KDB4ZTUyKzUxNDYtMHgyMjZjKSl7aWYocmVtb3ZlKFpURV9XTVNfU0VDX1BBVEgpIT0KLSgweDFhNjIrMTQwNy0weDFmZTEpKXtzbG9nKFNNU19QUklOVCxTTE9HX0VSUiwKK1pURV9XTVNfVE1QMV9QQVRILEZfT0spPT0oMHgxNzMwKzMzMTctMHgyNDI1KSl7aWYocmVtb3ZlKFpURV9XTVNfU0VDX1BBVEgpIT0KKygweGFlYiszODE5LTB4MTlkNikpe3Nsb2coU01TX1BSSU5ULFNMT0dfRVJSLAogIlx4NzJceDY1XHg2ZFx4NmZceDc2XHg2NVx4MjBceDU3XHg0ZFx4NTNceDVmXHg1M1x4NDVceDQzXHg1Zlx4NTBceDQxXHg1NFx4NDhceDIwXHg2Nlx4NjFceDY5XHg2YyIKLSk7fWlmKHJlbmFtZShaVEVfV01TX1RNUDFfUEFUSCxaVEVfV01TX1NFQ19QQVRIKSE9KDB4ZmYxKzM2LTB4MTAxNSkpe3Nsb2coCispO31pZihyZW5hbWUoWlRFX1dNU19UTVAxX1BBVEgsWlRFX1dNU19TRUNfUEFUSCkhPSgweGI3MisxMDU0LTB4ZjkwKSl7c2xvZygKIFNNU19QUklOVCxTTE9HX0VSUiwKICJceDcyXHg2NVx4NmVceDYxXHg2ZFx4NjVceDIwXHg1N1x4NGRceDUzXHg1Zlx4NTRceDRkXHg1MFx4MzFceDVmXHg1MFx4NDFceDU0XHg0OFx4MjBceDY2XHg2MVx4NjlceDZjIgogKTt9fX0KICNlbmRpZgkNCiByZXR1cm4gWlRFX1dNU19EQl9PSzt9fWludCB6VWZpU21zX0dldEZpcnN0Q29sdW1uSW50KHZvaWQqZnZhcmcsaW50IGNvbHVtbnMsY2hhcgotKip6cmVzdWx0LGNoYXIqKmxuYW1lKXtpZihjb2x1bW5zPj0oMHg2NzMrNjQ4NC0weDFmYzYpKXtpZih6cmVzdWx0WwotKDB4MjA0KzY1MTEtMHgxYjczKV09PU5VTEwpeyooaW50KilmdmFyZz0oMHgxYmI0KzE2MzItMHgyMjE0KTt9ZWxzZXsqKGludCopZnZhcmcKLT1hdG9pKHpyZXN1bHRbKDB4MWFhZCsyODQtMHgxYmM5KV0pO31yZXR1cm4gU1FMSVRFX09LO31lbHNle3JldHVybiBTUUxJVEVfRVJST1I7Ci19fWludCB6VWZpU21zX1NldENtZFN0YXR1cyhUX3pVZmlTbXNfU3RhdHVzSW5mbypwdFNldFN0YXR1cyl7VF96VWZpU21zX0RiUmVzdWx0IAotcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtwcmludGYoCisqKnpyZXN1bHQsY2hhcioqbG5hbWUpe2lmKGNvbHVtbnM+PSgweDMxYiszNjYxLTB4MTE2Nykpe2lmKHpyZXN1bHRbCisoMHgxMmQwKzQyMDctMHgyMzNmKV09PU5VTEwpeyooaW50KilmdmFyZz0oMHg1ZjcrNzU2NC0weDIzODMpO31lbHNleyooaW50KilmdmFyZworPWF0b2koenJlc3VsdFsoMHgxMmI4KzQ4NjctMHgyNWJiKV0pO31yZXR1cm4gU1FMSVRFX09LO31lbHNle3JldHVybiBTUUxJVEVfRVJST1IKKzt9fWludCB6VWZpU21zX1NldENtZFN0YXR1cyhUX3pVZmlTbXNfU3RhdHVzSW5mbypwdFNldFN0YXR1cyl7VF96VWZpU21zX0RiUmVzdWx0CisgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NzRceDQzXHg2ZFx4NjRceDUzXHg3NFx4NjFceDc0XHg3NVx4NzNceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDJlIiAiXG4iCiApO3N0clNRTD1zcWxpdGUzX21wcmludGYoCiAiXHg0OVx4NGVceDUzXHg0NVx4NTJceDU0XHgyMFx4NGZceDUyXHgyMFx4NTJceDQ1XHg1MFx4NGNceDQxXHg0M1x4NDVceDIwXHg0OVx4NGVceDU0XHg0Zlx4MjBceDI1XHg3M1x4MjhceDQzXHg2ZFx4NjRceDJjXHg0M1x4NmRceDY0XHg1Zlx4NTNceDc0XHg2MVx4NzRceDc1XHg3M1x4MmNceDQ1XHg3Mlx4NzJceDVmXHg0M1x4NmZceDY0XHg2NVx4MmNceDUzXHg2NVx4NmVceDY0XHg1Zlx4NDZceDYxXHg2OVx4NmNceDVmXHg0M1x4NmZceDc1XHg2ZVx4NzRceDJjXHg0NFx4NjVceDZjXHg1Zlx4NDNceDZmXHg3NVx4NmVceDc0XHgyOVx4MjAiCkBAIC0xODgsMjggKzE4OCwyOCBAQAogcHRTZXRTdGF0dXMtPmVycl9jb2RlLHB0U2V0U3RhdHVzLT5zZW5kX2ZhaWxlZF9jb3VudCxwdFNldFN0YXR1cy0+CiBkZWxldGVfZmFpbGVkX2NvdW50KTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsKHN0clNRTCxOVUxMLE5VTEwpO3NxbGl0ZTNfZnJlZSgKIHN0clNRTCk7cmV0dXJuIGlzU3VjZXNzKHJlc3VsdCk7fXZvaWQgelVmaVNtc19TZXRQYXJhbWV0ZXJOdihUX3pVZmlTbXNfUGFyYUluZm8qCi1wYXJhKXtpZigoMHgxMzkrNzA3LTB4M2ZjKT09KGludClwYXJhLT5zdGF0dXNfcmVwb3J0X29uKXtzY19jZmdfc2V0KAorcGFyYSl7aWYoKDB4NTAxKzQwNDAtMHgxNGM5KT09KGludClwYXJhLT5zdGF0dXNfcmVwb3J0X29uKXtzY19jZmdfc2V0KAogTlZfUkVQT1JUX0VOQUJMRSwiXHgzMCIpO31lbHNle3NjX2NmZ19zZXQoTlZfUkVQT1JUX0VOQUJMRSwiXHgzMSIpO31pZigKLSgweDFhMDkrMTU2Ni0weDIwMjcpPT0oaW50KXBhcmEtPnNlbmRmYWlsX3JldHJ5X29uKXtzY19jZmdfc2V0KE5WX1NFTkRGQUlMX1JFVFJZCi0sIlx4MzAiKTt9ZWxzZXtzY19jZmdfc2V0KE5WX1NFTkRGQUlMX1JFVFJZLCJceDMxIik7fWlmKCgweDE2MzErMjg1My0weDIxNTYpPT0oCi1pbnQpcGFyYS0+b3V0ZGF0ZV9kZWxldGVfb24pe3NjX2NmZ19zZXQoTlZfT1VUREFURV9ERUxFVEUsIlx4MzAiKTt9ZWxzZXsKLXNjX2NmZ19zZXQoTlZfT1VUREFURV9ERUxFVEUsIlx4MzEiKTt9aWYoKihwYXJhLT5kZWZhdWx0X3N0b3JlKSE9J1wwJyl7Ci1zY19jZmdfc2V0KE5WX0RFRkFVTFRfU1RPUkUsKGNoYXIqKXBhcmEtPmRlZmF1bHRfc3RvcmUpO31pZigoMHg3YjArNDM5OC0weDE4ZGUpCi09PShpbnQpcGFyYS0+bWVtX3N0b3JlKXtzY19jZmdfc2V0KE5WX1BSQV9NRU1TVE9SRSwiXHgzMCIpO31lbHNle3NjX2NmZ19zZXQoCi1OVl9QUkFfTUVNU1RPUkUsIlx4MzEiKTt9aWYoKDB4NGM2KzUwOTYtMHgxN2FmKT09KGludClwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Qpewotc2NfY2ZnX3NldChOVl9TTVNfVlAsIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiKTt9ZWxzZSBpZigoMHgyYWQrMTM4OS0weDc2ZCkKLT09KGludClwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Qpe3NjX2NmZ19zZXQoTlZfU01TX1ZQLAotIlx4NmZceDZlXHg2NVx4NzdceDY1XHg2NVx4NmIiKTt9ZWxzZSBpZigoMHgxMTQ3KzEzMjUtMHgxNWNkKT09KGludClwYXJhLT4KLXRwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldChOVl9TTVNfVlAsIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiKTt9ZWxzZSAKLWlmKCgweDFiNjkrMTE0MC0weDFmNGUpPT0oaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldChOVl9TTVNfVlAsCi0iXHg3NFx4NzdceDY1XHg2Y1x4NzZceDY1XHg2OCIpO31wcmludGYoCisoMHgzNzkrMjk0LTB4NDlmKT09KGludClwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbil7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwKKyJceDMwIik7fWVsc2V7c2NfY2ZnX3NldChOVl9TRU5ERkFJTF9SRVRSWSwiXHgzMSIpO31pZigoMHg1ZGMrNTEyMS0weDE5ZGQpPT0oaW50CispcGFyYS0+b3V0ZGF0ZV9kZWxldGVfb24pe3NjX2NmZ19zZXQoTlZfT1VUREFURV9ERUxFVEUsIlx4MzAiKTt9ZWxzZXtzY19jZmdfc2V0KAorTlZfT1VUREFURV9ERUxFVEUsIlx4MzEiKTt9aWYoKihwYXJhLT5kZWZhdWx0X3N0b3JlKSE9J1wwJyl7c2NfY2ZnX3NldCgKK05WX0RFRkFVTFRfU1RPUkUsKGNoYXIqKXBhcmEtPmRlZmF1bHRfc3RvcmUpO31pZigoMHg2N2QrNzg3MS0weDI1M2MpPT0oaW50KXBhcmEKKy0+bWVtX3N0b3JlKXtzY19jZmdfc2V0KE5WX1BSQV9NRU1TVE9SRSwiXHgzMCIpO31lbHNle3NjX2NmZ19zZXQoTlZfUFJBX01FTVNUT1JFCissIlx4MzEiKTt9aWYoKDB4NmNhKzU1NDAtMHgxYjZmKT09KGludClwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Qpe3NjX2NmZ19zZXQoCitOVl9TTVNfVlAsIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiKTt9ZWxzZSBpZigoMHgxZWViKzQxMi0weDFmZGEpPT0oaW50KQorcGFyYS0+dHBfdmFsaWRpdHlfcGVyaW9kKXtzY19jZmdfc2V0KE5WX1NNU19WUCwiXHg2Zlx4NmVceDY1XHg3N1x4NjVceDY1XHg2YiIpO30KK2Vsc2UgaWYoKDB4MWNmMSs3NjgtMHgxZjRhKT09KGludClwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Qpe3NjX2NmZ19zZXQoTlZfU01TX1ZQCissIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiKTt9ZWxzZSBpZigoMHgxOWYyKzIxMjYtMHgyMWIxKT09KGludClwYXJhLT4KK3RwX3ZhbGlkaXR5X3BlcmlvZCl7c2NfY2ZnX3NldChOVl9TTVNfVlAsIlx4NzRceDc3XHg2NVx4NmNceDc2XHg2NVx4NjgiKTt9cHJpbnRmCisoCiAiXHg3N1x4NmRceDczXHg1Zlx4NjRceDYyXHg1Zlx4NzNceDY1XHg3NFx4NWZceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyMFx4M2FceDNhXHgyMFx4NzNceDY1XHg3NFx4MjBceDc0XHg3MFx4NWZceDc2XHg2MVx4NmNceDY5XHg2NFx4NjlceDc0XHg3OVx4NWZceDcwXHg2NVx4NzJceDY5XHg2Zlx4NjRceDIwXHgyNVx4NjQiICJcbiIKICwoaW50KXBhcmEtPnRwX3ZhbGlkaXR5X3BlcmlvZCk7fWludCB6VWZpU21zX1NldERiUGFyYW1ldGVycyhUX3pVZmlTbXNfUGFyYUluZm8qCiBwYXJhKXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtpbnQgY291bnQ9Ci0oMHgxOTA5KzM0NS0weDFhNjIpO2lmKE5VTEw9PXBhcmEpe3JldHVybi0oMHhlMTArMTYxMS0weDE0NWEpO316VWZpU21zX0V4ZWNTcWwoCisoMHhhM2QrMzkzOC0weDE5OWYpO2lmKE5VTEw9PXBhcmEpe3JldHVybi0oMHg1NisyMzgwLTB4OWExKTt9elVmaVNtc19FeGVjU3FsKAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMCIKICBaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRSJceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgzMVx4M2IiLAotelVmaVNtc19HZXRGaXJzdENvbHVtbkludCwmY291bnQpO2lmKGNvdW50PigweDQ0ZCs0MjEzLTB4MTRjMikpe3N0clNRTD0KK3pVZmlTbXNfR2V0Rmlyc3RDb2x1bW5JbnQsJmNvdW50KTtpZihjb3VudD4oMHhmODErMjEwNy0weDE3YmMpKXtzdHJTUUw9CiBzcWxpdGUzX21wcmludGYoCiAiXHg1NVx4NTBceDQ0XHg0MVx4NTRceDQ1XHgyMFx4MjVceDczXHgyMFx4NTNceDQ1XHg1NFx4MjBceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDcwXHg2Zlx4NzJceDc0XHgzZFx4MjdceDI1XHg2NFx4MjdceDJjXHg1M1x4NmRceDczXHg1Zlx4NTNceDYzXHg2MVx4M2RceDI3XHgyNVx4NzFceDI3XHgyY1x4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NjRceDI3XHgyY1x4NTRceDcwXHg1Zlx4NTZceDYxXHg2Y1x4NjlceDY0XHg2OVx4NzRceDc5XHgzZFx4MjdceDI1XHg2NFx4MjdceDJjXHg1M1x4NjVceDZlXHg2NFx4NWZceDUyXHg2NVx4NzRceDcyXHg3OVx4M2RceDI3XHgyNVx4NjRceDI3XHgyY1x4NGZceDc1XHg3NFx4NjRceDYxXHg3NFx4NjVceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHgzZFx4MjdceDI1XHg2NFx4MjdceDJjXHg0NFx4NjVceDY2XHg2MVx4NzVceDZjXHg3NFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgzZFx4MzFceDNiIgogLFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFLChpbnQpcGFyYS0+c3RhdHVzX3JlcG9ydF9vbixwYXJhLT5zY2EsKGludClwYXJhLT4KQEAgLTIyMiwxMyArMjIyLDEzIEBACiBtZW1fc3RvcmUsKGludClwYXJhLT50cF92YWxpZGl0eV9wZXJpb2QsKGludClwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbiwoaW50KXBhcmEtPgogb3V0ZGF0ZV9kZWxldGVfb24scGFyYS0+ZGVmYXVsdF9zdG9yZSk7fXJlc3VsdD16VWZpU21zX0V4ZWNTcWwoc3RyU1FMLE5VTEwsTlVMTCkKIDtzcWxpdGUzX2ZyZWUoc3RyU1FMKTtpZihyZXN1bHQ9PVpURV9XTVNfREJfT0spe3pVZmlTbXNfU2V0UGFyYW1ldGVyTnYocGFyYSk7Ci1yZXR1cm4oMHhhMDYrMzM0OS0weDE3MWIpO31yZXR1cm4tKDB4MWIwMisxMDk4LTB4MWY0Yik7fWludCAKK3JldHVybigweDU1NCs0MzQ1LTB4MTY0ZCk7fXJldHVybi0oMHgxY2YyKzI0OTUtMHgyNmIwKTt9aW50IAogelVmaVNtc19HZXRUb3RhbENvdW50KGNvbnN0IGNoYXIqcERiVGFibGUsaW50KnBUb3RhbENvdW50KXtUX3pVZmlTbXNfRGJSZXN1bHQgCiByZXN1bHQ9WlRFX1dNU19EQl9PSztjaGFyKnN0clNRTD1OVUxMO3N0clNRTD1zcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyOFx4MmFceDI5XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzFceDI3XHgzYiIKICxwRGJUYWJsZSk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzdHJTUUwselVmaVNtc19HZXRGaXJzdENvbHVtbkludCxwVG90YWxDb3VudCk7CiBzcWxpdGUzX2ZyZWUoc3RyU1FMKTtyZXR1cm4gaXNTdWNlc3MocmVzdWx0KTt9aW50IHpVZmlTbXNfR2V0U21zTWF4UmVmZXJJbkRiKAotdm9pZCl7aW50IG1heF9zbXNfcmVmPS0oMHgxYmJkKzQzMC0weDFkNmEpO3pVZmlTbXNfRXhlY1NxbCgKK3ZvaWQpe2ludCBtYXhfc21zX3JlZj0tKDB4MTVjMysxNDYwLTB4MWI3Nik7elVmaVNtc19FeGVjU3FsKAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDRkXHg2MVx4NzhceDVmXHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2Nlx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMCIKICBaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRQogIlx4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4MjBceDNkXHgyMFx4MzFceDNiIiwKQEAgLTIzNywyMCArMjM3LDIwIEBACiBjb250ZW50LGludCBsZW4pe3NxbGl0ZTNfc3RtdCpzdG10PU5VTEw7Y2hhcipzdHJTUUw9c3FsaXRlM19tcHJpbnRmKAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDY5XHg2ZVx4NjRceDJjXHg0M1x4NjNceDVmXHg1M1x4NjVceDcxXHgyY1x4NDNceDYzXHg1Zlx4NDNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3MVx4MjdceDNiIgogLGlkLG1lbV9zdG9yZSk7KHZvaWQpc3FsaXRlM19wcmVwYXJlKGdfelVmaVNtc19EYlBvaW50ZXIsc3RyU1FMLC0KLSgweDZlMys3MjY4LTB4MjM0NiksJnN0bXQsKDB4YWE5KzY4MzUtMHgyNTVjKSk7d2hpbGUoU1FMSVRFX1JPVz09c3FsaXRlM19zdGVwKAotc3RtdCkpe2NoYXIqY29sdW1uX3RleHQ9TlVMTDttZW1zZXQocGFjLT5JbmRTdHIsKDB4MWI0YysyMzAtMHgxYzMyKSxzaXplb2YocGFjLT4KLUluZFN0cikpO21lbXNldChwYWMtPlNlZ19TZXEsKDB4ZGU3KzYyOS0weDEwNWMpLHNpemVvZihwYWMtPlNlZ19TZXEpKTtpZigoCi1jb2x1bW5fdGV4dD1zcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4MTY2Yis3MzAtMHgxOTQ1KSkpIT1OVUxMKXN0cm5jcHkocGFjLT4KLUluZFN0cixjb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRJbmQpLSgweDNiNCs3NTMyLTB4MjExZikpO2lmKChjb2x1bW5fdGV4dD0KLXNxbGl0ZTNfY29sdW1uX3RleHQoc3RtdCwoMHhmOWIrNTEyOC0weDIzYTIpKSkhPU5VTEwpc3RybmNweShwYWMtPlNlZ19TZXEsCi1jb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRTZXEpLSgweGM4OCsxMzc4LTB4MTFlOSkpO2lmKChjb2x1bW5fdGV4dD0KLXNxbGl0ZTNfY29sdW1uX3RleHQoc3RtdCwoMHgxODU4KzExMDktMHgxY2FiKSkpIT1OVUxMKXN0cm5jcHkoY29udGVudCwKLWNvbHVtbl90ZXh0LGxlbi0oMHg3ZjIrMjU1OS0weDExZjApKTtwcmludGYoCisoMHg1M2MrNDI1OC0weDE1ZGQpLCZzdG10LCgweGQwNCszODY2LTB4MWMxZSkpO3doaWxlKFNRTElURV9ST1c9PXNxbGl0ZTNfc3RlcCgKK3N0bXQpKXtjaGFyKmNvbHVtbl90ZXh0PU5VTEw7bWVtc2V0KHBhYy0+SW5kU3RyLCgweDkwMSs3MTk2LTB4MjUxZCksc2l6ZW9mKHBhYy0+CitJbmRTdHIpKTttZW1zZXQocGFjLT5TZWdfU2VxLCgweDArNDEyOC0weDEwMjApLHNpemVvZihwYWMtPlNlZ19TZXEpKTtpZigoCitjb2x1bW5fdGV4dD1zcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4MThiNSszMDUtMHgxOWU2KSkpIT1OVUxMKXN0cm5jcHkocGFjLT4KK0luZFN0cixjb2x1bW5fdGV4dCxzaXplb2YocGFjLT5Gb3JtYXRJbmQpLSgweDFlNDArNjQyLTB4MjBjMSkpO2lmKChjb2x1bW5fdGV4dD0KK3NxbGl0ZTNfY29sdW1uX3RleHQoc3RtdCwoMHgxNzE3KzE4MzItMHgxZTNlKSkpIT1OVUxMKXN0cm5jcHkocGFjLT5TZWdfU2VxLAorY29sdW1uX3RleHQsc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS0oMHgzMTYrNDk4Ni0weDE2OGYpKTtpZigoY29sdW1uX3RleHQ9CitzcWxpdGUzX2NvbHVtbl90ZXh0KHN0bXQsKDB4N2ViKzY3NTUtMHgyMjRjKSkpIT1OVUxMKXN0cm5jcHkoY29udGVudCxjb2x1bW5fdGV4dAorLGxlbi0oMHhiNzgrNjI2Mi0weDIzZWQpKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3NFx4NjVceDY1XHg3NFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDdceDY1XHg3NFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NDlceDZlXHg2Nlx4NmZceDNhXHgyNVx4NzNceDJjXHgyNVx4NzMiICJcbiIKICxwYWMtPkluZFN0cixwYWMtPlNlZ19TZXEpO30odm9pZClzcWxpdGUzX2ZpbmFsaXplKHN0bXQpO3NxbGl0ZTNfZnJlZShzdHJTUUwpOwotcmV0dXJuKDB4MTAwMSs0NDY1LTB4MjE3Mik7fWludCB6VWZpU21zX1VwZGF0ZUNvbmNhdFNtc1RvRGIoCi1UX3pVZmlTbXNfRGJTdG9yZURhdGEqZGJfZGF0YSxjb25zdCBjaGFyKm1lbV9zdG9yZSxjaGFyKmZvcm1hdF9jb25jYXQsY2hhcioKLWNvbnRlbnQsVF96VWZpU21zX0RiU3RvcmVTdHIqcGFjLGludCBjb25jYXRfbnVtLGxvbmcgaWQpe2NoYXIqc3FsPU5VTEw7CityZXR1cm4oMHg2NDErMjc4LTB4NzU3KTt9aW50IHpVZmlTbXNfVXBkYXRlQ29uY2F0U21zVG9EYihUX3pVZmlTbXNfRGJTdG9yZURhdGEqCitkYl9kYXRhLGNvbnN0IGNoYXIqbWVtX3N0b3JlLGNoYXIqZm9ybWF0X2NvbmNhdCxjaGFyKmNvbnRlbnQsCitUX3pVZmlTbXNfRGJTdG9yZVN0cipwYWMsaW50IGNvbmNhdF9udW0sbG9uZyBpZCl7Y2hhcipzcWw9TlVMTDsKIFRfelVmaVNtc19EYlJlc3VsdCByZXN1bHQ9WlRFX1dNU19EQl9PSztzcWw9c3FsaXRlM19tcHJpbnRmKAogIlx4NTVceDUwXHg0NFx4NDFceDU0XHg0NVx4MjBceDczXHg2ZFx4NzNceDIwXHg1M1x4NDVceDU0XHgyMFx4NjlceDZlXHg2NFx4M2RceDI3XHgyNVx4NzNceDI3XHgyY1x4NTRceDYxXHg2N1x4M2RceDI3XHgyNVx4NjRceDI3XHgyY1x4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4M2RceDI3XHgyNVx4NzNceDI3XHgyY1x4NDNceDYzXHg1Zlx4NGVceDc1XHg2ZFx4M2RceDI3XHgyNVx4NjRceDI3XHgyY1x4MjAiCiAiXHg0M1x4NjNceDVmXHg0M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4M2RceDI3XHgyNVx4NzFceDI3XHgyY1x4NDNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDNkXHgyN1x4MjVceDcxXHgyN1x4MmNceDU5XHg2NVx4NjFceDcyXHgzZFx4MjdceDI1XHg3MVx4MjdceDJjXHg0ZFx4NmZceDZlXHg3NFx4NjhceDNkXHgyN1x4MjVceDcxXHgyN1x4MmNceDIwIgpAQCAtMjcwLDMxICsyNzAsMzAgQEAKICJceDQzXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHgyY1x4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDVmXHg1Mlx4NjVceDYzXHg2OVx4NzZceDY1XHg2NFx4MmNceDQ0XHg3Mlx4NjFceDY2XHg3NFx4NWZceDQ3XHg3Mlx4NmZceDc1XHg3MFx4NWZceDQ5XHg2NFx4MmNceDU5XHg2NVx4NjFceDcyXHgyY1x4NGRceDZmXHg2ZVx4NzRceDY4XHgyY1x4NDRceDYxXHg3OVx4MmNceDQ4XHg2Zlx4NzVceDcyXHgyY1x4NGRceDY5XHg2ZVx4NzVceDc0XHg2NVx4MmNceDUzXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJjXHg1NFx4NjlceDZkXHg2NVx4NWFceDZmXHg2ZVx4NjVceDJjXHg0ZFx4NmJceDc0XHg2OVx4NmRceDY1XHgyY1x4NDRceDY5XHg3M1x4NzBceDZjXHg2MVx4NzlceDRkXHg2Zlx4NjRceDY1XHgyOVx4MjAiCiAiXHg1Nlx4NDFceDRjXHg1NVx4NDVceDUzXHgyOCIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjXHgyMFx4MjdceDI1XHg2NFx4MjdceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjBceDI3XHgyNVx4NjRceDI3XHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmNceDIwIiAiXCciICJceDI1XHg3MSIgIlwnIiAiXHgyYyIgIlwnIiAiXHgyNVx4NzEiICJcJyIgIlx4MmMiICJcJyIgIlx4MjVceDcxIiAiXCciICJceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDIwXHgyN1x4MjVceDY0XHgyN1x4MjlceDNiIgogLHBhYy0+Rm9ybWF0SW5kLG1lbV9zdG9yZSxkYl9kYXRhLT50YWcsZGJfZGF0YS0+bnVtYmVyLGRiX2RhdGEtPmNvbmNhdF9zbXMsCi1kYl9kYXRhLT5jb25jYXRfaW5mb1soMHgxNDQzKzI1MDItMHgxZTA5KV0sZGJfZGF0YS0+Y29uY2F0X2luZm9bCi0oMHgxZDRhKzQ5LTB4MWQ3YSldLHBhYy0+Rm9ybWF0U2VxLGNvbmNhdF9udW0sZm9ybWF0X2NvbmNhdCxkYl9kYXRhLT50cF9kY3MsCi1kYl9kYXRhLT5tc2dfcmVmLGNvbnRlbnQsIlx4MzAiLGRiX2RhdGEtPmRyYWZ0X2dyb3VwX2lkLGRiX2RhdGEtPmp1bGlhbl9kYXRlLgoteWVhcixkYl9kYXRhLT5qdWxpYW5fZGF0ZS5tb250aCxkYl9kYXRhLT5qdWxpYW5fZGF0ZS5kYXksZGJfZGF0YS0+anVsaWFuX2RhdGUuCi1ob3VyLGRiX2RhdGEtPmp1bGlhbl9kYXRlLm1pbixkYl9kYXRhLT5qdWxpYW5fZGF0ZS5zZWMsZGJfZGF0YS0+anVsaWFuX2RhdGUuCi10aW1lem9uZSwodW5zaWduZWQgaW50KXp0ZV9nZXRzZWNvbmQoZGJfZGF0YS0+anVsaWFuX2RhdGUpLGRiX2RhdGEtPgotbXNnX2Rpc3BsYXltb2RlKTtwcmludGYoCitkYl9kYXRhLT5jb25jYXRfaW5mb1soMHg2MWQrMTYwNS0weGM2MildLGRiX2RhdGEtPmNvbmNhdF9pbmZvWygweGU4OSs4NjItMHgxMWU2KQorXSxwYWMtPkZvcm1hdFNlcSxjb25jYXRfbnVtLGZvcm1hdF9jb25jYXQsZGJfZGF0YS0+dHBfZGNzLGRiX2RhdGEtPm1zZ19yZWYsCitjb250ZW50LCJceDMwIixkYl9kYXRhLT5kcmFmdF9ncm91cF9pZCxkYl9kYXRhLT5qdWxpYW5fZGF0ZS55ZWFyLGRiX2RhdGEtPgoranVsaWFuX2RhdGUubW9udGgsZGJfZGF0YS0+anVsaWFuX2RhdGUuZGF5LGRiX2RhdGEtPmp1bGlhbl9kYXRlLmhvdXIsZGJfZGF0YS0+CitqdWxpYW5fZGF0ZS5taW4sZGJfZGF0YS0+anVsaWFuX2RhdGUuc2VjLGRiX2RhdGEtPmp1bGlhbl9kYXRlLnRpbWV6b25lLCh1bnNpZ25lZAorIGludCl6dGVfZ2V0c2Vjb25kKGRiX2RhdGEtPmp1bGlhbl9kYXRlKSxkYl9kYXRhLT5tc2dfZGlzcGxheW1vZGUpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDlceDZlXHg3M1x4NjVceDcyXHg3NFx4NDNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg3M1x4NzFceDZjXHgzZFx4MjVceDczXHgyZSIgIlxuIgogLHNxbCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzcWwsTlVMTCxOVUxMKTtzcWxpdGUzX2ZyZWUoc3FsKTtyZXR1cm4gaXNTdWNlc3MoCiByZXN1bHQpO31pbnQgelVmaVNtc19HZXRDb25jYXRNYXhSZWZlckluRGIodm9pZCl7aW50IENvbmNhdE1heFJlZmVyPQotKDB4MTMwYysyNzYtMHgxNDIwKTtpbnQgcmVzdWx0PSgweDUyNis1MjkwLTB4MTlkMCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbCgKKygweDE2NDkrMTMyNi0weDFiNzcpO2ludCByZXN1bHQ9KDB4YThhKzM5MTgtMHgxOWQ4KTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsKAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDRkXHg2MVx4NzhceDVmXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwIgogIFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFCiAiXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgyMFx4M2RceDIwXHgzMVx4M2IiLAogelVmaVNtc19HZXRGaXJzdENvbHVtbkludCwmQ29uY2F0TWF4UmVmZXIpO2lmKFpURV9XTVNfREJfT0shPXJlc3VsdCl7cmV0dXJuLQotKDB4MjM4MCs1MTEtMHgyNTdlKTt9cmV0dXJuIENvbmNhdE1heFJlZmVyO31pbnQgelVmaVNtc19DcmVhdGVUYWJsZXMoKXtpbnQgaU1hcD0KLSgweGFiMCsxNTAzLTB4MTA4Zik7Y29uc3QgVF96VWZpU21zX1NRTE1hcCBTUUxfTUFQW109e3soMHg2NDkrNDgxMC0weDE5MTIpLAotWlRFX1dNU19DUkVBVEVfVEFCTEVfU01TX1NRTH0seygweDg2Mys2MTAyLTB4MjAzOCksWlRFX1dNU19ERUxfU0lNX1NRTH0sewotKDB4ZGZiKzMyNi0weGY0MCksWlRFX1dNU19DUkVBVEVfQ01EX1NUQVRVU19TUUx9LHsoMHg3YzArMjAyNS0weGZhOCksCi1aVEVfV01TX0NSRUFURV9TTVNfUkVQX1NRTH0seygweDFhYWMrMjM1Mi0weDIzZGIpLFpURV9XTVNfQ1JFQVRFX1BBUl9TUUx9LHsKLSgweDQ5MSs2ODA4LTB4MWYyOCksWlRFX1dNU19DUkVBVEVfSU5GT19TUUx9LHsoMHgxNjQ3KzI1MDAtMHgyMDBhKSwKLVpURV9XTVNfQ1JFQVRFX0NFTExfQlJPX1NRTH0seygweDIzMDMrNTA0LTB4MjRmYSksCi1aVEVfV01TX0NSRUFURV9TRU5EX0NPTlRFTlRfU1FMfSx9O2ZvcihpTWFwPSgweDllZis2Nzc3LTB4MjQ2OCk7aU1hcDxzaXplb2YoCisoMHg2YzArMjI3My0weGZhMCk7fXJldHVybiBDb25jYXRNYXhSZWZlcjt9aW50IHpVZmlTbXNfQ3JlYXRlVGFibGVzKCl7aW50IGlNYXA9CisoMHhiYWErNjYxMi0weDI1N2UpO2NvbnN0IFRfelVmaVNtc19TUUxNYXAgU1FMX01BUFtdPXt7KDB4ODZkKzQ2NzgtMHgxYWIyKSwKK1pURV9XTVNfQ1JFQVRFX1RBQkxFX1NNU19TUUx9LHsoMHgxYjMxKzE3MTQtMHgyMWUyKSxaVEVfV01TX0RFTF9TSU1fU1FMfSx7CisoMHgxM2U4Kzg2NC0weDE3NDcpLFpURV9XTVNfQ1JFQVRFX0NNRF9TVEFUVVNfU1FMfSx7KDB4MTI0Mis0NzA1LTB4MjRhMiksCitaVEVfV01TX0NSRUFURV9TTVNfUkVQX1NRTH0seygweDg4Mis4NzYtMHhiZWQpLFpURV9XTVNfQ1JFQVRFX1BBUl9TUUx9LHsKKygweDk3NCs2MjQwLTB4MjFkMyksWlRFX1dNU19DUkVBVEVfSU5GT19TUUx9LHsoMHhmMTgrOTY3LTB4MTJkZSksCitaVEVfV01TX0NSRUFURV9DRUxMX0JST19TUUx9LHsoMHhiOWIrNDE2MC0weDFiZGEpLAorWlRFX1dNU19DUkVBVEVfU0VORF9DT05URU5UX1NRTH0sfTtmb3IoaU1hcD0oMHgxYjc1KzUyNi0weDFkODMpO2lNYXA8c2l6ZW9mKAogU1FMX01BUCkvc2l6ZW9mKFRfelVmaVNtc19TUUxNYXApO2lNYXArKyl7aWYoU1FMX01BUFtpTWFwXS52YWxpZD09Ci0oMHgzZCs0NDQtMHgxZjgpKXtpZih6VWZpU21zX0V4ZWNTcWwoU1FMX01BUFtpTWFwXS5zdHJTUUwsTlVMTCxOVUxMKSE9CisoMHgxNTIyKzQzNDItMHgyNjE3KSl7aWYoelVmaVNtc19FeGVjU3FsKFNRTF9NQVBbaU1hcF0uc3RyU1FMLE5VTEwsTlVMTCkhPQogWlRFX1dNU19EQl9PSyl7cmV0dXJuIFpVRklfRkFJTDt9fX1yZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19DcmVhdGVBbGxUYWJsZSgKIHZvaWQpe2lmKFpURV9XTVNfREJfT0shPXpVZmlTbXNfT3BlbkRiKCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYzXHg2MVx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NmZceDcwXHg2NVx4NmVceDIwXHg2NFx4NjFceDc0XHg2MVx4NjJceDYxXHg3M1x4NjVceDJlXHg3Mlx4NjVceDc0XHg3NVx4NzJceDZlXHgyZSIgIlxuIgpAQCAtMzI1LDkgKzMyNCw5IEBACiAiXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjdceDI1XHg2NFx4MjdceDJjXHgyN1x4MjVceDY0XHgyN1x4MmNceDI3XHgyNVx4NjRceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzFceDI3XHgyY1x4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDIwIgogIlx4MjdceDI1XHg3MVx4MjdceDJjXHgyN1x4MjVceDcxXHgyN1x4MmNceDI3XHgyNVx4NzVceDI3XHgyY1x4MjBceDI3XHgyNVx4NjRceDI3XHgyOVx4M2IiCiAscHREYlNhdmVEYXRhLT5pbmRleCxwU3RvcmVQb3MscHREYlNhdmVEYXRhLT50YWcscHREYlNhdmVEYXRhLT5udW1iZXIsCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9zbXMscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxYTQwKzEzMTktMHgxZjY3KV0sCi1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDEzMjQrMjAzNy0weDFiMTgpXSxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4ZDg2KzQ0NDAtMHgxZWRjKV0scHREYlNhdmVEYXRhLT50cF9kY3MscHREYlNhdmVEYXRhLT5tc2dfcmVmLHBDb250ZW50LCJceDMwIiwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X3NtcyxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDk2MSszNjY5LTB4MTdiNildLAorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgyMjcrNDUwMi0weDEzYmMpXSxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWworKDB4ZjMwKzUwMDQtMHgyMmJhKV0scHREYlNhdmVEYXRhLT50cF9kY3MscHREYlNhdmVEYXRhLT5tc2dfcmVmLHBDb250ZW50LCJceDMwIiwKIHB0RGJTYXZlRGF0YS0+ZHJhZnRfZ3JvdXBfaWQscHREYlNhdmVEYXRhLT5qdWxpYW5fZGF0ZS55ZWFyLHB0RGJTYXZlRGF0YS0+CiBqdWxpYW5fZGF0ZS5tb250aCxwdERiU2F2ZURhdGEtPmp1bGlhbl9kYXRlLmRheSxwdERiU2F2ZURhdGEtPmp1bGlhbl9kYXRlLmhvdXIsCiBwdERiU2F2ZURhdGEtPmp1bGlhbl9kYXRlLm1pbixwdERiU2F2ZURhdGEtPmp1bGlhbl9kYXRlLnNlYyxwdERiU2F2ZURhdGEtPgpAQCAtMzQ5LDI1ICszNDgsMjUgQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTVceDcwXHg2NFx4NjFceDc0XHg2NVx4NGVceDZmXHg3Mlx4NmRceDYxXHg2Y1x4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg3M1x4NzFceDZjXHgzZFx4MjVceDczIiAiXG4iCiAsc3RyU1FMKTtyZXN1bHQ9elVmaVNtc19FeGVjU3FsKHN0clNRTCxOVUxMLE5VTEwpO3NxbGl0ZTNfZnJlZShzdHJTUUwpO3JldHVybiAKIGlzU3VjZXNzKHJlc3VsdCk7fWludCB6VWZpU21zX0dldEZpcnN0Q29sdW1uU3RyKHZvaWQqZnZhcmcsaW50IGNvbHVtbnMsY2hhcioqCi16cmVzdWx0LGNoYXIqKmxuYW1lKXtpZihjb2x1bW5zPj0oMHhmY2MrMTM2Ny0weDE1MjIpJiZmdmFyZyE9TlVMTCl7aWYoenJlc3VsdFsKLSgweDhjZCs0NDc4LTB4MWE0YildIT1OVUxMKXtUX3pVZmlTbXNfQnVmSW5mbypwYXJhPShUX3pVZmlTbXNfQnVmSW5mbyopZnZhcmc7Ci1zdHJuY3B5KHBhcmEtPmJ1Zl9hZGRyLHpyZXN1bHRbKDB4ZWQrNTI4LTB4MmZkKV0scGFyYS0+YnVmX2xlbi0KLSgweDkzOSszMzA4LTB4MTYyNCkpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCit6cmVzdWx0LGNoYXIqKmxuYW1lKXtpZihjb2x1bW5zPj0oMHgxZmMrMjIzMy0weGFiNCkmJmZ2YXJnIT1OVUxMKXtpZih6cmVzdWx0WworKDB4MTY5MCsyNDk0LTB4MjA0ZSldIT1OVUxMKXtUX3pVZmlTbXNfQnVmSW5mbypwYXJhPShUX3pVZmlTbXNfQnVmSW5mbyopZnZhcmc7CitzdHJuY3B5KHBhcmEtPmJ1Zl9hZGRyLHpyZXN1bHRbKDB4NTdkKzUzNTktMHgxYTZjKV0scGFyYS0+YnVmX2xlbi0KKygweDc5MCs2NzAxLTB4MjFiYykpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCiB6VWZpU21zX0dldFN0b3JlUG9zQnlJZChjaGFyKml0ZW0sY2hhcippdGVtX2RhdGEsaW50IGl0ZW1fbGVuLGludCBpZCl7CiBUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7VF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89ewotKDB4MTVmOSs1MTgtMHgxN2ZmKX07Y2hhcipzdHJTUUw9TlVMTDtpZihOVUxMPT1pdGVtfHxOVUxMPT1pdGVtX2RhdGEpe3JldHVybiAKKygweDE2OTUrMTQ0Ni0weDFjM2IpfTtjaGFyKnN0clNRTD1OVUxMO2lmKE5VTEw9PWl0ZW18fE5VTEw9PWl0ZW1fZGF0YSl7cmV0dXJuIAogWlVGSV9GQUlMO31idWZfaW5mby5idWZfYWRkcj1pdGVtX2RhdGE7YnVmX2luZm8uYnVmX2xlbj1pdGVtX2xlbjtzdHJTUUw9CiBzcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4MjVceDcxXHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgzZFx4MjdceDI1XHg2NFx4MjdceDNiIgogLGl0ZW0saWQpO3Jlc3VsdD16VWZpU21zX0V4ZWNTcWwoc3RyU1FMLHpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5TdHIsJmJ1Zl9pbmZvKTsKLXNxbGl0ZTNfZnJlZShzdHJTUUwpO2lmKChaVEVfV01TX0RCX09LIT1yZXN1bHQpfHwoKDB4OGJmKzY5NTMtMHgyM2U4KT09c3RyY21wKAorc3FsaXRlM19mcmVlKHN0clNRTCk7aWYoKFpURV9XTVNfREJfT0shPXJlc3VsdCl8fCgoMHgxMzkwKzEzOTYtMHgxOTA0KT09c3RyY21wKAogaXRlbV9kYXRhLCIiKSkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg2N1x4NjVceDc0XHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHg1Zlx4NmRceDY1XHg2ZFx4NjJceDY1XHg3Mlx4MjBceDYyXHg3OVx4MjBceDY5XHg2NFx4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX0ZBSUw7fXJldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX0RlbGV0ZVNtc0luRGIodm9pZCl7Y2hhciBzcWxbCi0oMHgzZWYrNjIzMi0weDFiYzcpXT17KDB4MTU1MSsxNjAwLTB4MWI5MSl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKKygweDE4MTArMjQ1OC0weDIxMmEpXT17KDB4MWQ5KzkxNDYtMHgyNTkzKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NDRceDQ1XHg0Y1x4NDVceDU0XHg0NVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4MjBceDYxXHg2ZVx4NjRceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9TSU1fVEFCTEUsZ196VWZpU21zX0RlbE1zZy5zaW1faWRbZ196VWZpU21zX0RlbE1zZy5zaW1faW5kZXgtCi0oMHgxNTcwKzgxOS0weDE4YTIpXSk7cmV0dXJuIGlzU3VjZXNzKHpVZmlTbXNfRXhlY1NxbChzcWwsTlVMTCxOVUxMKSk7fWludCAKKygweDI4OSs4Njk2LTB4MjQ4MCldKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKTt9aW50IAogelVmaVNtc19EZWxldGVBbGxTaW1TbXNJbkRiKHZvaWQpe3JldHVybiBpc1N1Y2Vzcyh6VWZpU21zX0V4ZWNTcWwoCiAiXHg0NFx4NDVceDRjXHg0NVx4NTRceDQ1XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3IgogIFpURV9XTVNfREJfU0lNX1RBQkxFIlx4MjdceDNiIixOVUxMLE5VTEwpKTt9aW50IHpVZmlTbXNfRGVsZXRlTnZTbXModm9pZCl7aWYoCkBAIC0zNzYsMTEgKzM3NSwxMSBAQAogIlx4NDRceDQ1XHg0Y1x4NDVceDU0XHg0NVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyNyIKICBaVEVfV01TX0RCX05WX1RBQkxFIlx4MjdceDNiIixOVUxMLE5VTEwpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDRlXHg3Nlx4NTNceDZkXHg3M1x4M2FceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2Nlx4NjFceDY5XHg2YyIgIlxuIgotKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX1lbHNle2ludCBpPSgweGJkNys2MjYtMHhlNDkpO3ByaW50ZigKKyk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319ZWxzZXtpbnQgaT0oMHgxMTMrMjc4MC0weGJlZik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0ZVx4NzZceDUzXHg2ZFx4NzNceDNhXHg2NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyMFx4NmVceDc2XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0XHgzZFx4MjVceDY0IiAiXG4iCi0sZ196VWZpU21zX0RlbE1zZy5udl9jb3VudCk7Zm9yKGk9KDB4MzQ1KzI2MzUtMHhkOTApO2k8Z196VWZpU21zX0RlbE1zZy5udl9jb3VudAotO2krKyl7Y2hhciBzcWxbKDB4ZjgzKzQzNjUtMHgyMDEwKV09eygweDE4NDkrNTU4LTB4MWE3Nyl9O3NucHJpbnRmKHNxbCxzaXplb2YoCi1zcWwpLAorLGdfelVmaVNtc19EZWxNc2cubnZfY291bnQpO2ZvcihpPSgweDEyZGMrMTk5My0weDFhYTUpO2k8Z196VWZpU21zX0RlbE1zZy4KK252X2NvdW50O2krKyl7Y2hhciBzcWxbKDB4NTg3KzQxODctMHgxNTYyKV09eygweDFlOCsyNzEzLTB4YzgxKX07c25wcmludGYoc3FsLAorc2l6ZW9mKHNxbCksCiAiXHg0NFx4NDVceDRjXHg0NVx4NTRceDQ1XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NjFceDZlXHg2NFx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX05WX1RBQkxFLGdfelVmaVNtc19EZWxNc2cubnZfaWRbaV0pO2lmKFpURV9XTVNfREJfT0shPQogelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKXtwcmludGYoCkBAIC0zODgsNDAgKzM4Nyw0MCBAQAogLGkpO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fX1wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDRlXHg3Nlx4NTNceDZkXHg3M1x4M2FceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3MyIgIlxuIgogKTtyZXR1cm4gV01TX0NNRF9TVUNDRVNTO31pbnQgelVmaVNtc19HZXRTbXNJbmRleChpbnQgaWQsVF96VWZpU21zX01vZGlmeVRhZyoKLXB0TW9kaWZ5VGFnLGludCBpc19jYyl7Y2hhciBzcWxbKDB4Y2E4KzYyOTctMHgyNGMxKV09eygweGM1MSs1MTMxLTB4MjA1Yyl9OwotVF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89eygweDkzNisxNDE5LTB4ZWMxKX07Y2hhciBzdHJfaW5kZXhbCi0oMHhiOTIrMTEwNC0weGZlMCkqV01TX01FU1NBR0VfTElTVF9NQVhdPXsoMHg3ODErMjgzNS0weDEyOTQpfTtidWZfaW5mby5idWZfYWRkcgotPXN0cl9pbmRleDtidWZfaW5mby5idWZfbGVuPXNpemVvZihzdHJfaW5kZXgpO3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKK3B0TW9kaWZ5VGFnLGludCBpc19jYyl7Y2hhciBzcWxbKDB4ODIzKzY2NjAtMHgyMWE3KV09eygweGRlYSszNzU5LTB4MWM5OSl9OworVF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89eygweDFhMzArMzM2LTB4MWI4MCl9O2NoYXIgc3RyX2luZGV4WworKDB4MjFkNSs4MC0weDIyMjMpKldNU19NRVNTQUdFX0xJU1RfTUFYXT17KDB4MTA1MiszODIxLTB4MWYzZil9O2J1Zl9pbmZvLgorYnVmX2FkZHI9c3RyX2luZGV4O2J1Zl9pbmZvLmJ1Zl9sZW49c2l6ZW9mKHN0cl9pbmRleCk7c25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDY5XHg2ZVx4NjRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsaWQpO2lmKHpVZmlTbXNfRXhlY1NxbChzcWwselVmaVNtc19HZXRGaXJzdENvbHVtblN0ciwmYnVmX2luZm8pIT1aVEVfV01TX0RCX09LKQoge2F0X3ByaW50KExPR19FUlIsCiAiXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IgotKTtyZXR1cm4gWlVGSV9GQUlMO31pZigoMHgxN2YxKzExMzQtMHgxYzVlKT09aXNfY2Mpe2ludCBpPSgweDFhODUrMjAyNi0weDIyNmYpOwotaW50IGo9KDB4MTgxKzc5NTUtMHgyMDk0KTtpbnQgY291bnQ9KDB4MTA1Yys1NTgtMHgxMjhhKTtjaGFyKipvdXRfcmVzdWx0PU5VTEw7Ci1jb3VudD16VWZpU21zX1NwbGl0U3RyaW5nKHN0cl9pbmRleCwmb3V0X3Jlc3VsdCwoKGNoYXIpKDB4YzRkKzE0MDItMHgxMThjKSkpO2ZvcgotKGk9KDB4N2RiKzI2MDktMHgxMjBjKTtpPGNvdW50O2krKyl7aWYoKDB4ZDQ3KzI0MjYtMHgxNmMxKSE9c3RyY21wKG91dF9yZXN1bHRbaV0KLSwiIikpe3B0TW9kaWZ5VGFnLT5pbmRpY2VzW2orK109YXRvaShvdXRfcmVzdWx0W2ldKTt9fXB0TW9kaWZ5VGFnLT4KLW51bV9vZl9pbmRpY2VzPWo7ZnJlZShvdXRfcmVzdWx0KTt9ZWxzZXtwdE1vZGlmeVRhZy0+aW5kaWNlc1soMHgxZWJmKzIyNy0weDFmYTIpCi1dPWF0b2koc3RyX2luZGV4KTtwdE1vZGlmeVRhZy0+bnVtX29mX2luZGljZXM9KDB4NjY2KzIzODUtMHhmYjYpO31wdE1vZGlmeVRhZy0+CispO3JldHVybiBaVUZJX0ZBSUw7fWlmKCgweDExY2QrMjMwNS0weDFhY2QpPT1pc19jYyl7aW50IGk9KDB4MTIwZCsxNDg0LTB4MTdkOSk7CitpbnQgaj0oMHhkODErMTMwMy0weDEyOTgpO2ludCBjb3VudD0oMHgxZjE0KzMzOS0weDIwNjcpO2NoYXIqKm91dF9yZXN1bHQ9TlVMTDsKK2NvdW50PXpVZmlTbXNfU3BsaXRTdHJpbmcoc3RyX2luZGV4LCZvdXRfcmVzdWx0LCgoY2hhcikoMHgxODQyKzIzNDQtMHgyMTJmKSkpOworZm9yKGk9KDB4MTYwMCs1MDQtMHgxN2Y4KTtpPGNvdW50O2krKyl7aWYoKDB4MWRjNSsyOTYtMHgxZWVkKSE9c3RyY21wKG91dF9yZXN1bHQKK1tpXSwiIikpe3B0TW9kaWZ5VGFnLT5pbmRpY2VzW2orK109YXRvaShvdXRfcmVzdWx0W2ldKTt9fXB0TW9kaWZ5VGFnLT4KK251bV9vZl9pbmRpY2VzPWo7ZnJlZShvdXRfcmVzdWx0KTt9ZWxzZXtwdE1vZGlmeVRhZy0+aW5kaWNlc1soMHg0ZDYrNzc3LTB4N2RmKV09CithdG9pKHN0cl9pbmRleCk7cHRNb2RpZnlUYWctPm51bV9vZl9pbmRpY2VzPSgweGFjZCs3MDY4LTB4MjY2OCk7fXB0TW9kaWZ5VGFnLT4KIHRvdGFsX2luZGljZXM9cHRNb2RpZnlUYWctPm51bV9vZl9pbmRpY2VzO3ByaW50ZigKICJceDZkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDVmXHg3NFx4NjFceDY3XHg1Zlx4NzBceDc0XHg3Mlx4MmRceDNlXHg3NFx4NmZceDc0XHg2MVx4NmNceDVmXHg2OVx4NmVceDY0XHg2OVx4NjNceDY1XHg3M1x4M2RceDI1XHg2NCIgIlxuIgogLHB0TW9kaWZ5VGFnLT50b3RhbF9pbmRpY2VzKTtyZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19Jc0NvbmNhdFNtcyhpbnQgaWQpewotY2hhciBzcWxbKDB4YTRiKzY0MDQtMHgyMmNmKV09eygweGNjMisyNDMxLTB4MTY0MSl9O2ludCBpc19jYz0KLSgweDc4OSs2OTgzLTB4MjJkMCk7VF96VWZpU21zX0RiUmVzdWx0IHJlc3VsdD1aVEVfV01TX0RCX09LO3NucHJpbnRmKHNxbCxzaXplb2YoCi1zcWwpLAorY2hhciBzcWxbKDB4MTRmOSszNzIyLTB4MjMwMyldPXsoMHgyMDIrNzI3LTB4NGQ5KX07aW50IGlzX2NjPQorKDB4MThmZisxMDQ1LTB4MWQxNCk7VF96VWZpU21zX0RiUmVzdWx0IHJlc3VsdD1aVEVfV01TX0RCX09LO3NucHJpbnRmKHNxbCxzaXplb2YKKyhzcWwpLAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDQzXHg2M1x4NWZceDUzXHg2ZFx4NzNceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NjRceDI3XHgzYiIKICxaVEVfV01TX0RCX1NNU19UQUJMRSxpZCk7cmVzdWx0PXpVZmlTbXNfRXhlY1NxbChzcWwselVmaVNtc19HZXRGaXJzdENvbHVtbkludCwmCiBpc19jYyk7aWYoWlRFX1dNU19EQl9PSyE9cmVzdWx0KXthdF9wcmludChMT0dfRVJSLAogIlx4NmZceDcwXHg2NVx4NmVceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHgyNVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0IgotLFpURV9XTVNfREJfU01TX1RBQkxFKTtyZXR1cm4tKDB4OWVjKzIyOTEtMHgxMmRlKTt9cmV0dXJuIGlzX2NjO31pbnQgCissWlRFX1dNU19EQl9TTVNfVEFCTEUpO3JldHVybi0oMHgxMzE5KzE5Mi0weDEzZDgpO31yZXR1cm4gaXNfY2M7fWludCAKIHpVZmlTbXNfVXBkYXRlU21zVGFnSW5EYih1bnNpZ25lZCBsb25nIGlkLHVuc2lnbmVkIGludCB0YWdzKXtjaGFyIHNxbFsKLSgweDFkOCsyNjUwLTB4YmIyKV09eygweDEwNjErMzM5Mi0weDFkYTEpfTtzbnByaW50ZihzcWwsc2l6ZW9mKHNxbCksCisoMHg4MTUrNjAwMS0weDFmMDYpXT17KDB4MjYrNDA1MS0weGZmOSl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDU1XHg1MFx4NDRceDQxXHg1NFx4NDVceDIwXHgyNVx4NzNceDIwXHg1M1x4NDVceDU0XHgyMFx4NTRceDYxXHg2N1x4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgzZFx4MjdceDI1XHg2NFx4MjdceDNiIgogLFpURV9XTVNfREJfU01TX1RBQkxFLHRhZ3MsaWQpO3JldHVybiBpc1N1Y2Vzcyh6VWZpU21zX0V4ZWNTcWwoc3FsLE5VTEwsTlVMTCkpO30KIGludCB6VWZpU21zX0dldFRhZ0NvdW50SW5EYihUX3pVZmlTbXNfTWVtb3J5VHlwZSBtZW1fc3RvcmUsdW5zaWduZWQgaW50IHRhZ3MsaW50CiAqcFRvdGFsQ291bnQpe1RfelVmaVNtc19EYlJlc3VsdCByZXN1bHQ9WlRFX1dNU19EQl9PSztjaGFyIHNxbFsKLSgweDMwMis2MDg3LTB4MWE0OSldPXsoMHhiZjIrNDIyOC0weDFjNzYpfTtpZihwVG90YWxDb3VudD09TlVMTCl7cmV0dXJuIAotWlVGSV9GQUlMO31pZihtZW1fc3RvcmU9PVpURV9XTVNfTUVNT1JZX01BWCl7c25wcmludGYoc3FsLHNpemVvZihzcWwpLAorKDB4ZjZmKzU3MzQtMHgyNTU1KV09eygweDI5NSsyOTIzLTB4ZTAwKX07aWYocFRvdGFsQ291bnQ9PU5VTEwpe3JldHVybiBaVUZJX0ZBSUwKKzt9aWYobWVtX3N0b3JlPT1aVEVfV01TX01FTU9SWV9NQVgpe3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDI4XHgyYVx4MjlceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDU0XHg2MVx4NjdceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9TTVNfVEFCTEUsdGFncyk7fWVsc2UgaWYobWVtX3N0b3JlPT1aVEVfV01TX01FTU9SWV9OVil7c25wcmludGYoc3FsLAogc2l6ZW9mKHNxbCksCkBAIC00MzAsMTcgKzQyOSwxNyBAQAogIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDYzXHg2Zlx4NzVceDZlXHg3NFx4MjhceDJhXHgyOVx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4MjVceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDU0XHg2MVx4NjdceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9TTVNfVEFCTEUsWlRFX1dNU19EQl9TSU1fVEFCTEUsdGFncyk7fXJlc3VsdD16VWZpU21zX0V4ZWNTcWwoc3FsLCgKIHp0ZV93bXNfZGJfY2FsbGJhY2spelVmaVNtc19HZXRGaXJzdENvbHVtbkludCxwVG90YWxDb3VudCk7cmV0dXJuIGlzU3VjZXNzKAotcmVzdWx0KTt9aW50IHpVZmlTbXNfRGVsZXRlRHJhZnRTbXMobG9uZyBpU21zSWQpe2NoYXIgc3FsWygweGIwZis0NzczLTB4MWQzNCldPXsKLSgweDFjMSsxMTAzLTB4NjEwKX07c25wcmludGYoc3FsLHNpemVvZihzcWwpLAorcmVzdWx0KTt9aW50IHpVZmlTbXNfRGVsZXRlRHJhZnRTbXMobG9uZyBpU21zSWQpe2NoYXIgc3FsWygweDhkNis1MTg4LTB4MWM5YSldPXsKKygweDEyMWErMTc2LTB4MTJjYSl9O3NucHJpbnRmKHNxbCxzaXplb2Yoc3FsKSwKICJceDQ0XHg0NVx4NGNceDQ1XHg1NFx4NDVceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDI1XHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDI3XHgyNVx4NmNceDY0XHgyN1x4M2IiCiAsWlRFX1dNU19EQl9TTVNfVEFCTEUsaVNtc0lkKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHNxbCxOVUxMLE5VTEwpKTt9Ci1pbnQgelVmaVNtc19TZXRDb25jYXRNYXhSZWZlcihpbnQgcmVmKXtjaGFyIHNxbFsoMHgxNzM2KzI3OTQtMHgyMWEwKV09ewotKDB4MTQyZCs0NTQ2LTB4MjVlZil9O2lmKFpURV9XTVNfTUFYX0NPTkNBVF9SRUY8cmVmKXtyZWY9KDB4MTAyNCsxNTE2LTB4MTYxMCk7fQoraW50IHpVZmlTbXNfU2V0Q29uY2F0TWF4UmVmZXIoaW50IHJlZil7Y2hhciBzcWxbKDB4MmFhKzY1NzQtMHgxYmQ4KV09eworKDB4YTBkKzYxNDAtMHgyMjA5KX07aWYoWlRFX1dNU19NQVhfQ09OQ0FUX1JFRjxyZWYpe3JlZj0oMHg0MTgrMjg2My0weGY0Nyk7fQogc25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NTVceDUwXHg0NFx4NDFceDU0XHg0NVx4MjBceDI1XHg3M1x4MjBceDUzXHg0NVx4NTRceDIwXHg0ZFx4NjFceDc4XHg1Zlx4NDNceDYzXHg1Zlx4NTJceDY1XHg2Nlx4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NjlceDY0XHgzZFx4MzFceDNiIgogLFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFLHJlZik7cmV0dXJuIGlzU3VjZXNzKHpVZmlTbXNfRXhlY1NxbChzcWwsTlVMTCxOVUxMKSkKLTt9aW50IHpVZmlTbXNfU2V0TWF4UmVmZXJlbmNlKGludCByZWYpe2NoYXIgc3FsWygweDM2OSs2MjAtMHg1NTUpXT17Ci0oMHg3NjcrMjgzNi0weDEyN2IpfTtpZihaVEVfV01TX01BWF9TTVNfUkVGPHJlZil7cmVmPSgweDFkODQrMTk2LTB4MWU0OCk7fQorO31pbnQgelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoaW50IHJlZil7Y2hhciBzcWxbKDB4M2M0KzQyMDAtMHgxM2FjKV09eworKDB4ZTI3KzUxNzUtMHgyMjVlKX07aWYoWlRFX1dNU19NQVhfU01TX1JFRjxyZWYpe3JlZj0oMHg1MCs4MjIwLTB4MjA2Yyk7fQogc25wcmludGYoc3FsLHNpemVvZihzcWwpLAogIlx4NTVceDUwXHg0NFx4NDFceDU0XHg0NVx4MjBceDI1XHg3M1x4MjBceDUzXHg0NVx4NTRceDIwXHg0ZFx4NjFceDc4XHg1Zlx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDY5XHg2NFx4M2RceDMxXHgzYiIKICxaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRSxyZWYpO3JldHVybiBpc1N1Y2Vzcyh6VWZpU21zX0V4ZWNTcWwoc3FsLE5VTEwsTlVMTCkpCkBAIC00NTMsNzUgKzQ1Miw3NSBAQAogLT5ob3VyLHB0U21zRGF0ZS0+bWluLHB0U21zRGF0ZS0+c2VjLHB0U21zRGF0ZS0+dGltZXpvbmUpO3Jlc3VsdD16VWZpU21zX0V4ZWNTcWwKIChzdHJTUUwsTlVMTCxOVUxMKTtzcWxpdGUzX2ZyZWUoc3RyU1FMKTtyZXR1cm4gaXNTdWNlc3MocmVzdWx0KTt9aW50IAogelVmaVNtc19HZXRGaXJzdENvbHVtblBhcmFJbmZvKHZvaWQqZnZhcmcsaW50IGNvbHVtbnMsY2hhcioqenJlc3VsdCxjaGFyKipsbmFtZSkKLXtpZihjb2x1bW5zPj0oMHgxODFkKzE3ODYtMHgxZjE2KSYmZnZhcmchPU5VTEwpe2lmKHpyZXN1bHRbKDB4NThmKzc3NTktMHgyM2RlKV0KLSE9TlVMTCl7VF96VWZpU21zX1BhcmFJbmZvKnBhcmE9KFRfelVmaVNtc19QYXJhSW5mbyopZnZhcmc7c3RybmNweShwYXJhLT5zY2EsCi16cmVzdWx0WygweDkxMys2MTk4LTB4MjE0OSldLHNpemVvZihwYXJhLT5zY2EpLSgweDVkYysxNjU0LTB4YzUxKSk7cGFyYS0+Ci1tZW1fc3RvcmU9YXRvaSh6cmVzdWx0WygweGVjZisxMDY3LTB4MTJmOSldKTtwYXJhLT50cF92YWxpZGl0eV9wZXJpb2Q9YXRvaSgKLXpyZXN1bHRbKDB4MTczNCsyODkyLTB4MjI3ZSldKTtwYXJhLT5zdGF0dXNfcmVwb3J0X29uPWF0b2koenJlc3VsdFsKLSgweDVkOSs0OTI3LTB4MTkxNSldKTtwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbj1hdG9pKHpyZXN1bHRbKDB4NDYzKzY0MjMtMHgxZDc2KV0pCi07cGFyYS0+b3V0ZGF0ZV9kZWxldGVfb249YXRvaSh6cmVzdWx0WygweGRhZCs2MjEyLTB4MjVlYyldKTsodm9pZClzdHJuY3B5KHBhcmEtPgotZGVmYXVsdF9zdG9yZSx6cmVzdWx0WygweGE3Zis2NjQ1LTB4MjQ2ZSldLHNpemVvZihwYXJhLT5kZWZhdWx0X3N0b3JlKS0KLSgweGU5MSszMTkyLTB4MWIwOCkpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCit7aWYoY29sdW1ucz49KDB4ZjdhKzY4OC0weDEyMjkpJiZmdmFyZyE9TlVMTCl7aWYoenJlc3VsdFsoMHgxNWY0KzEwMi0weDE2NWEpXSE9CitOVUxMKXtUX3pVZmlTbXNfUGFyYUluZm8qcGFyYT0oVF96VWZpU21zX1BhcmFJbmZvKilmdmFyZztzdHJuY3B5KHBhcmEtPnNjYSwKK3pyZXN1bHRbKDB4YWU4KzI1MzEtMHgxNGNiKV0sc2l6ZW9mKHBhcmEtPnNjYSktKDB4MjVhYisyNTktMHgyNmFkKSk7cGFyYS0+CittZW1fc3RvcmU9YXRvaSh6cmVzdWx0WygweDE0ZDUrMTY3OS0weDFiNjMpXSk7cGFyYS0+dHBfdmFsaWRpdHlfcGVyaW9kPWF0b2koCit6cmVzdWx0WygweDYxNis1MTM0LTB4MWEyMildKTtwYXJhLT5zdGF0dXNfcmVwb3J0X29uPWF0b2koenJlc3VsdFsKKygweDYwNCs2Nzc2LTB4MjA3OSldKTtwYXJhLT5zZW5kZmFpbF9yZXRyeV9vbj1hdG9pKHpyZXN1bHRbKDB4MTEyNCsyMDk2LTB4MTk1MCldCispO3BhcmEtPm91dGRhdGVfZGVsZXRlX29uPWF0b2koenJlc3VsdFsoMHgxODM3KzI5MC0weDE5NTQpXSk7KHZvaWQpc3RybmNweShwYXJhCistPmRlZmF1bHRfc3RvcmUsenJlc3VsdFsoMHg0N2IrMjAyOS0weGM2MildLHNpemVvZihwYXJhLT5kZWZhdWx0X3N0b3JlKS0KKygweGM2OSs0MzUyLTB4MWQ2OCkpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCiB6VWZpU21zX0dldERiUGFyYW1ldGVycyh2b2lkKXtjaGFyKnN0clNRTD0KICJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg1M1x4NmRceDczXHg1Zlx4NTNceDYzXHg2MVx4MmNceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDJjXHg1NFx4NzBceDVmXHg1Nlx4NjFceDZjXHg2OVx4NjRceDY5XHg3NFx4NzlceDJjXHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg3MFx4NmZceDcyXHg3NFx4MmNceDUzXHg2NVx4NmVceDY0XHg1Zlx4NTJceDY1XHg3NFx4NzJceDc5XHgyY1x4NGZceDc1XHg3NFx4NjRceDYxXHg3NFx4NjVceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHgyY1x4NDRceDY1XHg2Nlx4NjFceDc1XHg2Y1x4NzRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjAiCi0gWlRFX1dNU19EQl9QQVJBTUVURVJfVEFCTEUiXHgzYiI7bWVtc2V0KCZnX3pVZmlTbXNfQ3VyU21zUGFyYSwoMHhkNTIrMzQzLTB4ZWE5KQotLHNpemVvZihUX3pVZmlTbXNfUGFyYUluZm8pKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKHN0clNRTCwKLXpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5QYXJhSW5mbywmZ196VWZpU21zX0N1clNtc1BhcmEpKTt9aW50IAorIFpURV9XTVNfREJfUEFSQU1FVEVSX1RBQkxFIlx4M2IiO21lbXNldCgmZ196VWZpU21zX0N1clNtc1BhcmEsCisoMHgyMDlhKzI5NS0weDIxYzEpLHNpemVvZihUX3pVZmlTbXNfUGFyYUluZm8pKTtyZXR1cm4gaXNTdWNlc3MoelVmaVNtc19FeGVjU3FsKAorc3RyU1FMLHpVZmlTbXNfR2V0Rmlyc3RDb2x1bW5QYXJhSW5mbywmZ196VWZpU21zX0N1clNtc1BhcmEpKTt9aW50IAogelVmaVNtc19HZXRTZW5kQ29udGVudCh2b2lkKmZ2YXJnLGludCBjb2x1bW4sY2hhcioqenJlc3VsdCxjaGFyKipsbmFtZSl7Ci1UX3pVZmlTbXNfQnVmSW5mbypwYXJhPShUX3pVZmlTbXNfQnVmSW5mbyopZnZhcmc7aWYoY29sdW1uPj0oMHg1YTQrNjEwMy0weDFkN2EpCi0mJnBhcmEhPU5VTEwpKHZvaWQpc3RybmNweShwYXJhLT5idWZfYWRkcix6cmVzdWx0WygweDEwYys4NjY3LTB4MjJlNyldLHBhcmEtPgotYnVmX2xlbi0oMHhlMis0MzQwLTB4MTFkNSkpO3JldHVybigweDcwMis2NTMzLTB4MjA4Nyk7fWludCB6VWZpU21zX0dldFNtc0NvbnRlbnQKLShjaGFyKnBTbXNCdWYsaW50IGxlbil7VF96VWZpU21zX0J1ZkluZm8gYnVmX2luZm89eygweDFiYjIrNDA1LTB4MWQ0Nyl9O2NoYXIqCi1zdHJTUUw9CitUX3pVZmlTbXNfQnVmSW5mbypwYXJhPShUX3pVZmlTbXNfQnVmSW5mbyopZnZhcmc7aWYoY29sdW1uPj0oMHgxY2JmKzExMTEtMHgyMTE1KQorJiZwYXJhIT1OVUxMKSh2b2lkKXN0cm5jcHkocGFyYS0+YnVmX2FkZHIsenJlc3VsdFsoMHg1NmIrMjM2Ny0weGVhYSldLHBhcmEtPgorYnVmX2xlbi0oMHgxNzE5KzM4NDYtMHgyNjFlKSk7cmV0dXJuKDB4YmI2KzE3NjktMHgxMjlmKTt9aW50IAorelVmaVNtc19HZXRTbXNDb250ZW50KGNoYXIqcFNtc0J1ZixpbnQgbGVuKXtUX3pVZmlTbXNfQnVmSW5mbyBidWZfaW5mbz17CisoMHgxMjA0KzExODAtMHgxNmEwKX07Y2hhcipzdHJTUUw9CiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NmRceDczXHg2N1x4NWZceDYzXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwIgogIFpURV9XTVNfREJfU0VORF9DT05URU5UX1RBQkxFIlx4M2IiO2J1Zl9pbmZvLmJ1Zl9hZGRyPXBTbXNCdWY7YnVmX2luZm8uYnVmX2xlbj0KLWxlbjttZW1zZXQoYnVmX2luZm8uYnVmX2FkZHIsKDB4MThiZCszNTQzLTB4MjY5NCksbGVuKTtyZXR1cm4gaXNTdWNlc3MoCitsZW47bWVtc2V0KGJ1Zl9pbmZvLmJ1Zl9hZGRyLCgweDE0MCs0NDk0LTB4MTJjZSksbGVuKTtyZXR1cm4gaXNTdWNlc3MoCiB6VWZpU21zX0V4ZWNTcWwoc3RyU1FMLHpVZmlTbXNfR2V0U2VuZENvbnRlbnQsJmJ1Zl9pbmZvKSk7fWludCAKIHpVZmlTbXNfU2VhcmNoQ29uY2F0U21zSW5EYihUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLGNoYXIqcE1lbVN0b3JlKXsKLWNoYXIqc3FsPU5VTEw7c3FsaXRlM19zdG10KnN0bXQ9TlVMTDtpbnQgaWQ9LSgweGNkZCs2MTQtMHhmNDIpO3N3aXRjaCgKK2NoYXIqc3FsPU5VTEw7c3FsaXRlM19zdG10KnN0bXQ9TlVMTDtpbnQgaWQ9LSgweDMxKzU3NzAtMHgxNmJhKTtzd2l0Y2goCiBwdERiU2F2ZURhdGEtPnRhZyl7Y2FzZSBXTVNfVEFHX1RZUEVfTU9fU0VOVF9WMDE6Y2FzZSAKIFdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE6e3NxbD1zcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4MmNceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRlXHg3NVx4NmRceDYyXHg2NVx4NzJceDNkXHgyN1x4MjVceDcxXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDI4XHg1NFx4NjFceDY3XHgyMFx4M2RceDIwXHgyN1x4MjVceDY0XHgyN1x4MjBceDRmXHg1Mlx4MjBceDU0XHg2MVx4NjdceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDI5XHgzYiIKLSxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDEwMmYrMTUzMi0weDE2MmIpXSwKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTY0ZisxMjM5LTB4MWIyNSldLHBNZW1TdG9yZSwKLVdNU19UQUdfVFlQRV9NT19TRU5UX1YwMSxXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxKTticmVhazt9Y2FzZQotKDB4MTA4Nys1MjgzLTB4MjUyNik6e3NxbD1zcWxpdGUzX21wcmludGYoCi0iXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4MmNceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRlXHg3NVx4NmRceDYyXHg2NVx4NzJceDNkXHgyN1x4MjVceDcxXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDU0XHg2MVx4NjdceDIwXHgzZFx4MjBceDI3XHgyNVx4NjRceDI3XHgzYiIKLSxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDJmNCsyMzEyLTB4YmZjKV0scHREYlNhdmVEYXRhCi0tPmNvbmNhdF9pbmZvWygweDQ0Kzk5MTEtMHgyNmZhKV0scE1lbVN0b3JlLCgweDFlODYrMTEyMi0weDIyZTQpKTticmVhazt9Y2FzZSAKLVdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTpjYXNlIFdNU19UQUdfVFlQRV9NVF9OT1RfUkVBRF9WMDE6e3NxbD1zcWxpdGUzX21wcmludGYoCi0iXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4MmNceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRlXHg3NVx4NmRceDYyXHg2NVx4NzJceDNkXHgyN1x4MjVceDcxXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDI4XHg1NFx4NjFceDY3XHgyMFx4M2RceDIwXHgyN1x4MjVceDY0XHgyN1x4MjBceDRmXHg1Mlx4MjBceDU0XHg2MVx4NjdceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDI5XHgzYiIKLSxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDlmYSs2MjcwLTB4MjI3OCldLAotcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxYTMrNzc3MS0weDFmZmQpXSxwTWVtU3RvcmUsCi1XTVNfVEFHX1RZUEVfTVRfUkVBRF9WMDEsV01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMSk7YnJlYWs7fWRlZmF1bHQ6e3NxbD0KKyxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDE1NSsxMDQ4LTB4NTZkKV0scHREYlNhdmVEYXRhCistPmNvbmNhdF9pbmZvWygweDdjZiszMDg3LTB4MTNkZCldLHBNZW1TdG9yZSxXTVNfVEFHX1RZUEVfTU9fU0VOVF9WMDEsCitXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxKTticmVhazt9Y2FzZSgweGRmOSszNTUxLTB4MWJkNCk6e3NxbD0KIHNxbGl0ZTNfbXByaW50ZigKKyJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXHg0M1x4NjNceDVmXHg1M1x4NjVceDcxXHgyY1x4NjlceDY0XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHg3M1x4NmRceDczXHgyMFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFx4NGVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0ZFx4NjVceDZkXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHgzZFx4MjdceDI1XHg3M1x4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NTRceDYxXHg2N1x4MjBceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDNiIgorLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTM3MCszNzk5LTB4MjI0NyldLAorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxNDg2KzMzNTYtMHgyMWExKV0scE1lbVN0b3JlLCgweDRkOCs0OTcwLTB4MTgzZSkpOworYnJlYWs7fWNhc2UgV01TX1RBR19UWVBFX01UX1JFQURfVjAxOmNhc2UgV01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMTp7c3FsPQorc3FsaXRlM19tcHJpbnRmKAorIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBceDQzXHg2M1x4NWZceDUzXHg2NVx4NzFceDJjXHg2OVx4NjRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg0ZVx4NzVceDZkXHg2Mlx4NjVceDcyXHgzZFx4MjdceDI1XHg3MVx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTJceDY1XHg2Nlx4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4M2RceDI3XHgyNVx4NjRceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyN1x4MjVceDczXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHgyOFx4NTRceDYxXHg2N1x4MjBceDNkXHgyMFx4MjdceDI1XHg2NFx4MjdceDIwXHg0Zlx4NTJceDIwXHg1NFx4NjFceDY3XHgzZFx4MjBceDI3XHgyNVx4NjRceDI3XHgyOVx4M2IiCisscHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxNGErNDM4OC0weDEyNmUpXSwKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4NWMrOTI4My0weDI0OWUpXSxwTWVtU3RvcmUsV01TX1RBR19UWVBFX01UX1JFQURfVjAxCissV01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMSk7YnJlYWs7fWRlZmF1bHQ6e3NxbD1zcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NDNceDYzXHg1Zlx4NTNceDY1XHg3MVx4MmNceDY5XHg2NFx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFx4NzNceDZkXHg3M1x4MjBceDU3XHg0OFx4NDVceDUyXHg0NVx4MjBceDRlXHg3NVx4NmRceDYyXHg2NVx4NzJceDNkXHgyN1x4MjVceDcxXHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1Mlx4NjVceDY2XHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NDNceDYzXHg1Zlx4NTRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjdceDI1XHg2NFx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgzYiIKLSxwdERiU2F2ZURhdGEtPm51bWJlcixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDEwODQrNTM3Mi0weDI1ODApXSwKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4ZjExKzU3NTYtMHgyNThjKV0scE1lbVN0b3JlKTthdF9wcmludChMT0dfRVJSLAorLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4Nzc0KzEyOTctMHhjODUpXSxwdERiU2F2ZURhdGEKKy0+Y29uY2F0X2luZm9bKDB4MTc1OSsyNTkzLTB4MjE3OSldLHBNZW1TdG9yZSk7YXRfcHJpbnQoTE9HX0VSUiwKICJceDc0XHg2MVx4NjdceDIwXHgyNVx4NjRceDIwXHg2OVx4NzNceDIwXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZSIsCiBwdERiU2F2ZURhdGEtPnRhZyk7YnJlYWs7fX1wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3NFx4NjVceDY1XHg3NFx4M2FceDI1XHg3MyIgIlxuIixzcWwpO2lmKAotc3FsaXRlM19wcmVwYXJlKGdfelVmaVNtc19EYlBvaW50ZXIsc3FsLC0oMHhhNmErNDU2Mi0weDFjM2IpLCZzdG10LAotKDB4YTBkKzUwMjgtMHgxZGIxKSkhPVNRTElURV9PSyl7YXRfcHJpbnQoTE9HX0VSUiwKK3NxbGl0ZTNfcHJlcGFyZShnX3pVZmlTbXNfRGJQb2ludGVyLHNxbCwtKDB4NThmKzY3MzUtMHgxZmRkKSwmc3RtdCwKKygweDE5NGYrMTIwOC0weDFlMDcpKSE9U1FMSVRFX09LKXthdF9wcmludChMT0dfRVJSLAogIlx4NjNceDYxXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg2NVx4NzhceDY1XHg2M1x4MjBceDczXHg3MVx4NmNceDJjXHg3M1x4NzFceDZjXHg2OVx4NzRceDY1XHgzM1x4NWZceDY1XHg3Mlx4NzJceDZkXHg3M1x4NjdceDNhXHgyNVx4NzNceDJlIiAiXG4iCiAsc3FsaXRlM19lcnJtc2coZ196VWZpU21zX0RiUG9pbnRlcikpO3NxbGl0ZTNfZnJlZShzcWwpO3JldHVybi0KLSgweDllNCsxNDAzLTB4ZjVlKTt9d2hpbGUoU1FMSVRFX1JPVz09c3FsaXRlM19zdGVwKHN0bXQpKXtpbnQgaj0KLSgweDE1MCsxMTI2LTB4NWI2KTtjaGFyKipvdXRfcmVzdWx0PU5VTEw7Y2hhcipjb2x1bW5fdGV4dD1zcWxpdGUzX2NvbHVtbl90ZXh0KAotc3RtdCwoMHgxZGNkKzE0NDEtMHgyMzZlKSk7aW50IGNvdW50PS0oMHg4NjQrMzE3MC0weDE0YzUpO2lmKGNvbHVtbl90ZXh0IT1OVUxMKQotY291bnQ9elVmaVNtc19TcGxpdFN0cmluZyhjb2x1bW5fdGV4dCwmb3V0X3Jlc3VsdCwoKGNoYXIpKDB4MTFmMysyNjM1LTB4MWMwMykpKTsKLWZvcihqPSgweDMyOCszNzk1LTB4MTFmYik7ajxjb3VudDtqKyspe2lmKCgweDQ0YSszMjYwLTB4MTEwNik9PXN0cmNtcChvdXRfcmVzdWx0Ci1bal0sIiIpKXtpZihqKygweDZjYis0OTM2LTB4MWExMik9PXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MWZlMSs0MDctMHgyMTc2KQotXSl7aWQ9c3FsaXRlM19jb2x1bW5faW50KHN0bXQsKDB4NGM4Kzg0MzAtMHgyNWI1KSk7YnJlYWs7fX19aWYob3V0X3Jlc3VsdCE9TlVMTCkKLXtmcmVlKG91dF9yZXN1bHQpO291dF9yZXN1bHQ9TlVMTDt9aWYoLSgweDIyYSs4MjczLTB4MjI3YSkhPWlkKXticmVhazt9fSh2b2lkKQorKDB4M2Y4KzcwOTctMHgxZmIwKTt9d2hpbGUoU1FMSVRFX1JPVz09c3FsaXRlM19zdGVwKHN0bXQpKXtpbnQgaj0KKygweDk0NSszNTgyLTB4MTc0Myk7Y2hhcioqb3V0X3Jlc3VsdD1OVUxMO2NoYXIqY29sdW1uX3RleHQ9c3FsaXRlM19jb2x1bW5fdGV4dCgKK3N0bXQsKDB4MTI3ZCs5ODctMHgxNjU4KSk7aW50IGNvdW50PS0oMHgxYzdiKzM4Ni0weDFkZmMpO2lmKGNvbHVtbl90ZXh0IT1OVUxMKQorY291bnQ9elVmaVNtc19TcGxpdFN0cmluZyhjb2x1bW5fdGV4dCwmb3V0X3Jlc3VsdCwoKGNoYXIpKDB4MTMxNCs3NTQtMHgxNWNiKSkpOworZm9yKGo9KDB4N2M5KzE0MzUtMHhkNjQpO2o8Y291bnQ7aisrKXtpZigoMHgxMGI4KzE4NDItMHgxN2VhKT09c3RyY21wKG91dF9yZXN1bHQKK1tqXSwiIikpe2lmKGorKDB4MWI1MCsyMzcxLTB4MjQ5Mik9PXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4ZWNjKzcxNC0weDExOTQpCitdKXtpZD1zcWxpdGUzX2NvbHVtbl9pbnQoc3RtdCwoMHhiMTUrNjg3Ny0weDI1ZjEpKTticmVhazt9fX1pZihvdXRfcmVzdWx0IT1OVUxMKQore2ZyZWUob3V0X3Jlc3VsdCk7b3V0X3Jlc3VsdD1OVUxMO31pZigtKDB4ODQwKzQ3MTMtMHgxYWE4KSE9aWQpe2JyZWFrO319KHZvaWQpCiBzcWxpdGUzX2ZpbmFsaXplKHN0bXQpO3NxbGl0ZTNfZnJlZShzcWwpO3JldHVybiBpZDt9aW50IAogelVmaVNtc19DaGVja0RiT3V0ZGF0ZVNtc19DYWxsYmFjayh2b2lkKmZ2YXJnLGludCBjb2x1bW5zLGNoYXIqKnpyZXN1bHQsY2hhcioqCi1sbmFtZSl7aWYoZnZhcmchPU5VTEwmJmNvbHVtbnM+PSgweDk2Nys1OTY0LTB4MjBiMikpe2lmKHpyZXN1bHRbCi0oMHg4ZDcrMTc2OS0weGZjMCldIT1OVUxMKXtUX3pVZmlTbXNfRGVsUmVxKnJlc3VsdD0oVF96VWZpU21zX0RlbFJlcSopZnZhcmc7Ci1yZXN1bHQtPmlkW3Jlc3VsdC0+YWxsX29yX2NvdW50XT1hdG9pKHpyZXN1bHRbKDB4MTgyNysxODItMHgxOGRkKV0pO3Jlc3VsdC0+CitsbmFtZSl7aWYoZnZhcmchPU5VTEwmJmNvbHVtbnM+PSgweGZmZCsxODI1LTB4MTcxZCkpe2lmKHpyZXN1bHRbCisoMHgxNDZmKzI5NjctMHgyMDA2KV0hPU5VTEwpe1RfelVmaVNtc19EZWxSZXEqcmVzdWx0PShUX3pVZmlTbXNfRGVsUmVxKilmdmFyZzsKK3Jlc3VsdC0+aWRbcmVzdWx0LT5hbGxfb3JfY291bnRdPWF0b2koenJlc3VsdFsoMHg3MWIrMjExNi0weGY1ZildKTtyZXN1bHQtPgogYWxsX29yX2NvdW50Kys7cmV0dXJuIFNRTElURV9PSzt9fXJldHVybiBTUUxJVEVfRVJST1I7fVZPSUQgCiB6VWZpU21zX0NoZWNrRGJPdXRkYXRlU21zKGNvbnN0IGNoYXIqcERiVGFibGUsVF96VWZpU21zX0RlbFJlcSpwU21zRGVsKXtjaGFyIAotYWNTcWxbKDB4MTJiNis0NDAxLTB4MjM2NyldPXsoMHgxMis4NzMtMHgzN2IpfTtzdHJ1Y3QgdGltZXZhbCB0cDtpZigKLSgweGEwOCszMTAwLTB4MTYyNCkhPWdldHRpbWVvZmRheSgmdHAsTlVMTCkpe3ByaW50ZigKK2FjU3FsWygweDRlZiszMzAwLTB4MTE1MyldPXsoMHgxOGIrMTI1Ny0weDY3NCl9O3N0cnVjdCB0aW1ldmFsIHRwO2lmKAorKDB4MmU3KzI2NjgtMHhkNTMpIT1nZXR0aW1lb2ZkYXkoJnRwLE5VTEwpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2N1x4NjVceDc0XHg3NFx4NjlceDZkXHg2NVx4NmZceDY2XHg2NFx4NjFceDc5XHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgyMVx4MjFceDIxIgogKTtyZXR1cm47fWlmKHRwLnR2X3NlYzw9T1VUREFURUlOVEVSVkFMKXtyZXR1cm47fXNucHJpbnRmKGFjU3FsLHNpemVvZihhY1NxbCksCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjlceDY0XHgyMFx4NDZceDUyXHg0Zlx4NGRceDIwXHgyNVx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHg0ZFx4NmJceDc0XHg2OVx4NmRceDY1XHgzY1x4MjdceDI1XHg3NVx4MjdceDIwXHg0MVx4NGVceDQ0XHgyMFx4NGRceDY1XHg2ZFx4NWZceDUzXHg3NFx4NmZceDcyXHg2NVx4M2RceDI3XHgyNVx4NzNceDI3XHgzYiIKQEAgLTUzMSwyMSArNTMwLDIxIEBACiAiXHg2Zlx4NzBceDY1XHg2ZVx4MjBceDc0XHg2MVx4NjJceDZjXHg2NVx4MjBceDI1XHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjQiCiAsWlRFX1dNU19EQl9DTURfU1RBVFVTX1RBQkxFKTt9cmV0dXJuO31pbnQgCiB6VWZpU21zX0dldEN1cnJlbnRSZWN2VG90YWxTZXFfQ2FsbGJhY2sodm9pZCpmdmFyZyxpbnQgY29sdW1uLGNoYXIqKnpyZXN1bHQsY2hhcgotKipsbmFtZSl7aWYoZnZhcmchPU5VTEwmJmNvbHVtbj49KDB4NDcxKzMxMDktMHgxMDk0KSl7aWYoenJlc3VsdFsKLSgweDQyMiszMTk3LTB4MTA5ZildIT1OVUxMJiZ6cmVzdWx0WygweDE3NGMrMzA1NS0weDIzM2EpXSE9TlVMTCl7U01TX01TR19JTkZPKgotbXNnPShTTVNfTVNHX0lORk8qKWZ2YXJnO21lbXNldChtc2ctPmlkLCgweDVhNSs3NzQ3LTB4MjNlOCksc2l6ZW9mKG1zZy0+aWQpKTsKLW1lbXNldChtc2ctPnRvdGFsX3NlcSwoMHgyMmVmKzEwMDktMHgyNmUwKSxzaXplb2YobXNnLT50b3RhbF9zZXEpKTtzdHJuY3B5KG1zZy0+Ci1pZCx6cmVzdWx0WygweDY4OCszMTI3LTB4MTJiZildLHNpemVvZihtc2ctPmlkKS0oMHhlMjErNDM1LTB4ZmQzKSk7c3RybmNweShtc2ctPgotdG90YWxfc2VxLHpyZXN1bHRbKDB4MWQ0NCsxNzg3LTB4MjQzZSldLHNpemVvZihtc2ctPnRvdGFsX3NlcSktCi0oMHgzYzYrNzY2Mi0weDIxYjMpKTtwcmludGYoCisqKmxuYW1lKXtpZihmdmFyZyE9TlVMTCYmY29sdW1uPj0oMHg4Nys2NTQ2LTB4MWExNykpe2lmKHpyZXN1bHRbCisoMHg3NmYrMzg0Ni0weDE2NzUpXSE9TlVMTCYmenJlc3VsdFsoMHgxOWMrODUwOC0weDIyZDcpXSE9TlVMTCl7U01TX01TR19JTkZPKm1zZworPShTTVNfTVNHX0lORk8qKWZ2YXJnO21lbXNldChtc2ctPmlkLCgweGQ4MCsxMzI0LTB4MTJhYyksc2l6ZW9mKG1zZy0+aWQpKTttZW1zZXQKKyhtc2ctPnRvdGFsX3NlcSwoMHg1ODgrMjk5OC0weDExM2UpLHNpemVvZihtc2ctPnRvdGFsX3NlcSkpO3N0cm5jcHkobXNnLT5pZCwKK3pyZXN1bHRbKDB4NDc0KzM5OC0weDYwMildLHNpemVvZihtc2ctPmlkKS0oMHg3MWQrNzYxNi0weDI0ZGMpKTtzdHJuY3B5KG1zZy0+Cit0b3RhbF9zZXEsenJlc3VsdFsoMHg4NTkrMzYzMy0weDE2ODkpXSxzaXplb2YobXNnLT50b3RhbF9zZXEpLQorKDB4ODgxKzc4MTAtMHgyNzAyKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg1Ylx4NzRceDcyXHg2MVx4NjZceDY2XHg2OVx4NjNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg0M1x4NzVceDcyXHg3Mlx4NjVceDZlXHg3NFx4NTJceDY1XHg2M1x4NzZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NTNceDY1XHg3MVx4NWZceDQzXHg2MVx4NmNceDZjXHg2Mlx4NjFceDYzXHg2Ylx4MjBceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDczXHgyY1x4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NWZceDczXHg2NVx4NzFceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgogLG1zZy0+aWQsbXNnLT50b3RhbF9zZXEpO3JldHVybiBTUUxJVEVfT0s7fX1yZXR1cm4gU1FMSVRFX0VSUk9SO31pbnQgCiB6VWZpU21zX0dldEN1cnJlbnRSZWN2VG90YWxTZXEoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxTTVNfTVNHX0lORk8qCiBwbXNnKXtUX3pVZmlTbXNfRGJSZXN1bHQgcmVzdWx0PVpURV9XTVNfREJfT0s7Y2hhcipzdHJTUUw9TlVMTDtzdHJTUUw9CiBzcWxpdGUzX21wcmludGYoCiAiXHg1M1x4NDVceDRjXHg0NVx4NDNceDU0XHgyMFx4NjlceDY0XHgyY1x4MjBceDQzXHg2M1x4NWZceDRlXHg3NVx4NmRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDczXHg2ZFx4NzNceDIwXHg1N1x4NDhceDQ1XHg1Mlx4NDVceDIwXHgyMFx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4M2RceDI3XHgyNVx4NzFceDI3XHgyMFx4NDFceDRlXHg0NFx4MjBceDQzXHg2M1x4NWZceDUyXHg2NVx4NjZceDNkXHgyN1x4MjVceDY0XHgyN1x4MjBceDQxXHg0ZVx4NDRceDIwXHg0M1x4NjNceDVmXHg1NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyN1x4MjVceDY0XHgyN1x4M2IiCi0scHREYlNhdmVEYXRhLT5udW1iZXIscHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhiYjQrMTA3Ni0weGZlOCldLHB0RGJTYXZlRGF0YQotLT5jb25jYXRfaW5mb1soMHgxZDY2KzYyMi0weDFmZDMpXSk7cHJpbnRmKAorLHB0RGJTYXZlRGF0YS0+bnVtYmVyLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTZiMCs0MTM5LTB4MjZkYildLAorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhlMGIrNDY0MC0weDIwMmEpXSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg1Ylx4NzRceDcyXHg2MVx4NjZceDY2XHg2OVx4NjNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg0M1x4NzVceDcyXHg3Mlx4NjVceDZlXHg3NFx4NTJceDY1XHg2M1x4NzZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NTNceDY1XHg3MVx4MjBceDczXHg3MVx4NmNceDIwXHgzYVx4MjBceDI1XHg3M1x4MjAiICJcbiIKICxzdHJTUUwpO3Jlc3VsdD16VWZpU21zX0V4ZWNTcWwoc3RyU1FMLHpVZmlTbXNfR2V0Q3VycmVudFJlY3ZUb3RhbFNlcV9DYWxsYmFjaywKIHBtc2cpO3NxbGl0ZTNfZnJlZShzdHJTUUwpO3JldHVybiBpc1N1Y2VzcyhyZXN1bHQpO30KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19mbmMuYyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19mbmMuYwppbmRleCAxMWViNGI1Li45OWIyMWI4IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfZm5jLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX2ZuYy5jCkBAIC04LDE3ICs4LDE3IEBACiAjaW5jbHVkZSAic21zX2ZuYy5oIg0KICNpbmNsdWRlICJzbXNfZGIuaCINCiAjaW5jbHVkZSAic21zX2NvZGUuaCINCi0jZGVmaW5lIFNNU19SRVRSWV9DT1VOVCAoMHgzN2IrOTAxOS0weDI2YjMpDQotI2RlZmluZSBTSE9SVF9JTlRfTEVOICgweDcxOSszMzQ1LTB4MTQyNCkNCisjZGVmaW5lIFNNU19SRVRSWV9DT1VOVCAoMHgxNjZmKzIyMjAtMHgxZjE4KQ0KKyNkZWZpbmUgU0hPUlRfSU5UX0xFTiAoMHgxM2RjKzcxOC0weDE2YTQpDQogU01TX0xPQ0FUSU9OIGdfelVmaVNtc19DdXJMb2NhdGlvbj1TTVNfTE9DQVRJT05fU0lNO2ludCAKLWdfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2U9KDB4MjU5KzMwODctMHhlNjgpO1RfelVmaVNtc19QYXJhSW5mbyAKK2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2U9KDB4NmU0KzUxMDYtMHgxYWQ2KTtUX3pVZmlTbXNfUGFyYUluZm8gCiBnX3pVZmlTbXNfQ3VyU21zUGFyYT17IiIsV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxLAotWlRFX1dNU19TTVNfREVGQVVMVF9UUF9WQUxJRElUWV9QRVJJT0RfR1csKDB4MWQ3KzY3MzYtMHgxYzI3KSwKLSgweDIyNis1NzcwLTB4MThiMCksKDB4MWFjYiszMTM0LTB4MjcwOSksIlx4NmVceDc2In07aW50IGdfelVmaVNtc19MYW5ndWFnZT0KLU5PVF9ERUZJTkVfTEFOR1VBR0U7aW50IGdfelVmaVNtc19EY3M9KDB4MTUwYisxMjU5LTB4MTlmNik7dW5zaWduZWQgbG9uZyAKLWdfelVmaVNtc19TdG9yZUNhcGFibGl0eVtaVEVfV01TX01FTU9SWV9NQVhdPXsoMHgxZGVjKzE4OS0weDFlNDUpLAorWlRFX1dNU19TTVNfREVGQVVMVF9UUF9WQUxJRElUWV9QRVJJT0RfR1csKDB4MTg0YisyNjY5LTB4MjJiOCksCisoMHg3M2QrMzg1MC0weDE2NDcpLCgweDE3MGMrMTg0NC0weDFlNDApLCJceDZlXHg3NiJ9O2ludCBnX3pVZmlTbXNfTGFuZ3VhZ2U9CitOT1RfREVGSU5FX0xBTkdVQUdFO2ludCBnX3pVZmlTbXNfRGNzPSgweDEyYmErMjUwNS0weDFjODMpO3Vuc2lnbmVkIGxvbmcgCitnX3pVZmlTbXNfU3RvcmVDYXBhYmxpdHlbWlRFX1dNU19NRU1PUllfTUFYXT17KDB4NGRmKzEwMTEtMHg4NmUpLAogWlRFX1dNU19EQl9NU0dfQ09VTlRfTUFYfTtUX3pTbXNfU2VuZFNtc1JlcSBnX3pVZmlTbXNfRmluYWxDbWdzQnVmO1NNU19QQVJBTSAKLWdfelVmaVNtc19TZW5kaW5nU21zO1VJTlQxNiBnX3pVZmlTbXNfSXNMYW5ndWFnZVNoaWZ0PSgweGEwOSs0MTc0LTB4MWE1Nyk7ZXh0ZXJuCitnX3pVZmlTbXNfU2VuZGluZ1NtcztVSU5UMTYgZ196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD0oMHg4YzErMjI5Ni0weDExYjkpO2V4dGVybgogIGludCBnX3pVZmlTbXNfTXNnUmVmZXI7ZXh0ZXJuIFRfelVmaVNtc19EZWxTbXMgZ196VWZpU21zX0RlbE1zZztleHRlcm4gCiBUX3pVZmlTbXNfRGVsSW5kZXhJbmZvIGdfZGVsZXRlSW5kZXg7ZXh0ZXJuIFRfelVmaVNtc19Nb2RpZnlJbmRleEluZm8gCiBnX21vZGlmeUluZGV4O2V4dGVybiBUX3pVZmlTbXNfTW9kaWZ5U21zIGdfelVmaVNtc19tb2RpZnlNc2c7ZXh0ZXJuIFVJTlQ4IApAQCAtMzEsMjEgKzMxLDIwIEBACiBlTG9jYXRpb24pe3N3aXRjaChlTG9jYXRpb24pe2Nhc2UgU01TX0xPQ0FUSU9OX1NJTTp7Z196VWZpU21zX0N1ckxvY2F0aW9uPQogU01TX0xPQ0FUSU9OX1NJTTticmVhazt9Y2FzZSBTTVNfTE9DQVRJT05fTUU6e2dfelVmaVNtc19DdXJMb2NhdGlvbj0KIFNNU19MT0NBVElPTl9NRTticmVhazt9ZGVmYXVsdDp7cmV0dXJuO319fWludCB6VWZpU21zX1NldERlbGV0ZUluZm8oCi1UX3pVZmlTbXNfRGVsUmVxKnB0RGVsTXNnKXtjaGFyIGFjU3RvcmVQb3NbKDB4NDkyKzQxNDctMHgxNDkzKV07aW50IGk9Ci0oMHg1ZDcrNTExOC0weDE5ZDUpO2dfelVmaVNtc19EZWxNc2cubnZfY291bnQ9KDB4MTZmYys4ODUtMHgxYTcxKTsKLWdfelVmaVNtc19EZWxNc2cubnZfaW5kZXg9KDB4MmJjKzExNi0weDMzMCk7Z196VWZpU21zX0RlbE1zZy5zaW1fY291bnQ9Ci0oMHg4YjQrNTgyMy0weDFmNzMpO2dfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4PSgweDNjMSs2Mjk1LTB4MWM1OCk7Zm9yKGk9Ci0oMHgyMDIrNTE5My0weDE2NGIpO2k8cHREZWxNc2ctPmFsbF9vcl9jb3VudDtpKyspe21lbXNldChhY1N0b3JlUG9zLAotKDB4MTBkMis1MDAxLTB4MjQ1Yiksc2l6ZW9mKGFjU3RvcmVQb3MpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0U3RvcmVQb3NCeUlkKAorVF96VWZpU21zX0RlbFJlcSpwdERlbE1zZyl7Y2hhciBhY1N0b3JlUG9zWygweGYyMCs1Mzg2LTB4MjNmOCldO2ludCBpPQorKDB4MzE5KzQ1NjYtMHgxNGVmKTtnX3pVZmlTbXNfRGVsTXNnLm52X2NvdW50PSgweDEwNzErMjE5OS0weDE5MDgpOworZ196VWZpU21zX0RlbE1zZy5udl9pbmRleD0oMHhjNSsxNjY4LTB4NzQ5KTtnX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudD0KKygweDFkY2ErMTA5Mi0weDIyMGUpO2dfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4PSgweDNiMisxMTAxLTB4N2ZmKTtmb3IoaT0KKygweDE5N2MrMzM4Mi0weDI2YjIpO2k8cHREZWxNc2ctPmFsbF9vcl9jb3VudDtpKyspe21lbXNldChhY1N0b3JlUG9zLAorKDB4NmUyKzYyODctMHgxZjcxKSxzaXplb2YoYWNTdG9yZVBvcykpO2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTdG9yZVBvc0J5SWQoCiAiTWVtX1N0b3JlIixhY1N0b3JlUG9zLHNpemVvZihhY1N0b3JlUG9zKSxwdERlbE1zZy0+aWRbaV0pKXtyZXR1cm4gWlVGSV9GQUlMO31pZgotKCgweDc4NCs3NTk4LTB4MjUzMik9PXN0cmNtcChhY1N0b3JlUG9zLFpURV9XTVNfREJfTlZfVEFCTEUpKXtnX3pVZmlTbXNfRGVsTXNnLgorKCgweGUzYSs1NjY4LTB4MjQ1ZSk9PXN0cmNtcChhY1N0b3JlUG9zLFpURV9XTVNfREJfTlZfVEFCTEUpKXtnX3pVZmlTbXNfRGVsTXNnLgogbnZfaWRbZ196VWZpU21zX0RlbE1zZy5udl9jb3VudF09cHREZWxNc2ctPmlkW2ldO2dfelVmaVNtc19EZWxNc2cubnZfY291bnQrKzsKLWdfelVmaVNtc19EZWxNc2cubnZfaW5kZXhfY291bnQrKzt9ZWxzZSBpZigoMHgxMGIwKzU2NDAtMHgyNmI4KT09c3RyY21wKAotYWNTdG9yZVBvcyxaVEVfV01TX0RCX1NJTV9UQUJMRSkpe2dfelVmaVNtc19EZWxNc2cuc2ltX2lkW2dfelVmaVNtc19EZWxNc2cuCi1zaW1fY291bnRdPXB0RGVsTXNnLT5pZFtpXTtnX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudCsrO2dfelVmaVNtc19EZWxNc2cuCi1zaW1faW5kZXhfY291bnQrKzt9fXJldHVybiBaVUZJX1NVQ0M7fXZvaWQgelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1UX3pVZmlTbXNfTWFpblN0YXRlIGlOZXdTdGF0ZSl7Y2hhcipwdFN0clNtc1N0YXRlW109ewotIlx4NzNceDZkXHg3M1x4NWZceDY5XHg2ZVx4NjlceDc0XHg2OVx4NmVceDY3IiwKK2dfelVmaVNtc19EZWxNc2cubnZfaW5kZXhfY291bnQrKzt9ZWxzZSBpZigoMHhhNTUrMzktMHhhN2MpPT1zdHJjbXAoYWNTdG9yZVBvcywKK1pURV9XTVNfREJfU0lNX1RBQkxFKSl7Z196VWZpU21zX0RlbE1zZy5zaW1faWRbZ196VWZpU21zX0RlbE1zZy5zaW1fY291bnRdPQorcHREZWxNc2ctPmlkW2ldO2dfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50Kys7Z196VWZpU21zX0RlbE1zZy5zaW1faW5kZXhfY291bnQrKzsKK319cmV0dXJuIFpVRklfU1VDQzt9dm9pZCB6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShUX3pVZmlTbXNfTWFpblN0YXRlIGlOZXdTdGF0ZSl7CitjaGFyKnB0U3RyU21zU3RhdGVbXT17Ilx4NzNceDZkXHg3M1x4NWZceDY5XHg2ZVx4NjlceDc0XHg2OVx4NmVceDY3IiwKICJceDczXHg2ZFx4NzNceDVmXHg2OVx4NmVceDY5XHg3NFx4NjVceDY0IiwKICJceDczXHg2ZFx4NzNceDVmXHg2Y1x4NmZceDYxXHg2NFx4NjlceDZlXHg2NyIsCiAiXHg3M1x4NmRceDczXHg1Zlx4NmNceDZmXHg2MVx4NjRceDY1XHg2NCIsCkBAIC02OSw5NiArNjgsOTUgQEAKIFNNU19TVEFURV9SRUNWSU5HOmNhc2UgU01TX1NUQVRFX1JFQ1ZFRDpjYXNlIFNNU19TVEFURV9ERUxTQVZJTkc6Y2FzZSAKIFNNU19TVEFURV9ERUxTQVZFRDp7YnJlYWs7fWRlZmF1bHQ6e3JldHVybjt9fXNjX2NmZ19zZXQoTlZfU01TX1NUQVRFLAogcHRTdHJTbXNTdGF0ZVtpTmV3U3RhdGVdKTt9aW50IHpVZmlTbXNfQ2hlY2tTdG9yZURpcih2b2lkKXtpZigtCi0oMHgyMmU1KzYzMC0weDI1NWEpPT1hY2Nlc3MoWlRFX1dNU19EQl9ESVIsRl9PSykpe3ByaW50ZigKKygweDcyYSszNDk4LTB4MTRkMyk9PWFjY2VzcyhaVEVfV01TX0RCX0RJUixGX09LKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4M2FceDI1XHg3M1x4MjBceDY0XHg2Zlx4NjVceDczXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjlceDczXHg3NFx4MmNceDczXHg2Zlx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDY5XHg3NFx4MmUiICJcbiIKLSxaVEVfV01TX0RCX0RJUik7aWYoLSgweDgxZis2MzQ0LTB4MjBlNik9PW1rZGlyKFpURV9XTVNfREJfRElSLAotKDB4NDk2KzUwMjktMHgxNjNjKSkpe3ByaW50ZigKKyxaVEVfV01TX0RCX0RJUik7aWYoLSgweDI0Y2YrNDUwLTB4MjY5MCk9PW1rZGlyKFpURV9XTVNfREJfRElSLAorKDB4Y2FjKzcwNTEtMHgyNjM4KSkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2ZFx4NzNceDNhXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyMFx4NzRceDZmXHgyMFx4NjNceDcyXHg2NVx4NjFceDc0XHg2NVx4MjBceDY0XHg2Mlx4MjBceDY0XHg2OVx4NzJceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX0ZBSUw7fX1yZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19DaGVja1Ntc0RiKHZvaWQpe2lmKC0KLSgweDg0Yys5MzYtMHhiZjMpPT1hY2Nlc3MoWlRFX1dNU19EQl9QQVRILEZfT0spKXtwcmludGYoCisoMHgxOWYwKzI1MTctMHgyM2M0KT09YWNjZXNzKFpURV9XTVNfREJfUEFUSCxGX09LKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4M2FceDI1XHg3M1x4MjBceDY0XHg2Zlx4NjVceDczXHgyMFx4NmVceDZmXHg3NFx4MjBceDY1XHg3OFx4NjlceDczXHg3NFx4MmNceDczXHg2Zlx4MjBceDY3XHg2NVx4NzRceDIwXHg2NFx4NjVceDY2XHg2MVx4NzVceDZjXHg3NFx4MjBceDYzXHg2Zlx4NmVceDY2XHg2OVx4NjdceDJlIiAiXG4iCiAsWlRFX1dNU19EQl9QQVRIKTtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHgzZFx4M2RceDNkXHgzZFx4M2RceDNkXHgyNVx4NzNceDIwXHg2NVx4NzhceDY5XHg3M1x4NzRceDJlIiAiXG4iCiAsWlRFX1dNU19EQl9QQVRIKTtyZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfR2V0RGVmYXVsdENmZ1BhcmEodm9pZCl7Ci11bnNpZ25lZCBjaGFyIHN0c19mbGFnPSgweDY0MSs0OTUxLTB4MTk5OCk7dW5zaWduZWQgY2hhciBtZW1fc3RvcmVfZmxhZz0KLSgweGNmZCs2NDUwLTB4MjYyZik7dW5zaWduZWQgaW50IHRwX3ZhbGlkaXR5X3BlcmlvZD0oMHg2MTgrNDY0LTB4N2U4KTtjaGFyIAotVGVtcF9zbXNfdnBbKDB4YjdmKzUzNS0weGQ4ZSldPXsoMHgxNzI4KzM2NzctMHgyNTg1KX07Q0hBUiByZXBvcnRFbmFibGVbCi0oMHg2ODQrNzM2NS0weDIzMTcpXT17KDB4NDVkKzU5MTUtMHgxYjc4KX07Q0hBUiBzbXNMb2NhdGlvblsoMHg1OTkrNTQ1OC0weDFhYjkpXQotPXsoMHhkZTQrNDA1Ny0weDFkYmQpfTtDSEFSIHNlbmRmYWlsUmV0cnlbKDB4MTIxKzY3MTQtMHgxYjI5KV09ewotKDB4MTlmMCsyMTM2LTB4MjI0OCl9O0NIQVIgb3V0ZGF0ZURlbGV0ZVsoMHgxM2I2KzQwMjUtMHgyMzNkKV09ewotKDB4MWM5YSsyMzE3LTB4MjVhNyl9O0NIQVIgZGVmYXVsdFN0b3JlWygweDE0MzUrMTYxOC0weDFhNTUpXT17Ci0oMHgyNDY5KzQ1MC0weDI2MmIpfTtzY19jZmdfZ2V0KE5WX1JFUE9SVF9FTkFCTEUscmVwb3J0RW5hYmxlLHNpemVvZigKLXJlcG9ydEVuYWJsZSkpO3NjX2NmZ19nZXQoTlZfU01TX0xPQ0FUSU9OX1NFVCxzbXNMb2NhdGlvbixzaXplb2Yoc21zTG9jYXRpb24pKTsKLXNjX2NmZ19nZXQoTlZfU0VOREZBSUxfUkVUUlksc2VuZGZhaWxSZXRyeSxzaXplb2Yoc2VuZGZhaWxSZXRyeSkpO3NjX2NmZ19nZXQoCit1bnNpZ25lZCBjaGFyIHN0c19mbGFnPSgweGVjMCszMjEtMHgxMDAxKTt1bnNpZ25lZCBjaGFyIG1lbV9zdG9yZV9mbGFnPQorKDB4MTMxZisxNjIxLTB4MTk3NCk7dW5zaWduZWQgaW50IHRwX3ZhbGlkaXR5X3BlcmlvZD0oMHhlZis0NTEzLTB4MTI5MCk7Y2hhciAKK1RlbXBfc21zX3ZwWygweGEzYyszMTAwLTB4MTY1MCldPXsoMHhmZmMrNTAyOC0weDIzYTApfTtDSEFSIHJlcG9ydEVuYWJsZVsKKygweDMwYisxOTkwLTB4YTlmKV09eygweDI2MzArMjE3LTB4MjcwOSl9O0NIQVIgc21zTG9jYXRpb25bKDB4MThjOCs0NzMtMHgxYTZmKV09Cit7KDB4YzcwKzI3MjktMHgxNzE5KX07Q0hBUiBzZW5kZmFpbFJldHJ5WygweDhlNis2MzAwLTB4MjE1MCldPXsoMHhkYmErMjI0LTB4ZTlhKQorfTtDSEFSIG91dGRhdGVEZWxldGVbKDB4MWJjYSsyODY1LTB4MjZjOSldPXsoMHgxZmZkKzExOTAtMHgyNGEzKX07Q0hBUiAKK2RlZmF1bHRTdG9yZVsoMHg3ZDIrNzg0MC0weDI2NDApXT17KDB4YmNhKzI3Ny0weGNkZil9O3NjX2NmZ19nZXQoCitOVl9SRVBPUlRfRU5BQkxFLHJlcG9ydEVuYWJsZSxzaXplb2YocmVwb3J0RW5hYmxlKSk7c2NfY2ZnX2dldCgKK05WX1NNU19MT0NBVElPTl9TRVQsc21zTG9jYXRpb24sc2l6ZW9mKHNtc0xvY2F0aW9uKSk7c2NfY2ZnX2dldCgKK05WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtzY19jZmdfZ2V0KAogTlZfT1VUREFURV9ERUxFVEUsb3V0ZGF0ZURlbGV0ZSxzaXplb2Yob3V0ZGF0ZURlbGV0ZSkpO3NjX2NmZ19nZXQoCi1OVl9ERUZBVUxUX1NUT1JFLGRlZmF1bHRTdG9yZSxzaXplb2YoZGVmYXVsdFN0b3JlKSk7aWYoKDB4MTZlYys0MDgtMHgxODg0KT09Ci1zdHJjbXAocmVwb3J0RW5hYmxlLCJceDMxIikpe3N0c19mbGFnPSgweDE4N2ErMTQ3Mi0weDFlMzkpO31nX3pVZmlTbXNfQ3VyU21zUGFyYQotLnN0YXR1c19yZXBvcnRfb249c3RzX2ZsYWc7aWYoKDB4ODY1Kzc3NTQtMHgyNmFmKT09c3RyY21wKHNtc0xvY2F0aW9uLCJceDRkXHg0NSIKLSkpe21lbV9zdG9yZV9mbGFnPSgweDQ2YysxMDI3LTB4ODZmKTt9ZWxzZXttZW1fc3RvcmVfZmxhZz0oMHgxNDE2KzI4NzItMHgxZjRkKTt9Ci1nX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmU9KHVuc2lnbmVkIGludCkoKDB4MWJiOCsyODgxLTB4MjZmOSk9PQorTlZfREVGQVVMVF9TVE9SRSxkZWZhdWx0U3RvcmUsc2l6ZW9mKGRlZmF1bHRTdG9yZSkpO2lmKCgweGNkKzEwMDAtMHg0YjUpPT1zdHJjbXAKKyhyZXBvcnRFbmFibGUsIlx4MzEiKSl7c3RzX2ZsYWc9KDB4MzFkKzcxMjAtMHgxZWVjKTt9Z196VWZpU21zX0N1clNtc1BhcmEuCitzdGF0dXNfcmVwb3J0X29uPXN0c19mbGFnO2lmKCgweDc2Mys2MjE0LTB4MWZhOSk9PXN0cmNtcChzbXNMb2NhdGlvbiwiXHg0ZFx4NDUiKQorKXttZW1fc3RvcmVfZmxhZz0oMHhjM2MrMjI3OC0weDE1MjIpO31lbHNle21lbV9zdG9yZV9mbGFnPSgweDIwYzQrMTQxMi0weDI2NDcpO30KK2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZT0odW5zaWduZWQgaW50KSgoMHgxNDFiKzEzMTMtMHgxOTNjKT09CiBtZW1fc3RvcmVfZmxhZz9XTVNfU1RPUkFHRV9UWVBFX05WX1YwMTpXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEpO3NjX2NmZ19nZXQoCi1OVl9TTVNfVlAsVGVtcF9zbXNfdnAsc2l6ZW9mKFRlbXBfc21zX3ZwKSk7dHBfdmFsaWRpdHlfcGVyaW9kPSgweDg1NSsyMDA3LTB4ZjJkKQotO2lmKCgweDNjZCszNzM1LTB4MTI2NCk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiLAotKDB4MmYyKzQ5OTMtMHgxNjZjKSkpe3RwX3ZhbGlkaXR5X3BlcmlvZD0oMHgzNjMrNTI1LTB4NDcxKTt9aWYoCi0oMHhjZWErNDg4Mi0weDFmZmMpPT1zdHJuY21wKFRlbXBfc21zX3ZwLCJceDZmXHg2ZVx4NjVceDVmXHg2NFx4NjFceDc5IiwKLSgweGQ2NiszOTM1LTB4MWNiZSkpKXt0cF92YWxpZGl0eV9wZXJpb2Q9KDB4MWJiKzMzNzEtMHhlM2YpO31pZigKLSgweDFmOTcrMTcwNy0weDI2NDIpPT1zdHJuY21wKFRlbXBfc21zX3ZwLCJceDZmXHg2ZVx4NjVceDc3XHg2NVx4NjVceDZiIiwKLSgweGM4YSs1Mjg5LTB4MjEyYykpKXt0cF92YWxpZGl0eV9wZXJpb2Q9KDB4Zjg4KzM1NTMtMHgxY2JjKTt9aWYoCi0oMHhlNTIrNDY2OC0weDIwOGUpPT1zdHJuY21wKFRlbXBfc21zX3ZwLCJceDc0XHg3N1x4NjVceDZjXHg3Nlx4NjVceDY4IiwKLSgweDRlZCs1NTM5LTB4MWE4OSkpKXt0cF92YWxpZGl0eV9wZXJpb2Q9KDB4MWIyYysxOTktMHgxYjY0KTt9Ci1nX3pVZmlTbXNfQ3VyU21zUGFyYS50cF92YWxpZGl0eV9wZXJpb2Q9dHBfdmFsaWRpdHlfcGVyaW9kO2lmKAotKDB4M2JhKzgxNDctMHgyMzhkKT09c3RyY21wKHNlbmRmYWlsUmV0cnksIlx4MzEiKSl7Z196VWZpU21zX0N1clNtc1BhcmEuCi1zZW5kZmFpbF9yZXRyeV9vbj0oMHgxYmYrMTQyMi0weDc0Yyk7fWVsc2V7Z196VWZpU21zX0N1clNtc1BhcmEuCi1zZW5kZmFpbF9yZXRyeV9vbj0oMHgxOWYyKzU0LTB4MWEyOCk7fWlmKCgweDIxKzE0MDctMHg1YTApPT1zdHJjbXAob3V0ZGF0ZURlbGV0ZQotLCJceDMxIikpe2dfelVmaVNtc19DdXJTbXNQYXJhLm91dGRhdGVfZGVsZXRlX29uPSgweDc0MiszNjA5LTB4MTU1YSk7fWVsc2V7Ci1nX3pVZmlTbXNfQ3VyU21zUGFyYS5vdXRkYXRlX2RlbGV0ZV9vbj0oMHg5NTcrNDQ5OS0weDFhZWEpO31pZigKLSgweDI4ZiszNjUxLTB4MTBkMik9PXN0cmNtcChkZWZhdWx0U3RvcmUsIlx4NzNceDY5XHg2ZCIpKXtzdHJuY3B5KAotZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSwiXHg3M1x4NjlceDZkIixzaXplb2YoZ196VWZpU21zX0N1clNtc1BhcmEuCi1kZWZhdWx0X3N0b3JlKS0oMHg0ODYrOTA4LTB4ODExKSk7fWVsc2V7c3RybmNweShnX3pVZmlTbXNfQ3VyU21zUGFyYS4KLWRlZmF1bHRfc3RvcmUsIlx4NmVceDc2IixzaXplb2YoZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSktCi0oMHgxMWVmKzY0OC0weDE0NzYpKTt9fXZvaWQgelVmaVNtc19HZXREZWZhdWx0UGFyYSh2b2lkKXttZW1zZXQoJgotZ196VWZpU21zX0N1clNtc1BhcmEsKDB4MzY3KzE5NDAtMHhhZmIpLHNpemVvZihUX3pVZmlTbXNfUGFyYUluZm8pKTsKLWdfelVmaVNtc19DdXJTbXNQYXJhLnN0YXR1c19yZXBvcnRfb249KDB4MTE4MSszNjYzLTB4MWZkMCk7Z196VWZpU21zX0N1clNtc1BhcmEuCitOVl9TTVNfVlAsVGVtcF9zbXNfdnAsc2l6ZW9mKFRlbXBfc21zX3ZwKSk7dHBfdmFsaWRpdHlfcGVyaW9kPQorKDB4NGY5KzQ2MTItMHgxNWZlKTtpZigoMHgxYjFjKzI2NS0weDFjMjUpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiLCgweDNiZis3NjkwLTB4MjFjMikpKXt0cF92YWxpZGl0eV9wZXJpb2Q9CisoMHhiMTcrNjIzNy0weDIyNzUpO31pZigoMHgzOTgrNTM5MC0weDE4YTYpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiLCgweDRmNisyOTI3LTB4MTA1ZSkpKXt0cF92YWxpZGl0eV9wZXJpb2Q9CisoMHhmNDIrMzM3NC0weDFiYzkpO31pZigoMHhhNDMrNjI1OS0weDIyYjYpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NmZceDZlXHg2NVx4NzdceDY1XHg2NVx4NmIiLCgweDEwZDArMTcwMS0weDE3NmUpKSl7dHBfdmFsaWRpdHlfcGVyaW9kPQorKDB4MTJhZCsyNjAxLTB4MWMyOSk7fWlmKCgweDg1Mys2OTkzLTB4MjNhNCk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsCisiXHg3NFx4NzdceDY1XHg2Y1x4NzZceDY1XHg2OCIsKDB4YWY3KzMxMDItMHgxNzBlKSkpe3RwX3ZhbGlkaXR5X3BlcmlvZD0KKygweDY5Mis2ODkwLTB4MjBlZCk7fWdfelVmaVNtc19DdXJTbXNQYXJhLnRwX3ZhbGlkaXR5X3BlcmlvZD10cF92YWxpZGl0eV9wZXJpb2Q7CitpZigoMHg3ZTQrNDA5LTB4OTdkKT09c3RyY21wKHNlbmRmYWlsUmV0cnksIlx4MzEiKSl7Z196VWZpU21zX0N1clNtc1BhcmEuCitzZW5kZmFpbF9yZXRyeV9vbj0oMHhkZDkrODAxLTB4MTBmOSk7fWVsc2V7Z196VWZpU21zX0N1clNtc1BhcmEuCitzZW5kZmFpbF9yZXRyeV9vbj0oMHgxNzAxKzI4NjItMHgyMjJmKTt9aWYoKDB4ZDc4KzQ1MTktMHgxZjFmKT09c3RyY21wKAorb3V0ZGF0ZURlbGV0ZSwiXHgzMSIpKXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5vdXRkYXRlX2RlbGV0ZV9vbj0KKygweDk5MCs2NDY3LTB4MjJkMik7fWVsc2V7Z196VWZpU21zX0N1clNtc1BhcmEub3V0ZGF0ZV9kZWxldGVfb249CisoMHg4ZGQrMTcyNy0weGY5Yyk7fWlmKCgweGIyMys0MTg4LTB4MWI3Zik9PXN0cmNtcChkZWZhdWx0U3RvcmUsIlx4NzNceDY5XHg2ZCIpKQore3N0cm5jcHkoZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSwiXHg3M1x4NjlceDZkIixzaXplb2YoCitnX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlKS0oMHgxYzJiKzIzODctMHgyNTdkKSk7fWVsc2V7c3RybmNweSgKK2dfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUsIlx4NmVceDc2IixzaXplb2YoZ196VWZpU21zX0N1clNtc1BhcmEuCitkZWZhdWx0X3N0b3JlKS0oMHhkMDMrNDQwMy0weDFlMzUpKTt9fXZvaWQgelVmaVNtc19HZXREZWZhdWx0UGFyYSh2b2lkKXttZW1zZXQoJgorZ196VWZpU21zX0N1clNtc1BhcmEsKDB4MTMwYSs0NTA5LTB4MjRhNyksc2l6ZW9mKFRfelVmaVNtc19QYXJhSW5mbykpOworZ196VWZpU21zX0N1clNtc1BhcmEuc3RhdHVzX3JlcG9ydF9vbj0oMHgxYjM4KzE5MjQtMHgyMmJjKTtnX3pVZmlTbXNfQ3VyU21zUGFyYS4KIG1lbV9zdG9yZT1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMTtnX3pVZmlTbXNfQ3VyU21zUGFyYS50cF92YWxpZGl0eV9wZXJpb2Q9CiBaVEVfV01TX1NNU19ERUZBVUxUX1RQX1ZBTElESVRZX1BFUklPRF9HVztnX3pVZmlTbXNfQ3VyU21zUGFyYS5zZW5kZmFpbF9yZXRyeV9vbgotPSgweDEzY2IrNDU4OS0weDI1YjgpO2dfelVmaVNtc19DdXJTbXNQYXJhLm91dGRhdGVfZGVsZXRlX29uPSgweDNmMCs0NTg3LTB4MTVkYikKLTtzdHJuY3B5KGdfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUsIlx4NmVceDc2IixzaXplb2YoCi1nX3pVZmlTbXNfQ3VyU21zUGFyYS5kZWZhdWx0X3N0b3JlKS0oMHg1NjQrMjQ0LTB4NjU3KSk7fQotI2lmICgweDZiMis4MjgtMHg5ZWUpDQorPSgweDEwNDIrNzE5LTB4MTMxMSk7Z196VWZpU21zX0N1clNtc1BhcmEub3V0ZGF0ZV9kZWxldGVfb249KDB4ZGM3KzI2NDUtMHgxODFjKTsKK3N0cm5jcHkoZ196VWZpU21zX0N1clNtc1BhcmEuZGVmYXVsdF9zdG9yZSwiXHg2ZVx4NzYiLHNpemVvZigKK2dfelVmaVNtc19DdXJTbXNQYXJhLmRlZmF1bHRfc3RvcmUpLSgweGQ4MyszMTQ3LTB4MTljZCkpO30KKyNpZiAoMHgxN2I0KzI2MTktMHgyMWVmKQ0KIFRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19TZXRQYXJhbWV0ZXJzKFRfelVmaVNtc19DbWRNc2dCdWZmKnB0U21zQnVmZmVyKXsKIFRfelVmaVNtc19QYXJhSW5mbypwdFNtc1BhcmFtZXRlcj1OVUxMO1RfelVmaVNtc19QYXJhSW5mbyB0TmV3U21zUGFyYW1ldGVyPXsKLSgweDEyNjkrNTA5Mi0weDI2NGQpfTtpZihOVUxMPT1wdFNtc0J1ZmZlcil7cmV0dXJuIFdNU19DTURfRkFJTEVEO30KLXB0U21zUGFyYW1ldGVyPShUX3pVZmlTbXNfUGFyYUluZm8qKSgmKHB0U21zQnVmZmVyLT5jbWRfaW5mby5zZXRfc21zX3BhcmEpKTsKLW1lbWNweSgodm9pZCopJnROZXdTbXNQYXJhbWV0ZXIsKHZvaWQqKXB0U21zUGFyYW1ldGVyLHNpemVvZihUX3pVZmlTbXNfUGFyYUluZm8pCi0pOworKDB4ODZmKzUyOTgtMHgxZDIxKX07aWYoTlVMTD09cHRTbXNCdWZmZXIpe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9cHRTbXNQYXJhbWV0ZXIKKz0oVF96VWZpU21zX1BhcmFJbmZvKikoJihwdFNtc0J1ZmZlci0+Y21kX2luZm8uc2V0X3Ntc19wYXJhKSk7bWVtY3B5KCh2b2lkKikmCit0TmV3U21zUGFyYW1ldGVyLCh2b2lkKilwdFNtc1BhcmFtZXRlcixzaXplb2YoVF96VWZpU21zX1BhcmFJbmZvKSk7CiAjaWZuZGVmIFRTUF9NT0RFTA0KIGlmKChnX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmUhPXB0U21zUGFyYW1ldGVyLT5tZW1fc3RvcmUpKXtpZigKIFpVRklfU01TX0ZBSUxVUkU9PXpVZmlTbXNfU2V0Q3BtcyhwdFNtc1BhcmFtZXRlcikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg3M1x4NjVceDc0XHgyMFx4NjNceDY2XHg2N1x4MjBceDcyXHg2Zlx4NzVceDc0XHg2NVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIKICk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319CiAjZW5kaWYNCi1pZihzdHJsZW4ocHRTbXNQYXJhbWV0ZXItPnNjYSkhPSgweGUxOSs1MTMyLTB4MjIyNSkpe2lmKFpVRklfU01TX0ZBSUxVUkU9PQoraWYoc3RybGVuKHB0U21zUGFyYW1ldGVyLT5zY2EpIT0oMHg3ZDkrNDY5LTB4OWFlKSl7aWYoWlVGSV9TTVNfRkFJTFVSRT09CiB6VWZpU21zX1NldENzY2EocHRTbXNQYXJhbWV0ZXIpKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fX1pZihaVUZJX1NNU19GQUlMVVJFPT0KIHpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKHB0U21zUGFyYW1ldGVyKSl7cmV0dXJuIFdNU19DTURfRkFJTEVEO31lbHNle3NjX2NmZ19zZXQoCiAiXHg3M1x4NmRceDczXHg1Zlx4NjNceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NWZceDZlXHg3NVx4NmQiLHB0U21zUGFyYW1ldGVyLT5zY2EpOwogfW1lbWNweSgodm9pZCopJmdfelVmaVNtc19DdXJTbXNQYXJhLCh2b2lkKikmdE5ld1Ntc1BhcmFtZXRlcixzaXplb2YoCiBUX3pVZmlTbXNfUGFyYUluZm8pKTtyZXR1cm4gV01TX0NNRF9TVUNDRVNTO30KICNlbmRpZg0KLWludCB6VWZpU21zX0xvYWRTbXNQYXJhKCl7aW50IGNvdW50PSgweDE2ZWYrMzU2MS0weDI0ZDgpO2lmKFpVRklfU1VDQyE9CitpbnQgelVmaVNtc19Mb2FkU21zUGFyYSgpe2ludCBjb3VudD0oMHhkYTkrNTQxMC0weDIyY2IpO2lmKFpVRklfU1VDQyE9CiB6VWZpU21zX0lzRGJFbXB0eShaVEVfV01TX0RCX1BBUkFNRVRFUl9UQUJMRSwmY291bnQpKXtyZXR1cm4gWlVGSV9GQUlMO31pZihjb3VudAotPT0oMHgyZTArMTA4Ni0weDcxZSkpe3pVZmlTbXNfR2V0RGVmYXVsdENmZ1BhcmEoKTtpZigoMHgxOTM3KzI5MDEtMHgyNDhjKSE9Cis9PSgweGMwZisyNTI2LTB4MTVlZCkpe3pVZmlTbXNfR2V0RGVmYXVsdENmZ1BhcmEoKTtpZigoMHhkOTMrMTI3LTB4ZTEyKSE9CiB6VWZpU21zX1NldERiUGFyYW1ldGVycygmZ196VWZpU21zX0N1clNtc1BhcmEpKXtyZXR1cm4gWlVGSV9GQUlMO319ZWxzZXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2OFx4NjFceDc2XHg2NVx4MjBceDY0XHg2NVx4NjZceDYxXHg3NVx4NmNceDc0XHgyMFx4NzBceDYxXHg3Mlx4NjFceDZkXHg2NVx4NzRceDY1XHg3Mlx4MjBceDY5XHg2ZVx4MjBceDY0XHg2MVx4NzRceDYxXHg2Mlx4NjFceDczXHg2NVx4MmUiICJcbiIKICk7aWYoWlVGSV9TVUNDIT16VWZpU21zX0dldERiUGFyYW1ldGVycygpKXtyZXR1cm4gWlVGSV9GQUlMO31pZigKIFdNU19TVE9SQUdFX1RZUEVfTlZfVjAxIT1nX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmUmJgogV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxIT1nX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmUpe3pVZmlTbXNfR2V0RGVmYXVsdFBhcmEKLSgpO2lmKCgweGZlOSs0NTMxLTB4MjE5YykhPXpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKCZnX3pVZmlTbXNfQ3VyU21zUGFyYSkpeworKCk7aWYoKDB4MTU1Yys1ODEtMHgxN2ExKSE9elVmaVNtc19TZXREYlBhcmFtZXRlcnMoJmdfelVmaVNtc19DdXJTbXNQYXJhKSl7CiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzBceDYxXHg3Mlx4NjFceDZkXHg2NVx4NzRceDY1XHg3Mlx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NzNceDIwXHgzMlx4MmUiICJcbiIKICk7cmV0dXJuIFpVRklfRkFJTDt9fX1wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRjXHg2Zlx4NjFceDY0XHg1M1x4NmRceDczXHg1MFx4NjFceDcyXHg2MVx4MjBceDczXHg3NVx4NjNceDYzXHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19DaGVja01lbW9yeUZ1bGwoVF96VWZpU21zX01lbW9yeVR5cGUgbWVtX3N0b3JlKXsKLWludCB0b3RhbF9jb3VudD0oMHgxNTRjKzM2NDAtMHgyMzg0KTtpZigoWlRFX1dNU19NRU1PUllfU0lNPT1tZW1fc3RvcmUpfHwoCitpbnQgdG90YWxfY291bnQ9KDB4Njc5KzYxOTYtMHgxZWFkKTtpZigoWlRFX1dNU19NRU1PUllfU0lNPT1tZW1fc3RvcmUpfHwoCiBaVEVfV01TX01FTU9SWV9NQVg9PW1lbV9zdG9yZSkpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRUb3RhbENvdW50KAogWlRFX1dNU19EQl9TSU1fVEFCTEUsJnRvdGFsX2NvdW50KSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4M2FceDY3XHg2NVx4NzRceDIwXHg3NFx4NjFceDYyXHg2Y1x4NjVceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNceDIwXHg2M1x4NmZceDc1XHg2ZVx4NzRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgpAQCAtMTc1LDEzICsxNzMsMTMgQEAKICx0b3RhbF9jb3VudCk7aWYodG90YWxfY291bnQ+PShpbnQpZ196VWZpU21zX1N0b3JlQ2FwYWJsaXR5WwogV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdKXtnX3pVZmlTbXNfTWVtRnVsbEZsYWdbV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdPVRSVUU7fQogZWxzZXtnX3pVZmlTbXNfTWVtRnVsbEZsYWdbV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdPUZBTFNFO319cmV0dXJuIFpVRklfU1VDQzt9Ci1pbnQgelVmaVNtc19TZXRTdG9yZVBhcmEoY2hhciptZW1fc3RvcmUpe2lmKCgweDEwNzcrNzc4LTB4MTM4MSk9PXN0cmNtcCgKK2ludCB6VWZpU21zX1NldFN0b3JlUGFyYShjaGFyKm1lbV9zdG9yZSl7aWYoKDB4MTUyNysyODMzLTB4MjAzOCk9PXN0cmNtcCgKIG1lbV9zdG9yZSwiXHg1M1x4NGQiKSl7Z196VWZpU21zX0N1clNtc1BhcmEubWVtX3N0b3JlPSh1bnNpZ25lZCBpbnQpCiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE7KHZvaWQpc2NfY2ZnX3NldChOVl9TTVNfTE9DQVRJT05fU0VULCJceDMwIik7fWVsc2UgaWYoCi0oMHgzNTUrMjY2Ni0weGRiZik9PXN0cmNtcChtZW1fc3RvcmUsIlx4NGRceDQ1Iikpe2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZQorKDB4MTYrNzc4MS0weDFlN2IpPT1zdHJjbXAobWVtX3N0b3JlLCJceDRkXHg0NSIpKXtnX3pVZmlTbXNfQ3VyU21zUGFyYS5tZW1fc3RvcmUKID0odW5zaWduZWQgaW50KVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxOyh2b2lkKXNjX2NmZ19zZXQoTlZfU01TX0xPQ0FUSU9OX1NFVCwKLSJceDMxIik7fWVsc2UgaWYoKDB4OWM0KzM1NS0weGIyNyk9PXN0cmNtcChtZW1fc3RvcmUsIlx4NTNceDUyIikpewotZ196VWZpU21zX0N1clNtc1BhcmEubWVtX3N0b3JlPSh1bnNpZ25lZCBpbnQpKDB4MmZmKzU1NTUtMHgxOGIwKTsodm9pZCkKKyJceDMxIik7fWVsc2UgaWYoKDB4MTIxYSsyODc2LTB4MWQ1Nik9PXN0cmNtcChtZW1fc3RvcmUsIlx4NTNceDUyIikpeworZ196VWZpU21zX0N1clNtc1BhcmEubWVtX3N0b3JlPSh1bnNpZ25lZCBpbnQpKDB4MTFjKzYzMDQtMHgxOWJhKTsodm9pZCkKIHNjX2NmZ19zZXQoTlZfU01TX0xPQ0FUSU9OX1NFVCwiXHgzMiIpO31lbHNle2dfelVmaVNtc19DdXJTbXNQYXJhLm1lbV9zdG9yZT0oCiB1bnNpZ25lZCBpbnQpV01TX1NUT1JBR0VfVFlQRV9OT05FX1YwMTsodm9pZClzY19jZmdfc2V0KE5WX1NNU19MT0NBVElPTl9TRVQsCiAiXHgyZFx4MzEiKTt9aWYoWlVGSV9GQUlMPT16VWZpU21zX1NldERiUGFyYW1ldGVycygmZ196VWZpU21zX0N1clNtc1BhcmEpKXsKQEAgLTE4OSw0MCArMTg3LDQwIEBACiAiXHg2M1x4NjFceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDczXHg2NVx4NzRceDIwXHg3MFx4NjFceDcyXHg2MVx4NmRceDY1XHg3NFx4NjVceDcyXHg3M1x4MmUiICJcbiIKICk7cmV0dXJuIFpVRklfRkFJTDt9cmV0dXJuIFpVRklfU1VDQzt9aW50IHpVZmlTbXNfU2V0U2NhUGFyYShjaGFyKnNjYSl7c3RybmNweSgKIGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSxzY2Esc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSktCi0oMHgxYTg0KzMyMDgtMHgyNzBiKSk7aWYoWlVGSV9GQUlMPT16VWZpU21zX1NldERiUGFyYW1ldGVycygmCi1nX3pVZmlTbXNfQ3VyU21zUGFyYSkpe2F0X3ByaW50KExPR19FUlIsCisoMHhjZDArNjM5Mi0weDI1YzcpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKCZnX3pVZmlTbXNfQ3VyU21zUGFyYQorKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDYzXHg2MVx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NzNceDY1XHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO31yZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfU2V0R2xvYmFsRGNzTGFuZyh1bnNpZ25lZCAKLWNoYXIgY0Rjcyl7aWYoY0Rjcz09KDB4N2Q5KzY0NjctMHgyMTFiKSl7Z196VWZpU21zX0Rjcz1EQ1NfQVNDOwotZ196VWZpU21zX0xhbmd1YWdlPU5PVF9ERUZJTkVfTEFOR1VBR0U7fWVsc2UgaWYoY0Rjcz09KDB4MWU2MyszNDEtMHgxZmI2KSl7CitjaGFyIGNEY3Mpe2lmKGNEY3M9PSgweGY2MCszNDg1LTB4MWNmYykpe2dfelVmaVNtc19EY3M9RENTX0FTQzsKK2dfelVmaVNtc19MYW5ndWFnZT1OT1RfREVGSU5FX0xBTkdVQUdFO31lbHNlIGlmKGNEY3M9PSgweDNhOCsxNDE3LTB4OTJmKSl7CiBnX3pVZmlTbXNfRGNzPURDU19VU0M7Z196VWZpU21zX0xhbmd1YWdlPU5PVF9ERUZJTkVfTEFOR1VBR0U7fWVsc2UgaWYoY0Rjcz09Ci0oMHgxNDM0KzI1NTAtMHgxZTI3KSl7Z196VWZpU21zX0Rjcz1EQ1NfQVNDO2dfelVmaVNtc19MYW5ndWFnZT1EQ1NfR1NNN19TUEFOSVNIOwotfWVsc2UgaWYoY0Rjcz09KDB4M2I1KzgxNDItMHgyMzdlKSl7Z196VWZpU21zX0Rjcz1EQ1NfQVNDO2dfelVmaVNtc19MYW5ndWFnZT0KKygweDIyNjMrNzYyLTB4MjU1YSkpe2dfelVmaVNtc19EY3M9RENTX0FTQztnX3pVZmlTbXNfTGFuZ3VhZ2U9RENTX0dTTTdfU1BBTklTSDt9CitlbHNlIGlmKGNEY3M9PSgweDE3ZTYrMTc4Ny0weDFlZGMpKXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlPQogRENTX0dTTTdfUE9SVFVHVUVTRTt9ZWxzZXtnX3pVZmlTbXNfRGNzPURDU19BU0M7Z196VWZpU21zX0xhbmd1YWdlPQogRENTX0dTTTdfREVGQVVMVDt9fWludCB6VWZpU21zX0ZpbGxHcm91cFNtcyhUX3pVZmlTbXNfU2VuZFJlcSpwdFNlbmRNc2csCiBUX3pVZmlTbXNfR3JvdXBJbmZvKnB0R3JvdXBTbXMpe2ludCBpO2lmKE5VTEw9PXB0U2VuZE1zZ3x8TlVMTD09cHRHcm91cFNtc3x8CiBaVEVfV01TX1NFTkRfTlVNX01BWDxwdFNlbmRNc2ctPnJlY2VpdmVyX2NvdW50KXtyZXR1cm4gWlVGSV9GQUlMO31wdEdyb3VwU21zLT4KLXRvdGFsX3JlY2VpdmVyPXB0U2VuZE1zZy0+cmVjZWl2ZXJfY291bnQ7Zm9yKGk9KDB4MWY1OSsxMjMtMHgxZmQ0KTtpPHB0R3JvdXBTbXMKK3RvdGFsX3JlY2VpdmVyPXB0U2VuZE1zZy0+cmVjZWl2ZXJfY291bnQ7Zm9yKGk9KDB4ZDRkKzI2NjQtMHgxN2I1KTtpPHB0R3JvdXBTbXMKIC0+dG90YWxfcmVjZWl2ZXI7aSsrKXtzdHJuY3B5KHB0R3JvdXBTbXMtPnJlY2VpdmVyc1tpXSxwdFNlbmRNc2ctPmRlc3RfbnVtW2ldLAogWlRFX1dNU19BRERSRVNTX0xFTl9NQVgpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDZceDY5XHg2Y1x4NmNceDQ3XHg3Mlx4NmZceDc1XHg3MFx4NTNceDZkXHg3M1x4MjBceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg3Mlx4NzNceDViXHgyNVx4NjRceDVkXHgzZFx4MjVceDczIiAiXG4iCi0saSxwdEdyb3VwU21zLT5yZWNlaXZlcnNbaV0pO31wdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyPSgweDlkZisyMzgwLTB4MTMyYik7CissaSxwdEdyb3VwU21zLT5yZWNlaXZlcnNbaV0pO31wdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyPSgweDMxZCs3NzEyLTB4MjEzZCk7CiByZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19GaWxsQ29uY2F0U21zKFRfelVmaVNtc19TZW5kUmVxKnBTZW5kU3JjTXNnLAotVF96VWZpU21zX0NvbmNhdEluZm8qcERlc3RDb25jYXRNc2cpe2ludCBpVG90YWxMZW49KDB4MTVhNSszMjY3LTB4MjI2OCk7aW50IAotaVVuaXRsZW49KDB4NWU1KzY2MDMtMHgxZmIwKTtpbnQgaVNlZ05vPSgweDM4Yys3ODAtMHg2OTgpO3Vuc2lnbmVkIGNoYXIqCitUX3pVZmlTbXNfQ29uY2F0SW5mbypwRGVzdENvbmNhdE1zZyl7aW50IGlUb3RhbExlbj0oMHgxZmFmKzY2OS0weDIyNGMpO2ludCAKK2lVbml0bGVuPSgweGU1MSs1MTA5LTB4MjI0Nik7aW50IGlTZWdObz0oMHgxNDYrMjEwMi0weDk3Yyk7dW5zaWduZWQgY2hhcioKIHBTbXNDb252ZXJ0ZWQ9TlVMTDt1bnNpZ25lZCBjaGFyIGFjQ29udmVydENvbnRlbnRbCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKlpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgqKDB4NWViKzUwODAtMHgxOWJmKQotKygweDE5OWQrMzg3LTB4MWIxYyldPXsoMHg1NWYrNDMzMy0weDE2NGMpfTt1bnNpZ25lZCBjaGFyIGFjVG1wQ29udGVudFsKLVpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgqWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCooMHgxOWJmKzQzNC0weDFiNmQpCi0rKDB4MWM1NCsyMjg2LTB4MjUzZSldPXsoMHhlOTArOTU1LTB4MTI0Yil9O2ludCBpVGltZVpvbmU9KDB4MTBkNisyMzEzLTB4MTlkZik7Ci1pbnQgdG1wX2k9KDB4YWYzKzM3NDAtMHgxOThmKTtpZihOVUxMPT1wU2VuZFNyY01zZ3x8TlVMTD09cERlc3RDb25jYXRNc2cpe3JldHVybgotLSgweDZhZCs1NTk3LTB4MWM4OSk7fWlUb3RhbExlbj1wU2VuZFNyY01zZy0+bXNnX2xlbjtpZihaVUZJX0ZBSUw9PQotelVmaVNtc19HZXRTbXNDb250ZW50KGFjVG1wQ29udGVudCxzaXplb2YoYWNUbXBDb250ZW50KSkpe3ByaW50ZigKK1pURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgqWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWCoKKygweDFhMjIrMjM2My0weDIzNTkpKygweDVjKzQzMTQtMHgxMTMyKV09eygweDZmZis1NDg3LTB4MWM2ZSl9O3Vuc2lnbmVkIGNoYXIgCithY1RtcENvbnRlbnRbWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKgorKDB4MTExYSszMzgzLTB4MWU0ZCkrKDB4NmUwKzI2NDgtMHgxMTM0KV09eygweDE1ODQrMTM1OS0weDFhZDMpfTtpbnQgaVRpbWVab25lPQorKDB4MTUwNisyOTUyLTB4MjA4ZSk7aW50IHRtcF9pPSgweDE2NWQrMzcwNy0weDI0ZDgpO2lmKE5VTEw9PXBTZW5kU3JjTXNnfHxOVUxMPT0KK3BEZXN0Q29uY2F0TXNnKXtyZXR1cm4tKDB4Mjk4KzkwNzQtMHgyNjA5KTt9aVRvdGFsTGVuPXBTZW5kU3JjTXNnLT5tc2dfbGVuO2lmKAorWlVGSV9GQUlMPT16VWZpU21zX0dldFNtc0NvbnRlbnQoYWNUbXBDb250ZW50LHNpemVvZihhY1RtcENvbnRlbnQpKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg1M1x4NmRceDczXHg0M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4MjBceDQ2XHg2MVx4NjlceDZjXHgyZSIgIlxuIgotKTtyZXR1cm4tKDB4MjRhMSs1NTEtMHgyNmM3KTt9cHJpbnRmKAorKTtyZXR1cm4tKDB4YmZjKzM0NzQtMHgxOThkKTt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg1M1x4NmRceDczXHg0M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4M2FceDI1XHg3M1x4MmUiICJcbiIKICxhY1RtcENvbnRlbnQpOyh2b2lkKVN0cmluZzJCeXRlcyhhY1RtcENvbnRlbnQsYWNDb252ZXJ0Q29udGVudCwoaW50KXN0cmxlbigKLWFjVG1wQ29udGVudCkpO21lbXNldChhY1RtcENvbnRlbnQsKDB4N2Y1Kzc5MDYtMHgyNmQ3KSxzaXplb2YoYWNUbXBDb250ZW50KSk7aWYoCithY1RtcENvbnRlbnQpKTttZW1zZXQoYWNUbXBDb250ZW50LCgweDEwMSszMTM2LTB4ZDQxKSxzaXplb2YoYWNUbXBDb250ZW50KSk7aWYoCiBEQ1NfVVNDPT1nX3pVZmlTbXNfRGNzKXtwU21zQ29udmVydGVkPWFjQ29udmVydENvbnRlbnQ7fWVsc2V7aWYoCiBOT1RfREVGSU5FX0xBTkdVQUdFPT1nX3pVZmlTbXNfTGFuZ3VhZ2Upe2lUb3RhbExlbj0KIHpVZmlTbXNfQ29udmVydEFzY2lpVG9Hc21EZWZhdWx0KGFjQ29udmVydENvbnRlbnQsYWNUbXBDb250ZW50LHBTZW5kU3JjTXNnLT4KQEAgLTIzMiw5NiArMjMwLDk2IEBACiB6VWZpU21zX0NvbnZlcnRVY3MyVG9Qb3J0dWd1ZXNlKGFjQ29udmVydENvbnRlbnQsYWNUbXBDb250ZW50LHBTZW5kU3JjTXNnLT4KIG1zZ19sZW4pO31lbHNle2lUb3RhbExlbj16VWZpU21zX0NvbnZlcnRVY3MyVG9Hc21EZWZhdWx0KGFjQ29udmVydENvbnRlbnQsCiBhY1RtcENvbnRlbnQscFNlbmRTcmNNc2ctPm1zZ19sZW4pO31wU2VuZFNyY01zZy0+bXNnX2xlbj1pVG90YWxMZW47cFNtc0NvbnZlcnRlZAotPWFjVG1wQ29udGVudDt9aWYoaVRvdGFsTGVuPihzaXplb2YoYWNDb252ZXJ0Q29udGVudCktKDB4ODMyKzIwOTYtMHgxMDYxKSkpewotaVRvdGFsTGVuPXNpemVvZihhY0NvbnZlcnRDb250ZW50KS0oMHgxMDZjKzQ3Ni0weDEyNDcpO31wRGVzdENvbmNhdE1zZy0+c21zX2xlbj0KLWlUb3RhbExlbjtpZigoaVRvdGFsTGVuPlpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgpfHwoZ196VWZpU21zX0xhbmd1YWdlPT0KLURDU19QT1JUVUdVRVNFJiZpVG90YWxMZW4+KDB4MTdjKzY4NTEtMHgxYmE0KSl8fCgoZ196VWZpU21zX0Rjcz09RENTX1VTQykmJgorPWFjVG1wQ29udGVudDt9aWYoaVRvdGFsTGVuPihzaXplb2YoYWNDb252ZXJ0Q29udGVudCktKDB4MTNiZisyMDgyLTB4MWJlMCkpKXsKK2lUb3RhbExlbj1zaXplb2YoYWNDb252ZXJ0Q29udGVudCktKDB4MTUwMisxMDI5LTB4MTkwNik7fXBEZXN0Q29uY2F0TXNnLT5zbXNfbGVuCis9aVRvdGFsTGVuO2lmKChpVG90YWxMZW4+WlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCl8fChnX3pVZmlTbXNfTGFuZ3VhZ2U9PQorRENTX1BPUlRVR1VFU0UmJmlUb3RhbExlbj4oMHgxNGUyKzM2NDgtMHgyMjg3KSl8fCgoZ196VWZpU21zX0Rjcz09RENTX1VTQykmJgogaVRvdGFsTGVuPlpURV9XTVNfU01TX01TR19DSEFSX01BWCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDNkXHgzZFx4M2RceDNkXHgzZFx4NzNceDY1XHg2ZVx4NjRceDIwXHg2M1x4NmZceDZlXHg3NFx4NjFceDYzXHg3NFx4MjBceDczXHg2ZFx4NzNceDJlIiAiXG4iCiApO2lmKGdfelVmaVNtc19EY3M9PURDU19VU0Mpe2lVbml0bGVuPVpURV9XTVNfU01TX0NPTkNBVF9FTEVNTlRfVUNTX0xFTioKLSgweDUwYys4MTkxLTB4MjUwOSk7fWVsc2V7aWYoZ196VWZpU21zX0xhbmd1YWdlPT1OT1RfREVGSU5FX0xBTkdVQUdFfHwKKygweGZmYSs0ODg4LTB4MjMxMCk7fWVsc2V7aWYoZ196VWZpU21zX0xhbmd1YWdlPT1OT1RfREVGSU5FX0xBTkdVQUdFfHwKIGdfelVmaVNtc19MYW5ndWFnZT09RENTX0dTTTdfREVGQVVMVCl7aVVuaXRsZW49WlRFX1dNU19TTVNfQ09OQ0FUX0VMRU1OVF9BU0NfTEVOCiA7fWVsc2V7aVVuaXRsZW49WlRFX1dNU19TTVNfQ09OQ0FUX0VMRU1OVF9MQU5HVUFHRV9MRU47fX13aGlsZShpVG90YWxMZW4+Ci0oMHgxMTdjKzI2MDEtMHgxYmE1KSYmaVNlZ05vPFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpe21lbWNweShwRGVzdENvbmNhdE1zZworKDB4ZjUwKzMxODktMHgxYmM1KSYmaVNlZ05vPFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpe21lbWNweShwRGVzdENvbmNhdE1zZwogLT5tc2dfY29udGVudHNbaVNlZ05vXSxwU21zQ29udmVydGVkLGlVbml0bGVuKTtpVG90YWxMZW4tPWlVbml0bGVuO3BTbXNDb252ZXJ0ZWQKICs9aVVuaXRsZW47aVNlZ05vKys7fXBEZXN0Q29uY2F0TXNnLT50b3RhbF9tc2c9aVNlZ05vO31lbHNle2lVbml0bGVuPWlUb3RhbExlbjsKLXBEZXN0Q29uY2F0TXNnLT50b3RhbF9tc2c9KDB4NTkxKzkzOS0weDkzYik7bWVtY3B5KHBEZXN0Q29uY2F0TXNnLT5tc2dfY29udGVudHNbCi0oMHgxNjVmKzIyODEtMHgxZjQ4KV0scFNtc0NvbnZlcnRlZCxpVG90YWxMZW4pO3ByaW50ZigKK3BEZXN0Q29uY2F0TXNnLT50b3RhbF9tc2c9KDB4NTIyKzkwOS0weDhhZSk7bWVtY3B5KHBEZXN0Q29uY2F0TXNnLT5tc2dfY29udGVudHNbCisoMHg5NGErNzM3Mi0weDI2MTYpXSxwU21zQ29udmVydGVkLGlUb3RhbExlbik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4M2RceDNkXHgzZFx4M2RceDNkXHg3M1x4NjVceDZlXHg2NFx4MjBceDZlXHg2Zlx4NzJceDZkXHg2MVx4NmNceDIwXHg3M1x4NmRceDczXHgyZVx4NmNceDY1XHg2ZVx4M2FceDI1XHg2NFx4MmVceDYzXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHgzYVx4MjVceDczXHgyZSIgIlxuIgotLGlVbml0bGVuLHBEZXN0Q29uY2F0TXNnLT5tc2dfY29udGVudHNbKDB4MTM4NCsyMTU0LTB4MWJlZSldKTt9CissaVVuaXRsZW4scERlc3RDb25jYXRNc2ctPm1zZ19jb250ZW50c1soMHgxYTA2KzEzNzUtMHgxZjY1KV0pO30KIGdfelVmaVNtc19Db25jYXRUb3RhbE51bT1wRGVzdENvbmNhdE1zZy0+dG90YWxfbXNnO3BEZXN0Q29uY2F0TXNnLT4KLWN1cnJlbnRfc2VuZGluZz0oMHhlODUrNDY1Mi0weDIwYjEpO21lbWNweSgmKHBEZXN0Q29uY2F0TXNnLT5kYXRlKSwmKHBTZW5kU3JjTXNnCitjdXJyZW50X3NlbmRpbmc9KDB4NGI1KzQzMjQtMHgxNTk5KTttZW1jcHkoJihwRGVzdENvbmNhdE1zZy0+ZGF0ZSksJihwU2VuZFNyY01zZwogLT5kYXRlKSxzaXplb2YoVF96VWZpU21zX0RhdGUpKTt0bXBfaT1hdG9pKHBEZXN0Q29uY2F0TXNnLT5kYXRlLnRpbWV6b25lKTtpZigKLXRtcF9pPElOVF9NSU4rKDB4MWQyYisxODYzLTB4MjQ3MSl8fHRtcF9pPklOVF9NQVgtKDB4NGRhKzE1OTgtMHhiMTcpKXtwcmludGYoCit0bXBfaTxJTlRfTUlOKygweDcxNCs1OTQtMHg5NjUpfHx0bXBfaT5JTlRfTUFYLSgweDFiYWErNDQyLTB4MWQ2Mykpe3ByaW50ZigKICJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NzBceDQ0XHg2NVx4NzNceDc0XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg0ZFx4NzNceDY3XHgyMFx4NzRceDY5XHg2ZFx4NjVceDdhXHg2Zlx4NmVceDY1XHgzYVx4MjVceDY0XHgyZSIgIlxuIgotLHRtcF9pKTtyZXR1cm4gWlVGSV9GQUlMO31pVGltZVpvbmU9dG1wX2kqKDB4MTFkYysxNDk4LTB4MTdiMik7bWVtc2V0KAotcERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUsKDB4MTMyNis0NjA1LTB4MjUyMyksc2l6ZW9mKHBEZXN0Q29uY2F0TXNnLT5kYXRlLgotdGltZXpvbmUpKTtpZihpVGltZVpvbmU+KDB4MWRiNSs4NjctMHgyMTE4KSl7c25wcmludGYocERlc3RDb25jYXRNc2ctPmRhdGUuCissdG1wX2kpO3JldHVybiBaVUZJX0ZBSUw7fWlUaW1lWm9uZT10bXBfaSooMHhhOTMrMTA0My0weGVhMik7bWVtc2V0KAorcERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUsKDB4NzArMjg4NS0weGJiNSksc2l6ZW9mKHBEZXN0Q29uY2F0TXNnLT5kYXRlLgordGltZXpvbmUpKTtpZihpVGltZVpvbmU+KDB4ZmU5KzQ1MjMtMHgyMTk0KSl7c25wcmludGYocERlc3RDb25jYXRNc2ctPmRhdGUuCiB0aW1lem9uZSxzaXplb2YocERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUpLCJceDJiXHgyNVx4NjQiLGlUaW1lWm9uZSk7fWVsc2V7CiBzbnByaW50ZihwRGVzdENvbmNhdE1zZy0+ZGF0ZS50aW1lem9uZSxzaXplb2YocERlc3RDb25jYXRNc2ctPmRhdGUudGltZXpvbmUpLAogIlx4MjVceDY0IixpVGltZVpvbmUpO31wU21zQ29udmVydGVkPU5VTEw7cmV0dXJuIGlVbml0bGVuO312b2lkIAogelVmaVNtc19GaWxsRGF0ZWhlYWRlcihUX3pVZmlTbXNfU3VibWl0VHBkdSpwdFN1Ym1pdCxUX3pVZmlTbXNfQ29uY2F0SW5mbyoKIHB0Q29uY2F0U21zLFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe3Vuc2lnbmVkIGNoYXIgaUhlYWRlck51bT0KLSgweDI0NDkrNDc1LTB4MjYyNCk7aUhlYWRlck51bT1wdFN1Ym1pdC0+dXNlcl9kYXRhLm51bV9oZWFkZXJzO3B0U3VibWl0LT4KLXVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1UUlVFO2lmKCgweDE4MzgrMzcxOS0weDI2YmYpPT1wdENvbmNhdFNtcy0+CisoMHgyZDUrNjU3Ny0weDFjODYpO2lIZWFkZXJOdW09cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycztwdFN1Ym1pdC0+Cit1c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9VFJVRTtpZigoMHgxNWJmKzEwNS0weDE2MjgpPT1wdENvbmNhdFNtcy0+CiBjdXJyZW50X3NlbmRpbmcpe2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2UrKzsodm9pZCl6VWZpU21zX1NldENvbmNhdE1heFJlZmVyKAogZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZSk7fXB0U3VibWl0LT51c2VyX2RhdGEuaGVhZGVyc1tpSGVhZGVyTnVtXS5oZWFkZXJfaWQKID1XTVNfVURIX0NPTkNBVF84O3B0U3VibWl0LT51c2VyX2RhdGEuaGVhZGVyc1tpSGVhZGVyTnVtXS51LmNvbmNhdF84LnRvdGFsX3NtPQogcHRDb25jYXRTbXMtPnRvdGFsX21zZztwdFN1Ym1pdC0+dXNlcl9kYXRhLmhlYWRlcnNbaUhlYWRlck51bV0udS5jb25jYXRfOC4KLXNlcV9udW09cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHgxZDhhKzIxNTQtMHgyNWYzKTtwdFN1Ym1pdC0+dXNlcl9kYXRhLgorc2VxX251bT1wdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nKygweDFjMjUrMjYwNC0weDI2NTApO3B0U3VibWl0LT51c2VyX2RhdGEuCiBoZWFkZXJzW2lIZWFkZXJOdW1dLnUuY29uY2F0XzgubXNnX3JlZj1nX3pVZmlTbXNfQ29uY2F0U21zUmVmZXJlbmNlJQotKDB4MTE4Yis0MDQxLTB4MjA1NSk7cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycysrO3B0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcz0KLSgweDFhYmErMTk2My0weDIyNjQpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTJjOCsyMTY0LTB4MWIzYyldPQorKDB4MzIzKzE4NzMtMHg5NzUpO3B0U3VibWl0LT51c2VyX2RhdGEubnVtX2hlYWRlcnMrKztwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9CisoMHg1ZWYrNDc5NS0weDE4YTkpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MWNlYSsxODEzLTB4MjNmZildPQogZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZTt9aW50IHpVZmlTbXNfTWFrZUZpbmFsQ21nc0J1Zigpe1NNU19QQVJBTSB0U21zRGF0YTsKLWludCBpUGR1TGVuZ3RoPSgweGJmKzc5NDUtMHgxZmM4KTtpbnQgblNtc2NMZW5ndGg9KDB4OWMxKzg0LTB4YTE1KTtjaGFyIFRlbXBzdHJyCi1bKDB4MTc4OSs4MjAtMHgxYWJiKV09eygweDFkYmIrNDg2LTB4MWZhMSl9O2NoYXIgVGVtcF9zbXNfdnBbKDB4MTRiKzU2MjQtMHgxNzNiKQotXT17KDB4MjNmYys1MzgtMHgyNjE2KX07Y2hhciB0bXBCdWYxWygweGUzMCszNzc1LTB4MWNlYyldPXsoMHgxNjE5KzI2MzEtMHgyMDYwKX0KLTtjaGFyIHRtcEJ1ZjJbKDB4MTQ2KzE5NzQtMHg4ZjYpXT17KDB4MTI1Zis0MjUwLTB4MjJmOSl9O0NIQVIgc21zQ2VudGVyWwotKDB4MTIxNis1NS0weDEyMWIpXT17KDB4MWNlNCsxMDY5LTB4MjExMSl9O21lbXNldCgmdFNtc0RhdGEsKDB4YzQrNzcxLTB4M2M3KSwKLXNpemVvZihTTVNfUEFSQU0pKTttZW1zZXQoJmdfelVmaVNtc19GaW5hbENtZ3NCdWYsKDB4NGRjKzQ4MjAtMHgxN2IwKSxzaXplb2YoCi1UX3pTbXNfU2VuZFNtc1JlcSkpO2lmKENPREVfR1NNNz09Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfRENTKXtpbnQgaT0KLSgweDE4MzErNzg5LTB4MWI0Nik7Zm9yKDtpPGdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VETGVuZ3RoO2krKyl7dFNtc0RhdGEuVFBfVURbCi1pXT1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRFtpXTt9dFNtc0RhdGEuVFBfVURMZW5ndGg9Z196VWZpU21zX1NlbmRpbmdTbXMuCi1UUF9VRExlbmd0aDt9ZWxzZXtzbnByaW50Zih0U21zRGF0YS5UUF9VRCxzaXplb2YodFNtc0RhdGEuVFBfVUQpLCJceDI1XHg3MyIsCi1nX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRCk7dFNtc0RhdGEuVFBfVURMZW5ndGg9c3RybGVuKHRTbXNEYXRhLlRQX1VEKTt9Ci1zY19jZmdfZ2V0KE5WX1NNU19DRU5URVJfTlVNLHNtc0NlbnRlcixzaXplb2Yoc21zQ2VudGVyKSk7c25wcmludGYodFNtc0RhdGEuU0NBLAotc2l6ZW9mKHRTbXNEYXRhLlNDQSksIlx4MjVceDczIixzbXNDZW50ZXIpO3NucHJpbnRmKHRTbXNEYXRhLlRQQSxzaXplb2YodFNtc0RhdGEKLS5UUEEpLCJceDI1XHg3MyIsZ196VWZpU21zX1NlbmRpbmdTbXMuVFBBKTt0U21zRGF0YS5UUF9EQ1M9Z196VWZpU21zX1NlbmRpbmdTbXMuCi1UUF9EQ1M7c2NfY2ZnX2dldChOVl9SRVBPUlRfRU5BQkxFLFRlbXBzdHJyLHNpemVvZihUZW1wc3RycikpO2lmKCgKLSgweDEyMDkrMzYwMC0weDIwMTkpPT1zdHJuY21wKFRlbXBzdHJyLCJceDMxIiwoMHg3MjErNjA1OC0weDFlY2EpKSkmJigKLWdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nPT1nX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZy0KLSgweDk2Mys0OTA2LTB4MWM4YykpKXt0U21zRGF0YS5UUF9TUlI9KDB4NTdmKzI5NTAtMHgxMTA0KTt9ZWxzZXt0U21zRGF0YS5UUF9TUlI9Ci0oMHg2N2YrNDgwNy0weDE5NDYpO310U21zRGF0YS5UUF9VREhJPWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VESEk7dFNtc0RhdGEuCi1UUF9WUD0oMHg0YTMrNDQ2OS0weDE1MTkpO3NjX2NmZ19nZXQoTlZfU01TX1ZQLFRlbXBfc21zX3ZwLHNpemVvZihUZW1wX3Ntc192cCkpOwotaWYoKDB4MzZmKzczNTktMHgyMDJlKT09c3RybmNtcChUZW1wX3Ntc192cCwiXHg2Y1x4NmZceDZlXHg2N1x4NjVceDczXHg3NCIsCi0oMHgyY2ErMTcxNS0weDk3NikpKXt0U21zRGF0YS5UUF9WUD0oMHgxMGQrOTcyNi0weDI2MGMpO31lbHNlIGlmKAotKDB4MTRkNSsyMDI3LTB4MWNjMCk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiLAotKDB4ZDA3KzExNjAtMHgxMTg4KSkpe3RTbXNEYXRhLlRQX1ZQPSgweDFiMTcrNy0weDFhNzcpO31lbHNlIGlmKAotKDB4MTQ2Kzc2ODQtMHgxZjRhKT09c3RybmNtcChUZW1wX3Ntc192cCwiXHg2Zlx4NmVceDY1XHg3N1x4NjVceDY1XHg2YiIsCi0oMHg2MWIrNDkzNy0weDE5NWQpKSl7dFNtc0RhdGEuVFBfVlA9KDB4OWQ2KzYwMzgtMHgyMGJmKTt9ZWxzZSBpZigKLSgweDE2OTErMTgyLTB4MTc0Nyk9PXN0cm5jbXAoVGVtcF9zbXNfdnAsIlx4NzRceDc3XHg2NVx4NmNceDc2XHg2NVx4NjgiLAotKDB4MWIyKzMwMjUtMHhkN2MpKSl7dFNtc0RhdGEuVFBfVlA9KDB4NTNmKzkzMS0weDg1Myk7fXRTbXNEYXRhLlRQX1BJRD0KLSgweGZjOSsyNzAwLTB4MWE1NSk7Ci0jaWYgKDB4MzRkKzQxODUtMHgxM2E1KQoraW50IGlQZHVMZW5ndGg9KDB4MWE5MCszNzQtMHgxYzA2KTtpbnQgblNtc2NMZW5ndGg9KDB4MTRmKzc2NS0weDQ0Yyk7Y2hhciAKK1RlbXBzdHJyWygweDlmOSs0Mzk0LTB4MWIyMSldPXsoMHhjNSsyODgwLTB4YzA1KX07Y2hhciBUZW1wX3Ntc192cFsKKygweDEyZCsxNDU1LTB4NmQ0KV09eygweGJjNCs0ODg0LTB4MWVkOCl9O2NoYXIgdG1wQnVmMVsoMHg0OTgrMTEwLTB4NTAzKV09eworKDB4ZmMrMzM1OC0weGUxYSl9O2NoYXIgdG1wQnVmMlsoMHgxMDArMzUyLTB4MjVhKV09eygweDEwMDIrMzg0LTB4MTE4Mil9O0NIQVIgCitzbXNDZW50ZXJbKDB4MTkwNSszNjMwLTB4MjcwMSldPXsoMHhjNTErNjEyMC0weDI0MzkpfTttZW1zZXQoJnRTbXNEYXRhLAorKDB4MTE2MysxOTI4LTB4MThlYiksc2l6ZW9mKFNNU19QQVJBTSkpO21lbXNldCgmZ196VWZpU21zX0ZpbmFsQ21nc0J1ZiwKKygweDZkNys2NTczLTB4MjA4NCksc2l6ZW9mKFRfelNtc19TZW5kU21zUmVxKSk7aWYoQ09ERV9HU003PT0KK2dfelVmaVNtc19TZW5kaW5nU21zLlRQX0RDUyl7aW50IGk9KDB4MjQxYys1NjgtMHgyNjU0KTtmb3IoO2k8CitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9VRExlbmd0aDtpKyspe3RTbXNEYXRhLlRQX1VEW2ldPWdfelVmaVNtc19TZW5kaW5nU21zLgorVFBfVURbaV07fXRTbXNEYXRhLlRQX1VETGVuZ3RoPWdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VETGVuZ3RoO31lbHNle3NucHJpbnRmKAordFNtc0RhdGEuVFBfVUQsc2l6ZW9mKHRTbXNEYXRhLlRQX1VEKSwiXHgyNVx4NzMiLGdfelVmaVNtc19TZW5kaW5nU21zLlRQX1VEKTsKK3RTbXNEYXRhLlRQX1VETGVuZ3RoPXN0cmxlbih0U21zRGF0YS5UUF9VRCk7fXNjX2NmZ19nZXQoTlZfU01TX0NFTlRFUl9OVU0sCitzbXNDZW50ZXIsc2l6ZW9mKHNtc0NlbnRlcikpO3NucHJpbnRmKHRTbXNEYXRhLlNDQSxzaXplb2YodFNtc0RhdGEuU0NBKSwKKyJceDI1XHg3MyIsc21zQ2VudGVyKTtzbnByaW50Zih0U21zRGF0YS5UUEEsc2l6ZW9mKHRTbXNEYXRhLlRQQSksIlx4MjVceDczIiwKK2dfelVmaVNtc19TZW5kaW5nU21zLlRQQSk7dFNtc0RhdGEuVFBfRENTPWdfelVmaVNtc19TZW5kaW5nU21zLlRQX0RDUztzY19jZmdfZ2V0CisoTlZfUkVQT1JUX0VOQUJMRSxUZW1wc3RycixzaXplb2YoVGVtcHN0cnIpKTtpZigoKDB4YWRiKzExOTQtMHhmODUpPT1zdHJuY21wKAorVGVtcHN0cnIsIlx4MzEiLCgweGQzYys1NjgtMHhmNzMpKSkmJihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZz09CitnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZy0oMHg0NDkrNjAwNi0weDFiYmUpKSl7dFNtc0RhdGEuVFBfU1JSPQorKDB4MTQzMCsxOTYwLTB4MWJkNyk7fWVsc2V7dFNtc0RhdGEuVFBfU1JSPSgweDE0MDYrMjUwNS0weDFkY2YpO310U21zRGF0YS4KK1RQX1VESEk9Z196VWZpU21zX1NlbmRpbmdTbXMuVFBfVURISTt0U21zRGF0YS5UUF9WUD0oMHgxNTdhKzIxOTYtMHgxZDBmKTsKK3NjX2NmZ19nZXQoTlZfU01TX1ZQLFRlbXBfc21zX3ZwLHNpemVvZihUZW1wX3Ntc192cCkpO2lmKCgweDE2MDIrMzEyNy0weDIyMzkpPT0KK3N0cm5jbXAoVGVtcF9zbXNfdnAsIlx4NmNceDZmXHg2ZVx4NjdceDY1XHg3M1x4NzQiLCgweDdkKzgzNTQtMHgyMTE4KSkpe3RTbXNEYXRhCisuVFBfVlA9KDB4NTAyKzE5NDEtMHhiOTgpO31lbHNlIGlmKCgweDEwZDIrNDc4OS0weDIzODcpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NmZceDZlXHg2NVx4NWZceDY0XHg2MVx4NzkiLCgweGUxMisyNTY1LTB4MTgxMCkpKXt0U21zRGF0YS5UUF9WUD0KKygweDExNmYrNzktMHgxMTE3KTt9ZWxzZSBpZigoMHgxMzErNzQyNy0weDFlMzQpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NmZceDZlXHg2NVx4NzdceDY1XHg2NVx4NmIiLCgweDZkMisxMDk4LTB4YjE1KSkpe3RTbXNEYXRhLlRQX1ZQPQorKDB4ZjBjKzYxMTgtMHgyNjQ1KTt9ZWxzZSBpZigoMHhjOTgrNTE1My0weDIwYjkpPT1zdHJuY21wKFRlbXBfc21zX3ZwLAorIlx4NzRceDc3XHg2NVx4NmNceDc2XHg2NVx4NjgiLCgweDExYmQrMTYwOS0weDE3ZmYpKSl7dFNtc0RhdGEuVFBfVlA9CisoMHg0MzQrNDY5MS0weDE1ZjgpO310U21zRGF0YS5UUF9QSUQ9KDB4MTA0Yys0NzE3LTB4MjJiOSk7CisjaWYgKDB4OWE5KzczNjgtMHgyNjcwKQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDYyXHg2NVx4NjdceDY5XHg2ZVx4M2FceDI1XHg3MyIgIlxuIiwKIGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTsKICNlbmRpZiAgICAKIGlQZHVMZW5ndGg9RW5jb2RlUGR1X1N1Ym1pdCgmdFNtc0RhdGEsZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUpOwotI2lmICgweDFhODQrMjczMS0weDI1MmUpCisjaWYgKDB4YjM4KzQyOTMtMHgxYmZjKQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRkXHg2MVx4NmJceDY1XHg0Nlx4NjlceDZlXHg2MVx4NmNceDQzXHg2ZFx4NjdceDczXHg0Mlx4NzVceDY2XHgyMFx4NmRceDYxXHg2Ylx4NjVceDIwXHg3MFx4NjRceDc1XHgyMFx4NjRceDYxXHg3NFx4NjEiICJcbiIKICk7cHJpbnRmKCJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHgyNVx4NzMiICJcbiIsCiBnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk7CiAjZW5kaWYNCi0odm9pZClTdHJpbmcyQnl0ZXMoZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUsdG1wQnVmMSwoMHhiZjArNDUxMS0weDFkOGQpKTsKKyh2b2lkKVN0cmluZzJCeXRlcyhnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSx0bXBCdWYxLCgweDllNys2OTMzLTB4MjRmYSkpOwogQnl0ZXMyU3RyaW5nKHRtcEJ1ZjEsdG1wQnVmMixzdHJsZW4odG1wQnVmMSkpO25TbXNjTGVuZ3RoPWF0b2kodG1wQnVmMik7aWYoCi1uU21zY0xlbmd0aDwoMHgxMDQ0KzIzNTUtMHgxOTc3KXx8blNtc2NMZW5ndGg+SU5UX01BWC0oMHgyY2MrNDA2Ni0weDEyYWQpKXsKK25TbXNjTGVuZ3RoPCgweDFhYTYrMjUwNi0weDI0NzApfHxuU21zY0xlbmd0aD5JTlRfTUFYLSgweDUxMCs1Mzk1LTB4MWEyMikpewogYXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NmVceDUzXHg2ZFx4NzNceDYzXHg0Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLG5TbXNjTGVuZ3RoKTtuU21zY0xlbmd0aD0oMHgxZDE2KzIyMDEtMHgyNWFmKTs7fW5TbXNjTGVuZ3RoKys7Ci1nX3pVZmlTbXNfRmluYWxDbWdzQnVmLmxlbmd0aD1pUGR1TGVuZ3RoLygweDE0OSs2NTg4LTB4MWIwMyktblNtc2NMZW5ndGg7Ci0jaWYgKDB4ZTRiKzM0ODUtMHgxYmU3KQorLG5TbXNjTGVuZ3RoKTtuU21zY0xlbmd0aD0oMHg5N2ErNDg3LTB4YjYxKTs7fW5TbXNjTGVuZ3RoKys7CitnX3pVZmlTbXNfRmluYWxDbWdzQnVmLmxlbmd0aD1pUGR1TGVuZ3RoLygweDEzMjcrMTEzLTB4MTM5NiktblNtc2NMZW5ndGg7CisjaWYgKDB4N2YxKzc2MDYtMHgyNWE2KQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDYzXHg2Zlx4NzJceDY1XHg2ZFx4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDRkXHg2MVx4NmJceDY1XHg0Nlx4NjlceDZlXHg2MVx4NmNceDQzXHg2ZFx4NjdceDczXHg0Mlx4NzVceDY2XHgyMFx4NmRceDYxXHg2Ylx4NjVceDIwXHg2NVx4NmVceDY0XHgyMFx4NzBceDY0XHg3NVx4MjBceDY0XHg2MVx4NzRceDYxIiAiXG4iCiApO3ByaW50ZigKQEAgLTMzMSw1MiArMzI5LDUyIEBACiByZXR1cm4gWlVGSV9TVUNDO31pbnQgelVmaVNtc19GaWxsU3VibWl0VHBkdShUX3pVZmlTbXNfQ29uY2F0SW5mbypwdENvbmNhdFNtcywKIFRfelVmaVNtc19Hcm91cEluZm8qcHRHcm91cFNtcyxpbnQgaVNtc0xlbixUX3pVZmlTbXNfU3VibWl0VHBkdSpwdFN1Ym1pdCwKIFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe2lmKE5VTEw9PXB0U3VibWl0fHxOVUxMPT1wdENvbmNhdFNtc3x8TlVMTD09Ci1wdEdyb3VwU21zfHxOVUxMPT1wdERiU2F2ZURhdGEpe3JldHVybi0oMHgzZmQrMTA4Ny0weDgzYik7fXB0U3VibWl0LT4KK3B0R3JvdXBTbXN8fE5VTEw9PXB0RGJTYXZlRGF0YSl7cmV0dXJuLSgweDEwYmYrNDc4MC0weDIzNmEpO31wdFN1Ym1pdC0+CiByZWplY3RfZHVwbGljYXRlcz1GQUxTRTtwdFN1Ym1pdC0+cmVwbHlfcGF0aF9wcmVzZW50PUZBTFNFO3B0U3VibWl0LT4KIHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1GQUxTRTtwdFN1Ym1pdC0+c3RhdHVzX3JlcG9ydF9lbmFibGVkPQotZ196VWZpU21zX0N1clNtc1BhcmEuc3RhdHVzX3JlcG9ydF9vbjtpZigoKDB4OGNmKzYxOTYtMHgyMTAyKTxwdENvbmNhdFNtcy0+Ci10b3RhbF9tc2cpJiYocHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHhlOGErNjEyLTB4MTBlZCk8cHRDb25jYXRTbXMtPgotdG90YWxfbXNnKSl7cHRTdWJtaXQtPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0oMHgxNzY4KzE2NDAtMHgxZGQwKTt9cHRTdWJtaXQtPgorZ196VWZpU21zX0N1clNtc1BhcmEuc3RhdHVzX3JlcG9ydF9vbjtpZigoKDB4M2U1KzQzNzEtMHgxNGY3KTxwdENvbmNhdFNtcy0+Cit0b3RhbF9tc2cpJiYocHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHgxNWYxKzI5NjctMHgyMTg3KTxwdENvbmNhdFNtcy0+Cit0b3RhbF9tc2cpKXtwdFN1Ym1pdC0+c3RhdHVzX3JlcG9ydF9lbmFibGVkPSgweDFmNys4Mzc4LTB4MjJiMSk7fXB0U3VibWl0LT4KIG1lc3NhZ2VfcmVmZXJlbmNlPWdfelVmaVNtc19Nc2dSZWZlcjtwdFN1Ym1pdC0+cGlkPVdNU19QSURfREVGQVVMVDtwdFN1Ym1pdC0+ZGNzCi0ubXNnX2NsYXNzPSh3bXNfbWVzc2FnZV9jbGFzc19lX3R5cGUpKDB4MTExYisyNzc4LTB4MWJmMSk7cHRTdWJtaXQtPmRjcy4KLWlzX2NvbXByZXNzZWQ9KDB4Mys1OTYtMHgyNTcpO3B0U3VibWl0LT5kY3MuYWxwaGFiZXQ9KGdfelVmaVNtc19EY3M9PURDU19BU0MpPwotV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ6V01TX0dXX0FMUEhBQkVUX1VDUzI7cHRTdWJtaXQtPnZhbGlkaXR5LmZvcm1hdD0KLVdNU19HV19WQUxJRElUWV9SRUxBVElWRTt6VWZpU21zX0RlY29kZVJlbGF0aXZlVGltZShnX3pVZmlTbXNfQ3VyU21zUGFyYS4KKy5tc2dfY2xhc3M9KHdtc19tZXNzYWdlX2NsYXNzX2VfdHlwZSkoMHhjMjQrNjQ4Ni0weDI1NzYpO3B0U3VibWl0LT5kY3MuCitpc19jb21wcmVzc2VkPSgweDE1ODcrMjA1OS0weDFkOTIpO3B0U3VibWl0LT5kY3MuYWxwaGFiZXQ9KGdfelVmaVNtc19EY3M9PQorRENTX0FTQyk/V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ6V01TX0dXX0FMUEhBQkVUX1VDUzI7cHRTdWJtaXQtPnZhbGlkaXR5LgorZm9ybWF0PVdNU19HV19WQUxJRElUWV9SRUxBVElWRTt6VWZpU21zX0RlY29kZVJlbGF0aXZlVGltZShnX3pVZmlTbXNfQ3VyU21zUGFyYS4KIHRwX3ZhbGlkaXR5X3BlcmlvZCwmcHRTdWJtaXQtPnZhbGlkaXR5LnUudGltZSk7cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycz0KLSgweGZlNCs0MzM2LTB4MjBkNCk7aWYocHRDb25jYXRTbXMtPnRvdGFsX21zZz4oMHgxMWMwKzM0OTUtMHgxZjY2KSl7CisoMHgyMDErNDc0MC0weDE0ODUpO2lmKHB0Q29uY2F0U21zLT50b3RhbF9tc2c+KDB4ZTUyKzE2NDUtMHgxNGJlKSl7CiB6VWZpU21zX0ZpbGxEYXRlaGVhZGVyKHB0U3VibWl0LHB0Q29uY2F0U21zLHB0RGJTYXZlRGF0YSk7cHREYlNhdmVEYXRhLT4KLWNvbmNhdF9pbmZvWygweDNhKzcyMzgtMHgxYzdlKV09cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysoMHhiY2MrNjEwNy0weDIzYTYpCi07cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxZTJhKzg5NC0weDIxYTcpXT1wdENvbmNhdFNtcy0+dG90YWxfbXNnO31pZigKLWdfelVmaVNtc19MYW5ndWFnZT09RENTX1BPUlRVR1VFU0Upe1VJTlQ4IGk9cHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVyczsKLXB0U3VibWl0LT51c2VyX2RhdGFfaGVhZGVyX3ByZXNlbnQ9VFJVRTtwdFN1Ym1pdC0+dXNlcl9kYXRhLmhlYWRlcnNbaV0uaGVhZGVyX2lkCi09V01TX1VESF9OQVRfTEFOR19TUztwdFN1Ym1pdC0+dXNlcl9kYXRhLmhlYWRlcnNbcHRTdWJtaXQtPnVzZXJfZGF0YS5udW1faGVhZGVycwotXS51Lm5hdF9sYW5nX3NzLm5hdF9sYW5nX2lkPVdNU19VREhfTkFUX0xBTkdfUE9SVFVHVUVTRTtwdFN1Ym1pdC0+dXNlcl9kYXRhLgotbnVtX2hlYWRlcnMrKztnX3pVZmlTbXNfSXNMYW5ndWFnZVNoaWZ0PVdNU19VREhfTkFUX0xBTkdfU1M7fXB0U3VibWl0LT51c2VyX2RhdGEKLS5zbV9sZW49aVNtc0xlbjttZW1jcHkocHRTdWJtaXQtPnVzZXJfZGF0YS5zbV9kYXRhLHB0Q29uY2F0U21zLT5tc2dfY29udGVudHNbCi1wdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nXSxpU21zTGVuKTtpZihwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Ci1jdXJyZW50X3JlY2VpdmVyXVsoMHhmMDErMjA4Mi0weDE3MjMpXT09KChjaGFyKSgweDEyY2QrMTgwMi0weDE5YWMpKSl7KHZvaWQpCi16VWZpU21zX0NoYXJUb0ludChwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0rCi0oMHg2KzI2MTQtMHhhM2IpLHN0cmxlbihwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLQotKDB4ZGY3KzU1OTItMHgyM2NlKSxwdFN1Ym1pdC0+YWRkcmVzcy5kaWdpdHMpO3B0U3VibWl0LT5hZGRyZXNzLm51bWJlcl90eXBlPQorY29uY2F0X2luZm9bKDB4ZmU1KzEzNjYtMHgxNTM5KV09cHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZysKKygweGJjYisyODI5LTB4MTZkNyk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxMDA1KzMyOTAtMHgxY2RlKV09cHRDb25jYXRTbXMKKy0+dG90YWxfbXNnO31pZihnX3pVZmlTbXNfTGFuZ3VhZ2U9PURDU19QT1JUVUdVRVNFKXtVSU5UOCBpPXB0U3VibWl0LT51c2VyX2RhdGEuCitudW1faGVhZGVycztwdFN1Ym1pdC0+dXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7cHRTdWJtaXQtPnVzZXJfZGF0YS5oZWFkZXJzWworaV0uaGVhZGVyX2lkPVdNU19VREhfTkFUX0xBTkdfU1M7cHRTdWJtaXQtPnVzZXJfZGF0YS5oZWFkZXJzW3B0U3VibWl0LT51c2VyX2RhdGEKKy5udW1faGVhZGVyc10udS5uYXRfbGFuZ19zcy5uYXRfbGFuZ19pZD1XTVNfVURIX05BVF9MQU5HX1BPUlRVR1VFU0U7cHRTdWJtaXQtPgordXNlcl9kYXRhLm51bV9oZWFkZXJzKys7Z196VWZpU21zX0lzTGFuZ3VhZ2VTaGlmdD1XTVNfVURIX05BVF9MQU5HX1NTO31wdFN1Ym1pdAorLT51c2VyX2RhdGEuc21fbGVuPWlTbXNMZW47bWVtY3B5KHB0U3VibWl0LT51c2VyX2RhdGEuc21fZGF0YSxwdENvbmNhdFNtcy0+Cittc2dfY29udGVudHNbcHRDb25jYXRTbXMtPmN1cnJlbnRfc2VuZGluZ10saVNtc0xlbik7aWYocHRHcm91cFNtcy0+cmVjZWl2ZXJzWworcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4MjQrODczMy0weDIyNDEpXT09KChjaGFyKSgweDEwM2ErMTcyMi0weDE2YzkpKSkKK3sodm9pZCl6VWZpU21zX0NoYXJUb0ludChwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0rCisoMHgxN2VmKzQyOC0weDE5OWEpLHN0cmxlbihwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLQorKDB4MzIxKzEwOTAtMHg3NjIpLHB0U3VibWl0LT5hZGRyZXNzLmRpZ2l0cyk7cHRTdWJtaXQtPmFkZHJlc3MubnVtYmVyX3R5cGU9CiBXTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUw7cHRTdWJtaXQtPmFkZHJlc3MubnVtYmVyX29mX2RpZ2l0cz1zdHJsZW4ocHRHcm91cFNtcy0+Ci1yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLSgweDkxZis1ODYzLTB4MjAwNSk7fWVsc2UgaWYocHRHcm91cFNtcwotLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4MzRkKzEwODAtMHg3ODUpXT09Ci0oKGNoYXIpKDB4MWY1ZisxMTg1LTB4MjNkMCkpJiZwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcgotXVsoMHgyYzIrNjM5OC0weDFiYmYpXT09KChjaGFyKSgweDFkOCszNTM1LTB4Zjc3KSkpeyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KAotcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKygweGZhKzcxMzYtMHgxY2Q4KSxzdHJsZW4oCi1wdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLSgweDE0NWYrMzE0NS0weDIwYTYpLAorcmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHg2ZGErMjAwNC0weGVhZCk7fWVsc2UgaWYocHRHcm91cFNtcworLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4OGQzKzYxMDktMHgyMGIwKV09PQorKChjaGFyKSgweDZhZisxNDc4LTB4YzQ1KSkmJnB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXVsKKygweDQwYis4NzIyLTB4MjYxYyldPT0oKGNoYXIpKDB4NzcrOTMzOS0weDI0YzIpKSl7KHZvaWQpelVmaVNtc19DaGFyVG9JbnQoCitwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0rKDB4MThlOCsyNzI4LTB4MjM4ZSksc3RybGVuKAorcHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHgxMWY1KzU3OS0weDE0MzYpLAogcHRTdWJtaXQtPmFkZHJlc3MuZGlnaXRzKTtwdFN1Ym1pdC0+YWRkcmVzcy5udW1iZXJfdHlwZT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUwKIDtwdFN1Ym1pdC0+YWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzPXN0cmxlbihwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Ci1jdXJyZW50X3JlY2VpdmVyXSktKDB4Y2M3KzQyNDktMHgxZDVlKTt9ZWxzZXsodm9pZCl6VWZpU21zX0NoYXJUb0ludChwdEdyb3VwU21zCitjdXJyZW50X3JlY2VpdmVyXSktKDB4ZjZkKzU1NDktMHgyNTE4KTt9ZWxzZXsodm9pZCl6VWZpU21zX0NoYXJUb0ludChwdEdyb3VwU21zCiAtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSxzdHJsZW4ocHRHcm91cFNtcy0+cmVjZWl2ZXJzWwogcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pLHB0U3VibWl0LT5hZGRyZXNzLmRpZ2l0cyk7cHRTdWJtaXQtPmFkZHJlc3MuCiBudW1iZXJfdHlwZT1XTVNfTlVNQkVSX1VOS05PV047cHRTdWJtaXQtPmFkZHJlc3MubnVtYmVyX29mX2RpZ2l0cz1zdHJsZW4oCiBwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+Y3VycmVudF9yZWNlaXZlcl0pO31wdFN1Ym1pdC0+YWRkcmVzcy4KLWRpZ2l0X21vZGU9KHdtc19kaWdpdF9tb2RlX2VfdHlwZSkoMHgxNjVmKzI5ODUtMHgyMjA4KTtwdFN1Ym1pdC0+YWRkcmVzcy4KLW51bWJlcl9tb2RlPSh3bXNfbnVtYmVyX21vZGVfZV90eXBlKSgweDIyNWYrMjYyLTB4MjM2NSk7cHRTdWJtaXQtPmFkZHJlc3MuCitkaWdpdF9tb2RlPSh3bXNfZGlnaXRfbW9kZV9lX3R5cGUpKDB4NjJiKzU3MjMtMHgxYzg2KTtwdFN1Ym1pdC0+YWRkcmVzcy4KK251bWJlcl9tb2RlPSh3bXNfbnVtYmVyX21vZGVfZV90eXBlKSgweDIxMis2NTUzLTB4MWJhYik7cHRTdWJtaXQtPmFkZHJlc3MuCiBudW1iZXJfcGxhbj1XTVNfTlVNQkVSX1BMQU5fVEVMRVBIT05ZO21lbXNldCgmZ196VWZpU21zX1NlbmRpbmdTbXMsCi0oMHgxOWEzKzI3MzgtMHgyNDU1KSxzaXplb2YoU01TX1BBUkFNKSk7c25wcmludGYoZ196VWZpU21zX1NlbmRpbmdTbXMuVFBBLHNpemVvZgotKGdfelVmaVNtc19TZW5kaW5nU21zLlRQQSksIlx4MjVceDczIixwdEdyb3VwU21zLT5yZWNlaXZlcnNbcHRHcm91cFNtcy0+CisoMHg1OGMrMTg2MS0weGNkMSksc2l6ZW9mKFNNU19QQVJBTSkpO3NucHJpbnRmKGdfelVmaVNtc19TZW5kaW5nU21zLlRQQSxzaXplb2YoCitnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUEEpLCJceDI1XHg3MyIscHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPgogY3VycmVudF9yZWNlaXZlcl0pO2lmKGdfelVmaVNtc19MYW5ndWFnZSE9Tk9UX0RFRklORV9MQU5HVUFHRSl7CiBnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9EQ1M9Q09ERV9HU003O31lbHNle2lmKGdfelVmaVNtc19EY3M9PURDU19VU0MpewogZ196VWZpU21zX1NlbmRpbmdTbXMuVFBfRENTPUNPREVfVUNTMjt9ZWxzZXtnX3pVZmlTbXNfU2VuZGluZ1Ntcy5UUF9EQ1M9CkBAIC0zODUsMjEgKzM4MywyMSBAQAogelVmaVNtc19GaWxsR2xvYmFsVHB1ZFVjczIocHRTdWJtaXQscHRDb25jYXRTbXMscHREYlNhdmVEYXRhKTt9KHZvaWQpCiB6VWZpU21zX01ha2VGaW5hbENtZ3NCdWYoKTtyZXR1cm4gWlVGSV9TVUNDO312b2lkIHpVZmlTbXNfRmlsbFNjYSgKIFRfelVmaVNtc19DbGllbnRNc2cqcHRDbGllbnRNc2cpe2NoYXIgc2NhW1pURV9XTVNfU0NBX0xFTl9NQVhdPXsKLSgweGM4MyszMzkwLTB4MTljMSl9O2ludCBpPSgweGViYisxNDkzLTB4MTQ5MCk7aWYoTlVMTD09cHRDbGllbnRNc2cpe3JldHVybjt9Ci1tZW1jcHkoKHZvaWQqKXNjYSwodm9pZCopKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSksc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLgotc2NhKSk7aWYoc2NhWygweDQ5NSs0MzM4LTB4MTU4NyldPT0oKGNoYXIpKDB4MTBiOSsyMzEwLTB4MTk5NCkpKXtwdENsaWVudE1zZy0+dS4KKygweDE3YSsyMzQwLTB4YTllKX07aW50IGk9KDB4NTk0Kzg4Mi0weDkwNik7aWYoTlVMTD09cHRDbGllbnRNc2cpe3JldHVybjt9bWVtY3B5CisoKHZvaWQqKXNjYSwodm9pZCopKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSksc2l6ZW9mKGdfelVmaVNtc19DdXJTbXNQYXJhLnNjYSkpOworaWYoc2NhWygweGVhYysyMTQ3LTB4MTcwZildPT0oKGNoYXIpKDB4MTBmZisxMzc5LTB4MTYzNykpKXtwdENsaWVudE1zZy0+dS4KIGd3X21lc3NhZ2Uuc2NfYWRkcmVzcy5udW1iZXJfdHlwZT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUw7fXB0Q2xpZW50TXNnLT51LgogZ3dfbWVzc2FnZS5zY19hZGRyZXNzLmRpZ2l0X21vZGU9V01TX0RJR0lUX01PREVfOF9CSVQ7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS4KIHNjX2FkZHJlc3MubnVtYmVyX3BsYW49V01TX05VTUJFUl9QTEFOX1RFTEVQSE9OWTtwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgotc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzPXN0cmxlbihzY2EpO2lmKHNjYVsoMHgyYzIrODE0OS0weDIyOTcpXT09Ci0oKGNoYXIpKDB4MzBiKzE0NjAtMHg4OTQpKSl7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgotbnVtYmVyX29mX2RpZ2l0cy0tO2ZvcihpPSgweDkzZisyNDI5LTB4MTJiYyk7aTxwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgotc2NfYWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzO2krKyl7c2NhW2ldPXNjYVtpKygweDUwKzQ5OTktMHgxM2Q2KV07fX1lbHNlIGlmKHNjYVsKLSgweDFjNDkrMTA3MS0weDIwNzgpXT09KChjaGFyKSgweDczKzM5MzktMHhmYTYpKSYmc2NhWygweDFkOGQrNzU5LTB4MjA4MyldPT0KLSgoY2hhcikoMHg4MmIrNjkxOS0weDIzMDIpKSl7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgotbnVtYmVyX29mX2RpZ2l0cy09KDB4Mzk1KzQ5MDUtMHgxNmJjKTtmb3IoaT0oMHgxZWIwKzIzOC0weDFmOWUpO2k8cHRDbGllbnRNc2ctPnUKLS5nd19tZXNzYWdlLnNjX2FkZHJlc3MubnVtYmVyX29mX2RpZ2l0cztpKyspe3NjYVtpXT1zY2FbaSsoMHg3YTUrNDM0My0weDE4OWEpXTt9Ci19KHZvaWQpelVmaVNtc19DaGFyVG9JbnQoc2NhLHB0Q2xpZW50TXNnLT51Lmd3X21lc3NhZ2Uuc2NfYWRkcmVzcy4KK3NjX2FkZHJlc3MubnVtYmVyX29mX2RpZ2l0cz1zdHJsZW4oc2NhKTtpZihzY2FbKDB4MjQ1Kzc5MzEtMHgyMTQwKV09PQorKChjaGFyKSgweDExNWYrMTMxMS0weDE2NTMpKSl7cHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgorbnVtYmVyX29mX2RpZ2l0cy0tO2ZvcihpPSgweDNiOCsxNzQxLTB4YTg1KTtpPHB0Q2xpZW50TXNnLT51Lmd3X21lc3NhZ2UuCitzY19hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM7aSsrKXtzY2FbaV09c2NhW2krKDB4MzRiKzIxOS0weDQyNSldO319ZWxzZSBpZihzY2FbCisoMHgxNjU5KzEzMTgtMHgxYjdmKV09PSgoY2hhcikoMHg5ODIrNTgwMS0weDFmZmIpKSYmc2NhWygweDkxMSsxOTE1LTB4MTA4YildPT0KKygoY2hhcikoMHgxYWFmKzExNjUtMHgxZjBjKSkpe3B0Q2xpZW50TXNnLT51Lmd3X21lc3NhZ2Uuc2NfYWRkcmVzcy4KK251bWJlcl9vZl9kaWdpdHMtPSgweGVmMiszNjcyLTB4MWQ0OCk7Zm9yKGk9KDB4MjFlNCs1NzEtMHgyNDFmKTtpPHB0Q2xpZW50TXNnLT51CisuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM7aSsrKXtzY2FbaV09c2NhW2krKDB4MWJkMysyNTgyLTB4MjVlNyldOworfX0odm9pZCl6VWZpU21zX0NoYXJUb0ludChzY2EscHRDbGllbnRNc2ctPnUuZ3dfbWVzc2FnZS5zY19hZGRyZXNzLgogbnVtYmVyX29mX2RpZ2l0cyxwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLnNjX2FkZHJlc3MuZGlnaXRzKTt9dm9pZCAKIHpVZmlTbXNfRmlsbERiU2F2ZURhdGEoVF96VWZpU21zX0NsaWVudE1zZypwdENsaWVudE1zZyxUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKgogcHRDbGllbnREYXRhLFRfelVmaVNtc19Db25jYXRJbmZvKnB0Q29uY2F0U21zLFRfelVmaVNtc19Hcm91cEluZm8qcHRHcm91cFNtcyxpbnQKQEAgLTQwOSwxMiArNDA3LDEyIEBACiB9cHREYlNhdmVEYXRhLT5tZW1fc3RvcmU9cHRDbGllbnRNc2ctPm1zZ19oZHIubWVtX3N0b3JlO3B0RGJTYXZlRGF0YS0+aW5kZXg9CiBwdENsaWVudE1zZy0+bXNnX2hkci5pbmRleDtwdERiU2F2ZURhdGEtPm1vZGU9cHRDbGllbnRNc2ctPm1zZ19oZHIubWVzc2FnZV9tb2RlOwogcHREYlNhdmVEYXRhLT50YWc9cHRDbGllbnRNc2ctPm1zZ19oZHIudGFnO21lbXNldChwdERiU2F2ZURhdGEtPm51bWJlciwKLSgweGQ0NCs0MTM4LTB4MWQ2ZSksWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4NTAwKzMzMTktMHgxMWY2KSk7bWVtY3B5KAorKDB4MTE2MCs0MTkyLTB4MjFjMCksWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4MjBjMSs5NjUtMHgyNDg1KSk7bWVtY3B5KAogcHREYlNhdmVEYXRhLT5udW1iZXIscHRHcm91cFNtcy0+cmVjZWl2ZXJzW3B0R3JvdXBTbXMtPmN1cnJlbnRfcmVjZWl2ZXJdLHN0cmxlbigKIHB0R3JvdXBTbXMtPnJlY2VpdmVyc1twdEdyb3VwU21zLT5jdXJyZW50X3JlY2VpdmVyXSkpO3B0RGJTYXZlRGF0YS0+dHBfZGNzPQogRENTX1VTQztwdERiU2F2ZURhdGEtPnRwX3BpZD1wdENsaWVudERhdGEtPnUuZ3dfcHAudS5zdWJtaXQucGlkO3B0RGJTYXZlRGF0YS0+CiBtc2dfcmVmPXB0Q2xpZW50RGF0YS0+dS5nd19wcC51LnN1Ym1pdC5tZXNzYWdlX3JlZmVyZW5jZTttZW1zZXQocHREYlNhdmVEYXRhLT4KLXNtc19jb250ZW50LCgweDIwMzIrMTAyOC0weDI0MzYpLHNpemVvZihwdERiU2F2ZURhdGEtPnNtc19jb250ZW50KSk7aWYoCitzbXNfY29udGVudCwoMHg2MysxNDM3LTB4NjAwKSxzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKAogZ196VWZpU21zX0Rjcz09RENTX1VTQyl7cHREYlNhdmVEYXRhLT5hbHBoYWJldD1XTVNfR1dfQUxQSEFCRVRfVUNTMjt9ZWxzZSBpZigKIGdfelVmaVNtc19EY3M9PURDU19BU0Mpe3B0RGJTYXZlRGF0YS0+YWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ7fSgKIHZvaWQpelVmaVNtc19EaXNwYXRjaFd0b2kocHRDb25jYXRTbXMtPm1zZ19jb250ZW50c1twdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nCkBAIC00MjUsNyArNDIzLDcgQEAKIHB0RGJTYXZlRGF0YSl7VF96VWZpU21zX0NsaWVudFRzRGF0YSB0Q2xpZW50VHNEYXRhO3B0Q2xpZW50TXNnLT5tc2dfaGRyLgogbWVtX3N0b3JlPVdNU19NRU1PUllfU1RPUkVfTlZfR1c7cHRDbGllbnRNc2ctPm1zZ19oZHIudGFnPVdNU19UQUdfTU9fTk9UX1NFTlQ7CiBwdENsaWVudE1zZy0+bXNnX2hkci5tZXNzYWdlX21vZGU9V01TX01FU1NBR0VfTU9ERV9HVztwdENsaWVudE1zZy0+dS5nd19tZXNzYWdlLgotaXNfYnJvYWRjYXN0PUZBTFNFO21lbXNldCgodm9pZCopJnRDbGllbnRUc0RhdGEsKDB4MTU3NCsxLTB4MTU3NSksc2l6ZW9mKAoraXNfYnJvYWRjYXN0PUZBTFNFO21lbXNldCgodm9pZCopJnRDbGllbnRUc0RhdGEsKDB4MjI1Zis5NDItMHgyNjBkKSxzaXplb2YoCiB3bXNfY2xpZW50X3RzX2RhdGFfc190eXBlKSk7dENsaWVudFRzRGF0YS5mb3JtYXQ9V01TX0ZPUk1BVF9HV19QUDt0Q2xpZW50VHNEYXRhLgogdS5nd19wcC50cGR1X3R5cGU9V01TX1RQRFVfU1VCTUlUOyh2b2lkKXpVZmlTbXNfRmlsbFN1Ym1pdFRwZHUoJgogZ196VWZpU21zX0NvbmNhdFNtcywmZ196VWZpU21zX0dyb3VwU21zLGdfelVmaVNtc19Vbml0TGVuLCZ0Q2xpZW50VHNEYXRhLnUuZ3dfcHAKQEAgLTQzNCw5NCArNDMyLDk1IEBACiBwdENsaWVudE1zZywmdENsaWVudFRzRGF0YSwmZ196VWZpU21zX0NvbmNhdFNtcywmZ196VWZpU21zX0dyb3VwU21zLAogZ196VWZpU21zX1VuaXRMZW4scHREYlNhdmVEYXRhKTt9aW50IHpVZmlTbXNfU3RvcmVOb3JtYWxTbXNUb0RiKAogVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxjb25zdCBjaGFyKnBNZW1TdG9yZSxsb25nIGlTbXNJZCl7aW50IHJlc3VsdD0KLVpVRklfU1VDQztjaGFyKnBDb250ZW50PU5VTEw7aW50IGlUb3RhbENvdW50PSgweGFhMisxMzU1LTB4ZmVkKTtwQ29udGVudD0oY2hhciopCi1tYWxsb2MoKDB4ZDQwKzI0OS0weGUzNSkqWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWCk7aWYocENvbnRlbnQ9PQotTlVMTCl7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHBDb250ZW50LCgweDg1NSszNTI5LTB4MTYxZSksKDB4ZmJhKzU4MDYtMHgyNjY0KSoKLVpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgpO2lmKFdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUPT0KLXB0RGJTYXZlRGF0YS0+YWxwaGFiZXQpe3N0YXRpYyBjaGFyIGRhdGFbKDB4MjBhOCsyNzctMHgyMWI5KSoKLVpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgrKDB4YWE1KzQxNS0weGM0MyldPXsoMHgxYzQ2KzIwNzQtMHgyNDYwKX07bWVtc2V0Ci0oZGF0YSwoMHgyYjYrODc4NS0weDI1MDcpLCgweDdlZis3MzA5LTB4MjQ3OCkqWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCsKLSgweDg3NCs2NjQtMHhiMGIpKTsodm9pZCl6VWZpU21zX0RlY29kZUNvbnRlbnQoKGNoYXIqKXB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCi1zdHJsZW4ocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCksRkFMU0UsZGF0YSk7c3RybmNweShwQ29udGVudCxkYXRhLAotKDB4MTZlYysxNzUtMHgxNzk3KSpaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYLSgweDFmYmYrNjY1LTB4MjI1NykpO30KLWVsc2V7c3RybmNweShwQ29udGVudCxwdERiU2F2ZURhdGEtPnNtc19jb250ZW50LCgweDEzODUrMTE0Mi0weDE3ZjcpKgotWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWC0oMHg3ZDMrNjg1LTB4YTdmKSk7fXB0RGJTYXZlRGF0YS0+dHBfZGNzPSgKLXVuc2lnbmVkIGNoYXIpKDB4MTA3NSs2MzQtMHgxMmVkKTtpZigtKDB4ZjErNzAzNC0weDFjNmEpPT1pU21zSWQpe2lmKFpVRklfRkFJTD09Ci16VWZpU21zX0dldFRvdGFsQ291bnQocE1lbVN0b3JlLCZpVG90YWxDb3VudCkpe2ZyZWUocENvbnRlbnQpO3BDb250ZW50PU5VTEw7Ci1yZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCitaVUZJX1NVQ0M7Y2hhcipwQ29udGVudD1OVUxMO2ludCBpVG90YWxDb3VudD0oMHg0OGYrNjg4NS0weDFmNzQpO3BDb250ZW50PShjaGFyKgorKW1hbGxvYygoMHgxNTlhKzMwNDEtMHgyMTc3KSpaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKTtpZihwQ29udGVudAorPT1OVUxMKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQocENvbnRlbnQsKDB4ZTRhKzE0ODUtMHgxNDE3KSwKKygweDE4MzkrMzYwNy0weDI2NGMpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgpO2lmKAorV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ9PXB0RGJTYXZlRGF0YS0+YWxwaGFiZXQpe3N0YXRpYyBjaGFyIGRhdGFbCisoMHg5YmErNDUyNC0weDFiNjIpKlpURV9XTVNfU01TX01TR19DT05URU5UX0xFTl9NQVgrKDB4N2FhKzE5MzYtMHhmMzkpXT17CisoMHhlNjArNDQwMS0weDFmOTEpfTttZW1zZXQoZGF0YSwoMHgxMDhhKzQ4MDItMHgyMzRjKSwoMHg4ZmErNTQzNi0weDFlMzIpKgorWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCsoMHg5YmMrMTM5Mi0weGYyYikpOyh2b2lkKXpVZmlTbXNfRGVjb2RlQ29udGVudCgKKyhjaGFyKilwdERiU2F2ZURhdGEtPnNtc19jb250ZW50LHN0cmxlbihwdERiU2F2ZURhdGEtPnNtc19jb250ZW50KSxGQUxTRSxkYXRhKTsKK3N0cm5jcHkocENvbnRlbnQsZGF0YSwoMHhiM2MrNjg5OS0weDI2MmIpKlpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgtCisoMHgxMDEzKzM0MC0weDExNjYpKTt9ZWxzZXtzdHJuY3B5KHBDb250ZW50LHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCisoMHgxNmQrMzYyMS0weGY4ZSkqWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfU1RPUkVfTEVOX01BWC0oMHgxNTE1KzMyNDEtMHgyMWJkKSk7fQorcHREYlNhdmVEYXRhLT50cF9kY3M9KHVuc2lnbmVkIGNoYXIpKDB4MTI5MisxMDkxLTB4MTZkMyk7aWYoLSgweDhlMSs1OTg1LTB4MjA0MSkKKz09aVNtc0lkKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfR2V0VG90YWxDb3VudChwTWVtU3RvcmUsJmlUb3RhbENvdW50KSl7ZnJlZSgKK3BDb250ZW50KTtwQ29udGVudD1OVUxMO3JldHVybiBaVUZJX0ZBSUw7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHg0ZVx4NmZceDcyXHg2ZFx4NjFceDZjXHg1M1x4NmRceDczXHg1NFx4NmZceDQ0XHg2Mlx4MjBceDY5XHg1NFx4NmZceDc0XHg2MVx4NmNceDQzXHg2Zlx4NzVceDZlXHg3NFx4M2RceDI1XHg2NCIgIlxuIgogLGlUb3RhbENvdW50KTtpZihpVG90YWxDb3VudD49Z196VWZpU21zX1N0b3JlQ2FwYWJsaXR5WyhzdHJjbXAocE1lbVN0b3JlLAogIlx4NmVceDc2Iik/WlRFX1dNU19NRU1PUllfU0lNOlpURV9XTVNfTUVNT1JZX05WKV0pe2ZyZWUocENvbnRlbnQpO3BDb250ZW50PU5VTEwKLTtyZXR1cm4tKDB4YjczKzYxMDktMHgyMzRmKTt9aWYoWlVGSV9GQUlMPT16VWZpU21zX0luc2VydE5vcm1hbFNtc1RvRGIoCis7cmV0dXJuLSgweDViZCsxMDM0LTB4OWM2KTt9aWYoWlVGSV9GQUlMPT16VWZpU21zX0luc2VydE5vcm1hbFNtc1RvRGIoCiBwdERiU2F2ZURhdGEscE1lbVN0b3JlLHBDb250ZW50KSl7cmVzdWx0PVpVRklfRkFJTDt9fWVsc2V7aWYoWlVGSV9GQUlMPT0KIHpVZmlTbXNfVXBkYXRlTm9ybWFsU21zVG9EYihwdERiU2F2ZURhdGEscE1lbVN0b3JlLHBDb250ZW50LGlTbXNJZCkpe3Jlc3VsdD0KIFpVRklfRkFJTDt9fWZyZWUocENvbnRlbnQpO3BDb250ZW50PU5VTEw7cmV0dXJuIHJlc3VsdDt9c3RhdGljIGludCAKIHpVZmlTbXNfQ29uY2F0RGF0YUZyZWUoVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxpbnQgY291bnQsY2hhcioqCi1vdXRfcmVzdWx0KXtpbnQgaT0oMHg5NTMrMzYyMC0weDE3NzcpO2ZvcihpPSgweGNkOSs0ODMzLTB4MWZiYSk7aTxjb3VudDtpKyspe2lmKAotcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg4NzUrMTA2Ni0weGM5ZCldPT1pKygweGM3ZisxNzc5LTB4MTM3MSkpe2ZyZWUoCi1vdXRfcmVzdWx0W2ldKTtvdXRfcmVzdWx0W2ldPU5VTEw7YnJlYWs7fX1yZXR1cm4oMHgxMDQrOTQ1NC0weDI1ZjIpO31pbnQgCitvdXRfcmVzdWx0KXtpbnQgaT0oMHgxMTY2KzUwMDgtMHgyNGY2KTtmb3IoaT0oMHgzMWIrOTE0OS0weDI2ZDgpO2k8Y291bnQ7aSsrKXtpZgorKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4OGEwKzQxMTctMHgxOGIzKV09PWkrKDB4MTNmNSsxNjU1LTB4MWE2Yikpe2ZyZWUoCitvdXRfcmVzdWx0W2ldKTtvdXRfcmVzdWx0W2ldPU5VTEw7YnJlYWs7fX1yZXR1cm4oMHgxNDg5KzI4NC0weDE1YTUpO31pbnQgCiB6VWZpU21zX0FkZE5ld1Ntc1RvQ29uY2F0RGF0YShUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLGNoYXIqCiBwT2xkQ29udGVudCxjaGFyKnBGb3JtYXROZXdDb250ZW50LGNoYXIqcFJlYWxOZXdDb250ZW50LFRfelVmaVNtc19EYlN0b3JlU3RyKnBhYwotLGludCpwQ29uY2F0VG90YWxOdW0saW50IGxlbil7aW50IGNvdW50PSgweDEyNDMrNDU4LTB4MTQwZCk7Y2hhcioqb3V0X3Jlc3VsdD0KLU5VTEw7Y2hhciBjU2VnQ2hhcj0oKGNoYXIpKDB4ODA3KzY3MDktMHgyMjAxKSk7aW50IGk9KDB4MzkxKzkyMi0weDcyYik7aW50IAotaVRvdGFsU2VnTnVtPSgweDgwZCs2NDMxLTB4MjEyYyk7Y2hhciBhY0NvbnRlbnRTZWdbKDB4YTUxKzMyMTktMHgxNmUyKSoKLVpURV9XTVNfU01TX01TR19DT05URU5UX1NUT1JFX0xFTl9NQVgqWlRFX1dNU19TTVNfQ09VTlRfTUFYXT17KDB4MjI3KzcwLTB4MjZkKX07Ci1jaGFyKnBDdXJDb25Qb3M9YWNDb250ZW50U2VnO2Jvb2xlYW4gaXNFc2M9RkFMU0U7aWYoTlVMTD09cE9sZENvbnRlbnQpe3JldHVybi0KLSgweGNjZis0MjktMHhlN2IpO31jb3VudD16VWZpU21zX1NwbGl0U3RyaW5nKHBPbGRDb250ZW50LCZvdXRfcmVzdWx0LGNTZWdDaGFyKTsKLWZvcihpPSgweGM2KzU2MTItMHgxNmIyKTtpPGNvdW50O2krKyl7aWYocHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKLSgweDE3NzcrODU3LTB4MWFjZSldPT1pKygweDk0MCszNTUtMHhhYTIpKXtvdXRfcmVzdWx0W2ldPShjaGFyKiltYWxsb2Moc2l6ZW9mKAotcHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO21lbXNldChvdXRfcmVzdWx0W2ldLCgweGE2NSs1NDE2LTB4MWY4ZCksc2l6ZW9mKAotcHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKFdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUPT1wdERiU2F2ZURhdGEtPgotYWxwaGFiZXQpe2lzRXNjPXpVZmlTbXNfRGVjb2RlQ29udGVudChwdERiU2F2ZURhdGEtPnNtc19jb250ZW50LHN0cmxlbigKLXB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQpLGlzRXNjLG91dF9yZXN1bHRbaV0pO31lbHNle3N0cm5jcHkob3V0X3Jlc3VsdFtpXSwKLXB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsc2l6ZW9mKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQpLSgweDExNjYrNTMxNy0weDI2MmEpCi0pO31icmVhazt9fWZvcihpPSgweDI4YSs3MTc4LTB4MWU5NCk7aTxjb3VudDtpKyspe3NucHJpbnRmKGFjQ29udGVudFNlZytzdHJsZW4oCi1hY0NvbnRlbnRTZWcpLHNpemVvZihhY0NvbnRlbnRTZWcpLXN0cmxlbihhY0NvbnRlbnRTZWcpLCJceDI1XHg3MyIsb3V0X3Jlc3VsdFtpXQotKTtzdHJjYXQocEZvcm1hdE5ld0NvbnRlbnQsb3V0X3Jlc3VsdFtpXSk7aWYoaSE9Y291bnQtKDB4MTk2Nys1NjEtMHgxYjk3KSl7Ci1zdHJjYXQocEZvcm1hdE5ld0NvbnRlbnQsIlx4M2IiKTt9fXN0cm5jcHkocFJlYWxOZXdDb250ZW50LGFjQ29udGVudFNlZyxsZW4pOworLGludCpwQ29uY2F0VG90YWxOdW0saW50IGxlbil7aW50IGNvdW50PSgweGI3YiszNTU3LTB4MTk2MCk7Y2hhcioqb3V0X3Jlc3VsdD0KK05VTEw7Y2hhciBjU2VnQ2hhcj0oKGNoYXIpKDB4N2U4KzcwOTItMHgyMzYxKSk7aW50IGk9KDB4MjMxMis5NTAtMHgyNmM4KTtpbnQgCitpVG90YWxTZWdOdW09KDB4MzgrNjM1My0weDE5MDkpO2NoYXIgYWNDb250ZW50U2VnWygweDMyNSszODM0LTB4MTIxZCkqCitaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9TVE9SRV9MRU5fTUFYKlpURV9XTVNfU01TX0NPVU5UX01BWF09eworKDB4MWMwMisxMzc0LTB4MjE2MCl9O2NoYXIqcEN1ckNvblBvcz1hY0NvbnRlbnRTZWc7Ym9vbGVhbiBpc0VzYz1GQUxTRTtpZihOVUxMPT0KK3BPbGRDb250ZW50KXtyZXR1cm4tKDB4MjNkKzU2LTB4Mjc0KTt9Y291bnQ9elVmaVNtc19TcGxpdFN0cmluZyhwT2xkQ29udGVudCwmCitvdXRfcmVzdWx0LGNTZWdDaGFyKTtmb3IoaT0oMHhjZjgrNjIxMi0weDI1M2MpO2k8Y291bnQ7aSsrKXtpZihwdERiU2F2ZURhdGEtPgorY29uY2F0X2luZm9bKDB4MTdjYisyNzMyLTB4MjI3NSldPT1pKygweDFhZmIrMzA0MS0weDI2ZGIpKXtvdXRfcmVzdWx0W2ldPShjaGFyKikKK21hbGxvYyhzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO21lbXNldChvdXRfcmVzdWx0W2ldLAorKDB4YjAxKzIxODEtMHgxMzg2KSxzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCkpO2lmKAorV01TX0dXX0FMUEhBQkVUXzdfQklUX0RFRkFVTFQ9PXB0RGJTYXZlRGF0YS0+YWxwaGFiZXQpe2lzRXNjPQorelVmaVNtc19EZWNvZGVDb250ZW50KHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsc3RybGVuKHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQKKyksaXNFc2Msb3V0X3Jlc3VsdFtpXSk7fWVsc2V7c3RybmNweShvdXRfcmVzdWx0W2ldLHB0RGJTYXZlRGF0YS0+c21zX2NvbnRlbnQsCitzaXplb2YocHREYlNhdmVEYXRhLT5zbXNfY29udGVudCktKDB4MmM0Kzg2OS0weDYyOCkpO31icmVhazt9fWZvcihpPQorKDB4MTY3Nys0MDg4LTB4MjY2Zik7aTxjb3VudDtpKyspe3NucHJpbnRmKGFjQ29udGVudFNlZytzdHJsZW4oYWNDb250ZW50U2VnKSwKK3NpemVvZihhY0NvbnRlbnRTZWcpLXN0cmxlbihhY0NvbnRlbnRTZWcpLCJceDI1XHg3MyIsb3V0X3Jlc3VsdFtpXSk7c3RyY2F0KAorcEZvcm1hdE5ld0NvbnRlbnQsb3V0X3Jlc3VsdFtpXSk7aWYoaSE9Y291bnQtKDB4MTRkYSsyMjEyLTB4MWQ3ZCkpe3N0cmNhdCgKK3BGb3JtYXROZXdDb250ZW50LCJceDNiIik7fX1zdHJuY3B5KHBSZWFsTmV3Q29udGVudCxhY0NvbnRlbnRTZWcsbGVuKTsKIHpVZmlTbXNfQ29uY2F0RGF0YUZyZWUocHREYlNhdmVEYXRhLGNvdW50LG91dF9yZXN1bHQpO2ZyZWUob3V0X3Jlc3VsdCk7CiBvdXRfcmVzdWx0PU5VTEw7Y291bnQ9elVmaVNtc19TcGxpdFN0cmluZyhwYWMtPkluZFN0ciwmb3V0X3Jlc3VsdCxjU2VnQ2hhcik7Zm9yKAotaT0oMHg2YjIrMTgyMi0weGRkMCk7aTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHgxM2RkKzMxMzYtMHgyMDFiKV09PWkrKDB4NzY3KzExNzAtMHhiZjgpKXtvdXRfcmVzdWx0W2ldPShjaGFyKiltYWxsb2MoCi1TSE9SVF9JTlRfTEVOKTttZW1zZXQob3V0X3Jlc3VsdFtpXSwoMHgxMTJhKzEyNzEtMHgxNjIxKSxTSE9SVF9JTlRfTEVOKTtzbnByaW50ZgotKG91dF9yZXN1bHRbaV0sU0hPUlRfSU5UX0xFTiwiXHgyNVx4NjQiLHB0RGJTYXZlRGF0YS0+aW5kZXgpO2JyZWFrO319Zm9yKGk9Ci0oMHhiYjErNTczNy0weDIyMWEpO2k8Y291bnQ7aSsrKXtzbnByaW50ZihwYWMtPkZvcm1hdEluZCtzdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLAoraT0oMHg0YjQrMjE4LTB4NThlKTtpPGNvdW50O2krKyl7aWYocHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDQ5MSs3MDk1LTB4MjA0NildPT1pKygweDFkZCs2MTEzLTB4MTliZCkpe291dF9yZXN1bHRbaV09KGNoYXIqKW1hbGxvYygKK1NIT1JUX0lOVF9MRU4pO21lbXNldChvdXRfcmVzdWx0W2ldLCgweDg1ZCszMjI0LTB4MTRmNSksU0hPUlRfSU5UX0xFTik7c25wcmludGYoCitvdXRfcmVzdWx0W2ldLFNIT1JUX0lOVF9MRU4sIlx4MjVceDY0IixwdERiU2F2ZURhdGEtPmluZGV4KTticmVhazt9fWZvcihpPQorKDB4YzZiKzMwNjctMHgxODY2KTtpPGNvdW50O2krKyl7c25wcmludGYocGFjLT5Gb3JtYXRJbmQrc3RybGVuKHBhYy0+Rm9ybWF0SW5kKSwKIHNpemVvZihwYWMtPkZvcm1hdEluZCktc3RybGVuKHBhYy0+Rm9ybWF0SW5kKSwiXHgyNVx4NzMiLG91dF9yZXN1bHRbaV0pO2lmKGkhPQotY291bnQtKDB4MTc0ZCs1NzEtMHgxOTg3KSl7c25wcmludGYocGFjLT5Gb3JtYXRJbmQrc3RybGVuKHBhYy0+Rm9ybWF0SW5kKSxzaXplb2YKLShwYWMtPkZvcm1hdEluZCktc3RybGVuKHBhYy0+Rm9ybWF0SW5kKSwiXHgzYiIpO319elVmaVNtc19Db25jYXREYXRhRnJlZSgKK2NvdW50LSgweDE3MTMrMjMzNi0weDIwMzIpKXtzbnByaW50ZihwYWMtPkZvcm1hdEluZCtzdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLAorc2l6ZW9mKHBhYy0+Rm9ybWF0SW5kKS1zdHJsZW4ocGFjLT5Gb3JtYXRJbmQpLCJceDNiIik7fX16VWZpU21zX0NvbmNhdERhdGFGcmVlKAogcHREYlNhdmVEYXRhLGNvdW50LG91dF9yZXN1bHQpO2ZyZWUob3V0X3Jlc3VsdCk7b3V0X3Jlc3VsdD1OVUxMO2NvdW50PQotelVmaVNtc19TcGxpdFN0cmluZyhwYWMtPlNlZ19TZXEsJm91dF9yZXN1bHQsY1NlZ0NoYXIpO2ZvcihpPQotKDB4MTA4MSsyNjIyLTB4MWFiZik7aTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHgyYjIrMTYzNC0weDkxMildPT1pKygweDZlMSs0OTI3LTB4MWExZikpe291dF9yZXN1bHRbaV09KGNoYXIqKW1hbGxvYygKLVNIT1JUX0lOVF9MRU4pO21lbXNldChvdXRfcmVzdWx0W2ldLCgweDYwZis1MTU0LTB4MWEzMSksU0hPUlRfSU5UX0xFTik7c25wcmludGYoCi1vdXRfcmVzdWx0W2ldLFNIT1JUX0lOVF9MRU4sIlx4MjVceDY0IixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4ZDQrNzQ2My0weDFkZjkpXSk7YnJlYWs7fX1mb3IoaT0oMHhmZDIrMTg1Ni0weDE3MTIpO2k8Y291bnQ7aSsrKXtzbnByaW50ZihwYWMKLS0+Rm9ybWF0U2VxK3N0cmxlbihwYWMtPkZvcm1hdFNlcSksc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS1zdHJsZW4ocGFjLT5Gb3JtYXRTZXEpCi0sIlx4MjVceDczIixvdXRfcmVzdWx0W2ldKTtpZihpIT1jb3VudC0oMHg1NGErNjgyMi0weDFmZWYpKXtzbnByaW50ZihwYWMtPgotRm9ybWF0U2VxK3N0cmxlbihwYWMtPkZvcm1hdFNlcSksc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS1zdHJsZW4ocGFjLT5Gb3JtYXRTZXEpLAotIlx4M2IiKTt9aWYoKDB4NDQrOTU5OS0weDI1YzMpIT1zdHJjbXAob3V0X3Jlc3VsdFtpXSwiIikpe2lUb3RhbFNlZ051bSsrO319KgotcENvbmNhdFRvdGFsTnVtPWlUb3RhbFNlZ051bTt6VWZpU21zX0NvbmNhdERhdGFGcmVlKHB0RGJTYXZlRGF0YSxjb3VudCwKLW91dF9yZXN1bHQpO2ZyZWUob3V0X3Jlc3VsdCk7b3V0X3Jlc3VsdD1OVUxMO3JldHVybigweDIwNjQrMjczLTB4MjE3NSk7fWludCAKLXpVZmlTbXNfVXBkYXRlQ29uY2F0U21zKFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEsY29uc3QgY2hhcipwU3RvcmVQb3MsCi1sb25nIGlTbXNJZCl7VF96VWZpU21zX0RiU3RvcmVTdHIgYWM9eygweDE2OTMrMjk5NC0weDIyNDUpfTtjaGFyKnBPbGRDb250ZW50PQotTlVMTDtjaGFyKnBGb3JtYXROZXdDb250ZW50PU5VTEw7Y2hhcipwUmVhbE5ld0NvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsTnVtPQotKDB4MjM3OCszMzctMHgyNGM5KTtpbnQgcmVzdWx0PVpVRklfU1VDQztpbnQgc3BhY2VMZW49KDB4Mjg5KzIwMjktMHhhNzIpKgotWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKygweDMwMSs0NjMwLTB4MTUxMykKK3pVZmlTbXNfU3BsaXRTdHJpbmcocGFjLT5TZWdfU2VxLCZvdXRfcmVzdWx0LGNTZWdDaGFyKTtmb3IoaT0oMHg5MjIrNDMyMS0weDFhMDMpCis7aTxjb3VudDtpKyspe2lmKHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MjQ4YysyOTAtMHgyNWFjKV09PWkrCisoMHgxNTk3KzE3NTctMHgxYzczKSl7b3V0X3Jlc3VsdFtpXT0oY2hhciopbWFsbG9jKFNIT1JUX0lOVF9MRU4pO21lbXNldCgKK291dF9yZXN1bHRbaV0sKDB4ODYxKzY4My0weGIwYyksU0hPUlRfSU5UX0xFTik7c25wcmludGYob3V0X3Jlc3VsdFtpXSwKK1NIT1JUX0lOVF9MRU4sIlx4MjVceDY0IixwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDkxKzkzNDctMHgyNTEyKV0pO2JyZWFrO319Citmb3IoaT0oMHgzZTErODU3MC0weDI1NWIpO2k8Y291bnQ7aSsrKXtzbnByaW50ZihwYWMtPkZvcm1hdFNlcStzdHJsZW4ocGFjLT4KK0Zvcm1hdFNlcSksc2l6ZW9mKHBhYy0+Rm9ybWF0U2VxKS1zdHJsZW4ocGFjLT5Gb3JtYXRTZXEpLCJceDI1XHg3MyIsb3V0X3Jlc3VsdFtpCitdKTtpZihpIT1jb3VudC0oMHgzOSsyNTM4LTB4YTIyKSl7c25wcmludGYocGFjLT5Gb3JtYXRTZXErc3RybGVuKHBhYy0+Rm9ybWF0U2VxKQorLHNpemVvZihwYWMtPkZvcm1hdFNlcSktc3RybGVuKHBhYy0+Rm9ybWF0U2VxKSwiXHgzYiIpO31pZigoMHhkYTkrNDY1MS0weDFmZDQpIT0KK3N0cmNtcChvdXRfcmVzdWx0W2ldLCIiKSl7aVRvdGFsU2VnTnVtKys7fX0qcENvbmNhdFRvdGFsTnVtPWlUb3RhbFNlZ051bTsKK3pVZmlTbXNfQ29uY2F0RGF0YUZyZWUocHREYlNhdmVEYXRhLGNvdW50LG91dF9yZXN1bHQpO2ZyZWUob3V0X3Jlc3VsdCk7CitvdXRfcmVzdWx0PU5VTEw7cmV0dXJuKDB4NTEwKzUxODEtMHgxOTRkKTt9aW50IHpVZmlTbXNfVXBkYXRlQ29uY2F0U21zKAorVF96VWZpU21zX0RiU3RvcmVEYXRhKnB0RGJTYXZlRGF0YSxjb25zdCBjaGFyKnBTdG9yZVBvcyxsb25nIGlTbXNJZCl7CitUX3pVZmlTbXNfRGJTdG9yZVN0ciBhYz17KDB4M2IxKzMwNjMtMHhmYTgpfTtjaGFyKnBPbGRDb250ZW50PU5VTEw7Y2hhcioKK3BGb3JtYXROZXdDb250ZW50PU5VTEw7Y2hhcipwUmVhbE5ld0NvbnRlbnQ9TlVMTDtpbnQgaVRvdGFsTnVtPQorKDB4NGUzKzYwNDctMHgxYzgyKTtpbnQgcmVzdWx0PVpVRklfU1VDQztpbnQgc3BhY2VMZW49KDB4MTM2ZCsyODcxLTB4MWVhMCkqCitaVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKlpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgrKDB4MmU3KzU1NzItMHgxOGE3KQogO3BPbGRDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pO3BGb3JtYXROZXdDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pOwogcFJlYWxOZXdDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pO2lmKHBPbGRDb250ZW50PT1OVUxMfHxwRm9ybWF0TmV3Q29udGVudAogPT1OVUxMfHxwUmVhbE5ld0NvbnRlbnQ9PU5VTEwpe2lmKHBPbGRDb250ZW50KWZyZWUocE9sZENvbnRlbnQpO2lmKAogcEZvcm1hdE5ld0NvbnRlbnQpZnJlZShwRm9ybWF0TmV3Q29udGVudCk7aWYocFJlYWxOZXdDb250ZW50KWZyZWUoCi1wUmVhbE5ld0NvbnRlbnQpO3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldChwUmVhbE5ld0NvbnRlbnQsKDB4ZTBkKzEyMTAtMHgxMmM3KSwKLXNwYWNlTGVuKTttZW1zZXQocE9sZENvbnRlbnQsKDB4YTM1KzMyMDQtMHgxNmI5KSxzcGFjZUxlbik7bWVtc2V0KAotcEZvcm1hdE5ld0NvbnRlbnQsKDB4YzU4KzE2MDctMHgxMjlmKSxzcGFjZUxlbik7KHZvaWQpelVmaVNtc19HZXRDb25jYXRJbmZvKAorcFJlYWxOZXdDb250ZW50KTtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQocFJlYWxOZXdDb250ZW50LCgweDFhNDIrNzc2LTB4MWQ0YSksCitzcGFjZUxlbik7bWVtc2V0KHBPbGRDb250ZW50LCgweGVhYys2MTQ5LTB4MjZiMSksc3BhY2VMZW4pO21lbXNldCgKK3BGb3JtYXROZXdDb250ZW50LCgweDE3NzgrMjYwNi0weDIxYTYpLHNwYWNlTGVuKTsodm9pZCl6VWZpU21zX0dldENvbmNhdEluZm8oCiBwU3RvcmVQb3MsaVNtc0lkLCZhYyxwT2xkQ29udGVudCxzcGFjZUxlbik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzRceDY1XHg2NVx4NzRceDIwXHgyZFx4MzBceDIwXHg0OVx4NmVceDY0XHg1M1x4NzRceDcyXHgzYVx4MjVceDczXHgyY1x4NTNceDY1XHg2N1x4NWZceDUzXHg2NVx4NzFceDNhXHgyNVx4NzNceDJjXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg0OVx4NmVceDY0XHgzYVx4MjVceDczXHgyY1x4NDZceDZmXHg3Mlx4NmRceDYxXHg3NFx4NTNceDY1XHg3MVx4M2FceDI1XHg3MyIgIlxuIgotLGFjLkluZFN0cixhYy5TZWdfU2VxLGFjLkZvcm1hdEluZCxhYy5Gb3JtYXRTZXEpO2lmKC0oMHgzMGIrNjI5LTB4NTdmKT09CissYWMuSW5kU3RyLGFjLlNlZ19TZXEsYWMuRm9ybWF0SW5kLGFjLkZvcm1hdFNlcSk7aWYoLSgweGRiOCs4MDItMHgxMGQ5KT09CiB6VWZpU21zX0FkZE5ld1Ntc1RvQ29uY2F0RGF0YShwdERiU2F2ZURhdGEscE9sZENvbnRlbnQscEZvcm1hdE5ld0NvbnRlbnQsCiBwUmVhbE5ld0NvbnRlbnQsJmFjLCZpVG90YWxOdW0sc3BhY2VMZW4pKXtyZXN1bHQ9WlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3NFx4NjVceDY1XHg3NFx4MjBceDMwXHgyMFx4NDlceDZlXHg2NFx4NTNceDc0XHg3Mlx4M2FceDI1XHg3M1x4MmNceDUzXHg2NVx4NjdceDVmXHg1M1x4NjVceDcxXHgzYVx4MjVceDczXHgyY1x4NDZceDZmXHg3Mlx4NmRceDYxXHg3NFx4NDlceDZlXHg2NFx4M2FceDI1XHg3M1x4MmNceDQ2XHg2Zlx4NzJceDZkXHg2MVx4NzRceDUzXHg2NVx4NzFceDNhXHgyNVx4NzMiICJcbiIKICxhYy5JbmRTdHIsYWMuU2VnX1NlcSxhYy5Gb3JtYXRJbmQsYWMuRm9ybWF0U2VxKTtwdERiU2F2ZURhdGEtPnRwX2Rjcz0KLSgweDEwYzkrNDYyNC0weDIyZDcpO2lmKFpVRklfRkFJTD09elVmaVNtc19VcGRhdGVDb25jYXRTbXNUb0RiKHB0RGJTYXZlRGF0YSwKKygweDdkYSsyMTctMHg4YjEpO2lmKFpVRklfRkFJTD09elVmaVNtc19VcGRhdGVDb25jYXRTbXNUb0RiKHB0RGJTYXZlRGF0YSwKIHBTdG9yZVBvcyxwRm9ybWF0TmV3Q29udGVudCxwUmVhbE5ld0NvbnRlbnQsJmFjLGlUb3RhbE51bSxpU21zSWQpKXtyZXN1bHQ9CiBaVUZJX0ZBSUw7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDc0XHg2NVx4NjVceDc0XHgyMFx4MzFceDIwXHg0OVx4NmVceDY0XHg1M1x4NzRceDcyXHgzYVx4MjVceDczXHgyY1x4NTNceDY1XHg2N1x4NWZceDUzXHg2NVx4NzFceDNhXHgyNVx4NzNceDJjXHg0Nlx4NmZceDcyXHg2ZFx4NjFceDc0XHg0OVx4NmVceDY0XHgzYVx4MjVceDczXHgyY1x4NDZceDZmXHg3Mlx4NmRceDYxXHg3NFx4NTNceDY1XHg3MVx4M2FceDI1XHg3MyIgIlxuIgpAQCAtNTMwLDMzICs1MjksMzMgQEAKIHBGb3JtYXROZXdDb250ZW50PU5VTEw7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1NVx4NzBceDY0XHg2MVx4NzRceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHgyMFx4NzNceDc1XHg2M1x4NjNceDY1XHg3M1x4NzNceDJlIiAiXG4iCiApO3JldHVybiByZXN1bHQ7fWludCB6VWZpU21zX0luc2VydENvbmNhdFNtcyhUX3pVZmlTbXNfRGJTdG9yZURhdGEqcHREYlNhdmVEYXRhLAotY29uc3QgY2hhcipwU3RvcmVQb3Mpe1RfelVmaVNtc19EYlN0b3JlU3RyIGFjPXsoMHg3ZjMrNTIwNi0weDFjNDkpfTtpbnQgCi1pU21zX1RvdGFsQ291bnQ9KDB4YWYzKzIyOS0weGJkOCk7aW50IGk9KDB4ZDAyKzMyNjctMHgxOWM1KTtjaGFyIGFjVG1wQ29udGVudFsKLSgweGJmOCs2ODQ0LTB4MjViNCldO2ludCBpQ29uY2F0TnVtPSgweDExODQrMzI0Ni0weDFlMzIpO2NoYXIqcEZvcm1hdENvbmNhdD1OVUxMCi07Y2hhcipwQ29udGVudD1OVUxMO2ludCBzcGFjZUxlbj0oMHg0MjMrMjIwNC0weGNiYikqCi1aVEVfV01TX1NNU19NU0dfQ09OVEVOVF9MRU5fTUFYKlpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgrKDB4ZmY3KzMwNjUtMHgxYmVjKQotO2lmKE5VTEw9PXB0RGJTYXZlRGF0YXx8TlVMTD09cFN0b3JlUG9zKXtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCitjb25zdCBjaGFyKnBTdG9yZVBvcyl7VF96VWZpU21zX0RiU3RvcmVTdHIgYWM9eygweDY3OSs1NjM0LTB4MWM3Yil9O2ludCAKK2lTbXNfVG90YWxDb3VudD0oMHhkYmYrMjYwMS0weDE3ZTgpO2ludCBpPSgweDQzNSsyODQ1LTB4ZjUyKTtjaGFyIGFjVG1wQ29udGVudFsKKygweDE3MmYrMzIyNi0weDIyYzkpXTtpbnQgaUNvbmNhdE51bT0oMHgxN2ErNjM1NS0weDFhNGQpO2NoYXIqcEZvcm1hdENvbmNhdD1OVUxMCis7Y2hhcipwQ29udGVudD1OVUxMO2ludCBzcGFjZUxlbj0oMHg0MjIrODQ3Ni0weDI1M2EpKgorWlRFX1dNU19TTVNfTVNHX0NPTlRFTlRfTEVOX01BWCpaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKygweDQ1Yis3MDMtMHg3MTYpOworaWYoTlVMTD09cHREYlNhdmVEYXRhfHxOVUxMPT1wU3RvcmVQb3Mpe3JldHVybiBaVUZJX0ZBSUw7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDQ5XHg2ZVx4NzNceDY1XHg3Mlx4NzRceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDJlIiAiXG4iCi0pO21lbXNldChhY1RtcENvbnRlbnQsKDB4MWM5NSsxODM3LTB4MjNjMiksc2l6ZW9mKGFjVG1wQ29udGVudCkpO2lTbXNfVG90YWxDb3VudAotPXB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4ODNkKzYyMi0weGFhYSldO2ZvcihpPSgweDE3ZmErMjEzMC0weDIwNGIpO2k8CispO21lbXNldChhY1RtcENvbnRlbnQsKDB4MTYxKzY4MDYtMHgxYmY3KSxzaXplb2YoYWNUbXBDb250ZW50KSk7aVNtc19Ub3RhbENvdW50PQorcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHgxNjgwKzQyMTUtMHgyNmY2KV07Zm9yKGk9KDB4NWEwKzY2NDQtMHgxZjkzKTtpPAogaVNtc19Ub3RhbENvdW50O2krKyl7c3RyY2F0KGFjLkluZFN0ciwiXHgzYiIpO3N0cmNhdChhYy5TZWdfU2VxLCJceDNiIik7c3RyY2F0KAogYWNUbXBDb250ZW50LCJceDNiIik7fXBGb3JtYXRDb25jYXQ9KGNoYXIqKW1hbGxvYyhzcGFjZUxlbik7aWYoTlVMTD09Ci1wRm9ybWF0Q29uY2F0KXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQocEZvcm1hdENvbmNhdCwoMHgyMTcwKzI4Ny0weDIyOGYpLAotc3BhY2VMZW4pO3BDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pO2lmKHBDb250ZW50PT1OVUxMKXtmcmVlKHBGb3JtYXRDb25jYXQKLSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHBDb250ZW50LCgweGMwNys1MTctMHhlMGMpLHNwYWNlTGVuKTtpZigtCi0oMHgzNzErMzU2LTB4NGQ0KT09elVmaVNtc19BZGROZXdTbXNUb0NvbmNhdERhdGEocHREYlNhdmVEYXRhLGFjVG1wQ29udGVudCwKK3BGb3JtYXRDb25jYXQpe3JldHVybiBaVUZJX0ZBSUw7fW1lbXNldChwRm9ybWF0Q29uY2F0LCgweDZlNysxNzQtMHg3OTUpLHNwYWNlTGVuCispO3BDb250ZW50PShjaGFyKiltYWxsb2Moc3BhY2VMZW4pO2lmKHBDb250ZW50PT1OVUxMKXtmcmVlKHBGb3JtYXRDb25jYXQpO3JldHVybgorIFpVRklfRkFJTDt9bWVtc2V0KHBDb250ZW50LCgweDM5Yis3OTc3LTB4MjJjNCksc3BhY2VMZW4pO2lmKC0KKygweDI4NCs3MTY1LTB4MWU4MCk9PXpVZmlTbXNfQWRkTmV3U21zVG9Db25jYXREYXRhKHB0RGJTYXZlRGF0YSxhY1RtcENvbnRlbnQsCiBwRm9ybWF0Q29uY2F0LHBDb250ZW50LCZhYywmaUNvbmNhdE51bSxzcGFjZUxlbikpe2ZyZWUocEZvcm1hdENvbmNhdCk7ZnJlZSgKIHBDb250ZW50KTtwRm9ybWF0Q29uY2F0PU5VTEw7cENvbnRlbnQ9TlVMTDtyZXR1cm4gWlVGSV9GQUlMO31wdERiU2F2ZURhdGEtPgotdHBfZGNzPSgweDE4MyszMzI4LTB4ZTgxKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfSW5zZXJ0Q29uY2F0U21zVG9EYihwdERiU2F2ZURhdGEKLSxwU3RvcmVQb3MscEZvcm1hdENvbmNhdCxwQ29udGVudCwmYWMsaUNvbmNhdE51bSkpe2ZyZWUocEZvcm1hdENvbmNhdCk7ZnJlZSgKK3RwX2Rjcz0oMHgxMmIrNzAxLTB4M2U2KTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfSW5zZXJ0Q29uY2F0U21zVG9EYihwdERiU2F2ZURhdGEsCitwU3RvcmVQb3MscEZvcm1hdENvbmNhdCxwQ29udGVudCwmYWMsaUNvbmNhdE51bSkpe2ZyZWUocEZvcm1hdENvbmNhdCk7ZnJlZSgKIHBDb250ZW50KTtwRm9ybWF0Q29uY2F0PU5VTEw7cENvbnRlbnQ9TlVMTDtyZXR1cm4gWlVGSV9GQUlMO31mcmVlKHBGb3JtYXRDb25jYXQpCiA7ZnJlZShwQ29udGVudCk7cEZvcm1hdENvbmNhdD1OVUxMO3BDb250ZW50PU5VTEw7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0OVx4NmVceDczXHg2NVx4NzJceDc0XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHgyMFx4NzNceDc1XHg2M1x4NjNceDY1XHg3M1x4NzNceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX1NVQ0M7fWludCB6VWZpU21zX1N0b3JlQ29uY2F0U21zVG9EYihUX3pVZmlTbXNfRGJTdG9yZURhdGEqCi1wdERiU2F2ZURhdGEsY2hhcipwTWVtU3RvcmUpe2xvbmcgaVNtc0lkPSgweDFmMis3MDMzLTB4MWQ2Yik7aW50IHRvdGFsX2NvdW50PQotKDB4Y2VmKzE0MjAtMHgxMjdiKTtpZihOVUxMPT1wdERiU2F2ZURhdGF8fE5VTEw9PXBNZW1TdG9yZSl7cmV0dXJuIFpVRklfRkFJTDt9CitwdERiU2F2ZURhdGEsY2hhcipwTWVtU3RvcmUpe2xvbmcgaVNtc0lkPSgweDFlMTErMTM5Mi0weDIzODEpO2ludCB0b3RhbF9jb3VudD0KKygweDNiOSs2MjQyLTB4MWMxYik7aWYoTlVMTD09cHREYlNhdmVEYXRhfHxOVUxMPT1wTWVtU3RvcmUpe3JldHVybiBaVUZJX0ZBSUw7fQogaVNtc0lkPXpVZmlTbXNfU2VhcmNoQ29uY2F0U21zSW5EYihwdERiU2F2ZURhdGEscE1lbVN0b3JlKTtpZigtCi0oMHgxNjNhKzI1ODctMHgyMDU0KSE9aVNtc0lkKXtwcmludGYoCisoMHg2NDYrNjU0Ni0weDFmZDcpIT1pU21zSWQpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHg1NFx4NmZceDQ0XHg2Mlx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDU1XHg3MFx4NjRceDYxXHg3NFx4NjVceDQzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDUzXHg2ZFx4NzNceDIwXHg1M1x4NmRceDczXHg0OVx4NjRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsaVNtc0lkKTtyZXR1cm4gelVmaVNtc19VcGRhdGVDb25jYXRTbXMocHREYlNhdmVEYXRhLHBNZW1TdG9yZSxpU21zSWQpO31lbHNle2lmKAogWlVGSV9GQUlMPT16VWZpU21zX0dldFRvdGFsQ291bnQocE1lbVN0b3JlLCZ0b3RhbF9jb3VudCkpe3ByaW50ZigKQEAgLTU2OCwxMDIgKzU2NywxMDIgQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDc0XHg2Zlx4NzJceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHg1NFx4NmZceDQ0XHg2Mlx4MjBceDUzXHg2ZFx4NzNceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjlceDczXHgyMFx4NDZceDc1XHg2Y1x4NmNceDJlIiAiXG4iCiApO3JldHVybiBaVUZJX0ZBSUw7fXJldHVybiB6VWZpU21zX0luc2VydENvbmNhdFNtcyhwdERiU2F2ZURhdGEscE1lbVN0b3JlKTt9fWludAogIHpVZmlTbXNfV3JpdGVTbXNUb0RiKFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEselVmaVNtc19TdG9yZVR5cGUgCi1pTWVtU3RvcmUsbG9uZyBpU21zSWQpe2NoYXIgYWNEYk1lbVN0b3JlWygweDE2NmIrNDA4Ny0weDI2NTgpXTtpbnQgaVRvdGFsQ291bnQ9Ci0oMHhhMTErMTkyMy0weDExOTQpO2ludCBpZD0oMHgzYjErMzkwNC0weDEyZjEpO1VJTlQ4IG5lZWRDaGVja01lbW9yeT0KLSgweDk5Yys1OTEzLTB4MjBiNCk7aWYoTlVMTD09cHREYlNhdmVEYXRhKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQoYWNEYk1lbVN0b3JlCi0sKDB4MzM0KzgzNTQtMHgyM2Q2KSxzaXplb2YoYWNEYk1lbVN0b3JlKSk7aWYoV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxPT0KLWlNZW1TdG9yZSl7c3RybmNweShhY0RiTWVtU3RvcmUsWlRFX1dNU19EQl9TSU1fVEFCTEUsc2l6ZW9mKGFjRGJNZW1TdG9yZSktCi0oMHg1OTIrODM2Mi0weDI2M2IpKTt9ZWxzZXtzdHJuY3B5KGFjRGJNZW1TdG9yZSxaVEVfV01TX0RCX05WX1RBQkxFLHNpemVvZigKLWFjRGJNZW1TdG9yZSktKDB4NzQ1KzIyMTItMHhmZTgpKTt9aWYoKDB4MTJhNSsxNTA3LTB4MTg4Nyk9PXB0RGJTYXZlRGF0YS0+Ci1jb25jYXRfc21zKXtpZD16VWZpU21zX1NlYXJjaENvbmNhdFNtc0luRGIocHREYlNhdmVEYXRhLCZhY0RiTWVtU3RvcmUpO2lmKC0KLSgweGJkZCsyMDAxLTB4MTNhZCkhPWlkKXtuZWVkQ2hlY2tNZW1vcnk9KDB4YzhjKzUwMDQtMHgyMDE4KTt9fWlmKAotbmVlZENoZWNrTWVtb3J5PT0oMHgxMDU3KzIwODMtMHgxODc5KSl7aWYoWlVGSV9GQUlMPT16VWZpU21zX0dldFRvdGFsQ291bnQoCi1hY0RiTWVtU3RvcmUsJmlUb3RhbENvdW50KSl7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAoraU1lbVN0b3JlLGxvbmcgaVNtc0lkKXtjaGFyIGFjRGJNZW1TdG9yZVsoMHgxNGJiKzIxMTctMHgxY2Y2KV07aW50IGlUb3RhbENvdW50PQorKDB4MTA5Nys1NDU2LTB4MjVlNyk7aW50IGlkPSgweDFhYTErMTk0My0weDIyMzgpO1VJTlQ4IG5lZWRDaGVja01lbW9yeT0KKygweDFhZjArMTczNy0weDIxYjgpO2lmKE5VTEw9PXB0RGJTYXZlRGF0YSl7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KAorYWNEYk1lbVN0b3JlLCgweDFmMys0OTI1LTB4MTUzMCksc2l6ZW9mKGFjRGJNZW1TdG9yZSkpO2lmKAorV01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxPT1pTWVtU3RvcmUpe3N0cm5jcHkoYWNEYk1lbVN0b3JlLFpURV9XTVNfREJfU0lNX1RBQkxFLAorc2l6ZW9mKGFjRGJNZW1TdG9yZSktKDB4MWQ1OCsxMjEtMHgxZGQwKSk7fWVsc2V7c3RybmNweShhY0RiTWVtU3RvcmUsCitaVEVfV01TX0RCX05WX1RBQkxFLHNpemVvZihhY0RiTWVtU3RvcmUpLSgweDE5ZWYrMzI2MS0weDI2YWIpKTt9aWYoCisoMHg3MzUrMTgzMS0weGU1Yik9PXB0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcyl7aWQ9elVmaVNtc19TZWFyY2hDb25jYXRTbXNJbkRiKAorcHREYlNhdmVEYXRhLCZhY0RiTWVtU3RvcmUpO2lmKC0oMHgxMjU5KzQwNzktMHgyMjQ3KSE9aWQpe25lZWRDaGVja01lbW9yeT0KKygweDE3ZjArMjM2Ny0weDIxMmYpO319aWYobmVlZENoZWNrTWVtb3J5PT0oMHgxYTE2KzE5MTktMHgyMTk0KSl7aWYoWlVGSV9GQUlMPT0KK3pVZmlTbXNfR2V0VG90YWxDb3VudChhY0RiTWVtU3RvcmUsJmlUb3RhbENvdW50KSl7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1N1x4NzJceDY5XHg3NFx4NjVceDUzXHg2ZFx4NzNceDU0XHg2Zlx4NDRceDYyXHgyMFx4NjlceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NDNceDZmXHg3NVx4NmVceDc0XHgzZFx4MjVceDY0XHgyOFx4NmVceDY1XHg2NVx4NjRceDQzXHg2OFx4NjVceDYzXHg2Ylx4NGRceDY1XHg2ZFx4NmZceDcyXHg3OVx4M2RceDNkXHgzMVx4MjkiICJcbiIKICxpVG90YWxDb3VudCk7aWYoaVRvdGFsQ291bnQ+PWdfelVmaVNtc19TdG9yZUNhcGFibGl0eVsoc3RyY21wKGFjRGJNZW1TdG9yZSwKICJceDZlXHg3NiIpP1pURV9XTVNfTUVNT1JZX1NJTTpaVEVfV01TX01FTU9SWV9OVildKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU3XHg3Mlx4NjlceDc0XHg2NVx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjZceDc1XHg2Y1x4NmNceDJjXHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyIiAiXG4iCiApO3JldHVybiBaVEVfV01TX05WX01FTU9SWV9GVUxMO319aWYocHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKLSgweDEwNTUrMjI4Mi0weDE5M2QpXT09KDB4MTIxNCsxNjg0LTB4MThhOCl8fHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHgxNTdkKzE0NzUtMHgxYjNlKV0+cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhmYjcrMjY3MC0weDFhMjQpXSl7Ci1wdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9KDB4YzErMTY2MS0weDczZSk7fXByaW50ZigKKygweDIzZisyOTA0LTB4ZDk1KV09PSgweDVjNCsyNDQ0LTB4ZjUwKXx8cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDIzNCs2MjA0LTB4MWE2ZSldPnB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MjNmKzkzNDktMHgyNmMzKV0peworcHREYlNhdmVEYXRhLT5jb25jYXRfc21zPSgweDExODQrMjYwNC0weDFiYjApO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU3XHg3Mlx4NjlceDc0XHg2NVx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg1NFx4NmZceDc0XHg2MVx4NmNceDQzXHg2Zlx4NzVceDZlXHg3NFx4M2FceDI1XHg2NFx4MmVceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDVmXHg3M1x4NmRceDczXHgzYVx4MjVceDY0XHgyZVx4NjNceDZmXHg2ZVx4NjNceDYxXHg3NFx4NWZceDY5XHg2ZVx4NjZceDZmXHg1Ylx4MzFceDVkXHgzYVx4MjVceDY0IiAiXG4iCi0saVRvdGFsQ291bnQscHREYlNhdmVEYXRhLT5jb25jYXRfc21zLHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bCi0oMHg2YjMrNzY4Mi0weDI0YjQpXSk7aWYoKDB4MTRhYysyMjM4LTB4MWQ2OSk9PXB0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcyl7aWYoCi1aVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYPHB0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4NzU3KzU3MjUtMHgxZGIzKV0peworLGlUb3RhbENvdW50LHB0RGJTYXZlRGF0YS0+Y29uY2F0X3NtcyxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDRlZis1OS0weDUyOSkKK10pO2lmKCgweDIwNzErMTI0MC0weDI1NDgpPT1wdERiU2F2ZURhdGEtPmNvbmNhdF9zbXMpe2lmKAorWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWDxwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweGRkNCs2MTE4LTB4MjViOSldKXsKIHJldHVybiBaVUZJX0ZBSUw7fWVsc2V7cmV0dXJuIHpVZmlTbXNfU3RvcmVDb25jYXRTbXNUb0RiKHB0RGJTYXZlRGF0YSwKIGFjRGJNZW1TdG9yZSk7fX1lbHNle3JldHVybiB6VWZpU21zX1N0b3JlTm9ybWFsU21zVG9EYihwdERiU2F2ZURhdGEsYWNEYk1lbVN0b3JlCiAsaVNtc0lkKTt9fVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19TZW5kT3V0U21zKFRfelVmaVNtc19EYlN0b3JlRGF0YSoKLXB0RGJTYXZlRGF0YSxpbnQgY2lkKXtpbnQgYXRSZXM9KDB4OWEyKzE4ODEtMHgxMGZiKTtpZihOVUxMPT1wdERiU2F2ZURhdGEpeworcHREYlNhdmVEYXRhLGludCBjaWQpe2ludCBhdFJlcz0oMHhhYTErNzIxNC0weDI2Y2YpO2lmKE5VTEw9PXB0RGJTYXZlRGF0YSl7CiByZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWlmKCFnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXtwdERiU2F2ZURhdGEtPnRhZz0KIFdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE7aWYoWlVGSV9TVUNDPT16VWZpU21zX1dyaXRlU21zVG9EYihwdERiU2F2ZURhdGEsCi1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4Zjc2KzI3NDMtMHgxYTJjKSkpe2dfelVmaVNtc19Nc2dSZWZlcisrO3B0RGJTYXZlRGF0YQorV01TX1NUT1JBR0VfVFlQRV9OVl9WMDEsLSgweGMwMSs0NTQ3LTB4MWRjMykpKXtnX3pVZmlTbXNfTXNnUmVmZXIrKztwdERiU2F2ZURhdGEKIC0+bXNnX3JlZj1nX3pVZmlTbXNfTXNnUmVmZXI7KHZvaWQpelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoZ196VWZpU21zX01zZ1JlZmVyKTt9Ci19ZWxzZXtDSEFSIHNlbmRmYWlsUmV0cnlbKDB4MTYyOCs5OTMtMHgxOWQ3KV09eygweDExM2MrMjIwMy0weDE5ZDcpfTtzY19jZmdfZ2V0KAotTlZfU0VOREZBSUxfUkVUUlksc2VuZGZhaWxSZXRyeSxzaXplb2Yoc2VuZGZhaWxSZXRyeSkpO2lmKCgweDExMjArODkzLTB4MTQ5ZCk9PQotc3RyY21wKCJceDMxIixzZW5kZmFpbFJldHJ5KSl7Z196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0oMHgzMTUrMzQwMS0weDEwNWIpO30KK31lbHNle0NIQVIgc2VuZGZhaWxSZXRyeVsoMHhjNjErNTc4OS0weDIyY2MpXT17KDB4ODUyKzMyNTUtMHgxNTA5KX07c2NfY2ZnX2dldCgKK05WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHgxZTgrODE3Mi0weDIxZDQpPT0KK3N0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2dfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk9KDB4MTI4NyszNzAyLTB4MjBmYSk7fQogYXRSZXM9elNtc19TZW5kQ21nc1JlcSgpO2lmKGF0UmVzIT1aU01TX1JFU1VMVF9PSyl7elNtc19SZWN2Q21nc0VycigpO31lbHNlewogelNtc19SZWN2Q21nc09rKCk7fX1yZXR1cm4gV01TX0NNRF9TVUNDRVNTO31pbnQgelVmaVNtc19TZW5kQ29uY2F0U21zKGludCBjaWQpewotaW50IGF0UmVzPSgweDY1MCszNzMyLTB4MTRlNCk7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnOworaW50IGF0UmVzPSgweDhjMis1ODIwLTB4MWY3ZSk7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnOwogVF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlNhdmVEYXRhO2ludCByZXN1bHQ9WlVGSV9GQUlMO2lmKGdfelVmaVNtc19Db25jYXRTbXMuCiBjdXJyZW50X3NlbmRpbmc+PWdfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnKXtyZXR1cm4gWlVGSV9GQUlMO31tZW1zZXQoKHZvaWQqKQotJnRDbGllbnRNc2csKDB4Zjk1KzQ3NTgtMHgyMjJiKSxzaXplb2YoVF96VWZpU21zX0NsaWVudE1zZykpO21lbXNldCgodm9pZCopJgotdERiU2F2ZURhdGEsKDB4YTBhKzU1MDUtMHgxZjhiKSxzaXplb2YodERiU2F2ZURhdGEpKTt6VWZpU21zX1NldFBkdURhdGEoJgorJnRDbGllbnRNc2csKDB4MjErMjMzMS0weDkzYyksc2l6ZW9mKFRfelVmaVNtc19DbGllbnRNc2cpKTttZW1zZXQoKHZvaWQqKSYKK3REYlNhdmVEYXRhLCgweDIxN2MrMTA1LTB4MjFlNSksc2l6ZW9mKHREYlNhdmVEYXRhKSk7elVmaVNtc19TZXRQZHVEYXRhKCYKIHRDbGllbnRNc2csJnREYlNhdmVEYXRhKTtpZighZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1Yyl7dERiU2F2ZURhdGEudGFnPQogV01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTsodm9pZCl6VWZpU21zX1dyaXRlU21zVG9EYigmdERiU2F2ZURhdGEsCi1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4MTNiZisxNTYwLTB4MTlkNikpO2dfelVmaVNtc19TZW5kRmFpbGVkQ291bnQrKzt9ZWxzZQote0NIQVIgc2VuZGZhaWxSZXRyeVsoMHhhYmYrNjkyMS0weDI1OTYpXT17KDB4NTZhKzYwMTgtMHgxY2VjKX07c2NfY2ZnX2dldCgKLU5WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHhhY2YrNjYzMy0weDI0YjgpPT0KLXN0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2dfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk9KDB4MjhjKzIwMTEtMHhhNjQpO30KK1dNU19TVE9SQUdFX1RZUEVfTlZfVjAxLC0oMHgyY2MrNjc1NS0weDFkMmUpKTtnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7fWVsc2V7CitDSEFSIHNlbmRmYWlsUmV0cnlbKDB4MjJjYisyODMtMHgyM2I0KV09eygweDErMTIxNy0weDRjMil9O3NjX2NmZ19nZXQoCitOVl9TRU5ERkFJTF9SRVRSWSxzZW5kZmFpbFJldHJ5LHNpemVvZihzZW5kZmFpbFJldHJ5KSk7aWYoKDB4NzE3KzY1My0weDlhNCk9PQorc3RyY21wKCJceDMxIixzZW5kZmFpbFJldHJ5KSl7Z196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0oMHgxMDgzKzM1MDYtMHgxZTMyKTt9CiBhdFJlcz16U21zX1NlbmRDbWdzUmVxKCk7aWYoYXRSZXMhPVpTTVNfUkVTVUxUX09LKXt6U21zX1JlY3ZDbWdzRXJyKCk7fWVsc2V7CiB6U21zX1JlY3ZDbWdzT2soKTt9fWdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nKys7aWYoZ196VWZpU21zX0NvbmNhdFNtcwogLmN1cnJlbnRfc2VuZGluZzxnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyl7aWYoZ196VWZpU21zX0NvbmNhdFNtcy5zbXNfbGVuPAotZ196VWZpU21zX1VuaXRMZW4qKGdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nKygweDIxYzMrMTA0OS0weDI1ZGIpKSl7CitnX3pVZmlTbXNfVW5pdExlbiooZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmcrKDB4NDkrMzUyLTB4MWE4KSkpewogZ196VWZpU21zX1VuaXRMZW49Z196VWZpU21zX0NvbmNhdFNtcy5zbXNfbGVuLWdfelVmaVNtc19Vbml0TGVuKgogZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc7fX1pZihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZz09CiBnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyYmIWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWMpe1RfelVmaVNtc19TdGF0dXNJbmZvIAotdFNlbmRTdGF0dXM7bWVtc2V0KCh2b2lkKikmdFNlbmRTdGF0dXMsKDB4OGMxKzQ1NDQtMHgxYTgxKSxzaXplb2YoCit0U2VuZFN0YXR1czttZW1zZXQoKHZvaWQqKSZ0U2VuZFN0YXR1cywoMHg3Yis3ODg2LTB4MWY0OSksc2l6ZW9mKAogVF96VWZpU21zX1N0YXR1c0luZm8pKTt0U2VuZFN0YXR1cy5lcnJfY29kZT1aVEVfU01TX0NNU19OT05FO3RTZW5kU3RhdHVzLgogc2VuZF9mYWlsZWRfY291bnQ9Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudDt0U2VuZFN0YXR1cy5kZWxldGVfZmFpbGVkX2NvdW50PQotKDB4NTMxKzc1ODItMHgyMmNmKTt0U2VuZFN0YXR1cy5jbWRfc3RhdHVzPVdNU19DTURfRkFJTEVEO3RTZW5kU3RhdHVzLmNtZD0KKygweDExNDArMjcyMS0weDFiZTEpO3RTZW5kU3RhdHVzLmNtZF9zdGF0dXM9V01TX0NNRF9GQUlMRUQ7dFNlbmRTdGF0dXMuY21kPQogV01TX1NNU19DTURfTVNHX1NFTkQ7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTZW5kU3RhdHVzKTtzY19jZmdfc2V0KAogTlZfU01TX1NFTkRfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7CiByZXR1cm4gWlVGSV9GQUlMO31pZighZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1Yyl7elVmaVNtc19TZW5kQ29uY2F0U21zKGNpZCk7fQotcmV0dXJuIHJlc3VsdDt9aW50IHpTdnJfc2VuZENtZ3MoVk9JRCl7aW50IGF0UmVzPSgweDMzYiszMjcwLTB4MTAwMSk7aW50IGk9Ci0oMHg4ZWQrNzM5LTB4YmQwKTthdFJlcz16U21zX1NlbmRDbWdzUmVxKCk7aWYoYXRSZXMhPVpTTVNfUkVTVUxUX09LKXtDSEFSIAotc2VuZGZhaWxSZXRyeVsoMHg0YjIrMjgzMi0weGY5MCldPXsoMHgxNjE4KzI5ODYtMHgyMWMyKX07c2NfY2ZnX2dldCgKLU5WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHg2OTkrMzcyOC0weDE1MjkpPT0KLXN0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2ZvcihpPSgweDE2NGErMTU4MC0weDFjNzYpO2k8U01TX1JFVFJZX0NPVU5UO2krKyl7CityZXR1cm4gcmVzdWx0O31pbnQgelN2cl9zZW5kQ21ncyhWT0lEKXtpbnQgYXRSZXM9KDB4MTNjNisxMDA4LTB4MTdiNik7aW50IGk9CisoMHhlNzUrNTc2OS0weDI0ZmUpO2F0UmVzPXpTbXNfU2VuZENtZ3NSZXEoKTtpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe0NIQVIgCitzZW5kZmFpbFJldHJ5WygweDEwOSs0NTkzLTB4MTJjOCldPXsoMHgxMTQ2KzIzNTgtMHgxYTdjKX07c2NfY2ZnX2dldCgKK05WX1NFTkRGQUlMX1JFVFJZLHNlbmRmYWlsUmV0cnksc2l6ZW9mKHNlbmRmYWlsUmV0cnkpKTtpZigoMHgxZTEzKzc0NC0weDIwZmIpPT0KK3N0cmNtcCgiXHgzMSIsc2VuZGZhaWxSZXRyeSkpe2ZvcihpPSgweGZhNis1MzczLTB4MjRhMyk7aTxTTVNfUkVUUllfQ09VTlQ7aSsrKXsKIGF0UmVzPXpTbXNfU2VuZENtZ3NSZXEoKTtpZihhdFJlcz09WlNNU19SRVNVTFRfT0spe2JyZWFrO319fX1yZXR1cm4gYXRSZXM7fQogVF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX1NlbmRTbXMoVk9JRCl7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnOwotVF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlNhdmVEYXRhO2ludCByZXM9KDB4MWQ5Yys1NjgtMHgxZmQ0KTtpZigtCi0oMHgyOWErMjM3MC0weGJkYik9PWdfelVmaVNtc19Vbml0TGVuKXtwcmludGYoCitUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU2F2ZURhdGE7aW50IHJlcz0oMHgxZjY1KzEwOTgtMHgyM2FmKTtpZigtCisoMHgzMzkrODY5OC0weDI1MzIpPT1nX3pVZmlTbXNfVW5pdExlbil7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4MjFceDIxXHgyMVx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDZkXHg3M1x4M2FceDIwXHg0ZVx4NmZceDIwXHg2M1x4NmZceDZlXHg3NFx4NjVceDZlXHg3NFx4MjFceDJlIiAiXG4iCiApO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9d2hpbGUoZ196VWZpU21zX0NvbmNhdFNtcy5jdXJyZW50X3NlbmRpbmc8Ci1nX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyl7bWVtc2V0KCh2b2lkKikmdENsaWVudE1zZywoMHhiNzArNTY5MC0weDIxYWEpLAotc2l6ZW9mKFRfelVmaVNtc19DbGllbnRNc2cpKTttZW1zZXQoKHZvaWQqKSZ0RGJTYXZlRGF0YSwoMHg5YWErMTUxMi0weGY5MiksCitnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyl7bWVtc2V0KCh2b2lkKikmdENsaWVudE1zZywoMHgxM2U0KzQzNzItMHgyNGY4KSwKK3NpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsKDB4MTcyMisyNTEwLTB4MjBmMCksCiBzaXplb2YodERiU2F2ZURhdGEpKTt6VWZpU21zX1NldFBkdURhdGEoJnRDbGllbnRNc2csJnREYlNhdmVEYXRhKTtpZighCiBnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjKXt0RGJTYXZlRGF0YS50YWc9V01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTsodm9pZCkKLXpVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTYXZlRGF0YSxXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4YjUrNDU4Ny0weDEyOWYpKTsKK3pVZmlTbXNfV3JpdGVTbXNUb0RiKCZ0RGJTYXZlRGF0YSxXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4ZWM4KzE5NzQtMHgxNjdkKSk7CiBnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7fWVsc2V7cmVzPXpTdnJfc2VuZENtZ3MoKTtpZihyZXMhPVpTTVNfUkVTVUxUX09LKXsKIHpTbXNfUmVjdkNtZ3NFcnIoKTt9ZWxzZXt6U21zX1JlY3ZDbWdzT2soKTt9fWdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nCiArKztpZihnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZzxnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZyl7aWYoCiBnX3pVZmlTbXNfQ29uY2F0U21zLnNtc19sZW48Z196VWZpU21zX1VuaXRMZW4qKGdfelVmaVNtc19Db25jYXRTbXMuCi1jdXJyZW50X3NlbmRpbmcrKDB4NWJmKzI3MDMtMHgxMDRkKSkpe2dfelVmaVNtc19Vbml0TGVuPWdfelVmaVNtc19Db25jYXRTbXMuCitjdXJyZW50X3NlbmRpbmcrKDB4MzFkKzU0OTUtMHgxODkzKSkpe2dfelVmaVNtc19Vbml0TGVuPWdfelVmaVNtc19Db25jYXRTbXMuCiBzbXNfbGVuLWdfelVmaVNtc19Vbml0TGVuKmdfelVmaVNtc19Db25jYXRTbXMuY3VycmVudF9zZW5kaW5nO319aWYoCiBnX3pVZmlTbXNfQ29uY2F0U21zLmN1cnJlbnRfc2VuZGluZz09Z196VWZpU21zX0NvbmNhdFNtcy50b3RhbF9tc2cmJiEKIGdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWMpe1RfelVmaVNtc19TdGF0dXNJbmZvIHRTZW5kU3RhdHVzO21lbXNldCgodm9pZCopJgotdFNlbmRTdGF0dXMsKDB4NjhjKzExNzAtMHhiMWUpLHNpemVvZihUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3RTZW5kU3RhdHVzLgordFNlbmRTdGF0dXMsKDB4NjRhKzgwNzAtMHgyNWQwKSxzaXplb2YoVF96VWZpU21zX1N0YXR1c0luZm8pKTt0U2VuZFN0YXR1cy4KIGVycl9jb2RlPVpURV9TTVNfQ01TX05PTkU7dFNlbmRTdGF0dXMuc2VuZF9mYWlsZWRfY291bnQ9Ci1nX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50O3RTZW5kU3RhdHVzLmRlbGV0ZV9mYWlsZWRfY291bnQ9KDB4NGFjKzI1ODktMHhlYzkpOworZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudDt0U2VuZFN0YXR1cy5kZWxldGVfZmFpbGVkX2NvdW50PSgweDc2KzUxODktMHgxNGJiKTsKIHRTZW5kU3RhdHVzLmNtZF9zdGF0dXM9V01TX0NNRF9GQUlMRUQ7dFNlbmRTdGF0dXMuY21kPVdNU19TTVNfQ01EX01TR19TRU5EOyh2b2lkCiApelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTZW5kU3RhdHVzKTtzY19jZmdfc2V0KE5WX1NNU19TRU5EX1JFU1VMVCwKICJceDY2XHg2MVx4NjlceDZjIik7c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7fX0KLSNpZiAoMHgxYTk4KzE4MjMtMHgyMWI3KQkNCi1pZihnX3pVZmlTbXNfQ29uY2F0U21zLnRvdGFsX21zZz4oMHgxMTdiKzQ0ODQtMHgyMmZlKSl7cHJpbnRmKAorI2lmICgweDEyZjUrMjQ2MS0weDFjOTIpCQ0KK2lmKGdfelVmaVNtc19Db25jYXRTbXMudG90YWxfbXNnPigweDVhYis1MDQwLTB4MTk1YSkpe3ByaW50ZigKICJceDNkXHgzZFx4M2RceDNkXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHgyZSIgIlxuIgotKTt6VWZpU21zX1NlbmRDb25jYXRTbXMoY2lkKTt9ZWxzZXttZW1zZXQoKHZvaWQqKSZ0Q2xpZW50TXNnLCgweGI5MysyNjU0LTB4MTVmMSkKLSxzaXplb2YoVF96VWZpU21zX0NsaWVudE1zZykpO21lbXNldCgodm9pZCopJnREYlNhdmVEYXRhLCgweDZiMCs2MTY1LTB4MWVjNSksCispO3pVZmlTbXNfU2VuZENvbmNhdFNtcyhjaWQpO31lbHNle21lbXNldCgodm9pZCopJnRDbGllbnRNc2csKDB4MTA3NSs0OTUtMHgxMjY0KQorLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsKDB4MWRkNCs3NjEtMHgyMGNkKSwKIHNpemVvZih0RGJTYXZlRGF0YSkpO3pVZmlTbXNfU2V0UGR1RGF0YSgmdENsaWVudE1zZywmdERiU2F2ZURhdGEpO3ByaW50ZigKICJceDNkXHgzZFx4M2RceDNkXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg2ZVx4NmZceDcyXHg2MVx4NmRceDZjXHg1M1x4NmRceDczXHgyZSIgIlxuIgogKTtpZihXTVNfQ01EX0ZBSUxFRD09elVmaVNtc19TZW5kT3V0U21zKCZ0RGJTYXZlRGF0YSxjaWQpKXtwcmludGYoCkBAIC02NzEsODAgKzY3MCw3OSBAQAogKTtnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50Kys7cmV0dXJuIFdNU19DTURfRkFJTEVEO319CiAjZW5kaWYNCiByZXR1cm4gV01TX0NNRF9TVUNDRVNTO31pbnQgelVmaVNtc19Gb3JtYXREZWxpdmVyVGltZXN0YW1wKFRfelVmaVNtc19EYXRlIHREYXRhLAotVF96VWZpU21zX1RpbWVTdGFtcCpwdFRpbWVzdGFtcCl7dW5zaWduZWQgY2hhciB0VGltZVpvbmVbKDB4YTk0KzM4MzEtMHgxOTg2KV09ewotKDB4N2U2KzIwNTEtMHhmZTkpfTtpbnQgdG1wX2k9KDB4MTFhNCs0NDk1LTB4MjMzMyk7bWVtc2V0KHB0VGltZXN0YW1wLAotKDB4NTMyKzU1NDItMHgxYWQ4KSxzaXplb2YoVF96VWZpU21zX1RpbWVTdGFtcCkpO2lmKHN0cmxlbih0RGF0YS55ZWFyKT09Ci0oMHgzNmMrNzg2NS0weDIyMjQpKXtwdFRpbWVzdGFtcC0+eWVhcj16VWZpU21zX2F0b2hleCgKLSgoY2hhcikoMHg4ZmYrMjUyMS0weDEyYTgpKSkqKDB4MjdjKzExOTYtMHg3MTgpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCi0oMHgzYys3MDgtMHgzMDApXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLnllYXIpPT0oMHg2NDkrODA0Mi0weDI1YjEpKXtwdFRpbWVzdGFtcAotLT55ZWFyPXpVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbKDB4MmExKzIwMTktMHhhODQpXSkqKDB4MWFkNCsyMDUzLTB4MjJjOSkrCi16VWZpU21zX2F0b2hleCh0RGF0YS55ZWFyWygweDFhYTUrNDExLTB4MWMzZildKTt9ZWxzZSBpZihzdHJsZW4odERhdGEueWVhcik9PQotKDB4MTYwNysxNDItMHgxNjkxKSl7cHRUaW1lc3RhbXAtPnllYXI9elVmaVNtc19hdG9oZXgodERhdGEueWVhclsKLSgweGIzZCs2NTEzLTB4MjRhYyldKSooMHgxOWQrNjQ4OS0weDFhZTYpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCi0oMHg5YzgrNzM1OC0weDI2ODMpXSk7fWVsc2V7cHJpbnRmKAotIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3OVx4NjVceDYxXHg3Mlx4MmUiKTtyZXR1cm4gWlVGSV9GQUlMO31pZigKLXN0cmxlbih0RGF0YS5tb250aCk9PSgweDIwNmIrMTAyMC0weDI0NjYpKXtwdFRpbWVzdGFtcC0+bW9udGg9elVmaVNtc19hdG9oZXgoCi0oKGNoYXIpKDB4ZmE4KzMyMDMtMHgxYmZiKSkpKigweDM2NisyMzQ1LTB4YzdmKSt6VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsKLSgweGY5NisyMDgwLTB4MTdiNildKTt9ZWxzZSBpZihzdHJsZW4odERhdGEubW9udGgpPT0oMHgxOGMzKzI5Ny0weDE5ZWEpKXsKLXB0VGltZXN0YW1wLT5tb250aD16VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsoMHgyNjMzKzExLTB4MjYzZSldKSoKLSgweDc3OCs2NTExLTB4MjBkNykrelVmaVNtc19hdG9oZXgodERhdGEubW9udGhbKDB4NmNkKzMyNC0weDgxMCldKTt9ZWxzZXtwcmludGYoCi0iXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDY0XHg2MVx4NzlceDJlIik7fWlmKHN0cmxlbih0RGF0YS5kYXkpPT0KLSgweDFmNDErNDY0LTB4MjExMCkpe3B0VGltZXN0YW1wLT5kYXk9elVmaVNtc19hdG9oZXgoCi0oKGNoYXIpKDB4MThkYSszMDcxLTB4MjRhOSkpKSooMHg2ZWIrNTUxMy0weDFjNjQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmRheVsKLSgweDIwY2IrMTUxNy0weDI2YjgpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLmRheSk9PSgweDEyNzcrNDA0Mi0weDIyM2YpKXsKLXB0VGltZXN0YW1wLT5kYXk9elVmaVNtc19hdG9oZXgodERhdGEuZGF5WygweDFkMSs3MC0weDIxNyldKSooMHgxNmM0KzE1Mi0weDE3NGMpCi0relVmaVNtc19hdG9oZXgodERhdGEuZGF5WygweDEyYjArMzUyNi0weDIwNzUpXSk7fWVsc2V7cHJpbnRmKAorVF96VWZpU21zX1RpbWVTdGFtcCpwdFRpbWVzdGFtcCl7dW5zaWduZWQgY2hhciB0VGltZVpvbmVbKDB4MTEzZis1NDIwLTB4MjY2NildPXsKKygweDVjMys0ODI1LTB4MTg5Yyl9O2ludCB0bXBfaT0oMHg4MzgrMzE5Ny0weDE0YjUpO21lbXNldChwdFRpbWVzdGFtcCwKKygweDExOSszMTg1LTB4ZDhhKSxzaXplb2YoVF96VWZpU21zX1RpbWVTdGFtcCkpO2lmKHN0cmxlbih0RGF0YS55ZWFyKT09CisoMHhmNCs2MTI3LTB4MThlMikpe3B0VGltZXN0YW1wLT55ZWFyPXpVZmlTbXNfYXRvaGV4KCgoY2hhcikoMHg0MTgrMjkzMS0weGY1YikpKQorKigweDk2ZCs0MTE1LTB4MTk3MCkrelVmaVNtc19hdG9oZXgodERhdGEueWVhclsoMHhiYjUrNDI3OS0weDFjNmMpXSk7fWVsc2UgaWYoCitzdHJsZW4odERhdGEueWVhcik9PSgweGM3Mys1NjEzLTB4MjI1ZSkpe3B0VGltZXN0YW1wLT55ZWFyPXpVZmlTbXNfYXRvaGV4KHREYXRhLgoreWVhclsoMHgxYWMrMzExNS0weGRkNyldKSooMHg2OTUrNzg1MS0weDI1MzApK3pVZmlTbXNfYXRvaGV4KHREYXRhLnllYXJbCisoMHgxMjAzKzMyNjMtMHgxZWMxKV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS55ZWFyKT09KDB4MTcwNiszNDkzLTB4MjRhNykpeworcHRUaW1lc3RhbXAtPnllYXI9elVmaVNtc19hdG9oZXgodERhdGEueWVhclsoMHg4MSs0NTg0LTB4MTI2NyldKSoKKygweDk5YSs2NzQ5LTB4MjNlNykrelVmaVNtc19hdG9oZXgodERhdGEueWVhclsoMHhjNzkrNjAzMy0weDI0MDcpXSk7fWVsc2V7cHJpbnRmCisoIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3OVx4NjVceDYxXHg3Mlx4MmUiKTtyZXR1cm4gWlVGSV9GQUlMO31pZigKK3N0cmxlbih0RGF0YS5tb250aCk9PSgweDEwNSsxNDk1LTB4NmRiKSl7cHRUaW1lc3RhbXAtPm1vbnRoPXpVZmlTbXNfYXRvaGV4KAorKChjaGFyKSgweDgyZCs3ODktMHhiMTIpKSkqKDB4ZTg5KzQzMDEtMHgxZjQ2KSt6VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsKKygweDc5Nis0MTUzLTB4MTdjZildKTt9ZWxzZSBpZihzdHJsZW4odERhdGEubW9udGgpPT0oMHgyMjA3KzYwNS0weDI0NjIpKXsKK3B0VGltZXN0YW1wLT5tb250aD16VWZpU21zX2F0b2hleCh0RGF0YS5tb250aFsoMHgyMTQrODUyMS0weDIzNWQpXSkqCisoMHgzNGMrMTg0Ny0weGE3MykrelVmaVNtc19hdG9oZXgodERhdGEubW9udGhbKDB4MThhNis4MDAtMHgxYmM1KV0pO31lbHNle3ByaW50ZgorKCJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NjRceDYxXHg3OVx4MmUiKTt9aWYoc3RybGVuKHREYXRhLmRheSk9PQorKDB4NmUzKzIwNzMtMHhlZmIpKXtwdFRpbWVzdGFtcC0+ZGF5PXpVZmlTbXNfYXRvaGV4KCgoY2hhcikoMHgxNDYwKzg0My0weDE3N2IpKSkKKyooMHgxNzkwKzI5NDItMHgyMmZlKSt6VWZpU21zX2F0b2hleCh0RGF0YS5kYXlbKDB4MjI1OCsxMDY2LTB4MjY4MildKTt9ZWxzZSBpZigKK3N0cmxlbih0RGF0YS5kYXkpPT0oMHg5OWIrMTIxMS0weGU1NCkpe3B0VGltZXN0YW1wLT5kYXk9elVmaVNtc19hdG9oZXgodERhdGEuZGF5CitbKDB4ODY1KzQ1ODktMHgxYTUyKV0pKigweDM2ZCsxMzItMHgzZTEpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmRheVsKKygweDZkNCs3MDA2LTB4MjIzMSldKTt9ZWxzZXtwcmludGYoCiAiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDY0XHg2MVx4NzlceDJlIik7fWlmKHN0cmxlbih0RGF0YS5ob3VyKT09Ci0oMHgzKzM1MzQtMHhkZDApKXtwdFRpbWVzdGFtcC0+aG91cj16VWZpU21zX2F0b2hleCgoKGNoYXIpKDB4ODM5KzczNTYtMHgyNGM1KSkpKgotKDB4NDEwKzU3NDctMHgxYTczKSt6VWZpU21zX2F0b2hleCh0RGF0YS5ob3VyWygweDIyNTMrMTAwMS0weDI2M2MpXSk7fWVsc2UgaWYoCi1zdHJsZW4odERhdGEuaG91cik9PSgweDlhNCs2MzUzLTB4MjI3Mykpe3B0VGltZXN0YW1wLT5ob3VyPXpVZmlTbXNfYXRvaGV4KHREYXRhLgotaG91clsoMHgxZDc3KzEyMDAtMHgyMjI3KV0pKigweGRkNSsyMTQ3LTB4MTYyOCkrelVmaVNtc19hdG9oZXgodERhdGEuaG91clsKLSgweDE1Y2YrMTQ5MS0weDFiYTEpXSk7fWVsc2V7cHJpbnRmKAorKDB4NmEyKzU0NzktMHgxYzA4KSl7cHRUaW1lc3RhbXAtPmhvdXI9elVmaVNtc19hdG9oZXgoCisoKGNoYXIpKDB4YTNjKzU5NTUtMHgyMTRmKSkpKigweDFhNmYrMTYyOS0weDIwYmMpK3pVZmlTbXNfYXRvaGV4KHREYXRhLmhvdXJbCisoMHgxNzYwKzc2Ny0weDFhNWYpXSk7fWVsc2UgaWYoc3RybGVuKHREYXRhLmhvdXIpPT0oMHhiMDMrNjUwOC0weDI0NmQpKXsKK3B0VGltZXN0YW1wLT5ob3VyPXpVZmlTbXNfYXRvaGV4KHREYXRhLmhvdXJbKDB4MWNmZisyMjc5LTB4MjVlNildKSoKKygweDU1Zis0NDYzLTB4MTZiZSkrelVmaVNtc19hdG9oZXgodERhdGEuaG91clsoMHgxNDRkKzIxLTB4MTQ2MSldKTt9ZWxzZXtwcmludGYoCiAiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDY4XHg2Zlx4NzVceDcyXHgyZSIpO31pZihzdHJsZW4odERhdGEubWluKT09Ci0oMHgxMWIyKzE3OTUtMHgxOGI0KSl7cHRUaW1lc3RhbXAtPm1pbnV0ZT16VWZpU21zX2F0b2hleCgKLSgoY2hhcikoMHhiN2YrNDUyMy0weDFjZmEpKSkqKDB4MTE4Mis0NjgxLTB4MjNiYikrelVmaVNtc19hdG9oZXgodERhdGEubWluWwotKDB4MmVjKzQ3MDItMHgxNTRhKV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS5taW4pPT0oMHgxNDE2KzEyMTItMHgxOGQwKSl7Ci1wdFRpbWVzdGFtcC0+bWludXRlPXpVZmlTbXNfYXRvaGV4KHREYXRhLm1pblsoMHgxZDcwKzU3MS0weDFmYWIpXSkqCi0oMHg0OTMrMTM3Mi0weDlkZikrelVmaVNtc19hdG9oZXgodERhdGEubWluWygweGM3MCs2NDYxLTB4MjVhYyldKTt9ZWxzZXtwcmludGYoCisoMHgxOTc2KzMyMjgtMHgyNjExKSl7cHRUaW1lc3RhbXAtPm1pbnV0ZT16VWZpU21zX2F0b2hleCgKKygoY2hhcikoMHgxYzJhKzkwNy0weDFmODUpKSkqKDB4M2I4KzMwOC0weDRkYykrelVmaVNtc19hdG9oZXgodERhdGEubWluWworKDB4MTllYiszMjIzLTB4MjY4MildKTt9ZWxzZSBpZihzdHJsZW4odERhdGEubWluKT09KDB4OTYxKzYwNTMtMHgyMTA0KSl7CitwdFRpbWVzdGFtcC0+bWludXRlPXpVZmlTbXNfYXRvaGV4KHREYXRhLm1pblsoMHhlMjYrNTI2Mi0weDIyYjQpXSkqCisoMHg3Nis0NzUtMHgyNDEpK3pVZmlTbXNfYXRvaGV4KHREYXRhLm1pblsoMHgxODc1KzM1NzYtMHgyNjZjKV0pO31lbHNle3ByaW50ZigKICJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NmRceDY5XHg2ZVx4NzVceDc0XHg2NVx4MmUiKTt9aWYoc3RybGVuKHREYXRhCi0uc2VjKT09KDB4NTNiKzYzNi0weDdiNikpe3B0VGltZXN0YW1wLT5zZWNvbmQ9elVmaVNtc19hdG9oZXgoCi0oKGNoYXIpKDB4NTY5KzgzNDItMHgyNWNmKSkpKigweGM0ZiszNjMxLTB4MWE2ZSkrelVmaVNtc19hdG9oZXgodERhdGEuc2VjWwotKDB4MTMzZCsyMDYtMHgxNDBiKV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS5zZWMpPT0oMHgxNWI2KzE1OTEtMHgxYmViKSl7Ci1wdFRpbWVzdGFtcC0+c2Vjb25kPXpVZmlTbXNfYXRvaGV4KHREYXRhLnNlY1soMHg0NDYrMTcyOS0weGIwNyldKSoKLSgweDE2ZjMrMzIzMy0weDIzODQpK3pVZmlTbXNfYXRvaGV4KHREYXRhLnNlY1soMHhjZTMrMzEzMy0weDE5MWYpXSk7fWVsc2V7cHJpbnRmCi0oIlx4NzVceDZlXHg2Ylx4NmVceDZmXHg3N1x4NmVceDIwXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZSIpO310bXBfaT1hdG9pKAotdERhdGEudGltZXpvbmUpO2lmKHRtcF9pPElOVF9NSU4rKDB4OTQzKzU2NDctMHgxZjUxKXx8dG1wX2k+SU5UX01BWC0KLSgweDEyYjIrMjg2OC0weDFkZTUpKXtwcmludGYoCisuc2VjKT09KDB4NTQyKzkwNS0weDhjYSkpe3B0VGltZXN0YW1wLT5zZWNvbmQ9elVmaVNtc19hdG9oZXgoCisoKGNoYXIpKDB4NTkrNDEyNi0weDEwNDcpKSkqKDB4MTRmMCsxMTc4LTB4MTk3YSkrelVmaVNtc19hdG9oZXgodERhdGEuc2VjWworKDB4MWE1KzYzOTEtMHgxYTljKV0pO31lbHNlIGlmKHN0cmxlbih0RGF0YS5zZWMpPT0oMHg0NjErMTExOC0weDhiZCkpeworcHRUaW1lc3RhbXAtPnNlY29uZD16VWZpU21zX2F0b2hleCh0RGF0YS5zZWNbKDB4NzY5KzY5MTEtMHgyMjY4KV0pKgorKDB4MTNmYyszODEtMHgxNTY5KSt6VWZpU21zX2F0b2hleCh0RGF0YS5zZWNbKDB4MzE4KzU1ODEtMHgxOGU0KV0pO31lbHNle3ByaW50ZigKKyJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmUiKTt9dG1wX2k9YXRvaSgKK3REYXRhLnRpbWV6b25lKTtpZih0bXBfaTxJTlRfTUlOKygweDJkMis3OTE1LTB4MjFiYyl8fHRtcF9pPklOVF9NQVgtCisoMHhjNTMrNTE4My0weDIwOTEpKXtwcmludGYoCiAiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDc0XHg0NFx4NjFceDc0XHg2MVx4MjBceDc0XHg2OVx4NmRceDY1XHg3YVx4NmZceDZlXHg2NVx4M2FceDI1XHg2NFx4MmUiICJcbiIKLSx0bXBfaSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHRUaW1lWm9uZSwoMHgyNDYwKzIyLTB4MjQ3Niksc2l6ZW9mKHRUaW1lWm9uZSkpCi07c25wcmludGYodFRpbWVab25lLHNpemVvZih0VGltZVpvbmUpLCJceDI1XHg2NCIsdG1wX2kqKDB4MWFhKzg3MTQtMHgyM2IwKSk7aWYoCi10RGF0YS50aW1lem9uZVsoMHgxMjJkKzIyMDgtMHgxYWNkKV09PSgoY2hhcikoMHhlMDQrNDIzOS0weDFlNjYpKSl7aWYoc3RybGVuKAotdFRpbWVab25lKT09KDB4NTIwKzU3MTAtMHgxYjZjKSl7cHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KAotKChjaGFyKSgweDg2YSsxMjM4LTB4ZDEwKSkpKigweDhkZisxNDIxLTB4ZTVjKSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbCi0oMHgxZjYrNTc5My0weDE4OTYpXSk7fWVsc2UgaWYoc3RybGVuKHRUaW1lWm9uZSk9PSgweDEwMjQrMTg1Ni0weDE3NjEpKXsKLXB0VGltZXN0YW1wLT50aW1lem9uZT16VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4MWYxYisyMDI3LTB4MjcwNSldKSoKLSgweGFhOCszNTI2LTB4MTg2NCkrelVmaVNtc19hdG9oZXgodFRpbWVab25lWygweDMxNyszMDU1LTB4ZjA0KV0pO31lbHNle3ByaW50ZigKKyx0bXBfaSk7cmV0dXJuIFpVRklfRkFJTDt9bWVtc2V0KHRUaW1lWm9uZSwoMHg1YTMrNjI5LTB4ODE4KSxzaXplb2YodFRpbWVab25lKSk7CitzbnByaW50Zih0VGltZVpvbmUsc2l6ZW9mKHRUaW1lWm9uZSksIlx4MjVceDY0Iix0bXBfaSooMHg5MDMrNjI0MS0weDIxNjApKTtpZigKK3REYXRhLnRpbWV6b25lWygweDNmYSs3MDIwLTB4MWY2NildPT0oKGNoYXIpKDB4OGY2KzM4MjItMHgxN2I3KSkpe2lmKHN0cmxlbigKK3RUaW1lWm9uZSk9PSgweDE1MzQrMTE2Ny0weDE5YzEpKXtwdFRpbWVzdGFtcC0+dGltZXpvbmU9elVmaVNtc19hdG9oZXgoCisoKGNoYXIpKDB4ZTQ5KzI3ODEtMHgxOGY2KSkpKigweDQxMis2OTk5LTB4MWY1OSkrelVmaVNtc19hdG9oZXgodFRpbWVab25lWworKDB4MTFjNCsxNDI2LTB4MTc1NSldKTt9ZWxzZSBpZihzdHJsZW4odFRpbWVab25lKT09KDB4OGNhKzM5NTItMHgxODM3KSl7CitwdFRpbWVzdGFtcC0+dGltZXpvbmU9elVmaVNtc19hdG9oZXgodFRpbWVab25lWygweDc5ZisxNjkwLTB4ZTM4KV0pKgorKDB4OWMzKzUyNDYtMHgxZTM3KSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbKDB4YWNiKzU3Ny0weGQwYSldKTt9ZWxzZXtwcmludGYoCiAiXHg3NVx4NmVceDZiXHg2ZVx4NmZceDc3XHg2ZVx4MjBceDJkXHg3NFx4NjlceDZkXHg2NVx4N2FceDZmXHg2ZVx4NjVceDJlIik7fQotcHRUaW1lc3RhbXAtPnRpbWV6b25lPSgweDIwNjErNzk0LTB4MjM3YiktcHRUaW1lc3RhbXAtPnRpbWV6b25lO31lbHNle2lmKHN0cmxlbigKLXRUaW1lWm9uZSk9PSgweDEyZDgrNzEyLTB4MTU5Zikpe3B0VGltZXN0YW1wLT50aW1lem9uZT16VWZpU21zX2F0b2hleCgKLSgoY2hhcikoMHgyMDUyKzE0NjMtMHgyNWQ5KSkpKigweDVkZCsxMjIxLTB4YTkyKSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbCi0oMHg2OTcrNTk1Ni0weDFkZGIpXSk7fWVsc2UgaWYoc3RybGVuKHRUaW1lWm9uZSk9PSgweDEwMTErOTg4LTB4MTNlYikpewotcHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KHRUaW1lWm9uZVsoMHgyYmQrNDYxMi0weDE0YzEpXSkqCi0oMHg5YzgrNjU2MC0weDIzNWUpK3pVZmlTbXNfYXRvaGV4KHRUaW1lWm9uZVsoMHg2ZDkrMTk0NC0weGU3MCldKTt9ZWxzZXtwcmludGYoCitwdFRpbWVzdGFtcC0+dGltZXpvbmU9KDB4YzY0KzQ0NDYtMHgxZGMyKS1wdFRpbWVzdGFtcC0+dGltZXpvbmU7fWVsc2V7aWYoc3RybGVuKAordFRpbWVab25lKT09KDB4YjY4KzUyNzctMHgyMDA0KSl7cHRUaW1lc3RhbXAtPnRpbWV6b25lPXpVZmlTbXNfYXRvaGV4KAorKChjaGFyKSgweDFkYzErOTY3LTB4MjE1OCkpKSooMHg0ZDIrMTQ4LTB4NTU2KSt6VWZpU21zX2F0b2hleCh0VGltZVpvbmVbCisoMHgyNTc0KzY0LTB4MjViNCldKTt9ZWxzZSBpZihzdHJsZW4odFRpbWVab25lKT09KDB4MjcxKzM1MTQtMHgxMDI5KSl7CitwdFRpbWVzdGFtcC0+dGltZXpvbmU9elVmaVNtc19hdG9oZXgodFRpbWVab25lWygweGU5ZisxNTQ5LTB4MTRhYyldKSoKKygweDIwYTMrMTUxOS0weDI2ODgpK3pVZmlTbXNfYXRvaGV4KHRUaW1lWm9uZVsoMHg2OGYrMzQyLTB4N2U0KV0pO31lbHNle3ByaW50ZigKICJceDc1XHg2ZVx4NmJceDZlXHg2Zlx4NzdceDZlXHgyMFx4MmJceDc0XHg2OVx4NmRceDY1XHg3YVx4NmZceDZlXHg2NVx4MmUiKTt9fQogcmV0dXJuIFpVRklfU1VDQzt9dm9pZCB6VWZpU21zX0ZpbGxEZWxpdmVyKFRfelVmaVNtc19EZWxpdmVyUGR1KmRlbGl2ZXIsCiBUX3pVZmlTbXNfQ29uY2F0SW5mbypjb25jYXRfc21zLFRfelVmaVNtc19EYlN0b3JlRGF0YSpwdERiU2F2ZURhdGEpe3N0YXRpYyAKLVVJTlQxNiBtc2dfcmVmPSgweGI1NSs0MDAtMHhjZTUpO2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1UUlVFO2lmKAotKDB4OTkrNjYzNi0weDFhODUpPT1jb25jYXRfc21zLT5jdXJyZW50X3NlbmRpbmcpe2dfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2UrKzsKLSh2b2lkKXpVZmlTbXNfU2V0Q29uY2F0TWF4UmVmZXIoZ196VWZpU21zX0NvbmNhdFNtc1JlZmVyZW5jZSk7fWRlbGl2ZXItPgotdXNlcl9kYXRhX2hlYWRlcl9wcmVzZW50PVRSVUU7ZGVsaXZlci0+dXNlcl9kYXRhLm51bV9oZWFkZXJzPSgweDQ0Mys4ODgtMHg3YmEpOwotZGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbKDB4MTg4MSsyMjg3LTB4MjE3MCldLmhlYWRlcl9pZD1XTVNfVURIX0NPTkNBVF84OwotZGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbKDB4ODQ5KzIyMjctMHgxMGZjKV0udS5jb25jYXRfOC5tc2dfcmVmPW1zZ19yZWY7Ci1kZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgxYzJmKzE5NjMtMHgyM2RhKV0udS5jb25jYXRfOC50b3RhbF9zbT1jb25jYXRfc21zCi0tPnRvdGFsX21zZztkZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgzMmMrMjE4Mi0weGJiMildLnUuY29uY2F0Xzguc2VxX251bT0KLWNvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZysoMHg1N2IrNzkzMC0weDI0NzQpO3B0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcz0KLSgweDFkNTMrMjMwLTB4MWUzOCk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg1MGIrMzI0Ni0weDExYjkpXT1tc2dfcmVmO312b2lkCi0gelVmaVNtc19GaWxsRGVsaXZlclBkdShUX3pVZmlTbXNfRGVsaXZlclBkdSpwdERlbGl2ZXIsVF96VWZpU21zX0NvbmNhdEluZm8qCitVSU5UMTYgbXNnX3JlZj0oMHg1ZDIrNTUzMC0weDFiNmMpO2RlbGl2ZXItPnVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1UUlVFO2lmKAorKDB4MjQ2NSs2NjYtMHgyNmZmKT09Y29uY2F0X3Ntcy0+Y3VycmVudF9zZW5kaW5nKXtnX3pVZmlTbXNfQ29uY2F0U21zUmVmZXJlbmNlKysKKzsodm9pZCl6VWZpU21zX1NldENvbmNhdE1heFJlZmVyKGdfelVmaVNtc19Db25jYXRTbXNSZWZlcmVuY2UpO31kZWxpdmVyLT4KK3VzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1UUlVFO2RlbGl2ZXItPnVzZXJfZGF0YS5udW1faGVhZGVycz0oMHgyMGYzKzUzMS0weDIzMDUpCis7ZGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbKDB4YmUzKzU3MTYtMHgyMjM3KV0uaGVhZGVyX2lkPVdNU19VREhfQ09OQ0FUXzg7CitkZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgxNCs1OTQyLTB4MTc0YSldLnUuY29uY2F0XzgubXNnX3JlZj1tc2dfcmVmOworZGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbKDB4OTUwKzIwNjYtMHgxMTYyKV0udS5jb25jYXRfOC50b3RhbF9zbT1jb25jYXRfc21zLT4KK3RvdGFsX21zZztkZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1soMHgxMjIzKzIwMTQtMHgxYTAxKV0udS5jb25jYXRfOC5zZXFfbnVtPQorY29uY2F0X3Ntcy0+Y3VycmVudF9zZW5kaW5nKygweDE3NCs3MzkxLTB4MWU1Mik7cHREYlNhdmVEYXRhLT5jb25jYXRfc21zPQorKDB4ZTA0KzQ4Ni0weGZlOSk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHg3YWQrNjM4LTB4YTJiKV09bXNnX3JlZjt9dm9pZCAKK3pVZmlTbXNfRmlsbERlbGl2ZXJQZHUoVF96VWZpU21zX0RlbGl2ZXJQZHUqcHREZWxpdmVyLFRfelVmaVNtc19Db25jYXRJbmZvKgogY29uY2F0X3NtcyxUX3pVZmlTbXNfR3JvdXBJbmZvKmdyb3VwX3NtcyxpbnQgaVNtc0xlbixUX3pVZmlTbXNfRGJTdG9yZURhdGEqCiBwdERiU2F2ZURhdGEpe2lmKE5VTEw9PWNvbmNhdF9zbXN8fE5VTEw9PWdyb3VwX3Ntcyl7cmV0dXJuO31wdERlbGl2ZXItPm1vcmU9CiBGQUxTRTtwdERlbGl2ZXItPnJlcGx5X3BhdGhfcHJlc2VudD1GQUxTRTtwdERlbGl2ZXItPnN0YXR1c19yZXBvcnRfZW5hYmxlZD0KQEAgLTc1MiwyMiArNzUwLDIyIEBACiBkY3MubXNnX2NsYXNzPVdNU19NRVNTQUdFX0NMQVNTX05PTkU7cHREZWxpdmVyLT5kY3MuaXNfY29tcHJlc3NlZD1GQUxTRTtpZigKIGdfelVmaVNtc19EY3M9PURDU19BU0Mpe3B0RGVsaXZlci0+ZGNzLmFscGhhYmV0PVdNU19HV19BTFBIQUJFVF83X0JJVF9ERUZBVUxUO30KIGVsc2V7cHREZWxpdmVyLT5kY3MuYWxwaGFiZXQ9V01TX0dXX0FMUEhBQkVUX1VDUzI7fWlmKGNvbmNhdF9zbXMtPnRvdGFsX21zZz4KLSgweDEzZTIrMjAzLTB4MTRhYykpe3pVZmlTbXNfRmlsbERlbGl2ZXIocHREZWxpdmVyLGNvbmNhdF9zbXMscHREYlNhdmVEYXRhKTsKLXB0RGJTYXZlRGF0YS0+Y29uY2F0X3Ntcz0oMHgxY2Q2KzE5MDUtMHgyNDQ2KTtwdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWwotKDB4M2RjKzYwMzUtMHgxYjZkKV09Y29uY2F0X3Ntcy0+Y3VycmVudF9zZW5kaW5nKygweDEwMjErMTMzMC0weDE1NTIpOwotcHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1soMHhkMTkrMzMwMS0weDE5ZmQpXT1jb25jYXRfc21zLT50b3RhbF9tc2c7Ci1wdERiU2F2ZURhdGEtPmNvbmNhdF9pbmZvWygweDZmMis1NjYxLTB4MWQwZildPXB0RGVsaXZlci0+dXNlcl9kYXRhLmhlYWRlcnNbCi0oMHgzOTYrODc3My0weDI1ZGIpXS51LmNvbmNhdF84Lm1zZ19yZWY7fWVsc2V7cHREZWxpdmVyLT4KKygweDYyYis1MzgtMHg4NDQpKXt6VWZpU21zX0ZpbGxEZWxpdmVyKHB0RGVsaXZlcixjb25jYXRfc21zLHB0RGJTYXZlRGF0YSk7CitwdERiU2F2ZURhdGEtPmNvbmNhdF9zbXM9KDB4OTkzKzgxNS0weGNjMSk7cHREYlNhdmVEYXRhLT5jb25jYXRfaW5mb1sKKygweDE4M2IrMTQyNy0weDFkY2MpXT1jb25jYXRfc21zLT5jdXJyZW50X3NlbmRpbmcrKDB4ZGU0KzYyNjAtMHgyNjU3KTsKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4MTBkMysyMDk0LTB4MTkwMCldPWNvbmNhdF9zbXMtPnRvdGFsX21zZzsKK3B0RGJTYXZlRGF0YS0+Y29uY2F0X2luZm9bKDB4YzJhKzMxODMtMHgxODk5KV09cHREZWxpdmVyLT51c2VyX2RhdGEuaGVhZGVyc1sKKygweDExZTgrMjAyMy0weDE5Y2YpXS51LmNvbmNhdF84Lm1zZ19yZWY7fWVsc2V7cHREZWxpdmVyLT4KIHVzZXJfZGF0YV9oZWFkZXJfcHJlc2VudD1GQUxTRTtwdERlbGl2ZXItPnVzZXJfZGF0YS5udW1faGVhZGVycz0KLSgweDEyNGMrNDk5OS0weDI1ZDMpO31wdERlbGl2ZXItPnVzZXJfZGF0YS5zbV9sZW49aVNtc0xlbjttZW1jcHkocHREZWxpdmVyLT4KKygweDQxNys4MTM3LTB4MjNlMCk7fXB0RGVsaXZlci0+dXNlcl9kYXRhLnNtX2xlbj1pU21zTGVuO21lbWNweShwdERlbGl2ZXItPgogdXNlcl9kYXRhLnNtX2RhdGEsY29uY2F0X3Ntcy0+bXNnX2NvbnRlbnRzW2NvbmNhdF9zbXMtPmN1cnJlbnRfc2VuZGluZ10saVNtc0xlbikKLTtpZihncm91cF9zbXMtPnJlY2VpdmVyc1tncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdWygweDEwODIrMjgyNS0weDFiOGIpXT09Ci0oKGNoYXIpKDB4MTZkNiszNzMtMHgxODIwKSkpeyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWwotZ3JvdXBfc21zLT5jdXJyZW50X3JlY2VpdmVyXSsoMHg1MjYrODIwMC0weDI1MmQpLHN0cmxlbihncm91cF9zbXMtPnJlY2VpdmVyc1sKLWdyb3VwX3Ntcy0+Y3VycmVudF9yZWNlaXZlcl0pLSgweDE3YWMrMzQ4MS0weDI1NDQpLHB0RGVsaXZlci0+YWRkcmVzcy5kaWdpdHMpOworO2lmKGdyb3VwX3Ntcy0+cmVjZWl2ZXJzW2dyb3VwX3Ntcy0+Y3VycmVudF9yZWNlaXZlcl1bKDB4MTQ4Kzg5MzQtMHgyNDJlKV09PQorKChjaGFyKSgweDUxYSs3NDM1LTB4MjFmYSkpKXsodm9pZCl6VWZpU21zX0NoYXJUb0ludChncm91cF9zbXMtPnJlY2VpdmVyc1sKK2dyb3VwX3Ntcy0+Y3VycmVudF9yZWNlaXZlcl0rKDB4NzhiKzMxNDUtMHgxM2QzKSxzdHJsZW4oZ3JvdXBfc21zLT5yZWNlaXZlcnNbCitncm91cF9zbXMtPmN1cnJlbnRfcmVjZWl2ZXJdKS0oMHgxN2YyKzgyMC0weDFiMjUpLHB0RGVsaXZlci0+YWRkcmVzcy5kaWdpdHMpOwogcHREZWxpdmVyLT5hZGRyZXNzLm51bWJlcl90eXBlPVdNU19OVU1CRVJfSU5URVJOQVRJT05BTDtwdERlbGl2ZXItPmFkZHJlc3MuCiBudW1iZXJfb2ZfZGlnaXRzPShVSU5UOClzdHJsZW4oZ3JvdXBfc21zLT5yZWNlaXZlcnNbZ3JvdXBfc21zLT5jdXJyZW50X3JlY2VpdmVyXQotKS0oMHhjNDkrMTg1MS0weDEzODMpO31lbHNleyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWworKS0oMHgyZDQrODA0MC0weDIyM2IpO31lbHNleyh2b2lkKXpVZmlTbXNfQ2hhclRvSW50KGdyb3VwX3Ntcy0+cmVjZWl2ZXJzWwogZ3JvdXBfc21zLT5jdXJyZW50X3JlY2VpdmVyXSxzdHJsZW4oZ3JvdXBfc21zLT5yZWNlaXZlcnNbZ3JvdXBfc21zLT4KIGN1cnJlbnRfcmVjZWl2ZXJdKSxwdERlbGl2ZXItPmFkZHJlc3MuZGlnaXRzKTtwdERlbGl2ZXItPmFkZHJlc3MubnVtYmVyX3R5cGU9CiBXTVNfTlVNQkVSX1VOS05PV047cHREZWxpdmVyLT5hZGRyZXNzLm51bWJlcl9vZl9kaWdpdHM9KFVJTlQ4KXN0cmxlbihncm91cF9zbXMtPgpAQCAtNzgwLDcgKzc3OCw3IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2MVx4NzZceDY1XHg0M1x4NmZceDZlXHg2M1x4NjFceDc0XHg1M1x4NmRceDczXHgyMFx4NmRceDY1XHg2ZFx4NWZceDczXHg3NFx4NmZceDcyXHg2NVx4M2RceDI1XHg2NFx4MjhceDRlXHg1Nlx4M2RceDNkXHgzMFx4MzFceDI5IiAiXG4iCiAscHRTYXZlU21zLT5tZW1fc3RvcmUpO2lmKHB0U2F2ZVNtcy0+bWVtX3N0b3JlPT1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMSl7aWYoCiBaVUZJX0ZBSUw9PXpVZmlTbXNfV3JpdGVTbXNUb0RiKHB0RGJTYXZlRGF0YSxXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtCi0oMHgyMDVhKzEzMDYtMHgyNTczKSkpe2F0X3ByaW50KExPR19FUlIsCisoMHgxZjU5KzE0MTQtMHgyNGRlKSkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg3N1x4NzJceDY5XHg3NFx4NjVceDIwXHg3M1x4NmRceDczXHgyMFx4NzRceDZmXHgyMFx4NmVceDc2XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiCiApO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWVsc2V7cmV0dXJuIFdNU19DTURfRkFJTEVEO31nX3pVZmlTbXNfTXNnUmVmZXIrKzsKIHB0RGJTYXZlRGF0YS0+bXNnX3JlZj1nX3pVZmlTbXNfTXNnUmVmZXI7KHZvaWQpelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoCkBAIC03OTYsMTkgKzc5NCwxOSBAQAogLFRfelVmaVNtc19Hcm91cEluZm8qcHRHcm91cFNtcyxpbnQgaVNtc0xlbmd0aCl7VF96VWZpU21zX0NsaWVudFRzRGF0YSAKIHRDbGllbnRUc0RhdGE7VF96VWZpU21zX0NsaWVudE1zZyB0Q2xpZW50TXNnO1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTYXZlRGF0YTsKIFRfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PVdNU19DTURfU1VDQ0VTUztpbnQgY3VycmVudF9zZW5kaW5nPQotKDB4YTkrNTgwNS0weDE3NTYpO2lmKE5VTEw9PXB0U2F2ZVNtc3x8TlVMTD09cHRDb25jYXRTbXN8fE5VTEw9PXB0R3JvdXBTbXN8fCgtCi0oMHgxZmFjKzExMy0weDIwMWMpPT1pU21zTGVuZ3RoKSl7cmV0dXJuIFdNU19DTURfRkFJTEVEO31mb3IocHRDb25jYXRTbXMtPgotY3VycmVudF9zZW5kaW5nPSgweDE1NGMrMjE2NC0weDFkYzApO3B0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmc8cHRDb25jYXRTbXMtPgorKDB4M2VkKzg2NDMtMHgyNWIwKTtpZihOVUxMPT1wdFNhdmVTbXN8fE5VTEw9PXB0Q29uY2F0U21zfHxOVUxMPT1wdEdyb3VwU21zfHwoLQorKDB4NzdkKzU0MzEtMHgxY2IzKT09aVNtc0xlbmd0aCkpe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9Zm9yKHB0Q29uY2F0U21zLT4KK2N1cnJlbnRfc2VuZGluZz0oMHhjMTIrMTkzMS0weDEzOWQpO3B0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmc8cHRDb25jYXRTbXMtPgogdG90YWxfbXNnO3B0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmcrKyl7bWVtc2V0KCh2b2lkKikmdENsaWVudE1zZywKLSgweDRkKzkwMzItMHgyMzk1KSxzaXplb2YoVF96VWZpU21zX0NsaWVudE1zZykpO21lbXNldCgodm9pZCopJnRDbGllbnRUc0RhdGEsCi0oMHgxZjUyKzkyMS0weDIyZWIpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKSk7bWVtc2V0KCh2b2lkKikmdERiU2F2ZURhdGEsCi0oMHgxYzM1KzE5MzQtMHgyM2MzKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7dENsaWVudE1zZy5tc2dfaGRyLm1lbV9zdG9yZQotPShwdFNhdmVTbXMtPm1lbV9zdG9yZT09V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxKT9XTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE6CisoMHgzYTMrNTU1OC0weDE5NTkpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50TXNnKSk7bWVtc2V0KCh2b2lkKikmdENsaWVudFRzRGF0YSwKKygweDFmMzYrOTQ5LTB4MjJlYiksc2l6ZW9mKFRfelVmaVNtc19DbGllbnRUc0RhdGEpKTttZW1zZXQoKHZvaWQqKSZ0RGJTYXZlRGF0YSwKKygweDcxOSszNzMtMHg4OGUpLHNpemVvZihUX3pVZmlTbXNfRGJTdG9yZURhdGEpKTt0Q2xpZW50TXNnLm1zZ19oZHIubWVtX3N0b3JlPSgKK3B0U2F2ZVNtcy0+bWVtX3N0b3JlPT1XTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEpP1dNU19TVE9SQUdFX1RZUEVfVUlNX1YwMToKIFdNU19TVE9SQUdFX1RZUEVfTlZfVjAxO3RDbGllbnRNc2cubXNnX2hkci50YWc9KFRfelVmaVNtc19TbXNUYWcpcHRTYXZlU21zLT50YWdzCiA7dENsaWVudE1zZy5tc2dfaGRyLm1lc3NhZ2VfbW9kZT1XTVNfTUVTU0FHRV9NT0RFX0dXO3RDbGllbnRNc2cudS5nd19tZXNzYWdlLgogaXNfYnJvYWRjYXN0PUZBTFNFO3RDbGllbnRUc0RhdGEuZm9ybWF0PVdNU19GT1JNQVRfR1dfUFA7c3dpdGNoKHB0U2F2ZVNtcy0+dGFncykKIHtjYXNlIFdNU19UQUdfVFlQRV9NT19TRU5UX1YwMTpjYXNlIFdNU19UQUdfVFlQRV9NT19OT1RfU0VOVF9WMDE6Y2FzZQotKDB4NzEwKzU0NDQtMHgxYzUwKTp7dENsaWVudFRzRGF0YS51Lmd3X3BwLnRwZHVfdHlwZT1XTVNfVFBEVV9TVUJNSVQ7KHZvaWQpCisoMHhiM2IrNTc1MC0weDIxYWQpOnt0Q2xpZW50VHNEYXRhLnUuZ3dfcHAudHBkdV90eXBlPVdNU19UUERVX1NVQk1JVDsodm9pZCkKIHpVZmlTbXNfRmlsbFN1Ym1pdFRwZHUocHRDb25jYXRTbXMscHRHcm91cFNtcyxpU21zTGVuZ3RoLCZ0Q2xpZW50VHNEYXRhLnUuZ3dfcHAuCiB1LnN1Ym1pdCwmdERiU2F2ZURhdGEpO2JyZWFrO31jYXNlIFdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTpjYXNlIAogV01TX1RBR19UWVBFX01UX05PVF9SRUFEX1YwMTp7dENsaWVudFRzRGF0YS51Lmd3X3BwLnRwZHVfdHlwZT1XTVNfVFBEVV9ERUxJVkVSOygKQEAgLTgyMCw0MiArODE4LDQyIEBACiB6VWZpU21zX0ZpbGxTY2EoJnRDbGllbnRNc2cpO3pVZmlTbXNfRmlsbERiU2F2ZURhdGEoJnRDbGllbnRNc2csJnRDbGllbnRUc0RhdGEsCiBwdENvbmNhdFNtcyxwdEdyb3VwU21zLGlTbXNMZW5ndGgsJnREYlNhdmVEYXRhKTtzdHJuY3B5KHREYlNhdmVEYXRhLgogZHJhZnRfZ3JvdXBfaWQscHRTYXZlU21zLT5kcmFmdF9ncm91cF9pZCxzaXplb2YodERiU2F2ZURhdGEuZHJhZnRfZ3JvdXBfaWQpLQotKDB4NDZkKzM4NzgtMHgxMzkyKSk7aWYoVFJVRT09Z196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX05WXSl7cmVzdWx0PQorKDB4YTdjKzU2MzMtMHgyMDdjKSk7aWYoVFJVRT09Z196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX05WXSl7cmVzdWx0PQogV01TX0NNRF9GQUlMRUQ7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjFceDc2XHg2NVx4NTNceDZkXHg3M1x4NTRceDZmXHg0NFx4NjJceDIwXHg0ZVx4NTZceDIwXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHgyMFx4NjlceDczXHgyMFx4NjZceDc1XHg2Y1x4NmNceDJjXHg3M1x4NjFceDc2XHg2NVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3MiIgIlxuIgotKTt9ZWxzZXtpZih0RGJTYXZlRGF0YS5jb25jYXRfc21zPT0oMHgxYTc3KzI0NDMtMHgyNDAxKSl7cmVzdWx0PQorKTt9ZWxzZXtpZih0RGJTYXZlRGF0YS5jb25jYXRfc21zPT0oMHgzNmYrNDA4LTB4NTA2KSl7cmVzdWx0PQogelVmaVNtc19TYXZlQ29uY2F0U21zKHB0U2F2ZVNtcyxwdENvbmNhdFNtcyxwdEdyb3VwU21zLCZ0RGJTYXZlRGF0YSxpU21zTGVuZ3RoKTsKLWN1cnJlbnRfc2VuZGluZz1wdENvbmNhdFNtcy0+Y3VycmVudF9zZW5kaW5nKygweDIyMys5ODktMHg1ZmYpO2lmKHB0Q29uY2F0U21zLT4KLXNtc19sZW48aVNtc0xlbmd0aCooY3VycmVudF9zZW5kaW5nKygweDcwNSs4MTY0LTB4MjZlOCkpKXtpU21zTGVuZ3RoPXB0Q29uY2F0U21zCi0tPnNtc19sZW4taVNtc0xlbmd0aCpjdXJyZW50X3NlbmRpbmc7fX1lbHNle3Jlc3VsdD16VWZpU21zX1NhdmVOb3JtYWxTbXMoCi1wdFNhdmVTbXMsJnREYlNhdmVEYXRhKTt9fX1yZXR1cm4gcmVzdWx0O31pbnQgelVmaVNtc19EZWxldGVTbXNJblNpbSgpe2NoYXIgCi1zdHJfaW5kZXhbKDB4MTdiZisxMzMzLTB4MWM3NCldPXsoMHgzZjQrMzAxMS0weGZiNyl9O2ludCBpbmRleD0KLSgweDU5OCs4MDIwLTB4MjRlYyk7aW50IGlzX2NjPSgweDE0NjErMjEyNy0weDFjYjApO2ludCBpU21zSWQ9Ci0oMHgxNTJiKzcwMS0weDE3ZTgpO1RfelVmaVNtc19Nb2RpZnlUYWcgdERlbGV0ZUluZm89eygweDE5MDErMTg4MC0weDIwNTkpfTtjaGFyIAotU3RyVmFsdWVbKDB4ZjE0KzM1NzEtMHgxY2ZkKV09eygweDEzMmQrMjI3Ny0weDFjMTIpfTttZW1zZXQoJnREZWxldGVJbmZvLAotKDB4MTk1OSsxMTU1LTB4MWRkYyksc2l6ZW9mKFRfelVmaVNtc19Nb2RpZnlUYWcpKTtpU21zSWQ9Z196VWZpU21zX0RlbE1zZy5zaW1faWQKLVtnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleF07aWYoLSgweDM4YSsyOTQ4LTB4ZjBkKT09KGlzX2NjPXpVZmlTbXNfSXNDb25jYXRTbXMoCi1pU21zSWQpKSl7cHJpbnRmKAorY3VycmVudF9zZW5kaW5nPXB0Q29uY2F0U21zLT5jdXJyZW50X3NlbmRpbmcrKDB4NDhhKzcwNzQtMHgyMDJiKTtpZihwdENvbmNhdFNtcworLT5zbXNfbGVuPGlTbXNMZW5ndGgqKGN1cnJlbnRfc2VuZGluZysoMHg3YWMrMTkyMC0weGYyYikpKXtpU21zTGVuZ3RoPQorcHRDb25jYXRTbXMtPnNtc19sZW4taVNtc0xlbmd0aCpjdXJyZW50X3NlbmRpbmc7fX1lbHNle3Jlc3VsdD0KK3pVZmlTbXNfU2F2ZU5vcm1hbFNtcyhwdFNhdmVTbXMsJnREYlNhdmVEYXRhKTt9fX1yZXR1cm4gcmVzdWx0O31pbnQgCit6VWZpU21zX0RlbGV0ZVNtc0luU2ltKCl7Y2hhciBzdHJfaW5kZXhbKDB4MWI5NSsxMTY5LTB4MWZhNildPXsKKygweDEwMjMrMjUzNi0weDFhMGIpfTtpbnQgaW5kZXg9KDB4MjA3MisxMDExLTB4MjQ2NSk7aW50IGlzX2NjPQorKDB4MWVlNCszOTItMHgyMDZjKTtpbnQgaVNtc0lkPSgweDZjYisyOTU0LTB4MTI1NSk7VF96VWZpU21zX01vZGlmeVRhZyAKK3REZWxldGVJbmZvPXsoMHgyNTBjKzIyLTB4MjUyMil9O2NoYXIgU3RyVmFsdWVbKDB4M2Q1KzIzNzItMHhkMGYpXT17CisoMHgxN2I4KzI3NjMtMHgyMjgzKX07bWVtc2V0KCZ0RGVsZXRlSW5mbywoMHhjNzQrMTAzNy0weDEwODEpLHNpemVvZigKK1RfelVmaVNtc19Nb2RpZnlUYWcpKTtpU21zSWQ9Z196VWZpU21zX0RlbE1zZy5zaW1faWRbZ196VWZpU21zX0RlbE1zZy5zaW1faW5kZXhdCis7aWYoLSgweGRkNyszODMzLTB4MWNjZik9PShpc19jYz16VWZpU21zX0lzQ29uY2F0U21zKGlTbXNJZCkpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDYzXHg2OFx4NjVceDYzXHg2Ylx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIgIlxuIgogKTtyZXR1cm4gWlVGSV9GQUlMO31wcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDY5XHg3M1x4NWZceDYzXHg2M1x4M2FceDI1XHg2NFx4MmNceDIwXHg2OVx4NjRceDNkXHgyNVx4NjQiICJcbiIKLSxpc19jYyxpU21zSWQpO2lmKCgweDEwODYrNDc0OS0weDIzMTIpPT1pc19jYyl7aWYoWlVGSV9GQUlMPT16VWZpU21zX0dldFNtc0luZGV4Ci0oaVNtc0lkLCZ0RGVsZXRlSW5mbyxpc19jYykpe3JldHVybiBaVUZJX0ZBSUw7fWdfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4Kys7CissaXNfY2MsaVNtc0lkKTtpZigoMHg1MzIrODgyLTB4OGEzKT09aXNfY2Mpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTbXNJbmRleCgKK2lTbXNJZCwmdERlbGV0ZUluZm8saXNfY2MpKXtyZXR1cm4gWlVGSV9GQUlMO31nX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleCsrOwogZ196VWZpU21zX0RlbE1zZy5zaW1faW5kZXhfY291bnQtLTt3aGlsZSh0RGVsZXRlSW5mby5udW1fb2ZfaW5kaWNlcz4KLSgweDk3ZCs1ODk1LTB4MjA4NCkpe2luZGV4PXREZWxldGVJbmZvLmluZGljZXNbdERlbGV0ZUluZm8uaWRfaW5kZXhdOworKDB4MWY3ZiszMi0weDFmOWYpKXtpbmRleD10RGVsZXRlSW5mby5pbmRpY2VzW3REZWxldGVJbmZvLmlkX2luZGV4XTsKIGdfZGVsZXRlSW5kZXguaW5kZXhbZ19kZWxldGVJbmRleC50b3RhbF09aW5kZXg7Z19kZWxldGVJbmRleC50b3RhbCsrO3REZWxldGVJbmZvCiAuaWRfaW5kZXgrKzt0RGVsZXRlSW5mby5udW1fb2ZfaW5kaWNlcy0tO319ZWxzZXttZW1zZXQoc3RyX2luZGV4LAotKDB4NzU4Kzc5MjYtMHgyNjRlKSxzaXplb2Yoc3RyX2luZGV4KSk7aWYoWlVGSV9GQUlMPT16VWZpU21zX0dldFN0b3JlUG9zQnlJZCgKKygweGM0ZCsyNDE4LTB4MTViZiksc2l6ZW9mKHN0cl9pbmRleCkpO2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTdG9yZVBvc0J5SWQoCiAiXHg2OVx4NmVceDY0IixzdHJfaW5kZXgsc2l6ZW9mKHN0cl9pbmRleCksaVNtc0lkKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDY3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDY0XHg2Mlx4MjBceDY2XHg2MVx4NjlceDZjXHg2NFx4MmUiCiApO3JldHVybiBaVUZJX0ZBSUw7fWluZGV4PWF0b2koc3RyX2luZGV4KTtnX2RlbGV0ZUluZGV4LmluZGV4W2dfZGVsZXRlSW5kZXguCiB0b3RhbF09aW5kZXg7Z19kZWxldGVJbmRleC50b3RhbCsrO2dfelVmaVNtc19EZWxNc2cuc2ltX2luZGV4Kys7Z196VWZpU21zX0RlbE1zZwogLnNpbV9pbmRleF9jb3VudC0tO30odm9pZCl6VWZpU21zX0RlbGV0ZVNtc0luRGIoKTtyZXR1cm4gWlVGSV9TVUNDO30KLVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19EZWxldGVTaW1TbXMoVk9JRCl7aW50IGF0UmVzPSgweDE1MDkrMTA2My0weDE5MzApOwotY2hhciBTdHJWYWx1ZVsoMHgxMTU2KzgwNS0weDE0NzEpXT17KDB4NGY3KzczODgtMHgyMWQzKX07elVmaVNtc19TZXRTbXNMb2NhdGlvbigKLVNNU19MT0NBVElPTl9TSU0pO21lbXNldCgmZ19kZWxldGVJbmRleCwoMHg2MDQrMjI1Ni0weGVkNCksc2l6ZW9mKAorVF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX0RlbGV0ZVNpbVNtcyhWT0lEKXtpbnQgYXRSZXM9KDB4MTFhOCsxNzk2LTB4MThhYyk7CitjaGFyIFN0clZhbHVlWygweDEyZCsyMzI1LTB4YTM4KV09eygweDE3Y2MrMTM3Ny0weDFkMmQpfTt6VWZpU21zX1NldFNtc0xvY2F0aW9uKAorU01TX0xPQ0FUSU9OX1NJTSk7bWVtc2V0KCZnX2RlbGV0ZUluZGV4LCgweDFhMTMrMTEyNy0weDFlN2EpLHNpemVvZigKIFRfelVmaVNtc19EZWxJbmRleEluZm8pKTt3aGlsZShnX3pVZmlTbXNfRGVsTXNnLnNpbV9pbmRleF9jb3VudD4KLSgweDlkZiszMDAyLTB4MTU5OSkpe2lmKFpVRklfRkFJTD09elVmaVNtc19EZWxldGVTbXNJblNpbSgpKXtwcmludGYoCisoMHgzNGIrMzU5NC0weDExNTUpKXtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfRGVsZXRlU21zSW5TaW0oKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg1M1x4NjlceDZkXHg1M1x4NmRceDczXHgyMFx4NjRceDY1XHg2Y1x4NjVceDc0XHg2NVx4MjBceDYxXHg2Y1x4NmNceDNhXHgyNVx4NjRceDIwXHg3M1x4NmRceDczXHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NCIgIlxuIgogLFdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMSk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319d2hpbGUoZ19kZWxldGVJbmRleC5jdXJfaW5kZXgKIDxnX2RlbGV0ZUluZGV4LnRvdGFsKXthdFJlcz16U21zX1NlbmRDbWdkUmVxKGdfZGVsZXRlSW5kZXguaW5kZXhbZ19kZWxldGVJbmRleC4KQEAgLTg2NCw2OSArODYyLDY5IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2OVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3MyIgIlxuIgogKTtyZXR1cm4gV01TX0NNRF9TVUNDRVNTO312b2lkIHpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKGNoYXIqcGR1X3RtcCxpbnQqc3RhdCl7CiB1bnNpZ25lZCBjaGFyIHRtcDt1bnNpZ25lZCBjaGFyIGZpcnN0X29jdGV0O2lmKHBkdV90bXA9PU5VTEwpe3JldHVybjt9KHZvaWQpCi1TdHJpbmcyQnl0ZXMocGR1X3RtcCwmdG1wLCgweDg2ZCs1NjczLTB4MWU5NCkpO2lmKHRtcD09KDB4MWQzZis2NTgtMHgxZmQxKSl7Ci1wZHVfdG1wKz0oMHg0YWYrMTI1NS0weDk5NCk7fWVsc2V7dG1wPSh0bXArKDB4OGQ2KzYyODItMHgyMTVmKSkqCi0oMHgyNSs0MDQzLTB4ZmVlKTtwZHVfdG1wKz10bXA7fSh2b2lkKVN0cmluZzJCeXRlcyhwZHVfdG1wLCZ0bXAsCi0oMHgxZmIrNDU5MC0weDEzZTcpKTtmaXJzdF9vY3RldD10bXA7aWYoZmlyc3Rfb2N0ZXQmKDB4ZDFhKzU2LTB4ZDUwKSl7KnN0YXQ9Ci0oMHhjYzQrMjk2OC0weDE4NTcpO319VF96VWZpU21zX1RwZHVUeXBlIHpVZmlTbXNfR2V0VHBkdVR5cGUoVUlOVDgqcERhdGEpewotVF96VWZpU21zX1RwZHVUeXBlIGlUcGR1VHlwZTtVSU5UOCBtdGk9KDB4MWY0MCsxMDg0LTB4MjM3Yyk7bXRpPSgKLVRfelVmaVNtc19UcGR1VHlwZSkocERhdGFbKDB4N2ZhKzI5OTAtMHgxM2E4KV0mKDB4YTIzKzUwMDYtMHgxZGFlKSk7c3dpdGNoKG10aSl7Ci1jYXNlKDB4MWU1MSs5MTktMHgyMWU4KTppVHBkdVR5cGU9V01TX1RQRFVfREVMSVZFUjticmVhaztjYXNlKDB4NWMzKzQ0ODMtMHgxNzQ1KQotOmlUcGR1VHlwZT1XTVNfVFBEVV9TVUJNSVQ7YnJlYWs7Y2FzZSgweGM1NysyNjU5LTB4MTZiOCk6aVRwZHVUeXBlPQorU3RyaW5nMkJ5dGVzKHBkdV90bXAsJnRtcCwoMHhmYWMrMzU5OC0weDFkYjgpKTtpZih0bXA9PSgweDgzOSszNzkwLTB4MTcwNykpeworcGR1X3RtcCs9KDB4MTZkNCs5NzctMHgxYWEzKTt9ZWxzZXt0bXA9KHRtcCsoMHhhYzArMTQ5Mi0weDEwOTMpKSoKKygweDE5NWQrMzQxOS0weDI2YjYpO3BkdV90bXArPXRtcDt9KHZvaWQpU3RyaW5nMkJ5dGVzKHBkdV90bXAsJnRtcCwKKygweDIxOWIrMTQwLTB4MjIyNSkpO2ZpcnN0X29jdGV0PXRtcDtpZihmaXJzdF9vY3RldCYoMHgzNmQrODQ2MC0weDI0NzcpKXsqc3RhdD0KKygweDE2MWQrMTM5Ny0weDFiOGQpO319VF96VWZpU21zX1RwZHVUeXBlIHpVZmlTbXNfR2V0VHBkdVR5cGUoVUlOVDgqcERhdGEpeworVF96VWZpU21zX1RwZHVUeXBlIGlUcGR1VHlwZTtVSU5UOCBtdGk9KDB4ODRhKzU4NDgtMHgxZjIyKTttdGk9KAorVF96VWZpU21zX1RwZHVUeXBlKShwRGF0YVsoMHgxNzdmKzMwMDktMHgyMzQwKV0mKDB4MWUzKzk2OS0weDVhOSkpO3N3aXRjaChtdGkpeworY2FzZSgweDE2NDYrMTM3Ny0weDFiYTcpOmlUcGR1VHlwZT1XTVNfVFBEVV9ERUxJVkVSO2JyZWFrO2Nhc2UoMHg4ZCs2NjQ3LTB4MWE4MykKKzppVHBkdVR5cGU9V01TX1RQRFVfU1VCTUlUO2JyZWFrO2Nhc2UoMHgxZmQzKzU2MS0weDIyMDIpOmlUcGR1VHlwZT0KIFdNU19UUERVX1NUQVRVU19SRVBPUlQ7YnJlYWs7ZGVmYXVsdDppVHBkdVR5cGU9V01TX1RQRFVfTUFYO2JyZWFrO31yZXR1cm4gCiBpVHBkdVR5cGU7fXN0YXRpYyB2b2lkIHpVZmlTbXNfRm9ybWF0RGVsaXZlck51bWJlcih3bXNfYWRkcmVzc19zX3R5cGUgdEFkZHJlc3MsCi11bnNpZ25lZCBjaGFyKnBOdW1iZXIpe1VJTlQ4IG51bWJlcl90eXBlPSgweGQwKzI4MTYtMHhiZDApO21lbXNldChwTnVtYmVyLAotKDB4NDNjKzIyLTB4NDUyKSxaVEVfV01TX0FERFJFU1NfTEVOX01BWCsoMHgyODcrODcxNC0weDI0OTApKTtpZih0QWRkcmVzcy4KLW51bWJlcl90eXBlPT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUwpe3BOdW1iZXJbKDB4MTdmOCs1NTYtMHgxYTI0KV09Ci0oKGNoYXIpKDB4NDlkKzk0Ny0weDgyNSkpO3BOdW1iZXIrKzt9aWYodEFkZHJlc3MuZGlnaXRfbW9kZSE9Cit1bnNpZ25lZCBjaGFyKnBOdW1iZXIpe1VJTlQ4IG51bWJlcl90eXBlPSgweDljNSsxODc1LTB4MTExOCk7bWVtc2V0KHBOdW1iZXIsCisoMHg4MzcrMTk2OS0weGZlOCksWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4NzYxKzE4ODktMHhlYzEpKTtpZih0QWRkcmVzcy4KK251bWJlcl90eXBlPT1XTVNfTlVNQkVSX0lOVEVSTkFUSU9OQUwpe3BOdW1iZXJbKDB4NmIrMjA0NS0weDg2OCldPQorKChjaGFyKSgweGIyKzUwMDEtMHgxNDEwKSk7cE51bWJlcisrO31pZih0QWRkcmVzcy5kaWdpdF9tb2RlIT0KIFdNU19ESUdJVF9NT0RFXzhfQklUKXsodm9pZCl6VWZpU21zX1Ntc2lBZGRyVG9TdHIodEFkZHJlc3MsKGJ5dGUqKXBOdW1iZXIsJgogbnVtYmVyX3R5cGUpO31lbHNle21lbWNweShwTnVtYmVyLHRBZGRyZXNzLmRpZ2l0cyx0QWRkcmVzcy5udW1iZXJfb2ZfZGlnaXRzKgotc2l6ZW9mKHRBZGRyZXNzLmRpZ2l0c1soMHgxYTBjKzI4MTgtMHgyNTBlKV0pKTt9fWJ5dGUqelVmaVNtc19VdGlsVGltZVN0YW1wKAorc2l6ZW9mKHRBZGRyZXNzLmRpZ2l0c1soMHg0ZWMrNzUxMC0weDIyNDIpXSkpO319Ynl0ZSp6VWZpU21zX1V0aWxUaW1lU3RhbXAoCiBUX3pVZmlTbXNfVGltZVN0YW1wIHp0ZV93bXNfdGltZSxieXRlKnJlc19wdHIsVF96VWZpU21zX0RhdGUqZGF0ZSl7VUlOVDggdG1wO2lmKAotTlVMTD09ZGF0ZSl7cmV0dXJuIE5VTEw7fSpyZXNfcHRyKys9KChjaGFyKSgweDNjZCs4ODE4LTB4MjYxZCkpO3RtcD16dGVfd21zX3RpbWUKLS55ZWFyO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4NjM2Kzg0Mi0weDk3MSkpKygodG1wPj4KLSgweDc3Kzg4NzUtMHgyMzFlKSkqKDB4MTg4ZCsyMjQtMHgxOTYzKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT55ZWFyCi0sc2l6ZW9mKGRhdGUtPnllYXIpLHp0ZV93bXNfdGltZS55ZWFyKTsqcmVzX3B0cisrPSgoY2hhcikoMHg1ZjArNjI1OC0weDFlMzMpKTsKLXRtcD16dGVfd21zX3RpbWUubW9udGg7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYoMHgxY2YrMTQ3MS0weDc3ZikpCi0rKCh0bXA+PigweDEzYjIrNDUyNi0weDI1NWMpKSooMHhiY2ErODQ3LTB4ZjBmKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZSgKLWRhdGUtPm1vbnRoLHNpemVvZihkYXRlLT5tb250aCksenRlX3dtc190aW1lLm1vbnRoKTsqcmVzX3B0cisrPQotKChjaGFyKSgweDEwZDArMjM5OS0weDFhMDApKTt0bXA9enRlX3dtc190aW1lLmRheTtyZXNfcHRyPQotelVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4MTExKzgyMjAtMHgyMTFlKSkrKCh0bXA+PigweDU1OCsyMjAzLTB4ZGVmKSkqCi0oMHgxMzNkKzQxNTQtMHgyMzZkKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT5kYXksc2l6ZW9mKGRhdGUtPmRheSksCi16dGVfd21zX3RpbWUuZGF5KTsqcmVzX3B0cisrPSgoY2hhcikoMHgxOGIrNTQwNy0weDE2N2UpKTt0bXA9enRlX3dtc190aW1lLmhvdXI7Ci1yZXNfcHRyPXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweDE1ZjErMjA2OC0weDFkZjYpKSsoKHRtcD4+Ci0oMHhmY2ErMjY5MC0weDFhNDgpKSooMHgxZWI1KzE5NTktMHgyNjUyKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT4KLWhvdXIsc2l6ZW9mKGRhdGUtPmhvdXIpLHp0ZV93bXNfdGltZS5ob3VyKTsqcmVzX3B0cisrPSgoY2hhcikoMHg3M2ErMTcxNC0weGRiMikpCi07dG1wPXp0ZV93bXNfdGltZS5taW51dGU7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYKLSgweDE5ODkrMTE4NC0weDFlMWEpKSsoKHRtcD4+KDB4MmM0KzYzMTQtMHgxYjZhKSkqKDB4ZjFmKzUwNTQtMHgyMmQzKSkscmVzX3B0cik7Ci16VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPm1pbixzaXplb2YoZGF0ZS0+bWluKSx6dGVfd21zX3RpbWUubWludXRlKTsqcmVzX3B0cisrPQotKChjaGFyKSgweDEyYWQrMTg3Mi0weDE5YzMpKTt0bXA9enRlX3dtc190aW1lLnNlY29uZDtyZXNfcHRyPQotelVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4MTg5YisxNzE5LTB4MWY0MykpKygodG1wPj4oMHg1NGQrNjA5Ny0weDFkMWEpKSoKLSgweDE1OGIrMzcxNC0weDI0MDMpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPnNlYyxzaXplb2YoZGF0ZS0+c2VjKSwKLXp0ZV93bXNfdGltZS5zZWNvbmQpO2lmKHp0ZV93bXNfdGltZS50aW1lem9uZTwoMHgxMDBmKzQwNDgtMHgxZmRmKSl7KnJlc19wdHIrKz0KLSgoY2hhcikoMHgzZDkrMjc5MC0weGU5MikpO3RtcD0oVUlOVDgpKHp0ZV93bXNfdGltZS50aW1lem9uZSooLQotKDB4NDMyKzc5NzEtMHgyMzU0KSkpO3NucHJpbnRmKGRhdGUtPnRpbWV6b25lLHNpemVvZihkYXRlLT50aW1lem9uZSksCi0iXHgyZFx4MjVceDY0IiwtKDB4YjNkKzE5OTEtMHgxMzAzKSp6dGVfd21zX3RpbWUudGltZXpvbmUpO31lbHNleypyZXNfcHRyKys9Ci0oKGNoYXIpKDB4MjVkKzI4ODAtMHhkNzIpKTt0bXA9KFVJTlQ4KXp0ZV93bXNfdGltZS50aW1lem9uZTtzbnByaW50ZihkYXRlLT4KLXRpbWV6b25lLHNpemVvZihkYXRlLT50aW1lem9uZSksIlx4MmJceDI1XHg2NCIsenRlX3dtc190aW1lLnRpbWV6b25lKTt9cmVzX3B0cj0KLXpVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCh0bXAscmVzX3B0cik7KnJlc19wdHIrKz0oKGNoYXIpKDB4NzFiKzIzNjUtMHgxMDM2KSk7Ci1yZXR1cm4gcmVzX3B0cjt9VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX0hhbmRsZVJlcG9ydCh1bnNpZ25lZCBjaGFyKnB0UGR1RGF0YQotKXtUX3pVZmlTbXNfUmF3VHNEYXRhIHRSYXdUc0RhdGE7VF96VWZpU21zX0NsaWVudFRzRGF0YSB0Q2xpZW50VHNEYXRhO2ludCAKLWlSZXBvcnRTdGF0dXM9KDB4OGY5KzU0OTEtMHgxZTZjKTt1bnNpZ25lZCBjaGFyIGFjRGVsaXZlck51bWJlclsKLVpURV9XTVNfQUREUkVTU19MRU5fTUFYKygweDExNzUrNTU5LTB4MTNhMyldO3Vuc2lnbmVkIGNoYXIgdFRwU2N0c1sKLVpURV9XTVNfVFBfU0NUU19MRU5fTUFYKygweGI2ZCsxMTUwLTB4ZmVhKV07VF96VWZpU21zX0RhdGUgdFNtc0RhdGU7Y2hhciAKLWFjUmVjRmxhZ1soMHgxNWNkKzEzNTktMHgxYjE3KV09eygweDlmYiszODY2LTB4MTkxNSl9O2ludCBpUnBDb3VudD0KLSgweDE0YSs2MjQ3LTB4MTliMSk7Y2hhciB0bXBbKDB4NDQ0KzM2OTEtMHgxMmE1KV07aW50IHRtcF9pPSgweDU0NCs1NDE1LTB4MWE2Yik7Ci11bnNpZ25lZCBpbnQgcG9zPSgweDNkYis0Nzg1LTB4MTY4Yyk7aWYoTlVMTD09cHRQZHVEYXRhKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fQotbWVtc2V0KGFjRGVsaXZlck51bWJlciwoMHg0YTYrNzEyNS0weDIwN2IpLHNpemVvZihhY0RlbGl2ZXJOdW1iZXIpKTttZW1zZXQoJgotdFNtc0RhdGUsKDB4NjZkKzc0MTItMHgyMzYxKSxzaXplb2YoVF96VWZpU21zX0RhdGUpKTttZW1zZXQodFRwU2N0cywKLSgweDI2OCsyOTIzLTB4ZGQzKSxzaXplb2YodFRwU2N0cykpO21lbXNldCgmdFJhd1RzRGF0YSwoMHgxMWMzKzQxMTAtMHgyMWQxKSwKLXNpemVvZihUX3pVZmlTbXNfUmF3VHNEYXRhKSk7bWVtc2V0KCZ0Q2xpZW50VHNEYXRhLCgweDEzM2QrMTY4Ni0weDE5ZDMpLHNpemVvZigKLVRfelVmaVNtc19DbGllbnRUc0RhdGEpKTtzbnByaW50Zih0bXAsc2l6ZW9mKHRtcCksIlx4MjVceDU4IixwdFBkdURhdGFbCi0oMHg0Y2IrMTY2Ni0weGI0ZCldKTt0bXBfaT1hdG9pKHRtcCk7aWYodG1wX2k8KDB4MTU0MiszODA5LTB4MjQyMyl8fHRtcF9pPgotSU5UX01BWC0oMHhiNzMrNDM1Ny0weDFjNzcpKXthdF9wcmludChMT0dfRVJSLAorTlVMTD09ZGF0ZSl7cmV0dXJuIE5VTEw7fSpyZXNfcHRyKys9KChjaGFyKSgweGQxMisxNTgyLTB4MTMxZSkpO3RtcD16dGVfd21zX3RpbWUKKy55ZWFyO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4NzIzKzc0NTMtMHgyNDMxKSkrKCh0bXA+PgorKDB4YjhkKzMwMTctMHgxNzUyKSkqKDB4NjcxKzQwNTEtMHgxNjNhKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT4KK3llYXIsc2l6ZW9mKGRhdGUtPnllYXIpLHp0ZV93bXNfdGltZS55ZWFyKTsqcmVzX3B0cisrPQorKChjaGFyKSgweDc3NiszMDIwLTB4MTMxMykpO3RtcD16dGVfd21zX3RpbWUubW9udGg7cmVzX3B0cj0KK3pVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweDFjNWIrMTYxNi0weDIyOWMpKSsoKHRtcD4+KDB4ZDBjKzI1OTctMHgxNzJkKSkqCisoMHhkOTErMzA5OS0weDE5YTIpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPm1vbnRoLHNpemVvZihkYXRlLT5tb250aAorKSx6dGVfd21zX3RpbWUubW9udGgpOypyZXNfcHRyKys9KChjaGFyKSgweGYxOCs0NzI5LTB4MjE2MikpO3RtcD16dGVfd21zX3RpbWUuCitkYXk7cmVzX3B0cj16VWZpU21zX1Ntc2lVdGlsaXRvYUZpbGwoKHRtcCYoMHhhY2QrNDgzMS0weDFkOWQpKSsoKHRtcD4+CisoMHg0ZTArMzEzOS0weDExMWYpKSooMHgyNGErOTE5NS0weDI2MmIpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUtPmRheQorLHNpemVvZihkYXRlLT5kYXkpLHp0ZV93bXNfdGltZS5kYXkpOypyZXNfcHRyKys9KChjaGFyKSgweDI1Nis5MDQxLTB4MjU3YikpO3RtcD0KK3p0ZV93bXNfdGltZS5ob3VyO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4MmUwKzc3NjUtMHgyMTI2KSkrKCgKK3RtcD4+KDB4MzU2KzExNjItMHg3ZGMpKSooMHg1ZDUrNTk1MC0weDFkMDkpKSxyZXNfcHRyKTt6VWZpU21zX1NwcmludGZUaW1lKGRhdGUKKy0+aG91cixzaXplb2YoZGF0ZS0+aG91ciksenRlX3dtc190aW1lLmhvdXIpOypyZXNfcHRyKys9CisoKGNoYXIpKDB4MTZkOSs5NjktMHgxYTY4KSk7dG1wPXp0ZV93bXNfdGltZS5taW51dGU7cmVzX3B0cj0KK3pVZmlTbXNfU21zaVV0aWxpdG9hRmlsbCgodG1wJigweDFlYSsyODA1LTB4Y2QwKSkrKCh0bXA+PigweDc4OSsyNTM0LTB4MTE2YikpKgorKDB4MjJhOSs0MTktMHgyNDQyKSkscmVzX3B0cik7elVmaVNtc19TcHJpbnRmVGltZShkYXRlLT5taW4sc2l6ZW9mKGRhdGUtPm1pbiksCit6dGVfd21zX3RpbWUubWludXRlKTsqcmVzX3B0cisrPSgoY2hhcikoMHg2ZmIrNTA4Mi0weDFhOWIpKTt0bXA9enRlX3dtc190aW1lLgorc2Vjb25kO3Jlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKCh0bXAmKDB4NGM0KzM2OTAtMHgxMzFmKSkrKCh0bXA+PgorKDB4ZjJmKzQxMzktMHgxZjU2KSkqKDB4MWRlMSsyMjU4LTB4MjZhOSkpLHJlc19wdHIpO3pVZmlTbXNfU3ByaW50ZlRpbWUoZGF0ZS0+CitzZWMsc2l6ZW9mKGRhdGUtPnNlYyksenRlX3dtc190aW1lLnNlY29uZCk7aWYoenRlX3dtc190aW1lLnRpbWV6b25lPAorKDB4MjZiYis2NC0weDI2ZmIpKXsqcmVzX3B0cisrPSgoY2hhcikoMHg2MWIrODQxNy0weDI2Y2YpKTt0bXA9KFVJTlQ4KSgKK3p0ZV93bXNfdGltZS50aW1lem9uZSooLSgweDEwOTErMjc0My0weDFiNDcpKSk7c25wcmludGYoZGF0ZS0+dGltZXpvbmUsc2l6ZW9mKAorZGF0ZS0+dGltZXpvbmUpLCJceDJkXHgyNVx4NjQiLC0oMHgxMzU3KzQ2MzctMHgyNTczKSp6dGVfd21zX3RpbWUudGltZXpvbmUpO30KK2Vsc2V7KnJlc19wdHIrKz0oKGNoYXIpKDB4MTZhMSsyOTI1LTB4MjFlMykpO3RtcD0oVUlOVDgpenRlX3dtc190aW1lLnRpbWV6b25lOworc25wcmludGYoZGF0ZS0+dGltZXpvbmUsc2l6ZW9mKGRhdGUtPnRpbWV6b25lKSwiXHgyYlx4MjVceDY0Iix6dGVfd21zX3RpbWUuCit0aW1lem9uZSk7fXJlc19wdHI9elVmaVNtc19TbXNpVXRpbGl0b2FGaWxsKHRtcCxyZXNfcHRyKTsqcmVzX3B0cisrPQorKChjaGFyKSgweDVkMisxNDk1LTB4Yjg3KSk7cmV0dXJuIHJlc19wdHI7fVRfelVmaVNtc19DbWRTdGF0dXMgCit6VWZpU21zX0hhbmRsZVJlcG9ydCh1bnNpZ25lZCBjaGFyKnB0UGR1RGF0YSl7VF96VWZpU21zX1Jhd1RzRGF0YSB0UmF3VHNEYXRhOworVF96VWZpU21zX0NsaWVudFRzRGF0YSB0Q2xpZW50VHNEYXRhO2ludCBpUmVwb3J0U3RhdHVzPSgweDE0ODIrMTIxMy0weDE5M2YpOwordW5zaWduZWQgY2hhciBhY0RlbGl2ZXJOdW1iZXJbWlRFX1dNU19BRERSRVNTX0xFTl9NQVgrKDB4OWZkKzEwNi0weGE2NildOwordW5zaWduZWQgY2hhciB0VHBTY3RzW1pURV9XTVNfVFBfU0NUU19MRU5fTUFYKygweDNjYis3NTY5LTB4MjE1YildOworVF96VWZpU21zX0RhdGUgdFNtc0RhdGU7Y2hhciBhY1JlY0ZsYWdbKDB4YTA1KzE2OTItMHgxMDljKV09eygweDM3NSsxNjUtMHg0MWEpfTsKK2ludCBpUnBDb3VudD0oMHgxNmI2KzExNDMtMHgxYjJkKTtjaGFyIHRtcFsoMHg0YzYrNTI1MS0weDE5M2YpXTtpbnQgdG1wX2k9CisoMHgxYzkrOTE3Mi0weDI1OWQpO3Vuc2lnbmVkIGludCBwb3M9KDB4OWFhKzY4MzktMHgyNDYxKTtpZihOVUxMPT1wdFBkdURhdGEpeworcmV0dXJuIFdNU19DTURfRkFJTEVEO31tZW1zZXQoYWNEZWxpdmVyTnVtYmVyLCgweDExOTErNDU0OS0weDIzNTYpLHNpemVvZigKK2FjRGVsaXZlck51bWJlcikpO21lbXNldCgmdFNtc0RhdGUsKDB4MTgyMisxMDMzLTB4MWMyYiksc2l6ZW9mKFRfelVmaVNtc19EYXRlKSk7CittZW1zZXQodFRwU2N0cywoMHgzNjErNjIxMC0weDFiYTMpLHNpemVvZih0VHBTY3RzKSk7bWVtc2V0KCZ0UmF3VHNEYXRhLAorKDB4ZTQrOTYwLTB4NGE0KSxzaXplb2YoVF96VWZpU21zX1Jhd1RzRGF0YSkpO21lbXNldCgmdENsaWVudFRzRGF0YSwKKygweDg3KzE3NTQtMHg3NjEpLHNpemVvZihUX3pVZmlTbXNfQ2xpZW50VHNEYXRhKSk7c25wcmludGYodG1wLHNpemVvZih0bXApLAorIlx4MjVceDU4IixwdFBkdURhdGFbKDB4MTZjMCszNTA1LTB4MjQ3MSldKTt0bXBfaT1hdG9pKHRtcCk7aWYodG1wX2k8CisoMHg0OTQrMTgwMC0weGI5Yyl8fHRtcF9pPklOVF9NQVgtKDB4MTFkKzgyODEtMHgyMTc1KSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NzBceDc0XHg1MFx4NjRceDc1XHg0NFx4NjFceDc0XHg2MVx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSx0bXBfaSk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31wb3M9dG1wX2krKDB4NDA0KzQxODktMHgxNDYwKTtpZihwb3M+PQorLHRtcF9pKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fXBvcz10bXBfaSsoMHgyZDMrODc3MS0weDI1MTUpO2lmKHBvcz49CiBaU01TX1BEVV9TSVpFKXtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbWNweSgodm9pZCopdFJhd1RzRGF0YS5kYXRhLCh2b2lkKikoCiBwdFBkdURhdGErcG9zKSxzaXplb2YodFJhd1RzRGF0YS5kYXRhKSk7dFJhd1RzRGF0YS50cGR1X3R5cGU9elVmaVNtc19HZXRUcGR1VHlwZQogKHB0UGR1RGF0YStwb3MpO3RSYXdUc0RhdGEuZm9ybWF0PVdNU19GT1JNQVRfR1dfUFA7KHZvaWQpd21zX3RzX2RlY29kZSgmCkBAIC05MzUsNTkgKzkzMyw1OSBAQAogIlx4NjRceDZmXHg2NVx4NzNceDIwXHg2ZVx4NmZceDc0XHgyMFx4NjdceDc3XHgyZlx4NzdceDYzXHg2NFx4NmRceDYxXHgyMFx4NzNceDZkXHg3M1x4MjBceDcyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDIwXHg3M1x4NzRceDYxXHg3NFx4NzVceDczXHgyZSIKICk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31zd2l0Y2godENsaWVudFRzRGF0YS51Lmd3X3BwLnUuc3RhdHVzX3JlcG9ydC50cF9zdGF0dXMpCiB7Y2FzZSBXTVNfVFBfU1RBVFVTX1JFQ0VJVkVEX09LOmNhc2UgV01TX1RQX1NUQVRVU19VTkFCTEVfVE9fQ09ORklSTV9ERUxJVkVSWToKLWNhc2UgV01TX1RQX1NUQVRVU19SRVBMQUNFRDp7aVJlcG9ydFN0YXR1cz0oMHgxYTgrNzI2LTB4NDdkKTticmVhazt9Y2FzZSAKK2Nhc2UgV01TX1RQX1NUQVRVU19SRVBMQUNFRDp7aVJlcG9ydFN0YXR1cz0oMHgzNWErNzQ0LTB4NjQxKTticmVhazt9Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX0NPTkdFU1RJT046Y2FzZSBXTVNfVFBfU1RBVFVTX1RSWUlOR19TTUVfQlVTWTpjYXNlIAogV01TX1RQX1NUQVRVU19UUllJTkdfTk9fUkVTUE9OU0VfRlJPTV9TTUU6Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX1NFUlZJQ0VfUkVKRUNURUQ6Y2FzZSAKIFdNU19UUF9TVEFUVVNfVFJZSU5HX1FPU19OT1RfQVZBSUxBQkxFOmNhc2UgV01TX1RQX1NUQVRVU19UUllJTkdfU01FX0VSUk9SOnsKLWlSZXBvcnRTdGF0dXM9KDB4ZGIxKzM2Ni0weGYxYyk7YnJlYWs7fWRlZmF1bHQ6e2lSZXBvcnRTdGF0dXM9Ci0oMHg3MDQrMzgxNC0weDE1ZTgpO2JyZWFrO319elVmaVNtc19Gb3JtYXREZWxpdmVyTnVtYmVyKHRDbGllbnRUc0RhdGEudS5nd19wcC51LgoraVJlcG9ydFN0YXR1cz0oMHg1OCs4MTE3LTB4MjAwYSk7YnJlYWs7fWRlZmF1bHQ6e2lSZXBvcnRTdGF0dXM9CisoMHgxOSs5OTY1LTB4MjcwNCk7YnJlYWs7fX16VWZpU21zX0Zvcm1hdERlbGl2ZXJOdW1iZXIodENsaWVudFRzRGF0YS51Lmd3X3BwLnUuCiBzdGF0dXNfcmVwb3J0LmFkZHJlc3MsYWNEZWxpdmVyTnVtYmVyKTsodm9pZCl6VWZpU21zX1V0aWxUaW1lU3RhbXAodENsaWVudFRzRGF0YQogLnUuZ3dfcHAudS5zdGF0dXNfcmVwb3J0LnRpbWVzdGFtcCx0VHBTY3RzLCZ0U21zRGF0ZSk7aWYoWlVGSV9GQUlMPT0KIHpVZmlTbXNfSW5zZXJ0UmVwb3J0U3RhdHVzVG9EYihhY0RlbGl2ZXJOdW1iZXIsJnRTbXNEYXRlLGlSZXBvcnRTdGF0dXMpKXsKIGF0X3ByaW50KExPR19FUlIsCiAiXHg3NVx4NzBceDY0XHg2MVx4NzRceDY1XHgyMFx4NzNceDZkXHg3M1x4MjBceDcyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDIwXHg3M1x4NzRceDYxXHg3NFx4NzVceDczXHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiCi0pO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9bWVtc2V0KGFjUmVjRmxhZywoMHgxODBkKzM3MDYtMHgyNjg3KSxzaXplb2YoYWNSZWNGbGFnKQotKTtzY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU01TX1JFUE9SVCxhY1JlY0ZsYWcsc2l6ZW9mKGFjUmVjRmxhZykpO2lScENvdW50PQotYXRvaShhY1JlY0ZsYWcpO2lmKGlScENvdW50PCgweGU0Nys0MzA3LTB4MWYxYSl8fGlScENvdW50PklOVF9NQVgtCi0oMHhmOTYrNTIwMy0weDIzZTgpKXthdF9wcmludChMT0dfRVJSLAorKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbXNldChhY1JlY0ZsYWcsKDB4MTQ0KzE3NzAtMHg4MmUpLHNpemVvZihhY1JlY0ZsYWcpKTsKK3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TTVNfUkVQT1JULGFjUmVjRmxhZyxzaXplb2YoYWNSZWNGbGFnKSk7aVJwQ291bnQ9CithdG9pKGFjUmVjRmxhZyk7aWYoaVJwQ291bnQ8KDB4NDhkKzg0NzEtMHgyNWE0KXx8aVJwQ291bnQ+SU5UX01BWC0KKygweDllNis2OTY4LTB4MjUxZCkpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDY5XHg1Mlx4NzBceDQzXHg2Zlx4NzVceDZlXHg3NFx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSxpUnBDb3VudCk7cmV0dXJuIFdNU19DTURfRkFJTEVEO31tZW1zZXQoYWNSZWNGbGFnLCgweDVhYSszNjA2LTB4MTNjMCksc2l6ZW9mKAorLGlScENvdW50KTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fW1lbXNldChhY1JlY0ZsYWcsKDB4NDYrNzIyNS0weDFjN2YpLHNpemVvZigKIGFjUmVjRmxhZykpO3NucHJpbnRmKGFjUmVjRmxhZyxzaXplb2YoYWNSZWNGbGFnKSwiXHgyNVx4NjQiLGlScENvdW50KwotKDB4OGM1KzU0NzItMHgxZTI0KSk7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NNU19SRVBPUlQsYWNSZWNGbGFnKTtyZXR1cm4gCisoMHg0OTUrODM3NC0weDI1NGEpKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU01TX1JFUE9SVCxhY1JlY0ZsYWcpO3JldHVybiAKIFdNU19DTURfU1VDQ0VTUzt9dm9pZCB6VWZpU21zX0RlbE1vZGVtU21zKGludCBpbl9pbmRleCl7Ci0jaWYgKDB4MTViNisyNjUwLTB4MjAxMCkgCi1jaGFyIFN0clZhbHVlWygweDM1KzQyODUtMHgxMGU4KV09eygweDE0MzUrMjQ1Mi0weDFkYzkpfTtwcmludGYoCisjaWYgKDB4MTVjNSsyNTQ0LTB4MWZiNSkgCitjaGFyIFN0clZhbHVlWygweGExOSszMDM2LTB4MTVlYildPXsoMHg2NzYrNzIwOS0weDIyOWYpfTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDRkXHg2Zlx4NjRceDY1XHg2ZFx4NTNceDZkXHg3M1x4MjBceDY2XHg3NVx4NmVceDIwXHg3NVx4NzNceDY1XHg2NFx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjFceDIxXHgyMVx4MjEiICJcbiIKICk7c25hdF9wcmludChMT0dfREVCVUdTdHJWYWx1ZSxzaXplb2YoU3RyVmFsdWUpLCJceDI1XHg2NCIsaW5faW5kZXgpOwogelN2cl9Jbm5lclNlbmRNc2coWlVGSV9NT0RVTEVfSURfQVRfTE9DQUwsWlVGSV9NT0RVTEVfSURfQVRfVU5TT0xJLAogTVNHX0NNRF9BVF9ERUxfU0lNX1NNUyxzdHJsZW4oU3RyVmFsdWUpLFN0clZhbHVlKTsKICNlbmRpZg0KLWludCBhdFJlcz0oMHgxMjNkKzMyMzItMHgxZWRkKTthdFJlcz16U21zX1NlbmRDbWdkUmVxKGluX2luZGV4KTtpZihhdFJlcz09CitpbnQgYXRSZXM9KDB4MTM4ZCs0NDY5LTB4MjUwMik7YXRSZXM9elNtc19TZW5kQ21nZFJlcShpbl9pbmRleCk7aWYoYXRSZXM9PQogWlNNU19SRVNVTFRfT0spe3pTbXNfUmVjdkNtZ2RPaygpO31lbHNle3pTbXNfUmVjdkNtZ2RFcnIoKTt9elNtc19SZWN2Q21nZEZpbmlzaCgKICk7fVZPSUQgelVmaVNtc19nZXRNb2RpZnlJbmZvKFRfelVmaVNtc19Nb2RpZnlGbGFnKnB0TW9kaWZ5QnVmZil7aW50IGk9Ci0oMHhiOTQrMTczMS0weDEyNTcpO21lbXNldCgmZ196VWZpU21zX21vZGlmeU1zZywoMHgxODAzKzU4OS0weDFhNTApLHNpemVvZigKLVRfelVmaVNtc19Nb2RpZnlTbXMpKTtmb3IoaT0oMHg0NzIrMzM5MC0weDExYjApO2k8cHRNb2RpZnlCdWZmLT50b3RhbF9pZDtpKyspeworKDB4YTkrNjc1My0weDFiMGEpO21lbXNldCgmZ196VWZpU21zX21vZGlmeU1zZywoMHgyMzQ2KzUyOS0weDI1NTcpLHNpemVvZigKK1RfelVmaVNtc19Nb2RpZnlTbXMpKTtmb3IoaT0oMHgxNjMrNDk3Mi0weDE0Y2YpO2k8cHRNb2RpZnlCdWZmLT50b3RhbF9pZDtpKyspewogZ196VWZpU21zX21vZGlmeU1zZy5zaW1faWRbZ196VWZpU21zX21vZGlmeU1zZy5zaW1fY291bnRdPXB0TW9kaWZ5QnVmZi0+aWRbaV07CiBnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9jb3VudCsrO2dfelVmaVNtc19tb2RpZnlNc2cuc2ltX2luZGV4X2NvdW50Kys7fX1pbnQgCi16VWZpU21zX0dldFVucmVhZFNtc0luZGV4SW5TaW0oKXtjaGFyIHN0cl9pbmRleFsoMHg1YTMrMzk1NS0weDE0OTYpXT17Ci0oMHgyYjIrNTc4LTB4NGY0KX07aW50IGluZGV4PSgweGEyMisxNzQwLTB4MTBlZSk7aW50IGlzX2NjPSgweDM0Nys3MDI4LTB4MWViYik7Ci1pbnQgaVNtc0lkPSgweDFiZTMrOTE5LTB4MWY3YSk7VF96VWZpU21zX01vZGlmeVRhZyB0TW9kaWZ5SW5mbz17Ci0oMHgxM2IxKzIxNi0weDE0ODkpfTtjaGFyIFN0clZhbHVlWygweDQ0NCs3OTQ3LTB4MjM0NSldPXsoMHhjZWErNjYxLTB4ZjdmKX07Ci1tZW1zZXQoJnRNb2RpZnlJbmZvLCgweDExMTArMzM5MS0weDFlNGYpLHNpemVvZihUX3pVZmlTbXNfTW9kaWZ5VGFnKSk7aVNtc0lkPQorelVmaVNtc19HZXRVbnJlYWRTbXNJbmRleEluU2ltKCl7Y2hhciBzdHJfaW5kZXhbKDB4MTEzZCszMjE1LTB4MWQ0YyldPXsKKygweDQxZCsxMTA5LTB4ODcyKX07aW50IGluZGV4PSgweDE2N2MrMTk4NC0weDFlM2MpO2ludCBpc19jYz0oMHg0OTYrNTk0Ni0weDFiZDApCis7aW50IGlTbXNJZD0oMHg1MTMrNTU5NS0weDFhZWUpO1RfelVmaVNtc19Nb2RpZnlUYWcgdE1vZGlmeUluZm89eworKDB4MWQ2NCs5Mi0weDFkYzApfTtjaGFyIFN0clZhbHVlWygweGE3Mis0OTkzLTB4MWRlOSldPXsoMHgxZjhmKzE3NDEtMHgyNjVjKX07CittZW1zZXQoJnRNb2RpZnlJbmZvLCgweGZlNyszMTUzLTB4MWMzOCksc2l6ZW9mKFRfelVmaVNtc19Nb2RpZnlUYWcpKTtpU21zSWQ9CiBnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pZFtnX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pbmRleF07aWYoLQotKDB4MmMzKzgzMDQtMHgyMzMyKT09KGlzX2NjPXpVZmlTbXNfSXNDb25jYXRTbXMoaVNtc0lkKSkpe2F0X3ByaW50KExPR19FUlIsCisoMHhiODkrNjA0NC0weDIzMjQpPT0oaXNfY2M9elVmaVNtc19Jc0NvbmNhdFNtcyhpU21zSWQpKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDYzXHg2OFx4NjVceDYzXHg2Ylx4MjBceDYzXHg2Zlx4NmVceDYzXHg2MVx4NzRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyZSIKICk7cmV0dXJuIFpVRklfRkFJTDt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg1NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1M1x4NmRceDczXHg0OVx4NmVceDY0XHg2NVx4NzhceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDY5XHg3M1x4NWZceDYzXHg2M1x4M2FceDI1XHg2NCIKLSxpc19jYyk7aWYoKDB4ZGZiKzYwMjUtMHgyNTgzKT09aXNfY2Mpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTbXNJbmRleChpU21zSWQsCi0mdE1vZGlmeUluZm8saXNfY2MpKXtyZXR1cm4gWlVGSV9GQUlMO31nX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pbmRleCsrOworLGlzX2NjKTtpZigoMHgxOGZhKzM0OTktMHgyNmE0KT09aXNfY2Mpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTbXNJbmRleChpU21zSWQKKywmdE1vZGlmeUluZm8saXNfY2MpKXtyZXR1cm4gWlVGSV9GQUlMO31nX3pVZmlTbXNfbW9kaWZ5TXNnLnNpbV9pbmRleCsrOwogZ196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXhfY291bnQtLTt3aGlsZSh0TW9kaWZ5SW5mby5udW1fb2ZfaW5kaWNlcz4KLSgweDFkZmYrMTY5Ni0weDI0OWYpKXtpbmRleD10TW9kaWZ5SW5mby5pbmRpY2VzW3RNb2RpZnlJbmZvLmlkX2luZGV4XTsKKygweDgyZis3NDc0LTB4MjU2MSkpe2luZGV4PXRNb2RpZnlJbmZvLmluZGljZXNbdE1vZGlmeUluZm8uaWRfaW5kZXhdOwogZ19tb2RpZnlJbmRleC5pbmRleFtnX21vZGlmeUluZGV4LnRvdGFsXT1pbmRleDtnX21vZGlmeUluZGV4LnRvdGFsKys7dE1vZGlmeUluZm8KIC5pZF9pbmRleCsrO3RNb2RpZnlJbmZvLm51bV9vZl9pbmRpY2VzLS07cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0N1x4NjVceDc0XHg1NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1M1x4NmRceDczXHg0OVx4NmVceDY0XHg2NVx4NzhceDQ5XHg2ZVx4NTNceDY5XHg2ZFx4MjBceDViXHgzMVx4MjBceDNkXHgzZFx4MjBceDY5XHg3M1x4NWZceDYzXHg2M1x4NWRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NFx4MmNceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyNVx4NjQiICJcbiIKLSxpbmRleCxnX21vZGlmeUluZGV4LnRvdGFsKTt9fWVsc2V7bWVtc2V0KHN0cl9pbmRleCwoMHhmNDgrNDc3OS0weDIxZjMpLHNpemVvZigKKyxpbmRleCxnX21vZGlmeUluZGV4LnRvdGFsKTt9fWVsc2V7bWVtc2V0KHN0cl9pbmRleCwoMHg4NmMrNzA3MS0weDI0MGIpLHNpemVvZigKIHN0cl9pbmRleCkpO2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRTdG9yZVBvc0J5SWQoIlx4NjlceDZlXHg2NCIsc3RyX2luZGV4LAogc2l6ZW9mKHN0cl9pbmRleCksaVNtc0lkKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDY3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHg2Nlx4NzJceDZmXHg2ZFx4MjBceDY0XHg2Mlx4MjBceDY2XHg2MVx4NjlceDZjXHg2NFx4MmUiCkBAIC05OTYsMTQgKzk5NCwxNCBAQAogZ196VWZpU21zX21vZGlmeU1zZy5zaW1faW5kZXhfY291bnQtLTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ3XHg2NVx4NzRceDU1XHg2ZVx4NzJceDY1XHg2MVx4NjRceDUzXHg2ZFx4NzNceDQ5XHg2ZVx4NjRceDY1XHg3OFx4NDlceDZlXHg1M1x4NjlceDZkXHgyMFx4NWJceDMxXHgyMFx4MjFceDNkXHgyMFx4NjlceDczXHg1Zlx4NjNceDYzXHg1ZFx4NjlceDZlXHg2NFx4NjVceDc4XHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHgzZFx4MjVceDY0IiAiXG4iCiAsaW5kZXgsZ19tb2RpZnlJbmRleC50b3RhbCk7fXJldHVybiBaVUZJX1NVQ0M7fXZvaWQgelVmaVNtc19Nb2RpZnlNb2RlbVNtcygKLVRfelVmaVNtc19Nb2RpZnlGbGFnKnB0TW9kaWZ5QnVmZil7aW50IGF0UmVzPSgweDIxMWQrMjcyLTB4MjIyZCk7Y2hhciBTdHJWYWx1ZVsKLSgweDk0MSs2NTkyLTB4MjJmNyldPXsoMHgwKzM3MzEtMHhlOTMpfTtwcmludGYoCitUX3pVZmlTbXNfTW9kaWZ5RmxhZypwdE1vZGlmeUJ1ZmYpe2ludCBhdFJlcz0oMHgwKzYxNDktMHgxODA1KTtjaGFyIFN0clZhbHVlWworKDB4NDY1KzE3ODktMHhiNTgpXT17KDB4MTZiNSszNjk5LTB4MjUyOCl9O3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NGRceDZmXHg2NFx4NjlceDY2XHg3OVx4NGRceDZmXHg2NFx4NjVceDZkXHg1M1x4NmRceDczXHgyMFx4NzBceDc0XHg0ZFx4NmZceDY0XHg2OVx4NjZceDc5XHg0Mlx4NzVceDY2XHg2Nlx4MmRceDNlXHg3NFx4NzlceDcwXHg2NVx4MjBceDNkXHgyMFx4MjVceDY0XHgyMSIgIlxuIgogLHB0TW9kaWZ5QnVmZi0+dHlwZSk7e3pVZmlTbXNfZ2V0TW9kaWZ5SW5mbyhwdE1vZGlmeUJ1ZmYpO21lbXNldCgmZ19tb2RpZnlJbmRleCwKLSgweGFlYSszNDg5LTB4MTg4Yiksc2l6ZW9mKFRfelVmaVNtc19Nb2RpZnlJbmRleEluZm8pKTtwcmludGYoCisoMHhlM2ErMzQxNi0weDFiOTIpLHNpemVvZihUX3pVZmlTbXNfTW9kaWZ5SW5kZXhJbmZvKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0ZFx4NmZceDY0XHg2OVx4NjZceDc5XHg0ZFx4NmZceDY0XHg2NVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3MFx4NzRceDRkXHg2Zlx4NjRceDY5XHg2Nlx4NzlceDQyXHg3NVx4NjZceDY2XHgyZFx4M2VceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NWZceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDY0XHgyMSIgIlxuIgogLHB0TW9kaWZ5QnVmZi0+dG90YWxfaWQpO3doaWxlKGdfelVmaVNtc19tb2RpZnlNc2cuc2ltX2luZGV4X2NvdW50PgotKDB4YWFiKzgxMS0weGRkNikpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRVbnJlYWRTbXNJbmRleEluU2ltKCkpe2F0X3ByaW50KAorKDB4MTllZisxNTk0LTB4MjAyOSkpe2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRVbnJlYWRTbXNJbmRleEluU2ltKCkpe2F0X3ByaW50KAogTE9HX0VSUiwKICJceDY0XHg2NVx4NmNceDY1XHg3NFx4NjVceDIwXHg2MVx4NmNceDZjXHgzYVx4MjVceDY0XHgyMFx4NzNceDZkXHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjQiICJcbiIKICxXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDEpO3JldHVybjt9fXdoaWxlKGdfbW9kaWZ5SW5kZXguY3VyX2luZGV4PGdfbW9kaWZ5SW5kZXguCkBAIC0xMDIyLDIxICsxMDIwLDIxIEBACiB6VWZpU21zX0RlY29kZVNtc0RhdGEoVF96VWZpU21zX0RiU3RvcmVEYXRhKnBEYl9EYXRhLGludCBtc2dfaW5kZXgsCiB6VWZpU21zX1N0b3JlVHlwZSBpU3RvcmVQb3MsVF9TbXNTdGF0dXMgYlNtc19TdGF0dXMsd21zX21lc3NhZ2VfZm9ybWF0X2VudW1fdjAxIAogZm9ybWF0LGxvbmcgaVBkdV9MZW4sdW5zaWduZWQgY2hhcipwUGR1X1JlY2VpdmVkKXtUX3pVZmlTbXNfUmF3VHNEYXRhIHJhd190czsKLVRfelVmaVNtc19DbGllbnRUc0RhdGEgdHNfZGF0YV9wdHI7Y2hhciB0bXBbKDB4ZGNkKzE1MTAtMHgxM2E5KV07aW50IHRtcF9pPQotKDB4MTM1YysxNTA5LTB4MTk0MSk7dW5zaWduZWQgaW50IHBvcz0oMHgxYTIwKzE2MDEtMHgyMDYxKTtpbnQgcmVzdWx0PVpVRklfU1VDQzsKLWlmKE5VTEw9PXBEYl9EYXRhKXtyZXR1cm4gWlVGSV9GQUlMO31wRGJfRGF0YS0+bWVtX3N0b3JlPSh1bnNpZ25lZCBsb25nKQotaVN0b3JlUG9zO3BEYl9EYXRhLT5pbmRleD0odW5zaWduZWQgc2hvcnQpbXNnX2luZGV4O2lmKFJFQ0VJVkVEX1VOUkVBRD09Ci1iU21zX1N0YXR1cyl7cERiX0RhdGEtPnRhZz1XTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxO31lbHNlIGlmKFJFQ0VJVkVEX1JFQUQ9PQotYlNtc19TdGF0dXMpe3BEYl9EYXRhLT50YWc9V01TX1RBR19UWVBFX01UX1JFQURfVjAxO31lbHNlIGlmKFNUT1JFRF9VTlNFTkQ9PQotYlNtc19TdGF0dXMpe3BEYl9EYXRhLT50YWc9V01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTt9ZWxzZXtwRGJfRGF0YS0+dGFnPQorVF96VWZpU21zX0NsaWVudFRzRGF0YSB0c19kYXRhX3B0cjtjaGFyIHRtcFsoMHg2ZjkrNjIwNC0weDFmMmIpXTtpbnQgdG1wX2k9CisoMHhjMzkrNTI5OS0weDIwZWMpO3Vuc2lnbmVkIGludCBwb3M9KDB4OTExKzYzODEtMHgyMWZlKTtpbnQgcmVzdWx0PVpVRklfU1VDQztpZgorKE5VTEw9PXBEYl9EYXRhKXtyZXR1cm4gWlVGSV9GQUlMO31wRGJfRGF0YS0+bWVtX3N0b3JlPSh1bnNpZ25lZCBsb25nKWlTdG9yZVBvczsKK3BEYl9EYXRhLT5pbmRleD0odW5zaWduZWQgc2hvcnQpbXNnX2luZGV4O2lmKFJFQ0VJVkVEX1VOUkVBRD09YlNtc19TdGF0dXMpeworcERiX0RhdGEtPnRhZz1XTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxO31lbHNlIGlmKFJFQ0VJVkVEX1JFQUQ9PWJTbXNfU3RhdHVzKXsKK3BEYl9EYXRhLT50YWc9V01TX1RBR19UWVBFX01UX1JFQURfVjAxO31lbHNlIGlmKFNUT1JFRF9VTlNFTkQ9PWJTbXNfU3RhdHVzKXsKK3BEYl9EYXRhLT50YWc9V01TX1RBR19UWVBFX01PX05PVF9TRU5UX1YwMTt9ZWxzZXtwRGJfRGF0YS0+dGFnPQogV01TX1RBR19UWVBFX01PX1NFTlRfVjAxO31wRGJfRGF0YS0+bW9kZT0odW5zaWduZWQgc2hvcnQpZm9ybWF0O21lbXNldCgmcmF3X3RzLAotKDB4MjQzKzQxNi0weDNlMyksc2l6ZW9mKFRfelVmaVNtc19SYXdUc0RhdGEpKTttZW1zZXQoJnRzX2RhdGFfcHRyLAotKDB4MTAwYSszMTAyLTB4MWMyOCksc2l6ZW9mKHdtc19jbGllbnRfdHNfZGF0YV9zX3R5cGUpKTttZW1zZXQodG1wLAotKDB4MTc0YisyOTk4LTB4MjMwMSksc2l6ZW9mKHRtcCkpO3NucHJpbnRmKHRtcCxzaXplb2YodG1wKSwiXHgyNVx4NjQiLAotcFBkdV9SZWNlaXZlZFsoMHgxZWIzKzE4NjUtMHgyNWZjKV0pO3RtcF9pPWF0b2kodG1wKTtpZih0bXBfaTwoMHhmNzIrMjk4LTB4MTA5YykKLXx8dG1wX2k+SU5UX01BWC0oMHg0OTQrMTY0Ny0weGIwMikpe2F0X3ByaW50KExPR19FUlIsCisoMHgyMDcrMjk1NC0weGQ5MSksc2l6ZW9mKFRfelVmaVNtc19SYXdUc0RhdGEpKTttZW1zZXQoJnRzX2RhdGFfcHRyLAorKDB4ZWM0KzIxNDktMHgxNzI5KSxzaXplb2Yod21zX2NsaWVudF90c19kYXRhX3NfdHlwZSkpO21lbXNldCh0bXAsCisoMHg1ZDkrMzgwNC0weDE0YjUpLHNpemVvZih0bXApKTtzbnByaW50Zih0bXAsc2l6ZW9mKHRtcCksIlx4MjVceDY0IiwKK3BQZHVfUmVjZWl2ZWRbKDB4YTNkKzcyOTYtMHgyNmJkKV0pO3RtcF9pPWF0b2kodG1wKTtpZih0bXBfaTwKKygweDEwYTErMzgwMC0weDFmNzkpfHx0bXBfaT5JTlRfTUFYLSgweDZiNCszNTgtMHg4MTkpKXthdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg3MFx4NTBceDY0XHg3NVx4NWZceDUyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg2NFx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSx0bXBfaSk7cmV0dXJuIFpVRklfRkFJTDt9cG9zPXRtcF9pKygweDE5Zis3NDc1LTB4MWVkMSk7aWYocG9zPj1pUGR1X0xlbil7cmV0dXJuCissdG1wX2kpO3JldHVybiBaVUZJX0ZBSUw7fXBvcz10bXBfaSsoMHhmMmMrMTk3OC0weDE2ZTUpO2lmKHBvcz49aVBkdV9MZW4pe3JldHVybgogIFpVRklfRkFJTDt9cmF3X3RzLmxlbj1pUGR1X0xlbi1wb3M7bWVtY3B5KCh2b2lkKilyYXdfdHMuZGF0YSwodm9pZCopKAogcFBkdV9SZWNlaXZlZCtwb3MpLFdNU19NQVhfTEVOKTtyYXdfdHMudHBkdV90eXBlPXpVZmlTbXNfR2V0VHBkdVR5cGUoCiBwUGR1X1JlY2VpdmVkK3Bvcyk7cmF3X3RzLmZvcm1hdD0oV01TX01FU1NBR0VfRk9STUFUX0NETUFfVjAxPT1mb3JtYXQpPwpAQCAtMTA0Niw2MSArMTA0NCw2MiBAQAogcERiX0RhdGEpO2JyZWFrO31jYXNlIFdNU19NRVNTQUdFX0ZPUk1BVF9HV19CQ19WMDE6Y2FzZSAKIFdNU19NRVNTQUdFX0ZPUk1BVF9NV0lfVjAxOntyZXN1bHQ9WlVGSV9GQUlMO2JyZWFrO31kZWZhdWx0OntyZXN1bHQ9WlVGSV9GQUlMOwogYnJlYWs7fX1yZXR1cm4gcmVzdWx0O31UX3pVZmlTbXNfQ21kU3RhdHVzIElzU21zTG9hZFN1Y2Nlc3Modm9pZCl7Y2hhciBJc0luaXRbCi0oMHgxNzk4KzM1MjQtMHgyNTM4KV09eygweGI0MSs2NDAxLTB4MjQ0Mil9O3NjX2NmZ19nZXQoTlZfU01TX0xPQURfUkVTVUxULElzSW5pdAotLHNpemVvZihJc0luaXQpKTtpZigoMHg0NDArNDE2OC0weDE0ODgpPT1zdHJjbXAoIlx4NmZceDZiIixJc0luaXQpKXtwcmludGYoCisoMHgxZDMwKzEyOTUtMHgyMjFiKV09eygweDYzMCs1NjUtMHg4NjUpfTtzY19jZmdfZ2V0KE5WX1NNU19MT0FEX1JFU1VMVCxJc0luaXQsCitzaXplb2YoSXNJbml0KSk7aWYoKDB4ZmM4KzUwODMtMHgyM2EzKT09c3RyY21wKCJceDZmXHg2YiIsSXNJbml0KSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4MjBceDRjXHg2Zlx4NjFceDY0XHgyMFx4NzNceDc1XHg2M1x4NjNceDY1XHg3M1x4NzNceDIxIiAiXG4iCiApO3JldHVybiBXTVNfQ01EX1NVQ0NFU1M7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDZkXHg3M1x4MjBceDRjXHg2Zlx4NjFceDY0XHgyMFx4NzdceDcyXHg2Zlx4NmVceDY3XHgyMFx4MjEiICJcbiIKICk7cmV0dXJuIFdNU19DTURfRkFJTEVEO319Ci0jaWYgKDB4MTllYisxMzYwLTB4MWYzYikNCisjaWYgKDB4ZTA5KzYxOTktMHgyNjQwKQ0KIGludCB6VWZpU21zX0Zvcm1hdFNtcyhDSEFSKnBTbXNSYXdDb250ZW50LGludCBjb250ZW50U2l6ZSxUX3pVZmlTbXNfU21zSXRlbSoKLXB0U21zUGFyYSxpbnQgaUNtZElkKXtjaGFyKlAxPXN0cmNocihwU21zUmF3Q29udGVudCwoKGNoYXIpKDB4MTNjYSs0NDI0LTB4MjRlNikpCi0pO2lmKE5VTEw9PVAxKXtyZXR1cm4gWlVGSV9GQUlMO31jaGFyKlAyPXN0cmNocigoY2hhciopKFAxKygweDg4Nys2NjYwLTB4MjI4YSkpLAotKChjaGFyKSgweDZiZCs0NTYzLTB4MTg2NCkpKTtpZihOVUxMPT1QMil7cmV0dXJuIFpVRklfRkFJTDt9Y2hhcipQMz1zdHJjaHIoKGNoYXIKLSopKFAyKygweDI3Nis4NjI0LTB4MjQyNSkpLCgoY2hhcikoMHhlNWYrNDQzNi0weDFmODcpKSk7YXRCYXNlX1ByZVByb2NSZXMoCi1wU21zUmF3Q29udGVudCxjb250ZW50U2l6ZSk7aWYoKDB4MjhkKzM0NDMtMHhmZmYpPT1pQ21kSWQpe2lmKFAzPT1QMisKLSgweDU5Mys0ODctMHg3NzkpKXtzc2NhbmYocFNtc1Jhd0NvbnRlbnQsIlx4MjVceDY0XHgyMFx4MjVceDY0XHgyMFx4MjVceDY0XHgyMCIsCi0mcHRTbXNQYXJhLT5pbmRleCwmcHRTbXNQYXJhLT5zdGF0LCZwdFNtc1BhcmEtPmxlbmd0aCk7fWVsc2V7c3NjYW5mKAotcFNtc1Jhd0NvbnRlbnQsIlx4MjVceDY0XHgyMFx4MjVceDY0XHgyMFx4MjVceDMzXHgzMlx4NzNceDIwXHgyNVx4NjRceDIwIiwmCi1wdFNtc1BhcmEtPmluZGV4LCZwdFNtc1BhcmEtPnN0YXQscHRTbXNQYXJhLT5hbHBoYSwmcHRTbXNQYXJhLT5sZW5ndGgpO319ZWxzZSBpZgotKCgweDExZGIrMzExNy0weDFlMDYpPT1pQ21kSWQpe2lmKFAyPT1QMSsoMHgxODMrMzc4Mi0weDEwNDgpKXtzc2NhbmYoCi1wU21zUmF3Q29udGVudCwiXHgyNVx4NjRceDIwXHgyNVx4NjRceDIwIiwmcHRTbXNQYXJhLT5zdGF0LCZwdFNtc1BhcmEtPmxlbmd0aCk7fQotZWxzZXtzc2NhbmYocFNtc1Jhd0NvbnRlbnQsIlx4MjVceDY0XHgyMFx4MjVceDMzXHgzMlx4NzNceDIwXHgyNVx4NjRceDIwIiwmCi1wdFNtc1BhcmEtPnN0YXQscHRTbXNQYXJhLT5hbHBoYSwmcHRTbXNQYXJhLT5sZW5ndGgpO319YXRCYXNlX1Jlc3RvcmVTdHJpbmcoCi1wdFNtc1BhcmEtPmFscGhhKTthdEJhc2VfUmVzdG9yZVN0cmluZyhwdFNtc1BhcmEtPnBkdSk7cmV0dXJuIFpVRklfU1VDQzt9CitwdFNtc1BhcmEsaW50IGlDbWRJZCl7Y2hhcipQMT1zdHJjaHIocFNtc1Jhd0NvbnRlbnQsKChjaGFyKSgweDEwMzQrNDgxNy0weDIyZDkpKQorKTtpZihOVUxMPT1QMSl7cmV0dXJuIFpVRklfRkFJTDt9Y2hhcipQMj1zdHJjaHIoKGNoYXIqKShQMSsoMHgxMGY0KzE4NDAtMHgxODIzKSkKKywoKGNoYXIpKDB4M2Y5KzkzMS0weDc3MCkpKTtpZihOVUxMPT1QMil7cmV0dXJuIFpVRklfRkFJTDt9Y2hhcipQMz1zdHJjaHIoKGNoYXIqCispKFAyKygweDYwNCsyOTA2LTB4MTE1ZCkpLCgoY2hhcikoMHgxNzQzKzM0NDAtMHgyNDg3KSkpO2F0QmFzZV9QcmVQcm9jUmVzKAorcFNtc1Jhd0NvbnRlbnQsY29udGVudFNpemUpO2lmKCgweGE4KzY1ODMtMHgxYTVlKT09aUNtZElkKXtpZihQMz09UDIrCisoMHgxNTg4KzQzMjctMHgyNjZlKSl7c3NjYW5mKHBTbXNSYXdDb250ZW50LAorIlx4MjVceDY0XHgyMFx4MjVceDY0XHgyMFx4MjVceDY0XHgyMCIsJnB0U21zUGFyYS0+aW5kZXgsJnB0U21zUGFyYS0+c3RhdCwmCitwdFNtc1BhcmEtPmxlbmd0aCk7fWVsc2V7c3NjYW5mKHBTbXNSYXdDb250ZW50LAorIlx4MjVceDY0XHgyMFx4MjVceDY0XHgyMFx4MjVceDMzXHgzMlx4NzNceDIwXHgyNVx4NjRceDIwIiwmcHRTbXNQYXJhLT5pbmRleCwmCitwdFNtc1BhcmEtPnN0YXQscHRTbXNQYXJhLT5hbHBoYSwmcHRTbXNQYXJhLT5sZW5ndGgpO319ZWxzZSBpZigKKygweDcwOCs3MzUwLTB4MjNiYyk9PWlDbWRJZCl7aWYoUDI9PVAxKygweGVhKzIwNDgtMHg4ZTkpKXtzc2NhbmYocFNtc1Jhd0NvbnRlbnQsCisiXHgyNVx4NjRceDIwXHgyNVx4NjRceDIwIiwmcHRTbXNQYXJhLT5zdGF0LCZwdFNtc1BhcmEtPmxlbmd0aCk7fWVsc2V7c3NjYW5mKAorcFNtc1Jhd0NvbnRlbnQsIlx4MjVceDY0XHgyMFx4MjVceDMzXHgzMlx4NzNceDIwXHgyNVx4NjRceDIwIiwmcHRTbXNQYXJhLT5zdGF0LAorcHRTbXNQYXJhLT5hbHBoYSwmcHRTbXNQYXJhLT5sZW5ndGgpO319YXRCYXNlX1Jlc3RvcmVTdHJpbmcocHRTbXNQYXJhLT5hbHBoYSk7CithdEJhc2VfUmVzdG9yZVN0cmluZyhwdFNtc1BhcmEtPnBkdSk7cmV0dXJuIFpVRklfU1VDQzt9CiAjZW5kaWYNCiB2b2lkIHpVZmlTbXNfQ21nbFJlc3BQcm9jKFRfelNtc19TbXNJbmQqcFNtc0l0ZW0pe1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQotV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19EYlN0b3JlRGF0YSBkYl9kYXRhPXsoMHg3NmMrMzc5Ny0weDE2NDEpfTsKK1dNU19DTURfUFJPQ0VTU0lORztUX3pVZmlTbXNfRGJTdG9yZURhdGEgZGJfZGF0YT17KDB4ZjVjKzE1ODQtMHgxNThjKX07CiB6VWZpU21zX1N0b3JlVHlwZSBtZW1fc3RvcmU9V01TX1NUT1JBR0VfVFlQRV9VSU1fVjAxO3Vuc2lnbmVkIGNoYXIgcGR1X3RtcFsKLVpTTVNfUERVX1NJWkVdPXsoMHgxMGY1KzE5OTctMHgxOGMyKX07aW50IHRvdGFsX2NvdW50PSgweDE2YyszNTQ3LTB4ZjQ3KTtpbnQgCi1zaW1fY2FwYWJpbGl0eT0oMHgxMGJkKzM5NjQtMHgyMDM5KTtwcmludGYoCitaU01TX1BEVV9TSVpFXT17KDB4M2M3KzY4NTQtMHgxZThkKX07aW50IHRvdGFsX2NvdW50PSgweDdjOSszOTM3LTB4MTcyYSk7aW50IAorc2ltX2NhcGFiaWxpdHk9KDB4ZjNmKzUxMDItMHgyMzJkKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg0NVx4NmVceDc0XHg2NVx4NzJceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQzXHg2ZFx4NjdceDZjXHg1Mlx4NjVceDczXHg3MFx4NTBceDcyXHg2Zlx4NjNceDIxXHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4MjVceDY0XHgyZlx4NzNceDc0XHg2MVx4NzRceDNhXHgyNVx4NjRceDJmXHg2Y1x4NjVceDZlXHg2N1x4NzRceDY4XHgzYVx4MjVceDY0XHgyMSIgIlxuIgogLHBTbXNJdGVtLT5pbmRleCxwU21zSXRlbS0+c3RhdCxwU21zSXRlbS0+bGVuZ3RoKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3MFx4NjRceDc1XHgyMFx4NjRceDYxXHg3NFx4NjFceDVmXHg2Y1x4NjVceDZlXHgzYVx4MjVceDY0XHgyY1x4MjBceDczXHg3NFx4NzJceDNhXHgyNVx4NzNceDIxIiAiXG4iCi0sc3RybGVuKHBTbXNJdGVtLT5wZHUpLHBTbXNJdGVtLT5wZHUpO21lbXNldCgmZGJfZGF0YSwoMHg4NGYrNjQ0NC0weDIxN2IpLHNpemVvZgotKGRiX2RhdGEpKTttZW1zZXQocGR1X3RtcCwoMHhhMGYrNjUyOC0weDIzOGYpLHNpemVvZihwZHVfdG1wKSk7KHZvaWQpCi1TdHJpbmcyQnl0ZXMocFNtc0l0ZW0tPnBkdSxwZHVfdG1wLChpbnQpc3RybGVuKHBTbXNJdGVtLT5wZHUpKTsKLSNpZiAoMHgyOTMrMzQ3Ny0weDEwMjcpCi16VWZpU21zX0dldFJlcG9ydFN0YXR1cyhwU21zSXRlbS0+cGR1LCZwU21zSXRlbS0+c3RhdCk7aWYoKDB4MTVhOSszMDU0LTB4MjE5Mik9PQorLHN0cmxlbihwU21zSXRlbS0+cGR1KSxwU21zSXRlbS0+cGR1KTttZW1zZXQoJmRiX2RhdGEsKDB4MmE3KzE2MzgtMHg5MGQpLHNpemVvZigKK2RiX2RhdGEpKTttZW1zZXQocGR1X3RtcCwoMHgzNTMrMTIyMy0weDgxYSksc2l6ZW9mKHBkdV90bXApKTsodm9pZClTdHJpbmcyQnl0ZXMoCitwU21zSXRlbS0+cGR1LHBkdV90bXAsKGludClzdHJsZW4ocFNtc0l0ZW0tPnBkdSkpOworI2lmICgweGI1Yys1NjAzLTB4MjEzZSkKK3pVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHBTbXNJdGVtLT5wZHUsJnBTbXNJdGVtLT5zdGF0KTtpZigoMHg2ZjMrMzAyLTB4ODFjKT09CiBwU21zSXRlbS0+c3RhdCl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4NzBceDUzXHg2ZFx4NzNceDQ5XHg3NFx4NjVceDZkXHgyZFx4M2VceDczXHg3NFx4NjFceDc0XHgyMFx4M2RceDNkXHgyMFx4MzUiICJcbiIKICk7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQocGR1X3RtcCk7elVmaVNtc19EZWxNb2RlbVNtcyhwU21zSXRlbS0+aW5kZXgpOwogcmV0dXJuO30KICNlbmRpZg0KLSNpZiAoMHhlODArNTIxNy0weDIyZTApCisjaWYgKDB4MWEyYys3NTgtMHgxZDIxKQogcHJpbnRmKCJceDJhXHgyYVx4MmFceDJhXHg3NVx4NmVceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDNhXHgyNVx4NzMiICJcbiIsCiBwZHVfdG1wKTsKICNlbmRpZg0KICh2b2lkKXpVZmlTbXNfRGVjb2RlU21zRGF0YSgmZGJfZGF0YSxwU21zSXRlbS0+aW5kZXgsbWVtX3N0b3JlLChUX1Ntc1N0YXR1cykKIHBTbXNJdGVtLT5zdGF0LFdNU19NRVNTQUdFX0ZPUk1BVF9HV19QUF9WMDEscFNtc0l0ZW0tPmxlbmd0aCxwZHVfdG1wKTsKLSNpZiAoMHgyZTkrMTgzNC0weGExMikKKyNpZiAoMHg1YTErMzk1MS0weDE1MGYpCiBwcmludGYoIlx4MmFceDJhXHgyYVx4MmFceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDY1XHg2NFx4M2FceDI1XHg3MyIgIlxuIiwKIGRiX2RhdGEuc21zX2NvbnRlbnQpOwogI2VuZGlmDQotKHZvaWQpelVmaVNtc19Xcml0ZVNtc1RvRGIoJmRiX2RhdGEsbWVtX3N0b3JlLC0oMHgxYjNkKzIyNDEtMHgyM2ZkKSk7e30KLSNpZiAoMHgxNjA1KzI1NDAtMHgxZmYwKQorKHZvaWQpelVmaVNtc19Xcml0ZVNtc1RvRGIoJmRiX2RhdGEsbWVtX3N0b3JlLC0oMHgzOGMrNzIxNC0weDFmYjkpKTt7fQorI2lmICgweDE0YmMrMzczLTB4MTYzMCkKIGlmKFNNU19MT0NBVElPTl9TSU09PWdfelVmaVNtc19DdXJMb2NhdGlvbil7Q0hBUiBzaW1DYXBhYmlsaXR5WwotKDB4MWU5YysyMDUzLTB4MjY2ZildPXsoMHg5ODgrNjU2My0weDIzMmIpfTtzY19jZmdfZ2V0KAorKDB4YTA1KzI1NzYtMHgxM2UzKV09eygweDE3NCsxODgzLTB4OGNmKX07c2NfY2ZnX2dldCgKIFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUEFCSUxJVFksc2ltQ2FwYWJpbGl0eSxzaXplb2Yoc2ltQ2FwYWJpbGl0eSkpOwogc2ltX2NhcGFiaWxpdHk9YXRvaShzaW1DYXBhYmlsaXR5KTsodm9pZCl6VWZpU21zX0dldFRvdGFsQ291bnQoCiBaVEVfV01TX0RCX1NJTV9UQUJMRSwmdG90YWxfY291bnQpO2lmKHRvdGFsX2NvdW50PT1zaW1fY2FwYWJpbGl0eSl7CkBAIC0xMTEwLDE4ICsxMTA5LDE4IEBACiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQzXHg2OFx4NjVceDYzXHg2Ylx4NzNceDc0XHg2Zlx4NzJceDY1XHg0NFx4NjlceDcyXHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiICJcbiIKICk7cmV0dXJuO30KICNpZmRlZiBXRUJTX1NFQ1VSSVRZDQotaWYoYWNjZXNzKFpURV9XTVNfREJfUEFUSCxGX09LKSE9KDB4MWJmKzE3MTEtMHg4NmUpKXtpZigoYWNjZXNzKAotWlRFX1dNU19UTVAxX1BBVEgsRl9PSyk9PSgweDEzZjgrMTMyNC0weDE5MjQpKSYmKGFjY2VzcyhaVEVfV01TX1NFQ19QQVRILEZfT0spIT0KLSgweDE4YzYrMjQzMC0weDIyNDQpKSl7aWYocmVuYW1lKFpURV9XTVNfVE1QMV9QQVRILFpURV9XTVNfU0VDX1BBVEgpIT0KLSgweGZiNSszMjkxLTB4MWM5MCkpe3ByaW50ZigKK2lmKGFjY2VzcyhaVEVfV01TX0RCX1BBVEgsRl9PSykhPSgweDk1Zis0Mzk5LTB4MWE4ZSkpe2lmKChhY2Nlc3MoCitaVEVfV01TX1RNUDFfUEFUSCxGX09LKT09KDB4MTEyMCs1MDg4LTB4MjUwMCkpJiYoYWNjZXNzKFpURV9XTVNfU0VDX1BBVEgsRl9PSykhPQorKDB4ODg4KzMwMTMtMHgxNDRkKSkpe2lmKHJlbmFtZShaVEVfV01TX1RNUDFfUEFUSCxaVEVfV01TX1NFQ19QQVRIKSE9CisoMHg0NmIrMjY2MS0weGVkMCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDU3XHg0ZFx4NTNceDVmXHg1NFx4NGRceDUwXHgzMVx4NWZceDUwXHg0MVx4NTRceDQ4XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiICJcbiIKLSk7fX1pZigoYWNjZXNzKFpURV9XTVNfVE1QMF9QQVRILEZfT0spPT0oMHgxYmUxKzI1MDUtMHgyNWFhKSkmJihhY2Nlc3MoCi1aVEVfV01TX1NFQ19QQVRILEZfT0spIT0oMHg4OTkrNzUyMS0weDI1ZmEpKSl7aWYocmVuYW1lKFpURV9XTVNfVE1QMF9QQVRILAotWlRFX1dNU19TRUNfUEFUSCkhPSgweDQwYSs1NjI5LTB4MWEwNykpe3ByaW50ZigKKyk7fX1pZigoYWNjZXNzKFpURV9XTVNfVE1QMF9QQVRILEZfT0spPT0oMHgzNGYrNjE3NC0weDFiNmQpKSYmKGFjY2VzcygKK1pURV9XTVNfU0VDX1BBVEgsRl9PSykhPSgweDEyOGYrNDA5NC0weDIyOGQpKSl7aWYocmVuYW1lKFpURV9XTVNfVE1QMF9QQVRILAorWlRFX1dNU19TRUNfUEFUSCkhPSgweDE3ZjIrNzY1LTB4MWFlZikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDU3XHg0ZFx4NTNceDVmXHg1NFx4NGRceDUwXHgzMFx4NWZceDUwXHg0MVx4NTRceDQ4XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiICJcbiIKLSk7fX1pZihhY2Nlc3MoWlRFX1dNU19TRUNfUEFUSCxGX09LKT09KDB4OTYwKzUxMDgtMHgxZDU0KSl7Y2hhciBybnVtX2J1ZlsKLSgweDFjNmYrODgwLTB4MWZjNyldPXsoMHgzNTErNjg5OC0weDFlNDMpfTtjaGFyIGNtZFsoMHg5YTMrMTczOS0weGZlZSldPXsKLSgweDFjNTkrMTQ3Mi0weDIyMTkpfTtzY19jZmdfZ2V0KCJceDcyXHg2ZVx4NzVceDZkXHg1Zlx4NjFceDc0IixybnVtX2J1ZixzaXplb2YoCispO319aWYoYWNjZXNzKFpURV9XTVNfU0VDX1BBVEgsRl9PSyk9PSgweGNjKzgyODAtMHgyMTI0KSl7Y2hhciBybnVtX2J1ZlsKKygweDE0ZTArNDMzMi0weDI1YjQpXT17KDB4YmM1KzU5MTYtMHgyMmUxKX07Y2hhciBjbWRbKDB4MjZhKzcwMTgtMHgxZDU0KV09eworKDB4MTQzMSs0NjQ3LTB4MjY1OCl9O3NjX2NmZ19nZXQoIlx4NzJceDZlXHg3NVx4NmRceDVmXHg2MVx4NzQiLHJudW1fYnVmLHNpemVvZigKIHJudW1fYnVmKSk7c25wcmludGYoY21kLHNpemVvZihjbWQpLAogIlx4MmZceDYyXHg2OVx4NmVceDJmXHg2Zlx4NzBceDY1XHg2ZVx4NzNceDczXHg2Y1x4MjBceDY1XHg2ZVx4NjNceDIwXHgyZFx4NjRceDIwXHgyZFx4NjFceDY1XHg3M1x4MzJceDM1XHgzNlx4MjBceDJkXHg3M1x4NjFceDZjXHg3NFx4MjBceDJkXHg2OVx4NmVceDIwXHgyNVx4NzNceDIwXHgyZFx4NmZceDc1XHg3NFx4MjBceDI1XHg3M1x4MjBceDJkXHg3MFx4NjFceDczXHg3M1x4MjBceDcwXHg2MVx4NzNceDczXHgzYVx4MjVceDczIgogLFpURV9XTVNfU0VDX1BBVEgsWlRFX1dNU19EQl9QQVRILHJudW1fYnVmKTt6eGljX3N5c3RlbShjbWQpO319CkBAIC0xMTMzLDQ4ICsxMTMyLDQ3IEBACiB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7elVmaVNtc19TZW5kU21zU3RhdHVzSW5mbygKIE1TR19TTVNfREVGQVVMVCk7Z196VWZpU21zX01zZ1JlZmVyPXpVZmlTbXNfR2V0U21zTWF4UmVmZXJJbkRiKCk7CiBnX3pVZmlTbXNfQ29uY2F0U21zUmVmZXJlbmNlPXpVZmlTbXNfR2V0Q29uY2F0TWF4UmVmZXJJbkRiKCk7fXZvaWQgCi16VWZpU21zX0NmZ1Ntc052SW5pdCh2b2lkKXtjaGFyIHRtcFsoMHg1ZTYrMTc5OC0weGNlMildPXsoMHgxZDIxKzc2Mi0weDIwMWIpfTsKK3pVZmlTbXNfQ2ZnU21zTnZJbml0KHZvaWQpe2NoYXIgdG1wWygweDlmMis2MzU1LTB4MjJiYildPXsoMHgyM2MrNzc4NC0weDIwYTQpfTsKIHNjX2NmZ19zZXQoTlZfU01TX1NUT1JFLCIiKTtzY19jZmdfc2V0KE5WX1NNU19MT0FEX1JFU1VMVCwiIik7c2NfY2ZnX3NldCgKIFpURV9XTVNfTlZDT05GSUdfUkVDRVZJRUQsIiIpO3NjX2NmZ19zZXQoTlZfU01TX0NFTlRFUl9OVU0sIiIpO3NucHJpbnRmKHRtcCwKIHNpemVvZih0bXApLCJceDI1XHg2NCIsWlRFX1dNU19EQl9NU0dfQ09VTlRfTUFYKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19OVl9DQVBBQklMSVRZLHRtcCk7fVZPSUQgelVmaVNtc19Jbml0Q21kU3RhdHVzKAogVF96VWZpU21zX1N0YXR1c0luZm8qcFN0YXR1c0luZm8sVF96VWZpU21zX0NtZFR5cGUgaUNtZElkKXttZW1zZXQoKHZvaWQqKQotcFN0YXR1c0luZm8sKDB4NzYwKzk0NS0weGIxMSksc2l6ZW9mKFRfelVmaVNtc19TdGF0dXNJbmZvKSk7cFN0YXR1c0luZm8tPmNtZD0KK3BTdGF0dXNJbmZvLCgweDEzZDcrNDU4My0weDI1YmUpLHNpemVvZihUX3pVZmlTbXNfU3RhdHVzSW5mbykpO3BTdGF0dXNJbmZvLT5jbWQ9CiBpQ21kSWQ7cFN0YXR1c0luZm8tPmNtZF9zdGF0dXM9V01TX0NNRF9QUk9DRVNTSU5HO3BTdGF0dXNJbmZvLT5lcnJfY29kZT0KLVpURV9TTVNfQ01TX05PTkU7cFN0YXR1c0luZm8tPnNlbmRfZmFpbGVkX2NvdW50PSgweDE2YWIrMzYzNS0weDI0ZGUpO3BTdGF0dXNJbmZvCi0tPmRlbGV0ZV9mYWlsZWRfY291bnQ9KDB4MWE4MisxNjU5LTB4MjBmZCk7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoCi1wU3RhdHVzSW5mbyk7fXZvaWQgelVmaVNtc19DZmdJbml0KHZvaWQpe2NoYXIgdG1wWygweGRjYysyNTE1LTB4MTc5NSldPXsKLSgweDRhNys1Mzg0LTB4MTlhZil9O3NjX2NmZ19zZXQoTlZfU01TX1NUQVRFLCIiKTtzY19jZmdfc2V0KAotWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCwiIik7c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQsIiIpO3NjX2NmZ19zZXQoCi1OVl9TTVNfUkVDVl9SRVNVTFQsIiIpO3NucHJpbnRmKHRtcCxzaXplb2YodG1wKSwiXHgyNVx4NjQiLAotWlRFX1dNU19EQl9NU0dfQ09VTlRfTUFYKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfTlZfQ0FQQUJJTElUWSx0bXApOwotc2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVBBQklMSVRZLCIiKTtzY19jZmdfc2V0KAorWlRFX1NNU19DTVNfTk9ORTtwU3RhdHVzSW5mby0+c2VuZF9mYWlsZWRfY291bnQ9KDB4ZDg1KzQwNjktMHgxZDZhKTtwU3RhdHVzSW5mbworLT5kZWxldGVfZmFpbGVkX2NvdW50PSgweGIwKzM4NTQtMHhmYmUpOyh2b2lkKXpVZmlTbXNfU2V0Q21kU3RhdHVzKHBTdGF0dXNJbmZvKTsKK312b2lkIHpVZmlTbXNfQ2ZnSW5pdCh2b2lkKXtjaGFyIHRtcFsoMHg0MmMrNzk1OS0weDIzMzkpXT17KDB4ZmRkKzE3MDItMHgxNjgzKX07CitzY19jZmdfc2V0KE5WX1NNU19TVEFURSwiIik7c2NfY2ZnX3NldChaVEVfV01TX05WQ09ORklHX1JFQ0VWSUVELCIiKTtzY19jZmdfc2V0KAorTlZfU01TX0xPQURfUkVTVUxULCIiKTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiIik7c25wcmludGYodG1wLHNpemVvZih0bXAKKyksIlx4MjVceDY0IixaVEVfV01TX0RCX01TR19DT1VOVF9NQVgpO3NjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19OVl9DQVBBQklMSVRZCissdG1wKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUEFCSUxJVFksIiIpO3NjX2NmZ19zZXQoCiBaVEVfV01TX05WQ09ORklHX1NNU19SRVBPUlQsIiIpO3NjX2NmZ19zZXQoTlZfU01TX0RCX0NIQU5HRSwiXHgzMSIpO3NjX2NmZ19zZXQoCiBOVl9TTVNfQ0VOVEVSX05VTSwiIik7fWludCB6VWZpU21zX0lzVW5yZWFkU21zKFRfelVmaVNtc19NZW1vcnlUeXBlIG1lbV9zdG9yZSl7Ci1pbnQgdG90YWxfY291bnQ9KDB4MThhMisyMDYyLTB4MjBiMCk7Y2hhciBidWZbKDB4YTIrMTk5Ni0weDg1YSldPXsKLSgweDVjOCszMjM2LTB4MTI2Yyl9O2lmKFpVRklfRkFJTD09elVmaVNtc19HZXRUYWdDb3VudEluRGIobWVtX3N0b3JlLAoraW50IHRvdGFsX2NvdW50PSgweDEwM2YrNTAxLTB4MTIzNCk7Y2hhciBidWZbKDB4YzUzKzUxNjctMHgyMDZlKV09eworKDB4MTAzYiszMzQtMHgxMTg5KX07aWYoWlVGSV9GQUlMPT16VWZpU21zX0dldFRhZ0NvdW50SW5EYihtZW1fc3RvcmUsCiBXTVNfVEFHX1RZUEVfTVRfTk9UX1JFQURfVjAxLCZ0b3RhbF9jb3VudCkpe3JldHVybiBGQUxTRTt9c3ByaW50ZihidWYsIlx4MjVceDY0IgogLHRvdGFsX2NvdW50KTtzY19jZmdfc2V0KAogIlx4NzNceDZkXHg3M1x4NWZceDc1XHg2ZVx4NzJceDY1XHg2MVx4NjRceDVmXHg2M1x4NmZceDc1XHg2ZVx4NzQiLGJ1Zik7aWYoCi0oMHgzNjMrNzgyNy0weDIxZjYpPT10b3RhbF9jb3VudCl7cmV0dXJuIEZBTFNFO31lbHNle3JldHVybiBUUlVFO319Vk9JRCAKKygweGZhZCsxODEwLTB4MTZiZik9PXRvdGFsX2NvdW50KXtyZXR1cm4gRkFMU0U7fWVsc2V7cmV0dXJuIFRSVUU7fX1WT0lEIAogelVmaVNtc19TZW5kU21zU3RhdHVzSW5mbyh3bXNfbWVzc2FnZV9zdGF0dXNfaW5mbyBzbXNfb3ApewotVF96VWZpX1Ntc1N0YXR1c0luZm9JbmQgaW5kPXsoMHg0ODQrNzAxMS0weDFmZTcpfTtDSEFSIHRlbXBbKDB4MTgyOSsxNzcwLTB4MWVlMSkKLV09eygweDE0NWYrMzAzNC0weDIwMzkpfTtpZihzbXNfb3A9PU1TR19TTVNfTkVXKXtpbmQuc21zX25ld19pbmQ9Ci0oMHg1OWErMTcxOS0weGM1MCk7fWlmKHNtc19vcD09TVNHX1NNU19SRUFESU5HKXtpbmQuc21zX2lzX3JlYWRpbmc9Ci0oMHgxMmNhKzMxNzMtMHgxZjJlKTt9aWYoelVmaVNtc19Jc1VucmVhZFNtcyhaVEVfV01TX01FTU9SWV9OVikpe2luZC4KLXNtc191bnJlYWRfaW5kPSgweGY0MysyNjYtMHgxMDRjKTt9ZWxzZXtpbmQuc21zX3VucmVhZF9pbmQ9KDB4MTFkZCs1MTQtMHgxM2RmKTt9Ci1zY19jZmdfZ2V0KCJceDczXHg2ZFx4NzNceDVmXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0IiwKK1RfelVmaV9TbXNTdGF0dXNJbmZvSW5kIGluZD17KDB4NTNiKzQwNzUtMHgxNTI2KX07Q0hBUiB0ZW1wWygweDFiZDQrMjI0Mi0weDI0NjQpCitdPXsoMHgzYTArMjQzNC0weGQyMil9O2lmKHNtc19vcD09TVNHX1NNU19ORVcpe2luZC5zbXNfbmV3X2luZD0KKygweDg5Zis0OTQyLTB4MWJlYyk7fWlmKHNtc19vcD09TVNHX1NNU19SRUFESU5HKXtpbmQuc21zX2lzX3JlYWRpbmc9CisoMHg0MmErNTAzMC0weDE3Y2YpO31pZih6VWZpU21zX0lzVW5yZWFkU21zKFpURV9XTVNfTUVNT1JZX05WKSl7aW5kLgorc21zX3VucmVhZF9pbmQ9KDB4MTBmNSszOTk4LTB4MjA5Mik7fWVsc2V7aW5kLnNtc191bnJlYWRfaW5kPSgweDQyYSsxMDM0LTB4ODM0KTsKK31zY19jZmdfZ2V0KCJceDczXHg2ZFx4NzNceDVmXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0IiwKIHRlbXAsc2l6ZW9mKHRlbXApKTtpbmQuc21zX3VucmVhZF9jb3VudD1hdG9pKHRlbXApO2lmKChnX3pVZmlTbXNfTWVtRnVsbEZsYWdbCiBXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV09PVRSVUUpfHwoZ196VWZpU21zX01lbUZ1bGxGbGFnW1dNU19TVE9SQUdFX1RZUEVfVUlNX1YwMQotXT09VFJVRSkpe2luZC5zbXNfbWVtb3J5X2Z1bGxfaW5kPSgweDE3YzErMTU2My0weDFkZGIpO31lbHNle2luZC4KLXNtc19tZW1vcnlfZnVsbF9pbmQ9KDB4NWEyKzI1NTUtMHhmOWQpO31wcmludGYoCitdPT1UUlVFKSl7aW5kLnNtc19tZW1vcnlfZnVsbF9pbmQ9KDB4MTkxZisxMTkzLTB4MWRjNyk7fWVsc2V7aW5kLgorc21zX21lbW9yeV9mdWxsX2luZD0oMHgxNjkyKzIxODQtMHgxZjFhKTt9cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDZkXHg3M1x4NTNceDc0XHg2MVx4NzRceDc1XHg3M1x4NDlceDZlXHg2Nlx4NmZceDIwXHg3NVx4NmVceDcyXHg2NVx4NjFceDY0XHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NjZceDc1XHg2Y1x4NmNceDNkXHgyNVx4NjRceDJjXHgyMFx4NmVceDY1XHg3N1x4M2RceDI1XHg2NFx4MmNceDIwXHg3Mlx4NjVceDYxXHg2NFx4NjlceDZlXHg2N1x4M2RceDI1XHg2NCIgIlxuIgogLGluZC5zbXNfdW5yZWFkX2luZCxpbmQuc21zX21lbW9yeV9mdWxsX2luZCxpbmQuc21zX25ld19pbmQsaW5kLnNtc19pc19yZWFkaW5nKTsKIGlwY19zZW5kX21lc3NhZ2UoTU9EVUxFX0lEX1NNUyxNT0RVTEVfSURfTU1JLE1TR19DTURfU01TX1NUQVRVU19JTkZPX0lORCxzaXplb2YoCi1UX3pVZmlfU21zU3RhdHVzSW5mb0luZCksJmluZCwoMHgyOCs4Mzc4LTB4MjBlMikpO2lmKGluZC5zbXNfbWVtb3J5X2Z1bGxfaW5kPT0KLSgweGQwKzI5NTMtMHhjNTgpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKK1RfelVmaV9TbXNTdGF0dXNJbmZvSW5kKSwmaW5kLCgweDFjMDkrMTI4NS0weDIxMGUpKTtpZihpbmQuc21zX21lbW9yeV9mdWxsX2luZD09CisoMHgxOWUyKzg4OS0weDFkNWEpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKICJceDczXHg2ZFx4NzNceDVmXHg2ZFx4NjVceDZkXHg2Zlx4NzJceDc5XHg1Zlx4NjZceDc1XHg2Y1x4NmMiKTt9ZWxzZSBpZihpbmQuCi1zbXNfdW5yZWFkX2luZD09KDB4NWYrOTU3Mi0weDI1YzIpKXtzY19jZmdfc2V0KE5WX1NNU19JTklUX1NUQVRVUywKK3Ntc191bnJlYWRfaW5kPT0oMHgxODNmKzE4NjgtMHgxZjhhKSl7c2NfY2ZnX3NldChOVl9TTVNfSU5JVF9TVEFUVVMsCiAiXHg3M1x4NmRceDczXHg1Zlx4NzVceDZlXHg3Mlx4NjVceDYxXHg2NCIpO31lbHNle3NjX2NmZ19zZXQoTlZfU01TX0lOSVRfU1RBVFVTLAogIlx4NzNceDZkXHg3M1x4NWZceDZlXHg2Zlx4NzJceDZkXHg2MVx4NmMiKTt9cmV0dXJuO31WT0lEIEJha05vdGlmaWNhdGlvblNtcygKIGNoYXIqcHVzaFNtcyxpbnQgcHVzaFNtc0xlbil7RklMRSpmcD1OVUxMO2ludCBsZW47ZnA9Zm9wZW4oCkBAIC0xMTgzLDcgKzExODEsNyBAQAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDJceDYxXHg2Ylx4NGVceDZmXHg3NFx4NjlceDY2XHg2OVx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4NTNceDZkXHg3M1x4MjBceDY2XHg2Zlx4NzBceDY1XHg2ZVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3MiIgIlxuIgogKTthdF9wcmludChMT0dfRVJSLAogIlx4NjZceDZmXHg3MFx4NjVceDZlXHgyOFx4MjBceDJmXHg3NVx4NzNceDcyXHgyZlx4NjRceDZkXHgyZlx4NjZceDZmXHg3NFx4NjFceDVmXHg3MFx4NzVceDczXHg2OFx4NWZceDZkXHg3M1x4NjdceDJlXHg2NFx4NjFceDc0XHg2MVx4MjBceDJjXHgyMFx4MjdceDc3XHgyYlx4MjdceDI5XHgyMFx4NjVceDcyXHg3Mlx4NmZceDcyXHgyMSIKLSk7cmV0dXJuO31sZW49ZndyaXRlKHB1c2hTbXMsKDB4NmEyKzY4NjQtMHgyMTcxKSxwdXNoU21zTGVuLGZwKTtpZihsZW49PQorKTtyZXR1cm47fWxlbj1md3JpdGUocHVzaFNtcywoMHg0YmIrNDY5NC0weDE3MTApLHB1c2hTbXNMZW4sZnApO2lmKGxlbj09CiBwdXNoU21zTGVuKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg0Mlx4NjFceDZiXHg0ZVx4NmZceDc0XHg2OVx4NjZceDY5XHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHg1M1x4NmRceDczXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NzRceDZmXHgyMFx4NGVceDZmXHg3NFx4NjlceDY2XHg2OVx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4NjJceDYxXHg2Ylx4MjBceDY2XHg2OVx4NmNceDY1XHgyMFx4NGZceDRiXHgyY1x4MjBceDZjXHg2NVx4NmVceDNkXHgyNVx4NjRceDIwIiAiXG4iCiAsbGVuKTtwcmludGYoCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfbWFpbi5jIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX21haW4uYwppbmRleCBkMmIzY2E3Li5hNTg3YjJjIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfbWFpbi5jCisrKyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19tYWluLmMKQEAgLTE1LDQzICsxNSw0MiBAQAogZ196VWZpU21zX0ZpbmFsQ21nc0J1ZjtleHRlcm4gaW50IGdfelVmaVNtc19DdXJDb25jYXRTZWdObztleHRlcm4gCiBUX3pVZmlTbXNfRGJTdG9yZURhdGEgZ196VWZpU21zX0RiU3RvcmVEYXRhW1pURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVhdO2V4dGVybgogIGludCBnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50O2V4dGVybiBpbnQgZ196VWZpU21zX0NvbmNhdFRvdGFsTnVtO2V4dGVybiBVSU5UOCAKLWdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM7aW50IGlTbXNJbmRleD0oMHgyMzg3KzYyLTB4MjNjNSk7aW50IGdfelNtc19Nc3FJZD0tCi0oMHgxM2YzKzQ3MjItMHgyNjY0KTtpbnQgZ196U21zX0xvY2FsTXNxSWQ9LSgweDEzYzgrMTg3Ni0weDFiMWIpO3NlbV90IAotZ19zbXNfc2VtX2lkO1RfelNtc19vcHRSc3AgZ19zbXNPcHRSc3A9eygweDE4NSszOTYyLTB4MTBmZil9O3N0YXRpYyBjb25zdCAKK2dfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM7aW50IGlTbXNJbmRleD0oMHgxODhmKzIzNjktMHgyMWQwKTtpbnQgZ196U21zX01zcUlkPS0KKygweDkzNis1ODgwLTB4MjAyZCk7aW50IGdfelNtc19Mb2NhbE1zcUlkPS0oMHgxMDA1KzM5OTktMHgxZmEzKTtzZW1fdCAKK2dfc21zX3NlbV9pZDtUX3pTbXNfb3B0UnNwIGdfc21zT3B0UnNwPXsoMHg3ZmQrNTg5OS0weDFmMDgpfTtzdGF0aWMgY29uc3QgCiBUX3pTbXNIYW5kbGVUYWJsZSBTbXNIYW5kbGVXZWJUYWJbXT17e01TR19DTURfU0VORF9TTVMsYXRXZWJfU2VuZFNtcyxUUlVFfSx7CiBNU0dfQ01EX0RFTF9TTVNfQllfSU5ERVgsYXRXZWJfRGVsU21zQnlJbmRleCxUUlVFfSx7TVNHX0NNRF9TTVNfTU9ESUZZX1RBRywKIGF0V2ViX1JlYWRTbXMsVFJVRX0se01TR19DTURfRFJBRlRTX1NBVkUsYXRXZWJfU2F2ZVNtcyxGQUxTRX0sewogTVNHX0NNRF9TTVNfTE9DQVRJT05fU0VULGF0V2ViX1NldFNtcyxUUlVFfSx7TVNHX0NNRF9TTVNfT1VUREFURV9DSEVDSywKLWF0V2ViX091dGRhdGVTbXNDaGVjayxUUlVFfSx7KDB4YTEzKzUwNzMtMHgxZGU0KSxOVUxMLEZBTFNFfX07Vk9JRCBhdFdlYl9TZW5kU21zCithdFdlYl9PdXRkYXRlU21zQ2hlY2ssVFJVRX0seygweGNlMCs1MDIxLTB4MjA3ZCksTlVMTCxGQUxTRX19O1ZPSUQgYXRXZWJfU2VuZFNtcwogKFVJTlQ4KnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4MTZlOCszMTg2LTB4MjM1YSl9O2Fzc2VydChwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKikKLXBEYXRhYnVmO3pVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cyxXTVNfU01TX0NNRF9NU0dfU0VORCk7KHZvaWQpCi16VWZpU21zX1NlbmRSYXdTbXMoKFRfelVmaVNtc19TZW5kUmVxKilwdE1lc3NhZ2UtPm1zZ19kYXRhKTt9Vk9JRCAKLWF0V2ViX0RlbFNtc0J5SW5kZXgoVUlOVDgqcERhdGFidWYpe1RfelVmaVNtc19EZWxSZXEgdERlbFJlcT17Ci0oMHgxN2YyKzI5MDAtMHgyMzQ2KX07VF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9QUk9DRVNTSU5HOwotVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4MWEzKzg3NzQtMHgyM2U5KX07YXNzZXJ0KHBEYXRhYnVmIT1OVUxMKTtwcmludGYKLSgiW1NNU10gYXRXZWJfRGVsU21zQnlJbmRleCByZWN2IG1zZ1xuIik7bWVtY3B5KCZ0RGVsUmVxLHBEYXRhYnVmLHNpemVvZigKLVRfelVmaVNtc19EZWxSZXEpKTt6VWZpU21zX0luaXRDbWRTdGF0dXMoJnRTdGF0dXMsV01TX1NNU19DTURfTVNHX0RFTEVURSk7cmVzdWx0Ci09elVmaVNtc19EZWxldGVTbXMoJnREZWxSZXEpO3RTdGF0dXMuY21kX3N0YXR1cz1yZXN1bHQ7KHZvaWQpCi16VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cyk7elVmaU1taV9TZW5kU21zU3RhdHVzKCk7fVZPSUQgYXRXZWJfRGVsU21zQnlUeXBlKAotVUlOVDgqcERhdGFidWYpewotI2lmICgweGFiZCs0MjctMHhjNjgpDQorKDB4MmIrNjkyNC0weDFiMzcpfTthc3NlcnQocERhdGFidWYhPU5VTEwpO3B0TWVzc2FnZT0oVF96R29haGVhZE1zZ0J1ZiopcERhdGFidWYKKzt6VWZpU21zX0luaXRDbWRTdGF0dXMoJnRTdGF0dXMsV01TX1NNU19DTURfTVNHX1NFTkQpOyh2b2lkKXpVZmlTbXNfU2VuZFJhd1NtcygoCitUX3pVZmlTbXNfU2VuZFJlcSopcHRNZXNzYWdlLT5tc2dfZGF0YSk7fVZPSUQgYXRXZWJfRGVsU21zQnlJbmRleChVSU5UOCpwRGF0YWJ1ZgorKXtUX3pVZmlTbXNfRGVsUmVxIHREZWxSZXE9eygweGM1NCszODIyLTB4MWI0Mil9O1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQorV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDZiNCszOTg3LTB4MTY0Nyl9O2Fzc2VydCgKK3BEYXRhYnVmIT1OVUxMKTtwcmludGYoIltTTVNdIGF0V2ViX0RlbFNtc0J5SW5kZXggcmVjdiBtc2dcbiIpO21lbWNweSgmdERlbFJlcSwKK3BEYXRhYnVmLHNpemVvZihUX3pVZmlTbXNfRGVsUmVxKSk7elVmaVNtc19Jbml0Q21kU3RhdHVzKCZ0U3RhdHVzLAorV01TX1NNU19DTURfTVNHX0RFTEVURSk7cmVzdWx0PXpVZmlTbXNfRGVsZXRlU21zKCZ0RGVsUmVxKTt0U3RhdHVzLmNtZF9zdGF0dXM9CityZXN1bHQ7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMpO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO31WT0lEIAorYXRXZWJfRGVsU21zQnlUeXBlKFVJTlQ4KnBEYXRhYnVmKXsKKyNpZiAoMHgxYjRhKzU2Ny0weDFkODEpDQogV0VCX0RFTF9TTVNfQllfVFlQRSpyZXE9TlVMTDtyZXE9KFdFQl9ERUxfU01TX0JZX1RZUEUqKXBEYXRhYnVmO2Fzc2VydChyZXEhPU5VTEwKICk7aWYocmVxLT5lTG9jYXRpb24hPVpTTVNfTE9DQVRJT05fU0lNKXtaVEVfTE9HKExPR19FUlIsCiAiXHg3YVx4NTNceDZkXHg3M1x4NWZceDUwXHg3Mlx4NjVceDcwXHg0NFx4NjVceDZjXHg0Mlx4NzlceDU0XHg3OVx4NzBceDY1XHgyMFx4NzBceDYxXHg3Mlx4NjFceDIwXHg0ZVx4NTVceDRjXHg0Y1x4MmUiICJcbiIKICk7cmV0dXJuO316U21zX0NoYW5nZU1haW5TdGF0ZShaU01TX1NUQVRFX0RFTElORyk7WlRFX0xPRyhMT0dfREVCVUcsCiAiXHg3YVx4NTNceDZkXHg3M1x4NWZceDUwXHg3Mlx4NjVceDcwXHg0NFx4NjVceDZjXHg0Mlx4NzlceDU0XHg3OVx4NzBceDY1XHgyMFx4NzBceDczXHg3NFx4NTJceDY1XHg3MVx4MmRceDNlXHg2NVx4NDJceDZmXHg3OFx4NGVceDYxXHg2ZFx4NjVceDNkXHgyNVx4NjQiICJcbiIKLSxyZXEtPmVCb3hOYW1lKTtTTVNfRGVsZXRlUmVjb3JkRnJvbVhNTChTTVNfTE9DQVRJT05fU0lNLCgweDE3Nys2NjIyLTB4MWI1NSkscmVxCisscmVxLT5lQm94TmFtZSk7U01TX0RlbGV0ZVJlY29yZEZyb21YTUwoU01TX0xPQ0FUSU9OX1NJTSwoMHhjODUrMzY4My0weDFhZTgpLHJlcQogLT5lQm94TmFtZSk7aWYocmVxLT5lQm94TmFtZT09U01TX0lOQk9YKXtzbXNfTG9hZFNtc0Zyb21TaW0oKTt9CiAjZW5kaWYNCiB9Vk9JRCBhdFdlYl9SZWFkU21zKFVJTlQ4KnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMOwogVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4NTA0KzU3MjYtMHgxYjYyKX07YXNzZXJ0KHBEYXRhYnVmIT1OVUxMKTtwdE1lc3NhZ2U9KFRfekdvYWhlYWRNc2dCdWYqKQorKDB4MjEwNSs3MjItMHgyM2Q3KX07YXNzZXJ0KHBEYXRhYnVmIT1OVUxMKTtwdE1lc3NhZ2U9KFRfekdvYWhlYWRNc2dCdWYqKQogcERhdGFidWY7elVmaVNtc19Jbml0Q21kU3RhdHVzKCZ0U3RhdHVzLFdNU19TTVNfQ01EX01TR19NT0RJRllfVEFHKTtyZXN1bHQ9CiB6VWZpU21zX01vZGlmeVNtc1RhZygoVF96VWZpU21zX01vZGlmeUZsYWcqKXB0TWVzc2FnZS0+bXNnX2RhdGEpO3RTdGF0dXMuCiBjbWRfc3RhdHVzPXJlc3VsdDsodm9pZCl6VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cyk7fVZPSUQgYXRXZWJfU2F2ZVNtcyhVSU5UOAogKnBEYXRhYnVmKXtUX3pHb2FoZWFkTXNnQnVmKnB0TWVzc2FnZT1OVUxMO1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQotV01TX0NNRF9QUk9DRVNTSU5HO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDE2MzgrMjU0MC0weDIwMjQpfTthc3NlcnQoCitXTVNfQ01EX1BST0NFU1NJTkc7VF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4M2JjKzQ4NTEtMHgxNmFmKX07YXNzZXJ0KAogcERhdGFidWYhPU5VTEwpO3B0TWVzc2FnZT0oVF96R29haGVhZE1zZ0J1ZiopcERhdGFidWY7elVmaVNtc19Jbml0Q21kU3RhdHVzKCYKIHRTdGF0dXMsV01TX1NNU19DTURfTVNHX1dSSVRFKTtyZXN1bHQ9elVmaVNtc19Xcml0ZVJhd1NtcygoVF96VWZpU21zX1NhdmVSZXEqKQogcHRNZXNzYWdlLT5tc2dfZGF0YSk7aWYoZ196VWZpU21zX01lbUZ1bGxGbGFnW1pURV9XTVNfTUVNT1JZX05WXSl7dFN0YXR1cy4KQEAgLTYxLDI1MCArNjAsMjQ5IEBACiB6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfU0FWSU5HKTtzY19jZmdfc2V0KE5WX1NNU19TQVZFX1JFU1VMVCwKICJceDZmXHg2YiIpO31WT0lEIGF0V2ViX1NldFNtcyhVSU5UOCpwRGF0YWJ1Zil7VF96R29haGVhZE1zZ0J1ZipwdE1lc3NhZ2U9TlVMTDsKIFRfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PVdNU19DTURfUFJPQ0VTU0lORztUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsKLSgweDEzYzYrMTA4Mi0weDE4MDApfTtwcmludGYoCisoMHg2NDUrNzc2My0weDI0OTgpfTtwcmludGYoCiAiXHg0OVx4NGVceDU0XHg0Zlx4MjBceDYxXHg3NFx4NTdceDY1XHg2Mlx4NWZceDUzXHg2NVx4NzRceDUzXHg2ZFx4NzNceDJlIiAiXG4iKQogO2Fzc2VydChwRGF0YWJ1ZiE9TlVMTCk7cHRNZXNzYWdlPShUX3pHb2FoZWFkTXNnQnVmKilwRGF0YWJ1ZjsKIHpVZmlTbXNfSW5pdENtZFN0YXR1cygmdFN0YXR1cyxXTVNfU01TX0NNRF9DRkdfU0VUX1BBUkFNRVRFUlMpO3Jlc3VsdD0KIHpVZmlTbXNfU2V0U21zUGFyYSgoVF96VWZpU21zX1BhcmFJbmZvKilwdE1lc3NhZ2UtPm1zZ19kYXRhKTt0U3RhdHVzLmNtZF9zdGF0dXM9CiByZXN1bHQ7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMpO31WT0lEIGF0V2ViX091dGRhdGVTbXNDaGVjayhVSU5UOCoKLXBEYXRhYnVmKXtUX3pVZmlTbXNfRGVsUmVxIHRTbXNEZWw9eygweDFkNTkrMTIzOS0weDIyMzApfTsKK3BEYXRhYnVmKXtUX3pVZmlTbXNfRGVsUmVxIHRTbXNEZWw9eygweDIwNSsxODM1LTB4OTMwKX07CiB6VWZpU21zX0NoZWNrRGJPdXRkYXRlU21zKFpURV9XTVNfREJfTlZfVEFCTEUsJnRTbXNEZWwpO3ByaW50ZigKICJceDJkXHgyZFx4MmRceDJkXHg2Zlx4NzVceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDIwXHg2ZVx4NzZceDc0XHgzYVx4MjBceDI1XHg2NFx4MmRceDJkXHgyZFx4MmQiICJcbiIKLSx0U21zRGVsLmFsbF9vcl9jb3VudCk7aWYodFNtc0RlbC5hbGxfb3JfY291bnQ+KDB4MjcxKzI0NzUtMHhjMWMpKXsKLWF0V2ViX0RlbFNtc0J5SW5kZXgoJnRTbXNEZWwpO31tZW1zZXQoJnRTbXNEZWwsKDB4MTM2MSszMjY0LTB4MjAyMSksc2l6ZW9mKAorLHRTbXNEZWwuYWxsX29yX2NvdW50KTtpZih0U21zRGVsLmFsbF9vcl9jb3VudD4oMHgxODkrMjAzMS0weDk3OCkpeworYXRXZWJfRGVsU21zQnlJbmRleCgmdFNtc0RlbCk7fW1lbXNldCgmdFNtc0RlbCwoMHgxNzFiKzMzNC0weDE4NjkpLHNpemVvZigKIFRfelVmaVNtc19EZWxSZXEpKTt6VWZpU21zX0NoZWNrRGJPdXRkYXRlU21zKFpURV9XTVNfREJfU0lNX1RBQkxFLCZ0U21zRGVsKTsKIHByaW50ZigKICJceDJkXHgyZFx4MmRceDJkXHg2Zlx4NzVceDc0XHgyMFx4NjNceDZmXHg3NVx4NmVceDc0XHgyMFx4NzNceDY5XHg2ZFx4M2FceDIwXHgyNVx4NjRceDJkXHgyZFx4MmRceDJkIiAiXG4iCi0sdFNtc0RlbC5hbGxfb3JfY291bnQpO2lmKHRTbXNEZWwuYWxsX29yX2NvdW50PigweDg5KzUxMDItMHgxNDc3KSl7CissdFNtc0RlbC5hbGxfb3JfY291bnQpO2lmKHRTbXNEZWwuYWxsX29yX2NvdW50PigweDNiNCs2OTY1LTB4MWVlOSkpewogYXRXZWJfRGVsU21zQnlJbmRleCgmdFNtc0RlbCk7fX1WT0lEIHpTbXNfSGFuZGxlV2ViTXNnKE1TR19CVUYqcHRNc2dCdWYpe1VJTlQzMiAKLWk9KDB4OGJhKzM5Ni0weGE0Nik7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCitpPSgweDEwNys3MDYzLTB4MWM5ZSk7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCiAiXHg3M1x4NmRceDczXHgyMFx4NzJceDY1XHg2M1x4NzZceDIwXHg2ZFx4NzNceDY3XHgyMFx4NjZceDcyXHg2Zlx4NmRceDIwXHg3N1x4NjVceDYyXHg3M1x4NjVceDcyXHg3Nlx4NjVceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0scHRNc2dCdWYtPnVzTXNnQ21kKTt3aGlsZSgoMHhhOTMrMjg3OC0weDE1ZDEpIT1TbXNIYW5kbGVXZWJUYWJbaV0ubXNnX2lkKXtpZigKKyxwdE1zZ0J1Zi0+dXNNc2dDbWQpO3doaWxlKCgweDY3NSs3NDIwLTB4MjM3MSkhPVNtc0hhbmRsZVdlYlRhYltpXS5tc2dfaWQpe2lmKAogcHRNc2dCdWYtPnVzTXNnQ21kPT1TbXNIYW5kbGVXZWJUYWJbaV0ubXNnX2lkKXtpZihTbXNIYW5kbGVXZWJUYWJbaV0ubmVlZF9ibG9jawogJiZwdE1zZ0J1Zi0+c3JjX2lkIT1NT0RVTEVfSURfU01TKXtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9TTVMsCiBNT0RVTEVfSURfU01TX0xPQ0FMLHB0TXNnQnVmLT51c01zZ0NtZCxwdE1zZ0J1Zi0+dXNEYXRhTGVuLCh1bnNpZ25lZCBjaGFyKikKLXB0TXNnQnVmLT5hdWNEYXRhQnVmLCgweDE4NDcrMTc2OS0weDFmMzApKTt9ZWxzZSBpZihOVUxMIT1TbXNIYW5kbGVXZWJUYWJbaV0uCitwdE1zZ0J1Zi0+YXVjRGF0YUJ1ZiwoMHgyMDNmKzYwNS0weDIyOWMpKTt9ZWxzZSBpZihOVUxMIT1TbXNIYW5kbGVXZWJUYWJbaV0uCiBmdW5jX3B0cil7U21zSGFuZGxlV2ViVGFiW2ldLmZ1bmNfcHRyKHB0TXNnQnVmLT5hdWNEYXRhQnVmKTt9YnJlYWs7fWkrKzt9fVNJTlQzMgogIHpTbXNfU2VuZE1zZyhVU0hPUlQgTXNnX2NtZCxVU0hPUlQgdXNfRGF0YUxlbixVQ0hBUipwRGF0YSl7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NmVceDY0XHgyMFx4NmRceDczXHg2N1x4MjBceDYzXHg2ZFx4NjRceDNhXHgyNVx4NjQiICJcbiIKICxNc2dfY21kKTtpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9TTVMsTU9EVUxFX0lEX0FUX0NUTCxNc2dfY21kLHVzX0RhdGFMZW4sKAotdW5zaWduZWQgY2hhciopcERhdGEsKDB4MTNiZisyOTI4LTB4MWYyZikpO3JldHVybigweDVhYiszNDU0LTB4MTMyOSk7fVNJTlQzMiAKLXpTbXNfU2VuZENtZ3NSZXEoVk9JRCl7VF96U21zX1NlbmRTbXNSZXEgc2VuZFNtc0luZm89eygweDg1MCs1MjE1LTB4MWNhZil9OwotbWVtc2V0KCZzZW5kU21zSW5mbywoMHgyMzYzKzM5Ny0weDI0ZjApLHNpemVvZihUX3pTbXNfU2VuZFNtc1JlcSkpO3NlbmRTbXNJbmZvLgordW5zaWduZWQgY2hhciopcERhdGEsKDB4NjhhKzQzNS0weDgzZCkpO3JldHVybigweDNhOSs1NzI3LTB4MWEwOCk7fVNJTlQzMiAKK3pTbXNfU2VuZENtZ3NSZXEoVk9JRCl7VF96U21zX1NlbmRTbXNSZXEgc2VuZFNtc0luZm89eygweDdkNCszMTEwLTB4MTNmYSl9OworbWVtc2V0KCZzZW5kU21zSW5mbywoMHhjNjgrNjE1Ni0weDI0NzQpLHNpemVvZihUX3pTbXNfU2VuZFNtc1JlcSkpO3NlbmRTbXNJbmZvLgogbGVuZ3RoPWdfelVmaVNtc19GaW5hbENtZ3NCdWYubGVuZ3RoO2lmKHN0cmxlbihnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk8Ci1aU01TX1BEVV9TSVpFLSgweDIxYzArODA2LTB4MjRlNSkpe21lbWNweShzZW5kU21zSW5mby5wZHUsZ196VWZpU21zX0ZpbmFsQ21nc0J1ZgotLnBkdSxzdHJsZW4oZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUpKTt9ZWxzZXtwcmludGYoCitaU01TX1BEVV9TSVpFLSgweDllZis4NDEtMHhkMzcpKXttZW1jcHkoc2VuZFNtc0luZm8ucGR1LGdfelVmaVNtc19GaW5hbENtZ3NCdWYuCitwZHUsc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KSk7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZFx4NjdceDczXHg1Mlx4NjVceDcxXHgyMFx4NzBceDY0XHg3NVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDI1XHg3MyIgIlxuIgogLGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTttZW1jcHkoc2VuZFNtc0luZm8ucGR1LGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1LAotWlNNU19QRFVfU0laRS0oMHgxNjhhKzE2OTEtMHgxZDIzKSk7fSooc2VuZFNtc0luZm8ucGR1K3N0cmxlbigKK1pTTVNfUERVX1NJWkUtKDB4ZTJiKzQ2My0weGZmOCkpO30qKHNlbmRTbXNJbmZvLnBkdStzdHJsZW4oCiBnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSkpPVpTTVNfQ1RSTF9aX0NIQVI7Ci0jaWYgKDB4MTQ0Nys0MTAyLTB4MjQ0YykKKyNpZiAoMHgzOGQrNzM1Ny0weDIwNDkpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZkXHg2N1x4NzNceDUyXHg2NVx4NzFceDIwXHg3M1x4NjVceDZlXHg2NFx4MjBceDY0XHg2MVx4NzRceDYxIiAiXG4iCiApO3ByaW50ZigiXG4iICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjVceDczIiAiXG4iLHNlbmRTbXNJbmZvLnBkdSk7CiAjZW5kaWYNCiB6U21zX1NlbmRNc2coTVNHX0NNRF9TRU5EU01TX1JFUSxzaXplb2YoVF96U21zX1NlbmRTbXNSZXEpLCZzZW5kU21zSW5mbyk7Ci1zZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDEyMDgrMTA0NS0weDE2MWMpKXtyZXR1cm4gCitzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDFiMzYrMjUxNy0weDI1MGEpKXtyZXR1cm4gCiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gWlNNU19SRVNVTFRfRVJST1I7fX1WT0lEIHpTbXNfUmVjdkNtZ3NPayhWT0lEKXsKIHByaW50ZigKICJceDczXHg2ZFx4NzNceDIwXHg3M1x4NjVceDZlXHg2NFx4NjVceDY0XHgyMFx4NzNceDc1XHg2M1x4NjNceDY1XHg3M1x4NzNceDJlXHgyMCIgIlxuIgogKTtnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8rKztpZihnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8+CiBaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXtyZXR1cm47fWdfelVmaVNtc19EYlN0b3JlRGF0YVsKLWdfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHgxNWI5KzE1NDItMHgxYmJlKV0udGFnPVdNU19UQUdfVFlQRV9NT19TRU5UX1YwMTsKK2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHhlMGErMzg3NS0weDFkMmMpXS50YWc9V01TX1RBR19UWVBFX01PX1NFTlRfVjAxOwogelVmaVNtc19DbWdzUmVzcFByb2MoKTt9Vk9JRCB6U21zX1JlY3ZDbWdzRXJyKFZPSUQpe3ByaW50ZigKICJceDczXHg2ZFx4NzNceDIwXHg3M1x4NjVceDZlXHg2NFx4NjVceDY0XHgyMFx4NjZceDYxXHg2OVx4NmNceDJlXHgyMCIgIlxuIik7CiBnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8rKztpZihnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm8+CiBaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXtyZXR1cm47fWdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQrKztwcmludGYoCiAiXHg3M1x4NjVceDZlXHg2NFx4MjBceDczXHg2ZFx4NzNceDIwXHg2Nlx4NjFceDY5XHg2Y1x4NjVceDY0XHgyY1x4NzNceDZmXHgyMFx4NzdceDcyXHg2OVx4NzRceDY1XHgyMFx4NzNceDZkXHg3M1x4MjBceDc0XHg2Zlx4MjBceDY0XHg3Mlx4NjFceDY2XHg3NFx4NjJceDZmXHg3OFx4MmUiICJcbiIKLSk7Z196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHg3NTcrMzc5Ni0weDE2MmEpXS50YWc9Ci1XTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHg0ZGQrMzAtMHg0ZmEpKXsKKyk7Z196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHhiZGMrNjgyMi0weDI2ODEpXS50YWc9CitXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHhjNjkrMzIzNS0weDE5MGIpKXsKIGdfelVmaVNtc19Jc0NvbmNhdFNlbmRTdWM9RkFMU0U7fXpVZmlTbXNfQ21nc1Jlc3BQcm9jKCk7fVNJTlQzMiB6U21zX1NlbmRDbWdkUmVxCi0oVUlOVDggaW5kZXgpe1RfelNtc19EZWxTbXNSZXEgZGVsU21zUmVxPXsoMHg2OGIrNTQ4Mi0weDFiZjUpfTtkZWxTbXNSZXEuaW5kZXg9CisoVUlOVDggaW5kZXgpe1RfelNtc19EZWxTbXNSZXEgZGVsU21zUmVxPXsoMHgxNDkrMTUxNy0weDczNil9O2RlbFNtc1JlcS5pbmRleD0KIGluZGV4O3pTbXNfU2VuZE1zZyhNU0dfQ01EX0RFTFNNU19SRVEsc2l6ZW9mKFRfelNtc19EZWxTbXNSZXEpLCZkZWxTbXNSZXEpOwotc2VtX3dhaXQoJmdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHgxMjAwKzI5MzctMHgxZDc4KSl7cmV0dXJuIAorc2VtX3dhaXQoJmdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHg2MDYrMjA1OC0weGUwZikpe3JldHVybiAKIFpTTVNfUkVTVUxUX09LO31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fVZPSUQgelNtc19SZWN2Q21nZE9rKFZPSUQpe0NIQVIgCi1zdHJVc2VkWygweGJjNCsxNjQwLTB4MTIyMildPXsoMHgxZjgrMzY2LTB4MzY2KX07aW50IHVzZWQ9KDB4MzgrODkyMy0weDIzMTMpO2ludAotIHRtcF9pPSgweDkyNSszMjYtMHhhNmIpO3NjX2NmZ19zZXQoTlZfU01TX0RFTF9SRVNVTFQsIlx4NmZceDZiIik7cHJpbnRmKAorc3RyVXNlZFsoMHg3NDMrMzk5Ni0weDE2ZDUpXT17KDB4MzA4Kzc3NDktMHgyMTRkKX07aW50IHVzZWQ9KDB4NTRjKzEzMjgtMHhhN2MpOworaW50IHRtcF9pPSgweDQwMCs1MTU4LTB4MTgyNik7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Zlx4NmIiKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzNceDY5XHg2ZFx4NWZceDY0XHg2NVx4NmNceDVmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NzRceDZmXHgyMFx4NGZceDRiXHgyZVx4MjAiICJcbiIKICk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3RtcF9pPWF0b2koCi1zdHJVc2VkKTtpZih0bXBfaTwoMHg1MjMrMTk2MC0weGNjYil8fHRtcF9pPklOVF9NQVgtKDB4MTJiZCs0MjQwLTB4MjM0Yykpeworc3RyVXNlZCk7aWYodG1wX2k8KDB4NjY4KzQzNDgtMHgxNzY0KXx8dG1wX2k+SU5UX01BWC0oMHhlYjcrNDY1OC0weDIwZTgpKXsKIGF0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDU3XHg0ZFx4NTNceDVmXHg0ZVx4NTZceDQzXHg0Zlx4NGVceDQ2XHg0OVx4NDdceDVmXHg1M1x4NDlceDRkXHg1Zlx4NDNceDQxXHg1Mlx4NDRceDVmXHg1NVx4NTNceDQ1XHg0NFx4MjBceDc0XHg2ZFx4NzBceDVmXHg2OVx4MjBceDY1XHg3Mlx4NzJceDNhXHgyNVx4NjQiICJcbiIKLSx0bXBfaSk7dG1wX2k9KDB4NjI1KzQ5Mi0weDgxMSk7fXVzZWQ9dG1wX2ktKDB4ZGYxKzIyMjktMHgxNmE1KTtpZih1c2VkPAotKDB4ZDY4KzgxMy0weDEwOTUpKXt1c2VkPSgweDdmMisxMjA4LTB4Y2FhKTt9bWVtc2V0KCZzdHJVc2VkLCgweDFlNyszMTE2LTB4ZTEzKSwKLSgweDFhMzgrODA2LTB4MWQ1NCkpO3NucHJpbnRmKHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpLCJceDI1XHg2NCIsdXNlZCk7Ci1zY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkKTt9Vk9JRCB6U21zX1JlY3ZDbWdkRXJyKFZPSUQpewotc2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3ByaW50ZigKKyx0bXBfaSk7dG1wX2k9KDB4NDArMTg4MC0weDc5OCk7fXVzZWQ9dG1wX2ktKDB4MTQ4Mys0NjI4LTB4MjY5Nik7aWYodXNlZDwKKygweDVhZisyNjE2LTB4ZmU3KSl7dXNlZD0oMHgxMGFkKzM3LTB4MTBkMik7fW1lbXNldCgmc3RyVXNlZCwKKygweDFiYzArMTY1MS0weDIyMzMpLCgweDIwOSszMjUxLTB4ZWIyKSk7c25wcmludGYoc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCksCisiXHgyNVx4NjQiLHVzZWQpO3NjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9VU0VELHN0clVzZWQpO31WT0lEIAorelNtc19SZWN2Q21nZEVycihWT0lEKXtzY19jZmdfc2V0KE5WX1NNU19ERUxfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg3NFx4MjBceDczXHg2OVx4NmRceDVmXHg2NFx4NjVceDZjXHg1Zlx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4MjBceDc0XHg2Zlx4MjBceDY2XHg2MVx4NjlceDZjXHgyZVx4MjAiICJcbiIKLSk7fVZPSUQgelNtc19SZWN2Q21nZEZpbmlzaChWT0lEKXtjaGFyIFN0clZhbHVlWygweGU3KzYxNzAtMHgxOGY3KV09ewotKDB4MjNlMSs3NzUtMHgyNmU4KX07Q0hBUiBzdHJUb3RhbFsoMHg4OTQrNTk4MC0weDFmZTYpXT17KDB4MTc3NyszMjI0LTB4MjQwZil9OwotQ0hBUiBzdHJVc2VkWygweDFiZmYrMTMzMy0weDIxMmEpXT17KDB4NTlmKzM5MzgtMHgxNTAxKX07aW50IHRvdGFsPQotKDB4MTMwMis1MDEwLTB4MjY5NCk7aW50IHVzZWQ9KDB4MTI1ZCsyNjcxLTB4MWNjYyk7aW50IHJlbWFpbj0oMHhmMjMrMjkzLTB4MTA0OCkKLTtzY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkLHNpemVvZihzdHJVc2VkKSk7dXNlZD1hdG9pKAotc3RyVXNlZCk7aWYodXNlZDwoMHgzNzArNjE1My0weDFiNzkpfHx1c2VkPklOVF9NQVgtKDB4MTA3ZiszOTUyLTB4MWZlZSkpewotYXRfcHJpbnQoTE9HX0VSUiwKKyk7fVZPSUQgelNtc19SZWN2Q21nZEZpbmlzaChWT0lEKXtjaGFyIFN0clZhbHVlWygweDE2MmErMTUyNi0weDFjMTYpXT17CisoMHgxNCsyNjE3LTB4YTRkKX07Q0hBUiBzdHJUb3RhbFsoMHhjZDcrMjE1Ny0weDE1M2EpXT17KDB4MTgrNDc5Mi0weDEyZDApfTtDSEFSIAorc3RyVXNlZFsoMHg0MCs5ODY1LTB4MjZiZildPXsoMHg2ZjUrNzc0LTB4OWZiKX07aW50IHRvdGFsPSgweDE3OWIrMzczNy0weDI2MzQpOworaW50IHVzZWQ9KDB4OGJhKzE3NDMtMHhmODkpO2ludCByZW1haW49KDB4MTA5YSszMjg5LTB4MWQ3Myk7c2NfY2ZnX2dldCgKK1pURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJVc2VkLHNpemVvZihzdHJVc2VkKSk7dXNlZD1hdG9pKHN0clVzZWQpO2lmKAordXNlZDwoMHg2ZWIrMzU1OS0weDE0ZDIpfHx1c2VkPklOVF9NQVgtKDB4OWE1KzM5NzctMHgxOTJkKSl7YXRfcHJpbnQoTE9HX0VSUiwKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NTdceDRkXHg1M1x4NWZceDRlXHg1Nlx4NDNceDRmXHg0ZVx4NDZceDQ5XHg0N1x4NWZceDUzXHg0OVx4NGRceDVmXHg0M1x4NDFceDUyXHg0NFx4NWZceDU1XHg1M1x4NDVceDQ0XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHVzZWQpO3VzZWQ9KDB4MTIzZiszMjgxLTB4MWYxMCk7fXNjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9UT1RBTCwKLXN0clRvdGFsLHNpemVvZihzdHJUb3RhbCkpO3RvdGFsPWF0b2koc3RyVG90YWwpO2lmKHRvdGFsPCgweDRjNCs3ODktMHg3ZDkpfHwKLXRvdGFsPklOVF9NQVgtKDB4OGM0KzE5MTItMHgxMDNiKSl7YXRfcHJpbnQoTE9HX0VSUiwKKyx1c2VkKTt1c2VkPSgweGVmNSsxMjM4LTB4MTNjYik7fXNjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9UT1RBTCwKK3N0clRvdGFsLHNpemVvZihzdHJUb3RhbCkpO3RvdGFsPWF0b2koc3RyVG90YWwpO2lmKHRvdGFsPCgweDQwKzI4MjYtMHhiNGEpfHwKK3RvdGFsPklOVF9NQVgtKDB4YzJjKzgxMS0weGY1Nikpe2F0X3ByaW50KExPR19FUlIsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDU3XHg0ZFx4NTNceDVmXHg0ZVx4NTZceDQzXHg0Zlx4NGVceDQ2XHg0OVx4NDdceDVmXHg1M1x4NDlceDRkXHg1Zlx4NDNceDQxXHg1Mlx4NDRceDVmXHg1NFx4NGZceDU0XHg0MVx4NGNceDIwXHg2NVx4NzJceDcyXHgzYVx4MjVceDY0IiAiXG4iCi0sdG90YWwpO3RvdGFsPSgweDExZWMrMjY1MC0weDFjNDYpO31yZW1haW49dG90YWwtdXNlZDtpZihyZW1haW48Ci0oMHg3MTUrMjc5My0weDExZmUpKXtyZW1haW49KDB4MWVlOCsxMzQ3LTB4MjQyYik7fW1lbXNldCgmU3RyVmFsdWUsCi0oMHgxMDcrMzcyOC0weGY5NyksKDB4YzhmKzIzMzktMHgxNWE4KSk7c25wcmludGYoU3RyVmFsdWUsc2l6ZW9mKFN0clZhbHVlKSwKKyx0b3RhbCk7dG90YWw9KDB4MTBjMSsxMTI0LTB4MTUyNSk7fXJlbWFpbj10b3RhbC11c2VkO2lmKHJlbWFpbjwKKygweDIyMGQrMTczLTB4MjJiYSkpe3JlbWFpbj0oMHgzMjArNzE2NS0weDFmMWQpO31tZW1zZXQoJlN0clZhbHVlLAorKDB4YWVhKzM4MzAtMHgxOWUwKSwoMHgxNjVkKzM3MTktMHgyNGRhKSk7c25wcmludGYoU3RyVmFsdWUsc2l6ZW9mKFN0clZhbHVlKSwKICJceDI1XHg2NCIscmVtYWluKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfUkVNQUlOLFN0clZhbHVlKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2OVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3NVx4NzNceDY1XHg2NFx4M2RceDI1XHg2NFx4MmNceDcyXHg2NVx4NmRceDYxXHg2OVx4NmVceDNkXHgyNVx4NjRceDJjXHg3NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyNVx4NjQiICJcbiIKICx1c2VkLHJlbWFpbix0b3RhbCk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0RFTEVEKTtzY19jZmdfc2V0KAogTlZfU01TX0RCX0NIQU5HRSwiXHgzMSIpO31pbnQgelNtc19TZW5kWm1lbmFSZXEoU0lOVDMyIGF2YWlsKXtUX3pTbXNfU3Ryb2FnZVJlcSAKLXN0b3JhZ2VSZXE9eygweGIyYSs0ODEtMHhkMGIpfTtzdG9yYWdlUmVxLnR5cGU9YXZhaWw7elNtc19TZW5kTXNnKAorc3RvcmFnZVJlcT17KDB4OTJhKzY2MzEtMHgyMzExKX07c3RvcmFnZVJlcS50eXBlPWF2YWlsO3pTbXNfU2VuZE1zZygKIE1TR19DTURfU1RPUkFHRV9DQVBfUkVRLHNpemVvZihUX3pTbXNfU3Ryb2FnZVJlcSksJnN0b3JhZ2VSZXEpO3NlbV93YWl0KCYKLWdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHgxNGVhKzYwNC0weDE3NDUpKXtyZXR1cm4gWlNNU19SRVNVTFRfT0s7CitnX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4ZGEwKzQzMjYtMHgxZTg1KSl7cmV0dXJuIFpTTVNfUkVTVUxUX09LOwogfWVsc2V7cmV0dXJuIFpTTVNfUkVTVUxUX0VSUk9SO319aW50IHpTbXNfU2VuZENtZ3JSZXEoVUlOVDggaW5kZXgpewotVF96U21zX01vZGlmeVRhZ1JlcSBtb2RUYWdSZXE9eygweDE0Yis1MDQ3LTB4MTUwMil9O21vZFRhZ1JlcS5pbmRleD1pbmRleDsKK1RfelNtc19Nb2RpZnlUYWdSZXEgbW9kVGFnUmVxPXsoMHg0MjcrNDY5Ny0weDE2ODApfTttb2RUYWdSZXEuaW5kZXg9aW5kZXg7CiB6U21zX1NlbmRNc2coTVNHX0NNRF9NT0RJRllfVEFHX1JFUSxzaXplb2YoVF96U21zX01vZGlmeVRhZ1JlcSksJm1vZFRhZ1JlcSk7Ci1zZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweGEzNSs0NTE2LTB4MWJkOCkpe3JldHVybiAKK3NlbV93YWl0KCZnX3Ntc19zZW1faWQpO2lmKGdfc21zT3B0UnNwLnJlc3VsdD09KDB4MTZkYisyNjk5LTB4MjE2NSkpe3JldHVybiAKIFpTTVNfUkVTVUxUX09LO31lbHNle3JldHVybiBaU01TX1JFU1VMVF9FUlJPUjt9fWludCB6U21zX1NldENzY2FSZXEoUFNUUiBzY2EpewogVF96U21zX1NldFNjYVJlcSBzZXRzY2FyZXE7c3RybmNweShzZXRzY2FyZXEuc2NhLHNjYSxzaXplb2Yoc2V0c2NhcmVxLnNjYSktCi0oMHg4ODIrNzQ4MS0weDI1YmEpKTt6U21zX1NlbmRNc2coTVNHX0NNRF9TQ0FfU0VUX1JFUSxzaXplb2YoVF96U21zX1NldFNjYVJlcSksJgotc2V0c2NhcmVxKTtzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweGZjYysyNDA2LTB4MTkzMSkpeworKDB4NzUxKzQxMDAtMHgxNzU0KSk7elNtc19TZW5kTXNnKE1TR19DTURfU0NBX1NFVF9SRVEsc2l6ZW9mKFRfelNtc19TZXRTY2FSZXEpLCYKK3NldHNjYXJlcSk7c2VtX3dhaXQoJmdfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHg5MTIrNzA5Mi0weDI0YzUpKXsKIHJldHVybiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gWlNNU19SRVNVTFRfRVJST1I7fX1pbnQgelNtc19TZW5kQ25taVJlcShQU1RSCi0gcEF0Q21kUGFyYSl7VF96U21zX05vdGlmeVNldFJlcSBub3RpZnlTZXRSZXE9eygweDUwMSs1NjU2LTB4MWIxOSl9O2lmKAotKDB4MTFmMisyMzY0LTB4MWIyZSk9PXN0cmNtcChwQXRDbWRQYXJhLCJceDczXHg2OVx4NmQiKSl7bm90aWZ5U2V0UmVxLm10PQotKDB4MzRiKzM3NTEtMHgxMWYxKTt9ZWxzZXtub3RpZnlTZXRSZXEubXQ9KDB4NGI1KzMwMjctMHgxMDg2KTt9elNtc19TZW5kTXNnKAorIHBBdENtZFBhcmEpe1RfelNtc19Ob3RpZnlTZXRSZXEgbm90aWZ5U2V0UmVxPXsoMHgxNWRhKzQxNTUtMHgyNjE1KX07aWYoCisoMHgxNmE4KzMyODAtMHgyMzc4KT09c3RyY21wKHBBdENtZFBhcmEsIlx4NzNceDY5XHg2ZCIpKXtub3RpZnlTZXRSZXEubXQ9CisoMHhjZDQrMzk2My0weDFjNGUpO31lbHNle25vdGlmeVNldFJlcS5tdD0oMHgxNGExKzM2MzAtMHgyMmNkKTt9elNtc19TZW5kTXNnKAogTVNHX0NNRF9OT1RJRllfU0VUX1JFUSxzaXplb2YoVF96U21zX05vdGlmeVNldFJlcSksJm5vdGlmeVNldFJlcSk7c2VtX3dhaXQoJgotZ19zbXNfc2VtX2lkKTtpZihnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweGU2OSszMjU3LTB4MWIyMSkpe3JldHVybiBaU01TX1JFU1VMVF9PSzsKK2dfc21zX3NlbV9pZCk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHhkMjArMjY5Ny0weDE3YTgpKXtyZXR1cm4gWlNNU19SRVNVTFRfT0s7CiB9ZWxzZXtyZXR1cm4gWlNNU19SRVNVTFRfRVJST1I7fX1WT0lEIHpTbXNfUmVjdkNtdEluZChVSU5UOCpwRGF0YWJ1Zil7Q0hBUiAKLW5lZWRTTVNbKDB4MTY1YisxOTY4LTB4MWRkOSldPXsoMHg4OTArNDkwMC0weDFiYjQpfTtzY19jZmdfZ2V0KAotTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MTM5MCs0MTI0LTB4MjNhYyk9PXN0cmNtcCgKLW5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKK25lZWRTTVNbKDB4YzA0KzU1Ny0weGRmZildPXsoMHg5MTErNDIwMy0weDE5N2MpfTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsCituZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4OTVhKzU5MzEtMHgyMDg1KT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDZlXHg2NVx4NjVceDY0XHg1M1x4NGRceDUzXHgzZFx4NmVceDZmXHgyMSIKLSk7cmV0dXJuO31UX3pTbXNfU21zSW5kIHRDbXRSc3A9eygweDEyZmErNDk5NS0weDI2N2QpfTttZW1jcHkoJnRDbXRSc3AsKAorKTtyZXR1cm47fVRfelNtc19TbXNJbmQgdENtdFJzcD17KDB4MjJjMisxMDA4LTB4MjZiMil9O21lbWNweSgmdENtdFJzcCwoCiBUX3pTbXNfU21zSW5kKilwRGF0YWJ1ZixzaXplb2YoVF96U21zX1Ntc0luZCkpO3pVZmlTbXNfQ210UmVzcFByb2MoJnRDbXRSc3ApOwogelVmaU1taV9TZW5kU21zU3RhdHVzKCk7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fVZPSUQgCi16U21zX1JlY3ZDbXRpSW5kKFVJTlQ4KnBEYXRhYnVmKXtjaGFyIHNtc19NYWluX3N0YXRlWygweDJhMSs5MTE0LTB4MjYxZCldPXsKLSgweDQwKzQ4NjItMHgxMzNlKX07VF96U21zX1Ntc0luZGV4SW5kKnNtc0lkeEluZD0oVF96U21zX1Ntc0luZGV4SW5kKilwRGF0YWJ1ZjsKLUNIQVIgbmVlZFNNU1soMHgxNzMwKzQwOTQtMHgyNmZjKV09eygweDY1Zis4MTctMHg5OTApfTtzY19jZmdfZ2V0KAotTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MjMxKzkzMTMtMHgyNjkyKT09c3RyY21wKAorelNtc19SZWN2Q210aUluZChVSU5UOCpwRGF0YWJ1Zil7Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHg1ZjMrODQ4OC0weDI2ZmQpXT17CisoMHgyMTA3Kzc0MS0weDIzZWMpfTtUX3pTbXNfU21zSW5kZXhJbmQqc21zSWR4SW5kPShUX3pTbXNfU21zSW5kZXhJbmQqKXBEYXRhYnVmOworQ0hBUiBuZWVkU01TWygweDEyZmYrNDAyMy0weDIyODQpXT17KDB4YzY3KzM4NjEtMHgxYjdjKX07c2NfY2ZnX2dldCgKK05WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDFkNCs0ODQ5LTB4MTRjNSk9PXN0cmNtcCgKIG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCiApO3JldHVybjt9c2NfY2ZnX2dldChOVl9TTVNfU1RBVEUsc21zX01haW5fc3RhdGUsc2l6ZW9mKHNtc19NYWluX3N0YXRlKSk7aWYoCiBzdHJjbXAoc21zX01haW5fc3RhdGUsIlx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciKT09Ci0oMHgxODY0KzMwNDItMHgyNDQ2KSl7cHJpbnRmKAorKDB4MjNjNSs3Ni0weDI0MTEpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NjlceDUyXHg3M1x4NzBceDNhXHgyMFx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciICJcbiIKLSk7cmV0dXJuO31pZigoMHhiODErNjc0Mi0weDI1ZDcpPT1zdHJuY21wKCJceDUzXHg0ZCIsc21zSWR4SW5kLT5zdG9yZXR5cGUsCi0oMHg1ZmYrMzM2LTB4NzRkKSkpe3pVZmlTbXNfU2V0U21zTG9jYXRpb24oU01TX0xPQ0FUSU9OX1NJTSk7CispO3JldHVybjt9aWYoKDB4MTNiYisxMTIxLTB4MTgxYyk9PXN0cm5jbXAoIlx4NTNceDRkIixzbXNJZHhJbmQtPnN0b3JldHlwZSwKKygweDFkYWIrMTQ2MC0weDIzNWQpKSl7elVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTsKIHpVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWSU5HKTt6U21zX1NlbmRabWdyUmVxKHNtc0lkeEluZC0+aW5kZXgpO30KIGVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDY5XHg1Mlx4NzNceDcwXHgyMFx4M2FceDczXHg3NFx4NmZceDcyXHg2NVx4MjBceDZjXHg2Zlx4NjNceDYxXHg3NFx4NjlceDZmXHg2ZVx4MjBceDZlXHg2Zlx4NzRceDIwXHg1M1x4NGRceDJlIiAiXG4iCiApO31zY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiIik7fVZPSUQgelNtc19SZWN2Q2RzSW5kKFVJTlQ4KnBEYXRhYnVmKXtDSEFSIAotbmVlZFNNU1soMHg5ZTcrNjQ1Ny0weDIyZWUpXT17KDB4MWViOSsxOTU1LTB4MjY1Yyl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgyOGIrNjE2NS0weDFhYTApPT1zdHJjbXAoCi1uZWVkU01TLCJceDZlXHg2ZiIpKXtwcmludGYoCituZWVkU01TWygweGI4KzExNDEtMHg0ZmIpXT17KDB4MTJkMis5MjMtMHgxNjZkKX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLAorbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDU3MSsxOTI3LTB4Y2Y4KT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpeworcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDZlXHg2NVx4NjVceDY0XHg1M1x4NGRceDUzXHgzZFx4NmVceDZmXHgyMSIKLSk7cmV0dXJuO31UX3pTbXNfU21zSW5kIHRDbXRSc3A9eygweGM1NSsxMjYwLTB4MTE0MSl9O21lbWNweSgmdENtdFJzcCwoCispO3JldHVybjt9VF96U21zX1Ntc0luZCB0Q210UnNwPXsoMHgxMjUrNTIxMC0weDE1N2YpfTttZW1jcHkoJnRDbXRSc3AsKAogVF96U21zX1Ntc0luZCopcERhdGFidWYsc2l6ZW9mKFRfelNtc19TbXNJbmQpKTt6VWZpU21zX0Nkc1Jlc3BQcm9jKCZ0Q210UnNwKTsKIHpVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCJceDZmXHg2YiIpO31WT0lEIAotelNtc19SZWN2Q2RzaUluZChVSU5UOCpwRGF0YWJ1Zil7Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHhlNWErMTI5My0weDEzNDkpXT17Ci0oMHg2YzkrMjAyLTB4NzkzKX07VF96U21zX1Ntc0luZGV4SW5kKnNtc0lkeEluZD0oVF96U21zX1Ntc0luZGV4SW5kKilwRGF0YWJ1ZjsKLUNIQVIgbmVlZFNNU1soMHgxMDA1KzU3MDItMHgyNjE5KV09eygweGMxOCs2MDEyLTB4MjM5NCl9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgyZjUrMjI0Ni0weGJiYik9PXN0cmNtcCgKK3pTbXNfUmVjdkNkc2lJbmQoVUlOVDgqcERhdGFidWYpe2NoYXIgc21zX01haW5fc3RhdGVbKDB4MjFiMCs2MzktMHgyNDExKV09eworKDB4MTUxMCszNzYtMHgxNjg4KX07VF96U21zX1Ntc0luZGV4SW5kKnNtc0lkeEluZD0oVF96U21zX1Ntc0luZGV4SW5kKilwRGF0YWJ1ZjsKK0NIQVIgbmVlZFNNU1soMHg1NTErNjk2My0weDIwNTIpXT17KDB4ZThjKzkyMC0weDEyMjQpfTtzY19jZmdfZ2V0KAorTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MTM4NSs0Mzc0LTB4MjQ5Yik9PXN0cmNtcCgKIG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCiApO3JldHVybjt9c2NfY2ZnX2dldChOVl9TTVNfU1RBVEUsc21zX01haW5fc3RhdGUsc2l6ZW9mKHNtc19NYWluX3N0YXRlKSk7aWYoCiBzdHJjbXAoc21zX01haW5fc3RhdGUsIlx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciKT09Ci0oMHg4MDArNjQyOS0weDIxMWQpKXtwcmludGYoCisoMHgxNWQxKzM4MDYtMHgyNGFmKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2NFx4NzNceDY5XHg1Mlx4NzNceDcwXHgzYVx4MjBceDczXHg2ZFx4NzNceDVmXHg2NFx4NjVceDZjXHg2OVx4NmVceDY3IiAiXG4iCi0pO3JldHVybjt9aWYoKDB4NTZmKzU1MDUtMHgxYWYwKT09c3RybmNtcCgiXHg1M1x4NGQiLHNtc0lkeEluZC0+c3RvcmV0eXBlLAotKDB4OWFmKzMzNjYtMHgxNmQzKSkpe3pVZmlTbXNfU2V0U21zTG9jYXRpb24oU01TX0xPQ0FUSU9OX1NJTSk7CispO3JldHVybjt9aWYoKDB4MTU1NSszMzA2LTB4MjIzZik9PXN0cm5jbXAoIlx4NTNceDRkIixzbXNJZHhJbmQtPnN0b3JldHlwZSwKKygweDJiNys4NDMxLTB4MjNhNCkpKXt6VWZpU21zX1NldFNtc0xvY2F0aW9uKFNNU19MT0NBVElPTl9TSU0pOwogelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZJTkcpO3pTbXNfU2VuZFptZ3JSZXEoc21zSWR4SW5kLT5pbmRleCk7fQogZWxzZXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDY0XHg3M1x4NjlceDUyXHg3M1x4NzBceDIwXHgzYVx4NzNceDc0XHg2Zlx4NzJceDY1XHgyMFx4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDUzXHg0ZFx4MmUiICJcbiIKICk7fXNjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCIiKTt9aW50IHpTbXNfU2VuZENubWFSZXEoaW50IGFja19tb2RlKXsKLVRfelNtc19TbXNBY2tSZXEgYWNrUmVxPXsoMHhlNDQrMzg1Ny0weDFkNTUpfTtDSEFSIGFja1BkdVN0clsKLSgweDFhNWMrMTAwNi0weDFlMTgpXT17KDB4MWFjKzc4MjItMHgyMDNhKX07YWNrUmVxLmFja21vZGU9YWNrX21vZGU7aWYoYWNrX21vZGUKLT09KDB4MTNhKzEwODMtMHg1NzMpKXt6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KGFja1BkdVN0ciwKLSgweDQzOSs1MzkzLTB4MTg3NykpO21lbWNweShhY2tSZXEucGR1LGFja1BkdVN0cixzdHJsZW4oYWNrUGR1U3RyKSk7Ci0jaWYgKDB4ZjcrNTk5Mi0weDE4NWYpDQotaWYoc3RybGVuKGFja1BkdVN0cik8WlNNU19QRFVfU0laRS0oMHgxMTRiKzM5NTctMHgyMGJmKSl7bWVtY3B5KGFja1JlcS5wZHUsCitUX3pTbXNfU21zQWNrUmVxIGFja1JlcT17KDB4YWM2KzUxNDItMHgxZWRjKX07Q0hBUiBhY2tQZHVTdHJbKDB4NTQ5KzIwMjMtMHhjZmUpXQorPXsoMHgzZDErMTQ0OC0weDk3OSl9O2Fja1JlcS5hY2ttb2RlPWFja19tb2RlO2lmKGFja19tb2RlPT0oMHg5OGIrNzEwOC0weDI1NGQpKXsKK3pVZmlTbXNfRW5jb2RlUGR1X0RlbGl2ZXJSZXBvcnQoYWNrUGR1U3RyLCgweDJlNisyNzU5LTB4Y2RhKSk7bWVtY3B5KGFja1JlcS5wZHUsCithY2tQZHVTdHIsc3RybGVuKGFja1BkdVN0cikpOworI2lmICgweDE2MDUrMTcyNi0weDFjYzMpDQoraWYoc3RybGVuKGFja1BkdVN0cik8WlNNU19QRFVfU0laRS0oMHhiNzArMjcxMi0weDE2MDcpKXttZW1jcHkoYWNrUmVxLnBkdSwKIGFja1BkdVN0cixzdHJsZW4oYWNrUGR1U3RyKSk7fWVsc2V7YXRfcHJpbnQoTE9HX0RFQlVHCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZlXHg2ZFx4NjFceDUyXHg2NVx4NzFceDIwXHg3MFx4NjRceDc1XHgyMFx4NzRceDZmXHg2Zlx4MjBceDZjXHg2Zlx4NmVceDY3XHgzYVx4MjVceDczIiAiXG4iCi0sYWNrUGR1U3RyKTttZW1jcHkoYWNrUmVxLnBkdSxhY2tQZHVTdHIsWlNNU19QRFVfU0laRS0oMHg5OWMrNTA4MC0weDFkNzIpKTt9CissYWNrUGR1U3RyKTttZW1jcHkoYWNrUmVxLnBkdSxhY2tQZHVTdHIsWlNNU19QRFVfU0laRS0oMHg0ZCs0OTIyLTB4MTM4NSkpO30KICNlbmRpZiAgICAgDQogKihhY2tSZXEucGR1K3N0cmxlbihhY2tQZHVTdHIpKT1aU01TX0NUUkxfWl9DSEFSO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmVceDZkXHg2MVx4NTJceDY1XHg3MVx4MmVceDIwXHg3MFx4NjRceDc1XHgzZFx4MjBceDI1XHg3MyIgIlxuIgotLGFja1JlcS5wZHUpO2Fja1JlcS5sZW5ndGg9c3RybGVuKGFja1BkdVN0cikvKDB4ODFhKzMwMjYtMHgxM2VhKTt9elNtc19TZW5kTXNnKAorLGFja1JlcS5wZHUpO2Fja1JlcS5sZW5ndGg9c3RybGVuKGFja1BkdVN0cikvKDB4YTMzKzYxNDQtMHgyMjMxKTt9elNtc19TZW5kTXNnKAogTVNHX0NNRF9TTVNBQ0tfUkVRLHNpemVvZihUX3pTbXNfU21zQWNrUmVxKSwmYWNrUmVxKTtzZW1fd2FpdCgmZ19zbXNfc2VtX2lkKTtpZigKLWdfc21zT3B0UnNwLnJlc3VsdD09KDB4MjBmNSsxMTUyLTB4MjU3NCkpe3JldHVybiBaU01TX1JFU1VMVF9PSzt9ZWxzZXtyZXR1cm4gCitnX3Ntc09wdFJzcC5yZXN1bHQ9PSgweDE5MjkrMjk5MS0weDI0ZDcpKXtyZXR1cm4gWlNNU19SRVNVTFRfT0s7fWVsc2V7cmV0dXJuIAogWlNNU19SRVNVTFRfRVJST1I7fX1pbnQgelNtc19TZW5kWm1nclJlcShpbnQgaW5kZXgpe1RfelNtc19SZWFkU21zUmVxIHJlYWRTbXNSZXEKLT17KDB4MWJmOSsxMDM0LTB4MjAwMyl9O2lTbXNJbmRleD1pbmRleDtwcmludGYoCis9eygweGExZis0NzI1LTB4MWM5NCl9O2lTbXNJbmRleD1pbmRleDtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NWFceDZkXHg2N1x4NzJceDUyXHg2NVx4NzFceDIwXHg0N1x4NjVceDc0XHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLGlTbXNJbmRleCk7cmVhZFNtc1JlcS5pbmRleD1pbmRleDt6U21zX1NlbmRNc2coTVNHX0NNRF9SRUFEU01TX1JFUSxzaXplb2YoCi1UX3pTbXNfUmVhZFNtc1JlcSksJnJlYWRTbXNSZXEpO3JldHVybigweGI2KzQ4NjktMHgxM2JiKTt9Vk9JRCB6U21zX1JlY3ZabWdyUnNwKAotVUlOVDgqcERhdGFidWYpe1RfelNtc19TbXNJbmQgdENtZ3JSc3A9eygweDE4OTIrMjQwMy0weDIxZjUpfTttZW1jcHkoJnRDbWdyUnNwLCgKK1RfelNtc19SZWFkU21zUmVxKSwmcmVhZFNtc1JlcSk7cmV0dXJuKDB4NzcrNzIxMS0weDFjYTIpO31WT0lEIHpTbXNfUmVjdlptZ3JSc3AoCitVSU5UOCpwRGF0YWJ1Zil7VF96U21zX1Ntc0luZCB0Q21nclJzcD17KDB4MTJlZCszNTctMHgxNDUyKX07bWVtY3B5KCZ0Q21nclJzcCwoCiBUX3pTbXNfU21zSW5kKilwRGF0YWJ1ZixzaXplb2YoVF96U21zX1Ntc0luZCkpO3RDbWdyUnNwLmluZGV4PWlTbXNJbmRleDsKIHpVZmlTbXNfWm1nclJlc3BQcm9jKCZ0Q21nclJzcCk7elVmaU1taV9TZW5kU21zU3RhdHVzKCk7fVZPSUQgelNtc19SZWN2Wm1nck9rKAotVUlOVDgqcERhdGFidWYpe1RfelNtc19vcHRSc3Agc21zT3B0UnNwPXsoMHgxZDJmKzM3OS0weDFlYWEpfTttZW1jcHkoJnNtc09wdFJzcCwKLShUX3pTbXNfb3B0UnNwKilwRGF0YWJ1ZixzaXplb2YoVF96U21zX29wdFJzcCkpO2lmKHNtc09wdFJzcC5yZXN1bHQ9PQotKDB4NzQ4KzM1MTQtMHgxNTAxKSl7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fWVsc2V7cHJpbnRmKAorVUlOVDgqcERhdGFidWYpe1RfelNtc19vcHRSc3Agc21zT3B0UnNwPXsoMHgxYjkxKzIzNzQtMHgyNGQ3KX07bWVtY3B5KCZzbXNPcHRSc3AKKywoVF96U21zX29wdFJzcCopcERhdGFidWYsc2l6ZW9mKFRfelNtc19vcHRSc3ApKTtpZihzbXNPcHRSc3AucmVzdWx0PT0KKygweDJlOCsyNzU3LTB4ZGFjKSl7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NmZceDZiIik7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDVhXHg2ZFx4NjdceDcyXHg0NVx4NzJceDcyXHgyMFx4MjBceDUzXHg0ZFx4NTNceDIwXHg3YVx4NmRceDY3XHg3Mlx4MjBceDY5XHg3M1x4MjBceDY2XHg2MVx4NjlceDZjIiAiXG4iCiApO3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCiBTTVNfU1RBVEVfUkVDVkVEKTt9fVZPSUQgelNtc19SZWN2WnBiaWNJbmQoVUlOVDgqcERhdGFidWYpe1RfekF0X1pwYmljUmVzKnB0UGFyYQogPVpVRklfTlVMTDtpZihwRGF0YWJ1Zj09TlVMTCl7cmV0dXJuO31wdFBhcmE9KFRfekF0X1pwYmljUmVzKikocERhdGFidWYpO2lmKCgKLSgweDY5ZCsyNjk4LTB4MTEyNik9PXB0UGFyYS0+cmVzdWx0KSYmKCgweGU0MCsxNDQtMHhlZDApPT1wdFBhcmEtPm9wZXJ0eXBlKSl7Ci1DSEFSIG5lZWRTbXNbKDB4YjcyKzQ0OTAtMHgxY2NhKV09eygweDI2Nis1ODUyLTB4MTk0Mil9O3NjX2NmZ19nZXQoCi1OVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTbXMsc2l6ZW9mKG5lZWRTbXMpKTtpZigoMHhkMWErNTUxNS0weDIyYTUpIT1zdHJjbXAoCisoMHgxOTcrNDkyMC0weDE0Y2UpPT1wdFBhcmEtPnJlc3VsdCkmJigoMHhhMmYrMTUyMC0weDEwMWYpPT1wdFBhcmEtPm9wZXJ0eXBlKSl7CitDSEFSIG5lZWRTbXNbKDB4MTAyKzkyMjItMHgyNGQ2KV09eygweGE4MSs0OTA3LTB4MWRhYyl9O3NjX2NmZ19nZXQoCitOVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTbXMsc2l6ZW9mKG5lZWRTbXMpKTtpZigoMHhmMmYrMTkwNC0weDE2OWYpIT1zdHJjbXAoCiBuZWVkU21zLCJceDZlXHg2ZiIpKXt6U3ZyX1pwYmljX1Ntc19Jbml0KCk7fX19Vk9JRCB6U21zX1JlY3ZDcG1zSW5kKFVJTlQ4KgogcERhdGFidWYpe1RfelNtc19DcG1zSW5kKmNwbXNJbmQ9KFRfelNtc19DcG1zSW5kKilwRGF0YWJ1ZjtDSEFSIHN0ckJ1ZlsKLSgweDFjOCszODYxLTB4MTBkMyldPXsoMHhkYjErMTY5NC0weDE0NGYpfTtpbnQgcmVtYWluU3BhY2U9KDB4MTNlNiszNDY3LTB4MjE3MSk7CisoMHgyMDgrNTQzNy0weDE3M2IpXT17KDB4MTcxZisyODU2LTB4MjI0Nyl9O2ludCByZW1haW5TcGFjZT0oMHgxMTMrNjEzMi0weDE5MDcpOwogc25wcmludGYoc3RyQnVmLHNpemVvZihzdHJCdWYpLCJceDI1XHg2NCIsY3Btc0luZC0+dG90YWwpO3NjX2NmZ19zZXQoCiBaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1RPVEFMLHN0ckJ1Zik7c2NfY2ZnX3NldCgKLVpURV9XTVNfTlZDT05GSUdfU0lNX0NBUEFCSUxJVFksc3RyQnVmKTttZW1zZXQoJnN0ckJ1ZiwoMHgxNzErNzIxNS0weDFkYTApLAotKDB4NDkxKzU3MDMtMHgxYWNlKSk7c25wcmludGYoc3RyQnVmLHNpemVvZihzdHJCdWYpLCJceDI1XHg2NCIsY3Btc0luZC0+dXNlZCk7CitaVEVfV01TX05WQ09ORklHX1NJTV9DQVBBQklMSVRZLHN0ckJ1Zik7bWVtc2V0KCZzdHJCdWYsKDB4YjE3KzExNzgtMHhmYjEpLAorKDB4NzU5KzU0NjUtMHgxY2E4KSk7c25wcmludGYoc3RyQnVmLHNpemVvZihzdHJCdWYpLCJceDI1XHg2NCIsY3Btc0luZC0+dXNlZCk7CiBzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVVNFRCxzdHJCdWYpO3JlbWFpblNwYWNlPWNwbXNJbmQtPnRvdGFsLQotY3Btc0luZC0+dXNlZDttZW1zZXQoJnN0ckJ1ZiwoMHgxMmMxKzQ2NjQtMHgyNGY5KSwoMHgxYjArODg4MS0weDI0NTcpKTtzbnByaW50ZigKK2NwbXNJbmQtPnVzZWQ7bWVtc2V0KCZzdHJCdWYsKDB4ZjkzKzEyNDUtMHgxNDcwKSwoMHgxNjYrNzEwMC0weDFkMTgpKTtzbnByaW50ZigKIHN0ckJ1ZixzaXplb2Yoc3RyQnVmKSwiXHgyNVx4NjQiLHJlbWFpblNwYWNlKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9SRU1BSU4sc3RyQnVmKTtzY19jZmdfc2V0KE5WX1NNU19TVE9SRSwiXHg2Zlx4NmIiKTt9Ci0jZGVmaW5lIEFUX0NNRF9NQVggKDB4MWM0NSs2OTMtMHgxZWJhKQ0KKyNkZWZpbmUgQVRfQ01EX01BWCAoMHgxOTVhKzI5NzgtMHgyNGJjKQ0KICNkZWZpbmUgWkFUX1RBQl9SRVBMQUNFICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICkoXAotKDB4MTRjOSs0ODE4LTB4MjY5ZikpKSAgICANCisoMHgxNjk0KzIwNzYtMHgxZGI0KSkpICAgIA0KICNkZWZpbmUgWkFUX05VTExfRklMTCAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICkoXAotKDB4MjNkNysxMzctMHgyMzYzKSkpICAgIA0KKygweDk0YisyODQwLTB4MTM2NikpKSAgICANCiAjZGVmaW5lIFpBVF9TUEFDRV9SRVBMQUNFICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciApKFwKLSgweDIyZis2MDg5LTB4MThmYSkpKSAgICANCi0jZGVmaW5lIFpBVF9MRl9SRVBMQUNFICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciApKFwKLSgweDEwZjIrNTM4MC0weDI0ZmIpKSkgICAgDQotI2RlZmluZSBaQVRfQ1JfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKShcCi0oMHgyOWMrNzM1NS0weDFlNWQpKSkgICAgDQorKDB4MTg2OCsyNDUwLTB4MjBmYykpKSAgICANCisjZGVmaW5lIFpBVF9MRl9SRVBMQUNFICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciApKCgweDU1OCsyODQtMHg1NzkpKVwKKykgICAgDQorI2RlZmluZSBaQVRfQ1JfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKSgoMHhhYWMrOTktMHhhMTUpKSlcCisgICAgDQogc3RhdGljIHZvaWQgYXRCYXNlX1ByZVByb2NSZXMoY2hhcipwUGFyYUxpbmUsaW50IHBhcmFTaXplKXtzaWduZWQgbG9uZyBmbGc9Ci0oMHhkZDgrNTY4LTB4MTAxMCk7dW5zaWduZWQgbG9uZyBpPSgweDI1Yys3Mjc3LTB4MWVjOSk7dW5zaWduZWQgbG9uZyBsZW5ndGg9Ci0oMHgxMjc2KzEwMjgtMHgxNjdhKTtjaGFyKnBTb3VyY2U9cFBhcmFMaW5lO2NoYXIqcERlc3Q9TlVMTDtjaGFyKnBTdHJEZXN0TWFsbG9jPQotKGNoYXIqKW1hbGxvYyhBVF9DTURfTUFYKTtpZihOVUxMPT1wU3RyRGVzdE1hbGxvYyl7cmV0dXJuO31tZW1zZXQocFN0ckRlc3RNYWxsb2MKLSwoMHgxMjgrMzAxMi0weGNlYyksQVRfQ01EX01BWCk7YXNzZXJ0KHBQYXJhTGluZSE9TlVMTCk7cERlc3Q9cFN0ckRlc3RNYWxsb2M7Ci1sZW5ndGg9c3RybGVuKHBQYXJhTGluZSk7aWYoKGxlbmd0aD09KDB4NDY3KzgxMTctMHgyNDFjKSl8fChsZW5ndGg+PUFUX0NNRF9NQVgpKQote2ZyZWUocFN0ckRlc3RNYWxsb2MpO3JldHVybjt9Zm9yKGk9KDB4MTdkYis2NDUtMHgxYTYwKTsoaTxsZW5ndGgpJiYocERlc3QtCi1wU3RyRGVzdE1hbGxvYzxBVF9DTURfTUFYKTtpKyspe2lmKCgoY2hhcikoMHgyN2YrOTI0Ny0weDI2N2MpKT09KnBTb3VyY2Upe2ZsZz0oCi0oMHhjNzErMzg1LTB4ZGYyKT09ZmxnKT8oMHg4NWYrMzY2LTB4OWNjKTooMHhmNSs0NjQ2LTB4MTMxYik7aWYoCi0oKGNoYXIpKDB4YzVjKzM5NDEtMHgxYjlmKSk9PSoocFNvdXJjZSsoMHgzMmMrMzM0Ni0weDEwM2QpKSl7KnBEZXN0Kys9KGNoYXIpCi1aQVRfTlVMTF9GSUxMO319ZWxzZSBpZigoKChjaGFyKSgweDFhNTcrODkwLTB4MWRhNSkpPT0qcFNvdXJjZSkmJigKLSgweDNmMys2NDktMHg2N2MpPT1mbGcpKXsqcERlc3QrKz0oKGNoYXIpKDB4NzBhKzczMjMtMHgyMzg1KSk7aWYoCi0oKGNoYXIpKDB4MThiKzY3OC0weDQwNSkpPT0qKHBTb3VyY2UrKDB4NDA1KzM5MjAtMHgxMzU0KSkpeypwRGVzdCsrPQotKChjaGFyKSgweDFmNjkrOTgyLTB4MjMwNikpO31lbHNlIGlmKCdcMCc9PSoocFNvdXJjZSsoMHgxMDcxKzIyOTEtMHgxOTYzKSkpeyoKLXBEZXN0Kys9KGNoYXIpWkFUX05VTExfRklMTDt9fWVsc2V7aWYoKCgoY2hhcikoMHgxOTIyKzIyNTUtMHgyMWQxKSk9PSpwU291cmNlKSYmCi0oKDB4MWQ2KzEyOTYtMHg2ZTUpPT1mbGcpKXsqcERlc3QrKz0oY2hhcilaQVRfU1BBQ0VfUkVQTEFDRTt9ZWxzZSBpZigoJ1x0Jz09KgotcFNvdXJjZSkmJigoMHgxOWI3KzIwNTEtMHgyMWI5KT09ZmxnKSl7KnBEZXN0Kys9KGNoYXIpWkFUX1RBQl9SRVBMQUNFO31lbHNlIGlmKCgKLSdcbic9PSpwU291cmNlKSYmKCgweGM3MSsxNzE3LTB4MTMyNSk9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9MRl9SRVBMQUNFO31lbHNlCi0gaWYoKCdccic9PSpwU291cmNlKSYmKCgweDEzOGYrNDk0Ni0weDI2ZTApPT1mbGcpKXsqcERlc3QrKz0oY2hhcilaQVRfQ1JfUkVQTEFDRQotO31lbHNleypwRGVzdCsrPSpwU291cmNlO319cFNvdXJjZSsrO31tZW1zZXQocFBhcmFMaW5lLCgweDE3Y2IrMjU5NC0weDIxZWQpLAotcGFyYVNpemUpO3N0cm5jcHkocFBhcmFMaW5lLHBTdHJEZXN0TWFsbG9jLHBhcmFTaXplLSgweDEwNzYrMjIzMC0weDE5MmIpKTtmcmVlKAorKDB4NDc3KzcxMjktMHgyMDUwKTt1bnNpZ25lZCBsb25nIGk9KDB4YWMwKzM4Ni0weGM0Mik7dW5zaWduZWQgbG9uZyBsZW5ndGg9CisoMHhiYSsxNjYyLTB4NzM4KTtjaGFyKnBTb3VyY2U9cFBhcmFMaW5lO2NoYXIqcERlc3Q9TlVMTDtjaGFyKnBTdHJEZXN0TWFsbG9jPSgKK2NoYXIqKW1hbGxvYyhBVF9DTURfTUFYKTtpZihOVUxMPT1wU3RyRGVzdE1hbGxvYyl7cmV0dXJuO31tZW1zZXQocFN0ckRlc3RNYWxsb2MsCisoMHgxMDEyKzExMTMtMHgxNDZiKSxBVF9DTURfTUFYKTthc3NlcnQocFBhcmFMaW5lIT1OVUxMKTtwRGVzdD1wU3RyRGVzdE1hbGxvYzsKK2xlbmd0aD1zdHJsZW4ocFBhcmFMaW5lKTtpZigobGVuZ3RoPT0oMHhjYTMrNjE0MC0weDI0OWYpKXx8KGxlbmd0aD49QVRfQ01EX01BWCkpCit7ZnJlZShwU3RyRGVzdE1hbGxvYyk7cmV0dXJuO31mb3IoaT0oMHgxYzUrNDY0MC0weDEzZTUpOyhpPGxlbmd0aCkmJihwRGVzdC0KK3BTdHJEZXN0TWFsbG9jPEFUX0NNRF9NQVgpO2krKyl7aWYoKChjaGFyKSgweDIxNzQrOTI2LTB4MjRmMCkpPT0qcFNvdXJjZSl7ZmxnPSgKKygweDE5KzI4MzMtMHhiMmEpPT1mbGcpPygweDE4MDArMzg1Mi0weDI3MGIpOigweDE4YjMrMjczMC0weDIzNWQpO2lmKAorKChjaGFyKSgweDE2YWYrMTA2OC0weDFhYjkpKT09KihwU291cmNlKygweDIyYTkrNDAzLTB4MjQzYikpKXsqcERlc3QrKz0oY2hhcikKK1pBVF9OVUxMX0ZJTEw7fX1lbHNlIGlmKCgoKGNoYXIpKDB4OWIrMTk0NS0weDgwOCkpPT0qcFNvdXJjZSkmJigKKygweDE1OGIrMzE0MS0weDIxZDApPT1mbGcpKXsqcERlc3QrKz0oKGNoYXIpKDB4NjArNDM1OS0weDExNDcpKTtpZigKKygoY2hhcikoMHg5NTMrNjYyMy0weDIzMDYpKT09KihwU291cmNlKygweDUxNSs4NTA1LTB4MjY0ZCkpKXsqcERlc3QrKz0KKygoY2hhcikoMHgxYzM1KzE0MzQtMHgyMTk2KSk7fWVsc2UgaWYoJ1wwJz09KihwU291cmNlKygweDE0MWQrMTI0Ni0weDE4ZmEpKSl7KgorcERlc3QrKz0oY2hhcilaQVRfTlVMTF9GSUxMO319ZWxzZXtpZigoKChjaGFyKSgweGI2MCs2NDUxLTB4MjQ3MykpPT0qcFNvdXJjZSkmJigKKygweGE5Mis0MzA3LTB4MWI2NCk9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9TUEFDRV9SRVBMQUNFO31lbHNlIGlmKCgnXHQnPT0qCitwU291cmNlKSYmKCgweDFiZCs3MTE5LTB4MWQ4Yik9PWZsZykpeypwRGVzdCsrPShjaGFyKVpBVF9UQUJfUkVQTEFDRTt9ZWxzZSBpZigoCisnXG4nPT0qcFNvdXJjZSkmJigoMHg0ZmYrNTM1Ny0weDE5ZWIpPT1mbGcpKXsqcERlc3QrKz0oY2hhcilaQVRfTEZfUkVQTEFDRTt9ZWxzZQorIGlmKCgnXHInPT0qcFNvdXJjZSkmJigoMHgyMzAyKzMyNy0weDI0NDgpPT1mbGcpKXsqcERlc3QrKz0oY2hhcilaQVRfQ1JfUkVQTEFDRTsKK31lbHNleypwRGVzdCsrPSpwU291cmNlO319cFNvdXJjZSsrO31tZW1zZXQocFBhcmFMaW5lLCgweDViKzc1NTctMHgxZGUwKSwKK3BhcmFTaXplKTtzdHJuY3B5KHBQYXJhTGluZSxwU3RyRGVzdE1hbGxvYyxwYXJhU2l6ZS0oMHgxMzg5KzQ2MTItMHgyNThjKSk7ZnJlZSgKIHBTdHJEZXN0TWFsbG9jKTt9Vk9JRCB6U21zX1JlY3ZDc2NhSW5kKFVJTlQ4KnBEYXRhYnVmKXtUX3pTbXNfQ3NjYUluZCBjc2NhSW5kPXsKLSgweDhmMys0NDk0LTB4MWE4MSl9OwotI2lmICgweGY2OCszMTA2LTB4MWI4OSkKKygweGMwNiszMjUzLTB4MThiYil9OworI2lmICgweDE1NGYrMTE1Mi0weDE5Y2UpCiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NjNceDZmXHg3Mlx4NjVceDZkXHg1ZFx4N2FceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDczXHg2M1x4NjFceDQ5XHg2ZVx4NjRceDIwXHg2NFx4NjFceDc0XHg2MVx4NjJceDc1XHg2Nlx4M2FceDI1XHg3MyIgIlxuIgogLHBEYXRhYnVmKTsKICNlbmRpZg0KIGF0QmFzZV9QcmVQcm9jUmVzKHBEYXRhYnVmLHN0cmxlbihwRGF0YWJ1ZikpO3NzY2FuZihwRGF0YWJ1ZiwKICJceDI1XHgzMlx4MzFceDczXHgyMFx4MjVceDMyXHgzMVx4NzMiLGNzY2FJbmQuc2NhLGNzY2FJbmQudG9zY2EpOwotI2lmICgweDRiNSsxMzAxLTB4OWM5KQorI2lmICgweDI3NSs0MTczLTB4MTJjMSkKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg2M1x4NmZceDcyXHg2NVx4NmRceDVkXHg3YVx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NzNceDYzXHg2MVx4NDlceDZlXHg2NFx4MjBceDczXHg2M1x4NjFceDNhXHgyNVx4NzNceDJjXHgyMFx4NzRceDZmXHg3M1x4NjNceDYxXHgyNVx4NzMiICJcbiIKICxjc2NhSW5kLnNjYSxjc2NhSW5kLnRvc2NhKTsKQEAgLTMxMiwyMiArMzEwLDIyIEBACiBzY19jZmdfc2V0KE5WX1NNU19DRU5URVJfTlVNLGNzY2FJbmQuc2NhKTt6VWZpU21zX1NldFNjYVBhcmEoY3NjYUluZC5zY2EpO31WT0lEIAogelNtc19SZWN2Wm1nbEluZChVSU5UOCpwRGF0YWJ1Zil7elVmaVNtc19DbWdsUmVzcFByb2MoKFRfelNtc19TbXNJbmQqKXBEYXRhYnVmKTsKIH1pbnQgelNtc19TZW5kU21zSW5pdFJlcShWT0lEKXt6U21zX1NlbmRNc2coTVNHX0NNRF9TTVNJTklUX1JFUSwKLSgweDExNWIrMzIzLTB4MTI5ZSksTlVMTCk7cmV0dXJuKDB4MWE5YSsxODk3LTB4MjIwMyk7fVZPSUQgelNtc19pbml0QXRPayhWT0lEKXsKLVRfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweGMzZCs2NjcxLTB4MjY0Yyl9O3NjX2NmZ19zZXQoTlZfU01TX1NUT1JFLAorKDB4MjQwZCsxOTMtMHgyNGNlKSxOVUxMKTtyZXR1cm4oMHgzNWIrNDQ1LTB4NTE4KTt9Vk9JRCB6U21zX2luaXRBdE9rKFZPSUQpeworVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4MzY5KzYxMTctMHgxYjRlKX07c2NfY2ZnX3NldChOVl9TTVNfU1RPUkUsCiAiXHg2Zlx4NmIiKTtzY19jZmdfc2V0KE5WX1NNU19MT0FEX1JFU1VMVCwiXHg2Zlx4NmIiKTt0U3RhdHVzLmNtZF9zdGF0dXM9CiBXTVNfQ01EX1NVQ0NFU1M7dFN0YXR1cy5jbWQ9V01TX1NNU19DTURfSU5JVDsodm9pZCl6VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cwogKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfTE9BREVEKTt9Vk9JRCB6U21zX2luaXRBdEVycihWT0lEKXsKLVRfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDc0YisxNTAxLTB4ZDI4KX07c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQsCi0iXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9MT0FERUQpO3RTdGF0dXMuY21kX3N0YXR1cwotPVdNU19DTURfRkFJTEVEO3RTdGF0dXMuY21kPVdNU19TTVNfQ01EX0lOSVQ7KHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMKLSk7fVZPSUQgelNtc19SZWN2U21zSW5pdFJzdChVSU5UOCpwRGF0YWJ1Zil7bWVtY3B5KCZnX3Ntc09wdFJzcCxwRGF0YWJ1ZixzaXplb2YoCi1UX3pTbXNfb3B0UnNwKSk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0oMHhkZGMrNDY4OC0weDIwMmIpKXt6U21zX2luaXRBdE9rKCk7fQotZWxzZXt6U21zX2luaXRBdEVycigpO319VUlOVDggelNtc19TbXNNc2dDcmVhdChWT0lEKXtnX3pTbXNfTXNxSWQ9bXNnZ2V0KAotTU9EVUxFX0lEX1NNUyxJUENfQ1JFQVR8KDB4NmUxKzQ1NDAtMHgxNzFkKSk7aWYoZ196U21zX01zcUlkPT0tCi0oMHgxMWQrNjU2OS0weDFhYzUpKXtyZXR1cm4gWlVGSV9GQUlMO31nX3pTbXNfTG9jYWxNc3FJZD1tc2dnZXQoCi1NT0RVTEVfSURfU01TX0xPQ0FMLElQQ19DUkVBVHwoMHgxM2MwKzQxNDUtMHgyMjcxKSk7aWYoZ196U21zX0xvY2FsTXNxSWQ9PS0KLSgweGM1ZisxNDg4LTB4MTIyZSkpe3JldHVybiBaVUZJX0ZBSUw7fXNlbV9pbml0KCZnX3Ntc19zZW1faWQsCi0oMHhmYzUrNDA0Ni0weDFmOTMpLCgweGFjKzI0ODYtMHhhNjIpKTtyZXR1cm4gWlVGSV9TVUNDO312b2lkIAorVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4MjBhKzgyMDctMHgyMjE5KX07c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQKKywiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9MT0FERUQpO3RTdGF0dXMuCitjbWRfc3RhdHVzPVdNU19DTURfRkFJTEVEO3RTdGF0dXMuY21kPVdNU19TTVNfQ01EX0lOSVQ7KHZvaWQpCit6VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cyk7fVZPSUQgelNtc19SZWN2U21zSW5pdFJzdChVSU5UOCpwRGF0YWJ1Zil7bWVtY3B5KAorJmdfc21zT3B0UnNwLHBEYXRhYnVmLHNpemVvZihUX3pTbXNfb3B0UnNwKSk7aWYoZ19zbXNPcHRSc3AucmVzdWx0PT0KKygweDljZisyNzE0LTB4MTQ2OCkpe3pTbXNfaW5pdEF0T2soKTt9ZWxzZXt6U21zX2luaXRBdEVycigpO319VUlOVDggCit6U21zX1Ntc01zZ0NyZWF0KFZPSUQpe2dfelNtc19Nc3FJZD1tc2dnZXQoTU9EVUxFX0lEX1NNUyxJUENfQ1JFQVR8CisoMHhlMDMrNDMwMC0weDFkNGYpKTtpZihnX3pTbXNfTXNxSWQ9PS0oMHgxN2FjKzU4OC0weDE5ZjcpKXtyZXR1cm4gWlVGSV9GQUlMO30KK2dfelNtc19Mb2NhbE1zcUlkPW1zZ2dldChNT0RVTEVfSURfU01TX0xPQ0FMLElQQ19DUkVBVHwoMHg3MjArNTc4Ny0weDFjM2IpKTtpZigKK2dfelNtc19Mb2NhbE1zcUlkPT0tKDB4MmUxKzU0OS0weDUwNSkpe3JldHVybiBaVUZJX0ZBSUw7fXNlbV9pbml0KCZnX3Ntc19zZW1faWQsCisoMHg4NGQrMzkxNS0weDE3OTgpLCgweDEzNjgrODQ2LTB4MTZiNikpO3JldHVybiBaVUZJX1NVQ0M7fXZvaWQgCiB6U21zX0hhbmRsZUF0Y3RsTG9jYWxNc2coTVNHX0JVRipwdE1zZ0J1Zil7YXNzZXJ0KHB0TXNnQnVmIT1OVUxMKTtwcmludGYoCiAiXHg3M1x4NmRceDczXHgyMFx4NmNceDZmXHg2M1x4NjFceDZjXHgyMFx4NzJceDY1XHg2M1x4NzZceDIwXHg2ZFx4NzNceDY3XHgyMFx4NjNceDZkXHg2NFx4M2FceDI1XHg2NCIgIlxuIgogLHB0TXNnQnVmLT51c01zZ0NtZCk7c3dpdGNoKHB0TXNnQnVmLT51c01zZ0NtZCl7Y2FzZSBNU0dfQ01EX1pQQklDX0lORDoKQEAgLTM1MSw0NCArMzQ5LDQ0IEBACiBjYXNlIE1TR19DTURfTkVXU01TX0lORDpjYXNlIE1TR19DTURfWlBCSUNfSU5EOmNhc2UgTVNHX0NNRF9aTUdMX0lORDpjYXNlIAogTVNHX0NNRF9ORVdTTVNfU1RBVFVTX0lORDppcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9TTVMsTU9EVUxFX0lEX1NNU19MT0NBTCwKIHB0TXNnQnVmLT51c01zZ0NtZCxwdE1zZ0J1Zi0+dXNEYXRhTGVuLCh1bnNpZ25lZCBjaGFyKilwdE1zZ0J1Zi0+YXVjRGF0YUJ1ZiwKLSgweDFlNmErNDY3LTB4MjAzZCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWs7fX1WT0lEIHpTbXNfSGFuZGxlUmVzZXRUb0ZhY3RvcnkoKXtDSEFSCi0gY2xlYXJTbXNbKDB4NWMrMzUzNy0weGRmYildPXsoMHgyMWFhKzUxLTB4MjFkZCl9O3NjX2NmZ19nZXQoCisoMHgxZmErNzI5LTB4NGQzKSk7YnJlYWs7ZGVmYXVsdDpicmVhazt9fVZPSUQgelNtc19IYW5kbGVSZXNldFRvRmFjdG9yeSgpe0NIQVIgCitjbGVhclNtc1soMHhhMDIrMjk5My0weDE1ODEpXT17KDB4MmM0Kzg4MDMtMHgyNTI3KX07c2NfY2ZnX2dldCgKIE5WX0NMRUFSX1NNU19XSEVOX1JFU1RPUkUsY2xlYXJTbXMsc2l6ZW9mKGNsZWFyU21zKSk7cHJpbnRmKAogIlx4NjFceDc0XHg1N1x4NjVceDYyXHg1Zlx4NTJceDY1XHg3M1x4NzRceDZmXHg3Mlx4NjVceDQ2XHg2MVx4NjNceDc0XHg2Zlx4NzJceDc5XHg1M1x4NjVceDc0XHg3NFx4NjlceDZlXHg2N1x4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NjVceDY0XHgyMVx4MjAiICJcbiIKICk7cHJpbnRmKAogIlx4NjNceDZjXHg2NVx4NjFceDcyXHg1Zlx4NzNceDZkXHg3M1x4NWZceDc3XHg2OFx4NjVceDZlXHg1Zlx4NzJceDY1XHg3M1x4NzRceDZmXHg3Mlx4NjVceDNkXHgyNVx4NzNceDIwIiAiXG4iCi0sY2xlYXJTbXMpO2lmKHN0cmNtcChjbGVhclNtcywiXHg3OVx4NjVceDczIik9PSgweDI5OCs5MjMzLTB4MjZhOSkpe3ByaW50ZigKKyxjbGVhclNtcyk7aWYoc3RyY21wKGNsZWFyU21zLCJceDc5XHg2NVx4NzMiKT09KDB4M2I4Kzc5NjgtMHgyMmQ4KSl7cHJpbnRmKAogIlx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NzJceDZmXHg3MFx4NDFceDZjXHg2Y1x4NTRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjVceDZlXHg3NFx4NjVceDcyXHg2NVx4NjRceDIxXHgyMCIgIlxuIgogKTt6VWZpU21zX0Ryb3BBbGxUYWJsZSgpO31lbHNle3ByaW50ZigKICJceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDRceDcyXHg2Zlx4NzBceDQxXHg2Y1x4NmNceDU0XHg2MVx4NjJceDZjXHg2NVx4NDVceDc4XHg2M1x4NjVceDcwXHg3NFx4NTNceDZkXHg3M1x4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4NjVceDY0XHgyMVx4MjAiICJcbiIKICk7elVmaVNtc19Ecm9wQWxsVGFibGVFeGNlcHRTbXMoKTt9aXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfU01TLAotTU9EVUxFX0lEX01BSU5fQ1RSTCxNU0dfQ01EX1JFU0VUX1JTUCwoMHgxYzArNTAwOC0weDE1NTApLE5VTEwsCi0oMHg2Mis3NDY1LTB4MWQ4YikpO312b2lkIHpTbXNfSGFuZGxlTWFpbkN0cmxNc2coTVNHX0JVRipwdE1zZ0J1Zil7YXNzZXJ0KAorTU9EVUxFX0lEX01BSU5fQ1RSTCxNU0dfQ01EX1JFU0VUX1JTUCwoMHgxMDYxKzE1NTAtMHgxNjZmKSxOVUxMLAorKDB4ZjMzKzEzMTQtMHgxNDU1KSk7fXZvaWQgelNtc19IYW5kbGVNYWluQ3RybE1zZyhNU0dfQlVGKnB0TXNnQnVmKXthc3NlcnQoCiBwdE1zZ0J1ZiE9TlVMTCk7cHJpbnRmKAogIlx4NzNceDZkXHg3M1x4MjBceDcyXHg2NVx4NjNceDc2XHgyMFx4NmRceDYxXHg2OVx4NmVceDIwXHg2M1x4NzRceDcyXHg2Y1x4MjBceDZkXHg3M1x4NjdceDIwXHg2M1x4NmRceDY0XHgzYVx4MjVceDY0IiAiXG4iCiAscHRNc2dCdWYtPnVzTXNnQ21kKTtzd2l0Y2gocHRNc2dCdWYtPnVzTXNnQ21kKXtjYXNlIE1TR19DTURfUkVTRVRfTk9USUZZOgogelNtc19IYW5kbGVSZXNldFRvRmFjdG9yeShwdE1zZ0J1Zi0+YXVjRGF0YUJ1Zik7YnJlYWs7ZGVmYXVsdDpicmVhazt9fXZvaWQgCi1zbXNfbXNnX3RocmVhZF9wcm9jKHZvaWQqYXJnKXtpbnQgaVJldD0oMHg0NjcrMTQ4MS0weGEzMCk7TVNHX0JVRiBzdE1zZz17Ci0oMHgxNjRhKzE5NTctMHgxZGVmKX07aW50IG1zZ1NpemU9c2l6ZW9mKE1TR19CVUYpLXNpemVvZihsb25nKTtpbnQgcXVldWVJZD0qKCgKLWludCopYXJnKTtwcmN0bChQUl9TRVRfTkFNRSwiXHg3M1x4NmRceDczXHg1Zlx4NmNceDZmXHg2M1x4NjFceDZjIiwKLSgweDEwNzUrNzg1LTB4MTM4NiksKDB4MTI5ZisyMjg1LTB4MWI4YyksKDB4YzhmKzY2MDAtMHgyNjU3KSk7d2hpbGUoCi0oMHhjMWYrNDMwLTB4ZGNjKSl7aVJldD0oMHg3YjIrNjI5LTB4YTI3KTttZW1zZXQoJnN0TXNnLCgweDFlYzgrNjQ5LTB4MjE1MSksCi1zaXplb2YoTVNHX0JVRikpO2lSZXQ9bXNncmN2KHF1ZXVlSWQsJnN0TXNnLG1zZ1NpemUsKDB4YTI5KzMyMzYtMHgxNmNkKSwKLSgweGJiYSsxMDI2LTB4ZmJjKSk7aWYoaVJldD49KDB4MTg5MisxNTUwLTB4MWVhMCkpe3N3aXRjaChzdE1zZy5zcmNfaWQpe2Nhc2UgCitzbXNfbXNnX3RocmVhZF9wcm9jKHZvaWQqYXJnKXtpbnQgaVJldD0oMHgyMDFkKzE3NjAtMHgyNmZkKTtNU0dfQlVGIHN0TXNnPXsKKygweDNiZiszODMxLTB4MTJiNil9O2ludCBtc2dTaXplPXNpemVvZihNU0dfQlVGKS1zaXplb2YobG9uZyk7aW50IHF1ZXVlSWQ9KigoaW50CisqKWFyZyk7cHJjdGwoUFJfU0VUX05BTUUsIlx4NzNceDZkXHg3M1x4NWZceDZjXHg2Zlx4NjNceDYxXHg2YyIsCisoMHg3YTMrMjc4LTB4OGI5KSwoMHgxOGJjKzEyNzEtMHgxZGIzKSwoMHhlMjErMTc5MC0weDE1MWYpKTt3aGlsZSgKKygweGQ1Mis1OTM0LTB4MjQ3Zikpe2lSZXQ9KDB4OTJmKzE0MjItMHhlYmQpO21lbXNldCgmc3RNc2csKDB4NTU2KzgxMTgtMHgyNTBjKSwKK3NpemVvZihNU0dfQlVGKSk7aVJldD1tc2dyY3YocXVldWVJZCwmc3RNc2csbXNnU2l6ZSwoMHgxMTM5KzYzMy0weDEzYjIpLAorKDB4MWI3OSsyNjc1LTB4MjVlYykpO2lmKGlSZXQ+PSgweDE1ZDgrMjM3MC0weDFmMWEpKXtzd2l0Y2goc3RNc2cuc3JjX2lkKXtjYXNlIAogTU9EVUxFX0lEX1dFQl9DR0k6e3pTbXNfSGFuZGxlV2ViTXNnKCZzdE1zZyk7YnJlYWs7fWNhc2UgTU9EVUxFX0lEX0FUX0NUTDp7CiB6U21zX0hhbmRsZUF0Y3RsTXNnKCZzdE1zZyk7YnJlYWs7fWNhc2UgTU9EVUxFX0lEX1NNUzp7elNtc19IYW5kbGVXZWJNc2coJnN0TXNnKQogO3pTbXNfSGFuZGxlQXRjdGxMb2NhbE1zZygmc3RNc2cpO2JyZWFrO31jYXNlIE1PRFVMRV9JRF9NQUlOX0NUUkw6ewogelNtc19IYW5kbGVNYWluQ3RybE1zZygmc3RNc2cpO2JyZWFrO31kZWZhdWx0OnticmVhazt9fX1lbHNle2F0X3ByaW50KEFUX0RFQlVHLAogIlx4NjVceDcyXHg3Mlx4NmVceDZmXHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHgyMFx4NjVceDcyXHg3Mlx4NmRceDczXHg2N1x4MjBceDNkXHgyMFx4MjVceDczIiAiXG4iCiAsZXJybm8sc3RyZXJyb3IoZXJybm8pKTt9fX1pbnQgc21zX21haW4oaW50IGFyZ2MsY2hhciphcmd2W10pe3B0aHJlYWRfdCAKLXJlY3ZfdGhyZWFkX3RpZD0oMHgxNmExKzIwMDQtMHgxZTc1KTtNU0dfQlVGIG1zZ0J1Zj17KDB4OGRiKzIxMzQtMHgxMTMxKX07Q0hBUiAKLW5lZWRTTVNbKDB4ODM3KzYzODUtMHgyMGY2KV09eygweGM0MSs1ODI0LTB4MjMwMSl9O3ByY3RsKFBSX1NFVF9OQU1FLAotIlx4NzNceDZkXHg3M1x4NWZceDZkXHg2MVx4NjlceDZlIiwoMHg4YWMrMTU5OS0weGVlYiksKDB4MTc1OSszNDYzLTB4MjRlMCksCi0oMHg4MmIrNzM1My0weDI0ZTQpKTtsb2dsZXZlbF9pbml0KCk7c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsCi1zaXplb2YobmVlZFNNUykpO2lmKCgweGFmZCszMjAxLTB4MTc3ZSkhPXN0cmNtcChuZWVkU01TLCJceDZlXHg2ZiIpKXsKK3JlY3ZfdGhyZWFkX3RpZD0oMHgxYTI2KzE3MDYtMHgyMGQwKTtNU0dfQlVGIG1zZ0J1Zj17KDB4MTM4MysxNTI0LTB4MTk3Nyl9O0NIQVIgCituZWVkU01TWygweGZhNyszMDU1LTB4MWI2NCldPXsoMHgyZTYrNzA0MS0weDFlNjcpfTtwcmN0bChQUl9TRVRfTkFNRSwKKyJceDczXHg2ZFx4NzNceDVmXHg2ZFx4NjFceDY5XHg2ZSIsKDB4OTA1Kzk0Mi0weGNiMyksKDB4YjRiKzEyMzMtMHgxMDFjKSwKKygweDEzNGIrNDc1MC0weDI1ZDkpKTtsb2dsZXZlbF9pbml0KCk7c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsCitzaXplb2YobmVlZFNNUykpO2lmKCgweDEwYzQrODUyLTB4MTQxOCkhPXN0cmNtcChuZWVkU01TLCJceDZlXHg2ZiIpKXsKIHpVZmlTbXNfSW5pdERiKCk7elVmaVNtc19DZmdTbXNOdkluaXQoKTt6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTt6U21zX1Ntc01zZ0NyZWF0Ci0oKTt9ZWxzZXtyZXR1cm4tKDB4ODk2KzI5NjQtMHgxNDI5KTt9cHJpbnRmKAorKCk7fWVsc2V7cmV0dXJuLSgweDI2Mys2MjI1LTB4MWFiMyk7fXByaW50ZigKICJceDczXHg2ZFx4NzNceDIwXHg2MVx4NzBceDcwXHgyMFx4NjlceDZlXHg2OVx4NzRceDIwXHg2Nlx4NjlceDZlXHg2OVx4NzNceDY4XHg2NVx4NjRceDJjXHgyMFx4NzdceDY5XHg2Y1x4NmNceDIwXHg3NFx4NmZceDIwXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4MjBceDZkXHg3M1x4NjdceDJjXHgyMFx4NmRceDczXHg2N1x4NjlceDY0XHgzYVx4MjVceDY0IiAiXG4iCiAsZ196U21zX01zcUlkKTtpZihwdGhyZWFkX2NyZWF0ZSgmcmVjdl90aHJlYWRfdGlkLE5VTEwsc21zX21zZ190aHJlYWRfcHJvYywodm9pZAotKikoJmdfelNtc19Mb2NhbE1zcUlkKSk9PS0oMHgxNmY2KzM3ODYtMHgyNWJmKSl7YXNzZXJ0KCgweDEwYWIrNDUxMi0weDIyNGIpKTt9Ci1zbXNfbXNnX3RocmVhZF9wcm9jKCZnX3pTbXNfTXNxSWQpO3JldHVybigweDVkOCs0NjYwLTB4MTgwYyk7fQorKikoJmdfelNtc19Mb2NhbE1zcUlkKSk9PS0oMHg5NTArNzQyLTB4YzM1KSl7YXNzZXJ0KCgweDFhNmQrMjE0Ni0weDIyY2YpKTt9CitzbXNfbXNnX3RocmVhZF9wcm9jKCZnX3pTbXNfTXNxSWQpO3JldHVybigweDM0YysxMzc5LTB4OGFmKTt9CmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfcHJvYy5jIGIvYXAvYXBwL3p0ZV9jb21tL3Ntcy9zcmMvc21zX3Byb2MuYwppbmRleCBhNmJiYzA5Li5iMTAwMGM5IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vc21zL3NyYy9zbXNfcHJvYy5jCisrKyBiL2FwL2FwcC96dGVfY29tbS9zbXMvc3JjL3Ntc19wcm9jLmMKQEAgLTUsMTE3ICs1LDExNyBAQAogVF96VWZpU21zX0NvbmNhdEluZm8gZ196VWZpU21zX0NvbmNhdFNtcztUX3pVZmlTbXNfR3JvdXBJbmZvIGdfelVmaVNtc19Hcm91cFNtczsKIFRfelVmaVNtc19EYlN0b3JlRGF0YSBnX3pVZmlTbXNfRGJTdG9yZURhdGFbWlRFX1dNU19DT05DQVRfU01TX0NPVU5UX01BWF07VUlOVDggCiBnX3pVZmlTbXNfTWVtRnVsbEZsYWdbWlRFX1dNU19NRU1PUllfTUFYXT17RkFMU0UsRkFMU0V9O1RfelVmaVNtc19EZWxTbXMgCi1nX3pVZmlTbXNfRGVsTXNnO1RfelVmaVNtc19EZWxJbmRleEluZm8gZ19kZWxldGVJbmRleD17KDB4MTliKzgzNzUtMHgyMjUyKX07Ci1UX3pVZmlTbXNfTW9kaWZ5U21zIGdfelVmaVNtc19tb2RpZnlNc2c9eygweDFlZTQrODQxLTB4MjIyZCl9OwotVF96VWZpU21zX01vZGlmeUluZGV4SW5mbyBnX21vZGlmeUluZGV4PXsoMHgxZjQ1KzE3ODEtMHgyNjNhKX07aW50IAotZ196VWZpU21zX1VuaXRMZW49KDB4MTljNSsyNzI0LTB4MjQ2OSk7aW50IGdfelVmaVNtc19Db25jYXRUb3RhbE51bT0KLSgweDEyMSs1MzYxLTB4MTYxMik7aW50IGdfelVmaVNtc19DdXJDb25jYXRTZWdObz0oMHg0ZjQrNTk4MC0weDFjNTApO1VJTlQ4IAotZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1Yz1UUlVFO2ludCBnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50PSgweDI5Yys4NTMyLTB4MjNmMCkKLTtpbnQgZ196VWZpU21zX01zZ1JlZmVyPSgweGFmYSs1MTM1LTB4MWYwOSk7aW50IGdfelVmaVNtc19TZW5kRmFpbGVkUmV0cnk9Ci0oMHhkOCszNTc3LTB4ZWQxKTtjaGFyIGdfWm1lbmFfdmFsdWVbKDB4MTFkNisyMjMxLTB4MWE4YildPXsoMHgxMzJiKzQ2ODAtMHgyNTczKQotfTtpbnQgZ19kaXNwbGF5bW9kZT0oMHg1ZTArNjA5OC0weDFkYjIpO2V4dGVybiBTTVNfTE9DQVRJT04gCi1nX3pVZmlTbXNfQ3VyTG9jYXRpb247ZXh0ZXJuIFRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19IYW5kbGVSZXBvcnQodW5zaWduZWQgCi1jaGFyKnB0UGR1RGF0YSk7ZXh0ZXJuIHZvaWQgelVmaVNtc19HZXRSZXBvcnRTdGF0dXMoY2hhcipwZHVfdG1wLGludCpzdGF0KTsKLWV4dGVybiBWT0lEIHpVZmlTbXNfUmVzZW5kQXRDbWRabWVuYShpbnQgY2lkKTtleHRlcm4gaW50IHpVZmlTbXNfRGVjb2RlU21zRGF0YSgKK2dfelVmaVNtc19EZWxNc2c7VF96VWZpU21zX0RlbEluZGV4SW5mbyBnX2RlbGV0ZUluZGV4PXsoMHgxZGM1KzgyLTB4MWUxNyl9OworVF96VWZpU21zX01vZGlmeVNtcyBnX3pVZmlTbXNfbW9kaWZ5TXNnPXsoMHgxMWY5KzM1NTctMHgxZmRlKX07CitUX3pVZmlTbXNfTW9kaWZ5SW5kZXhJbmZvIGdfbW9kaWZ5SW5kZXg9eygweDE1MTkrMTQ3NS0weDFhZGMpfTtpbnQgCitnX3pVZmlTbXNfVW5pdExlbj0oMHhjOGMrMzI3Ny0weDE5NTkpO2ludCBnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW09CisoMHgxN2M2KzM5MDUtMHgyNzA3KTtpbnQgZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vPSgweDExOTMrMTQyMS0weDE3MjApO1VJTlQ4IAorZ196VWZpU21zX0lzQ29uY2F0U2VuZFN1Yz1UUlVFO2ludCBnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50PSgweDgwNys3NjktMHhiMDgpOworaW50IGdfelVmaVNtc19Nc2dSZWZlcj0oMHgxNDVjKzI3NjMtMHgxZjI3KTtpbnQgZ196VWZpU21zX1NlbmRGYWlsZWRSZXRyeT0KKygweGI4NCs2NDYyLTB4MjRjMik7Y2hhciBnX1ptZW5hX3ZhbHVlWygweGUwKzc4NzItMHgxZjllKV09eygweDY3Nys2NjU1LTB4MjA3Nil9Cis7aW50IGdfZGlzcGxheW1vZGU9KDB4NzY2KzE3MDctMHhlMTEpO2V4dGVybiBTTVNfTE9DQVRJT04gZ196VWZpU21zX0N1ckxvY2F0aW9uOworZXh0ZXJuIFRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19IYW5kbGVSZXBvcnQodW5zaWduZWQgY2hhcipwdFBkdURhdGEpO2V4dGVybiAKK3ZvaWQgelVmaVNtc19HZXRSZXBvcnRTdGF0dXMoY2hhcipwZHVfdG1wLGludCpzdGF0KTtleHRlcm4gVk9JRCAKK3pVZmlTbXNfUmVzZW5kQXRDbWRabWVuYShpbnQgY2lkKTtleHRlcm4gaW50IHpVZmlTbXNfRGVjb2RlU21zRGF0YSgKIFRfelVmaVNtc19EYlN0b3JlRGF0YSpwRGJfRGF0YSxpbnQgbXNnX2luZGV4LHpVZmlTbXNfU3RvcmVUeXBlIGlTdG9yZVBvcywKIFRfU21zU3RhdHVzIGJTbXNfU3RhdHVzLHdtc19tZXNzYWdlX2Zvcm1hdF9lbnVtX3YwMSBmb3JtYXQsbG9uZyBpUGR1X0xlbiwKIHVuc2lnbmVkIGNoYXIqcFBkdV9SZWNlaXZlZCk7dHlwZWRlZiBzdHJ1Y3R7bG9uZyBtdHlwZTtjaGFyIG10ZXh0WwotKDB4MTAyMCszMDUxLTB4MWJmZildO31GT1RBX01TR19CVUY7Ci0jZGVmaW5lIFdFQlVJX05PVElGWV9QVVNIX01TR18gICgweGI1MSs0NjYzLTB4MWQ4NSkNCisoMHgxM2I0KzEyMTgtMHgxODZhKV07fUZPVEFfTVNHX0JVRjsKKyNkZWZpbmUgV0VCVUlfTk9USUZZX1BVU0hfTVNHXyAgKDB4ZmNjKzIxOTItMHgxODU5KQ0KIHR5cGVkZWYgc3RydWN0e3Vuc2lnbmVkIGludCBpc3JlYWRfcmVjb3JkO3Vuc2lnbmVkIGludCBpbmJveF9mdWxsO30KIFRfelVmaU1taV9TbXNSZWNvcmQ7dm9pZCB6VWZpTW1pX1NlbmRTbXNTdGF0dXModm9pZCl7aW50IGlTbXNOdW09Ci0oMHg2ZWMrNzY4Ni0weDI0ZjIpO1RfelVmaU1taV9TbXNSZWNvcmQgdFJlY29yZD17KDB4NjAxKzc4NDAtMHgyNGExKX07Q0hBUiAKLXNtc051bVsoMHhmZiszNDU2LTB4ZTRkKV09eygweDExYWYrMjc5Mi0weDFjOTcpfTtzY19jZmdfZ2V0KE5WX1NNU19JTl9OVU0sc21zTnVtCi0sc2l6ZW9mKHNtc051bSkpO2lTbXNOdW09YXRvaShzbXNOdW0pO3RSZWNvcmQuaXNyZWFkX3JlY29yZD16VWZpU21zX0lzVW5yZWFkU21zKAotWlRFX1dNU19NRU1PUllfTUFYKTtpZihpU21zTnVtPj1aU01TX05VTV9NQVhfQ1BFKXt0UmVjb3JkLmluYm94X2Z1bGw9Ci0oMHg0YjcrNDU4NS0weDE2OWYpO31lbHNle3RSZWNvcmQuaW5ib3hfZnVsbD0oMHgxMGVmKzUwOTMtMHgyNGQ0KTt9fVZPSUQgCi16VWZpU21zX0luaXQoVk9JRCl7elVmaVNtc19DZmdJbml0KCk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0lOSVRJTkcpOwotfVZPSUQgelN2cl9acGJpY19TbXNfSW5pdChWT0lEKXtpbnQgYXRSZXM9KDB4MTZlMCsxMDk5LTB4MWIyYik7Ci1UX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzPXsoMHhiMmIrNTg2OS0weDIyMTgpfTtDSEFSIG91dERhdGVbCi0oMHgxOGM1KzE5NjEtMHgyMDNjKV09eygweDEzNjgrMjU4NC0weDFkODApfTt6VWZpU21zX0luaXQoKTsKKygweDZlMCszNjA5LTB4MTRmOSk7VF96VWZpTW1pX1Ntc1JlY29yZCB0UmVjb3JkPXsoMHg5MjMrNDY3Ni0weDFiNjcpfTtDSEFSIAorc21zTnVtWygweDE1ZWQrMzc4OC0weDI0ODcpXT17KDB4MTUrNjcxMC0weDFhNGIpfTtzY19jZmdfZ2V0KE5WX1NNU19JTl9OVU0sCitzbXNOdW0sc2l6ZW9mKHNtc051bSkpO2lTbXNOdW09YXRvaShzbXNOdW0pO3RSZWNvcmQuaXNyZWFkX3JlY29yZD0KK3pVZmlTbXNfSXNVbnJlYWRTbXMoWlRFX1dNU19NRU1PUllfTUFYKTtpZihpU21zTnVtPj1aU01TX05VTV9NQVhfQ1BFKXt0UmVjb3JkLgoraW5ib3hfZnVsbD0oMHhjNGMrMjA4MC0weDE0NmIpO31lbHNle3RSZWNvcmQuaW5ib3hfZnVsbD0oMHg3YjQrNjAyMi0weDFmM2EpO319CitWT0lEIHpVZmlTbXNfSW5pdChWT0lEKXt6VWZpU21zX0NmZ0luaXQoKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKK1NNU19TVEFURV9JTklUSU5HKTt9Vk9JRCB6U3ZyX1pwYmljX1Ntc19Jbml0KFZPSUQpe2ludCBhdFJlcz0KKygweDFiMTQrMzAyNS0weDI2ZTUpO1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweGU5OSs0MjY5LTB4MWY0Nil9O0NIQVIgCitvdXREYXRlWygweDFmZTYrMTYzOC0weDI2MWEpXT17KDB4NDMwKzg1NC0weDc4Nil9O3pVZmlTbXNfSW5pdCgpOwogelVmaVNtc19Jbml0Q21kU3RhdHVzKCZ0U3RhdHVzLFdNU19TTVNfQ01EX0lOSVQpO3pTbXNfU2VuZFNtc0luaXRSZXEoKTthdF9wcmludCgKIExPR19ERUJVRywiY29yZW0gelN2cl9acGJpY19TbXNfSW5pdCBoYXMgc2VuZCBpbml0IHJlcVxuIik7elNtc19TZW5kWm1lbmFSZXEoCi0oMHhhMzQrMjcyMS0weDE0ZDUpKTthdF9wcmludChMT0dfREVCVUcsCisoMHhiZjYrNzY5LTB4ZWY3KSk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NjNceDZmXHg3Mlx4NjVceDZkXHgyMFx4N2FceDUzXHg3Nlx4NzJceDVmXHg1YVx4NzBceDYyXHg2OVx4NjNceDVmXHg1M1x4NmRceDczXHg1Zlx4NDlceDZlXHg2OVx4NzRceDIwXHg2OFx4NjFceDczXHgyMFx4NzNceDY1XHg2ZVx4NjRceDIwXHg3YVx4NmRceDY1XHg2ZVx4NjFceDIwXHg3Mlx4NjVceDcxIiAiXG4iCiApO3NjX2NmZ19nZXQoTlZfT1VUREFURV9ERUxFVEUsb3V0RGF0ZSxzaXplb2Yob3V0RGF0ZSkpO2F0X3ByaW50KExPR19ERUJVRywKICJceDYzXHg2Zlx4NzJceDY1XHg2ZFx4MjBceDdhXHg1M1x4NzZceDcyXHg1Zlx4NWFceDcwXHg2Mlx4NjlceDYzXHg1Zlx4NTNceDZkXHg3M1x4NWZceDQ5XHg2ZVx4NjlceDc0XHgyMFx4NmZceDc1XHg3NFx4NjRceDYxXHg3NFx4NjVceDIwXHg2M1x4NjhceDY1XHg2M1x4NmJceDIwXHgyNVx4NzMiICJcbiIKLSxvdXREYXRlKTtpZigoMHhiY2YrMjY0MS0weDE2MjApPT1zdHJjbXAob3V0RGF0ZSwiXHgzMSIpKXthdFdlYl9PdXRkYXRlU21zQ2hlY2soCissb3V0RGF0ZSk7aWYoKDB4OWExKzM4NDMtMHgxOGE0KT09c3RyY21wKG91dERhdGUsIlx4MzEiKSl7YXRXZWJfT3V0ZGF0ZVNtc0NoZWNrKAogWlVGSV9OVUxMKTt9fVZPSUQgelVmaVNtc19EZWxldGVBbGxTaW1TbXMoVk9JRCl7elVmaVNtc19EZWxldGVBbGxTaW1TbXNJbkRiKCk7fQotI2lmICgweDJlZiszODkwLTB4MTIyMSkNCi1WT0lEIHpVZmlTbXNfUmVzZW5kQXRDbWRabWVuYShpbnQgY2lkKXtDSEFSIG5ldFR5cGVbKDB4Mjc4KzgxMjYtMHgyMjA0KV09ewotKDB4MTM3Kzg0OTItMHgyMjYzKX07c2NfY2ZnX2dldChOVl9ORVRXT1JLX1RZUEUsbmV0VHlwZSxzaXplb2YobmV0VHlwZSkpO2lmKCEKLWdfWm1lbmFfcnNwJiYoKDB4YzQxKzY5OS0weGVmYykhPXN0cmNtcCgKLSJceDRlXHg2Zlx4MjBceDUzXHg2NVx4NzJceDc2XHg2OVx4NjNceDY1IixuZXRUeXBlKSYmKDB4ZDNmKzM5NDUtMHgxY2E4KSE9c3RyY21wCi0oIlx4NGNceDY5XHg2ZFx4NjlceDc0XHg2NVx4NjRceDIwXHg1M1x4NjVceDcyXHg3Nlx4NjlceDYzXHg2NSIsbmV0VHlwZSkpKXsKLWF0VW5zb2xpX1JlcG9ydF9abWVuYShOVUxMLGNpZCk7fX0KKyNpZiAoMHg2NTErMzc5OC0weDE1MjcpDQorVk9JRCB6VWZpU21zX1Jlc2VuZEF0Q21kWm1lbmEoaW50IGNpZCl7Q0hBUiBuZXRUeXBlWygweDM2MSs3MDU2LTB4MWViZildPXsKKygweDEyZWErMjczMS0weDFkOTUpfTtzY19jZmdfZ2V0KE5WX05FVFdPUktfVFlQRSxuZXRUeXBlLHNpemVvZihuZXRUeXBlKSk7aWYoIQorZ19abWVuYV9yc3AmJigoMHhhZGIrNjcwMy0weDI1MGEpIT1zdHJjbXAoCisiXHg0ZVx4NmZceDIwXHg1M1x4NjVceDcyXHg3Nlx4NjlceDYzXHg2NSIsbmV0VHlwZSkmJigweDFkOTcrMTgwMS0weDI0YTApIT0KK3N0cmNtcCgiXHg0Y1x4NjlceDZkXHg2OVx4NzRceDY1XHg2NFx4MjBceDUzXHg2NVx4NzJceDc2XHg2OVx4NjNceDY1IixuZXRUeXBlKSkpCit7YXRVbnNvbGlfUmVwb3J0X1ptZW5hKE5VTEwsY2lkKTt9fQogI2VuZGlmDQogdm9pZCB6VWZpU21zX0Fja19uZXdfbXNnKEJPT0wgbmVlZEFjayl7Ci0jaWYgKDB4Mzk4KzIzNjEtMHhjZDEpDQotQ0hBUiBhY2tQZHVTdHJbKDB4ZTJkKzUyMjEtMHgyMTAyKV09eygweGE0MSsxODk0LTB4MTFhNyl9O1NNU19QQVJBTSByZXBvcnRQYXJhbT0KLXsoMHg3MzIrNTM0Ni0weDFjMTQpfTtpbnQgdG90YWxfbGVuZ3RoPSgweDExNWMrMzgwNS0weDIwMzkpO1VJTlQ4IFRQX0ZDUz0KLSgweGI2NCs2NDEzLTB4MjQ3MSk7Q0hBUiBzdHJWYWx1ZVsoMHg4Y2YrNTEzNC0weDFjZGIpXT17KDB4OWU3KzI0MDYtMHgxMzRkKX07aWYoCi1uZWVkQWNrKXtUUF9GQ1M9KDB4MWJjMCs2MjktMHgxZTM1KTtzcHJpbnRmKHN0clZhbHVlLCJceDI1XHg2NCIsCi0oMHgzOTYrODI0Mi0weDIzYzcpKTt9ZWxzZXtUUF9GQ1M9KDB4OTJkKzcwMDEtMHgyM2IzKTtzcHJpbnRmKHN0clZhbHVlLAotIlx4MjVceDY0IiwoMHgxMDIwKzQ0OTUtMHgyMWFkKSk7fXNwcmludGYocmVwb3J0UGFyYW0uU0NBLCJceDI1XHg3MyIsY2ZnX2dldCgKKyNpZiAoMHgxMWRiKzE1Ny0weDEyNzgpDQorQ0hBUiBhY2tQZHVTdHJbKDB4Yzk2KzY1MTAtMHgyNDc0KV09eygweDFhOGIrMzAxOC0weDI2NTUpfTtTTVNfUEFSQU0gcmVwb3J0UGFyYW0KKz17KDB4MThkMis5NzEtMHgxYzlkKX07aW50IHRvdGFsX2xlbmd0aD0oMHgxN2E3KzIwMzItMHgxZjk3KTtVSU5UOCBUUF9GQ1M9CisoMHhmZTcrNDUzNy0weDIxYTApO0NIQVIgc3RyVmFsdWVbKDB4ZTBjKzE3MDItMHgxNGIwKV09eygweGQ2Kzk2Ni0weDQ5Yyl9O2lmKAorbmVlZEFjayl7VFBfRkNTPSgweDFmMmErMTk3Mi0weDI2ZGUpO3NwcmludGYoc3RyVmFsdWUsIlx4MjVceDY0IiwKKygweGUwMCs4NC0weGU1MykpO31lbHNle1RQX0ZDUz0oMHgyOTErMTI3LTB4MjNkKTtzcHJpbnRmKHN0clZhbHVlLCJceDI1XHg2NCIsCisoMHgxMzcyKzE4OTAtMHgxYWQyKSk7fXNwcmludGYocmVwb3J0UGFyYW0uU0NBLCJceDI1XHg3MyIsY2ZnX2dldCgKICJceDczXHg2ZFx4NzNceDVmXHg2M1x4NjVceDZlXHg3NFx4NjVceDcyXHg1Zlx4NmVceDc1XHg2ZCIpKTt0b3RhbF9sZW5ndGg9CiB6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KCZyZXBvcnRQYXJhbSxhY2tQZHVTdHIsVFBfRkNTKTttZW1zZXQoJgotZ196VWZpU21zX2Fja1BkdSwoMHg0M2MrNS0weDQ0MSksc2l6ZW9mKGdfelVmaVNtc19hY2tQZHUpKTtnX3pVZmlTbXNfYWNrUGR1LgorZ196VWZpU21zX2Fja1BkdSwoMHg4NjArMjA0My0weDEwNWIpLHNpemVvZihnX3pVZmlTbXNfYWNrUGR1KSk7Z196VWZpU21zX2Fja1BkdS4KIGxlbmd0aD1TdHJpbmcyQnl0ZXMoYWNrUGR1U3RyLGdfelVmaVNtc19hY2tQZHUucGR1LHN0cmxlbihhY2tQZHVTdHIpKTttZW1zZXQoCi1nX3pVZmlTbXNfYWNrUGR1LnBkdSwoMHhjZTErMjgyMC0weDE3ZTUpLHNpemVvZihnX3pVZmlTbXNfYWNrUGR1LnBkdSkpO21lbWNweSgmCitnX3pVZmlTbXNfYWNrUGR1LnBkdSwoMHgxNTJhKzIyNTUtMHgxZGY5KSxzaXplb2YoZ196VWZpU21zX2Fja1BkdS5wZHUpKTttZW1jcHkoJgogZ196VWZpU21zX2Fja1BkdS5wZHUsJmFja1BkdVN0cixzaXplb2YoYWNrUGR1U3RyKSk7YXRCYXNlX1NlbmRNc2dUb1NlbGYoCiBaQVRfQ05NQV9DTUQsc3RyVmFsdWUsc2l6ZW9mKHN0clZhbHVlKSk7CiAjZW5kaWYNCi0jaWYgKDB4OTRkKzEwNTktMHhkNzApCi1DSEFSIHN0clZhbHVlWygweDgzMCszOTctMHg5YmIpXT17KDB4MTIwOCsxMDE5LTB4MTYwMyl9O2lmKG5lZWRBY2spe3NucHJpbnRmKAotc3RyVmFsdWUsc2l6ZW9mKHN0clZhbHVlKSwiXHgyNVx4NjQiLCgweDY5Yis3MTgzLTB4MjJhOSkpO31lbHNle3NucHJpbnRmKAotc3RyVmFsdWUsc2l6ZW9mKHN0clZhbHVlKSwiXHgyNVx4NjQiLCgweDEyZDkrODE2LTB4MTYwNykpO316U3ZyX0lubmVyU2VuZE1zZygKKyNpZiAoMHg3YzIrMzY5OC0weDE2MzQpCitDSEFSIHN0clZhbHVlWygweDFkZisyNzkxLTB4Y2M0KV09eygweDE2ZTIrMTMwMS0weDFiZjcpfTtpZihuZWVkQWNrKXtzbnByaW50ZigKK3N0clZhbHVlLHNpemVvZihzdHJWYWx1ZSksIlx4MjVceDY0IiwoMHgxYzUrNDI4Ni0weDEyODIpKTt9ZWxzZXtzbnByaW50ZigKK3N0clZhbHVlLHNpemVvZihzdHJWYWx1ZSksIlx4MjVceDY0IiwoMHgxNDFjKzQwOTYtMHgyNDFhKSk7fXpTdnJfSW5uZXJTZW5kTXNnKAogWlVGSV9NT0RVTEVfSURfQVRfTE9DQUwsWlVGSV9NT0RVTEVfSURfQVRfVU5TT0xJLE1TR19DTURfQVRfQ05NQSxzdHJsZW4oc3RyVmFsdWUKICksc3RyVmFsdWUpOwogI2VuZGlmDQotaWYobmVlZEFjayl7elNtc19TZW5kQ25tYVJlcSgoMHgxMDE5KzE4MzYtMHgxNzQ0KSk7fWVsc2V7elNtc19TZW5kQ25tYVJlcSgKLSgweDVhZis4MzkxLTB4MjY3NCkpO319VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX1NlbmRSYXdTbXMoVF96VWZpU21zX1NlbmRSZXEqCi1wdFNlbmRNc2cpe2lmKE5VTEw9PXB0U2VuZE1zZ3x8KDB4MTY2KzY5OTctMHgxY2JiKT09cHRTZW5kTXNnLT5yZWNlaXZlcl9jb3VudCl7CitpZihuZWVkQWNrKXt6U21zX1NlbmRDbm1hUmVxKCgweDE0MmIrMTY2LTB4MTRkMCkpO31lbHNle3pTbXNfU2VuZENubWFSZXEoCisoMHgxYTNjKzE1MjgtMHgyMDMyKSk7fX1UX3pVZmlTbXNfQ21kU3RhdHVzIHpVZmlTbXNfU2VuZFJhd1NtcyhUX3pVZmlTbXNfU2VuZFJlcQorKnB0U2VuZE1zZyl7aWYoTlVMTD09cHRTZW5kTXNnfHwoMHgxZDErNjA5NS0weDE5YTApPT1wdFNlbmRNc2ctPnJlY2VpdmVyX2NvdW50KXsKIHJldHVybiBXTVNfQ01EX0ZBSUxFRDt9YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTJceDYxXHg3N1x4NTNceDZkXHg3M1x4MjBceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg3Mlx4NWZceDYzXHg2Zlx4NzVceDZlXHg3NFx4M2FceDI1XHg2NFx4MmZceDY0XHg2NVx4NzNceDc0XHg1Zlx4NmVceDc1XHg2ZFx4M2FceDI1XHg3M1x4MmZceDZkXHg3M1x4NjdceDVmXHg2Y1x4NjVceDZlXHgzYVx4MjVceDY0XHgyZlx4NjlceDY0XHgzYVx4MjVceDY0XHgyZSIgIlxuIgotLHB0U2VuZE1zZy0+cmVjZWl2ZXJfY291bnQscHRTZW5kTXNnLT5kZXN0X251bVsoMHg4ZTcrNDEzMy0weDE5MGMpXSxwdFNlbmRNc2ctPgorLHB0U2VuZE1zZy0+cmVjZWl2ZXJfY291bnQscHRTZW5kTXNnLT5kZXN0X251bVsoMHgzM2ErMjE5Ni0weGJjZSldLHB0U2VuZE1zZy0+CiBtc2dfbGVuLHB0U2VuZE1zZy0+aWQpOwotI2lmICgweDE1YmErMzY1LTB4MTcyNikKKyNpZiAoMHgxMzZkKzIyMTMtMHgxYzExKQogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTJceDYxXHg3N1x4NTNceDZkXHg3M1x4MjBceDY0XHg2M1x4NzNceDNhXHgyNVx4NjQiICJcbiIKICxwdFNlbmRNc2ctPmRjcyk7CiAjZW5kaWYNCi1zY19jZmdfc2V0KE5WX1NNU19TRU5EX1JFU1VMVCwiIik7Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudD0oMHgxMzIyKzQ5ODQtMHgyNjlhKQotO2lmKHB0U2VuZE1zZy0+aXNEZWxldGU9PVRSVUV8fC0oMHgxMGIrNTE5My0weDE1NTMpIT1wdFNlbmRNc2ctPmlkKXsodm9pZCkKK3NjX2NmZ19zZXQoTlZfU01TX1NFTkRfUkVTVUxULCIiKTtnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50PSgweGZjNCsyNjc0LTB4MWEzNik7CitpZihwdFNlbmRNc2ctPmlzRGVsZXRlPT1UUlVFfHwtKDB4NWY0KzQ5MDktMHgxOTIwKSE9cHRTZW5kTXNnLT5pZCl7KHZvaWQpCiB6VWZpU21zX0RlbGV0ZURyYWZ0U21zKHB0U2VuZE1zZy0+aWQpO316VWZpU21zX1NldEdsb2JhbERjc0xhbmcocHRTZW5kTXNnLT5kY3MpOwotbWVtc2V0KCZnX3pVZmlTbXNfR3JvdXBTbXMsKDB4ZWExKzYwOS0weDExMDIpLHNpemVvZihnX3pVZmlTbXNfR3JvdXBTbXMpKTtpZigKK21lbXNldCgmZ196VWZpU21zX0dyb3VwU21zLCgweDVlMSs3NjYyLTB4MjNjZiksc2l6ZW9mKGdfelVmaVNtc19Hcm91cFNtcykpO2lmKAogWlVGSV9GQUlMPT16VWZpU21zX0ZpbGxHcm91cFNtcyhwdFNlbmRNc2csJmdfelVmaVNtc19Hcm91cFNtcykpe3JldHVybiAKLVdNU19DTURfRkFJTEVEO31tZW1zZXQoJmdfelVmaVNtc19Db25jYXRTbXMsKDB4YjhkKzU3OTAtMHgyMjJiKSxzaXplb2YoCitXTVNfQ01EX0ZBSUxFRDt9bWVtc2V0KCZnX3pVZmlTbXNfQ29uY2F0U21zLCgweDkxOSs2OTU2LTB4MjQ0NSksc2l6ZW9mKAogZ196VWZpU21zX0NvbmNhdFNtcykpO2dfelVmaVNtc19Vbml0TGVuPXpVZmlTbXNfRmlsbENvbmNhdFNtcyhwdFNlbmRNc2csJgogZ196VWZpU21zX0NvbmNhdFNtcyk7Z196VWZpU21zX0lzQ29uY2F0U2VuZFN1Yz1UUlVFO2dfelVmaVNtc19DdXJDb25jYXRTZWdObz0KLSgweDllZis0MzMzLTB4MWFkYyk7bWVtc2V0KGdfelVmaVNtc19EYlN0b3JlRGF0YSwoMHgxY2UyKzE5LTB4MWNmNSksc2l6ZW9mKAotZ196VWZpU21zX0RiU3RvcmVEYXRhKSk7aWYocHRTZW5kTXNnLT5tZW1fc3RvcmU9PSgweDgwYSs3NDg2LTB4MjUzZSkpewotZ19kaXNwbGF5bW9kZT0oMHhmNjArNDc3MC0weDIyMDEpO2F0X3ByaW50KExPR19ERUJVRywKKygweDEwOGYrNzE4LTB4MTM1ZCk7bWVtc2V0KGdfelVmaVNtc19EYlN0b3JlRGF0YSwoMHgzMDErOTEyLTB4NjkxKSxzaXplb2YoCitnX3pVZmlTbXNfRGJTdG9yZURhdGEpKTtpZihwdFNlbmRNc2ctPm1lbV9zdG9yZT09KDB4N2ZhKzcwNjktMHgyMzhkKSl7CitnX2Rpc3BsYXltb2RlPSgweDEzN2QrMjIzMi0weDFjMzQpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NWJceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1ZFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NTNceDZkXHg3M1x4M2FceDIwXHg2ZFx4NzNceDY3XHg1Zlx4NjRceDY5XHg3M1x4NzBceDZjXHg2MVx4NzlceDZkXHg2Zlx4NjRceDY1XHgyMFx4M2RceDIwXHgzMSIgIlxuIgotKTt9ZWxzZXtnX2Rpc3BsYXltb2RlPSgweDE0NysxODY2LTB4ODkxKTthdF9wcmludChMT0dfREVCVUcsCispO31lbHNle2dfZGlzcGxheW1vZGU9KDB4MTE5NisyMjIzLTB4MWE0NSk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg1Ylx4NzRceDcyXHg2MVx4NjZceDY2XHg2OVx4NjNceDVkXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg1M1x4NmRceDczXHgzYVx4MjBceDZkXHg3M1x4NjdceDVmXHg2NFx4NjlceDczXHg3MFx4NmNceDYxXHg3OVx4NmRceDZmXHg2NFx4NjVceDIwXHgzZFx4MjBceDMwIiAiXG4iCiApO31yZXR1cm4gelVmaVNtc19TZW5kU21zKCk7fVRfelVmaVNtc19DbWRTdGF0dXMgelVmaVNtc19Xcml0ZVJhd1NtcygKIFRfelVmaVNtc19TYXZlUmVxKnBTYXZlQnVmZil7VF96VWZpU21zX0NvbmNhdEluZm8gdENvbmNhdFNtcztUX3pVZmlTbXNfR3JvdXBJbmZvCi0gdEdyb3VwU21zO2ludCBpU21zTGVuPSgweDE3YmIrMzQ2MC0weDI1M2YpO1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQorIHRHcm91cFNtcztpbnQgaVNtc0xlbj0oMHhjMzArNTU3Mi0weDIxZjQpO1RfelVmaVNtc19DbWRTdGF0dXMgcmVzdWx0PQogV01TX0NNRF9TVUNDRVNTO2lmKE5VTEw9PXBTYXZlQnVmZil7cmV0dXJuIFdNU19DTURfRkFJTEVEO31pZigKIGdfelVmaVNtc19NZW1GdWxsRmxhZ1taVEVfV01TX01FTU9SWV9OVl0pe2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTdceDcyXHg2OVx4NzRceDY1XHg1Mlx4NjFceDc3XHg1M1x4NmRceDczXHgyMFx4NmVceDc2XHgyMFx4NmRceDY1XHg2ZFx4NmZceDcyXHg3OVx4MjBceDY5XHg3M1x4MjBceDY2XHg3NVx4NmNceDZjXHgyY1x4NzJceDY1XHg3NFx4NzVceDcyXHg2ZSIgIlxuIgogKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWlmKHBTYXZlQnVmZi0+aXNEZWxldGU9PVRSVUUpeyh2b2lkKQogelVmaVNtc19EZWxldGVEcmFmdFNtcyhwU2F2ZUJ1ZmYtPmlkKTt9elVmaVNtc19TZXRHbG9iYWxEY3NMYW5nKHBTYXZlQnVmZi0+ZGNzKTsKLW1lbXNldCgmdENvbmNhdFNtcywoMHgxOGZjKzIyMi0weDE5ZGEpLHNpemVvZihUX3pVZmlTbXNfQ29uY2F0SW5mbykpO21lbXNldCgmCi10R3JvdXBTbXMsKDB4MjNiYysyNjgtMHgyNGM4KSxzaXplb2YoVF96VWZpU21zX0dyb3VwSW5mbykpOyh2b2lkKQorbWVtc2V0KCZ0Q29uY2F0U21zLCgweDIxKzM5NzctMHhmYWEpLHNpemVvZihUX3pVZmlTbXNfQ29uY2F0SW5mbykpO21lbXNldCgmCit0R3JvdXBTbXMsKDB4YWJkKzY1MjYtMHgyNDNiKSxzaXplb2YoVF96VWZpU21zX0dyb3VwSW5mbykpOyh2b2lkKQogelVmaVNtc19GaWxsR3JvdXBTbXMocFNhdmVCdWZmLCZ0R3JvdXBTbXMpO2lTbXNMZW49elVmaVNtc19GaWxsQ29uY2F0U21zKAogcFNhdmVCdWZmLCZ0Q29uY2F0U21zKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDU3XHg3Mlx4NjlceDc0XHg2NVx4NTJceDYxXHg3N1x4NTNceDZkXHg3M1x4MjBceDc0XHg2Zlx4NzRceDYxXHg2Y1x4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg3Mlx4M2RceDI1XHg2NFx4MmNceDY5XHg1M1x4NmRceDczXHg0Y1x4NjVceDZlXHgzZFx4MjVceDY0IiAiXG4iCiAsdEdyb3VwU21zLnRvdGFsX3JlY2VpdmVyLGlTbXNMZW4pO2Zvcih0R3JvdXBTbXMuY3VycmVudF9yZWNlaXZlcj0KLSgweDQxNSsxMjAtMHg0OGQpO3RHcm91cFNtcy5jdXJyZW50X3JlY2VpdmVyPHRHcm91cFNtcy50b3RhbF9yZWNlaXZlcjt0R3JvdXBTbXMuCi1jdXJyZW50X3JlY2VpdmVyKyspe3RDb25jYXRTbXMuY3VycmVudF9zZW5kaW5nPSgweDQwYys0MTQxLTB4MTQzOSk7cmVzdWx0PQotelVmaVNtc19TYXZlU21zVG9EYihwU2F2ZUJ1ZmYsJnRDb25jYXRTbXMsJnRHcm91cFNtcyxpU21zTGVuKTthdF9wcmludChMT0dfREVCVUcKLSwKKygweDE3NzgrMzQ4Ny0weDI1MTcpO3RHcm91cFNtcy5jdXJyZW50X3JlY2VpdmVyPHRHcm91cFNtcy50b3RhbF9yZWNlaXZlcjsKK3RHcm91cFNtcy5jdXJyZW50X3JlY2VpdmVyKyspe3RDb25jYXRTbXMuY3VycmVudF9zZW5kaW5nPSgweDRmMSs1NDMwLTB4MWEyNyk7CityZXN1bHQ9elVmaVNtc19TYXZlU21zVG9EYihwU2F2ZUJ1ZmYsJnRDb25jYXRTbXMsJnRHcm91cFNtcyxpU21zTGVuKTthdF9wcmludCgKK0xPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTdceDcyXHg2OVx4NzRceDY1XHg1Mlx4NjFceDc3XHg1M1x4NmRceDczXHgyMFx4NjNceDc1XHg3Mlx4NzJceDY1XHg2ZVx4NzRceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NzJceDNkXHgyNVx4NjRceDJjXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgzZFx4MjVceDY0IiAiXG4iCiAsdEdyb3VwU21zLmN1cnJlbnRfcmVjZWl2ZXIscmVzdWx0KTt9c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7CiB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7aWYoZ196VWZpU21zX01lbUZ1bGxGbGFnWwpAQCAtMTI3LDE2ICsxMjcsMTYgQEAKIG1lbW9yeUZ1bGxiZWZvcmVEZWxldGU9RkFMU0U7Qk9PTCB1bnJlYWRCZWZvcmVEZWxldGU9RkFMU0U7aWYoTlVMTD09cHREZWxCdWZmKXsKIHJldHVybiBXTVNfQ01EX0ZBSUxFRDt9YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4MjFceDIxXHgyMVx4MjFceDIxXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2ZFx4NzNceDIxXHgyMVx4NjNceDZmXHg3NVx4NmVceDc0XHgzYVx4MjVceDY0XHgyZlx4NjlceDY0XHg1Ylx4MjVceDY0XHg1ZFx4MmUiICJcbiIKLSxwdERlbEJ1ZmYtPmFsbF9vcl9jb3VudCxwdERlbEJ1ZmYtPmlkWygweDIwOSs2MzYzLTB4MWFlNCldKTsodm9pZCkKKyxwdERlbEJ1ZmYtPmFsbF9vcl9jb3VudCxwdERlbEJ1ZmYtPmlkWygweDEzOTYrMjk0NS0weDFmMTcpXSk7KHZvaWQpCiB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1TTVNfU1RBVEVfREVMSU5HKTttZW1zZXQoJmdfelVmaVNtc19EZWxNc2csKDB4NTA0KzgzMTYtMHgyNTgwKSxzaXplb2YoCitTTVNfU1RBVEVfREVMSU5HKTttZW1zZXQoJmdfelVmaVNtc19EZWxNc2csKDB4MzA1KzI5MDgtMHhlNjEpLHNpemVvZigKIFRfelVmaVNtc19EZWxTbXMpKTtpZihaVUZJX0ZBSUw9PXpVZmlTbXNfU2V0RGVsZXRlSW5mbyhwdERlbEJ1ZmYpKXthdF9wcmludCgKIExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDIxXHgyMVx4MjFceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg3NFx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4NDlceDZlXHg2Nlx4NmZceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MmUiICJcbiIKICk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0RFTEVEKTtyZXR1cm4gV01TX0NNRF9GQUlMRUQ7fWF0X3ByaW50KAogTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4MjFceDIxXHgyMVx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDc0XHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0OVx4NmVceDY2XHg2Zlx4MjBceDUyXHg2NVx4NjFceDY0XHgyMFx4NzRceDZmXHgyMFx4NDRceDY1XHg2Y1x4NjVceDc0XHg2NVx4M2FceDZlXHg3Nlx4NWZceDYzXHg2Zlx4NzVceDZlXHg3NFx4M2FceDI1XHg2NFx4MmZceDczXHg2OVx4NmRceDVmXHg2M1x4NmZceDc1XHg2ZVx4NzRceDNhXHgyNVx4NjRceDJlIiAiXG4iCi0sZ196VWZpU21zX0RlbE1zZy5udl9jb3VudCxnX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudCk7aWYoKDB4MWI2YysxMzY4LTB4MjBjNCk8CissZ196VWZpU21zX0RlbE1zZy5udl9jb3VudCxnX3pVZmlTbXNfRGVsTXNnLnNpbV9jb3VudCk7aWYoKDB4MzI2KzY2NTAtMHgxZDIwKTwKIGdfelVmaVNtc19EZWxNc2cubnZfY291bnQpe2lmKGdfelVmaVNtc19NZW1GdWxsRmxhZ1tXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV0pewogbWVtb3J5RnVsbGJlZm9yZURlbGV0ZT1UUlVFO311bnJlYWRCZWZvcmVEZWxldGU9elVmaVNtc19Jc1VucmVhZFNtcygKIFpURV9XTVNfTUVNT1JZX05WKTtyZXN1bHQ9KFRfelVmaVNtc19DbWRTdGF0dXMpelVmaVNtc19EZWxldGVOdlNtcygpOyh2b2lkKQpAQCAtMTQ3LDExNCArMTQ3LDExNCBAQAogbWVtb3J5RnVsbGJlZm9yZURlbGV0ZSYmIWdfelVmaVNtc19NZW1GdWxsRmxhZ1tXTVNfU1RPUkFHRV9UWVBFX05WX1YwMV0pewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg0ZVx4NzZceDUzXHg2ZFx4NzNceDNhXHgyMFx4NzNceDY1XHg2ZVx4NjRceDIwXHg0MVx4NTRceDJiXHg1YVx4NGRceDQ1XHg0ZVx4NDFceDNkXHgzMCIgIlxuIgotKTt6U21zX1NlbmRabWVuYVJlcSgoMHhmOWMrNDkxNC0weDIyY2UpKTt9aWYobWVtb3J5RnVsbGJlZm9yZURlbGV0ZSYmIQorKTt6U21zX1NlbmRabWVuYVJlcSgoMHgxOGJjKzE1LTB4MThjYikpO31pZihtZW1vcnlGdWxsYmVmb3JlRGVsZXRlJiYhCiBnX3pVZmlTbXNfTWVtRnVsbEZsYWdbV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdfHx1bnJlYWRCZWZvcmVEZWxldGUmJiEKIHpVZmlTbXNfSXNVbnJlYWRTbXMoWlRFX1dNU19NRU1PUllfTlYpKXt6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKAotTVNHX1NNU19ERUZBVUxUKTt9fWlmKCgweDVhZis0OTcwLTB4MTkxOSk8Z196VWZpU21zX0RlbE1zZy5zaW1fY291bnQpe3Jlc3VsdD0KK01TR19TTVNfREVGQVVMVCk7fX1pZigoMHgxNmFiKzQwOC0weDE4NDMpPGdfelVmaVNtc19EZWxNc2cuc2ltX2NvdW50KXtyZXN1bHQ9CiB6VWZpU21zX0RlbGV0ZVNpbVNtcygpOyh2b2lkKXpVZmlTbXNfQ2hlY2tNZW1vcnlGdWxsKFpURV9XTVNfTUVNT1JZX1NJTSk7fQogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0NFx4NjVceDZjXHg2NVx4NzRceDY1XHg1M1x4NmRceDczXHgyMFx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2RceDI1XHg2NCIgIlxuIgogLHJlc3VsdCk7cmV0dXJuIHJlc3VsdDt9VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX01vZGlmeVNtc1RhZygKLVRfelVmaVNtc19Nb2RpZnlGbGFnKnB0TW9kaWZ5QnVmZil7dW5zaWduZWQgbG9uZyBpPSgweDE3OTErMjU0Ni0weDIxODMpOwotVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9TVUNDRVNTO2NoYXIgYWNTdG9yZVBvc1soMHgyM2IrODc2Mi0weDI0NDMpXT0KLXsoMHgyMzkrOTA4My0weDI1YjQpfTtpZihOVUxMPT1wdE1vZGlmeUJ1ZmYpe2F0X3ByaW50KExPR19FUlIsCitUX3pVZmlTbXNfTW9kaWZ5RmxhZypwdE1vZGlmeUJ1ZmYpe3Vuc2lnbmVkIGxvbmcgaT0oMHhmN2QrMjg3Ny0weDFhYmEpOworVF96VWZpU21zX0NtZFN0YXR1cyByZXN1bHQ9V01TX0NNRF9TVUNDRVNTO2NoYXIgYWNTdG9yZVBvc1soMHgzMjQrMzYzMy0weDExMjMpXT0KK3soMHg5OTgrMjQzMi0weDEzMTgpfTtpZihOVUxMPT1wdE1vZGlmeUJ1ZmYpe2F0X3ByaW50KExPR19FUlIsCiAiXHg2OVx4NmVceDcwXHg3NVx4NzRceDczXHgyMFx4NjlceDczXHgyMFx4NmVceDc1XHg2Y1x4NmNceDJlIik7cmV0dXJuIAotV01TX0NNRF9GQUlMRUQ7fWZvcihpPSgweGQ0ZCs2NTU0LTB4MjZlNyk7aTxwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkO2krKyl7aWYoCi1wdE1vZGlmeUJ1ZmYtPmlkW2ldPCgweGU4YSs2NjItMHgxMTFmKXx8WlVGSV9GQUlMPT16VWZpU21zX1VwZGF0ZVNtc1RhZ0luRGIoCitXTVNfQ01EX0ZBSUxFRDt9Zm9yKGk9KDB4MWFkMCsxMjA2LTB4MWY4Nik7aTxwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkO2krKyl7aWYoCitwdE1vZGlmeUJ1ZmYtPmlkW2ldPCgweDJjZis2ODc3LTB4MWRhYil8fFpVRklfRkFJTD09elVmaVNtc19VcGRhdGVTbXNUYWdJbkRiKAogcHRNb2RpZnlCdWZmLT5pZFtpXSxwdE1vZGlmeUJ1ZmYtPnRhZ3MpKXtyZXN1bHQ9V01TX0NNRF9GQUlMRUQ7fWVsc2V7cmVzdWx0PQogV01TX0NNRF9TVUNDRVNTO319aWYoWlVGSV9GQUlMPT16VWZpU21zX0dldFN0b3JlUG9zQnlJZCgKICJceDRkXHg2NVx4NmRceDVmXHg1M1x4NzRceDZmXHg3Mlx4NjUiLGFjU3RvcmVQb3Msc2l6ZW9mKGFjU3RvcmVQb3MpLAotcHRNb2RpZnlCdWZmLT5pZFsoMHhhYmQrMTA2Mi0weGVlMyldKSl7cmV0dXJuIFpVRklfRkFJTDt9aWYoKDB4OGZhKzMyNjktMHgxNWJmKQotPT1zdHJjbXAoYWNTdG9yZVBvcyxaVEVfV01TX0RCX05WX1RBQkxFKSl7elVmaVNtc19TZW5kU21zU3RhdHVzSW5mbygKLU1TR19TTVNfUkVBRElORyk7fWlmKCgweGNkYSsxNDQ0LTB4MTI3ZSk9PXN0cmNtcChhY1N0b3JlUG9zLFpURV9XTVNfREJfU0lNX1RBQkxFCi0pJiZwdE1vZGlmeUJ1ZmYtPnRvdGFsX2lkPigweDE0NDgrMzg4OS0weDIzNzkpKXt6VWZpU21zX01vZGlmeU1vZGVtU21zKAotcHRNb2RpZnlCdWZmKTt9cmV0dXJuIHJlc3VsdDt9VF96VWZpU21zX0NtZFN0YXR1cyB6VWZpU21zX1NldFNtc1BhcmEoCi1UX3pVZmlTbXNfUGFyYUluZm8qcHRQYXJhQnVmZil7aW50IGF0UmVzPSgweGRlYSs5ODEtMHgxMWJmKTtDSEFSIHNjYVsKLVpURV9XTVNfQUREUkVTU19ESUdJVF9NQVhfVjAxKygweDE0MjUrMTg1Ni0weDFiNjQpXT17KDB4ZTcyKzEwOTEtMHgxMmI1KX07Q0hBUiAKLXN0b3JlWygweDg4MSs3NzU2LTB4MjZiOSldPXsoMHg5NjArMzg3NC0weDE4ODIpfTtDSEFSIGRlZmF1bHRTdG9yZVsKLSgweDExOTcrMzIxMi0weDFkZjEpXT17KDB4Mjg4KzE0OTUtMHg4NWYpfTtpZihwdFBhcmFCdWZmPT1aVUZJX05VTEwpe3JldHVybiAKLVdNU19DTURfRkFJTEVEO31pZihzdHJsZW4ocHRQYXJhQnVmZi0+c2NhKSE9KDB4MTIyKzE4ODItMHg4N2MpKXtzdHJuY3B5KHNjYSwKLXB0UGFyYUJ1ZmYtPnNjYSxzaXplb2Yoc2NhKS0oMHg1Mys0NTUxLTB4MTIxOSkpO2F0X3ByaW50KExPR19ERUJVRywKK3B0TW9kaWZ5QnVmZi0+aWRbKDB4MjM1MiszMjktMHgyNDliKV0pKXtyZXR1cm4gWlVGSV9GQUlMO31pZigKKygweDE5NzcrMTc3NC0weDIwNjUpPT1zdHJjbXAoYWNTdG9yZVBvcyxaVEVfV01TX0RCX05WX1RBQkxFKSl7Cit6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKE1TR19TTVNfUkVBRElORyk7fWlmKCgweDFkOCs5MjItMHg1NzIpPT1zdHJjbXAoCithY1N0b3JlUG9zLFpURV9XTVNfREJfU0lNX1RBQkxFKSYmcHRNb2RpZnlCdWZmLT50b3RhbF9pZD4oMHg3OCs3MjctMHgzNGYpKXsKK3pVZmlTbXNfTW9kaWZ5TW9kZW1TbXMocHRNb2RpZnlCdWZmKTt9cmV0dXJuIHJlc3VsdDt9VF96VWZpU21zX0NtZFN0YXR1cyAKK3pVZmlTbXNfU2V0U21zUGFyYShUX3pVZmlTbXNfUGFyYUluZm8qcHRQYXJhQnVmZil7aW50IGF0UmVzPSgweDNhNis2NTAzLTB4MWQwZCk7CitDSEFSIHNjYVtaVEVfV01TX0FERFJFU1NfRElHSVRfTUFYX1YwMSsoMHgxNjc1KzM3OC0weDE3ZWUpXT17KDB4NWNiKzY5ODYtMHgyMTE1KQorfTtDSEFSIHN0b3JlWygweDM1YSsyMjQ5LTB4YzBmKV09eygweGMwKzkwNjctMHgyNDJiKX07Q0hBUiBkZWZhdWx0U3RvcmVbCisoMHgyOWQrNDQ4MC0weDEzZWIpXT17KDB4MTA3NyszNTYxLTB4MWU2MCl9O2lmKHB0UGFyYUJ1ZmY9PVpVRklfTlVMTCl7cmV0dXJuIAorV01TX0NNRF9GQUlMRUQ7fWlmKHN0cmxlbihwdFBhcmFCdWZmLT5zY2EpIT0oMHgxNzMrNTAzNy0weDE1MjApKXtzdHJuY3B5KHNjYSwKK3B0UGFyYUJ1ZmYtPnNjYSxzaXplb2Yoc2NhKS0oMHg4ODIrOTE4LTB4YzE3KSk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzNceDY1XHg2ZVx4NjRceDIwXHg1YVx4NDFceDU0XHg1Zlx4NDNceDUzXHg0M1x4NDFceDVmXHg1M1x4NDVceDU0XHg1Zlx4NDNceDRkXHg0NFx4MjBceDZkXHg2NVx4NzNceDczXHg2MVx4NjdceDY1XHgyMFx4NjNceDczXHg2M1x4NjFceDIwXHg2OVx4NzNceDIwXHgyNVx4NzNceDJlIiAiXG4iCiAsc2NhKTthdFJlcz16U21zX1NldENzY2FSZXEocHRQYXJhQnVmZi0+c2NhKTtpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe3JldHVybiAKIFdNU19DTURfRkFJTEVEO319c2NfY2ZnX2dldChOVl9ERUZBVUxUX1NUT1JFLGRlZmF1bHRTdG9yZSxzaXplb2YoZGVmYXVsdFN0b3JlKSk7Ci1pZigoKihwdFBhcmFCdWZmLT5kZWZhdWx0X3N0b3JlKSE9J1wwJykmJigoMHgxMjFmKzM3ODctMHgyMGVhKSE9c3RyY21wKAoraWYoKCoocHRQYXJhQnVmZi0+ZGVmYXVsdF9zdG9yZSkhPSdcMCcpJiYoKDB4NjZiKzE3NjAtMHhkNGIpIT1zdHJjbXAoCiBkZWZhdWx0U3RvcmUscHRQYXJhQnVmZi0+ZGVmYXVsdF9zdG9yZSkpKXt7c3RybmNweShzdG9yZSxwdFBhcmFCdWZmLT4KLWRlZmF1bHRfc3RvcmUsc2l6ZW9mKHN0b3JlKS0oMHhjNDArMzAwOS0weDE4MDApKTt9YXRSZXM9elNtc19TZW5kQ25taVJlcShzdG9yZSk7Ci1pZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWlmKC0oMHhhZWQrMjQ5NC0weDE0YWEpPT0KK2RlZmF1bHRfc3RvcmUsc2l6ZW9mKHN0b3JlKS0oMHhlMmMrNDI3MS0weDFlZGEpKTt9YXRSZXM9elNtc19TZW5kQ25taVJlcShzdG9yZSk7CitpZihhdFJlcyE9WlNNU19SRVNVTFRfT0spe3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9fWlmKC0oMHgyMmNhKzcyMS0weDI1OWEpPT0KIHpVZmlTbXNfU2V0RGJQYXJhbWV0ZXJzKHB0UGFyYUJ1ZmYpKXthdF9wcmludChMT0dfRVJSLAogIlx4NzNceDY1XHg3NFx4MjBceDcwXHg2MVx4NzJceDYxXHg2ZFx4NjVceDc0XHg2NVx4NzJceDczXHgyMFx4NzRceDZmXHgyMFx4NzRceDYxXHg2Mlx4NmNceDY1XHgyMFx4NjZceDYxXHg2OVx4NmNceDY1XHg2NFx4MmUiCiApO3JldHVybiBXTVNfQ01EX0ZBSUxFRDt9cmV0dXJuIFdNU19DTURfU1VDQ0VTUzt9dm9pZCB6VWZpU21zX0NtZ3JOdlNldCh2b2lkKXsKLWNoYXIgc21zX3JlY19mbGFnWygweGQ0MyszNTc3LTB4MWIzNyldPXsoMHgzYzgrMTQ0Ny0weDk2Zil9O2NoYXIgcmVtaW5kX2ZsYWdbCi0oMHgxNTY5KzMwMzQtMHgyMTNlKV07aW50IHNtc19jb3VudD0oMHgxZjFhKzkyNi0weDIyYjgpO2ludCByZW1pbmRfY291bnQ9Ci0oMHgyMis5NDU2LTB4MjUxMik7bWVtc2V0KHNtc19yZWNfZmxhZywoMHgzZWYrODExNS0weDIzYTIpLHNpemVvZihzbXNfcmVjX2ZsYWcpKQotO3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCxzbXNfcmVjX2ZsYWcsc2l6ZW9mKHNtc19yZWNfZmxhZykpOwotc21zX2NvdW50PWF0b2koc21zX3JlY19mbGFnKTtpZihzbXNfY291bnQ8KDB4YTkyKzIyMjItMHgxMzQwKXx8c21zX2NvdW50PklOVF9NQVgKLS0oMHgzNzkrNTQzMC0weDE4YWUpKXthdF9wcmludChMT0dfRVJSLAorY2hhciBzbXNfcmVjX2ZsYWdbKDB4MWMzOSsyNjA4LTB4MjY2NCldPXsoMHg3NWYrMTYzNi0weGRjMyl9O2NoYXIgcmVtaW5kX2ZsYWdbCisoMHgxYTcrMzI5NC0weGU4MCldO2ludCBzbXNfY291bnQ9KDB4MTBhZis0MDMwLTB4MjA2ZCk7aW50IHJlbWluZF9jb3VudD0KKygweDQ5Mys0ODAxLTB4MTc1NCk7bWVtc2V0KHNtc19yZWNfZmxhZywoMHg1NzgrNjM2Ny0weDFlNTcpLHNpemVvZihzbXNfcmVjX2ZsYWcpCispO3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRCxzbXNfcmVjX2ZsYWcsc2l6ZW9mKHNtc19yZWNfZmxhZykpOworc21zX2NvdW50PWF0b2koc21zX3JlY19mbGFnKTtpZihzbXNfY291bnQ8KDB4MTgxMis1NDQtMHgxYTMyKXx8c21zX2NvdW50PklOVF9NQVgKKy0oMHgxOGIxKzUyMi0weDFhYmEpKXthdF9wcmludChMT0dfRVJSLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg3M1x4NmRceDczXHg1Zlx4NjNceDZmXHg3NVx4NmVceDc0XHgyMFx4NjVceDcyXHg3Mlx4M2FceDI1XHg2NCIgIlxuIgotLHNtc19jb3VudCk7cmV0dXJuO31tZW1zZXQoc21zX3JlY19mbGFnLCgweDliMCsxNDAwLTB4ZjI4KSxzaXplb2Yoc21zX3JlY19mbGFnKSkKLTtzbnByaW50ZihzbXNfcmVjX2ZsYWcsc2l6ZW9mKHNtc19yZWNfZmxhZyksIlx4MjVceDY0IixzbXNfY291bnQrCi0oMHgxOGY1Kzk1OC0weDFjYjIpKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfUkVDRVZJRUQsc21zX3JlY19mbGFnKTsKLXNjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRF9MRUQsc21zX3JlY19mbGFnKTttZW1zZXQocmVtaW5kX2ZsYWcsCi0oMHg3M2YrNjM3OC0weDIwMjkpLHNpemVvZihyZW1pbmRfZmxhZykpO3NucHJpbnRmKHJlbWluZF9mbGFnLHNpemVvZihyZW1pbmRfZmxhZwotKSwiXHgyNVx4NjQiLHJlbWluZF9jb3VudCsoMHhlOTQrMTk0Ni0weDE2MmQpKTtzY19jZmdfc2V0KAorLHNtc19jb3VudCk7cmV0dXJuO31tZW1zZXQoc21zX3JlY19mbGFnLCgweDZiKzM0MTAtMHhkYmQpLHNpemVvZihzbXNfcmVjX2ZsYWcpKTsKK3NucHJpbnRmKHNtc19yZWNfZmxhZyxzaXplb2Yoc21zX3JlY19mbGFnKSwiXHgyNVx4NjQiLHNtc19jb3VudCsKKygweDVjKzMwMTktMHhjMjYpKTtzY19jZmdfc2V0KFpURV9XTVNfTlZDT05GSUdfUkVDRVZJRUQsc21zX3JlY19mbGFnKTtzY19jZmdfc2V0CisoWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRF9MRUQsc21zX3JlY19mbGFnKTttZW1zZXQocmVtaW5kX2ZsYWcsCisoMHgxMDM2KzI2MDgtMHgxYTY2KSxzaXplb2YocmVtaW5kX2ZsYWcpKTtzbnByaW50ZihyZW1pbmRfZmxhZyxzaXplb2YoCityZW1pbmRfZmxhZyksIlx4MjVceDY0IixyZW1pbmRfY291bnQrKDB4ODQ3KzE4ODQtMHhmYTIpKTtzY19jZmdfc2V0KAogWlRFX1dNU19OVkNPTkZJR19SRUNFVklFRF9SRU1JTkQscmVtaW5kX2ZsYWcpO3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULAogIlx4NmZceDZiIik7c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7fXZvaWQgelVmaVNtc19DZHNSZXNwUHJvYygKIFRfelNtc19TbXNJbmQqcHRSZXNwRGF0YSl7dW5zaWduZWQgY2hhciBhY0Zvcm1hdFBkdVtaU01TX1BEVV9TSVpFXT17Ci0oMHhhYTMrMjk2NS0weDE2MzgpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhPXsoMHgxOTAxKzIwMTEtMHgyMGRjKX07Ci1pbnQgaXNQdXNoU21zPSgweGU3MCsxNjIyLTB4MTRjNik7aWYoc3RyY21wKHB0UmVzcERhdGEtPnBkdSwiIik9PQotKDB4MjQ3Kzg0OTgtMHgyMzc5KSl7Q0hBUiBzclN0YXRlWygweGJhMis0NDMzLTB4MWNjMSldPXsoMHg5NzQrMzI1OC0weDE2MmUpfTsKLXNjX2NmZ19nZXQoTlZfU1JfU1RBVEUsc3JTdGF0ZSxzaXplb2Yoc3JTdGF0ZSkpO2lmKCgweDVkNCs0NzEtMHg3YWIpIT1zdHJjbXAoCisoMHhjZTArNjA4NS0weDI0YTUpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhPXsoMHgxNTUxKzExODUtMHgxOWYyKX07CitpbnQgaXNQdXNoU21zPSgweDE0ZTcrMjczMi0weDFmOTMpO2lmKHN0cmNtcChwdFJlc3BEYXRhLT5wZHUsIiIpPT0KKygweDUzZis5NDEtMHg4ZWMpKXtDSEFSIHNyU3RhdGVbKDB4ODNjKzY4OTItMHgyMmY2KV09eygweGYwYis0NDEwLTB4MjA0NSl9Oworc2NfY2ZnX2dldChOVl9TUl9TVEFURSxzclN0YXRlLHNpemVvZihzclN0YXRlKSk7aWYoKDB4NTYyKzE2NDQtMHhiY2UpIT1zdHJjbXAoCiBzclN0YXRlLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY5XHg2ZVx4NjciKSl7c2NfY2ZnX3NldCgKIE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpCiA7fWVsc2V7c2NfY2ZnX3NldChOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt9CiByZXR1cm47fXpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpCiBTdHJpbmcyQnl0ZXMocHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKAotKDB4MmU5KzM4MS0weDQ2MSk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKKygweDFlM2IrNTUwLTB4MjA1Yyk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKIHNjX2NmZ19zZXQoTlZfU1JfU1RBVEUsIlx4NzNceDcyXHg1Zlx4NzJceDY1XHg2M1x4NjVceDY5XHg3Nlx4NjVceDY0Iik7CiB6VWZpU21zX0Fja19uZXdfbXNnKFRSVUUpO3JldHVybjt9cmV0dXJuO31pbnQgelVmaVNtc19DaGVja0lmV2hvbGVTbXMoCiBUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGF0YSxTTVNfTVNHX0lORk8qcG1zZyl7aWYoZGF0YS0+Y29uY2F0X3NtcyE9Ci0oMHgzODQrMTczLTB4NDMwKSl7cmV0dXJuKDB4MjAyYis3MzYtMHgyMzBiKTt9elVmaVNtc19HZXRDdXJyZW50UmVjdlRvdGFsU2VxKAorKDB4MmMwKzkyMjctMHgyNmNhKSl7cmV0dXJuKDB4MTNiZisyOTk5LTB4MWY3Nik7fXpVZmlTbXNfR2V0Q3VycmVudFJlY3ZUb3RhbFNlcSgKIGRhdGEscG1zZyk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg1Ylx4NzRceDcyXHg2MVx4NjZceDY2XHg2OVx4NjNceDVkXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0M1x4NjhceDY1XHg2M1x4NmJceDQ5XHg2Nlx4NTdceDY4XHg2Zlx4NmNceDY1XHg1M1x4NmRceDczXHgyMFx4NjlceDY0XHgyMFx4M2RceDIwXHgyNVx4NzNceDJjXHgyMFx4NzRceDZmXHg3NFx4NjFceDZjXHg1M1x4NjVceDcxXHgyMFx4M2RceDIwXHgyNVx4NjRceDJjXHg3Mlx4NjVceDY2XHgyMFx4M2RceDI1XHg2NFx4MmNceDc0XHg2Zlx4NzRceDYxXHg2Y1x4MjBceDNkXHgyNVx4NjRceDJjXHgyMFx4NzNceDY1XHg3MVx4M2RceDI1XHg2NCIgIlxuIgotLHBtc2ctPmlkLGF0b2kocG1zZy0+dG90YWxfc2VxKSxkYXRhLT5jb25jYXRfaW5mb1soMHgxZWU2KzU1MS0weDIxMGQpXSxkYXRhLT4KLWNvbmNhdF9pbmZvWygweDE0ZDArMzYzNC0weDIzMDEpXSxkYXRhLT5jb25jYXRfaW5mb1soMHgzNys5NTg2LTB4MjVhNyldKTtpZihkYXRhCi0tPmNvbmNhdF9pbmZvWygweDI1NjgrMzg2LTB4MjZlOSldPT1hdG9pKHBtc2ctPnRvdGFsX3NlcSkpe3JldHVybgotKDB4Yzg3KzYzNy0weGYwNCk7fXJldHVybi0oMHgxOWIwKzExNzItMHgxZTQzKTt9dm9pZCB6VWZpU21zX1RyYWZmaWNDaGFuZ2VTbXNUYWcKLShUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGF0YSl7Q0hBUiBzbXNOdW1iZXJbKDB4ODNhKzIzMy0weDhmMSldPXsKLSgweDhiMis0Mzk3LTB4MTlkZil9O3NjX2NmZ19nZXQoTlZfVFJBRkZJQ19TTVNfTlVNQkVSLHNtc051bWJlcixzaXplb2Yoc21zTnVtYmVyCi0pKTtpZigoMHgxMjkrNTM4MS0weDE2MmUpPT1zdHJjbXAoc21zTnVtYmVyLGRhdGEtPm51bWJlcikpe2RhdGEtPnRhZz0KLVdNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTtkYXRhLT5tc2dfZGlzcGxheW1vZGU9KDB4NDA3KzM0NzEtMHgxMTk1KTt9fXZvaWQgCisscG1zZy0+aWQsYXRvaShwbXNnLT50b3RhbF9zZXEpLGRhdGEtPmNvbmNhdF9pbmZvWygweDE3MDcrMjkwNi0weDIyNjEpXSxkYXRhLT4KK2NvbmNhdF9pbmZvWygweDliMSs0OTI5LTB4MWNmMSldLGRhdGEtPmNvbmNhdF9pbmZvWygweDlmNCsyMDgwLTB4MTIxMildKTtpZihkYXRhCistPmNvbmNhdF9pbmZvWygweGI1YSsyMTc1LTB4MTNkOCldPT1hdG9pKHBtc2ctPnRvdGFsX3NlcSkpe3JldHVybgorKDB4NDZiKzIxNzUtMHhjZWEpO31yZXR1cm4tKDB4NjU4KzU1NTctMHgxYzBjKTt9dm9pZCB6VWZpU21zX1RyYWZmaWNDaGFuZ2VTbXNUYWcKKyhUX3pVZmlTbXNfRGJTdG9yZURhdGEqZGF0YSl7Q0hBUiBzbXNOdW1iZXJbKDB4Mzg4KzI2Ni0weDQ2MCldPXsKKygweDk3MCs2NzM5LTB4MjNjMyl9O3NjX2NmZ19nZXQoTlZfVFJBRkZJQ19TTVNfTlVNQkVSLHNtc051bWJlcixzaXplb2Yoc21zTnVtYmVyCispKTtpZigoMHg0MTgrNDY2Ny0weDE2NTMpPT1zdHJjbXAoc21zTnVtYmVyLGRhdGEtPm51bWJlcikpe2RhdGEtPnRhZz0KK1dNU19UQUdfVFlQRV9NVF9SRUFEX1YwMTtkYXRhLT5tc2dfZGlzcGxheW1vZGU9KDB4ZWZiKzI5NjUtMHgxYThmKTt9fXZvaWQgCiB6VWZpU21zX0hhbmRsZVRyYWZmaWNTbXMoVF96VWZpU21zX0RiU3RvcmVEYXRhKmRhdGEpe2ludCBpU21zSWQ9Ci0oMHhhMzArNjk3OC0weDI1NzIpO1NNU19NU0dfSU5GTyBtc2c9eygweGE0MSsxMzU3LTB4ZjhlKX07Q0hBUiBzbXNOdW1iZXJbCi0oMHhhN2MrNTY4NS0weDIwN2YpXT17KDB4YTcyKzYwNjItMHgyMjIwKX07c2NfY2ZnX2dldChOVl9UUkFGRklDX1NNU19OVU1CRVIsCisoMHg0MTQrNzY0Ny0weDIxZjMpO1NNU19NU0dfSU5GTyBtc2c9eygweDE2MysyMjM4LTB4YTIxKX07Q0hBUiBzbXNOdW1iZXJbCisoMHgxNDIyKzMwODctMHgxZmZmKV09eygweGI1Yys0MDI2LTB4MWIxNil9O3NjX2NmZ19nZXQoTlZfVFJBRkZJQ19TTVNfTlVNQkVSLAogc21zTnVtYmVyLHNpemVvZihzbXNOdW1iZXIpKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDIwXHg3NFx4NDRceDYyXHg1M1x4NzRceDZmXHg3Mlx4NjVceDQ0XHg2MVx4NzRceDYxXHgyZVx4NmVceDc1XHg2ZFx4NjJceDY1XHg3Mlx4MjBceDNkXHgyMFx4MjVceDczXHgyY1x4MjBceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1Zlx4NzNceDZkXHg3M1x4NWZceDZlXHg3NVx4NmRceDYyXHg2NVx4NzJceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgotLGRhdGEtPm51bWJlcixzbXNOdW1iZXIpO2lmKCgweDIzYjIrNjQ2LTB4MjYzOCk9PXN0cmNtcChzbXNOdW1iZXIsZGF0YS0+bnVtYmVyKSkKLXtpZigoMHhjZmIrMzEwNS0weDE5MWMpIT16VWZpU21zX0NoZWNrSWZXaG9sZVNtcyhkYXRhLCZtc2cpKXthdF9wcmludChMT0dfREVCVUcsCissZGF0YS0+bnVtYmVyLHNtc051bWJlcik7aWYoKDB4N2IzKzcwMjctMHgyMzI2KT09c3RyY21wKHNtc051bWJlcixkYXRhLT5udW1iZXIpKQore2lmKCgweDIyMjYrOTcxLTB4MjVmMSkhPXpVZmlTbXNfQ2hlY2tJZldob2xlU21zKGRhdGEsJm1zZykpe2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NWJceDc0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1ZFx4MjBceDYzXHg2ZFx4NzRceDIwXHg2OVx4NmVceDY0XHgyY1x4MjBceDcyXHg2NVx4NjNceDc2XHgyMFx4NzNceDZkXHg3M1x4MmNceDIwXHg2Mlx4NzVceDc0XHgyMFx4NmVceDZmXHg3NFx4MjBceDc3XHg2OFx4NmZceDZjXHg2NVx4MjBceDczXHg2ZFx4NzNceDJjXHgyMFx4NzdceDYxXHg2OVx4NzRceDIwXHg3NFx4NmZceDIwXHg3Mlx4NjVceDYzXHg3Nlx4MjBceDZlXHg2NVx4NzhceDc0XHgyMFx4NzNceDY1XHg2NyIgIlxuIgogKTtyZXR1cm47fXNjX2NmZ19zZXQoTlZfVFJBRkZJQ19SRUNWX1NNU19JRCxtc2cuaWQpO3NjX2NmZ19zZXQoCiBOVl9UUkFGRklDX1NNU19OVU1CRVIsIlx4MzAiKTthdF9wcmludChMT0dfREVCVUcsCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDViXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ4XHg2MVx4NmVceDY0XHg2Y1x4NjVceDU0XHg3Mlx4NjFceDY2XHg2Nlx4NjlceDYzXHg1M1x4NmRceDczXHgyMFx4MjBceDIwXHg3NFx4NzJceDYxXHg2Nlx4NjZceDY5XHg2M1x4NWZceDcyXHg2NVx4NjNceDc2XHg1Zlx4NzNceDZkXHg3M1x4NWZceDY5XHg2NFx4MjBceDNkXHgyMFx4MjVceDczIiAiXG4iCiAsbXNnLmlkKTt9fXZvaWQgelVmaVNtc19DbXRSZXNwUHJvYyhUX3pTbXNfU21zSW5kKnB0UmVzcERhdGEpe3pVZmlTbXNfU3RvcmVUeXBlIAogaVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfTlZfVjAxO3Vuc2lnbmVkIGNoYXIgYWNGb3JtYXRQZHVbWlNNU19QRFVfU0laRV09ewotKDB4MTdhKzIyMjAtMHhhMjYpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhO2ludCBpc1B1c2hTbXM9Ci0oMHgyMWJkKzM2LTB4MjFlMSk7U01TX1BBUkFNIG9uZV9zbXM9eygweGQ0KzkxOTAtMHgyNGJhKX07aW50IAotdW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPSgweDg1OCsxMDM5LTB4YzY3KTttZW1zZXQoJnREYlN0b3JlRGF0YSwKLSgweGMwNiszODAxLTB4MWFkZiksc2l6ZW9mKFRfelVmaVNtc19EYlN0b3JlRGF0YSkpO2F0X3ByaW50KExPR19ERUJVRywKKygweDE0ZjQrMTA0MS0weDE5MDUpfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhO2ludCBpc1B1c2hTbXM9CisoMHgyKzMyMjQtMHhjOWEpO1NNU19QQVJBTSBvbmVfc21zPXsoMHhmMDYrNDEwLTB4MTBhMCl9O2ludCAKK3VucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHgxODAxKzM0NDAtMHgyNTcxKTttZW1zZXQoJnREYlN0b3JlRGF0YSwKKygweGUxZCsxNTE0LTB4MTQwNyksc2l6ZW9mKFRfelVmaVNtc19EYlN0b3JlRGF0YSkpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJmXHg3MFx4NjRceDc1XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLHB0UmVzcERhdGEtPmluZGV4LHB0UmVzcERhdGEtPnN0YXQscHRSZXNwRGF0YS0+bGVuZ3RoLHB0UmVzcERhdGEtPnBkdSk7aWYoCi1zdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4MTNjMysyNjQ0LTB4MWUxNykpe0NIQVIgc3JTdGF0ZVsKLSgweDFjODErMjMwNy0weDI1NTIpXT17KDB4YjY3KzYzNi0weGRlMyl9O3NjX2NmZ19nZXQoTlZfU1JfU1RBVEUsc3JTdGF0ZSxzaXplb2YoCi1zclN0YXRlKSk7aWYoKDB4ZDE3KzIzOTAtMHgxNjZkKSE9c3RyY21wKHNyU3RhdGUsCitzdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4NzU1KzI5MDYtMHgxMmFmKSl7Q0hBUiBzclN0YXRlWworKDB4YmJkKzQ1NjItMHgxZDVkKV09eygweDFkYjkrMTk5Ny0weDI1ODYpfTtzY19jZmdfZ2V0KE5WX1NSX1NUQVRFLHNyU3RhdGUsCitzaXplb2Yoc3JTdGF0ZSkpO2lmKCgweDE3ODQrMjAyOC0weDFmNzApIT1zdHJjbXAoc3JTdGF0ZSwKICJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY5XHg2ZVx4NjciKSl7c2NfY2ZnX3NldCgKIE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpCiA7fWVsc2V7c2NfY2ZnX3NldChOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt9CiByZXR1cm47fWlzUHVzaFNtcz1EZWNvZGVQdXNoUGR1KHB0UmVzcERhdGEtPnBkdSwmb25lX3Ntcyk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDczXHg2ZFx4NzNceDVkXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQzXHg2ZFx4NjdceDcyXHg1Mlx4NjVceDczXHg3MFx4NTBceDcyXHg2Zlx4NjNceDIwXHg2OVx4NzNceDUwXHg3NVx4NzNceDY4XHg1M1x4NmRceDczXHgyMFx4M2RceDIwXHgyNVx4NjQiICJcbiIKICxpc1B1c2hTbXMpO2lmKFNNU19OT1RJRklDQVRJT049PWlzUHVzaFNtcyl7QmFrTm90aWZpY2F0aW9uU21zKG9uZV9zbXMuVFBfVUQsCi1zdHJsZW4ob25lX3Ntcy5UUF9VRCkpO3p0ZV9mb3RhX25vdGlmeVB1c2hNc2coKDB4YzFmKzI1LTB4YzM4KSk7fWlmKFNNU19OT19QVVNICi0hPWlzUHVzaFNtcyl7YXRfcHJpbnQoTE9HX0RFQlVHLAorc3RybGVuKG9uZV9zbXMuVFBfVUQpKTt6dGVfZm90YV9ub3RpZnlQdXNoTXNnKCgweDIwOTMrMTE5Ny0weDI1NDApKTt9aWYoCitTTVNfTk9fUFVTSCE9aXNQdXNoU21zKXthdF9wcmludChMT0dfREVCVUcsCiAiXHgyMFx4NmZceDZlXHg2NVx4NWZceDczXHg2ZFx4NzNceDJlXHg2OVx4NmVceDY0XHg2NVx4NzhceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLG9uZV9zbXMuaW5kZXgpO2F0X3ByaW50KExPR19ERUJVRywKICJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDU0XHg1MFx4NWZceDUyXHg2NVx4NjZceDY1XHg3Mlx4NGVceDc1XHg2ZFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCkBAIC0yNjUsMzIgKzI2NSwzMiBAQAogLG9uZV9zbXMuVFBfQ3VycmVudFBpZWNlTnVtKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKTsKIHpVZmlTbXNfQWNrX25ld19tc2coVFJVRSk7cmV0dXJuO316VWZpU21zX0dldFJlcG9ydFN0YXR1cyhwdFJlc3BEYXRhLT5wZHUsJgogcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpU3RyaW5nMkJ5dGVzKHB0UmVzcERhdGEtPnBkdSxhY0Zvcm1hdFBkdSwoaW50KXN0cmxlbigKLXB0UmVzcERhdGEtPnBkdSkpO2lmKCgweDMwOSs4MjAyLTB4MjMwZSk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKQorcHRSZXNwRGF0YS0+cGR1KSk7aWYoKDB4MWE5OSsyMjM5LTB4MjM1Myk9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKQogelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoTlZfU1JfU1RBVEUsCiAiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt6VWZpU21zX0Fja19uZXdfbXNnKFRSVUUpO3JldHVybgogO30odm9pZCl6VWZpU21zX0RlY29kZVNtc0RhdGEoJnREYlN0b3JlRGF0YSxwdFJlc3BEYXRhLT5pbmRleCxpU3RvcmVQb3MsKAogVF9TbXNTdGF0dXMpcHRSZXNwRGF0YS0+c3RhdCxXTVNfTUVTU0FHRV9GT1JNQVRfR1dfUFBfVjAxLHB0UmVzcERhdGEtPmxlbmd0aCwKIGFjRm9ybWF0UGR1KTtpZih0RGJTdG9yZURhdGEuc21zX2NsYXNzPT1XTVNfTUVTU0FHRV9DTEFTU18yKXtpU3RvcmVQb3M9CiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE7fWlmKHpVZmlTbXNfSXNVbnJlYWRTbXMoWlRFX1dNU19NRU1PUllfTlYpKXsKLXVucmVhZF9zbXNfYmVmb3JlX3JlY3ZfbmV3X3Ntcz0oMHgzNWErMTU1Mi0weDk2OSk7fWVsc2V7Ci11bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4MjM5KzE5MTMtMHg5YjIpO316VWZpU21zX1RyYWZmaWNDaGFuZ2VTbXNUYWcoJgotdERiU3RvcmVEYXRhKTtpZihaVEVfV01TX05WX01FTU9SWV9GVUxMPT16VWZpU21zX1dyaXRlU21zVG9EYigmdERiU3RvcmVEYXRhLAotaVN0b3JlUG9zLC0oMHg2MTkrMjYwMS0weDEwNDEpKSl7elVmaVNtc19BY2tfbmV3X21zZyhGQUxTRSk7elNtc19TZW5kWm1lbmFSZXEoCi0oMHg3OWMrMjczMi0weDEyNDcpKTtyZXR1cm47fWlmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpewordW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPSgweDk5NSs0OTc1LTB4MWQwMyk7fWVsc2V7Cit1bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4MjI3NSszNzYtMHgyM2VkKTt9elVmaVNtc19UcmFmZmljQ2hhbmdlU21zVGFnKAorJnREYlN0b3JlRGF0YSk7aWYoWlRFX1dNU19OVl9NRU1PUllfRlVMTD09elVmaVNtc19Xcml0ZVNtc1RvRGIoJnREYlN0b3JlRGF0YSwKK2lTdG9yZVBvcywtKDB4NDc0KzYwMTgtMHgxYmY1KSkpe3pVZmlTbXNfQWNrX25ld19tc2coRkFMU0UpO3pTbXNfU2VuZFptZW5hUmVxKAorKDB4MTYzMCs1ODUtMHgxODc4KSk7cmV0dXJuO31pZih0RGJTdG9yZURhdGEuc21zX2NsYXNzIT1XTVNfTUVTU0FHRV9DTEFTU18yKXsKIHpVZmlTbXNfQWNrX25ld19tc2coVFJVRSk7fXpVZmlTbXNfQ21nck52U2V0KCk7elVmaVNtc19DaGVja01lbW9yeUZ1bGwoCiBaVEVfV01TX01FTU9SWV9OVik7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7CiB6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKE1TR19TTVNfTkVXKTt6VWZpU21zX0hhbmRsZVRyYWZmaWNTbXMoJnREYlN0b3JlRGF0YSk7CiByZXR1cm47fXZvaWQgelVmaVNtc19abWdyUmVzcFByb2MoVF96U21zX1Ntc0luZCpwdFJlc3BEYXRhKXt6VWZpU21zX1N0b3JlVHlwZSAKIGlTdG9yZVBvcz1XTVNfU1RPUkFHRV9UWVBFX05WX1YwMTt1bnNpZ25lZCBjaGFyIGFjRm9ybWF0UGR1W1pTTVNfUERVX1NJWkVdPXsKLSgweDZjNys2NzIxLTB4MjEwOCl9O1RfelVmaVNtc19EYlN0b3JlRGF0YSB0RGJTdG9yZURhdGE7aW50IGlzUHVzaFNtcz0KLSgweDk1KzQ2MTgtMHgxMjlmKTtTTVNfUEFSQU0gb25lX3Ntcz17KDB4MTRlNisxMjU2LTB4MTljZSl9O0NIQVIgZGVmYXVsdFN0b3JlWwotKDB4MTdjYSsyODY5LTB4MjJjZCldPXsoMHgxMGNhKzQ4OTgtMHgyM2VjKX07bWVtc2V0KCZ0RGJTdG9yZURhdGEsCi0oMHhiM2ErMzQ2LTB4Yzk0KSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAorKDB4MWE2Yis0NTQtMHgxYzMxKX07VF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlN0b3JlRGF0YTtpbnQgaXNQdXNoU21zPQorKDB4NmVjKzE3MjQtMHhkYTgpO1NNU19QQVJBTSBvbmVfc21zPXsoMHgxYTFmKzE2MzgtMHgyMDg1KX07Q0hBUiBkZWZhdWx0U3RvcmVbCisoMHgyMTY5KzY0NC0weDIzYmIpXT17KDB4Y2FhKzI1NS0weGRhOSl9O21lbXNldCgmdERiU3RvcmVEYXRhLAorKDB4MTU5NysxODM1LTB4MWNjMiksc2l6ZW9mKFRfelVmaVNtc19EYlN0b3JlRGF0YSkpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJmXHg3MFx4NjRceDc1XHgzYVx4MjVceDczXHgyMSIgIlxuIgogLHB0UmVzcERhdGEtPmluZGV4LHB0UmVzcERhdGEtPnN0YXQscHRSZXNwRGF0YS0+bGVuZ3RoLHB0UmVzcERhdGEtPnBkdSk7aWYoCi1zdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4MjYyKzg3MzEtMHgyNDdkKSl7Q0hBUiBzclN0YXRlWygweDk3OCsxMjI1LTB4ZTBmKQotXT17KDB4MTA4NSs1NTQwLTB4MjYyOSl9O3NjX2NmZ19nZXQoTlZfU1JfU1RBVEUsc3JTdGF0ZSxzaXplb2Yoc3JTdGF0ZSkpO2lmKAotKDB4ZDI2KzQyOTItMHgxZGVhKSE9c3RyY21wKHNyU3RhdGUsCitzdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09KDB4ZDYyKzYyNzMtMHgyNWUzKSl7Q0hBUiBzclN0YXRlWygweDY4Kzg0OTEtMHgyMTYxKQorXT17KDB4NjkwKzUzNDgtMHgxYjc0KX07c2NfY2ZnX2dldChOVl9TUl9TVEFURSxzclN0YXRlLHNpemVvZihzclN0YXRlKSk7aWYoCisoMHgzMTYrNzg1Mi0weDIxYzIpIT1zdHJjbXAoc3JTdGF0ZSwKICJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY5XHg2ZVx4NjciKSl7c2NfY2ZnX3NldCgKIE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpCiA7fWVsc2V7c2NfY2ZnX3NldChOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt9CkBAIC0yOTksNyArMjk5LDcgQEAKICxpc1B1c2hTbXMpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjVceDY0XHgyMCIgIlxuIgogLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKLXN0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHgxOWRhKzI2NzgtMHgyNDUwKSk7fWlmKAorc3RybGVuKG9uZV9zbXMuVFBfVUQpKTt6dGVfZm90YV9ub3RpZnlQdXNoTXNnKCgweGZmYysxNjMxLTB4MTY1YikpO31pZigKIFNNU19OT19QVVNIIT1pc1B1c2hTbXMpe2F0X3ByaW50KExPR19ERUJVRywKICJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDY5XHg2ZVx4NjRceDY1XHg3OFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsb25lX3Ntcy5pbmRleCk7YXRfcHJpbnQoTE9HX0RFQlVHLApAQCAtMzExLDI5ICszMTEsMjkgQEAKICxvbmVfc21zLlRQX0N1cnJlbnRQaWVjZU51bSk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7cmV0dXJuO30KIHpVZmlTbXNfR2V0UmVwb3J0U3RhdHVzKHB0UmVzcERhdGEtPnBkdSwmcHRSZXNwRGF0YS0+c3RhdCk7KHZvaWQpU3RyaW5nMkJ5dGVzKAogcHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKAotKDB4MTA5NiszNjI2LTB4MWViYik9PXB0UmVzcERhdGEtPnN0YXQpeyh2b2lkKXpVZmlTbXNfSGFuZGxlUmVwb3J0KGFjRm9ybWF0UGR1KTsKKygweDE2MjIrMjMxMy0weDFmMjYpPT1wdFJlc3BEYXRhLT5zdGF0KXsodm9pZCl6VWZpU21zX0hhbmRsZVJlcG9ydChhY0Zvcm1hdFBkdSk7CiBzY19jZmdfc2V0KE5WX1NSX1NUQVRFLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY1XHg2NCIpO3JldHVybjt9CiBzY19jZmdfZ2V0KE5WX0RFRkFVTFRfU1RPUkUsZGVmYXVsdFN0b3JlLHNpemVvZihkZWZhdWx0U3RvcmUpKTtpZigKLSgweDE2ZTArMjUzNC0weDIwYzYpPT1zdHJjbXAoZGVmYXVsdFN0b3JlLCJceDczXHg2OVx4NmQiKSl7aVN0b3JlUG9zPQorKDB4MTI5ZCsyMzI5LTB4MWJiNik9PXN0cmNtcChkZWZhdWx0U3RvcmUsIlx4NzNceDY5XHg2ZCIpKXtpU3RvcmVQb3M9CiBXTVNfU1RPUkFHRV9UWVBFX1VJTV9WMDE7fSh2b2lkKXpVZmlTbXNfRGVjb2RlU21zRGF0YSgmdERiU3RvcmVEYXRhLHB0UmVzcERhdGEtPgogaW5kZXgsaVN0b3JlUG9zLChUX1Ntc1N0YXR1cylwdFJlc3BEYXRhLT5zdGF0LFdNU19NRVNTQUdFX0ZPUk1BVF9HV19QUF9WMDEsCiBwdFJlc3BEYXRhLT5sZW5ndGgsYWNGb3JtYXRQZHUpO2lmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3M9PVdNU19NRVNTQUdFX0NMQVNTXzIpewogaVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMTt9elVmaVNtc19UcmFmZmljQ2hhbmdlU21zVGFnKCZ0RGJTdG9yZURhdGEpOwogaWYoWlRFX1dNU19OVl9NRU1PUllfRlVMTD09elVmaVNtc19Xcml0ZVNtc1RvRGIoJnREYlN0b3JlRGF0YSxpU3RvcmVQb3MsLQotKDB4OTNmKzQ3Ny0weGIxYikpKXtyZXR1cm47fWlmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpe30KKygweDJlNCs4NzE0LTB4MjRlZCkpKXtyZXR1cm47fWlmKHREYlN0b3JlRGF0YS5zbXNfY2xhc3MhPVdNU19NRVNTQUdFX0NMQVNTXzIpe30KIHpVZmlTbXNfQ21nck52U2V0KCk7elVmaVNtc19DaGVja01lbW9yeUZ1bGwoWlRFX1dNU19NRU1PUllfTlYpOwogelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX1JFQ1ZFRCk7elVmaVNtc19IYW5kbGVUcmFmZmljU21zKCZ0RGJTdG9yZURhdGEKICk7cmV0dXJuO312b2lkIHpVZmlTbXNfQ21nclJlc3BQcm9jKFRfelNtc19TbXNJbmQqcHRSZXNwRGF0YSl7elVmaVNtc19TdG9yZVR5cGUgCiBpU3RvcmVQb3M9V01TX1NUT1JBR0VfVFlQRV9OVl9WMDE7dW5zaWduZWQgY2hhciBhY0Zvcm1hdFBkdVtaU01TX1BEVV9TSVpFXT17Ci0oMHg5NWIrMzIwLTB4YTliKX07VF96VWZpU21zX0RiU3RvcmVEYXRhIHREYlN0b3JlRGF0YTtpbnQgaXNQdXNoU21zPQotKDB4YmVjKzUwOTctMHgxZmQ1KTtTTVNfUEFSQU0gb25lX3Ntcz17KDB4MjY5NSs4NC0weDI2ZTkpfTtpbnQgCi11bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4MTkwMCsyMTI3LTB4MjE0Zik7bWVtc2V0KCZ0RGJTdG9yZURhdGEsCi0oMHg1ZWYrNjE3OC0weDFlMTEpLHNpemVvZihUX3pVZmlTbXNfRGJTdG9yZURhdGEpKTthdF9wcmludChMT0dfREVCVUcsCisoMHhmYzYrMzkxNC0weDFmMTApfTtUX3pVZmlTbXNfRGJTdG9yZURhdGEgdERiU3RvcmVEYXRhO2ludCBpc1B1c2hTbXM9CisoMHgxYjFiKzIxMTktMHgyMzYyKTtTTVNfUEFSQU0gb25lX3Ntcz17KDB4MWZlMSs3ODQtMHgyMmYxKX07aW50IAordW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPSgweDFlMGMrMTk1Ny0weDI1YjEpO21lbXNldCgmdERiU3RvcmVEYXRhLAorKDB4NzQxKzczMzctMHgyM2VhKSxzaXplb2YoVF96VWZpU21zX0RiU3RvcmVEYXRhKSk7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4N2FceDU1XHg2Nlx4NjlceDUzXHg2ZFx4NzNceDVmXHg0M1x4NmRceDY3XHg3Mlx4NTJceDY1XHg3M1x4NzBceDUwXHg3Mlx4NmZceDYzXHgyMVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmZceDczXHg3NFx4NjFceDc0XHgzYVx4MjVceDY0XHgyZlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmZceDcwXHg2NFx4NzVceDNhXHgyNVx4NzNceDIxIiAiXG4iCiAscHRSZXNwRGF0YS0+aW5kZXgscHRSZXNwRGF0YS0+c3RhdCxwdFJlc3BEYXRhLT5sZW5ndGgscHRSZXNwRGF0YS0+cGR1KTsKIHpVZmlTbXNfU2VuZFNtc1N0YXR1c0luZm8oTVNHX1NNU19SRUFESU5HKTtpZihzdHJjbXAocHRSZXNwRGF0YS0+cGR1LCIiKT09Ci0oMHgzMDYrOTA0MC0weDI2NTYpKXtDSEFSIHNyU3RhdGVbKDB4MTJlMis0MzIzLTB4MjM5MyldPXsoMHhiNTIrMzEzNC0weDE3OTApfTsKLXNjX2NmZ19nZXQoTlZfU1JfU1RBVEUsc3JTdGF0ZSxzaXplb2Yoc3JTdGF0ZSkpO2lmKCgweDUxZisxNzA4LTB4YmNiKSE9c3RyY21wKAorKDB4Y2VkKzQ5NzktMHgyMDYwKSl7Q0hBUiBzclN0YXRlWygweDEwZmIrMzM2MS0weDFkZWEpXT17KDB4MTMxYSszMTczLTB4MWY3Zil9Oworc2NfY2ZnX2dldChOVl9TUl9TVEFURSxzclN0YXRlLHNpemVvZihzclN0YXRlKSk7aWYoKDB4YjYrNzcyNS0weDFlZTMpIT1zdHJjbXAoCiBzclN0YXRlLCJceDczXHg3Mlx4NWZceDcyXHg2NVx4NjNceDY1XHg2OVx4NzZceDY5XHg2ZVx4NjciKSl7c2NfY2ZnX3NldCgKIE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9SRUNWRUQpCiA7fWVsc2V7c2NfY2ZnX3NldChOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTt9CkBAIC0zNDIsNyArMzQyLDcgQEAKICxpc1B1c2hTbXMpO2F0X3ByaW50KExPR19ERUJVRywKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDdhXHg1NVx4NjZceDY5XHg1M1x4NmRceDczXHg1Zlx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzNceDcwXHg1MFx4NzJceDZmXHg2M1x4MjBceDY5XHg3M1x4NTBceDc1XHg3M1x4NjhceDUzXHg2ZFx4NzNceDIwXHgzZFx4MjVceDY0XHgyMCIgIlxuIgogLGlzUHVzaFNtcyk7aWYoU01TX05PVElGSUNBVElPTj09aXNQdXNoU21zKXtCYWtOb3RpZmljYXRpb25TbXMob25lX3Ntcy5UUF9VRCwKLXN0cmxlbihvbmVfc21zLlRQX1VEKSk7enRlX2ZvdGFfbm90aWZ5UHVzaE1zZygoMHgyMDE0KzE0MzItMHgyNWFjKSk7fWlmKAorc3RybGVuKG9uZV9zbXMuVFBfVUQpKTt6dGVfZm90YV9ub3RpZnlQdXNoTXNnKCgweDczZCs0NjI3LTB4MTk1MCkpO31pZigKIFNNU19OT19QVVNIIT1pc1B1c2hTbXMpe2F0X3ByaW50KExPR19ERUJVRywKICJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDY5XHg2ZVx4NjRceDY1XHg3OFx4MjBceDNkXHgyMFx4MjVceDY0IiAiXG4iCiAsb25lX3Ntcy5pbmRleCk7YXRfcHJpbnQoTE9HX0RFQlVHLApAQCAtMzUzLDgxICszNTMsODEgQEAKICJceDIwXHg2Zlx4NmVceDY1XHg1Zlx4NzNceDZkXHg3M1x4MmVceDU0XHg1MFx4NWZceDQzXHg3NVx4NzJceDcyXHg2NVx4NmVceDc0XHg1MFx4NjlceDY1XHg2M1x4NjVceDRlXHg3NVx4NmRceDIwXHgzZFx4MjBceDI1XHg2NCIgIlxuIgogLG9uZV9zbXMuVFBfQ3VycmVudFBpZWNlTnVtKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKTtyZXR1cm47fQogelVmaVNtc19HZXRSZXBvcnRTdGF0dXMocHRSZXNwRGF0YS0+cGR1LCZwdFJlc3BEYXRhLT5zdGF0KTsodm9pZClTdHJpbmcyQnl0ZXMoCi1wdFJlc3BEYXRhLT5wZHUsYWNGb3JtYXRQZHUsKGludClzdHJsZW4ocHRSZXNwRGF0YS0+cGR1KSk7aWYoKDB4NGNkKzU1MDktMHgxYTRkKQorcHRSZXNwRGF0YS0+cGR1LGFjRm9ybWF0UGR1LChpbnQpc3RybGVuKHB0UmVzcERhdGEtPnBkdSkpO2lmKCgweDYwZis4MDA2LTB4MjU1MCkKID09cHRSZXNwRGF0YS0+c3RhdCl7KHZvaWQpelVmaVNtc19IYW5kbGVSZXBvcnQoYWNGb3JtYXRQZHUpO3NjX2NmZ19zZXQoCiBOVl9TUl9TVEFURSwiXHg3M1x4NzJceDVmXHg3Mlx4NjVceDYzXHg2NVx4NjlceDc2XHg2NVx4NjQiKTtyZXR1cm47fSh2b2lkKQogelVmaVNtc19EZWNvZGVTbXNEYXRhKCZ0RGJTdG9yZURhdGEscHRSZXNwRGF0YS0+aW5kZXgsaVN0b3JlUG9zLChUX1Ntc1N0YXR1cykKIHB0UmVzcERhdGEtPnN0YXQsV01TX01FU1NBR0VfRk9STUFUX0dXX1BQX1YwMSxwdFJlc3BEYXRhLT5sZW5ndGgsYWNGb3JtYXRQZHUpO2lmCiAodERiU3RvcmVEYXRhLnNtc19jbGFzcz09V01TX01FU1NBR0VfQ0xBU1NfMil7aVN0b3JlUG9zPVdNU19TVE9SQUdFX1RZUEVfVUlNX1YwMQogO31pZih6VWZpU21zX0lzVW5yZWFkU21zKFpURV9XTVNfTUVNT1JZX05WKSl7dW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPQotKDB4YmMyKzMxNjEtMHgxODFhKTt9ZWxzZXt1bnJlYWRfc21zX2JlZm9yZV9yZWN2X25ld19zbXM9KDB4YWMwKzIwNTktMHgxMmNiKTt9aWYKKygweGM2ZisxNDIwLTB4MTFmYSk7fWVsc2V7dW5yZWFkX3Ntc19iZWZvcmVfcmVjdl9uZXdfc21zPSgweGJmNys2NzE2LTB4MjYzMyk7fWlmCiAoWlRFX1dNU19OVl9NRU1PUllfRlVMTD09elVmaVNtc19Xcml0ZVNtc1RvRGIoJnREYlN0b3JlRGF0YSxpU3RvcmVQb3MsLQotKDB4MTBmNSs3NzktMHgxM2ZmKSkpe3JldHVybjt9aWYodERiU3RvcmVEYXRhLnNtc19jbGFzcyE9V01TX01FU1NBR0VfQ0xBU1NfMil7fQorKDB4YzYwKzExOTktMHgxMTBlKSkpe3JldHVybjt9aWYodERiU3RvcmVEYXRhLnNtc19jbGFzcyE9V01TX01FU1NBR0VfQ0xBU1NfMil7fQogelVmaVNtc19DbWdyTnZTZXQoKTt6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7CiB6VWZpU21zX0NoYW5nZU1haW5TdGF0ZShTTVNfU1RBVEVfUkVDVkVEKTtyZXR1cm47fXZvaWQgelVmaVNtc19DbWdzUmVzcFByb2MoVk9JRAotKXtUX3pVZmlTbXNfU3RhdHVzSW5mbyB0U3RhdHVzSW5mbz17KDB4MTJlZisyNjA5LTB4MWQyMCl9O2dfelVmaVNtc19EYlN0b3JlRGF0YQotLT5tc2dfZGlzcGxheW1vZGU9Z19kaXNwbGF5bW9kZTtpZihnX3pVZmlTbXNfRGJTdG9yZURhdGEtPm1zZ19kaXNwbGF5bW9kZSE9Ci0oMHgyMGQ4KzM2LTB4MjBmYikpe2lmKCgweDFhOTMrMTgxNS0weDIxYWEpPT16VWZpU21zX1dyaXRlU21zVG9EYigmCi1nX3pVZmlTbXNfRGJTdG9yZURhdGFbZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vLSgweGVlOSsxMjE4LTB4MTNhYSldLAotV01TX1NUT1JBR0VfVFlQRV9OVl9WMDEsLSgweDEwYzYrNTYwMy0weDI2YTgpKSl7Z196VWZpU21zX01zZ1JlZmVyKys7KHZvaWQpCispe1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXNJbmZvPXsoMHg1YjArMzMyMy0weDEyYWIpfTtnX3pVZmlTbXNfRGJTdG9yZURhdGEtPgorbXNnX2Rpc3BsYXltb2RlPWdfZGlzcGxheW1vZGU7aWYoZ196VWZpU21zX0RiU3RvcmVEYXRhLT5tc2dfZGlzcGxheW1vZGUhPQorKDB4NTU4KzQwNzAtMHgxNTNkKSl7aWYoKDB4MTZiYisxNTYtMHgxNzU3KT09elVmaVNtc19Xcml0ZVNtc1RvRGIoJgorZ196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHgxMTcyKzQ0MzctMHgyMmM2KV0sCitXTVNfU1RPUkFHRV9UWVBFX05WX1YwMSwtKDB4YTUyKzczNDgtMHgyNzA1KSkpe2dfelVmaVNtc19Nc2dSZWZlcisrOyh2b2lkKQogelVmaVNtc19TZXRNYXhSZWZlcmVuY2UoZ196VWZpU21zX01zZ1JlZmVyKTt9fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDY3XHg3M1x4NTJceDczXHg3MFx4MjBceDczXHg2NVx4NjdceDRlXHg2Zlx4M2FceDI1XHg2NFx4MmZceDU0XHg2Zlx4NzRceDYxXHg2Y1x4NGVceDc1XHg2ZFx4M2FceDI1XHg2NFx4MmZceDQ2XHg2MVx4NjlceDZjXHg0ZVx4NzVceDZkXHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLGdfelVmaVNtc19DdXJDb25jYXRTZWdObyxnX3pVZmlTbXNfQ29uY2F0VG90YWxOdW0sZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudCk7aWYKIChnX3pVZmlTbXNfQ3VyQ29uY2F0U2VnTm89PWdfelVmaVNtc19Db25jYXRUb3RhbE51bSl7Z196VWZpU21zX0N1ckNvbmNhdFNlZ05vPQotKDB4MzE3KzgwMjItMHgyMjZkKTttZW1zZXQoKHZvaWQqKSZ0U3RhdHVzSW5mbywoMHhkNGQrNjE1Ni0weDI1NTkpLHNpemVvZigKKygweDEyN2IrMzg1Ny0weDIxOGMpO21lbXNldCgodm9pZCopJnRTdGF0dXNJbmZvLCgweDFjNmIrMTMzLTB4MWNmMCksc2l6ZW9mKAogVF96VWZpU21zX1N0YXR1c0luZm8pKTt0U3RhdHVzSW5mby5lcnJfY29kZT1aVEVfU01TX0NNU19OT05FO3RTdGF0dXNJbmZvLgogc2VuZF9mYWlsZWRfY291bnQ9Z196VWZpU21zX1NlbmRGYWlsZWRDb3VudDt0U3RhdHVzSW5mby5kZWxldGVfZmFpbGVkX2NvdW50PQotKDB4MTdkZiszMTY3LTB4MjQzZSk7aWYoZ196VWZpU21zX1NlbmRGYWlsZWRDb3VudD09KDB4OTQwKzI1MDItMHgxMzA2KSl7CisoMHgxMjljKzQ5MDEtMHgyNWMxKTtpZihnX3pVZmlTbXNfU2VuZEZhaWxlZENvdW50PT0oMHg2OTMrMzg5Ny0weDE1Y2MpKXsKIHRTdGF0dXNJbmZvLmNtZF9zdGF0dXM9V01TX0NNRF9TVUNDRVNTO3NjX2NmZ19zZXQoTlZfU01TX1NFTkRfUkVTVUxULCJceDZmXHg2YiIpCiA7fWVsc2V7dFN0YXR1c0luZm8uY21kX3N0YXR1cz1XTVNfQ01EX0ZBSUxFRDtzY19jZmdfc2V0KE5WX1NNU19TRU5EX1JFU1VMVCwKICJceDY2XHg2MVx4NjlceDZjIik7fXRTdGF0dXNJbmZvLmNtZD1XTVNfU01TX0NNRF9NU0dfU0VORDsodm9pZCkKIHpVZmlTbXNfU2V0Q21kU3RhdHVzKCZ0U3RhdHVzSW5mbyk7c2NfY2ZnX3NldChOVl9TTVNfREJfQ0hBTkdFLCJceDMxIik7CiB6VWZpU21zX0NoZWNrTWVtb3J5RnVsbChaVEVfV01TX01FTU9SWV9OVik7aWYoZ196VWZpU21zX01lbUZ1bGxGbGFnWwogV01TX1NUT1JBR0VfVFlQRV9OVl9WMDFdKXt6VWZpU21zX1NlbmRTbXNTdGF0dXNJbmZvKE1TR19TTVNfREVGQVVMVCk7fX1lbHNle319Ci1pbnQgenRlX2ZvdGFfbm90aWZ5UHVzaE1zZyhpbnQgY21kKXtGT1RBX01TR19CVUYgbXNnPXsoMHgxYjVhKzIzOTAtMHgyNGIwKX07aW50IAotZXJycz0oMHhkNWQrMTUyMi0weDEzNGYpO2tleV90IHJlcV9pZD1mdG9rKAoraW50IHp0ZV9mb3RhX25vdGlmeVB1c2hNc2coaW50IGNtZCl7Rk9UQV9NU0dfQlVGIG1zZz17KDB4MTI4KzM3MjQtMHhmYjQpfTtpbnQgCitlcnJzPSgweDNjMys4MzYxLTB4MjQ2Yyk7a2V5X3QgcmVxX2lkPWZ0b2soCiAiXHgyZlx4NmRceDY1XHg2NFx4NjlceDYxXHgyZlx4N2FceDc0XHg2NVx4MmZceDdhXHg3NFx4NjVceDVmXHg3M1x4NmZceDYzXHg2Ylx4NjVceDc0XHgyZlx4NjZceDZmXHg3NFx4NjFceDVmXHg2NFx4NmRceDYxXHg3MFx4NzBceDVmXHg2ZFx4NzNceDY3IgotLCgweDM2Yis3NjY3LTB4MjE1ZCkpO2ludCBtc2dpZD1tc2dnZXQocmVxX2lkLCgweGE4Yys0ODI1LTB4MWQ2NSkpO2lmKG1zZ2lkIT0tCi0oMHgxY2ExKzk1LTB4MWNmZikpe21zZy5tdHlwZT0oMHgzNzgrODM4Ni0weDI0MzkpO21zZy5tdGV4dFsoMHhkNmYrMzg0Ni0weDFjNzUpXQotPVdFQlVJX05PVElGWV9QVVNIX01TR187ZXJycz1tc2dzbmQobXNnaWQsJm1zZyxzaXplb2YobXNnKS1zaXplb2YobG9uZyksCi0oMHgxMTBjKzIyOC0weDExZjApKTt9cmV0dXJuKGVycnM8KDB4OWQ0KzI4NzUtMHgxNTBmKT8oMHg2ZDArMTg5MC0weGUzMik6Ci0oMHgxN2E5KzE0MDQtMHgxZDI0KSk7fQotI2lmICgweGU3OCs2NzktMHgxMTFmKSAgCissKDB4ZDQzKzI2NjgtMHgxN2FlKSk7aW50IG1zZ2lkPW1zZ2dldChyZXFfaWQsKDB4MTEyOSszODA0LTB4MjAwNSkpO2lmKG1zZ2lkIT0tCisoMHhmYjgrNTIwNi0weDI0MGQpKXttc2cubXR5cGU9KDB4MTNkZis0NDc5LTB4MjU1ZCk7bXNnLm10ZXh0WworKDB4MjdjKzkxOTMtMHgyNjY1KV09V0VCVUlfTk9USUZZX1BVU0hfTVNHXztlcnJzPW1zZ3NuZChtc2dpZCwmbXNnLHNpemVvZihtc2cpLQorc2l6ZW9mKGxvbmcpLCgweDUzOCs3MzI2LTB4MjFkNikpO31yZXR1cm4oZXJyczwoMHgxMWU5KzIyMDAtMHgxYTgxKT8KKygweDU5NSsxOTY1LTB4ZDQyKTooMHg0MjErNzM5Ny0weDIxMDUpKTt9CisjaWYgKDB4OWY3KzEyNTctMHhlZTApICAKIGludCBhdFNtc19TZW5kQ21nbFJlcShQU1RSIHBBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtyZXR1cm4gCiB6U3ZyX1NlbmRBdFN5bihaQVRfQ01HTF9DTUQsIlx4NDFceDU0XHgyYlx4NDNceDRkXHg0N1x4NGNceDNkXHgzMCIgIlxyXG4iLGNpZCwKIHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIGF0U21zX1JlY3ZDbWdsUnNwKFRfekF0X0F0UmVzKnBSZXNMaW5lKXtyZXR1cm47fQogI2VuZGlmIA0KLSNpZiAoMHgxNmMyKzE4NTQtMHgxZTAwKSAKKyNpZiAoMHgyZTkrMTA3My0weDcxYSkgCiBpbnQgYXRTbXNfU2VuZFptZ2xSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7aW50IHJlcwotPSgweDk0MCs5OTYtMHhkMjQpO3B0aHJlYWRfbXV0ZXhfbG9jaygmc21zZGJfbXV0ZXgpO3Jlcz16U3ZyX1NlbmRBdFN5bigKKz0oMHg2MTMrODIxMC0weDI2MjUpO3B0aHJlYWRfbXV0ZXhfbG9jaygmc21zZGJfbXV0ZXgpO3Jlcz16U3ZyX1NlbmRBdFN5bigKIFpBVF9aTUdMX0NNRCwiXHg0MVx4NTRceDJiXHg1YVx4NGRceDQ3XHg0Y1x4M2RceDM0IiAiXHJcbiIsY2lkLHBBdFJzdCxhdFJzdFNpemUpCiA7cHRocmVhZF9tdXRleF91bmxvY2soJnNtc2RiX211dGV4KTtyZXR1cm4gcmVzO31WT0lEIGF0U21zX2luaXRBdE9rKFZPSUQpewotVF96VWZpU21zX1N0YXR1c0luZm8gdFN0YXR1cz17KDB4OSs4NTcxLTB4MjE4NCl9O3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxULAotIlx4NmZceDZiIik7dFN0YXR1cy5jbWRfc3RhdHVzPVdNU19DTURfU1VDQ0VTUzt0U3RhdHVzLmNtZD1XTVNfU01TX0NNRF9JTklUOygKK1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9eygweDM1MSs3MDU1LTB4MWVlMCl9O3NjX2NmZ19zZXQoTlZfU01TX0xPQURfUkVTVUxUCissIlx4NmZceDZiIik7dFN0YXR1cy5jbWRfc3RhdHVzPVdNU19DTURfU1VDQ0VTUzt0U3RhdHVzLmNtZD1XTVNfU01TX0NNRF9JTklUOygKIHZvaWQpelVmaVNtc19TZXRDbWRTdGF0dXMoJnRTdGF0dXMpO3pVZmlTbXNfQ2hhbmdlTWFpblN0YXRlKFNNU19TVEFURV9MT0FERUQpO30KIGludCBhdFNtc19pbml0QXRFcnIoVUlOVDgqcEVyckNvZGUpe1RfelVmaVNtc19TdGF0dXNJbmZvIHRTdGF0dXM9ewotKDB4YTBiKzQ2NTMtMHgxYzM4KX07c2NfY2ZnX3NldChOVl9TTVNfTE9BRF9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTsKKygweDE0NTMrNDQ2Mi0weDI1YzEpfTtzY19jZmdfc2V0KE5WX1NNU19MT0FEX1JFU1VMVCwiXHg2Nlx4NjFceDY5XHg2YyIpOwogelVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0xPQURFRCk7dFN0YXR1cy5jbWRfc3RhdHVzPVdNU19DTURfRkFJTEVEOwogdFN0YXR1cy5jbWQ9V01TX1NNU19DTURfSU5JVDsodm9pZCl6VWZpU21zX1NldENtZFN0YXR1cygmdFN0YXR1cyk7cmV0dXJuIEZBTFNFO30KIFZPSUQgYXRTbXNfUmVjdlptZ2xSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUpe3N0YXRpYyBUX3pVZmlTbXNfU21zSXRlbSB0U21zUGFyYT17Ci0oMHhhNGErNjQzOS0weDIzNzEpfTtwcmludGYoCisoMHhkMWErMzQ1MC0weDFhOTQpfTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NWFceDZkXHg2N1x4NmNceDUyXHg3M1x4NzBceDIwXHg0NVx4NmVceDc0XHg2NVx4NzJceDIwXHg3MFx4NjRceDc1XHg0Nlx4NmNceDYxXHg2N1x4M2FceDI1XHg2NFx4MmZceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAscFJlc0xpbmUtPnBkdUZsYWcscFJlc0xpbmUtPnJlc3VsdCk7aWYocFJlc0xpbmUtPnBkdUZsYWc9PVpBVF9BVFJFU19QRFVfRkxBRyl7CiB6VWZpU21zX0NtZ2xSZXNwUHJvYyhwUmVzTGluZSwmdFNtc1BhcmEpO31lbHNle21lbXNldCgmdFNtc1BhcmEsCi0oMHgxOTIwKzIzNzEtMHgyMjYzKSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTsodm9pZCl6VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZQotLT5yZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPnJlc1BhcmFzKSwmdFNtc1BhcmEsKDB4MTQ1MCsyNzcyLTB4MWYyMykpO3ByaW50ZigKKygweDFiNDQrMjMyMy0weDI0NTcpLHNpemVvZihUX3pVZmlTbXNfU21zSXRlbSkpOyh2b2lkKXpVZmlTbXNfRm9ybWF0U21zKHBSZXNMaW5lCistPnJlc1BhcmFzLHNpemVvZihwUmVzTGluZS0+cmVzUGFyYXMpLCZ0U21zUGFyYSwoMHgxZWYrOTAxNy0weDI1MjcpKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg1YVx4NmRceDY3XHg2Y1x4MjBceDUyXHg2NVx4NzNceDcwXHgyMVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmZceDczXHg3NFx4NjFceDc0XHgzYVx4MjVceDY0XHgyZlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICx0U21zUGFyYS5pbmRleCx0U21zUGFyYS5zdGF0LHRTbXNQYXJhLmxlbmd0aCk7fX1pbnQgYXRTbXNfU2VuZENtZ3JSZXEoUFNUUiAKLXBBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtDSEFSIHBBdGNtZFN0clsoMHgyM2MrMjA0MS0weGEyMSldCi09eygweDIyZmQrNjQwLTB4MjU3ZCl9O2lTbXNJbmRleD1hdG9pKHBBdENtZFBhcmEpO3ByaW50ZigKK3BBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtDSEFSIHBBdGNtZFN0clsoMHhjN2QrMjE5Ny0weDE0ZmUpCitdPXsoMHgxMTMrNzgyMy0weDFmYTIpfTtpU21zSW5kZXg9YXRvaShwQXRDbWRQYXJhKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1M1x4NjVceDZlXHg2NFx4NDNceDZkXHg2N1x4NzJceDUyXHg2NVx4NzFceDIwXHg0N1x4NjVceDc0XHgyMFx4NjlceDZlXHg2NFx4NjVceDc4XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLGlTbXNJbmRleCk7c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAogIlx4NDFceDU0XHgyYlx4NDNceDRkXHg0N1x4NTJceDNkXHgyNVx4NzMiICJcclxuIixwQXRDbWRQYXJhKTtyZXR1cm4gCiB6U3ZyX1NlbmRBdFN5bihaQVRfQ01HUl9DTUQscEF0Y21kU3RyLGNpZCxwQXRSc3QsYXRSc3RTaXplKTt9Vk9JRCAKIGF0U21zX1JlY3ZDbWdyUnNwKFRfekF0X0F0UmVzKnBSZXNMaW5lKXsKLSNpZiAoMHgxMjRhKzgyNi0weDE1ODQpDQotc3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHgyYyszMjk5LTB4ZDBmKX07VF96VWZpU21zX0NtZ3JTZXRSc3AgCi10Q21nclJzcD17KDB4MTQ3NCsxNzQ3LTB4MWI0Nyl9O3ByaW50ZigKKyNpZiAoMHgxMzk2KzI3Mi0weDE0YTYpDQorc3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHg5YjMrMzIwNC0weDE2MzcpfTtUX3pVZmlTbXNfQ21nclNldFJzcCAKK3RDbWdyUnNwPXsoMHgxYTM3KzIwMDgtMHgyMjBmKX07cHJpbnRmKAogIlx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NjdceDcyXHg1Mlx4NzNceDcwXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4NzBceDY0XHg3NVx4NDZceDZjXHg2MVx4NjdceDNhXHgyNVx4NjRceDJmXHg1MFx4NjFceDcyXHg2MVx4NzNceDNhXHgyNVx4NzNceDJmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHBSZXNMaW5lLT5wZHVGbGFnLHBSZXNMaW5lLT5yZXNQYXJhcyxwUmVzTGluZS0+cmVzdWx0KTtpZihwUmVzTGluZS0+cGR1RmxhZz09CiBaQVRfQVRSRVNfUERVX0ZMQUcpe2lmKFpBVF9SRVNVTFRfQVVUT1JFUE9SVCE9cFJlc0xpbmUtPnJlc3VsdCl7cHJpbnRmKApAQCAtNDM2LDE0ICs0MzYsMTQgQEAKIC5zdGF0PXRTbXNQYXJhLnN0YXQ7c3NjYW5mKHBSZXNMaW5lLT5yZXNQYXJhcywiXHgyNVx4MzVceDMwXHgzMFx4NzMiLHRDbWdyUnNwLgogcGR1KTt6VWZpU21zX0NtZ3JSZXNwUHJvYygmdENtZ3JSc3ApO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3NjX2NmZ19zZXQoCiAiXHg3M1x4NmRceDczXHg1Zlx4NzJceDY1XHg2M1x4NzZceDVmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0IiwiXHg2Zlx4NmIiKTt9ZWxzZQote21lbXNldCgmdFNtc1BhcmEsKDB4MjE1YysxMzU2LTB4MjZhOCksc2l6ZW9mKFRfelVmaVNtc19TbXNJdGVtKSk7KHZvaWQpCi16VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZS0+cmVzUGFyYXMsJnRTbXNQYXJhLCgweGIzZisxMjQzLTB4MTAxOCkpO3RTbXNQYXJhLgotaW5kZXg9aVNtc0luZGV4O3ByaW50ZigKK3ttZW1zZXQoJnRTbXNQYXJhLCgweDkwMCsyNzYxLTB4MTNjOSksc2l6ZW9mKFRfelVmaVNtc19TbXNJdGVtKSk7KHZvaWQpCit6VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZS0+cmVzUGFyYXMsJnRTbXNQYXJhLCgweDI0KzU3LTB4NWIpKTt0U21zUGFyYS5pbmRleD0KK2lTbXNJbmRleDtwcmludGYoCiAiXHgzZFx4M2RceDNkXHgzZFx4M2RceDNkXHg0M1x4NmRceDY3XHg3Mlx4MjBceDUyXHg2NVx4NzNceDcwXHgyMVx4MjBceDY5XHg2ZVx4NjRceDY1XHg3OFx4M2FceDI1XHg2NFx4MmZceDczXHg3NFx4NjFceDc0XHgzYVx4MjVceDY0XHgyZlx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICx0U21zUGFyYS5pbmRleCx0U21zUGFyYS5zdGF0LHRTbXNQYXJhLmxlbmd0aCk7fQogI2VuZGlmDQogfWludCBhdFNtc19TZW5kWm1nclJlcShQU1RSIHBBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtDSEFSIAotcEF0Y21kU3RyWygweDliMysyMjkzLTB4MTI5NCldPXsoMHhmNzcrMjUwMi0weDE5M2QpfTtpU21zSW5kZXg9YXRvaShwQXRDbWRQYXJhKTsKK3BBdGNtZFN0clsoMHg4ZCs0NDk5LTB4MTIwYyldPXsoMHhjMWQrNTEwNS0weDIwMGUpfTtpU21zSW5kZXg9YXRvaShwQXRDbWRQYXJhKTsKIHByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg1YVx4NmRceDY3XHg3Mlx4NTJceDY1XHg3MVx4MjBceDQ3XHg2NVx4NzRceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsaVNtc0luZGV4KTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCkBAIC00NTYsOCArNDU2LDggQEAKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg1YVx4NmRceDY3XHg3Mlx4NDVceDcyXHg3Mlx4MjBceDIwXHg1M1x4NGRceDUzXHgyMFx4N2FceDZkXHg2N1x4NzJceDIwXHg2OVx4NzNceDIwXHg2Nlx4NjFceDY5XHg2YyIgIlxuIgogKTt7c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIlx4NjZceDYxXHg2OVx4NmMiKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKIFNNU19TVEFURV9SRUNWRUQpO319Vk9JRCBhdFNtc19SZWN2Wm1nclJzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7c3RhdGljIAotVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweGNjYSs1MTY3LTB4MjBmOSl9O1RfelVmaVNtc19DbWdyU2V0UnNwIHRDbWdyUnNwPXsKLSgweDUxNCsxNTc4LTB4YjNlKX07cHJpbnRmKAorVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweDE1YTgrMjAyMy0weDFkOGYpfTtUX3pVZmlTbXNfQ21nclNldFJzcCB0Q21nclJzcD0KK3soMHgxMjI5KzQwMzQtMHgyMWViKX07cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDVhXHg2ZFx4NjdceDcyXHg1Mlx4NzNceDcwXHgyMFx4NDVceDZlXHg3NFx4NjVceDcyXHgyMFx4NzBceDY0XHg3NVx4NDZceDZjXHg2MVx4NjdceDNhXHgyNVx4NjRceDJmXHg1MFx4NjFceDcyXHg2MVx4NzNceDNhXHgyNVx4NzNceDJmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgzYVx4MjVceDY0XHgyZSIgIlxuIgogLHBSZXNMaW5lLT5wZHVGbGFnLHBSZXNMaW5lLT5yZXNQYXJhcyxwUmVzTGluZS0+cmVzdWx0KTtpZihwUmVzTGluZS0+cGR1RmxhZz09CiBaQVRfQVRSRVNfUERVX0ZMQUcpe2lmKFpBVF9SRVNVTFRfQVVUT1JFUE9SVCE9cFJlc0xpbmUtPnJlc3VsdCl7cHJpbnRmKApAQCAtNDY1LDU2ICs0NjUsNTYgQEAKICk7cmV0dXJuO310Q21nclJzcC5pbmRleD10U21zUGFyYS5pbmRleDt0Q21nclJzcC5sZW5ndGg9dFNtc1BhcmEubGVuZ3RoO3RDbWdyUnNwCiAuc3RhdD10U21zUGFyYS5zdGF0O3NzY2FuZihwUmVzTGluZS0+cmVzUGFyYXMsIlx4MjVceDM1XHgzMFx4MzBceDczIix0Q21nclJzcC4KIHBkdSk7elVmaVNtc19abWdyUmVzcFByb2MoJnRDbWdyUnNwKTt6VWZpTW1pX1NlbmRTbXNTdGF0dXMoKTtzY19jZmdfc2V0KAotTlZfU01TX1JFQ1ZfUkVTVUxULCJceDZmXHg2YiIpO31lbHNle21lbXNldCgmdFNtc1BhcmEsKDB4ZTJiKzQxMzQtMHgxZTUxKSxzaXplb2YKK05WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9ZWxzZXttZW1zZXQoJnRTbXNQYXJhLCgweDIzMjgrODAyLTB4MjY0YSksc2l6ZW9mCiAoVF96VWZpU21zX1Ntc0l0ZW0pKTsodm9pZCl6VWZpU21zX0Zvcm1hdFNtcyhwUmVzTGluZS0+cmVzUGFyYXMsc2l6ZW9mKHBSZXNMaW5lCi0tPnJlc1BhcmFzKSwmdFNtc1BhcmEsKDB4YmFkKzUyLTB4YmRmKSk7dFNtc1BhcmEuaW5kZXg9aVNtc0luZGV4O3ByaW50ZigKKy0+cmVzUGFyYXMpLCZ0U21zUGFyYSwoMHhiN2IrNDU1MS0weDFkNDApKTt0U21zUGFyYS5pbmRleD1pU21zSW5kZXg7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NWFceDZkXHg2N1x4NzJceDIwXHg1Mlx4NjVceDczXHg3MFx4MjFceDIwXHg2OVx4NmVceDY0XHg2NVx4NzhceDNhXHgyNVx4NjRceDJmXHg3M1x4NzRceDYxXHg3NFx4M2FceDI1XHg2NFx4MmZceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsdFNtc1BhcmEuaW5kZXgsdFNtc1BhcmEuc3RhdCx0U21zUGFyYS5sZW5ndGgpO319aW50IGF0U21zX1NlbmRDbWdkUmVxKFBTVFIgCi1wQXRDbWRQYXJhLGludCBjaWQsUFNUUiBwQXRSc3QsaW50IGF0UnN0U2l6ZSl7Q0hBUiBwQXRjbWRTdHJbCi0oMHgxODZmKzM3MDktMHgyNmQ4KV09eygweDE3NjYrMTM4Ny0weDFjZDEpfTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0cgotKSwiXHg0MVx4NTRceDJiXHg0M1x4NGRceDQ3XHg0NFx4M2RceDI1XHg3MyIgIlxyXG4iLHBBdENtZFBhcmEpO3JldHVybiAKK3BBdENtZFBhcmEsaW50IGNpZCxQU1RSIHBBdFJzdCxpbnQgYXRSc3RTaXplKXtDSEFSIHBBdGNtZFN0clsoMHg3ZWErNDc1MS0weDFhNjUpCitdPXsoMHg2YmYrMjgwOS0weDExYjgpfTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCisiXHg0MVx4NTRceDJiXHg0M1x4NGRceDQ3XHg0NFx4M2RceDI1XHg3MyIgIlxyXG4iLHBBdENtZFBhcmEpO3JldHVybiAKIHpTdnJfU2VuZEF0U3luKFpBVF9DTUdEX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAotYXRTbXNfUmVjdkNtZ2RPayhWT0lEKXtDSEFSIHN0clVzZWRbKDB4MTNhZisxODM3LTB4MWFkMildPXsoMHgzKzc2OC0weDMwMyl9O2ludCAKLXVzZWQ9KDB4MWFkYisyOTUwLTB4MjY2MSk7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Zlx4NmIiKTtwcmludGYoCithdFNtc19SZWN2Q21nZE9rKFZPSUQpe0NIQVIgc3RyVXNlZFsoMHg1OCsxODQ5LTB4Nzg3KV09eygweDFlMzkrMjI1LTB4MWYxYSl9O2ludAorIHVzZWQ9KDB4MTQ4MisxMjM1LTB4MTk1NSk7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwiXHg2Zlx4NmIiKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3M1x4NjVceDc0XHgyMFx4NzNceDY5XHg2ZFx4NWZceDY0XHg2NVx4NmNceDVmXHg3Mlx4NjVceDczXHg3NVx4NmNceDc0XHgyMFx4NzRceDZmXHgyMFx4NGZceDRiXHgyZVx4MjAiICJcbiIKICk7c2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3VzZWQ9YXRvaSgKLXN0clVzZWQpLSgweDI4OCsyMzctMHgzNzQpO2lmKHVzZWQ8KDB4MTRiMSsyMTUwLTB4MWQxNykpe3VzZWQ9Ci0oMHgxN2YxKzEzMzQtMHgxZDI3KTt9bWVtc2V0KCZzdHJVc2VkLCgweDc0YSszNTU0LTB4MTUyYyksKDB4MTg2KzQ1MjMtMHgxMzI3KSk7Ci1zbnByaW50ZihzdHJVc2VkLHNpemVvZihzdHJVc2VkKSwiXHgyNVx4NjQiLHVzZWQpO3NjX2NmZ19zZXQoCi1aVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCk7fVZPSUQgYXRTbXNfUmVjdkNtZ2RFcnIoVk9JRCl7c2NfY2ZnX3NldAotKE5WX1NNU19ERUxfUkVTVUxULCJceDY2XHg2MVx4NjlceDZjIik7cHJpbnRmKAorc3RyVXNlZCktKDB4ZWVkKzEyMjgtMHgxM2I4KTtpZih1c2VkPCgweDgzYys1NTMtMHhhNjUpKXt1c2VkPSgweDc1KzgwNzctMHgyMDAyKTsKK31tZW1zZXQoJnN0clVzZWQsKDB4MjYwKzg2MDctMHgyM2ZmKSwoMHgxMWEwKzUyMjEtMHgyNWZiKSk7c25wcmludGYoc3RyVXNlZCwKK3NpemVvZihzdHJVc2VkKSwiXHgyNVx4NjQiLHVzZWQpO3NjX2NmZ19zZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9VU0VELAorc3RyVXNlZCk7fVZPSUQgYXRTbXNfUmVjdkNtZ2RFcnIoVk9JRCl7c2NfY2ZnX3NldChOVl9TTVNfREVMX1JFU1VMVCwKKyJceDY2XHg2MVx4NjlceDZjIik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg3NFx4MjBceDczXHg2OVx4NmRceDVmXHg2NFx4NjVceDZjXHg1Zlx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4MjBceDc0XHg2Zlx4MjBceDY2XHg2MVx4NjlceDZjXHgyZVx4MjAiICJcbiIKLSk7fVZPSUQgYXRTbXNfUmVjdkNtZ2RGaW5pc2goVk9JRCl7Y2hhciBTdHJWYWx1ZVsoMHgzZjkrMTUyNi0weDllNSldPXsKLSgweDhlNSs0NTg2LTB4MWFjZil9O0NIQVIgc3RyVG90YWxbKDB4MzcwKzE4OTYtMHhhY2UpXT17KDB4MWY5NSsxMDkyLTB4MjNkOSl9OwotQ0hBUiBzdHJVc2VkWygweDE0MjArMzI5My0weDIwZjMpXT17KDB4MWFmMSs5OTUtMHgxZWQ0KX07aW50IHRvdGFsPQotKDB4NGE2KzQ1NzItMHgxNjgyKTtpbnQgdXNlZD0oMHgxOGEwKzk1My0weDFjNTkpO2ludCByZW1haW49KDB4OGVhKzE2OTUtMHhmODkpOwotc2NfY2ZnX2dldChaVEVfV01TX05WQ09ORklHX1NJTV9DQVJEX1VTRUQsc3RyVXNlZCxzaXplb2Yoc3RyVXNlZCkpO3VzZWQ9YXRvaSgKLXN0clVzZWQpO3NjX2NmZ19nZXQoWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9UT1RBTCxzdHJUb3RhbCxzaXplb2Yoc3RyVG90YWwpKTsKLXRvdGFsPWF0b2koc3RyVG90YWwpO3JlbWFpbj10b3RhbC11c2VkO2lmKHJlbWFpbjwoMHg1ODcrMTA1OS0weDlhYSkpe3JlbWFpbj0KLSgweDZiMysxMjA0LTB4YjY3KTt9bWVtc2V0KCZTdHJWYWx1ZSwoMHgxNDE5Kzc1Ni0weDE3MGQpLCgweDRhMSs4MzQ1LTB4MjUzMCkpOworKTt9Vk9JRCBhdFNtc19SZWN2Q21nZEZpbmlzaChWT0lEKXtjaGFyIFN0clZhbHVlWygweDE2Y2ErMjExOS0weDFmMDcpXT17CisoMHhkNDArNDc1OC0weDFmZDYpfTtDSEFSIHN0clRvdGFsWygweDE0MTIrNzE1LTB4MTZkMyldPXsoMHgyNDErMjc1LTB4MzU0KX07Q0hBUgorIHN0clVzZWRbKDB4M2ViKzMyNDMtMHgxMDhjKV09eygweDUzOCszMDEzLTB4MTBmZCl9O2ludCB0b3RhbD0oMHg2NDkrMTA1MS0weGE2NCkKKztpbnQgdXNlZD0oMHhhNzErMzE0NS0weDE2YmEpO2ludCByZW1haW49KDB4MjFiKzM1ODUtMHgxMDFjKTtzY19jZmdfZ2V0KAorWlRFX1dNU19OVkNPTkZJR19TSU1fQ0FSRF9VU0VELHN0clVzZWQsc2l6ZW9mKHN0clVzZWQpKTt1c2VkPWF0b2koc3RyVXNlZCk7CitzY19jZmdfZ2V0KFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfVE9UQUwsc3RyVG90YWwsc2l6ZW9mKHN0clRvdGFsKSk7dG90YWw9YXRvaQorKHN0clRvdGFsKTtyZW1haW49dG90YWwtdXNlZDtpZihyZW1haW48KDB4MWMxYysyMjAxLTB4MjRiNSkpe3JlbWFpbj0KKygweDgzOCsxNTgzLTB4ZTY3KTt9bWVtc2V0KCZTdHJWYWx1ZSwoMHhmMjUrMjY5My0weDE5YWEpLCgweDJiMys5MzAxLTB4MjZmZSkpOwogc25wcmludGYoU3RyVmFsdWUsc2l6ZW9mKFN0clZhbHVlKSwiXHgyNVx4NjQiLHJlbWFpbik7c2NfY2ZnX3NldCgKIFpURV9XTVNfTlZDT05GSUdfU0lNX0NBUkRfUkVNQUlOLFN0clZhbHVlKTtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg3YVx4NTVceDY2XHg2OVx4NTNceDZkXHg3M1x4NWZceDQ0XHg2NVx4NmNceDY1XHg3NFx4NjVceDUzXHg2OVx4NmRceDUzXHg2ZFx4NzNceDIwXHg3NVx4NzNceDY1XHg2NFx4M2RceDI1XHg2NFx4MmNceDcyXHg2NVx4NmRceDYxXHg2OVx4NmVceDNkXHgyNVx4NjRceDJjXHg3NFx4NmZceDc0XHg2MVx4NmNceDNkXHgyNVx4NjQiICJcbiIKICx1c2VkLHJlbWFpbix0b3RhbCk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoU01TX1NUQVRFX0RFTEVEKTtzY19jZmdfc2V0KAogTlZfU01TX0RCX0NIQU5HRSwiXHgzMSIpO31pbnQgYXRTbXNfU2VuZENtZ3NSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiAKLXBBdFJzdCxpbnQgYXRSc3RTaXplKXtpbnQgYXRSZXM9KDB4MTBhYyszNDc5LTB4MWU0Myk7Q0hBUiBwQXRjbWRTdHJbCi1aU01TX1BEVV9TSVpFXT17KDB4NzAzKzcyMDEtMHgyMzI0KX07c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAorcEF0UnN0LGludCBhdFJzdFNpemUpe2ludCBhdFJlcz0oMHhlOGYrMTIwMy0weDEzNDIpO0NIQVIgcEF0Y21kU3RyW1pTTVNfUERVX1NJWkUKK109eygweDU4Nis1Mjg4LTB4MWEyZSl9O3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKICJceDQxXHg1NFx4MmJceDQzXHg0ZFx4NDdceDUzXHgzZFx4MjVceDY0IiAiXHJcbiIsZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5sZW5ndGgpCiA7YXRSZXM9elN2cl9TZW5kQXRTeW4oWkFUX0NNR1NfQ01ELHBBdGNtZFN0cixjaWQscEF0UnN0LGF0UnN0U2l6ZSk7aWYoYXRSZXMhPQotWkFUX1JFU1VMVF9TTVMpe3JldHVybiBhdFJlczt9bWVtc2V0KHBBdGNtZFN0ciwoMHgyNGVjKzUxNS0weDI2ZWYpLFpTTVNfUERVX1NJWkUKLSk7aWYoc3RybGVuKGdfelVmaVNtc19GaW5hbENtZ3NCdWYucGR1KTxaU01TX1BEVV9TSVpFLSgweGVlNCsyODE4LTB4MTllNSkpewotbWVtY3B5KHBBdGNtZFN0cixnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSxzdHJsZW4oZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUpKTsKLX1lbHNle3ByaW50ZigKK1pBVF9SRVNVTFRfU01TKXtyZXR1cm4gYXRSZXM7fW1lbXNldChwQXRjbWRTdHIsKDB4MTVmMyszNTY4LTB4MjNlMyksCitaU01TX1BEVV9TSVpFKTtpZihzdHJsZW4oZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi5wZHUpPFpTTVNfUERVX1NJWkUtCisoMHgxNzI5KzEwOTUtMHgxYjZmKSl7bWVtY3B5KHBBdGNtZFN0cixnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSxzdHJsZW4oCitnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSkpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmRceDY3XHg3M1x4NTJceDY1XHg3MVx4MjBceDcwXHg2NFx4NzVceDIwXHg3NFx4NmZceDZmXHgyMFx4NmNceDZmXHg2ZVx4NjdceDNhXHgyNVx4NzMiICJcbiIKICxnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSk7bWVtY3B5KHBBdGNtZFN0cixnX3pVZmlTbXNfRmluYWxDbWdzQnVmLnBkdSwKLVpTTVNfUERVX1NJWkUtKDB4MWQ2NSsxMjc5LTB4MjI2MikpO30qKHBBdGNtZFN0citzdHJsZW4oZ196VWZpU21zX0ZpbmFsQ21nc0J1Zi4KLXBkdSkpPVpTTVNfQ1RSTF9aX0NIQVI7bWVtc2V0KHBBdFJzdCwoMHgxOGIxKzMxODItMHgyNTFmKSxhdFJzdFNpemUpO3JldHVybiAKK1pTTVNfUERVX1NJWkUtKDB4ZmQ0KzU2MjgtMHgyNWNlKSk7fSoocEF0Y21kU3RyK3N0cmxlbihnX3pVZmlTbXNfRmluYWxDbWdzQnVmLgorcGR1KSk9WlNNU19DVFJMX1pfQ0hBUjttZW1zZXQocEF0UnN0LCgweDE1NjkrODIwLTB4MTg5ZCksYXRSc3RTaXplKTtyZXR1cm4gCiB6U3ZyX1NlbmRBdFN5bihaQVRfQ01HU19DTUQscEF0Y21kU3RyLGNpZCxwQXRSc3QsYXRSc3RTaXplKTt9Vk9JRCAKIGF0U21zX1JlY3ZDbWdzT2soVUlOVDgqcFJlc0xpbmUsaW50IGNpZCl7YXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NmVceDY0XHg2NVx4NjRceDIwXHg3M1x4NzVceDYzXHg2M1x4NjVceDczXHg3M1x4MmVceDIwIiAiXG4iCiApO2dfelVmaVNtc19DdXJDb25jYXRTZWdObysrO2lmKGdfelVmaVNtc19DdXJDb25jYXRTZWdObz4KIFpURV9XTVNfQ09OQ0FUX1NNU19DT1VOVF9NQVgpe3JldHVybjt9Z196VWZpU21zX0RiU3RvcmVEYXRhWwotZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vLSgweDExODMrNTI1MC0weDI2MDQpXS50YWc9V01TX1RBR19UWVBFX01PX1NFTlRfVjAxOworZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vLSgweDU1ZCsyODM3LTB4MTA3MSldLnRhZz1XTVNfVEFHX1RZUEVfTU9fU0VOVF9WMDE7CiB6VWZpU21zX0NtZ3NSZXNwUHJvYyhjaWQpO31WT0lEIGF0U21zX1JlY3ZDbWdzRXJyKFVJTlQ4KnBSZXNMaW5lLGludCBjaWQpewogYXRfcHJpbnQoTE9HX0RFQlVHLAogIlx4NzNceDZkXHg3M1x4MjBceDczXHg2NVx4NmVceDY0XHg2NVx4NjRceDIwXHg2Nlx4NjFceDY5XHg2Y1x4MmVceDIwIiAiXG4iKTsKQEAgLTUyMiwxNiArNTIyLDE2IEBACiBaVEVfV01TX0NPTkNBVF9TTVNfQ09VTlRfTUFYKXtyZXR1cm47fWdfelVmaVNtc19TZW5kRmFpbGVkQ291bnQrKzthdF9wcmludCgKIExPR19ERUJVRywKICJceDczXHg2NVx4NmVceDY0XHgyMFx4NzNceDZkXHg3M1x4MjBceDY2XHg2MVx4NjlceDZjXHg2NVx4NjRceDJjXHg3M1x4NmZceDIwXHg3N1x4NzJceDY5XHg3NFx4NjVceDIwXHg3M1x4NmRceDczXHgyMFx4NzRceDZmXHgyMFx4NjRceDcyXHg2MVx4NjZceDc0XHg2Mlx4NmZceDc4XHgyZSIgIlxuIgotKTtnX3pVZmlTbXNfRGJTdG9yZURhdGFbZ196VWZpU21zX0N1ckNvbmNhdFNlZ05vLSgweDE0YTErMzQyMy0weDIxZmYpXS50YWc9Ci1XTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHg3YTYrNzQ0Mi0weDI0YjcpKXsKKyk7Z196VWZpU21zX0RiU3RvcmVEYXRhW2dfelVmaVNtc19DdXJDb25jYXRTZWdOby0oMHgxNmIxKzc0NC0weDE5OTgpXS50YWc9CitXTVNfVEFHX1RZUEVfTU9fTk9UX1NFTlRfVjAxO2lmKGdfelVmaVNtc19Db25jYXRUb3RhbE51bT4oMHgxNDI1KzM2ODctMHgyMjhiKSl7CiBnX3pVZmlTbXNfSXNDb25jYXRTZW5kU3VjPUZBTFNFO316VWZpU21zX0NtZ3NSZXNwUHJvYyhjaWQpO31WT0lEIAogYXRTbXNfUmVjdkNtZ3NSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUpe3JldHVybjt9Vk9JRCBhdFNtc19SZWN2Q210UnNwKAotVF96QXRfQXRSZXMqcFJlc0xpbmUpe0NIQVIgbmVlZFNNU1soMHg5YjIrNzUwMC0weDI2Y2MpXT17KDB4ZTM5KzMyNDAtMHgxYWUxKX07Ci1zY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDMyMysxOTAxLTB4YTkwKT09CitUX3pBdF9BdFJlcypwUmVzTGluZSl7Q0hBUiBuZWVkU01TWygweDIxN2IrMTQxMC0weDI2Y2IpXT17KDB4MTM2NSszMjQwLTB4MjAwZCl9Oworc2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLG5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHhkMmQrMTMwMS0weDEyNDIpPT0KIHN0cmNtcChuZWVkU01TLCJceDZlXHg2ZiIpKXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDY1XHg2NVx4NjRceDUzXHg0ZFx4NTNceDNkXHg2ZVx4NmZceDIxIgotKTtyZXR1cm47fXN0YXRpYyBUX3pVZmlTbXNfU21zSXRlbSB0U21zUGFyYT17KDB4MjBhKzM1MzUtMHhmZDkpfTsKLVRfelVmaVNtc19DbXRTZXRSc3AgdENtdFJzcD17KDB4MWZhNisyMjQtMHgyMDg2KX07aWYoTlVMTD09cFJlc0xpbmUpe3JldHVybjt9CispO3JldHVybjt9c3RhdGljIFRfelVmaVNtc19TbXNJdGVtIHRTbXNQYXJhPXsoMHgzMTQrMTk4MC0weGFkMCl9OworVF96VWZpU21zX0NtdFNldFJzcCB0Q210UnNwPXsoMHgxMGJmKzEyOTItMHgxNWNiKX07aWYoTlVMTD09cFJlc0xpbmUpe3JldHVybjt9CiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDQ1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDcwXHg2NFx4NzVceDQ2XHg2Y1x4NjFceDY3XHgzYVx4MjVceDY0XHgyZlx4NTBceDYxXHg3Mlx4NjFceDczXHgzYVx4MjVceDczXHgyZlx4NzJceDY1XHg3M1x4NzVceDZjXHg3NFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICxwUmVzTGluZS0+cGR1RmxhZyxwUmVzTGluZS0+cmVzUGFyYXMscFJlc0xpbmUtPnJlc3VsdCk7aWYocFJlc0xpbmUtPnBkdUZsYWc9PQpAQCAtNTQxLDM5ICs1NDEsNDAgQEAKICJceDI1XHgzNVx4MzBceDMwXHg3MyIsdENtdFJzcC5wZHUpO3B0aHJlYWRfbXV0ZXhfbG9jaygmc21zZGJfbXV0ZXgpOwogelVmaVNtc19DbXRSZXNwUHJvYygmdENtdFJzcCk7elVmaU1taV9TZW5kU21zU3RhdHVzKCk7cHRocmVhZF9tdXRleF91bmxvY2soJgogc21zZGJfbXV0ZXgpO3NjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCJceDZmXHg2YiIpO31lbHNle21lbXNldCgmdFNtc1BhcmEsCi0oMHgxMGNiKzQ4ODAtMHgyM2RiKSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTthdEJhc2VfUHJlUHJvY1JlcyhwUmVzTGluZS0+CisoMHg3OWIrNTEwLTB4OTk5KSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTthdEJhc2VfUHJlUHJvY1JlcyhwUmVzTGluZS0+CiByZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPnJlc1BhcmFzKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjNceDZkXHg3NFx4MjBceDY5XHg2ZVx4NjRceDIxXHgyMFx4NzBceDUyXHg2NVx4NzNceDRjXHg2OVx4NmVceDY1XHgyZFx4M2VceDcyXHg2NVx4NzNceDUwXHg2MVx4NzJceDYxXHg3M1x4M2FceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO3NzY2FuZihwUmVzTGluZS0+cmVzUGFyYXMsIlx4MjVceDczXHgyMFx4MjVceDY0Iix0U21zUGFyYS4KIGFscGhhLCZ0U21zUGFyYS5sZW5ndGgpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYzXHg2ZFx4NzRceDIwXHg2OVx4NmVceDY0XHgyMVx4MjBceDZjXHg2NVx4NmVceDY3XHg3NFx4NjhceDNhXHgyNVx4NjRceDJlIiAiXG4iCiAsdFNtc1BhcmEubGVuZ3RoKTt9fVZPSUQgYXRTbXNfUmVjdkNtdGlSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUpe0NIQVIgbmVlZFNNU1sKLSgweDE4OTErOTU0LTB4MWMxOSldPXsoMHg4YTMrOTctMHg5MDQpfTtzY19jZmdfZ2V0KE5WX05FRURfU1VQUE9SVF9TTVMsbmVlZFNNUywKLXNpemVvZihuZWVkU01TKSk7aWYoKDB4MjdhKzc2MzctMHgyMDRmKT09c3RyY21wKG5lZWRTTVMsIlx4NmVceDZmIikpe3ByaW50ZigKKygweDEyOGMrMTYyNi0weDE4YjQpXT17KDB4MmNjKzU2NDctMHgxOGRiKX07c2NfY2ZnX2dldChOVl9ORUVEX1NVUFBPUlRfU01TLAorbmVlZFNNUyxzaXplb2YobmVlZFNNUykpO2lmKCgweDQ2OCs3NjU0LTB4MjI0ZSk9PXN0cmNtcChuZWVkU01TLCJceDZlXHg2ZiIpKXsKK3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDUyXHg3M1x4NzBceDIwXHg2ZVx4NjVceDY1XHg2NFx4NTNceDRkXHg1M1x4M2RceDZlXHg2Zlx4MjEiCi0pO3JldHVybjt9Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHgxMmFiKzQxNjQtMHgyMmQxKV09eygweDc2OCs0MTczLTB4MTdiNSl9O2NoYXIqCispO3JldHVybjt9Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHhlYjgrNDM0NC0weDFmOTIpXT17KDB4MWE0Zis4MjItMHgxZDg1KX07Y2hhcioKIG1lbW9yeT1OVUxMO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4MjBceDY1XHg2ZVx4NzRceDY1XHg3Mlx4MjBceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO2lmKE5VTEw9PXBSZXNMaW5lKXtyZXR1cm47fWlmKFpBVF9DTVRJX0NNRCE9cFJlc0xpbmUtPgogYXRDbWRJZCl7cmV0dXJuO31zY19jZmdfZ2V0KE5WX1NNU19TVEFURSxzbXNfTWFpbl9zdGF0ZSxzaXplb2Yoc21zX01haW5fc3RhdGUpKTsKIGlmKHN0cmNtcChzbXNfTWFpbl9zdGF0ZSwiXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIpPT0KLSgweDExZDcrNTEyMS0weDI1ZDgpKXtwcmludGYoCisoMHg0ZjcrMTQwLTB4NTgzKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2ZFx4NzRceDY5XHg1Mlx4NzNceDcwXHgzYVx4MjBceDczXHg2ZFx4NzNceDVmXHg2NFx4NjVceDZjXHg2OVx4NmVceDY3IiAiXG4iCiApO3JldHVybjt9bWVtb3J5PXN0cnN0cihwUmVzTGluZS0+cmVzUGFyYXMsIlwiIik7aWYoTlVMTCE9bWVtb3J5KXttZW1vcnkrKzt9aWYoCi0oMHgyMjM0KzExNTQtMHgyNmI2KT09c3RybmNtcCgiXHg1M1x4NGQiLG1lbW9yeSwoMHgxNGI2KzEwNzAtMHgxOGUyKSkpeworKDB4MTUxKzg4MzQtMHgyM2QzKT09c3RybmNtcCgiXHg1M1x4NGQiLG1lbW9yeSwoMHgyNTIrMTk1My0weDlmMSkpKXsKIHpVZmlTbXNfU2V0U21zTG9jYXRpb24oU01TX0xPQ0FUSU9OX1NJTSk7elVmaVNtc19DaGFuZ2VNYWluU3RhdGUoCi1TTVNfU1RBVEVfUkVDVklORyk7bWVtb3J5Kz0oMHg3ZDArMjQ0OS0weDExNWQpO3ByaW50ZigKK1NNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweGNmYisyMjkyLTB4MTVlYik7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NzNceDY1XHg2ZVx4NjRceDIwXHg2M1x4NmRceDY3XHg3Mlx4M2FceDIwXHgyNVx4NzMiICJcbiIKICxtZW1vcnkpO3pTdnJfSW5uZXJTZW5kTXNnKFpVRklfTU9EVUxFX0lEX0FUX0xPQ0FMLFpVRklfTU9EVUxFX0lEX0FUX1VOU09MSSwKIE1TR19DTURfQVRfWk1HUixzdHJsZW4obWVtb3J5KSxtZW1vcnkpO31lbHNle3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg2OVx4NTJceDczXHg3MFx4MjBceDNhXHg3M1x4NzRceDZmXHg3Mlx4NjVceDIwXHg2Y1x4NmZceDYzXHg2MVx4NzRceDY5XHg2Zlx4NmVceDIwXHg2ZVx4NmZceDc0XHgyMFx4NTNceDRkXHgyZSIgIlxuIgogKTt9c2NfY2ZnX3NldChOVl9TTVNfUkVDVl9SRVNVTFQsIiIpO31WT0lEIGF0U21zX1JlY3ZDZHNSc3AoVF96QXRfQXRSZXMqcFJlc0xpbmUKLSl7Q0hBUiBuZWVkU01TWygweDk4MCsxODU3LTB4MTA4ZildPXsoMHgyNDU5KzI3OC0weDI1NmYpfTtzY19jZmdfZ2V0KAotTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MWU4NCsxMTUxLTB4MjMwMyk9PXN0cmNtcCgKKyl7Q0hBUiBuZWVkU01TWygweDdhZCsyMTQ4LTB4ZmRmKV09eygweDE0M2MrNDIyNy0weDI0YmYpfTtzY19jZmdfZ2V0KAorTlZfTkVFRF9TVVBQT1JUX1NNUyxuZWVkU01TLHNpemVvZihuZWVkU01TKSk7aWYoKDB4MWJiZisyNzUtMHgxY2QyKT09c3RyY21wKAogbmVlZFNNUywiXHg2ZVx4NmYiKSl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDZkXHg3NFx4NTJceDczXHg3MFx4MjBceDZlXHg2NVx4NjVceDY0XHg1M1x4NGRceDUzXHgzZFx4NmVceDZmXHgyMSIKLSk7cmV0dXJuO31zdGF0aWMgVF96VWZpU21zX1Ntc0l0ZW0gdFNtc1BhcmE9eygweDI0NzYrNDA0LTB4MjYwYSl9OwotVF96VWZpU21zX0NtZ3JTZXRSc3AgdENtZ3JSc3A9eygweGRkYSsyNzgyLTB4MThiOCl9O2lmKE5VTEw9PXBSZXNMaW5lKXtyZXR1cm47fQorKTtyZXR1cm47fXN0YXRpYyBUX3pVZmlTbXNfU21zSXRlbSB0U21zUGFyYT17KDB4MTYyNSszOTQ5LTB4MjU5Mil9OworVF96VWZpU21zX0NtZ3JTZXRSc3AgdENtZ3JSc3A9eygweDE2ZmMrNDI3LTB4MThhNyl9O2lmKE5VTEw9PXBSZXNMaW5lKXtyZXR1cm47fQogaWYocFJlc0xpbmUtPnBkdUZsYWc9PVpBVF9BVFJFU19QRFVfRkxBRyl7aWYoWkFUX1JFU1VMVF9BVVRPUkVQT1JUIT1wUmVzTGluZS0+CiByZXN1bHQpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg1Mlx4NzNceDcwXHgyMFx4NjdceDY1XHg3NFx4MjBceDcyXHg2NVx4NzNceDc1XHg2Y1x4NzRceDIwXHg0NVx4NzJceDcyXHg2Zlx4NzJceDJlIiAiXG4iCkBAIC01ODEsODAgKzU4Miw3OSBAQAogIlx4MjVceDM1XHgzMFx4MzBceDczIix0Q21nclJzcC5wZHUpO3B0aHJlYWRfbXV0ZXhfbG9jaygmc21zZGJfbXV0ZXgpOwogelVmaVNtc19DZHNSZXNwUHJvYygmdENtZ3JSc3ApO3pVZmlNbWlfU2VuZFNtc1N0YXR1cygpO3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCYKIHNtc2RiX211dGV4KTtzY19jZmdfc2V0KE5WX1NNU19SRUNWX1JFU1VMVCwiXHg2Zlx4NmIiKTt9ZWxzZXttZW1zZXQoJnRTbXNQYXJhLAotKDB4MTYyNCszLTB4MTYyNyksc2l6ZW9mKFRfelVmaVNtc19TbXNJdGVtKSk7YXRCYXNlX1ByZVByb2NSZXMocFJlc0xpbmUtPgorKDB4YTJhKzU1NTEtMHgxZmQ5KSxzaXplb2YoVF96VWZpU21zX1Ntc0l0ZW0pKTthdEJhc2VfUHJlUHJvY1JlcyhwUmVzTGluZS0+CiByZXNQYXJhcyxzaXplb2YocFJlc0xpbmUtPnJlc1BhcmFzKSk7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjNceDY0XHg3M1x4MjBceDY5XHg2ZVx4NjRceDIxXHgyMFx4NzBceDUyXHg2NVx4NzNceDRjXHg2OVx4NmVceDY1XHgyZFx4M2VceDcyXHg2NVx4NzNceDUwXHg2MVx4NzJceDYxXHg3M1x4M2FceDI1XHg3M1x4MmUiICJcbiIKICxwUmVzTGluZS0+cmVzUGFyYXMpO3NzY2FuZihwUmVzTGluZS0+cmVzUGFyYXMsIlx4MjVceDczXHgyMFx4MjVceDY0Iix0U21zUGFyYS4KIGFscGhhLCZ0U21zUGFyYS5sZW5ndGgpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg1Mlx4NzNceDcwXHgyMFx4NjNceDY0XHg3M1x4MjBceDY5XHg2ZVx4NjRceDIxXHgyMFx4NmNceDY1XHg2ZVx4NjdceDc0XHg2OFx4M2FceDI1XHg2NFx4MmUiICJcbiIKICx0U21zUGFyYS5sZW5ndGgpO319Vk9JRCBhdFNtc19SZWN2Q2RzaVJzcChUX3pBdF9BdFJlcypwUmVzTGluZSl7Q0hBUiBuZWVkU01TWwotKDB4OGY5KzYxMDUtMHgyMGEwKV09eygweDUwMys2Nzk2LTB4MWY4Zil9O3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1NNUywKLW5lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgxNjYrNjM0MS0weDFhMmIpPT1zdHJjbXAobmVlZFNNUywiXHg2ZVx4NmYiKSl7CisoMHgxMTM2KzI5NTktMHgxYzkzKV09eygweDM0Zis4NjQzLTB4MjUxMil9O3NjX2NmZ19nZXQoTlZfTkVFRF9TVVBQT1JUX1NNUywKK25lZWRTTVMsc2l6ZW9mKG5lZWRTTVMpKTtpZigoMHgxNTUrOTA5OS0weDI0ZTApPT1zdHJjbXAobmVlZFNNUywiXHg2ZVx4NmYiKSl7CiBwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NmRceDc0XHg1Mlx4NzNceDcwXHgyMFx4NmVceDY1XHg2NVx4NjRceDUzXHg0ZFx4NTNceDNkXHg2ZVx4NmZceDIxIgotKTtyZXR1cm47fWNoYXIgc21zX01haW5fc3RhdGVbKDB4MzQwKzgzODUtMHgyM2UzKV09eygweGEzYiszNjg2LTB4MThhMSl9O2NoYXIqCispO3JldHVybjt9Y2hhciBzbXNfTWFpbl9zdGF0ZVsoMHg1MGQrOTcxLTB4OGJhKV09eygweGZmMyszMjAyLTB4MWM3NSl9O2NoYXIqCiBtZW1vcnk9TlVMTDtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDY0XHg3M1x4NjlceDUyXHg3M1x4NzBceDIwXHg2NVx4NmVceDc0XHg2NVx4NzJceDIwXHgyNVx4NzNceDJlIiAiXG4iCiAscFJlc0xpbmUtPnJlc1BhcmFzKTtpZihOVUxMPT1wUmVzTGluZSl7cmV0dXJuO31pZihaQVRfQ0RTSV9DTUQhPXBSZXNMaW5lLT4KIGF0Q21kSWQpe3JldHVybjt9c2NfY2ZnX2dldChOVl9TTVNfU1RBVEUsc21zX01haW5fc3RhdGUsc2l6ZW9mKHNtc19NYWluX3N0YXRlKSk7CiBpZihzdHJjbXAoc21zX01haW5fc3RhdGUsIlx4NzNceDZkXHg3M1x4NWZceDY0XHg2NVx4NmNceDY5XHg2ZVx4NjciKT09Ci0oMHgxNzQyKzM4MTktMHgyNjJkKSl7cHJpbnRmKAorKDB4MWFlZCsxOTk1LTB4MjJiOCkpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUyXHg2NVx4NjNceDc2XHg0M1x4NjRceDczXHg2OVx4NTJceDczXHg3MFx4M2FceDIwXHg3M1x4NmRceDczXHg1Zlx4NjRceDY1XHg2Y1x4NjlceDZlXHg2NyIgIlxuIgogKTtyZXR1cm47fW1lbW9yeT1zdHJzdHIocFJlc0xpbmUtPnJlc1BhcmFzLCJcIiIpO2lmKE5VTEwhPW1lbW9yeSl7bWVtb3J5Kys7fQogcHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTJceDY1XHg2M1x4NzZceDQzXHg2NFx4NzNceDY5XHg1Mlx4NzNceDcwXHgzYVx4MjBceDZkXHg2NVx4NmRceDZmXHg3Mlx4NzlceDIwXHgzZFx4MjBceDI1XHg3MyIgIlxuIgotLG1lbW9yeSk7aWYoKDB4MjA5KzgzNTAtMHgyMmE3KT09c3RybmNtcCgiXHg1M1x4NGQiLG1lbW9yeSwoMHgxOTQwKzE1OTYtMHgxZjdhKSkKLSl7elVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKLVNNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweDZjOSs4MTEtMHg5ZjApO3ByaW50ZigKKyxtZW1vcnkpO2lmKCgweDEzNjIrMjUxNy0weDFkMzcpPT1zdHJuY21wKCJceDUzXHg0ZCIsbWVtb3J5LCgweGY2KzkzNDAtMHgyNTcwKSkpCit7elVmaVNtc19TZXRTbXNMb2NhdGlvbihTTVNfTE9DQVRJT05fU0lNKTt6VWZpU21zX0NoYW5nZU1haW5TdGF0ZSgKK1NNU19TVEFURV9SRUNWSU5HKTttZW1vcnkrPSgweDIxNzArMTI2Mi0weDI2NWEpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDczXHg2NVx4NmVceDY0XHgyMFx4NjNceDZkXHg2N1x4NzJceDNhXHgyMFx4MjVceDczIiAiXG4iCiAsbWVtb3J5KTt6U3ZyX0lubmVyU2VuZE1zZyhaVUZJX01PRFVMRV9JRF9BVF9MT0NBTCxaVUZJX01PRFVMRV9JRF9BVF9VTlNPTEksCiBNU0dfQ01EX0FUX1pNR1Isc3RybGVuKG1lbW9yeSksbWVtb3J5KTt9ZWxzZXtwcmludGYoCiAiXHg1Ylx4NTNceDRkXHg1M1x4NWRceDIwXHg2MVx4NzRceDUzXHg2ZFx4NzNceDVmXHg1Mlx4NjVceDYzXHg3Nlx4NDNceDY0XHg3M1x4NjlceDUyXHg3M1x4NzBceDIwXHgzYVx4NzNceDc0XHg2Zlx4NzJceDY1XHgyMFx4NmNceDZmXHg2M1x4NjFceDc0XHg2OVx4NmZceDZlXHgyMFx4NmVceDZmXHg3NFx4MjBceDUzXHg0ZFx4MmUiICJcbiIKICk7fXNjX2NmZ19zZXQoTlZfU01TX1JFQ1ZfUkVTVUxULCIiKTt9aW50IGF0U21zX1NlbmRabWVuYVJlcShQU1RSIHBBdENtZFBhcmEsaW50Ci0gY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe0NIQVIgcEF0Y21kU3RyWygweDIxN2YrNzEyLTB4MjQzMyldPXsKLSgweDEzZGQrMzk3Ni0weDIzNjUpfTtzbnByaW50ZihwQXRjbWRTdHIsc2l6ZW9mKHBBdGNtZFN0ciksCisgY2lkLFBTVFIgcEF0UnN0LGludCBhdFJzdFNpemUpe0NIQVIgcEF0Y21kU3RyWygweDFkMWErMjIzNy0weDI1YzMpXT17CisoMHgxYzdiKzIzMzQtMHgyNTk5KX07c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAogIlx4NDFceDU0XHgyYlx4NWFceDRkXHg0NVx4NGVceDQxXHgzZFx4MjVceDczIiAiXHJcbiIscEF0Q21kUGFyYSk7cmV0dXJuIAogelN2cl9TZW5kQXRTeW4oWkFUX1pNRU5BX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO31WT0lEIAogYXRTbXNfUmVjdlptZW5hT2soVk9JRCl7Z19abWVuYV9yc3A9VFJVRTtyZXR1cm47fVZPSUQgYXRTbXNfUmVjdlptZW5hRXJyKFZPSUQpewogZ19abWVuYV9yc3A9RkFMU0U7cmV0dXJuO31pbnQgYXRTbXNfU2VuZENubWFSZXEoUFNUUiBwQXRDbWRQYXJhLGludCBjaWQsUFNUUiAKLXBBdFJzdCxpbnQgYXRSc3RTaXplKXtpbnQgYXRSZXM9KDB4MWI3MSsyMjk5LTB4MjQ2Yyk7Q0hBUiBwQXRjbWRTdHJbCi1aU01TX1BEVV9TSVpFXT17KDB4MTY2OSsxNTEzLTB4MWM1Mil9O0NIQVIgYWNrUGR1U3RyWygweDViOSsyOTY2LTB4MTExZCldPXsKLSgweDExOTcrMjUwMS0weDFiNWMpfTtpZihhdG9pKHBBdENtZFBhcmEpPT0oMHhkMTIrNDIzOC0weDFkOWYpKXtzbnByaW50ZigKLXBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwiXHg0MVx4NTRceDJiXHg0M1x4NGVceDRkXHg0MVx4M2RceDI1XHg3MyIgIlxyXG4iLAotcEF0Q21kUGFyYSk7YXRSZXM9elN2cl9TZW5kQXRTeW4oWkFUX0NOTUFfQ01ELHBBdGNtZFN0cixjaWQscEF0UnN0LGF0UnN0U2l6ZSk7Ci1wcmludGYoCitwQXRSc3QsaW50IGF0UnN0U2l6ZSl7aW50IGF0UmVzPSgweDJjNis0ODcxLTB4MTVjZCk7Q0hBUiBwQXRjbWRTdHJbWlNNU19QRFVfU0laRQorXT17KDB4MWYxKzU2NTgtMHgxODBiKX07Q0hBUiBhY2tQZHVTdHJbKDB4MWFkKzMzMS0weDJjNildPXsoMHhjMTMrNDg5MC0weDFmMmQpfTsKK2lmKGF0b2kocEF0Q21kUGFyYSk9PSgweDU4Kzg4MjEtMHgyMmNjKSl7c25wcmludGYocEF0Y21kU3RyLHNpemVvZihwQXRjbWRTdHIpLAorIlx4NDFceDU0XHgyYlx4NDNceDRlXHg0ZFx4NDFceDNkXHgyNVx4NzMiICJcclxuIixwQXRDbWRQYXJhKTthdFJlcz0KK3pTdnJfU2VuZEF0U3luKFpBVF9DTk1BX0NNRCxwQXRjbWRTdHIsY2lkLHBBdFJzdCxhdFJzdFNpemUpO3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmVceDZkXHg2MVx4NTJceDY1XHg3MVx4MjBceDMxXHgzMVx4MzFceDMxXHgzMVx4MzFceDIwXHg2MVx4NjNceDZiXHgyMFx4NmZceDZiXHgyMFx4M2RceDIwXHgyNVx4NzNceDJlIiAiXG4iCi0scEF0Y21kU3RyKTtyZXR1cm4oMHgxZjRiKzExNTktMHgyM2QyKTt9ZWxzZXt6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KAotYWNrUGR1U3RyLCgweDY2ZCs0MDc1LTB4MTU4NSkpO3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKKyxwQXRjbWRTdHIpO3JldHVybigweGNmKzkzOTQtMHgyNTgxKTt9ZWxzZXt6VWZpU21zX0VuY29kZVBkdV9EZWxpdmVyUmVwb3J0KAorYWNrUGR1U3RyLCgweDU0Nis2NTE0LTB4MWRlNSkpO3NucHJpbnRmKHBBdGNtZFN0cixzaXplb2YocEF0Y21kU3RyKSwKICJceDQxXHg1NFx4MmJceDQzXHg0ZVx4NGRceDQxXHgzZFx4MjVceDczXHgyY1x4MjVceDY0IiAiXHJcbiIscEF0Q21kUGFyYSxzdHJsZW4oCi1hY2tQZHVTdHIpLygweDE0NCsxODU5LTB4ODg1KSk7YXRSZXM9elN2cl9TZW5kQXRTeW4oWkFUX0NOTUFfQ01ELHBBdGNtZFN0cixjaWQsCithY2tQZHVTdHIpLygweDUzMis4Mjk2LTB4MjU5OCkpO2F0UmVzPXpTdnJfU2VuZEF0U3luKFpBVF9DTk1BX0NNRCxwQXRjbWRTdHIsY2lkLAogcEF0UnN0LGF0UnN0U2l6ZSk7aWYoYXRSZXMhPVpBVF9SRVNVTFRfU01TKXtyZXR1cm4gYXRSZXM7fXByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTNceDZkXHg3M1x4NWZceDUzXHg2NVx4NmVceDY0XHg0M1x4NmVceDZkXHg2MVx4NTJceDY1XHg3MVx4MjBceDNkXHgyMFx4MjVceDczXHgyZSIgIlxuIgotLHBBdGNtZFN0cik7bWVtc2V0KHBBdGNtZFN0ciwoMHhkMmMrMzk5NS0weDFjYzcpLFpTTVNfUERVX1NJWkUpO2lmKHN0cmxlbigKLWFja1BkdVN0cik8WlNNU19QRFVfU0laRS0oMHhkMTYrNTk0MS0weDI0NGEpKXttZW1jcHkocEF0Y21kU3RyLGFja1BkdVN0cixzdHJsZW4oCisscEF0Y21kU3RyKTttZW1zZXQocEF0Y21kU3RyLCgweDJjKzQwODMtMHgxMDFmKSxaU01TX1BEVV9TSVpFKTtpZihzdHJsZW4oCithY2tQZHVTdHIpPFpTTVNfUERVX1NJWkUtKDB4ZDE4KzUxODUtMHgyMTU4KSl7bWVtY3B5KHBBdGNtZFN0cixhY2tQZHVTdHIsc3RybGVuKAogYWNrUGR1U3RyKSk7fWVsc2V7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZFx4NjdceDczXHg1Mlx4NjVceDcxXHgyMFx4NzBceDY0XHg3NVx4MjBceDc0XHg2Zlx4NmZceDIwXHg2Y1x4NmZceDZlXHg2N1x4M2FceDI1XHg3MyIgIlxuIgotLGFja1BkdVN0cik7bWVtY3B5KHBBdGNtZFN0cixhY2tQZHVTdHIsWlNNU19QRFVfU0laRS0oMHhhYjErMjIwMi0weDEzNDkpKTt9KigKKyxhY2tQZHVTdHIpO21lbWNweShwQXRjbWRTdHIsYWNrUGR1U3RyLFpTTVNfUERVX1NJWkUtKDB4ZDU4KzQ5MTItMHgyMDg2KSk7fSooCiBwQXRjbWRTdHIrc3RybGVuKGFja1BkdVN0cikpPVpTTVNfQ1RSTF9aX0NIQVI7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1M1x4NmRceDczXHg1Zlx4NTNceDY1XHg2ZVx4NjRceDQzXHg2ZVx4NmRceDYxXHg1Mlx4NjVceDcxXHgyZVx4MjBceDcwXHg2NFx4NzVceDNkXHgyMFx4MjVceDczIiAiXG4iCi0scEF0Y21kU3RyKTttZW1zZXQocEF0UnN0LCgweDhmKzk3MTctMHgyNjg0KSxhdFJzdFNpemUpO3JldHVybiB6U3ZyX1NlbmRBdFN5bigKKyxwQXRjbWRTdHIpO21lbXNldChwQXRSc3QsKDB4MTEwNCszNTI1LTB4MWVjOSksYXRSc3RTaXplKTtyZXR1cm4gelN2cl9TZW5kQXRTeW4oCiBaQVRfQ05NQV9DTUQscEF0Y21kU3RyLGNpZCxwQXRSc3QsYXRSc3RTaXplKTt9fVZPSUQgYXRTbXNfUmVjdkNubWFSc3AoCiBUX3pBdF9BdFJlcypwUmVzTGluZSl7cmV0dXJuO31WT0lEIGF0VW5zb2xpX0RlbGV0ZV9TaW1fU21zKFVJTlQ4KnBEYXRhYnVmLGludCAKLWNpZCl7Q0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4MTVjOSszMjQ3LTB4MjI3OCl9O2ludCBhdFJlcz0KLSgweDFiYTYrOTY5LTB4MWY2Zik7aWYocERhdGFidWY9PU5VTEwpe3JldHVybjt9YXRSZXM9YXRTbXNfU2VuZENtZ2RSZXEocERhdGFidWYsCi1jaWQsZXJyQ29kZSxaU1ZSX0FUX1JFU19DT0RFX0xFTik7aWYoYXRSZXM9PVpTTVNfUkVTVUxUX09LKXthdFNtc19SZWN2Q21nZE9rKCk7fQotZWxzZXthdFNtc19SZWN2Q21nZEVycigpO31hdFNtc19SZWN2Q21nZEZpbmlzaCgpO31WT0lEIGF0VW5zb2xpX1JlcG9ydF9Dbm1hKAotVUlOVDgqcERhdGFidWYsaW50IGNpZCl7Q0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4YiszNDgxLTB4ZGE0KX07aWYKLShwRGF0YWJ1Zj09TlVMTCl7cHJpbnRmKAorY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dPXsoMHg0ZisxMDQ1LTB4NDY0KX07aW50IGF0UmVzPQorKDB4MTI4YSszMTA3LTB4MWVhZCk7aWYocERhdGFidWY9PU5VTEwpe3JldHVybjt9YXRSZXM9YXRTbXNfU2VuZENtZ2RSZXEocERhdGFidWYKKyxjaWQsZXJyQ29kZSxaU1ZSX0FUX1JFU19DT0RFX0xFTik7aWYoYXRSZXM9PVpTTVNfUkVTVUxUX09LKXthdFNtc19SZWN2Q21nZE9rKCk7Cit9ZWxzZXthdFNtc19SZWN2Q21nZEVycigpO31hdFNtc19SZWN2Q21nZEZpbmlzaCgpO31WT0lEIGF0VW5zb2xpX1JlcG9ydF9Dbm1hKAorVUlOVDgqcERhdGFidWYsaW50IGNpZCl7Q0hBUiBlcnJDb2RlW1pTVlJfQVRfUkVTX0NPREVfTEVOXT17KDB4NGErMzMyOC0weGQ0YSl9OworaWYocERhdGFidWY9PU5VTEwpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTVceDZlXHg3M1x4NmZceDZjXHg2OVx4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDVmXHg0M1x4NmVceDZkXHg2MVx4MjBceDZlXHg3NVx4NmNceDZjIgogKTtyZXR1cm47fWF0U21zX1NlbmRDbm1hUmVxKHBEYXRhYnVmLGNpZCxlcnJDb2RlLFpTVlJfQVRfUkVTX0NPREVfTEVOKTt9Vk9JRCAKIGF0VW5zb2xpX1JlcG9ydF9abWVuYShVSU5UOCpwRGF0YWJ1ZixpbnQgY2lkKXtDSEFSIGVyckNvZGVbWlNWUl9BVF9SRVNfQ09ERV9MRU5dCi09eygweDExNis2MzIwLTB4MTljNil9O2ludCBhdFJlcz0oMHhkMDgrNTgxLTB4ZjRkKTtpZihwRGF0YWJ1Zj09TlVMTCl7cHJpbnRmKAorPXsoMHgxOGFmKzIyNzItMHgyMThmKX07aW50IGF0UmVzPSgweGJmZisyNjIxLTB4MTYzYyk7aWYocERhdGFidWY9PU5VTEwpe3ByaW50ZigKICJceDViXHg1M1x4NGRceDUzXHg1ZFx4MjBceDYxXHg3NFx4NTVceDZlXHg3M1x4NmZceDZjXHg2OVx4NWZceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRceDVmXHg1YVx4NmRceDY1XHg2ZVx4NjFceDIwXHg2ZVx4NzVceDZjXHg2YyIKICk7cmV0dXJuO31hdFJlcz1hdFNtc19TZW5kWm1lbmFSZXEocERhdGFidWYsY2lkLGVyckNvZGUsWlNWUl9BVF9SRVNfQ09ERV9MRU4pO2lmCiAoYXRSZXM9PVpTTVNfUkVTVUxUX09LKXthdFNtc19SZWN2Wm1lbmFPaygpO31lbHNle2F0U21zX1JlY3ZabWVuYUVycigpO319Vk9JRCAKIGF0VW5zb2xpX1JlcG9ydF9abWdyKFVJTlQ4KnBEYXRhYnVmLGludCBjaWQpe0NIQVIgZXJyQ29kZVtaU1ZSX0FUX1JFU19DT0RFX0xFTl09Ci17KDB4ZWI0KzIwMjAtMHgxNjk4KX07aWYocERhdGFidWY9PU5VTEwpe3ByaW50ZigKK3soMHg2NWErMjg3NS0weDExOTUpfTtpZihwRGF0YWJ1Zj09TlVMTCl7cHJpbnRmKAogIlx4NWJceDUzXHg0ZFx4NTNceDVkXHgyMFx4NjFceDc0XHg1NVx4NmVceDczXHg2Zlx4NmNceDY5XHg1Zlx4NTJceDY1XHg3MFx4NmZceDcyXHg3NFx4NWZceDVhXHg2ZFx4NjdceDcyXHgyMFx4NmVceDc1XHg2Y1x4NmMiCiApO3JldHVybjt9YXRTbXNfU2VuZFptZ3JSZXEocERhdGFidWYsY2lkLGVyckNvZGUsWlNWUl9BVF9SRVNfQ09ERV9MRU4pO30KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS9zbnRwL3NudHAuYyBiL2FwL2FwcC96dGVfY29tbS9zbnRwL3NudHAuYwppbmRleCA5NzZmNjEwLi4zYTg0NWM1IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vc250cC9zbnRwLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3NudHAvc250cC5jCkBAIC0yMSw2ICsyMSw3IEBACiAvLyNpbmNsdWRlICJjZmdfYXBpLmgiCiAvLyNpbmNsdWRlICJhdF9jb20uaCIKICNpbmNsdWRlICJzbnRwLmgiCisjaW5jbHVkZSAicHViX2RlYnVnX2luZm8uaCIKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTM2LDYgKzM3LDggQEAKIGludCBnX3NudHBfc3VjY2Vzc19jb3VudCA9IDA7CiAKIGludCBnX3NudHBfc3luY19pbnRlcnZhbF90aW1lID0gMTsgICAgIC8vzayyvbPJuaa686Os1Nm0ztfUtq/NrLK9tcS85Lj0yrG85KOstaXOuzrM7AorY2hhciBNT0RVTEVfSURfU05UUF9ERUJVR1syMF0gPSAiYXBfc250cCI7CisKIC8vILbUc2VtX2lk1rTQ0HCy2df3CiBzdGF0aWMgaW50IHNlbV9wKGludCBzZW1faWQpCiB7CkBAIC01NDcsNiArNTUwLDcgQEAKIAogCWlmICgwID09IHNldHRpbWVvZmRheSgmdHAsIE5VTEwpKSB7CiAJCXN5c3RlbSgienRlLXJ0Yy1jbG9jayIpOworCQlzY19kZWJ1Z19pbmZvX3JlY29yZChNT0RVTEVfSURfU05UUF9ERUJVRywgInNudHAgdGltZSBzeW5jaHJvbml6YXRpb24gc3VjY2Vzc2Z1bCFcbiIpOwogCQlzbG9nKE1JU0NfUFJJTlQsIFNMT0dfREVCVUcsICJbenlsXXN5c3RlbSB6dGUtcnRjLWNsb2NrIFxuIik7CiAJfQogCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9pbmMvd2lmaV9hcF9jdHJsLmggYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9pbmMvd2lmaV9hcF9jdHJsLmgKaW5kZXggMDc4NTYzZi4uMDkyNWFjMyAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3dsYW4vaW5jL3dpZmlfYXBfY3RybC5oCisrKyBiL2FwL2FwcC96dGVfY29tbS93bGFuL2luYy93aWZpX2FwX2N0cmwuaApAQCAtMjQsOCArMjQsOCBAQAogI2luY2x1ZGUgPHJ0Y190aW1lci5oPgogCiAjZGVmaW5lIFNPRlRBUF9NQVhfQlVGRkVSX1NJWkUJNDA5NgotI2RlZmluZSBBUF9CU1NfU1RBUlRfREVMQVkJMjAwMDAwCi0jZGVmaW5lIEFQX0JTU19TVE9QX0RFTEFZCTUwMDAwMAorI2RlZmluZSBBUF9CU1NfU1RBUlRfREVMQVkJMTAwMDAwCisjZGVmaW5lIEFQX0JTU19TVE9QX0RFTEFZCTIwMDAwMAogI2RlZmluZSBBUF9TRVRfQ0ZHX0RFTEFZCTUwMDAwMAogI2RlZmluZSBBUF9EUklWRVJfU1RBUlRfREVMQVkJODAwMDAwCiAjZGVmaW5lIEFQX0NIQU5ORUxfREVGQVVMVAk2CmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9hcF9jdHJsLmMgYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9hcF9jdHJsLmMKaW5kZXggN2NkNWMxZC4uYjc3MzMyOSAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dpZmlfYXBfY3RybC5jCisrKyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93aWZpX2FwX2N0cmwuYwpAQCAtMzc2LDcgKzM3Niw3IEBACiAJCWFwX3N2ci0+c29ja19tLnBpZCA9IHBpZDsKICNlbmRpZgkJCiAgICAgICAgIHdmX2xvZygiU29mdEFQIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IHBpZD0lZCBwaWQ9JWQiLCBhcF9zdnItPnNvY2sucGlkLGFwX3N2ci0+c29ja19tLnBpZCk7Ci0gICAgICAgIC8vdXNsZWVwKEFQX0JTU19TVEFSVF9ERUxBWSk7CisgICAgICAgIHVzbGVlcChBUF9CU1NfU1RBUlRfREVMQVkpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTE1NDUsOCArMTU0NSwzNiBAQAogCXJldHVybiByZXQ7CiB9CiAKKy8qIFN0YXJ0ZWQgYnkgQUlDb2RlciwgcGlkOjZhNDRkNjZkNWV3YjdlZjE0MmI4MDg4YjcwYTI2MDYwMWVkODdjOWIgKi8KK3N0YXRpYyBpbnQgcmVpbml0X2RydihzdHJ1Y3Qgd2xhbl9hcF9zZXJ2ZXIgKmFwX3N2cikKK3sKKwlpbnQgcmV0ID0gLTE7CisJaW50IGlmaW5kZXggPSAwOworCQorCXJldCA9IGFwX3N2ci0+ZHJ2X3Byb3h5LmRydl9pbml0KCZhcF9zdnItPmRydl9wcm94eSk7CisJaWYgKHJldCAhPSAwKSB7CisJCXdmX2xvZygiZHJ2X2luaXQgZmFpbGVkLiIpOworCQlyZXR1cm4gLTE7CisJfQorCQorCWlmaW5kZXggPSBpZl9uYW1ldG9pbmRleChhcF9zdnItPmRydl9wcm94eS5pZmFjZV9uYW1lKTsKKwlpZiAoaWZpbmRleCA9PSAwKSB7CisJCXdmX2xvZygiaWZhY2Ugbm90IGV4aXN0LiIpOworCQlyZXR1cm4gLTE7CisJfQorCQorCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCByZXN0YXJ0X2R1ZV9jYXAoc3RydWN0IHdsYW5fYXBfc2VydmVyICphcF9zdnIpCiB7CisJaW50IHJldCA9IC0xOworCisJaWYgKGdfY2FwX3dpZmlfZW5hYmxlID09IDApIHsKKwkJd2ZfbG9nKCJ3aWZpIG5vdCBvcGVuZWQuIik7CisJCXJldHVybjsKKwl9CisJCiAJLy9zdG9wCiAJaWYgKGdfY2FwX3N0YV9lbmFibGUgPT0gMSkgewogCQl3aWZpX3N0YXRpb25fY2xvc2UoKTsKQEAgLTE1NjMsMjEgKzE1OTEsMjkgQEAKIAkKIAkvL3N0YXJ0CiAJaWYgKGdfY2FwX3dpZmlfZW5hYmxlID09IDEpIHsKLQkJYXBfc3ZyLT5kcnZfcHJveHkuZHJ2X2luaXQoJmFwX3N2ci0+ZHJ2X3Byb3h5KTsKLQkJc2VuZF93bGFuX3N0YXR1c190b19jYXAoSU5fV0lGSV9TVEFUVVNfRU5BQkxFRCk7CisJCXJldCA9IHJlaW5pdF9kcnYoYXBfc3ZyKTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlnX2NhcF93aWZpX2VuYWJsZSA9IDA7CisJCQlzZW5kX3dsYW5fc3RhdHVzX3RvX2NhcChJTl9XSUZJX1NUQVRVU19GSVJNV0FSRV9DUkFTSCk7CisJCQlyZXR1cm47CisJCX0KIAl9CiAKIAlpZiAoZ19jYXBfYXBfZW5hYmxlID09IDEpIHsKLQkJYXBfc3ZyLT5zdGFydGFwKGFwX3N2cik7CisJCXJldCA9IGFwX3N2ci0+c3RhcnRhcChhcF9zdnIpOworCQlpZiAoKGdfY2FwX3N0YV9lbmFibGUgPT0gMSkgJiYgKHJldCA9PSAwKSkgeworCQkJd2FpdF9hcF9lbmFibGVkKCk7CisJCX0KKwkJd2ZfbG9nKCJzdGFydGFwOiVkLiIsIHJldCk7CiAJfQogCiAJaWYgKGdfY2FwX3N0YV9lbmFibGUgPT0gMSkgewotCQl3YWl0X2FwX2VuYWJsZWQoKTsKIAkJd2xhbl9zdGF0aW9uX2luaXQoKTsKIAkJc3RhX251bV9hcHN0YV9vcGVuKCk7CiAJfQogCiB9CisvKiBFbmRlZCBieSBBSUNvZGVyLCBwaWQ6NmE0NGQ2NmQ1ZXdiN2VmMTQyYjgwODhiNzBhMjYwNjAxZWQ4N2M5YiAqLwogI2VuZGlmCiAKIHN0YXRpYyB2b2lkIG9wZW5fd2lmaV9udl9zZXQoKQpAQCAtMTY2MCwyNCArMTY5NiwyNCBAQAogCiAvKiBTdGFydGVkIGJ5IEFJQ29kZXIsIHBpZDphNGUxYTE2YmY3MDM2YzExNGZhZTA5NmI1MDZmZWMyNGIzMTI1ZDk2ICovCiBzdGF0aWMgaW50IGdldF93bGFuX21hY19hZGRyZXNzKGNvbnN0IGNoYXIgKmludGVyZmFjZSwgY2hhciAqbWFjX2FkZHIpIHsKLSAgICAvLyDCucK5wr3CqMKww7zCusKswr3Dk8K/w5rDkMOFw4/CosK1w4TDjsOEwrzDvsOCwrfCvsK2CisgICAgLy8gubm9qLD8uqy907/a0MXPorXEzsS8/sK3vrYKICAgICBjaGFyIGZpbGVfcGF0aFsxMDBdOwogICAgIHNucHJpbnRmKGZpbGVfcGF0aCwgc2l6ZW9mKGZpbGVfcGF0aCksICIvc3lzL2NsYXNzL25ldC8lcy9hZGRyZXNzIiwgaW50ZXJmYWNlKTsKICAgICAKLSAgICAvLyDCtMOywr/CqsKww7zCusKswr3Dk8K/w5rDkMOFw4/CosK1w4TDjsOEwrzDvgorICAgIC8vILTyv6qw/LqsvdO/2tDFz6K1xM7EvP4KICAgICBGSUxFICpmcCA9IGZvcGVuKGZpbGVfcGF0aCwgInIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBwZXJyb3IoImNhdCBub3Qgb3BlbiB3bGFuIGFkZHJlc3MgZmlsZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLy8gwrTDk8OOw4TCvMO+w5bDkMK2w4HDiMKhTUFDwrXDmMOWwrcKLSAgICBpZiAoZmdldHMobWFjX2FkZHIsIDE4LCBmcCkgPT0gTlVMTCkgeyAvLyBNQUPCtcOYw5bCt8ONwqjCs8Kjw4rDhzE3wrjDtsOXw5bCt8O7wrzDk8OJw4/DlsOVw5bCucK3w7sKKyAgICAvLyC0087EvP7W0LbByKFNQUO12Na3CisgICAgaWYgKGZnZXRzKG1hY19hZGRyLCAxOCwgZnApID09IE5VTEwpIHsgLy8gTUFDtdjWt82os6PKxzE3uPbX1rf7vNPJz9bV1rm3+wogICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLy8gwrnDmMKxw5XDjsOEwrzDvsKywqLCt8K1wrvDmMKzw4nCucKmCisgICAgLy8gudix1c7EvP6yore1u9izybmmCiAgICAgZmNsb3NlKGZwKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTE2ODksNyArMTcyNSw3IEBACiAJc2NfY2ZnX2dldCAoInNzaWRfd3JpdGVfZmxhZyIsIHNzaWRfd3JpdGVfZmxhZywgc2l6ZW9mIChzc2lkX3dyaXRlX2ZsYWcpKTsKIAl3Zl9sb2cgKCJzc2lkX3dyaXRlX2ZsYWcgPSAlcyIsIHNzaWRfd3JpdGVfZmxhZyk7CiAKLQkvKsOTw6tOVsOWw5DDisOHwrfDscOSw5HDkMK0w4jDq1NTSUQgwrXDhMKxw6rDlsK+w47Cu8Kxw4jCvcOPwqPCrMOIw6fCucO7w47CqjHCscOtw4rCvsOSw5HDkMK0w4jDq8KjwqzCssK7w5PDg8OUw5nDkMK0wqPCuzDCscOtw4rCvsK7wrnDjsK0w5DCtMOIw6sqLworCS8q0+tOVtbQyse38dLR0LTI61NTSUQgtcSx6ta+zruxyL3Po6zI57n7zqoxse3KvtLR0LTI66OssrvTw9TZ0LSjuzCx7cq+u7nOtNC0yOsqLwogCWlmICghc3RyY21wIChzc2lkX3dyaXRlX2ZsYWcsICIwIikpIHsKIAkJY2hhciAgd2lmaV9tYWNbMjBdPXswfTsKIAkJZ2V0X3dsYW5fbWFjX2FkZHJlc3MoYXBfc2VydmVyLT5kcnZfcHJveHkuaWZhY2VfbmFtZSwgd2lmaV9tYWMpOwpAQCAtMTgxOCw4ICsxODU0LDkgQEAKIAkJcmV0dXJuIC0xOwogCX0KIAorCXJldCA9IC0xOwogCXdhaXRfYnJpZGdlKCk7Ci0JdXNsZWVwICgyMDAwMDApOworCS8vdXNsZWVwICgyMDAwMDApOwogCWlmKDAgPT0gc3RhcnRTb2Z0YXAgKGFwX3N2cikpewogCQkvL3VzbGVlcCAoMjAwMDAwKTsKIAkJaWYoMCA9PSB3aWZpX2Nvbm5lY3RfdG9faG9zdGFwZCgmYXBfc3ZyLT5zb2NrKSl7CkBAIC0xODU2LDYgKzE4OTMsOSBAQAogCQllbHNlewogCQkJd2ZfbG9nICgiIHNvY2tldCBjb25uZWN0IG9yIGF0dGFjaCBmYWlsZWQuIik7CiAJCQl3bGFuX3NldF9zdGF0ZShXTEFOX09GRixXTEFOX09GRik7CisJCSNpZmRlZiBVU0VfQ0FQX1NVUFBPUlQKKwkJCXNlbmRfYXBfc3RhdHVzX3RvX2NhcChJTl9XSUZJX0FQX0lOREVYX01BWCwgSU5fV0lGSV9BUF9TVEFUVVNfRVJST1IpOworCQkjZW5kaWYKIAkJfQogCiAJfWVsc2V7CkBAIC0yMTM4LDcgKzIxNzgsMTUgQEAKIAlpbnQgaSA9IDE7CiAJaW50IGZpbmRfd2xhbiA9IC0xOwogCWNoYXIgKnJlcGx5ID0gTlVMTDsKLQlhcF9zdnItPmRydl9wcm94eS5kcnZfaW5pdCgmYXBfc3ZyLT5kcnZfcHJveHkpOworCS8qIFN0YXJ0ZWQgYnkgQUlDb2RlciwgcGlkOmxkN2NmZzBjYzBzNDBkZjE0OWI5MDgzMDkwYjZmMDEzMzBlM2FlNDkgKi8KKwlpbnQgcmV0ID0gMDsKKwkKKwlyZXQgPSBhcF9zdnItPmRydl9wcm94eS5kcnZfaW5pdCgmYXBfc3ZyLT5kcnZfcHJveHkpOworCWlmKC0xID09IHJldCkgeworCQl3Zl9sb2cgKCJkcnZfaW5pdCBmYWlsISIpOworCQlyZXR1cm4gLTE7CisJfQorCS8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDpsZDdjZmcwY2MwczQwZGYxNDliOTA4MzA5MGI2ZjAxMzMwZTNhZTQ5ICovCiAJZm9yIChpID0gMTsgaSA8PSAxMDsgaSsrKSB7CiAJCXdmX2xvZyAoImlmY29uZmlnIHdsYW4gaT0lZCIsIGkpOwogCQlmaW5kX3dsYW4gPSB3ZnN5c3RlbSAoImlmY29uZmlnIHdsYW4wIik7CkBAIC0yMTQ3LDcgKzIxOTUsNyBAQAogCQkJCXdmX2xvZyAoImRydl9pbml0IGZhaWxlZCEhIik7CiAJCQkJcmV0dXJuIC0xOwogCQkJfSBlbHNlIHsKLQkJCQl1c2xlZXAgKDIwMDAwMCAqIGkpOworCQkJCXVzbGVlcCAoMjAwMDAwKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAtMjE2OSwyMSArMjIxNywyMiBAQAogCXJldHVybiAwOwogfQogCi0vL3dhaXQgbWF4IDEwcyBmb3IgYWNzIHNjYW4gZmluaXNoCisvL3dhaXQgbWF4IDhzIGZvciBhY3Mgc2NhbiBmaW5pc2gKKy8qIFN0YXJ0ZWQgYnkgQUlDb2RlciwgcGlkOmhlOThmb2I3MTQ2Yjk3MzE0MjUxMDhmYzIwOWUxYTFiNjY0MjVmMmMgKi8KIHN0YXRpYyB2b2lkIHdhaXRfYXBfZW5hYmxlZCh2b2lkKQogewogCWludCBpID0gMDsKLQlmb3IgKGkgPSAxOyBpIDw9IDUwOyBpKyspIHsKKwlmb3IgKGkgPSAxOyBpIDw9IDQwOyBpKyspIHsKIAkJaWYgKGdfYXBfZW5hYmxlZCA9PSAwKSB7CiAJCQl1c2xlZXAoMjAwMDAwKTsKIAkJfSBlbHNlIHsKLQkJCXVzbGVlcCgxMDAwMDApOworCQkJLy91c2xlZXAoMTAwMDAwKTsKIAkJCWJyZWFrOwogCQl9CiAJfQogCiB9Ci0KKy8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDpoZTk4Zm9iNzE0NmI5NzMxNDI1MTA4ZmMyMDllMWExYjY2NDI1ZjJjICovCiAKICB2b2lkICpob3N0YXBfbG9vcCAodm9pZCAqcGFyYW0pCiB7CQpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dpZmlfc29ja2V0LmMgYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9zb2NrZXQuYwppbmRleCBkNjk3Njc2Li5mNWZhMmE4IDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9zb2NrZXQuYworKysgYi9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9zb2NrZXQuYwpAQCAtNjUsNyArNjUsNyBAQAogCQlpZiAoc2t0LT5jdHJsX2Nvbm4gPT0gTlVMTCkgewogCQkJaWYoaTw1MCl7CiAJCQkJd2ZfbG9nICgid3BhX2N0cmxfb3BlbiBjdHJsX2Nvbm4gdGltZXM9ICVkIiwgaSk7Ci0JCQkJdXNsZWVwKDUwMDAwMCk7CisJCQkJdXNsZWVwKDEwMDAwMCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCQl3Zl9sb2cgKCJVbmFibGUgdG8gb3BlbiBjb25uZWN0aW9uIHRvIGhvc3RhcGQgb24gXCIlc1wiOiAlcyBcbiIsCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9zdGFfY3RybC5jIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dpZmlfc3RhX2N0cmwuYwppbmRleCA4NjAzY2IwLi4wMjhiOWRmIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2lmaV9zdGFfY3RybC5jCisrKyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93aWZpX3N0YV9jdHJsLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogaW50IHdpZmlfc3RhcnRfc3VwcGxpY2FudCAoc3RydWN0ICB3bGFuX3N0YV9tYW5hZ2VyICpzdGFfY3RybCkNCiB7DQogDQotCWludCBjb3VudCA9IDIwMDsgLyogd2FpdCBhdCBtb3N0IDIwIHNlY29uZHMgZm9yIGNvbXBsZXRpb24gKi8NCisJaW50IGNvdW50ID0gNTA7IC8qIHdhaXQgYXQgbW9zdCA1IHNlY29uZHMgZm9yIGNvbXBsZXRpb24gKi8NCiAJY2hhciAJd2lmaV9yb290X2RpclszMl0gPSB7MH07DQogCWNoYXIgKmJ1ZiA9IE5VTEw7DQogCWludCByZXQgPSAtMTsNCkBAIC0xNjEsNyArMTYxLDcgQEAKIA0KIAl3aGlsZSAoY291bnQtLSA+IDApIHsNCiAJCWlmIChhY2Nlc3MoV1BBX1BJRF9GSUxFLCBGX09LKSA9PSAwKXsNCi0JCQl1c2xlZXAgKDEwMDAwMCk7DQorCQkJLy91c2xlZXAgKDEwMDAwMCk7DQogCQkJc3RhX2N0cmwtPnNvY2sucGlkID0gcmVhZF93cGFfcGlkKCk7DQogCQkJaWYoc3RhX2N0cmwtPnNvY2sucGlkID09IDApIHsNCiAJCQkJdXNsZWVwICgxMDAwMDApOw0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuLXN0YXRpb24uYyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuLXN0YXRpb24uYwppbmRleCA1NDA3MGUzLi5hMTJkYjUxIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbi1zdGF0aW9uLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW4tc3RhdGlvbi5jCkBAIC0yNzIwLDYgKzI3MjAsMzIgQEAKIA0KIH0NCiANCisvKiBTdGFydGVkIGJ5IEFJQ29kZXIsIHBpZDoxN2MwNWFiMjYzMWJhNTUxNDg0NjA4YTBmMDkzZjExZGUzYzUxNjVlICovDQordm9pZCBjYXBfY2xvc2Vfc3RhdGlvbih2b2lkKQ0KK3sNCisJZ19jYXBfc3RhX2VuYWJsZSA9IDA7DQorCXNlbmRfc3RhX3N0YXR1c190b19jYXAoSU5fV0lGSV9TVEFfU1RBVFVTX05PTkUsIElOX1dJRklfUkVBU09OX0NPREVfTk9ORSk7DQorCS8vc2NfY2ZnX3NldCgid2lmaV9zdGFfY29ubmVjdGlvbiIsICIwIik7DQorDQorCWlmICgwID09IGdfd3BhX3N1cHBsaWNhbnQpIHsNCisJCXdmX2xvZygic3RhdGlvbiBoYXMgY2xvc2VkIik7DQorCQlyZXR1cm47DQorCX0NCisJLy9NU0dfQ01EX1dJRklfU1RBVElPTl9DTE9TRTsNCisJc3RhX2Rpc2Nvbm5lY3RlZCgpOw0KKwl3bGFuX3N0YXRpb25fZGVpbml0KCk7DQorCWlmIChnX3dvcmtfbW9kZSA9PSBJTl9XSUZJX1dPUktfTU9ERV9BUDAgfHwgZ193b3JrX21vZGUgPT0gSU5fV0lGSV9XT1JLX01PREVfQVAxKSB7DQorCQkvL25vIG1zc2lkLCBub3QgbmVlZA0KKwkJLy9iYXNpY19kZWFsX2FsbCAoV0lGSV9DRkdfUkVTVEFSVF9BUCk7DQorCX0NCisJZWxzZSB7DQorCQlzY19jZmdfc2V0ICgid2lmaV9jdXJfc3RhdGUiLCBXSUZJX0NMT1NFRCk7DQorCX0NCisNCit9DQorLyogRW5kZWQgYnkgQUlDb2RlciwgcGlkOjE3YzA1YWIyNjMxYmE1NTE0ODQ2MDhhMGYwOTNmMTFkZTNjNTE2NWUgKi8NCisNCisvKiBTdGFydGVkIGJ5IEFJQ29kZXIsIHBpZDppZmU3YTYwNDg1czUzMGExNDk5MzA5MDczMDhjOGIxYjkwOTk3NTlmICovDQogc3RhdGljIHZvaWQgY2FwX3N0YXRpb25fZW5hYmxlKHdsYW5fc3RhX2VuYWJsZV90ICpzdGFfZW5hKQ0KIHsNCiAJaWYgKHN0YV9lbmEtPmVuYWJsZSA9PSAxKSB7DQpAQCAtMjczNSwyOCArMjc2MSwxNyBAQAogCQl9DQogCQllbHNlIHsNCiAJCQl3Zl9sb2coIi1NU0dfQ01EX1dJRklfU1RBVElPTl9PUEVOLSIpOw0KKwkJCXNjX2NmZ19zZXQgKCJ3aWZpX2N1cl9zdGF0ZSIsIFdJRklfT1BFTkVEKTsNCiAJCQl3bGFuX3N0YXRpb25faW5pdCgpOw0KIAkJfQ0KIAl9DQogCWVsc2Ugew0KLQkJZ19jYXBfc3RhX2VuYWJsZSA9IDA7DQotCQlzZW5kX3N0YV9zdGF0dXNfdG9fY2FwKElOX1dJRklfU1RBX1NUQVRVU19OT05FLCBJTl9XSUZJX1JFQVNPTl9DT0RFX05PTkUpOw0KLQkJLy9zY19jZmdfc2V0KCJ3aWZpX3N0YV9jb25uZWN0aW9uIiwgIjAiKTsNCi0NCi0JCWlmICgwID09IGdfd3BhX3N1cHBsaWNhbnQpIHsNCi0JCQl3Zl9sb2coInN0YXRpb24gaGFzIGNsb3NlZCIpOw0KLQkJCXJldHVybjsNCi0JCX0NCi0JCS8vTVNHX0NNRF9XSUZJX1NUQVRJT05fQ0xPU0U7DQotCQlzdGFfZGlzY29ubmVjdGVkKCk7DQotCQl3bGFuX3N0YXRpb25fZGVpbml0KCk7DQotCQlpZiAoZ193b3JrX21vZGUgPT0gSU5fV0lGSV9XT1JLX01PREVfQVAwIHx8IGdfd29ya19tb2RlID09IElOX1dJRklfV09SS19NT0RFX0FQMSkgew0KLQkJCS8vbm8gbXNzaWQsIG5vdCBuZWVkDQotCQkJLy9iYXNpY19kZWFsX2FsbCAoV0lGSV9DRkdfUkVTVEFSVF9BUCk7DQotCQl9DQorCQljYXBfY2xvc2Vfc3RhdGlvbigpOw0KIAl9DQogDQogfQ0KKy8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDppZmU3YTYwNDg1czUzMGExNDk5MzA5MDczMDhjOGIxYjkwOTk3NTlmICovDQorDQogDQogc3RhdGljIGludCBnZXRfY3VyX2FwX3Jzc2kodm9pZCkNCiB7DQpAQCAtMzE2Nyw3ICszMTgyLDcgQEAKIAkJaWYgKHN0cmNtcCAoc3RhX2lwX3N0YXR1cywgImNvbm5lY3QiKSA9PSAwIHx8IHN0cmNtcCAoc3RhX2lwX3N0YXR1cywgImRoY3BpbmciKSA9PSAwKSB7DQogCQkJc3RhX2Rpc2Nvbm5lY3RlZCgpOw0KIAkJI2lmZGVmIFVTRV9DQVBfU1VQUE9SVA0KLQkJCXNlbmRfc3RhX3N0YXR1c190b19jYXAoSU5fV0lGSV9TVEFfU1RBVFVTX0lETEUsIElOX1dJRklfUkVBU09OX0NPREVfTk9ORSk7DQorCQkJc2VuZF9zdGFfc3RhdHVzX3RvX2NhcChJTl9XSUZJX1NUQV9TVEFUVVNfRElTQ09OTkVDVEVELCBJTl9XSUZJX1JFQVNPTl9DT0RFX05PTkUpOw0KIAkJI2VuZGlmDQogCQl9DQogCQllbHNlew0KZGlmZiAtLWdpdCBhL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuX21haW4uYyBiL2FwL2FwcC96dGVfY29tbS93bGFuL3NyYy93bGFuX21haW4uYwppbmRleCA0MjQ0NTFjLi4xY2ZjNWUxIDEwMDc1NQotLS0gYS9hcC9hcHAvenRlX2NvbW0vd2xhbi9zcmMvd2xhbl9tYWluLmMKKysrIGIvYXAvYXBwL3p0ZV9jb21tL3dsYW4vc3JjL3dsYW5fbWFpbi5jCkBAIC00OSw4ICs0OSwxMCBAQAogZXh0ZXJuIGludCBzZW5kX3N0YV9zdGF0dXNfdG9fY2FwKGludCBzdGF0dXMsIGludCByZWFzb24pOw0KIGV4dGVybiBpbnQgd2xhbl9kcnZfdGVzdF9pbml0KHZvaWQpOw0KIGV4dGVybiBpbnQgd2xhbl9kcnZfdGVzdF9kZWluaXQodm9pZCk7DQorZXh0ZXJuIHZvaWQgY2FwX2Nsb3NlX3N0YXRpb24odm9pZCk7DQogZXh0ZXJuIGludCB3aWZpX2dldF9hcF9tYWModm9pZCk7DQogDQorDQogaW50IHNlbmRfYXBfc3RhdHVzX3RvX2NhcChpbnQgaWR4LCBpbnQgc3RhdHVzKTsNCiBpbnQgc2VuZF9zdGFfY2hhbmdlX3RvX2NhcChpbnQgaWR4LCBpbnQgc3RhdHVzLCBjaGFyICptYWMpOw0KICNlbmRpZg0KQEAgLTg2OCw5ICs4NzAsOSBAQAogDQogCS8vaWYgKHZhMCkgc3RhdGlvbl9tYWMwDQogCS8vb2xksrvU2m5ld9bQILbPv6oNCi0JY2hla2Nfc3RhX2NoYW5nZShJTl9XSUZJX0FQX0lOREVYX0FQMCwgc3RhX21hY19vbGQsIHN0YV9tYWNfbmV3LCAwKTsNCisJY2hla2Nfc3RhX2NoYW5nZShJTl9XSUZJX0FQX0lOREVYX01BWCwgc3RhX21hY19vbGQsIHN0YV9tYWNfbmV3LCAwKTsNCiAJLy9uZXeyu9Tab2xk1tAgvdPI6w0KLQljaGVrY19zdGFfY2hhbmdlKElOX1dJRklfQVBfSU5ERVhfQVAwLCBzdGFfbWFjX25ldywgc3RhX21hY19vbGQsIDEpOw0KKwljaGVrY19zdGFfY2hhbmdlKElOX1dJRklfQVBfSU5ERVhfTUFYLCBzdGFfbWFjX25ldywgc3RhX21hY19vbGQsIDEpOw0KIA0KIAkvL2lmICh2YTEpIHN0YXRpb25fbWFjMQ0KIA0KQEAgLTk2Miw3ICs5NjQsMTYgQEAKIHsJCQ0KIAl3bGFuX3N0YV9jb25uZWN0X3N0YXR1c190IHdfc3RhdCA9IHswfTsNCiAJaW50IHJldCA9IDA7DQotDQorCS8qIFN0YXJ0ZWQgYnkgQUlDb2RlciwgcGlkOmFiYjQxdDBlYmNnM2U0YzE0YmI1MGJiNjQwODI4ZDFiZWQxNWY0NGYgKi8NCisJaWYgKGlkeCA9PSBJTl9XSUZJX0FQX0lOREVYX01BWCkgew0KKwkJaWYgKGdfd29ya19tb2RlID09IElOX1dJRklfV09SS19NT0RFX0FQMSkgew0KKwkJCWlkeCA9IElOX1dJRklfQVBfSU5ERVhfQVAxOw0KKwkJfQ0KKwkJZWxzZSB7DQorCQkJaWR4ID0gSU5fV0lGSV9BUF9JTkRFWF9BUDA7DQorCQl9DQorCX0NCisJLyogRW5kZWQgYnkgQUlDb2RlciwgcGlkOmFiYjQxdDBlYmNnM2U0YzE0YmI1MGJiNjQwODI4ZDFiZWQxNWY0NGYgKi8NCiAJaWYgKGlkeCA8PSBJTl9XSUZJX0FQX0lOREVYX01JTiB8fCBpZHggPj0gSU5fV0lGSV9BUF9JTkRFWF9NQVgpIHsNCiAJCXdmX2xvZygiaWR4OiVkIG5vdCBzdXBwb3J0XG4iLCBpZHgpOw0KIAkJcmV0dXJuIC0xOw0KQEAgLTEwMTAsNyArMTAyMSw4IEBACiAJCXdmX2xvZyAoImF0IGNtZCBuZWVkIHJzcCEiKTsNCiAJCXJldHVybiAwOw0KIAl9DQotLyogRW5kZWQgYnkgQUlDb2RlciwgcGlkOmcwZmIwcmI5MzJ6MzU3MTE0NjlhMGI2MzIwZjUxMTA0OTBlNjg4YTYgKi8NCisNCisNCiAjaWYgIShkZWZpbmVkKENPTkZJR19XSUZJX0VGVVNFX01BQykpDQogCXNjX2NmZ19nZXQoIndpZmlfbWFjIiwgd2lmaV9tYWMsIHNpemVvZih3aWZpX21hYykpOw0KIAlpZihzdHJsZW4od2lmaV9tYWMpID09IDApew0KQEAgLTEwMTksNiArMTAzMSw4IEBACiAJCXJldHVybiAtMTsNCiAJfQ0KICNlbmRpZg0KKy8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDpnMGZiMHJiOTMyejM1NzExNDY5YTBiNjMyMGY1MTEwNDkwZTY4OGE2ICovDQorDQogCXJldHVybiAwOw0KIH0NCiANCkBAIC0xMDgzLDcgKzEwOTcsNyBAQAogCX0NCiANCiAJaWYgKHN0cmNtcCAod2lmaV9zdGFfY29ubmVjdGlvbiwgIjEiKSA9PSAwKSB7DQotCQlzZW5kX3N0YV9zdGF0dXNfdG9fY2FwKElOX1dJRklfU1RBX1NUQVRVU19OT05FLCBJTl9XSUZJX1JFQVNPTl9DT0RFX05PTkUpOw0KKwkJY2FwX2Nsb3NlX3N0YXRpb24oKTsNCiAJCXNjX2NmZ19zZXQoIndpZmlfc3RhX2Nvbm5lY3Rpb24iLCAiMCIpOw0KIAl9DQogDQpAQCAtMTY0NCw3ICsxNjU4LDcgQEAKIAkJYnJlYWs7DQogCWNhc2UgTVNHX0NNRF9XSUZJX0ZPUkNFX1JFU1RBUlQ6Ly8gYnJvYWRjb20gLHJlYWx0ZWsgbmVlZCwgZm9ybSBuZXRsaW5rIG1zZw0KICNpZmRlZiBVU0VfQ0FQX1NVUFBPUlQNCi0JCXNlbmRfd2xhbl9zdGF0dXNfdG9fY2FwKElOX1dJRklfU1RBVFVTX0ZJUk1XQVJFX0NSQVNIKTsNCisJCS8vc2VuZF93bGFuX3N0YXR1c190b19jYXAoSU5fV0lGSV9TVEFUVVNfRklSTVdBUkVfQ1JBU0gpOw0KICNlbmRpZg0KIAkJLy/U2iB3aWZpIGZpcm13YXJlIGNyYXNouvO1xNbYxvTB97PMo6yyu9TK0O13ZWJ1abeiy83P+8+iz8LAtKOsy/nS1L2rUmFkaW9PZmbWwzANCiAJCS8vc2NfY2ZnX3NldCgid2lmaV9jdXJfc3RhdGUiLCBXSUZJX0NMT1NFRCk7DQpAQCAtMTY4NCw3ICsxNjk4LDcgQEAKIAkJYWRkX3N0YV9tYWMocE1zZy0+YXVjRGF0YUJ1Zik7DQogI2lmZGVmIFVTRV9DQVBfU1VQUE9SVA0KIAkJLy/I57n7uLFzc2lk0rLSqiy4sXNzaWS1xE1TR19DTURfQVBfU1RBX0NPTk5FQ1RFRLu70ru49s/7z6LD+w0KLQkJc2VuZF9zdGFfY2hhbmdlX3RvX2NhcChJTl9XSUZJX0FQX0lOREVYX0FQMCwgMSwgcE1zZy0+YXVjRGF0YUJ1Zik7DQorCQlzZW5kX3N0YV9jaGFuZ2VfdG9fY2FwKElOX1dJRklfQVBfSU5ERVhfTUFYLCAxLCBwTXNnLT5hdWNEYXRhQnVmKTsNCiAjZW5kaWYNCiAJCWJyZWFrOw0KIAljYXNlIE1TR19DTURfQVBfU1RBX0RJU0NPTk5FQ1RFRDoNCkBAIC0xNjkyLDcgKzE3MDYsNyBAQAogCQkvL3dsYW5fcHJlcGFyZV9zbGVlcCgpOw0KICNpZmRlZiBVU0VfQ0FQX1NVUFBPUlQNCiAJCS8vyOe5+7ixc3NpZNKy0qosuLFzc2lktcRNU0dfQ01EX0FQX1NUQV9DT05ORUNURUS7u9K7uPbP+8+iw/sNCi0JCXNlbmRfc3RhX2NoYW5nZV90b19jYXAoSU5fV0lGSV9BUF9JTkRFWF9BUDAsIDAsIHBNc2ctPmF1Y0RhdGFCdWYpOw0KKwkJc2VuZF9zdGFfY2hhbmdlX3RvX2NhcChJTl9XSUZJX0FQX0lOREVYX01BWCwgMCwgcE1zZy0+YXVjRGF0YUJ1Zik7DQogI2VuZGlmDQogCQlicmVhazsNCiANCmRpZmYgLS1naXQgYS9hcC9hcHAvenRlX2NvbW0venRlX21haW5jdHJsL25ldGRldl9wcm9jLmMgYi9hcC9hcHAvenRlX2NvbW0venRlX21haW5jdHJsL25ldGRldl9wcm9jLmMKaW5kZXggMzY3Mjk4Zi4uN2RhYmY2NCAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3p0ZV9tYWluY3RybC9uZXRkZXZfcHJvYy5jCisrKyBiL2FwL2FwcC96dGVfY29tbS96dGVfbWFpbmN0cmwvbmV0ZGV2X3Byb2MuYwpAQCAtNzIyLDYgKzcyMiw3IEBACiAJY2hhciBtdHVbMTZdID0gezB9OwogCWNoYXIgeGxhdF9lbmFibGVbNF0gPSB7MH07CiAJY2hhciByYV9tdHVfZW5hYmxlWzRdID0gezB9OworCWNoYXIgd2FuX25tW0lQVjRBRERMRU5fTUFYXSA9IHswfTsKIAkKIAlzY19jZmdfZ2V0KCJ0Y19lbmFibGUiLCB0Y19lbmFibGUsIHNpemVvZih0Y19lbmFibGUpKTsKIAlzbnByaW50Zih3YW5fbmFtZSxOVl9OQU1FX0xFTiwJIiVzJWQiLCBwc193YW4sIGFjdGluZm8tPmNfaWQpOwpAQCAtNzQ3LDcgKzc0OCwxMCBAQAogCQlzY19jZmdfc2V0KGJ1ZmZlciwgYWN0aW5mby0+YWN0X2luZm8ucHJpX2Rucyk7CiAJCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlc19zZWNkbnMiLCB3YW5fbmFtZSk7CiAJCXNjX2NmZ19zZXQoYnVmZmVyLCBhY3RpbmZvLT5hY3RfaW5mby5zZWNfZG5zKTsKLQkJc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgImlmY29uZmlnICVzICVzIG5ldG1hc2sgMjU1LjI1NS4yNTUuMCIsIHdhbl9uYW1lLCBhY3RpbmZvLT5hY3RfaW5mby5pcCk7CisJCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJpZmNvbmZpZyAlcyAlcyIsIHdhbl9uYW1lLCBhY3RpbmZvLT5hY3RfaW5mby5pcCk7CisJCXN5c3RlbV9jbWRfZXgoYnVmZmVyKTsKKwkJc2NfY2ZnX2dldCgic3RhdGljX3dhbl9uZXRtYXNrIiwgd2FuX25tLCBzaXplb2Yod2FuX25tKSk7CisJCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJpZmNvbmZpZyAlcyBuZXRtYXNrICVzIiwgd2FuX25hbWUsIHdhbl9ubSk7CiAJCXN5c3RlbV9jbWRfZXgoYnVmZmVyKTsKIAl9CiAJLy9pZmNvbmZpZyB1cApAQCAtODcxLDI0ICs4NzUsMTYgQEAKIAkJewogCQkJY2hhciBuYXRfZW5hYmxlWzRdID0gezB9OwogCQkJCi0JCQlpbnQgcm5kaXNfaXBfbWFwID0gIXN5c3RlbSgiY2F0IC9zeXMvY2xhc3MvbHlucV9udl9jZmcvY2Rldl9seW5xX252X2NmZy9ybmRpc19pcF9tYXAgfCBncmVwIDEiKTsKIAkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC1QIElOUFVUIEFDQ0VQVCIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLVAgT1VUUFVUIEFDQ0VQVCIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLVAgRk9SV0FSRCBBQ0NFUFQiKTsKLQkJCWlmIChybmRpc19pcF9tYXAgPT0gMCkKLQkJCQlzeXN0ZW1fY21kX2V4KCJpcHRhYmxlcyAtdCBuYXQgLUYiKTsKKwkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC10IG5hdCAtRiIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1YIHBvcnRfZm9yd2FyZCIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1YIERNWiIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1YIHBvcnRfbWFwcGluZyIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1OIHBvcnRfZm9yd2FyZCIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1OIERNWiIpOwogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1OIHBvcnRfbWFwcGluZyIpOwotCQkJaWYgKHJuZGlzX2lwX21hcCA9PSAxKQotCQkJewotCQkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC10IG5hdCAtRCBQUkVST1VUSU5HIC1qIHBvcnRfZm9yd2FyZCIpOwotCQkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC10IG5hdCAtRCBQUkVST1VUSU5HIC1qIERNWiIpOwotCQkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC10IG5hdCAtRCBQUkVST1VUSU5HIC1qIHBvcnRfbWFwcGluZyIpOwotCQkJfQogCQkJc3lzdGVtX2NtZF9leCgiaXB0YWJsZXMgLXQgbmF0IC1JIFBSRVJPVVRJTkcgMSAtaiBwb3J0X2ZvcndhcmQiKTsKIAkJCXN5c3RlbV9jbWRfZXgoImlwdGFibGVzIC10IG5hdCAtSSBQUkVST1VUSU5HIDEgLWogRE1aIik7CiAJCQlzeXN0ZW1fY21kX2V4KCJpcHRhYmxlcyAtdCBuYXQgLUkgUFJFUk9VVElORyAxIC1qIHBvcnRfbWFwcGluZyIpOwpkaWZmIC0tZ2l0IGEvYXAvYXBwL3p0ZV9jb21tL3p0ZV9tYWluY3RybC96dGVfbWFpbmN0cmwuYyBiL2FwL2FwcC96dGVfY29tbS96dGVfbWFpbmN0cmwvenRlX21haW5jdHJsLmMKaW5kZXggYjgyNTViOS4uMDVmYjE0NiAxMDA3NTUKLS0tIGEvYXAvYXBwL3p0ZV9jb21tL3p0ZV9tYWluY3RybC96dGVfbWFpbmN0cmwuYworKysgYi9hcC9hcHAvenRlX2NvbW0venRlX21haW5jdHJsL3p0ZV9tYWluY3RybC5jCkBAIC01LDYgKzUsOCBAQAogI2luY2x1ZGUgInJ0Y190aW1lci5oIgogI2luY2x1ZGUgInp0ZV9tYWluY3RybC5oIgogI2luY2x1ZGUgImxpYmNwbnYuaCIKKyNpbmNsdWRlICJwdWJfZGVidWdfaW5mby5oIgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsIFZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNzM2LDcgKzczOCwxMCBAQAogCXNjX2NmZ19nZXQoInRpbWVfdG9fMjAwMF93aGVuX3Jlc3RvcmUiLCB0aW1lX3RvXzIwMDAsIDE2KTsKIAlpZiAoc3RyY21wKHRpbWVfdG9fMjAwMCwgInllcyIpID09IDApIHsKICAgICAgICAgc3lzdGVtKCJybSAtcmYgL2V0Y19ydy9UWiIpOworCQlzeXN0ZW0oInJtIC1yZiAvbW50L3VzZXJkYXRhL2V0Y19ydy9sb2NhbHRpbWUiKTsKKwkJc3lzdGVtKCJsbiAtc25mIC91c3Ivc2hhcmUvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSAvbW50L3VzZXJkYXRhL2V0Y19ydy9sb2NhbHRpbWUiKTsKIAkJc3lzdGVtKCJkYXRlIC1zIFwiMjAwMC0wMS0wMSAwMDowMDowMFwiIik7CisJCXNjX2RlYnVnX2luZm9fcmVjb3JkKCJaVEUtTUFJTkNUUkwiLCAicmVzZXQgc3lzdGVtIHRpbWUhXG4iKTsKIAkJc3lzdGVtKCJ6dGUtcnRjLWNsb2NrIik7CiAJfQogCg==