ZGlmZiAtLWdpdCBhL3NyYy9lZGl0LmMgYi9zcmMvZWRpdC5jCmluZGV4IGViZmU3ZmQuLmM5MTE3MDIgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0LmMKKysrIGIvc3JjL2VkaXQuYwpAQCAtNDk4NSw2ICs0OTg1LDE1IEBACiAgICAgfQogfQogCisjaWYgZGVmaW5lZChFWElURlJFRSkgfHwgZGVmaW5lZChQUk9UTykKKyAgICB2b2lkCitmcmVlX2xhc3RfaW5zZXJ0KCkKK3sKKyAgICB2aW1fZnJlZShsYXN0X2luc2VydCk7CisgICAgbGFzdF9pbnNlcnQgPSBOVUxMOworfQorI2VuZGlmCisKIC8qCiAgKiBBZGQgY2hhcmFjdGVyICJjIiB0byBidWZmZXIgInMiLiAgRXNjYXBlIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgS19TUEVDSUFMCiAgKiBhbmQgQ1NJLiAgSGFuZGxlIG11bHRpLWJ5dGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IGRjMzg5MzYuLmYzZTMxZTIgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMjU4OCw3ICsyNTg4LDEwIEBACiAJewogCSAgICBsID0gdHYudnZhbC52X2xpc3Q7CiAJICAgIGlmICh0di52X3R5cGUgIT0gVkFSX0xJU1QgfHwgbCA9PSBOVUxMKQorCSAgICB7CiAJCUVNU0coXyhlX2xpc3RyZXEpKTsKKwkJY2xlYXJfdHYoJnR2KTsKKwkgICAgfQogCSAgICBlbHNlCiAJICAgIHsKIAkJZmktPmZpX2xpc3QgPSBsOwpAQCAtMjY0MCw3ICsyNjQzLDEwIEBACiAgICAgZm9yaW5mb19UICAgICpmaSA9IChmb3JpbmZvX1QgKilmaV92b2lkOwogCiAgICAgaWYgKGZpICE9IE5VTEwgJiYgZmktPmZpX2xpc3QgIT0gTlVMTCkKKyAgICB7CiAJbGlzdF9yZW1fd2F0Y2goZmktPmZpX2xpc3QsICZmaS0+ZmlfbHcpOworCWxpc3RfdW5yZWYoZmktPmZpX2xpc3QpOworICAgIH0KICAgICB2aW1fZnJlZShmaSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9leF9jbWRzLmMgYi9zcmMvZXhfY21kcy5jCmluZGV4IDgzNDYxNDUuLjlkYWE4ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9leF9jbWRzLmMKKysrIGIvc3JjL2V4X2NtZHMuYwpAQCAtNzg5LDYgKzc4OSwxNiBAQAogICAgIG1zZ21vcmUoKGxvbmcpY291bnQpOwogfQogCitzdGF0aWMgY2hhcl91CSpwcmV2Y21kID0gTlVMTDsJLyogdGhlIHByZXZpb3VzIGNvbW1hbmQgKi8KKworI2lmIGRlZmluZWQoRVhJVEZSRUUpIHx8IGRlZmluZWQoUFJPVE8pCisgICAgdm9pZAorZnJlZV9wcmV2X3NoZWxsY21kKCkKK3sKKyAgICB2aW1fZnJlZShwcmV2Y21kKTsKK30KKyNlbmRpZgorCiAvKgogICogSGFuZGxlIHRoZSAiOiFjbWQiIGNvbW1hbmQuCUFsc28gZm9yICI6ciAhY21kIiBhbmQgIjp3ICFjbWQiCiAgKiBCYW5ncyBpbiB0aGUgYXJndW1lbnQgYXJlIHJlcGxhY2VkIHdpdGggdGhlIHByZXZpb3VzbHkgZW50ZXJlZCBjb21tYW5kLgpAQCAtODA3LDcgKzgxNyw2IEBACiAgICAgY2hhcl91CQkqYXJnID0gZWFwLT5hcmc7CS8qIGNvbW1hbmQgKi8KICAgICBsaW5lbnJfVAkJbGluZTEgPSBlYXAtPmxpbmUxOwkvKiBzdGFydCBvZiByYW5nZSAqLwogICAgIGxpbmVucl9UCQlsaW5lMiA9IGVhcC0+bGluZTI7CS8qIGVuZCBvZiByYW5nZSAqLwotICAgIHN0YXRpYyBjaGFyX3UJKnByZXZjbWQgPSBOVUxMOwkvKiB0aGUgcHJldmlvdXMgY29tbWFuZCAqLwogICAgIGNoYXJfdQkJKm5ld2NtZCA9IE5VTEw7CQkvKiB0aGUgbmV3IGNvbW1hbmQgKi8KICAgICBpbnQJCQlmcmVlX25ld2NtZCA9IEZBTFNFOyAgICAvKiBuZWVkIHRvIGZyZWUoKSBuZXdjbWQgKi8KICAgICBpbnQJCQlpbnNfcHJldmNtZDsKQEAgLTUwMDEsNiArNTAxMCwxNCBAQAogfQogI2VuZGlmIC8qIEZFQVRfVklNSU5GTyAqLwogCisjaWYgZGVmaW5lZChFWElURlJFRSkgfHwgZGVmaW5lZChQUk9UTykKKyAgICB2b2lkCitmcmVlX29sZF9zdWIoKQoreworICAgIHZpbV9mcmVlKG9sZF9zdWIpOworfQorI2VuZGlmCisKICNpZiAoZGVmaW5lZChGRUFUX1dJTkRPV1MpICYmIGRlZmluZWQoRkVBVF9RVUlDS0ZJWCkpIHx8IGRlZmluZWQoUFJPVE8pCiAvKgogICogU2V0IHVwIGZvciBhIHRhZ3ByZXZpZXcuCmRpZmYgLS1naXQgYS9zcmMvZXhfY21kczIuYyBiL3NyYy9leF9jbWRzMi5jCmluZGV4IGI4NmU0ODEuLjQ1YmQyZWUgMTAwNjQ0Ci0tLSBhL3NyYy9leF9jbWRzMi5jCisrKyBiL3NyYy9leF9jbWRzMi5jCkBAIC02MDAsNiArNjAwLDcgQEAKICAgICBzdHJ1Y3QgZGVidWdneSAqYnAsICpicGk7CiAgICAgaW50CQlucjsKICAgICBpbnQJCXRvZGVsID0gLTE7CisgICAgaW50CQlkZWxfYWxsID0gRkFMU0U7CiAgICAgaW50CQlpOwogICAgIGxpbmVucl9UCWJlc3RfbG51bSA9IDA7CiAKQEAgLTYxNCw2ICs2MTUsMTEgQEAKIAkJYnJlYWs7CiAJICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoKmVhcC0+YXJnID09ICcqJykKKyAgICB7CisJdG9kZWwgPSAwOworCWRlbF9hbGwgPSBUUlVFOworICAgIH0KICAgICBlbHNlCiAgICAgewogCS8qICI6YnJlYWtkZWwge2Z1bmN8ZmlsZX0gW2xudW1dIHtuYW1lfSIgKi8KQEAgLTY0MCwxNSArNjQ2LDE4IEBACiAgICAgaWYgKHRvZGVsIDwgMCkKIAlFTVNHMihfKCJFMTYxOiBCcmVha3BvaW50IG5vdCBmb3VuZDogJXMiKSwgZWFwLT5hcmcpOwogICAgIGVsc2UKLSAgICB7Ci0JdmltX2ZyZWUoQlJFQUtQKHRvZGVsKS5kYmdfbmFtZSk7Ci0JdmltX2ZyZWUoQlJFQUtQKHRvZGVsKS5kYmdfcHJvZyk7Ci0JLS1kYmdfYnJlYWtwLmdhX2xlbjsKLQlpZiAodG9kZWwgPCBkYmdfYnJlYWtwLmdhX2xlbikKLQkgICAgbWNoX21lbW1vdmUoJkJSRUFLUCh0b2RlbCksICZCUkVBS1AodG9kZWwgKyAxKSwKLQkJICAgIChkYmdfYnJlYWtwLmdhX2xlbiAtIHRvZGVsKSAqIHNpemVvZihzdHJ1Y3QgZGVidWdneSkpOwotCSsrZGVidWdfdGljazsKLSAgICB9CisJd2hpbGUgKGRiZ19icmVha3AuZ2FfbGVuID4gMCkKKwl7CisJICAgIHZpbV9mcmVlKEJSRUFLUCh0b2RlbCkuZGJnX25hbWUpOworCSAgICB2aW1fZnJlZShCUkVBS1AodG9kZWwpLmRiZ19wcm9nKTsKKwkgICAgLS1kYmdfYnJlYWtwLmdhX2xlbjsKKwkgICAgaWYgKHRvZGVsIDwgZGJnX2JyZWFrcC5nYV9sZW4pCisJCW1jaF9tZW1tb3ZlKCZCUkVBS1AodG9kZWwpLCAmQlJFQUtQKHRvZGVsICsgMSksCisJCQkoZGJnX2JyZWFrcC5nYV9sZW4gLSB0b2RlbCkgKiBzaXplb2Yoc3RydWN0IGRlYnVnZ3kpKTsKKwkgICAgKytkZWJ1Z190aWNrOworCSAgICBpZiAoIWRlbF9hbGwpCisJCWJyZWFrOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9leF9ldmFsLmMgYi9zcmMvZXhfZXZhbC5jCmluZGV4IDQ4NTcyMWIuLmVhYTVkZWMgMTAwNjQ0Ci0tLSBhL3NyYy9leF9ldmFsLmMKKysrIGIvc3JjL2V4X2V2YWwuYwpAQCAtOTE3LDggKzkxNyw4IEBACiAJICogRG9pbmcgdGhpcyBoZXJlIHByZXZlbnRzIGFuIGV4Y2VwdGlvbiBmb3IgYSBwYXJzaW5nIGVycm9yIGJlaW5nCiAJICogZGlzY2FyZGVkIGJ5IHRocm93aW5nIHRoZSBpbnRlcnJ1cHQgZXhjZXB0aW9uIGxhdGVyIG9uLgogCSAqLwotCWlmICghKGVhcC0+Y3N0YWNrLT5jc19mbGFnc1tlYXAtPmNzdGFjay0+Y3NfaWR4XSAmIENTRl9UUlVFKSAmJgotCQlkYmdfY2hlY2tfc2tpcHBlZChlYXApKQorCWlmICghKGVhcC0+Y3N0YWNrLT5jc19mbGFnc1tlYXAtPmNzdGFjay0+Y3NfaWR4XSAmIENTRl9UUlVFKQorCQkJCQkJICAgICYmIGRiZ19jaGVja19za2lwcGVkKGVhcCkpCiAJICAgICh2b2lkKWRvX2ludHRocm93KGVhcC0+Y3N0YWNrKTsKIAogCS0tZWFwLT5jc3RhY2stPmNzX2lkeDsKQEAgLTIxMDgsOCArMjEwOCw3IEBACiAJICAgICAqICI6cmV0dXJuIiwgb3IgIjpmaW5pc2giIGJlZm9yZSB0aGUgZmluYWxseSBjbGF1c2UuICBXZSBtdXN0IG5vdAogCSAgICAgKiBkaXNjYXJkIGl0LCB1bmxlc3MgYW4gZXJyb3Igb3IgaW50ZXJydXB0IG9jY3VycmVkIGFmdGVyd2FyZHMuCiAJICAgICAqLwotCSAgICBpZiAoZGlkX2Vtc2cgfHwgZ290X2ludCB8fAotCQkgICAgKGNzdGFjay0+Y3NfZmxhZ3NbaWR4XSAmIENTRl9GSU5BTExZKSkKKwkgICAgaWYgKGRpZF9lbXNnIHx8IGdvdF9pbnQgfHwgKGNzdGFjay0+Y3NfZmxhZ3NbaWR4XSAmIENTRl9GSU5BTExZKSkKIAkgICAgewogCQlzd2l0Y2ggKGNzdGFjay0+Y3NfcGVuZGluZ1tpZHhdKQogCQl7CkBAIC0yMTk0LDcgKzIxOTMsNyBAQAogCSAqIG1lbW9yeSB1c2VkIHRvIHN0b3JlIGl0LgogCSAqLwogCWlmICgoY3N0YWNrLT5jc19mbGFnc1tpZHhdICYgQ1NGX1RSWSkKLQkgICAgJiYgKGNzdGFjay0+Y3NfZmxhZ3NbaWR4XSAmIENTRl9TSUxFTlQpKQorCQkmJiAoY3N0YWNrLT5jc19mbGFnc1tpZHhdICYgQ1NGX1NJTEVOVCkpCiAJewogCSAgICBlc2xpc3RfVAkqZWxlbTsKIApkaWZmIC0tZ2l0IGEvc3JjL2V4X2dldGxuLmMgYi9zcmMvZXhfZ2V0bG4uYwppbmRleCA4NmRhMWFhLi5kMjIxMjQ5IDEwMDY0NAotLS0gYS9zcmMvZXhfZ2V0bG4uYworKysgYi9zcmMvZXhfZ2V0bG4uYwpAQCAtMjMwNyw2ICsyMzA3LDE4IEBACiAgICAgcmV0dXJuIE9LOwogfQogCisjaWYgZGVmaW5lZChGRUFUX0FSQUJJQykgfHwgZGVmaW5lZChQUk9UTykKK3N0YXRpYyBjaGFyX3UJKmFyc2hhcGVfYnVmID0gTlVMTDsKKworIyBpZiBkZWZpbmVkKEVYSVRGUkVFKSB8fCBkZWZpbmVkKFBST1RPKQorICAgIHZvaWQKK2ZyZWVfY21kbGluZV9idWYoKQoreworICAgIHZpbV9mcmVlKGFyc2hhcGVfYnVmKTsKK30KKyMgZW5kaWYKKyNlbmRpZgorCiAvKgogICogRHJhdyBwYXJ0IG9mIHRoZSBjbWRsaW5lIGF0IHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gIEJ1dCBkcmF3IHN0YXJzCiAgKiB3aGVuIGNtZGxpbmVfc3RhciBpcyBUUlVFLgpAQCAtMjMzMyw3ICsyMzQ1LDYgQEAKICNpZmRlZiBGRUFUX0FSQUJJQwogCWlmIChwX2Fyc2hhcGUgJiYgIXBfdGJpZGkgJiYgZW5jX3V0ZjggJiYgbGVuID4gMCkKICAgICB7Ci0Jc3RhdGljIGNoYXJfdQkqYnVmOwogCXN0YXRpYyBpbnQJYnVmbGVuID0gMDsKIAljaGFyX3UJCSpwOwogCWludAkJajsKQEAgLTIzNTQsMTAgKzIzNjUsMTAgQEAKIAl7CiAJICAgIC8qIFJlLWFsbG9jYXRlIHRoZSBidWZmZXIuICBXZSBrZWVwIGl0IGFyb3VuZCB0byBhdm9pZCBhIGxvdCBvZgogCSAgICAgKiBhbGxvYygpL2ZyZWUoKSBjYWxscy4gKi8KLQkgICAgdmltX2ZyZWUoYnVmKTsKKwkgICAgdmltX2ZyZWUoYXJzaGFwZV9idWYpOwogCSAgICBidWZsZW4gPSBsZW4gKiAyOwotCSAgICBidWYgPSBhbGxvYyhidWZsZW4pOwotCSAgICBpZiAoYnVmID09IE5VTEwpCisJICAgIGFyc2hhcGVfYnVmID0gYWxsb2MoYnVmbGVuKTsKKwkgICAgaWYgKGFyc2hhcGVfYnVmID09IE5VTEwpCiAJCXJldHVybjsJLyogb3V0IG9mIG1lbW9yeSAqLwogCX0KIApAQCAtMjM5NCwyMyArMjQwNSwyNCBAQAogCiAJCXU4YyA9IGFyYWJpY19zaGFwZSh1OGMsIE5VTEwsICZ1OGNfYzEsIHBjLCBwYzEsIG5jKTsKIAotCQluZXdsZW4gKz0gKCptYl9jaGFyMmJ5dGVzKSh1OGMsIGJ1ZiArIG5ld2xlbik7CisJCW5ld2xlbiArPSAoKm1iX2NoYXIyYnl0ZXMpKHU4YywgYXJzaGFwZV9idWYgKyBuZXdsZW4pOwogCQlpZiAodThjX2MxICE9IDApCiAJCXsKLQkJICAgIG5ld2xlbiArPSAoKm1iX2NoYXIyYnl0ZXMpKHU4Y19jMSwgYnVmICsgbmV3bGVuKTsKKwkJICAgIG5ld2xlbiArPSAoKm1iX2NoYXIyYnl0ZXMpKHU4Y19jMSwgYXJzaGFwZV9idWYgKyBuZXdsZW4pOwogCQkgICAgaWYgKHU4Y19jMiAhPSAwKQotCQkJbmV3bGVuICs9ICgqbWJfY2hhcjJieXRlcykodThjX2MyLCBidWYgKyBuZXdsZW4pOworCQkJbmV3bGVuICs9ICgqbWJfY2hhcjJieXRlcykodThjX2MyLAorCQkJCQkJCWFyc2hhcGVfYnVmICsgbmV3bGVuKTsKIAkJfQogCSAgICB9CiAJICAgIGVsc2UKIAkgICAgewogCQlwcmV2X2MgPSB1OGM7Ci0JCW1jaF9tZW1tb3ZlKGJ1ZiArIG5ld2xlbiwgcCwgbWJfbCk7CisJCW1jaF9tZW1tb3ZlKGFyc2hhcGVfYnVmICsgbmV3bGVuLCBwLCBtYl9sKTsKIAkJbmV3bGVuICs9IG1iX2w7CiAJICAgIH0KIAl9CiAKLQltc2dfb3V0dHJhbnNfbGVuKGJ1ZiwgbmV3bGVuKTsKKwltc2dfb3V0dHJhbnNfbGVuKGFyc2hhcGVfYnVmLCBuZXdsZW4pOwogICAgIH0KICAgICBlbHNlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9ndWlfZ3RrX3gxMS5jIGIvc3JjL2d1aV9ndGtfeDExLmMKaW5kZXggMzc4NThkYy4uY2QzMDYwOSAxMDA2NDQKLS0tIGEvc3JjL2d1aV9ndGtfeDExLmMKKysrIGIvc3JjL2d1aV9ndGtfeDExLmMKQEAgLTU5OCw2ICs1OTgsMTQgQEAKICAgICBndWlfYXJndltndWlfYXJnY10gPSBOVUxMOwogfQogCisjaWYgZGVmaW5lZChFWElURlJFRSkgfHwgZGVmaW5lZChQUk9UTykKKyAgICB2b2lkCitndWlfbWNoX2ZyZWVfYWxsKCkKK3sKKyAgICB2aW1fZnJlZShndWlfYXJndik7Cit9CisjZW5kaWYKKwogLyoKICAqIFRoaXMgc2hvdWxkIGJlIG1heWJlIGNvbXBsZXRlbHkgcmVtb3ZlZC4KICAqIERvZXNuJ3Qgc2VlbSBwb3NzaWJsZSwgc2luY2UgY2hlY2tfY29weV9hcmVhKCkgcmVsaWVzIG9uCmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwppbmRleCAyYmVkMTkyLi4xYjY0YzM0IDEwMDY0NAotLS0gYS9zcmMvbWFpbi5jCisrKyBiL3NyYy9tYWluLmMKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2VuZGlmCiAgICAgaW50CQluX2NvbW1hbmRzID0gMDsJCS8qIG5vLiBvZiBjb21tYW5kcyBmcm9tICsgb3IgLWMgKi8KICAgICBjaGFyX3UJKmNvbW1hbmRzW01BWF9BUkdfQ01EU107IC8qIGNvbW1hbmRzIGZyb20gKyBvciAtYyBvcHRpb24gKi8KKyAgICBjaGFyX3UJY21kc190b2ZyZWVbTUFYX0FSR19DTURTXTsgIC8qIGNvbW1hbmRzIHRoYXQgbmVlZCBmcmVlKCkgKi8KICNpZmRlZiBGRUFUX1BSRUNPTU1BTkRTCiAgICAgaW50CQlwX2NvbW1hbmRzID0gMDsJCS8qIG5vLiBvZiBjb21tYW5kcyBmcm9tIC0tY21kICovCiAgICAgY2hhcl91CSpwcmVfY29tbWFuZHNbTUFYX0FSR19DTURTXTsgLyogY29tbWFuZHMgZnJvbSAtLWNtZCBvcHRpb24gKi8KQEAgLTE5MSw2ICsxOTIsOCBAQAogICAgIFRJTUVfTVNHKCJHVUkgcHJlcGFyZWQiKTsKICNlbmRpZgogCisgICAgdmltX21lbXNldChjbWRzX3RvZnJlZSwgMCwgc2l6ZW9mKGNtZHNfdG9mcmVlKSk7CisKICAgICAvKiBJbml0IHRoZSB0YWJsZSBvZiBOb3JtYWwgbW9kZSBjb21tYW5kcy4gKi8KICAgICBpbml0X25vcm1hbF9jbWRzKCk7CiAKQEAgLTkzMCw2ICs5MzMsNyBAQAogCQkJaWYgKHAgPT0gTlVMTCkKIAkJCSAgICBtY2hfZXhpdCgyKTsKIAkJCXNwcmludGYoKGNoYXIgKilwLCAic28gJXMiLCBhKTsKKwkJCWNtZHNfdG9mcmVlW25fY29tbWFuZHNdID0gVFJVRTsKIAkJCWNvbW1hbmRzW25fY29tbWFuZHMrK10gPSBwOwogCQkgICAgfQogCQkgICAgZWxzZQpAQCAtMjAxMyw3ICsyMDE3LDExIEBACiAJY3VycmVudF9TSUQgPSBTSURfQ0FSRzsKICNlbmRpZgogCWZvciAoaSA9IDA7IGkgPCBuX2NvbW1hbmRzOyArK2kpCisJewogCSAgICBkb19jbWRsaW5lX2NtZChjb21tYW5kc1tpXSk7CisJICAgIGlmIChjbWRzX3RvZnJlZVtpXSkKKwkJdmltX2ZyZWUoY29tbWFuZHNbaV0pOworCX0KIAlzb3VyY2luZ19uYW1lID0gTlVMTDsKICNpZmRlZiBGRUFUX0VWQUwKIAljdXJyZW50X1NJRCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvbWlzYzEuYyBiL3NyYy9taXNjMS5jCmluZGV4IDMwZDc2OTYuLjg3YzBmMWEgMTAwNjQ0Ci0tLSBhL3NyYy9taXNjMS5jCisrKyBiL3NyYy9taXNjMS5jCkBAIC0zNDA2LDYgKzM0MDYsMTQgQEAKICAgICB9CiB9CiAKKyNpZiBkZWZpbmVkKEVYSVRGUkVFKSB8fCBkZWZpbmVkKFBST1RPKQorICAgIHZvaWQKK2ZyZWVfaG9tZWRpcigpCit7CisgICAgdmltX2ZyZWUoaG9tZWRpcik7Cit9CisjZW5kaWYKKwogLyoKICAqIEV4cGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHBhdGggbmFtZS4KICAqICJ+LyIgaXMgYWxzbyBleHBhbmRlZCwgdXNpbmcgJEhPTUUuCUZvciBVbml4ICJ+dXNlci8iIGlzIGV4cGFuZGVkLgpkaWZmIC0tZ2l0IGEvc3JjL21pc2MyLmMgYi9zcmMvbWlzYzIuYwppbmRleCA0ZmRiYzI3Li5mZDg4MmZmIDEwMDY0NAotLS0gYS9zcmMvbWlzYzIuYworKysgYi9zcmMvbWlzYzIuYwpAQCAtMTYsNiArMTYsMTAgQEAKICMgaW5jbHVkZSA8ZmNudGwuaD4JICAgIC8qIGZvciBjaGRpcigpICovCiAjZW5kaWYKIAorc3RhdGljIGNoYXJfdQkqdXNlcm5hbWUgPSBOVUxMOyAvKiBjYWNoZWQgcmVzdWx0IG9mIG1jaF9nZXRfdXNlcl9uYW1lKCkgKi8KKworc3RhdGljIGNoYXJfdQkqZmZfZXhwYW5kX2J1ZmZlciA9IE5VTEw7IC8qIHVzZWQgZm9yIGV4cGFuZGluZyBmaWxlbmFtZXMgKi8KKwogI2lmIGRlZmluZWQoRkVBVF9WSVJUVUFMRURJVCkgfHwgZGVmaW5lZChQUk9UTykKIHN0YXRpYyBpbnQgY29sYWR2YW5jZTIgX19BUkdTKChwb3NfVCAqcG9zLCBpbnQgYWRkc3BhY2VzLCBpbnQgZmluZXR1bmUsIGNvbG5yX1Qgd2NvbCkpOwogCkBAIC05MjIsMTUgKzkyNiwyOSBAQAogfQogCiAjaWYgZGVmaW5lZChFWElURlJFRSkgfHwgZGVmaW5lZChQUk9UTykKKworIyBpZiBkZWZpbmVkKEZFQVRfU0VBUkNIUEFUSCkKK3N0YXRpYyB2b2lkIGZyZWVfZmluZGZpbGUgX19BUkdTKCh2b2lkKSk7CisjIGVuZGlmCisKIC8qCiAgKiBGcmVlIGV2ZXJ5dGhpbmcgdGhhdCB3ZSBhbGxvY2F0ZWQuCiAgKiBDYW4gYmUgdXNlZCB0byBkZXRlY3QgbWVtb3J5IGxlYWtzLCBlLmcuLCB3aXRoIGNjbWFsbG9jLgotICogRG9lc24ndCBkbyBuZWFybHkgYWxsIHRoYXQgaXMgcmVxdWlyZWQuLi4KKyAqIE5PVEU6IFRoaXMgaXMgdHJpY2t5ISAgVGhpbmdzIGFyZSBmcmVlZCB0aGF0IGZ1bmN0aW9ucyBkZXBlbmQgb24uICBEb24ndCBiZQorICogc3VycHJpc2VkIGlmIFZpbSBjcmFzaGVzLi4uCisgKiBTb21lIHRoaW5ncyBjYW4ndCBiZSBmcmVlZCwgZXNwLiB0aGluZ3MgbG9jYWwgdG8gYSBsaWJyYXJ5IGZ1bmN0aW9uLgogICovCiAgICAgdm9pZAogZnJlZV9hbGxfbWVtKCkKIHsKICAgICBidWZfVAkqYnVmLCAqbmV4dGJ1ZjsKKyAgICBzdGF0aWMgaW50CWVudGVyZWQgPSBGQUxTRTsKKworICAgIC8qIFdoZW4gd2UgY2F1c2UgYSBjcmFzaCBoZXJlIGl0IGlzIGNhdWdodCBhbmQgVmltIHRyaWVzIHRvIGV4aXQgY2xlYW5seS4KKyAgICAgKiBEb24ndCB0cnkgZnJlZWluZyBldmVyeXRoaW5nIGFnYWluLiAqLworICAgIGlmIChlbnRlcmVkKQorCXJldHVybjsKKyAgICBlbnRlcmVkID0gVFJVRTsKIAogICAgICsrYXV0b2NtZF9ibG9jazsJICAgIC8qIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhdXRvY29tbWFuZHMgaGVyZSAqLwogCkBAIC05MzksMjAgKzk1NywzMCBAQAogICAgIHNwZWxsX2ZyZWVfYWxsKCk7CiAjIGVuZGlmCiAKLSNpZiBkZWZpbmVkKEZFQVRfVVNSX0NNRFMpCisjIGlmIGRlZmluZWQoRkVBVF9VU1JfQ01EUykKICAgICAvKiBDbGVhciB1c2VyIGNvbW1hbmRzIChiZWZvcmUgZGVsZXRpbmcgYnVmZmVycykuICovCiAgICAgZXhfY29tY2xlYXIoTlVMTCk7Ci0jZW5kaWYKKyMgZW5kaWYKIAogIyBpZmRlZiBGRUFUX01FTlUKICAgICAvKiBDbGVhciBtZW51cy4gKi8KICAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopImF1bm1lbnUgKiIpOwogIyBlbmRpZgogCi0gICAgLyogQ2xlYXIgbWFwcGluZ3MgYW5kIGFiYnJldmlhdGlvbnMuICovCisgICAgLyogQ2xlYXIgbWFwcGluZ3MsIGFiYnJldmlhdGlvbnMsIGJyZWFrcG9pbnRzLiAqLwogICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikibWFwY2xlYXIiKTsKICAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopIm1hcGNsZWFyISIpOwogICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikiYWJjbGVhciIpOworIyBpZiBkZWZpbmVkKEZFQVRfRVZBTCkKKyAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopImJyZWFrZGVsICoiKTsKKyMgZW5kaWYKKworIyBpZmRlZiBGRUFUX1RJVExFCisgICAgZnJlZV90aXRsZXMoKTsKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChGRUFUX1NFQVJDSFBBVEgpCisgICAgZnJlZV9maW5kZmlsZSgpOworIyBlbmRpZgogCiAgICAgLyogT2J2aW91c2x5IG5hbWVkIGNhbGxzLiAqLwogIyBpZiBkZWZpbmVkKEZFQVRfRVZBTCkKQEAgLTk2MywxMSArOTkxLDQ0IEBACiAgICAgZnJlZV9hbGxfYXV0b2NtZHMoKTsKICMgZW5kaWYKICAgICBjbGVhcl90ZXJtY29kZXMoKTsKKyAgICBmcmVlX2FsbF9vcHRpb25zKCk7CisgICAgZnJlZV9hbGxfbWFya3MoKTsKKyAgICBhbGlzdF9jbGVhcigmZ2xvYmFsX2FsaXN0KTsKKyAgICBmcmVlX2hvbWVkaXIoKTsKKyAgICBmcmVlX3NlYXJjaF9wYXR0ZXJucygpOworICAgIGZyZWVfb2xkX3N1YigpOworICAgIGZyZWVfbGFzdF9pbnNlcnQoKTsKKyAgICBmcmVlX3ByZXZfc2hlbGxjbWQoKTsKKyAgICBmcmVlX3JlZ2V4cF9zdHVmZigpOworICAgIGZyZWVfdGFnX3N0dWZmKCk7CisgICAgZnJlZV9jZF9kaXIoKTsKKyAgICBzZXRfZXhwcl9saW5lKE5VTEwpOworICAgIGRpZmZfY2xlYXIoKTsKKworICAgIC8qIEZyZWUgc29tZSBnbG9iYWwgdmFycy4gKi8KKyAgICB2aW1fZnJlZSh1c2VybmFtZSk7CisgICAgdmltX2ZyZWUoY2xpcF9leGNsdWRlX3Byb2cpOworICAgIHZpbV9mcmVlKGxhc3RfY21kbGluZSk7CisgICAgdmltX2ZyZWUobmV3X2xhc3RfY21kbGluZSk7CisgICAgdmltX2ZyZWUoa2VlcF9tc2cpOworICAgIHZpbV9mcmVlKGZmX2V4cGFuZF9idWZmZXIpOwogCiAgICAgLyogQ2xlYXIgY21kbGluZSBoaXN0b3J5LiAqLwogICAgIHBfaGkgPSAwOwogICAgIGluaXRfaGlzdG9yeSgpOwogCisjaWZkZWYgRkVBVF9RVUlDS0ZJWAorICAgIHFmX2ZyZWVfYWxsKCk7CisjZW5kaWYKKworICAgIC8qIENsb3NlIGFsbCBzY3JpcHQgaW5wdXRzLiAqLworICAgIGNsb3NlX2FsbF9zY3JpcHRzKCk7CisKKyNpZiBkZWZpbmVkKEZFQVRfV0lORE9XUykKKyAgICAvKiBEZXN0cm95IGFsbCB3aW5kb3dzLiAgTXVzdCBjb21lIGJlZm9yZSBmcmVlaW5nIGJ1ZmZlcnMuICovCisgICAgd2luX2ZyZWVfYWxsKCk7CisjZW5kaWYKKwogICAgIC8qIEZyZWUgYWxsIGJ1ZmZlcnMuICovCiAgICAgZm9yIChidWYgPSBmaXJzdGJ1ZjsgYnVmICE9IE5VTEw7ICkKICAgICB7CkBAIC05NzksOSArMTA0MCw4IEBACiAJICAgIGJ1ZiA9IGZpcnN0YnVmOwogICAgIH0KIAotI2lmIGRlZmluZWQoRkVBVF9XSU5ET1dTKQotICAgIC8qIERlc3Ryb3kgYWxsIHdpbmRvd3MuICovCi0gICAgd2luX2ZyZWVfYWxsKCk7CisjaWZkZWYgRkVBVF9BUkFCSUMKKyAgICBmcmVlX2NtZGxpbmVfYnVmKCk7CiAjZW5kaWYKIAogICAgIC8qIENsZWFyIHJlZ2lzdGVycy4gKi8KQEAgLTk4OSw2ICsxMDQ5LDEwIEBACiAgICAgUmVzZXRSZWRvYnVmZigpOwogICAgIFJlc2V0UmVkb2J1ZmYoKTsKIAorI2lmZGVmIEZFQVRfQ0xJRU5UU0VSVkVSCisgICAgdmltX2ZyZWUoc2VydmVyRGVsYXllZFN0YXJ0TmFtZSk7CisjZW5kaWYKKwogICAgIC8qIGhpZ2hsaWdodCBpbmZvICovCiAgICAgZnJlZV9oaWdobGlnaHQoKTsKIApAQCAtMTAwNiwxMiArMTA3MCwxOCBAQAogICAgIGV2YWxfY2xlYXIoKTsKICMgZW5kaWYKIAorICAgIGZyZWVfdGVybW9wdGlvbnMoKTsKKwogICAgIC8qIHNjcmVlbmxpbmVzIChjYW4ndCBkaXNwbGF5IGFueXRoaW5nIG5vdyEpICovCiAgICAgZnJlZV9zY3JlZW5saW5lcygpOwogCiAjaWYgZGVmaW5lZChVU0VfWFNNUCkKICAgICB4c21wX2Nsb3NlKCk7CiAjZW5kaWYKKyNpZmRlZiBGRUFUX0dVSV9HVEsKKyAgICBndWlfbWNoX2ZyZWVfYWxsKCk7CisjZW5kaWYKKyAgICBjbGVhcl9obF90YWJsZXMoKTsKIAogICAgIHZpbV9mcmVlKElPYnVmZik7CiAgICAgdmltX2ZyZWUoTmFtZUJ1ZmYpOwpAQCAtMzY0MiwxMSArMzcxMiw5IEBACiAgICAgIGNoYXJfdQkJCSoqZmZzY19zdG9wZGlyc192OwogI2VuZGlmCiAgICAgIGludAkJCWZmc2NfbmVlZF9kaXI7Ci19ZmZfc2VhcmNoX2N0eF9UOwotc3RhdGljIGZmX3NlYXJjaF9jdHhfVCAqZmZfc2VhcmNoX2N0eCA9IE5VTEw7Cit9IGZmX3NlYXJjaF9jdHhfVDsKIAotLyogdXNlZCBmb3IgZXhwYW5kaW5nIGZpbGVuYW1lcyAqLwotc3RhdGljIGNoYXJfdQkJKmZmX2V4cGFuZF9idWZmZXIgPSBOVUxMOworc3RhdGljIGZmX3NlYXJjaF9jdHhfVCAqZmZfc2VhcmNoX2N0eCA9IE5VTEw7CiAKIC8qIGxvY2FsbHkgbmVlZGVkIGZ1bmN0aW9ucyAqLwogI2lmZGVmIEZFQVRfUEFUSF9FWFRSQQpAQCAtMzk5NCw4ICs0MDYyLDcgQEAKIAkJZmZfZXhwYW5kX2J1ZmZlcltsZW4rK10gPSAqd2NfcGFydCsrOwogCX0KIAlmZl9leHBhbmRfYnVmZmVyW2xlbl0gPSBOVUw7Ci0JZmZfc2VhcmNoX2N0eC0+ZmZzY193Y19wYXRoID0KLQkgICAgdmltX3N0cnNhdmUoZmZfZXhwYW5kX2J1ZmZlcik7CisJZmZfc2VhcmNoX2N0eC0+ZmZzY193Y19wYXRoID0gdmltX3N0cnNhdmUoZmZfZXhwYW5kX2J1ZmZlcik7CiAKIAlpZiAoZmZfc2VhcmNoX2N0eC0+ZmZzY193Y19wYXRoID09IE5VTEwpCiAJICAgIGdvdG8gZXJyb3JfcmV0dXJuOwpAQCAtNDA4NSw3ICs0MTUyLDcgQEAKIHZpbV9maW5kZmlsZV9jbGVhbnVwKGN0eCkKICAgICB2b2lkCSpjdHg7CiB7Ci0gICAgaWYgKE5VTEwgPT0gY3R4KQorICAgIGlmIChjdHggPT0gTlVMTCkKIAlyZXR1cm47CiAKICAgICBmZl9zZWFyY2hfY3R4ID0gY3R4OwpAQCAtNDQ1Miw4ICs0NTE5LDggQEAKIAkJICAgICAqIHN0aWxsIHdpbGRjYXJkcyBsZWZ0LCBwdXNoIHRoZSBkaXJlY3RvcmllcyBmb3IgZnVydGhlcgogCQkgICAgICogc2VhcmNoCiAJCSAgICAgKi8KLQkJICAgIGZvciAoaSA9IGN0eC0+ZmZzX2ZpbGVhcnJheV9jdXI7IGkgPCBjdHgtPmZmc19maWxlYXJyYXlfc2l6ZTsKLQkJCQkJCQkJCSAgKytpKQorCQkgICAgZm9yIChpID0gY3R4LT5mZnNfZmlsZWFycmF5X2N1cjsKKwkJCQkJICAgICBpIDwgY3R4LT5mZnNfZmlsZWFycmF5X3NpemU7ICsraSkKIAkJICAgIHsKIAkJCWlmICghbWNoX2lzZGlyKGN0eC0+ZmZzX2ZpbGVhcnJheVtpXSkpCiAJCQkgICAgY29udGludWU7CS8qIG5vdCBhIGRpcmVjdG9yeSAqLwpAQCAtNDQ3NCw3ICs0NTQxLDggQEAKIAkgICAgICovCiAJICAgIGlmIChTVFJOQ01QKGN0eC0+ZmZzX3djX3BhdGgsICIqKiIsIDIpID09IDApCiAJICAgIHsKLQkJZm9yIChpID0gY3R4LT5mZnNfZmlsZWFycmF5X2N1cjsgaSA8IGN0eC0+ZmZzX2ZpbGVhcnJheV9zaXplOyArK2kpCisJCWZvciAoaSA9IGN0eC0+ZmZzX2ZpbGVhcnJheV9jdXI7CisJCQkJCSAgICAgaSA8IGN0eC0+ZmZzX2ZpbGVhcnJheV9zaXplOyArK2kpCiAJCXsKIAkJICAgIGlmIChmbmFtZWNtcChjdHgtPmZmc19maWxlYXJyYXlbaV0sIGN0eC0+ZmZzX2ZpeF9wYXRoKSA9PSAwKQogCQkJY29udGludWU7IC8qIGRvbid0IHJlcHVzaCBzYW1lIGRpcmVjdG9yeSAqLwpAQCAtNDg3NSw4ICs0OTQzLDcgQEAKICAgICBmZl9zdGFja19UICpjdHg7CiB7CiAgICAgLyogY2hlY2sgZm9yIE5VTEwgcG9pbnRlciwgbm90IHRvIHJldHVybiBhbiBlcnJvciB0byB0aGUgdXNlciwgYnV0Ci0gICAgICogdG8gcHJldmVudCBhIGNyYXNoCi0gICAgICovCisgICAgICogdG8gcHJldmVudCBhIGNyYXNoICovCiAgICAgaWYgKGN0eCAhPSBOVUxMKQogICAgIHsKIAljdHgtPmZmc19wcmV2ICAgPSBmZl9zZWFyY2hfY3R4LT5mZnNjX3N0YWNrX3B0cjsKQEAgLTUwNDUsNiArNTExMiwxOCBAQAogCSAgICBGQUxTRSwgcmVsX2ZuYW1lKTsKIH0KIAorc3RhdGljIGNoYXJfdQkqZmZfZmlsZV90b19maW5kID0gTlVMTDsKK3N0YXRpYyB2b2lkCSpmZGlwX3NlYXJjaF9jdHggPSBOVUxMOworCisjaWYgZGVmaW5lZChFWElURlJFRSkKKyAgICBzdGF0aWMgdm9pZAorZnJlZV9maW5kZmlsZSgpCit7CisgICAgdmltX2ZyZWUoZmZfZmlsZV90b19maW5kKTsKKyAgICB2aW1fZmluZGZpbGVfY2xlYW51cChmZGlwX3NlYXJjaF9jdHgpOworfQorI2VuZGlmCisKIC8qCiAgKiBGaW5kIHRoZSBkaXJlY3RvcnkgbmFtZSAicHRyW2xlbl0iIGluIHRoZSBwYXRoLgogICoKQEAgLTUwNzYsOSArNTE1NSw3IEBACiAgICAgaW50CQluZWVkX2RpcjsJLyogbG9va2luZyBmb3IgZGlyZWN0b3J5IG5hbWUgKi8KICAgICBjaGFyX3UJKnJlbF9mbmFtZTsJLyogZmlsZSBuYW1lIHdlIGFyZSBsb29raW5nIHJlbGF0aXZlIHRvLiAqLwogewotICAgIHN0YXRpYyB2b2lkCQkqc2VhcmNoX2N0eCA9IE5VTEw7CiAgICAgc3RhdGljIGNoYXJfdQkqZGlyOwotICAgIHN0YXRpYyBjaGFyX3UJKmZpbGVfdG9fZmluZCA9IE5VTEw7CiAgICAgc3RhdGljIGludAkJZGlkX2ZpbmRmaWxlX2luaXQgPSBGQUxTRTsKICAgICBjaGFyX3UJCXNhdmVfY2hhcjsKICAgICBjaGFyX3UJCSpmaWxlX25hbWUgPSBOVUxMOwpAQCAtNTEwMCwzMyArNTE3NywzMyBAQAogCWV4cGFuZF9lbnYocHRyLCBOYW1lQnVmZiwgTUFYUEFUSEwpOwogCXB0cltsZW5dID0gc2F2ZV9jaGFyOwogCi0JdmltX2ZyZWUoZmlsZV90b19maW5kKTsKLQlmaWxlX3RvX2ZpbmQgPSB2aW1fc3Ryc2F2ZShOYW1lQnVmZik7Ci0JaWYgKGZpbGVfdG9fZmluZCA9PSBOVUxMKQkvKiBvdXQgb2YgbWVtb3J5ICovCisJdmltX2ZyZWUoZmZfZmlsZV90b19maW5kKTsKKwlmZl9maWxlX3RvX2ZpbmQgPSB2aW1fc3Ryc2F2ZShOYW1lQnVmZik7CisJaWYgKGZmX2ZpbGVfdG9fZmluZCA9PSBOVUxMKQkvKiBvdXQgb2YgbWVtb3J5ICovCiAJewogCSAgICBmaWxlX25hbWUgPSBOVUxMOwogCSAgICBnb3RvIHRoZWVuZDsKIAl9CiAgICAgfQogCi0gICAgcmVsX3RvX2N1cmRpciA9IChmaWxlX3RvX2ZpbmRbMF0gPT0gJy4nCi0JCSAgICAmJiAoZmlsZV90b19maW5kWzFdID09IE5VTAotCQkJfHwgdmltX2lzcGF0aHNlcChmaWxlX3RvX2ZpbmRbMV0pCi0JCQl8fCAoZmlsZV90b19maW5kWzFdID09ICcuJwotCQkJICAgICYmIChmaWxlX3RvX2ZpbmRbMl0gPT0gTlVMCi0JCQkJfHwgdmltX2lzcGF0aHNlcChmaWxlX3RvX2ZpbmRbMl0pKSkpKTsKLSAgICBpZiAodmltX2lzQWJzTmFtZShmaWxlX3RvX2ZpbmQpCisgICAgcmVsX3RvX2N1cmRpciA9IChmZl9maWxlX3RvX2ZpbmRbMF0gPT0gJy4nCisJCSAgICAmJiAoZmZfZmlsZV90b19maW5kWzFdID09IE5VTAorCQkJfHwgdmltX2lzcGF0aHNlcChmZl9maWxlX3RvX2ZpbmRbMV0pCisJCQl8fCAoZmZfZmlsZV90b19maW5kWzFdID09ICcuJworCQkJICAgICYmIChmZl9maWxlX3RvX2ZpbmRbMl0gPT0gTlVMCisJCQkJfHwgdmltX2lzcGF0aHNlcChmZl9maWxlX3RvX2ZpbmRbMl0pKSkpKTsKKyAgICBpZiAodmltX2lzQWJzTmFtZShmZl9maWxlX3RvX2ZpbmQpCiAJICAgIC8qICIuLiIsICIuLi9wYXRoIiwgIi4iIGFuZCAiLi9wYXRoIjogZG9uJ3QgdXNlIHRoZSBwYXRoX29wdGlvbiAqLwogCSAgICB8fCByZWxfdG9fY3VyZGlyCiAjaWYgZGVmaW5lZChNU1dJTikgfHwgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChPUzIpCiAJICAgIC8qIGhhbmRsZSAiXHRtcCIgYXMgYWJzb2x1dGUgcGF0aCAqLwotCSAgICB8fCB2aW1faXNwYXRoc2VwKGZpbGVfdG9fZmluZFswXSkKKwkgICAgfHwgdmltX2lzcGF0aHNlcChmZl9maWxlX3RvX2ZpbmRbMF0pCiAJICAgIC8qIGhhbmRsZSAiYzpuYW1lIiBhcyBhYnN1bHV0ZSBwYXRoICovCi0JICAgIHx8IChmaWxlX3RvX2ZpbmRbMF0gIT0gTlVMICYmIGZpbGVfdG9fZmluZFsxXSA9PSAnOicpCisJICAgIHx8IChmZl9maWxlX3RvX2ZpbmRbMF0gIT0gTlVMICYmIGZmX2ZpbGVfdG9fZmluZFsxXSA9PSAnOicpCiAjZW5kaWYKICNpZmRlZiBBTUlHQQogCSAgICAvKiBoYW5kbGUgIjp0bXAiIGFzIGFic29sdXRlIHBhdGggKi8KLQkgICAgfHwgZmlsZV90b19maW5kWzBdID09ICc6JworCSAgICB8fCBmZl9maWxlX3RvX2ZpbmRbMF0gPT0gJzonCiAjZW5kaWYKICAgICAgICApCiAgICAgewpAQCAtNTE0MCw5ICs1MjE3LDkgQEAKIAkgICAgaW50CQlsOwogCSAgICBpbnQJCXJ1bjsKIAotCSAgICBpZiAocGF0aF93aXRoX3VybChmaWxlX3RvX2ZpbmQpKQorCSAgICBpZiAocGF0aF93aXRoX3VybChmZl9maWxlX3RvX2ZpbmQpKQogCSAgICB7Ci0JCWZpbGVfbmFtZSA9IHZpbV9zdHJzYXZlKGZpbGVfdG9fZmluZCk7CisJCWZpbGVfbmFtZSA9IHZpbV9zdHJzYXZlKGZmX2ZpbGVfdG9fZmluZCk7CiAJCWdvdG8gdGhlZW5kOwogCSAgICB9CiAKQEAgLTUxNTAsNyArNTIyNyw3IEBACiAJICAgICAqIE90aGVyd2lzZSBvciB3aGVuIHRoaXMgZmFpbHMgdXNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gKi8KIAkgICAgZm9yIChydW4gPSAxOyBydW4gPD0gMjsgKytydW4pCiAJICAgIHsKLQkJbCA9IChpbnQpU1RSTEVOKGZpbGVfdG9fZmluZCk7CisJCWwgPSAoaW50KVNUUkxFTihmZl9maWxlX3RvX2ZpbmQpOwogCQlpZiAocnVuID09IDEKIAkJCSYmIHJlbF90b19jdXJkaXIKIAkJCSYmIChvcHRpb25zICYgRk5BTUVfUkVMKQpAQCAtNTE1OCwxMiArNTIzNSwxMiBAQAogCQkJJiYgU1RSTEVOKHJlbF9mbmFtZSkgKyBsIDwgTUFYUEFUSEwpCiAJCXsKIAkJICAgIFNUUkNQWShOYW1lQnVmZiwgcmVsX2ZuYW1lKTsKLQkJICAgIFNUUkNQWShnZXR0YWlsKE5hbWVCdWZmKSwgZmlsZV90b19maW5kKTsKKwkJICAgIFNUUkNQWShnZXR0YWlsKE5hbWVCdWZmKSwgZmZfZmlsZV90b19maW5kKTsKIAkJICAgIGwgPSAoaW50KVNUUkxFTihOYW1lQnVmZik7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCSAgICBTVFJDUFkoTmFtZUJ1ZmYsIGZpbGVfdG9fZmluZCk7CisJCSAgICBTVFJDUFkoTmFtZUJ1ZmYsIGZmX2ZpbGVfdG9fZmluZCk7CiAJCSAgICBydW4gPSAyOwogCQl9CiAKQEAgLTUyMDMsNyArNTI4MCw3IEBACiAJaWYgKGZpcnN0ID09IFRSVUUpCiAJewogCSAgICAvKiB2aW1fZmluZGZpbGVfZnJlZV92aXNpdGVkIGNhbiBoYW5kbGUgYSBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgKi8KLQkgICAgdmltX2ZpbmRmaWxlX2ZyZWVfdmlzaXRlZChzZWFyY2hfY3R4KTsKKwkgICAgdmltX2ZpbmRmaWxlX2ZyZWVfdmlzaXRlZChmZGlwX3NlYXJjaF9jdHgpOwogCSAgICBkaXIgPSBwYXRoX29wdGlvbjsKIAkgICAgZGlkX2ZpbmRmaWxlX2luaXQgPSBGQUxTRTsKIAl9CkBAIC01MjEzLDcgKzUyOTAsNyBAQAogCSAgICBpZiAoZGlkX2ZpbmRmaWxlX2luaXQpCiAJICAgIHsKIAkJZmZfc2VhcmNoX2N0eC0+ZmZzY19uZWVkX2RpciA9IG5lZWRfZGlyOwotCQlmaWxlX25hbWUgPSB2aW1fZmluZGZpbGUoc2VhcmNoX2N0eCk7CisJCWZpbGVfbmFtZSA9IHZpbV9maW5kZmlsZShmZGlwX3NlYXJjaF9jdHgpOwogCQlmZl9zZWFyY2hfY3R4LT5mZnNjX25lZWRfZGlyID0gRkFMU0U7CiAJCWlmIChmaWxlX25hbWUgIT0gTlVMTCkKIAkJICAgIGJyZWFrOwpAQCAtNTIyOCw4ICs1MzA1LDggQEAKIAkJewogCQkgICAgLyogV2Ugc2VhcmNoZWQgYWxsIHBhdGhzIG9mIHRoZSBvcHRpb24sIG5vdyB3ZSBjYW4KIAkJICAgICAqIGZyZWUgdGhlIHNlYXJjaCBjb250ZXh0LiAqLwotCQkgICAgdmltX2ZpbmRmaWxlX2NsZWFudXAoc2VhcmNoX2N0eCk7Ci0JCSAgICBzZWFyY2hfY3R4ID0gTlVMTDsKKwkJICAgIHZpbV9maW5kZmlsZV9jbGVhbnVwKGZkaXBfc2VhcmNoX2N0eCk7CisJCSAgICBmZGlwX3NlYXJjaF9jdHggPSBOVUxMOwogCQkgICAgYnJlYWs7CiAJCX0KIApAQCAtNTI0Niw5ICs1MzIzLDEwIEBACiAjZWxzZQogCQlyX3B0ciA9IE5VTEw7CiAjZW5kaWYKLQkJc2VhcmNoX2N0eCA9IHZpbV9maW5kZmlsZV9pbml0KGJ1ZiwgZmlsZV90b19maW5kLCByX3B0ciwgMTAwLAotCQkJCSAgIEZBTFNFLCBUUlVFLCBzZWFyY2hfY3R4LCBGQUxTRSwgcmVsX2ZuYW1lKTsKLQkJaWYgKHNlYXJjaF9jdHggIT0gTlVMTCkKKwkJZmRpcF9zZWFyY2hfY3R4ID0gdmltX2ZpbmRmaWxlX2luaXQoYnVmLCBmZl9maWxlX3RvX2ZpbmQsCisJCQkJCSAgICByX3B0ciwgMTAwLCBGQUxTRSwgVFJVRSwKKwkJCQkJICAgZmRpcF9zZWFyY2hfY3R4LCBGQUxTRSwgcmVsX2ZuYW1lKTsKKwkJaWYgKGZkaXBfc2VhcmNoX2N0eCAhPSBOVUxMKQogCQkgICAgZGlkX2ZpbmRmaWxlX2luaXQgPSBUUlVFOwogCQl2aW1fZnJlZShidWYpOwogCSAgICB9CkBAIC01MjYwLDE5ICs1MzM4LDE5IEBACiAJewogCSAgICBpZiAobmVlZF9kaXIpCiAJCUVNU0cyKF8oIkUzNDQ6IENhbid0IGZpbmQgZGlyZWN0b3J5IFwiJXNcIiBpbiBjZHBhdGgiKSwKLQkJCWZpbGVfdG9fZmluZCk7CisJCQlmZl9maWxlX3RvX2ZpbmQpOwogCSAgICBlbHNlCiAJCUVNU0cyKF8oIkUzNDU6IENhbid0IGZpbmQgZmlsZSBcIiVzXCIgaW4gcGF0aCIpLAotCQkJZmlsZV90b19maW5kKTsKKwkJCWZmX2ZpbGVfdG9fZmluZCk7CiAJfQogCWVsc2UKIAl7CiAJICAgIGlmIChuZWVkX2RpcikKIAkJRU1TRzIoXygiRTM0NjogTm8gbW9yZSBkaXJlY3RvcnkgXCIlc1wiIGZvdW5kIGluIGNkcGF0aCIpLAotCQkJZmlsZV90b19maW5kKTsKKwkJCWZmX2ZpbGVfdG9fZmluZCk7CiAJICAgIGVsc2UKIAkJRU1TRzIoXygiRTM0NzogTm8gbW9yZSBmaWxlIFwiJXNcIiBmb3VuZCBpbiBwYXRoIiksCi0JCQlmaWxlX3RvX2ZpbmQpOworCQkJZmZfZmlsZV90b19maW5kKTsKIAl9CiAgICAgfQogCkBAIC01MzIwLDE2ICs1Mzk4LDE0IEBACiAgICAgY2hhcl91CSpidWY7CiAgICAgaW50CQlsZW47CiB7Ci0gICAgc3RhdGljIGNoYXJfdQkqbmFtZSA9IE5VTEw7Ci0KLSAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgIGlmICh1c2VybmFtZSA9PSBOVUxMKQogICAgIHsKIAlpZiAobWNoX2dldF91c2VyX25hbWUoYnVmLCBsZW4pID09IEZBSUwpCiAJICAgIHJldHVybiBGQUlMOwotCW5hbWUgPSB2aW1fc3Ryc2F2ZShidWYpOworCXVzZXJuYW1lID0gdmltX3N0cnNhdmUoYnVmKTsKICAgICB9CiAgICAgZWxzZQotCVNUUk5DUFkoYnVmLCBuYW1lLCBsZW4pOworCVNUUk5DUFkoYnVmLCB1c2VybmFtZSwgbGVuKTsKICAgICByZXR1cm4gT0s7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uYyBiL3NyYy9vcHRpb24uYwppbmRleCA5N2MwYWE1Li4zODlhYjZlIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmMKKysrIGIvc3JjL29wdGlvbi5jCkBAIC0zMTY1LDYgKzMxNjUsMzQgQEAKICAgICBvcHRpb25zW2ZpbmRvcHRpb24oKGNoYXJfdSAqKW5hbWUpXS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gKGNoYXJfdSAqKXZhbDsKIH0KIAorI2lmIGRlZmluZWQoRVhJVEZSRUUpIHx8IGRlZmluZWQoUFJPVE8pCisvKgorICogRnJlZSBhbGwgb3B0aW9ucy4KKyAqLworICAgIHZvaWQKK2ZyZWVfYWxsX29wdGlvbnMoKQoreworICAgIGludAkJaTsKKworICAgIGZvciAoaSA9IDA7ICFpc3Rlcm1vcHRpb24oJm9wdGlvbnNbaV0pOyBpKyspCisgICAgeworCWlmIChvcHRpb25zW2ldLmluZGlyID09IFBWX05PTkUpCisJeworCSAgICAvKiBnbG9iYWwgb3B0aW9uOiBmcmVlIHZhbHVlIGFuZCBkZWZhdWx0IHZhbHVlLiAqLworCSAgICBpZiAob3B0aW9uc1tpXS5mbGFncyAmIFBfQUxMT0NFRCAmJiBvcHRpb25zW2ldLnZhciAhPSBOVUxMKQorCQlmcmVlX3N0cmluZ19vcHRpb24oKihjaGFyX3UgKiopb3B0aW9uc1tpXS52YXIpOworCSAgICBpZiAob3B0aW9uc1tpXS5mbGFncyAmIFBfREVGX0FMTE9DRUQpCisJCWZyZWVfc3RyaW5nX29wdGlvbihvcHRpb25zW2ldLmRlZl92YWxbVklfREVGQVVMVF0pOworCX0KKwllbHNlIGlmIChvcHRpb25zW2ldLnZhciAhPSBWQVJfV0lOCisJCSYmIChvcHRpb25zW2ldLmZsYWdzICYgUF9TVFJJTkcpKQorCSAgICAvKiBidWZmZXItbG9jYWwgb3B0aW9uOiBmcmVlIGdsb2JhbCB2YWx1ZSAqLworCSAgICBmcmVlX3N0cmluZ19vcHRpb24oKihjaGFyX3UgKiopb3B0aW9uc1tpXS52YXIpOworICAgIH0KK30KKyNlbmRpZgorCisKIC8qCiAgKiBJbml0aWFsaXplIHRoZSBvcHRpb25zLCBwYXJ0IHR3bzogQWZ0ZXIgZ2V0dGluZyBSb3dzIGFuZCBDb2x1bW5zIGFuZAogICogc2V0dGluZyAndGVybScuCkBAIC04MDAxLDggKzgwMjksNiBAQAogICAgIHZvaWQKIGNsZWFyX3Rlcm1vcHRpb25zKCkKIHsKLSAgICBzdHJ1Y3Qgdmltb3B0aW9uICAgKnA7Ci0KICAgICAvKgogICAgICAqIFJlc2V0IGEgZmV3IHRoaW5ncyBiZWZvcmUgY2xlYXJpbmcgdGhlIG9sZCBvcHRpb25zLiBUaGlzIG1heSBjYXVzZQogICAgICAqIG91dHB1dHRpbmcgYSBmZXcgdGhpbmdzIHRoYXQgdGhlIHRlcm1pbmFsIGRvZXNuJ3QgdW5kZXJzdGFuZCwgYnV0IHRoZQpAQCAtODAyOCw2ICs4MDU0LDE0IEBACiAjZW5kaWYKIAlzdG9wdGVybWNhcCgpOwkJCS8qIHN0b3AgdGVybWNhcCBtb2RlICovCiAKKyAgICBmcmVlX3Rlcm1vcHRpb25zKCk7Cit9CisKKyAgICB2b2lkCitmcmVlX3Rlcm1vcHRpb25zKCkKK3sKKyAgICBzdHJ1Y3Qgdmltb3B0aW9uICAgKnA7CisKICAgICBmb3IgKHAgPSAmb3B0aW9uc1swXTsgcC0+ZnVsbG5hbWUgIT0gTlVMTDsgcCsrKQogCWlmIChpc3Rlcm1vcHRpb24ocCkpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL29zX3VuaXguYyBiL3NyYy9vc191bml4LmMKaW5kZXggZDI3YjA1YS4uMDc2NDVkYyAxMDA2NDQKLS0tIGEvc3JjL29zX3VuaXguYworKysgYi9zcmMvb3NfdW5peC5jCkBAIC0yNzAzLDggKzI3MDMsMTEgQEAKICAgICB2b2lkCiBtY2hfZnJlZV9tZW0oKQogewotIyBpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spIHx8IGRlZmluZWQoSEFWRV9TSUdTVEFDSykKLSAgICB2aW1fZnJlZShzaWduYWxfc3RhY2spOworIyBpZiBkZWZpbmVkKEZFQVRfQ0xJUEJPQVJEKSAmJiBkZWZpbmVkKEZFQVRfWDExKQorICAgIGlmIChjbGlwX3N0YXIub3duZWQpCisJY2xpcF9sb3NlX3NlbGVjdGlvbigmY2xpcF9zdGFyKTsKKyAgICBpZiAoY2xpcF9wbHVzLm93bmVkKQorCWNsaXBfbG9zZV9zZWxlY3Rpb24oJmNsaXBfcGx1cyk7CiAjIGVuZGlmCiAjIGlmIChkZWZpbmVkKEZFQVRfWDExKSAmJiBkZWZpbmVkKEZFQVRfWENMSVBCT0FSRCkpIHx8IGRlZmluZWQoUFJPVE8pCiAgICAgaWYgKHh0ZXJtX1NoZWxsICE9IChXaWRnZXQpMCkKQEAgLTI3MTQsNiArMjcxNywxOCBAQAogICAgIGlmIChhcHBfY29udGV4dCAhPSAoWHRBcHBDb250ZXh0KU5VTEwpCiAJWHREZXN0cm95QXBwbGljYXRpb25Db250ZXh0KGFwcF9jb250ZXh0KTsKICMgZW5kaWYKKyMgaWZkZWYgRkVBVF9YMTEKKyAgICBpZiAoeDExX2Rpc3BsYXkgIT0gTlVMTCAmJiB4MTFfZGlzcGxheSAhPSB4dGVybV9kcHkpCisJWENsb3NlRGlzcGxheSh4MTFfZGlzcGxheSk7CisjIGVuZGlmCisjIGlmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgfHwgZGVmaW5lZChIQVZFX1NJR1NUQUNLKQorICAgIHZpbV9mcmVlKHNpZ25hbF9zdGFjayk7CisgICAgc2lnbmFsX3N0YWNrID0gTlVMTDsKKyMgZW5kaWYKKyMgaWZkZWYgRkVBVF9USVRMRQorICAgIHZpbV9mcmVlKG9sZHRpdGxlKTsKKyAgICB2aW1fZnJlZShvbGRpY29uKTsKKyMgZW5kaWYKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZGlmZi5wcm8gYi9zcmMvcHJvdG8vZGlmZi5wcm8KaW5kZXggYjkxMmE1Ni4uYjliMzNjOSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2RpZmYucHJvCisrKyBiL3NyYy9wcm90by9kaWZmLnBybwpAQCAtMTEsNiArMTEsNyBAQAogdm9pZCBleF9kaWZmdGhpcyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwogdm9pZCBkaWZmX3dpbl9vcHRpb25zIF9fQVJHUygod2luX1QgKndwLCBpbnQgYWRkYnVmKSk7CiB2b2lkIGV4X2RpZmZvZmYgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZGlmZl9jbGVhciBfX0FSR1MoKHZvaWQpKTsKIGludCBkaWZmX2NoZWNrIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7CiBpbnQgZGlmZl9jaGVja19maWxsIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7CiB2b2lkIGRpZmZfc2V0X3RvcGxpbmUgX19BUkdTKCh3aW5fVCAqZnJvbXdpbiwgd2luX1QgKnRvd2luKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZWRpdC5wcm8gYi9zcmMvcHJvdG8vZWRpdC5wcm8KaW5kZXggNTk5Mzk1OS4uMjE2OGNkOCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2VkaXQucHJvCisrKyBiL3NyYy9wcm90by9lZGl0LnBybwpAQCAtMTcsNiArMTcsNyBAQAogaW50IGNvbXBfdGV4dHdpZHRoIF9fQVJHUygoaW50IGZmKSk7CiBpbnQgc3RvcF9hcnJvdyBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgc2V0X2xhc3RfaW5zZXJ0IF9fQVJHUygoaW50IGMpKTsKK3ZvaWQgZnJlZV9sYXN0X2luc2VydCBfX0FSR1MoKHZvaWQpKTsKIGNoYXJfdSAqYWRkX2NoYXIyYnVmIF9fQVJHUygoaW50IGMsIGNoYXJfdSAqcykpOwogdm9pZCBiZWdpbmxpbmUgX19BUkdTKChpbnQgZmxhZ3MpKTsKIGludCBvbmVyaWdodCBfX0FSR1MoKHZvaWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9leF9jbWRzLnBybyBiL3NyYy9wcm90by9leF9jbWRzLnBybwppbmRleCBiYWExMjMzLi42NDA0Y2M4IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXhfY21kcy5wcm8KKysrIGIvc3JjL3Byb3RvL2V4X2NtZHMucHJvCkBAIC01LDYgKzUsNyBAQAogdm9pZCBleF9yZXRhYiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwogaW50IGRvX21vdmUgX19BUkdTKChsaW5lbnJfVCBsaW5lMSwgbGluZW5yX1QgbGluZTIsIGxpbmVucl9UIGRlc3QpKTsKIHZvaWQgZXhfY29weSBfX0FSR1MoKGxpbmVucl9UIGxpbmUxLCBsaW5lbnJfVCBsaW5lMiwgbGluZW5yX1QgbikpOwordm9pZCBmcmVlX3ByZXZfc2hlbGxjbWQgX19BUkdTKCh2b2lkKSk7CiB2b2lkIGRvX2JhbmcgX19BUkdTKChpbnQgYWRkcl9jb3VudCwgZXhhcmdfVCAqZWFwLCBpbnQgZm9yY2VpdCwgaW50IGRvX2luLCBpbnQgZG9fb3V0KSk7CiB2b2lkIGRvX3NoZWxsIF9fQVJHUygoY2hhcl91ICpjbWQsIGludCBmbGFncykpOwogY2hhcl91ICptYWtlX2ZpbHRlcl9jbWQgX19BUkdTKChjaGFyX3UgKmNtZCwgY2hhcl91ICppdG1wLCBjaGFyX3UgKm90bXApKTsKQEAgLTM3LDYgKzM4LDcgQEAKIHZvaWQgZ2xvYmFsX2V4ZSBfX0FSR1MoKGNoYXJfdSAqY21kKSk7CiBpbnQgcmVhZF92aW1pbmZvX3N1Yl9zdHJpbmcgX19BUkdTKCh2aXJfVCAqdmlycCwgaW50IGZvcmNlKSk7CiB2b2lkIHdyaXRlX3ZpbWluZm9fc3ViX3N0cmluZyBfX0FSR1MoKEZJTEUgKmZwKSk7Cit2b2lkIGZyZWVfb2xkX3N1YiBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgcHJlcGFyZV90YWdwcmV2aWV3IF9fQVJHUygodm9pZCkpOwogdm9pZCBleF9oZWxwIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CiBjaGFyX3UgKmNoZWNrX2hlbHBfbGFuZyBfX0FSR1MoKGNoYXJfdSAqYXJnKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZXhfZG9jbWQucHJvIGIvc3JjL3Byb3RvL2V4X2RvY21kLnBybwppbmRleCAzYTgyMDBlLi5mNGRmMzBkIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXhfZG9jbWQucHJvCisrKyBiL3NyYy9wcm90by9leF9kb2NtZC5wcm8KQEAgLTMzLDYgKzMzLDcgQEAKIHZvaWQgYWxpc3Rfc2xhc2hfYWRqdXN0IF9fQVJHUygodm9pZCkpOwogdm9pZCBleF9zcGxpdHZpZXcgX19BUkdTKChleGFyZ19UICplYXApKTsKIHZvaWQgZG9fZXhlZGl0IF9fQVJHUygoZXhhcmdfVCAqZWFwLCB3aW5fVCAqb2xkX2N1cndpbikpOwordm9pZCBmcmVlX2NkX2RpciBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZG9fc2xlZXAgX19BUkdTKChsb25nIG1zZWMpKTsKIGludCB2aW1fbWtkaXJfZW1zZyBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IHByb3QpKTsKIEZJTEUgKm9wZW5fZXhmaWxlIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgaW50IGZvcmNlaXQsIGNoYXIgKm1vZGUpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9leF9nZXRsbi5wcm8gYi9zcmMvcHJvdG8vZXhfZ2V0bG4ucHJvCmluZGV4IDY4OGViM2QuLmYwZDQ1YTMgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9leF9nZXRsbi5wcm8KKysrIGIvc3JjL3Byb3RvL2V4X2dldGxuLnBybwpAQCAtNiw2ICs2LDcgQEAKIGludCBjbWRsaW5lX292ZXJzdHJpa2UgX19BUkdTKCh2b2lkKSk7CiBpbnQgY21kbGluZV9hdF9lbmQgX19BUkdTKCh2b2lkKSk7CiBjb2xucl9UIGNtZGxpbmVfZ2V0dmNvbF9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfY21kbGluZV9idWYgX19BUkdTKCh2b2lkKSk7CiB2b2lkIHB1dGNtZGxpbmUgX19BUkdTKChpbnQgYywgaW50IHNoaWZ0KSk7CiB2b2lkIHVucHV0Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKIGludCBwdXRfb25fY21kbGluZSBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgbGVuLCBpbnQgcmVkcmF3KSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZ2V0Y2hhci5wcm8gYi9zcmMvcHJvdG8vZ2V0Y2hhci5wcm8KaW5kZXggN2I4ZDZiYy4uODZjM2M2ZiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2dldGNoYXIucHJvCisrKyBiL3NyYy9wcm90by9nZXRjaGFyLnBybwpAQCAtMzEsNiArMzEsNyBAQAogdm9pZCBzYXZlX3R5cGVhaGVhZCBfX0FSR1MoKHRhc2F2ZV9UICp0cCkpOwogdm9pZCByZXN0b3JlX3R5cGVhaGVhZCBfX0FSR1MoKHRhc2F2ZV9UICp0cCkpOwogdm9pZCBvcGVuc2NyaXB0IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgZGlyZWN0bHkpKTsKK3ZvaWQgY2xvc2VfYWxsX3NjcmlwdHMgX19BUkdTKCh2b2lkKSk7CiBpbnQgdXNpbmdfc2NyaXB0IF9fQVJHUygodm9pZCkpOwogdm9pZCB1cGRhdGVzY3JpcHQgX19BUkdTKChpbnQgYykpOwogaW50IHZnZXRjIF9fQVJHUygodm9pZCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL21hcmsucHJvIGIvc3JjL3Byb3RvL21hcmsucHJvCmluZGV4IGY3ZTVjZjguLjA0MGYwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9tYXJrLnBybworKysgYi9zcmMvcHJvdG8vbWFyay5wcm8KQEAgLTE5LDYgKzE5LDcgQEAKIHZvaWQgY29weV9qdW1wbGlzdCBfX0FSR1MoKHdpbl9UICpmcm9tLCB3aW5fVCAqdG8pKTsKIHZvaWQgZnJlZV9qdW1wbGlzdCBfX0FSR1MoKHdpbl9UICp3cCkpOwogdm9pZCBzZXRfbGFzdF9jdXJzb3IgX19BUkdTKCh3aW5fVCAqd2luKSk7Cit2b2lkIGZyZWVfYWxsX21hcmtzIF9fQVJHUygodm9pZCkpOwogaW50IHJlYWRfdmltaW5mb19maWxlbWFyayBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgZm9yY2UpKTsKIHZvaWQgd3JpdGVfdmltaW5mb19maWxlbWFya3MgX19BUkdTKChGSUxFICpmcCkpOwogaW50IHJlbW92YWJsZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL21pc2MxLnBybyBiL3NyYy9wcm90by9taXNjMS5wcm8KaW5kZXggYzJhZTgzMS4uOTRkMDQ1NSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL21pc2MxLnBybworKysgYi9zcmMvcHJvdG8vbWlzYzEucHJvCkBAIC00Nyw2ICs0Nyw3IEBACiB2b2lkIGJlZXBfZmx1c2ggX19BUkdTKCh2b2lkKSk7CiB2b2lkIHZpbV9iZWVwIF9fQVJHUygodm9pZCkpOwogdm9pZCBpbml0X2hvbWVkaXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfaG9tZWRpciBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZXhwYW5kX2VudiBfX0FSR1MoKGNoYXJfdSAqc3JjLCBjaGFyX3UgKmRzdCwgaW50IGRzdGxlbikpOwogdm9pZCBleHBhbmRfZW52X2VzYyBfX0FSR1MoKGNoYXJfdSAqc3JjLCBjaGFyX3UgKmRzdCwgaW50IGRzdGxlbiwgaW50IGVzYykpOwogY2hhcl91ICp2aW1fZ2V0ZW52IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgKm11c3RmcmVlKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3B0aW9uLnBybyBiL3NyYy9wcm90by9vcHRpb24ucHJvCmluZGV4IGMwYzU1MDQuLjQ5ZTFkOWEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9vcHRpb24ucHJvCisrKyBiL3NyYy9wcm90by9vcHRpb24ucHJvCkBAIC0yLDYgKzIsNyBAQAogdm9pZCBzZXRfaW5pdF8xIF9fQVJHUygodm9pZCkpOwogdm9pZCBzZXRfc3RyaW5nX2RlZmF1bHQgX19BUkdTKChjaGFyICpuYW1lLCBjaGFyX3UgKnZhbCkpOwogdm9pZCBzZXRfbnVtYmVyX2RlZmF1bHQgX19BUkdTKChjaGFyICpuYW1lLCBsb25nIHZhbCkpOwordm9pZCBmcmVlX2FsbF9vcHRpb25zIF9fQVJHUygodm9pZCkpOwogdm9pZCBzZXRfaW5pdF8yIF9fQVJHUygodm9pZCkpOwogdm9pZCBzZXRfaW5pdF8zIF9fQVJHUygodm9pZCkpOwogdm9pZCBzZXRfaGVscGxhbmdfZGVmYXVsdCBfX0FSR1MoKGNoYXJfdSAqbGFuZykpOwpAQCAtMjYsNiArMjcsNyBAQAogaW50IG1ha2VzZXQgX19BUkdTKChGSUxFICpmZCwgaW50IG9wdF9mbGFncywgaW50IGxvY2FsX29ubHkpKTsKIGludCBtYWtlZm9sZHNldCBfX0FSR1MoKEZJTEUgKmZkKSk7CiB2b2lkIGNsZWFyX3Rlcm1vcHRpb25zIF9fQVJHUygodm9pZCkpOwordm9pZCBmcmVlX3Rlcm1vcHRpb25zIF9fQVJHUygodm9pZCkpOwogdm9pZCBzZXRfdGVybV9kZWZhdWx0cyBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgY29tcF9jb2wgX19BUkdTKCh2b2lkKSk7CiBjaGFyX3UgKmdldF9lcXVhbHByZyBfX0FSR1MoKHZvaWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9xdWlja2ZpeC5wcm8gYi9zcmMvcHJvdG8vcXVpY2tmaXgucHJvCmluZGV4IGNjMmYyYTcuLjczNjlhNjQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9xdWlja2ZpeC5wcm8KKysrIGIvc3JjL3Byb3RvL3F1aWNrZml4LnBybwpAQCAtMSw1ICsxLDYgQEAKIC8qIHF1aWNrZml4LmMgKi8KIGludCBxZl9pbml0IF9fQVJHUygoY2hhcl91ICplZmlsZSwgY2hhcl91ICplcnJvcmZvcm1hdCwgaW50IG5ld2xpc3QpKTsKK3ZvaWQgcWZfZnJlZV9hbGwgX19BUkdTKCh2b2lkKSk7CiB2b2lkIHFmX2p1bXAgX19BUkdTKChpbnQgZGlyLCBpbnQgZXJyb3JuciwgaW50IGZvcmNlaXQpKTsKIHZvaWQgcWZfbGlzdCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwogdm9pZCBxZl9hZ2UgX19BUkdTKChleGFyZ19UICplYXApKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9yZWdleHAucHJvIGIvc3JjL3Byb3RvL3JlZ2V4cC5wcm8KaW5kZXggMGZmMWMyNC4uZGYyZmRlNCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3JlZ2V4cC5wcm8KKysrIGIvc3JjL3Byb3RvL3JlZ2V4cC5wcm8KQEAgLTEsNCArMSw1IEBACiAvKiByZWdleHAuYyAqLwordm9pZCBmcmVlX3JlZ2V4cF9zdHVmZiBfX0FSR1MoKHZvaWQpKTsKIGludCByZV9tdWx0aWxpbmUgX19BUkdTKChyZWdwcm9nX1QgKnByb2cpKTsKIGludCByZV9sb29rYmVoaW5kIF9fQVJHUygocmVncHJvZ19UICpwcm9nKSk7CiBjaGFyX3UgKnNraXBfcmVnZXhwIF9fQVJHUygoY2hhcl91ICpzdGFydHAsIGludCBkaXJjLCBpbnQgbWFnaWMsIGNoYXJfdSAqKm5ld3ApKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9zZWFyY2gucHJvIGIvc3JjL3Byb3RvL3NlYXJjaC5wcm8KaW5kZXggMzA0YWQ3My4uM2Q5MzRmMiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3NlYXJjaC5wcm8KKysrIGIvc3JjL3Byb3RvL3NlYXJjaC5wcm8KQEAgLTMsNiArMyw3IEBACiBjaGFyX3UgKmdldF9zZWFyY2hfcGF0IF9fQVJHUygodm9pZCkpOwogdm9pZCBzYXZlX3NlYXJjaF9wYXR0ZXJucyBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgcmVzdG9yZV9zZWFyY2hfcGF0dGVybnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfc2VhcmNoX3BhdHRlcm5zIF9fQVJHUygodm9pZCkpOwogaW50IGlnbm9yZWNhc2UgX19BUkdTKChjaGFyX3UgKnBhdCkpOwogY2hhcl91ICpsYXN0X3NlYXJjaF9wYXQgX19BUkdTKCh2b2lkKSk7CiB2b2lkIHJlc2V0X3NlYXJjaF9kaXIgX19BUkdTKCh2b2lkKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vc3ludGF4LnBybyBiL3NyYy9wcm90by9zeW50YXgucHJvCmluZGV4IDk2N2Q4OGUuLjRiMTMyZWEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9zeW50YXgucHJvCisrKyBiL3NyYy9wcm90by9zeW50YXgucHJvCkBAIC0yMiw2ICsyMiw3IEBACiB2b2lkIGhsX3NldF9mb250X25hbWUgX19BUkdTKChjaGFyX3UgKmZvbnRfbmFtZSkpOwogdm9pZCBobF9zZXRfYmdfY29sb3JfbmFtZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwogdm9pZCBobF9zZXRfZmdfY29sb3JfbmFtZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwordm9pZCBjbGVhcl9obF90YWJsZXMgX19BUkdTKCh2b2lkKSk7CiBpbnQgaGxfY29tYmluZV9hdHRyIF9fQVJHUygoaW50IGNoYXJfYXR0ciwgaW50IHByaW1fYXR0cikpOwogYXR0cmVudHJ5X1QgKnN5bl9ndWlfYXR0cjJlbnRyeSBfX0FSR1MoKGludCBhdHRyKSk7CiBhdHRyZW50cnlfVCAqc3luX3Rlcm1fYXR0cjJlbnRyeSBfX0FSR1MoKGludCBhdHRyKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vdGFnLnBybyBiL3NyYy9wcm90by90YWcucHJvCmluZGV4IDVkZjZjMzAuLjhlZTRjMjggMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by90YWcucHJvCisrKyBiL3NyYy9wcm90by90YWcucHJvCkBAIC0zLDYgKzMsNyBAQAogdm9pZCB0YWdfZnJlZW1hdGNoIF9fQVJHUygodm9pZCkpOwogdm9pZCBkb190YWdzIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CiBpbnQgZmluZF90YWdzIF9fQVJHUygoY2hhcl91ICpwYXQsIGludCAqbnVtX21hdGNoZXMsIGNoYXJfdSAqKiptYXRjaGVzcCwgaW50IGZsYWdzLCBpbnQgbWluY291bnQsIGNoYXJfdSAqYnVmX2ZmbmFtZSkpOwordm9pZCBmcmVlX3RhZ19zdHVmZiBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgc2ltcGxpZnlfZmlsZW5hbWUgX19BUkdTKChjaGFyX3UgKmZpbGVuYW1lKSk7CiBpbnQgZXhwYW5kX3RhZ3MgX19BUkdTKChpbnQgdGFnbmFtZXMsIGNoYXJfdSAqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSkpOwogaW50IGdldF90YWdzIF9fQVJHUygobGlzdF9UICpsaXN0LCBjaGFyX3UgKnBhdCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3F1aWNrZml4LmMgYi9zcmMvcXVpY2tmaXguYwppbmRleCA0MWFkMDBiLi41ZGUxZTExIDEwMDY0NAotLS0gYS9zcmMvcXVpY2tmaXguYworKysgYi9zcmMvcXVpY2tmaXguYwpAQCAtNzMyLDYgKzczMiwxNyBAQAogICAgIHFmX2xpc3RzW3FmX2N1cmxpc3RdLnFmX2NvdW50ID0gMDsKIH0KIAorI2lmIGRlZmluZWQoRVhJVEZSRUUpIHx8IGRlZmluZWQoUFJPVE8pCisgICAgdm9pZAorcWZfZnJlZV9hbGwoKQoreworICAgIGludAkJaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBxZl9saXN0Y291bnQ7ICsraSkKKwlxZl9mcmVlKGkpOworfQorI2VuZGlmCisKIC8qCiAgKiBBZGQgYW4gZW50cnkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBlcnJvcnMuCiAgKiBSZXR1cm5zIE9LIG9yIEZBSUwuCmRpZmYgLS1naXQgYS9zcmMvcmVnZXhwLmMgYi9zcmMvcmVnZXhwLmMKaW5kZXggYmMxM2IzOC4uZGQwYjE1MyAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4cC5jCisrKyBiL3NyYy9yZWdleHAuYwpAQCAtMzczLDcgKzM3MywxNSBAQAogICovCiAjZGVmaW5lIEpVU1RfQ0FMQ19TSVpFCSgoY2hhcl91ICopIC0xKQogCi1zdGF0aWMgY2hhcl91CQkqcmVnX3ByZXZfc3ViOworc3RhdGljIGNoYXJfdQkJKnJlZ19wcmV2X3N1YiA9IE5VTEw7CisKKyNpZiBkZWZpbmVkKEVYSVRGUkVFKSB8fCBkZWZpbmVkKFBST1RPKQorICAgIHZvaWQKK2ZyZWVfcmVnZXhwX3N0dWZmKCkKK3sKKyAgICB2aW1fZnJlZShyZWdfcHJldl9zdWIpOworfQorI2VuZGlmCiAKIC8qCiAgKiBSRUdFWFBfSU5SQU5HRSBjb250YWlucyBhbGwgY2hhcmFjdGVycyB3aGljaCBhcmUgYWx3YXlzIHNwZWNpYWwgaW4gYSBbXQpAQCAtMTcwMCw3ICsxNzA4LDcgQEAKIAkvKiBOT1RSRUFDSEVEICovCiAKICAgICAgIGNhc2UgTWFnaWMoJ34nKToJCS8qIHByZXZpb3VzIHN1YnN0aXR1dGUgcGF0dGVybiAqLwotCSAgICBpZiAocmVnX3ByZXZfc3ViKQorCSAgICBpZiAocmVnX3ByZXZfc3ViICE9IE5VTEwpCiAJICAgIHsKIAkJY2hhcl91CSAgICAqbHA7CiAKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCA1MzcwNzY5Li4yMDc0NWQ5IDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0zMzgsNiArMzM4LDE1IEBACiB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRVhJVEZSRUUpIHx8IGRlZmluZWQoUFJPVE8pCisgICAgdm9pZAorZnJlZV9zZWFyY2hfcGF0dGVybnMoKQoreworICAgIHZpbV9mcmVlKHNwYXRzWzBdLnBhdCk7CisgICAgdmltX2ZyZWUoc3BhdHNbMV0ucGF0KTsKK30KKyNlbmRpZgorCiAvKgogICogUmV0dXJuIFRSVUUgd2hlbiBjYXNlIHNob3VsZCBiZSBpZ25vcmVkIGZvciBzZWFyY2ggcGF0dGVybiAicGF0Ii4KICAqIFVzZXMgdGhlICdpZ25vcmVjYXNlJyBhbmQgJ3NtYXJ0Y2FzZScgb3B0aW9ucy4KZGlmZiAtLWdpdCBhL3NyYy9zcGVsbC9kZV9ERS5kaWZmIGIvc3JjL3NwZWxsL2RlX0RFLmRpZmYKaW5kZXggODk0MGU0NC4uNzYyMjE1YyAxMDA2NDQKLS0tIGEvc3JjL3NwZWxsL2RlX0RFLmRpZmYKKysrIGIvc3JjL3NwZWxsL2RlX0RFLmRpZmYKQEAgLTEsMTIgKzEsMTIgQEAKICoqKiBkZV9ERS5vcmlnLmFmZglGcmkgSnVuIDE3IDEwOjAxOjE4IDIwMDUKLS0tLSBkZV9ERS5hZmYJU2F0IEp1biAxOCAxOTo0NjoxOSAyMDA1CistLS0gZGVfREUuYWZmCVRodSBKdW4gMjMgMTc6NDE6MzggMjAwNQogKioqKioqKioqKioqKioqCiAqKiogMyw0ICoqKioKIC0tLSAzLDggLS0tLQogICAKLSsgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7fCi0rIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t8KKysgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIFVQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KICsgCiAgICMgKGMpIGNvcHlyaWdodCBieSBCam9lcm4gSmFja2UgPGJqb2VybkBqM2UuZGU+CiAqKiogZGVfREUub3JpZy5kaWMJRnJpIEp1biAxNyAxMDowMToyNyAyMDA1CmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fQVUuZGlmZiBiL3NyYy9zcGVsbC9lbl9BVS5kaWZmCmluZGV4IGQ3OGY1NTcuLmQxZGVkZjQgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9BVS5kaWZmCisrKyBiL3NyYy9zcGVsbC9lbl9BVS5kaWZmCkBAIC0xLDE4ICsxLDIwIEBACiAqKiogZW5fQVUub3JpZy5hZmYJRnJpIEFwciAxNSAxMzoyMDozNiAyMDA1Ci0tLS0gZW5fQVUuYWZmCVNhdCBKdW4gMTggMTk6NDI6MDcgMjAwNQorLS0tIGVuX0FVLmFmZglUaHUgSnVuIDIzIDE3OjQzOjIyIDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDcsOSAqKioqCiAgIFNFVCBJU084ODU5LTEKICEgVFJZIGVzaWHpbnJ0b2xjZHVnbXBoYnlmdmt3LScuenFqeFNOUlRMQ0dETVBIQkVBVVlPRklWS1f24vRaUUpYxefo7urg7/zk8SAKICAgUkVQIDI0Ci0tLS0gNywxNSAtLS0tCistLS0gNywxNyAtLS0tCiAgIFNFVCBJU084ODU5LTEKICEgVFJZIGVzaWHpbnJ0b2xjZHVnbXBoYnlmdmt3LScuenFqeFNOUlRMQ0dETVBIQkVBVVlPRklWS1f24vRaUUpYxefo7urg7/zk8QogISAKLSEgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7fCi0hIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotISBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t8KKyEgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worISBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CishIFVQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KICEgCishIFJBUiA/CishIEJBRCAhCiAhIAogICBSRVAgMjQKICoqKioqKioqKioqKioqKgpAQCAtMzcsNyArMzksNyBAQAogICBQRlggRSBZIDEKICEgUEZYIEUgMCBkaXMgLiAKICAgUEZYIEYgWSA1Ci0tLS0gNDAsNTkgLS0tLQorLS0tIDQyLDYxIC0tLS0KICAgUEZYIEEgWSAyCiAhIFBGWCBBIDAgcmUgW15lXQogISBQRlggQSAwIHJlLSBlCkBAIC00NTUsNyArNDU3LDcgQEAKICAgU0ZYIFQgeSBpZXN0IFteYWVpb3VdeQogISBTRlggVCAwIGVyIFthZWlvdV15IAogICBTRlggVCAwIGVzdCBbYWVpb3VdeQotLS0tIDYzLDQ1NyAtLS0tCistLS0gNjUsNDU5IC0tLS0KICAgUEZYIEYgMCBjb2wgbAogISBQRlggRiAwIGNvbiBbXmFiZWhpbG1vcHJ1XS4KICAgUEZYIEsgWSAxCkBAIC0xNTM5LDcgKzE1NDEsNyBAQAogISBTRlggMyAwIGlzdCdzIFthZWlvdWJwXXkgCiAhIFNGWCAzIG8gaXN0J3MgbyAKICEgU0ZYIDMgMCBpc3QncyBbXmVveV0gCi0tLS0gNDY0LDExNDkgLS0tLQorLS0tIDQ2NiwxMjcyIC0tLS0KICAgU0ZYIFIgWSA3MgogISBTRlggUiAwIHIgZQogISBTRlggUiAwIHJzIGUKQEAgLTIyMjYsOCArMjIyOCwxMjkgQEAKICEgU0ZYIDMgMCBpc3QncyBbYWVpb3VicF15CiAhIFNGWCAzIG8gaXN0J3MgbwogISBTRlggMyAwIGlzdCdzIFteZW95XQorISAKKyEgTUFQIDUKKyEgTUFQIGHg4eLj5OUKKyEgTUFQIGXo6errCishIE1BUCBp7O3u7worISBNQVAgb/Lz9PX2CishIE1BUCB1+fr7/AorISBNQVAgbvEKKyEgTUFQIGPnCishIE1BUCB5//0KKyEgTUFQIHPfCishIAorISAjIFRoaXMgY29tZXMgZnJvbSBBc3BlbGwgZW5fcGhvbmV0LmRhdCwgdmVyc2lvbiAxLjEsIDIwMDAtMDEtMDcKKyEgCishIFNBTCBBSChBRUlPVVkpLV4gICAgICAgICAqSAorISBTQUwgQVIoQUVJT1VZKS1eICAgICAgICAgKlIKKyEgU0FMIEEoSFIpXiAgICAgICAgICAgICAgICoKKyEgU0FMIEFeICAgICAgICAgICAgICAgICAgICoKKyEgU0FMIEFIKEFFSU9VWSktICAgICAgICAgIEgKKyEgU0FMIEFSKEFFSU9VWSktICAgICAgICAgIFIKKyEgU0FMIEEoSFIpICAgICAgICAgICAgICAgIF8KKyEgU0FMIMBeICAgICAgICAgICAgICAgICAgICoKKyEgU0FMIMVeICAgICAgICAgICAgICAgICAgICoKKyEgU0FMIEJCLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIEIgICAgICAgICAgICAgICAgICAgIEIKKyEgU0FMIENRLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIENJQSAgICAgICAgICAgICAgICAgIFgKKyEgU0FMIENIICAgICAgICAgICAgICAgICAgIFgKKyEgU0FMIEMoRUlZKS0gICAgICAgICAgICAgIFMKKyEgU0FMIENLICAgICAgICAgICAgICAgICAgIEsKKyEgU0FMIENPVUdIXiAgICAgICAgICAgICAgIEtGCishIFNBTCBDQzwgICAgICAgICAgICAgICAgICBDCishIFNBTCBDICAgICAgICAgICAgICAgICAgICBLCishIFNBTCBERyhFSVkpICAgICAgICAgICAgICBLCishIFNBTCBERC0gICAgICAgICAgICAgICAgICBfCishIFNBTCBEICAgICAgICAgICAgICAgICAgICBUCishIFNBTCDJPCAgICAgICAgICAgICAgICAgICBFCishIFNBTCBFSChBRUlPVVkpLV4gICAgICAgICAqSAorISBTQUwgRVIoQUVJT1VZKS1eICAgICAgICAgKlIKKyEgU0FMIEUoSFIpXiAgICAgICAgICAgICAgICoKKyEgU0FMIEVOT1VHSF4kICAgICAgICAgICAgICpORgorISBTQUwgRV4gICAgICAgICAgICAgICAgICAgKgorISBTQUwgRUgoQUVJT1VZKS0gICAgICAgICAgSAorISBTQUwgRVIoQUVJT1VZKS0gICAgICAgICAgUgorISBTQUwgRShIUikgICAgICAgICAgICAgICAgXworISBTQUwgRkYtICAgICAgICAgICAgICAgICAgXworISBTQUwgRiAgICAgICAgICAgICAgICAgICAgRgorISBTQUwgR05eICAgICAgICAgICAgICAgICAgTgorISBTQUwgR04kICAgICAgICAgICAgICAgICAgTgorISBTQUwgR05TJCAgICAgICAgICAgICAgICAgTlMKKyEgU0FMIEdORUQkICAgICAgICAgICAgICAgIE4KKyEgU0FMIEdIKEFFSU9VWSktICAgICAgICAgIEsKKyEgU0FMIEdIICAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIEdHOSAgICAgICAgICAgICAgICAgIEsKKyEgU0FMIEcgICAgICAgICAgICAgICAgICAgIEsKKyEgU0FMIEggICAgICAgICAgICAgICAgICAgIEgKKyEgU0FMIElIKEFFSU9VWSktXiAgICAgICAgICpICishIFNBTCBJUihBRUlPVVkpLV4gICAgICAgICAqUgorISBTQUwgSShIUileICAgICAgICAgICAgICAgKgorISBTQUwgSV4gICAgICAgICAgICAgICAgICAgKgorISBTQUwgSU5HNiAgICAgICAgICAgICAgICAgTgorISBTQUwgSUgoQUVJT1VZKS0gICAgICAgICAgSAorISBTQUwgSVIoQUVJT1VZKS0gICAgICAgICAgUgorISBTQUwgSShIUikgICAgICAgICAgICAgICAgXworISBTQUwgSiAgICAgICAgICAgICAgICAgICAgSworISBTQUwgS05eICAgICAgICAgICAgICAgICAgTgorISBTQUwgS0stICAgICAgICAgICAgICAgICAgXworISBTQUwgSyAgICAgICAgICAgICAgICAgICAgSworISBTQUwgTEFVR0heICAgICAgICAgICAgICAgTEYKKyEgU0FMIExMLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIEwgICAgICAgICAgICAgICAgICAgIEwKKyEgU0FMIE1CJCAgICAgICAgICAgICAgICAgIE0KKyEgU0FMIE1NICAgICAgICAgICAgICAgICAgIE0KKyEgU0FMIE0gICAgICAgICAgICAgICAgICAgIE0KKyEgU0FMIE5OLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIE4gICAgICAgICAgICAgICAgICAgIE4KKyEgU0FMIE9IKEFFSU9VWSktXiAgICAgICAgICpICishIFNBTCBPUihBRUlPVVkpLV4gICAgICAgICAqUgorISBTQUwgTyhIUileICAgICAgICAgICAgICAgKgorISBTQUwgT14gICAgICAgICAgICAgICAgICAgKgorISBTQUwgT0goQUVJT1VZKS0gICAgICAgICAgSAorISBTQUwgT1IoQUVJT1VZKS0gICAgICAgICAgUgorISBTQUwgTyhIUikgICAgICAgICAgICAgICAgXworISBTQUwgUEggICAgICAgICAgICAgICAgICAgRgorISBTQUwgUE5eICAgICAgICAgICAgICAgICAgTgorISBTQUwgUFAtICAgICAgICAgICAgICAgICAgXworISBTQUwgUCAgICAgICAgICAgICAgICAgICAgUAorISBTQUwgUSAgICAgICAgICAgICAgICAgICAgSworISBTQUwgUkheICAgICAgICAgICAgICAgICAgUgorISBTQUwgUk9VR0heICAgICAgICAgICAgICAgUkYKKyEgU0FMIFJSLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIFIgICAgICAgICAgICAgICAgICAgIFIKKyEgU0FMIFNDSChFT1UpLSAgICAgICAgICAgIFNLCishIFNBTCBTQyhJRVkpLSAgICAgICAgICAgICBTCishIFNBTCBTSCAgICAgICAgICAgICAgICAgICBYCishIFNBTCBTSShBTyktICAgICAgICAgICAgICBYCishIFNBTCBTUy0gICAgICAgICAgICAgICAgICBfCishIFNBTCBTICAgICAgICAgICAgICAgICAgICBTCishIFNBTCBUSShBTyktICAgICAgICAgICAgICBYCishIFNBTCBUSCAgICAgICAgICAgICAgICAgICBACishIFNBTCBUQ0gtLSAgICAgICAgICAgICAgICBfCishIFNBTCBUT1VHSF4gICAgICAgICAgICAgICBURgorISBTQUwgVFQtICAgICAgICAgICAgICAgICAgXworISBTQUwgVCAgICAgICAgICAgICAgICAgICAgVAorISBTQUwgVUgoQUVJT1VZKS1eICAgICAgICAgKkgKKyEgU0FMIFVSKEFFSU9VWSktXiAgICAgICAgICpSCishIFNBTCBVKEhSKV4gICAgICAgICAgICAgICAqCishIFNBTCBVXiAgICAgICAgICAgICAgICAgICAqCishIFNBTCBVSChBRUlPVVkpLSAgICAgICAgICBICishIFNBTCBVUihBRUlPVVkpLSAgICAgICAgICBSCishIFNBTCBVKEhSKSAgICAgICAgICAgICAgICBfCishIFNBTCBWXiAgICAgICAgICAgICAgICAgICBXCishIFNBTCBWICAgICAgICAgICAgICAgICAgICBGCishIFNBTCBXUl4gICAgICAgICAgICAgICAgICBSCishIFNBTCBXSF4gICAgICAgICAgICAgICAgICBXCishIFNBTCBXKEFFSU9VKS0gICAgICAgICAgICBXCishIFNBTCBYXiAgICAgICAgICAgICAgICAgICBTCishIFNBTCBYICAgICAgICAgICAgICAgICAgICBLUworISBTQUwgWShBRUlPVSktICAgICAgICAgICAgWQorISBTQUwgWlotICAgICAgICAgICAgICAgICAgXworISBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwogKioqIGVuX0FVLm9yaWcuZGljCUZyaSBBcHIgMTUgMTM6MjA6MzYgMjAwNQotLS0tIGVuX0FVLmRpYwlUdWUgSnVuIDIxIDIwOjI0OjE1IDIwMDUKKy0tLSBlbl9BVS5kaWMJV2VkIEp1biAyMiAxNDowNjozNSAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA5MTIsOTE0ICoqKioKICAgQWxhc2thL00KQEAgLTIyNTAsNTMgKzIzNzMsMTIyIEBACiArIEJyYW0vTQogICBicmFpZC9ER1MKICoqKioqKioqKioqKioqKgorKioqIDU3NTMsNTc1NSAqKioqCisgIGNhZC9aU00KKy0gYy9hRQorICBDQUUKKy0tLSA1NzUzLDU3NTQgLS0tLQorKioqKioqKioqKioqKioqCisqKiogODUzNSw4NTM3ICoqKioKKyAgY29uaWZlcm91cworLSBjb25qCisgIGNvbmplY3R1cmFsCistLS0gODUzNCw4NTM1IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDg1NDQsODU0NSAqKioqCistLS0gODU0Miw4NTQ0IC0tLS0KKyAgY29uanVuY3RpdmEvTVMKKysgY29uai4KKyAgY29uanVuY3RpdmUvUworKioqKioqKioqKioqKioqCiAqKiogMTAyODgsMTAyODkgKioqKgotLS0tIDEwMjg4LDEwMjkyIC0tLS0KKy0tLSAxMDI4NywxMDI5MSAtLS0tCiAgIGRCL00KICsgZEJpCiArIGRCbQogKyBkQmQKICAgREJNUwogKioqKioqKioqKioqKioqCisqKiogMTE3ODEsMTE3ODMgKioqKgorICBETkEKKy0gZC9vCisgIERPQgorLS0tIDExNzgzLDExNzg0IC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDEyNDY4LDEyNDY5ICoqKioKLS0tLSAxMjQ3MSwxMjQ3MyAtLS0tCistLS0gMTI0NjksMTI0NzEgLS0tLQogICBEdXRjaC81bQogKyBGYXJzaQogICBEdXRjaHdvbWVuL00KICoqKioqKioqKioqKioqKgorKioqIDEyNTE2LDEyNTE4ICoqKioKKyAgZHlzdHJvcGh5L00KKy0gZQorICBlYQorLS0tIDEyNTE4LDEyNTE5IC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDEzNzc5LDEzNzgxICoqKioKICAgZXN0dWFyeS9NUwogISBldAogICBFVEEKLS0tLSAxMzc4MywxMzc4NiAtLS0tCistLS0gMTM3ODAsMTM3ODMgLS0tLQogICBlc3R1YXJ5L01TCiAhIGV0IGNldGVyYQogISBldCBhbC4KICAgRVRBCiAqKioqKioqKioqKioqKioKKyoqKiAxNTI5NiwxNTI5OCAqKioqCisgIGZqb3JkL1NNCishIGYvSworICBmbGFiLzJ6Wk0KKy0tLSAxNTI5OCwxNTMwMCAtLS0tCisgIGZqb3JkL1NNCishIHByZWYKKyAgZmxhYi8yelpNCisqKioqKioqKioqKioqKioKKyoqKiAxNjQ4MCwxNjQ4MiAqKioqCisgIEZZSQorLSBnLzcKKyAgZ2FiYXJkaW5lL1NNCistLS0gMTY0ODIsMTY0ODMgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMTg1OTksMTg2MDEgKioqKgorICBIRFRWCistIGgvRQorICBoZWFkYWNoZS9TTQorLS0tIDE4NjAwLDE4NjAxIC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDE5MjE0LDE5MjE2ICoqKioKICAgSG9iYmVzCiAhIGhvYmJpdAogICBob2JibGUvUkdTRAotLS0tIDE5MjE5LDE5MjIxIC0tLS0KKy0tLSAxOTIxNCwxOTIxNiAtLS0tCiAgIEhvYmJlcwogISBob2JiaXQvTVMKICAgaG9iYmxlL1JHU0QKICoqKioqKioqKioqKioqKgorKioqIDIxNzkxLDIxNzkzICoqKioKKyAgaml2ZS9EU01HCistIGovaworICBqbnIuCistLS0gMjE3OTEsMjE3OTIgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMjIxMjUsMjIxMjcgKioqKgorICBrY2FsCistIGsvRQorICBLZWFuZQorLS0tIDIyMTI0LDIyMTI1IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDIyNjA2LDIyNjA4ICoqKioKKyAgS3l1c2h1L00KKy0gbC8zCisgIGxhYmVsL0FHYVNECistLS0gMjI2MDQsMjI2MDUgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogMjI4ODUsMjI4ODcgKioqKgogICBsYXNzL1NNCiAtIGxhc3QtZGl0Y2gKICAgbGFzdGVkL2UKLS0tLSAyMjg5MCwyMjg5MSAtLS0tCistLS0gMjI4ODIsMjI4ODMgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogMjI4OTAsMjI4OTIgKioqKgogICBsYXN0L2tKWURTRwogLSBsYXN0LW1pbnV0ZQogICBsYXN0cy9lCi0tLS0gMjI4OTQsMjI4OTUgLS0tLQorLS0tIDIyODg2LDIyODg3IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDI2NDE3LDI2NDE4ICoqKioKLS0tLSAyNjQyMCwyNjQyMiAtLS0tCistLS0gMjY0MTIsMjY0MTQgLS0tLQogICBNb29sYXdhdGFuYQogKyBNb29sZW5hYXIvTQogICBNb29tYmEKQEAgLTIzMDcsNyArMjQ5OSw3IEBACiAgIG5hdGlvbmhvb2QvTQogISBuYXRpb24vTQogICBuYXRpb253aWRlCi0tLS0gMjcxOTIsMjcxOTYgLS0tLQorLS0tIDI3MTg0LDI3MTg4IC0tLS0KICAgbmF0aW9uYWxzLzQKICEgbmF0aW9uYWwvc1FxM1NaCiAgIG5hdGlvbmhvb2QvTQpAQCAtMjMxNSw3MyArMjUwNywxMjMgQEAKICAgbmF0aW9ud2lkZQogKioqKioqKioqKioqKioqCiAqKiogMjcxOTQsMjcxOTUgKioqKgotLS0tIDI3MTk4LDI3MjAxIC0tLS0KKy0tLSAyNzE5MCwyNzE5MyAtLS0tCiAgIG5hdGl2aXR5L01TCiArIG5hdGl2ZWx5CiArIG5hdGl2ZW5lc3MKICAgTkFUTy9NCiAqKioqKioqKioqKioqKioKKyoqKiAyODM2NSwyODM2NyAqKioqCisgIG51enpsZS9TREcKKy0gbi94dnVOVm4KKyAgTnlhaAorLS0tIDI4MzYzLDI4MzY0IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDI5NDY0LDI5NDY2ICoqKioKKyAgb3oKKy0gby96CisgIE96YXJrL01TCistLS0gMjk0NjEsMjk0NjIgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogMzEwMzUsMzEwMzcgKioqKgogICBQawogLSBwL0tGCiAgIHBsLgotLS0tIDMxMDQxLDMxMDQyIC0tLS0KKy0tLSAzMTAzMSwzMTAzMiAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiAzMTI4OCwzMTI4OSAqKioqCi0tLS0gMzEyOTMsMzEyOTUgLS0tLQorLS0tIDMxMjgzLDMxMjg1IC0tLS0KICAgcG5ldW1vbmlhL01TCiArIHBuZXVtb25pYwogICBQTwogKioqKioqKioqKioqKioqCiAqKiogMzE0NjAsMzE0NjEgKioqKgotLS0tIDMxNDY2LDMxNDY4IC0tLS0KKy0tLSAzMTQ1NiwzMTQ1OCAtLS0tCiAgIHBvbXBvbS9NUwogKyBwb21wb24vTQogICBwb21wb3NpdHkvTVMKICoqKioqKioqKioqKioqKgorKioqIDMyODY1LDMyODY3ICoqKioKKyAgcHl4L1MKKy0gcQorICBRYXRhcgorLS0tIDMyODYyLDMyODYzIC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDMzMzc4LDMzMzgwICoqKioKICAgcmF6em1hdGF6egogLSByL2QKICAgUmQvTQotLS0tIDMzMzg1LDMzMzg2IC0tLS0KKy0tLSAzMzM3NCwzMzM3NSAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiAzNDk3OSwzNDk4MSAqKioqCiAgIFJTUENBCiAtIHJ0ZQogICBydWItYS1kdWIKLS0tLSAzNDk4NSwzNDk4NiAtLS0tCistLS0gMzQ5NzQsMzQ5NzUgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogMzYwMTIsMzYwMTQgKioqKgogICBzZWMuCiAhIHMvZWNhCiAgIHNlY2FudC9NUwotLS0tIDM2MDE3LDM2MDE5IC0tLS0KKy0tLSAzNjAwNiwzNjAwOCAtLS0tCiAgIHNlYy4KICEgb3V0cwogICBzZWNhbnQvTVMKICoqKioqKioqKioqKioqKgorKioqIDQwMjQyLDQwMjQ0ICoqKioKKyAgU3plY2h3YW4vTQorISB0LzdrCisgIFRhCistLS0gNDAyMzYsNDAyMzggLS0tLQorICBTemVjaHdhbi9NCishIHRpbmdseQorICBUYQorKioqKioqKioqKioqKioqCiAqKiogNDI2MTYsNDI2MTggKioqKgogICBUeXNvbi9NCiAtIHUKICAgdWJpcXVpdG91c25lc3MKLS0tLSA0MjYyMSw0MjYyMiAtLS0tCistLS0gNDI2MTAsNDI2MTEgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDI5OTAsNDI5OTEgKioqKgotLS0tIDQyOTk0LDQyOTk2IC0tLS0KKy0tLSA0Mjk4Myw0Mjk4NSAtLS0tCiAgIHVuc2NydXB1bG91cwogKyBzZWFyY2hhYmxlCiAgIHVuc2VhcmNoYWJsZQogKioqKioqKioqKioqKioqCisqKiogNDMyNTIsNDMyNTQgKioqKgorICBVemkvTQorLSB2CisgIHZhY2FuY3kvTVMKKy0tLSA0MzI0Niw0MzI0NyAtLS0tCisqKioqKioqKioqKioqKioKICoqKiA0Mzc0OSw0Mzc1MSAqKioqCiAgIFZpbG5pdXMvTQogISB2aW0vTQogICB2aW5haWdyZXR0ZS9NUwotLS0tIDQzNzU0LDQzNzU2IC0tLS0KKy0tLSA0Mzc0Miw0Mzc0NCAtLS0tCiAgIFZpbG5pdXMvTQogISBWaW0vTQogICB2aW5haWdyZXR0ZS9NUwogKioqKioqKioqKioqKioqCisqKiogNDU0OTQsNDU0OTYgKioqKgorICB5aXBwZWUKKy0geS9LCisgIFlNQ0EKKy0tLSA0NTQ4Nyw0NTQ4OCAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiA0NTU4Niw0NTU4OCAqKioqCisgIHphcC9TR1JECistIHovZAorICBaZWFsYW5kZXJzCistLS0gNDU1NzgsNDU1NzkgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogNDU2NTUgKioqKgotLS0tIDQ1NjYwLDQ1NjYxIC0tLS0KKy0tLSA0NTY0Niw0NTY1MiAtLS0tCiAgIHp5bXVyZ3kvUwogKyBuZAorKyB0aGUgdGhlLyEKKysgYSBhLyEKKysgYSBhbi8hCisrIGFuIGEvIQorKyBhbiBhbi8hCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fQ0EuZGlmZiBiL3NyYy9zcGVsbC9lbl9DQS5kaWZmCmluZGV4IDYyZTcyMTMuLmE1N2FkMzQgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9DQS5kaWZmCisrKyBiL3NyYy9zcGVsbC9lbl9DQS5kaWZmCkBAIC0xLDEyICsxLDE1IEBACiAqKiogZW5fQ0Eub3JpZy5hZmYJRnJpIEFwciAxNSAxMzoyMDozNiAyMDA1Ci0tLS0gZW5fQ0EuYWZmCVNhdCBKdW4gMTggMTk6NDI6MTkgMjAwNQorLS0tIGVuX0NBLmFmZglUaHUgSnVuIDIzIDE3OjQzOjI2IDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDMsNCAqKioqCi0tLS0gMyw4IC0tLS0KKy0tLSAzLDExIC0tLS0KICAgCi0rIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t8KLSsgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7fCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CisrIAorKyBSQVIgPworKyBCQUQgIQogKyAKICAgUEZYIEEgWSAxCiAqKioqKioqKioqKioqKioKQEAgLTE1LDcgKzE4LDcgQEAKICEgU0ZYIE4gICB5ICAgICBpY2F0aW9uICAgIHkgCiAhIFNGWCBOICAgMCAgICAgZW4gICAgICAgICBbXmV5XSAKICAgCi0tLS0gMzQsMzcgLS0tLQorLS0tIDM3LDQwIC0tLS0KICAgU0ZYIE4gICBlICAgICBpb24gICAgICAgIGUKICEgU0ZYIE4gICB5ICAgICBpY2F0aW9uICAgIHkKICEgU0ZYIE4gICAwICAgICBlbiAgICAgICAgIFteZXldCkBAIC0yNSw3ICsyOCw3IEBACiAgIFNGWCBIICAgeSAgICAgaWV0aCAgICAgICB5CiAhIFNGWCBIICAgMCAgICAgdGggICAgICAgICBbXnldIAogICAKLS0tLSA0NCw0NiAtLS0tCistLS0gNDcsNDkgLS0tLQogICBTRlggSCAgIHkgICAgIGlldGggICAgICAgeQogISBTRlggSCAgIDAgICAgIHRoICAgICAgICAgW155XQogICAKQEAgLTM0LDEyICszNywxMzcgQEAKICAgU0ZYIEcgICBlICAgICBpbmcgICAgICAgIGUKICEgU0ZYIEcgICAwICAgICBpbmcgICAgICAgIFteZV0gCiAgIAotLS0tIDUxLDUzIC0tLS0KKy0tLSA1NCw1NiAtLS0tCiAgIFNGWCBHICAgZSAgICAgaW5nICAgICAgICBlCiAhIFNGWCBHICAgMCAgICAgaW5nICAgICAgICBbXmVdCiAgIAorKioqKioqKioqKioqKioqCisqKiogOTggKioqKgorLS0tIDEwNSwyMjYgLS0tLQorICBTRlggTCAgIDAgICAgIG1lbnQgICAgICAgLgorKyAKKysgTUFQIDUKKysgTUFQIGHg4eLj5OUKKysgTUFQIGXo6errCisrIE1BUCBp7O3u7worKyBNQVAgb/Lz9PX2CisrIE1BUCB1+fr7/AorKyBNQVAgbvEKKysgTUFQIGPnCisrIE1BUCB5//0KKysgTUFQIHPfCisrIAorKyAjIFRoaXMgY29tZXMgZnJvbSBBc3BlbGwgZW5fcGhvbmV0LmRhdCwgdmVyc2lvbiAxLjEsIDIwMDAtMDEtMDcKKysgCisrIFNBTCBBSChBRUlPVVkpLV4gICAgICAgICAqSAorKyBTQUwgQVIoQUVJT1VZKS1eICAgICAgICAgKlIKKysgU0FMIEEoSFIpXiAgICAgICAgICAgICAgICoKKysgU0FMIEFeICAgICAgICAgICAgICAgICAgICoKKysgU0FMIEFIKEFFSU9VWSktICAgICAgICAgIEgKKysgU0FMIEFSKEFFSU9VWSktICAgICAgICAgIFIKKysgU0FMIEEoSFIpICAgICAgICAgICAgICAgIF8KKysgU0FMIMBeICAgICAgICAgICAgICAgICAgICoKKysgU0FMIMVeICAgICAgICAgICAgICAgICAgICoKKysgU0FMIEJCLSAgICAgICAgICAgICAgICAgIF8KKysgU0FMIEIgICAgICAgICAgICAgICAgICAgIEIKKysgU0FMIENRLSAgICAgICAgICAgICAgICAgIF8KKysgU0FMIENJQSAgICAgICAgICAgICAgICAgIFgKKysgU0FMIENIICAgICAgICAgICAgICAgICAgIFgKKysgU0FMIEMoRUlZKS0gICAgICAgICAgICAgIFMKKysgU0FMIENLICAgICAgICAgICAgICAgICAgIEsKKysgU0FMIENPVUdIXiAgICAgICAgICAgICAgIEtGCisrIFNBTCBDQzwgICAgICAgICAgICAgICAgICBDCisrIFNBTCBDICAgICAgICAgICAgICAgICAgICBLCisrIFNBTCBERyhFSVkpICAgICAgICAgICAgICBLCisrIFNBTCBERC0gICAgICAgICAgICAgICAgICBfCisrIFNBTCBEICAgICAgICAgICAgICAgICAgICBUCisrIFNBTCDJPCAgICAgICAgICAgICAgICAgICBFCisrIFNBTCBFSChBRUlPVVkpLV4gICAgICAgICAqSAorKyBTQUwgRVIoQUVJT1VZKS1eICAgICAgICAgKlIKKysgU0FMIEUoSFIpXiAgICAgICAgICAgICAgICoKKysgU0FMIEVOT1VHSF4kICAgICAgICAgICAgICpORgorKyBTQUwgRV4gICAgICAgICAgICAgICAgICAgKgorKyBTQUwgRUgoQUVJT1VZKS0gICAgICAgICAgSAorKyBTQUwgRVIoQUVJT1VZKS0gICAgICAgICAgUgorKyBTQUwgRShIUikgICAgICAgICAgICAgICAgXworKyBTQUwgRkYtICAgICAgICAgICAgICAgICAgXworKyBTQUwgRiAgICAgICAgICAgICAgICAgICAgRgorKyBTQUwgR05eICAgICAgICAgICAgICAgICAgTgorKyBTQUwgR04kICAgICAgICAgICAgICAgICAgTgorKyBTQUwgR05TJCAgICAgICAgICAgICAgICAgTlMKKysgU0FMIEdORUQkICAgICAgICAgICAgICAgIE4KKysgU0FMIEdIKEFFSU9VWSktICAgICAgICAgIEsKKysgU0FMIEdIICAgICAgICAgICAgICAgICAgIF8KKysgU0FMIEdHOSAgICAgICAgICAgICAgICAgIEsKKysgU0FMIEcgICAgICAgICAgICAgICAgICAgIEsKKysgU0FMIEggICAgICAgICAgICAgICAgICAgIEgKKysgU0FMIElIKEFFSU9VWSktXiAgICAgICAgICpICisrIFNBTCBJUihBRUlPVVkpLV4gICAgICAgICAqUgorKyBTQUwgSShIUileICAgICAgICAgICAgICAgKgorKyBTQUwgSV4gICAgICAgICAgICAgICAgICAgKgorKyBTQUwgSU5HNiAgICAgICAgICAgICAgICAgTgorKyBTQUwgSUgoQUVJT1VZKS0gICAgICAgICAgSAorKyBTQUwgSVIoQUVJT1VZKS0gICAgICAgICAgUgorKyBTQUwgSShIUikgICAgICAgICAgICAgICAgXworKyBTQUwgSiAgICAgICAgICAgICAgICAgICAgSworKyBTQUwgS05eICAgICAgICAgICAgICAgICAgTgorKyBTQUwgS0stICAgICAgICAgICAgICAgICAgXworKyBTQUwgSyAgICAgICAgICAgICAgICAgICAgSworKyBTQUwgTEFVR0heICAgICAgICAgICAgICAgTEYKKysgU0FMIExMLSAgICAgICAgICAgICAgICAgIF8KKysgU0FMIEwgICAgICAgICAgICAgICAgICAgIEwKKysgU0FMIE1CJCAgICAgICAgICAgICAgICAgIE0KKysgU0FMIE1NICAgICAgICAgICAgICAgICAgIE0KKysgU0FMIE0gICAgICAgICAgICAgICAgICAgIE0KKysgU0FMIE5OLSAgICAgICAgICAgICAgICAgIF8KKysgU0FMIE4gICAgICAgICAgICAgICAgICAgIE4KKysgU0FMIE9IKEFFSU9VWSktXiAgICAgICAgICpICisrIFNBTCBPUihBRUlPVVkpLV4gICAgICAgICAqUgorKyBTQUwgTyhIUileICAgICAgICAgICAgICAgKgorKyBTQUwgT14gICAgICAgICAgICAgICAgICAgKgorKyBTQUwgT0goQUVJT1VZKS0gICAgICAgICAgSAorKyBTQUwgT1IoQUVJT1VZKS0gICAgICAgICAgUgorKyBTQUwgTyhIUikgICAgICAgICAgICAgICAgXworKyBTQUwgUEggICAgICAgICAgICAgICAgICAgRgorKyBTQUwgUE5eICAgICAgICAgICAgICAgICAgTgorKyBTQUwgUFAtICAgICAgICAgICAgICAgICAgXworKyBTQUwgUCAgICAgICAgICAgICAgICAgICAgUAorKyBTQUwgUSAgICAgICAgICAgICAgICAgICAgSworKyBTQUwgUkheICAgICAgICAgICAgICAgICAgUgorKyBTQUwgUk9VR0heICAgICAgICAgICAgICAgUkYKKysgU0FMIFJSLSAgICAgICAgICAgICAgICAgIF8KKysgU0FMIFIgICAgICAgICAgICAgICAgICAgIFIKKysgU0FMIFNDSChFT1UpLSAgICAgICAgICAgIFNLCisrIFNBTCBTQyhJRVkpLSAgICAgICAgICAgICBTCisrIFNBTCBTSCAgICAgICAgICAgICAgICAgICBYCisrIFNBTCBTSShBTyktICAgICAgICAgICAgICBYCisrIFNBTCBTUy0gICAgICAgICAgICAgICAgICBfCisrIFNBTCBTICAgICAgICAgICAgICAgICAgICBTCisrIFNBTCBUSShBTyktICAgICAgICAgICAgICBYCisrIFNBTCBUSCAgICAgICAgICAgICAgICAgICBACisrIFNBTCBUQ0gtLSAgICAgICAgICAgICAgICBfCisrIFNBTCBUT1VHSF4gICAgICAgICAgICAgICBURgorKyBTQUwgVFQtICAgICAgICAgICAgICAgICAgXworKyBTQUwgVCAgICAgICAgICAgICAgICAgICAgVAorKyBTQUwgVUgoQUVJT1VZKS1eICAgICAgICAgKkgKKysgU0FMIFVSKEFFSU9VWSktXiAgICAgICAgICpSCisrIFNBTCBVKEhSKV4gICAgICAgICAgICAgICAqCisrIFNBTCBVXiAgICAgICAgICAgICAgICAgICAqCisrIFNBTCBVSChBRUlPVVkpLSAgICAgICAgICBICisrIFNBTCBVUihBRUlPVVkpLSAgICAgICAgICBSCisrIFNBTCBVKEhSKSAgICAgICAgICAgICAgICBfCisrIFNBTCBWXiAgICAgICAgICAgICAgICAgICBXCisrIFNBTCBWICAgICAgICAgICAgICAgICAgICBGCisrIFNBTCBXUl4gICAgICAgICAgICAgICAgICBSCisrIFNBTCBXSF4gICAgICAgICAgICAgICAgICBXCisrIFNBTCBXKEFFSU9VKS0gICAgICAgICAgICBXCisrIFNBTCBYXiAgICAgICAgICAgICAgICAgICBTCisrIFNBTCBYICAgICAgICAgICAgICAgICAgICBLUworKyBTQUwgWShBRUlPVSktICAgICAgICAgICAgWQorKyBTQUwgWlotICAgICAgICAgICAgICAgICAgXworKyBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwogKioqIGVuX0NBLm9yaWcuZGljCVNhdCBBcHIgMTYgMTQ6NDA6MDYgMjAwNQotLS0tIGVuX0NBLmRpYwlUdWUgSnVuIDIxIDIwOjI1OjAxIDIwMDUKKy0tLSBlbl9DQS5kaWMJV2VkIEp1biAyMiAxNDowNjo0MyAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA0Niw0OCAqKioqCiAgIFIvRwpAQCAtNDcsNzAgKzE3NSwxNDUgQEAKICAgZWFzdGVybm1vc3QKIC0tLSA0Niw0NyAtLS0tCiAqKioqKioqKioqKioqKioKLSoqKiA1OSw2MSAqKioqCisqKiogNTksNjYgKioqKgogICBhCiAhIGIvS0dEVAogICBFbW1leS9NCi0tLS0gNTgsNjEgLS0tLQorICBiYWdnYWdlbWVuCishIGMvRUFTCisgIGFudGltYWxhcmlhbC9TCistIGQvQU1WCisgIGVudmVsb3Blci9NCistLS0gNTgsNjUgLS0tLQogICBhCiAhIHByb2JpbmcKICEgcHJvYmVkCiAgIEVtbWV5L00KKyAgYmFnZ2FnZW1lbgorISByZWNzCisgIGFudGltYWxhcmlhbC9TCisgIGVudmVsb3Blci9NCiAqKioqKioqKioqKioqKioKLSoqKiA4Miw4NCAqKioqCi0gIG0vWEcKKyoqKiA2OCw5OCAqKioqCisgIEJhbGVhcmljL00KKyEgZS9GRFNNCishIGYvQlZYVAorICBLYXJhbWF6b3YvTQorISBnL1ZYQgorISBoL1ZFTVMKKyEgaQorICBCcmFpbGxlL0RTR00KKy0gai9GVFYKKyAgdHJhbnNjZWl2ZXIvTVMKKyEgay9GR0lTRQorICBwcm9taXNpbmcvWVUKKyEgbC9YVEpHVgorICBFbW1ldC9NCishIG0vWEcKICEgbi9GS1QKLSAgbwotLS0tIDgyLDg0IC0tLS0KLSAgbS9YRwotISBwcm9uCi0gIG8KLSoqKioqKioqKioqKioqKgotKioqIDg2LDkxICoqKioKKyEgbworICB4dmlpaQogICBmaXR0aW5nL1BTWQotLSBwL0tSVAotICBxCishIHAvS1JUCishIHEKICEgci9HVlRKCiAhIHMvRksKICAgZmF0dGluZwotLS0tIDg2LDg5IC0tLS0KKyEgdC9CR1hUSgorICBGcmFuY2lza2EvTQorICBvZWRpcGFsCishIHUKKyEgdi9WVEsKKyEgdy9KWFRHVgorICB5b3V0aHMKKy0tLSA2Nyw5NCAtLS0tCisgIEJhbGVhcmljL00KKyEgZmVucworICBLYXJhbWF6b3YvTQorISBnZW5zCisgIEJyYWlsbGUvRFNHTQorICB0cmFuc2NlaXZlci9NUworISBpbmtpbmcKKyEgZGlza2luZworISBjb25raW5nCishIGlua3MKKyEgZGlza3MKKyEgY29ua3MKKyAgcHJvbWlzaW5nL1lVCishIGxpbmdzCisgIEVtbWV0L00KKyEgbWluZworISBwcm9uCisgIHh2aWlpCiAgIGZpdHRpbmcvUFNZCi0gIHEKICEgY29ucwogICBmYXR0aW5nCi0qKioqKioqKioqKioqKioKLSoqKiA5NCw5NiAqKioqCishIHRpbmdzCisgIEZyYW5jaXNrYS9NCiAgIG9lZGlwYWwKLS0gdQotICB2L1ZUSwotLS0tIDkyLDkzIC0tLS0KKyEgdml2ZQorISB3ZW5zCishIHdpbmdzCisgIHlvdXRocworKioqKioqKioqKioqKioqCisqKiogMTAwLDEwMyAqKioqCisgIHgKKyEgeS9GCishIHovSkdUCisgIGNydW1ieS9SVAorLS0tIDk2LDk4IC0tLS0KKyAgeAorISB6aW5ncworICBjcnVtYnkvUlQKKyoqKioqKioqKioqKioqKgorKioqIDcxNCw3MTUgKioqKgorLS0tIDcwOSw3MTEgLS0tLQorICBzaWx0eS9SVAorKyBjb25qLgorICBjb25qZWN0dXJhbC9ZCiAqKioqKioqKioqKioqKioKICoqKiAzMTQ1LDMxNDYgKioqKgotLS0tIDMxNDIsMzE0NCAtLS0tCistLS0gMzE0MSwzMTQzIC0tLS0KICAgc2VtZXN0ZXIvTVMKICsgZXRjLgogICBldGNoL0daU1JESgogKioqKioqKioqKioqKioqCisqKiogNjE5MCw2MTkxICoqKioKKy0tLSA2MTg3LDYxOTAgLS0tLQorICBQYXVsYS9NCisrIGNvbmVkCisrIGNvbmUvTVMKKyAgY29uZWZsb3dlci9NCisqKioqKioqKioqKioqKioKICoqKiA3MDIyLDcwMjQgKioqKgogICBEQQogLSBEQgogICBEQwotLS0tIDcwMjAsNzAyMSAtLS0tCistLS0gNzAyMSw3MDIyIC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDczOTUsNzM5NyAqKioqCisgIHJlYworISByZWQvWVBTCisgIEVhbW9uL00KKy0tLSA3MzkzLDczOTUgLS0tLQorICByZWMKKyEgcmVkL1lQU00KKyAgRWFtb24vTQogKioqKioqKioqKioqKioqCiAqKiogODM4OCw4MzkwICoqKioKICAgc2xvdHRpbmcKIC0gT04KICAgT1IKLS0tLSA4Mzg1LDgzODYgLS0tLQorLS0tIDgzODYsODM4NyAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA5MTI1LDkxMjcgKioqKgogICBwZXJjaGFuY2UKIC0gcnRlCiAgIGhhc3RpbmVzcy9NUwotLS0tIDkxMjEsOTEyMiAtLS0tCistLS0gOTEyMiw5MTIzIC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDEwNjAzLDEwNjA0ICoqKioKLS0tLSAxMDU5OCwxMDYwMiAtLS0tCistLS0gMTA1OTksMTA2MDMgLS0tLQogICBkQi9NCiArIGRCaQogKyBkQm0KQEAgLTEyMSwxOSArMzI0LDE5IEBACiAgIEdhcm9sZC9NCiAtIGRiCiAgIHRvbGxob3VzZS9NCi0tLS0gMTA2MTMsMTA2MTQgLS0tLQorLS0tIDEwNjE0LDEwNjE1IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDExMDE3LDExMDE5ICoqKioKICAgaHIKIC0gaHQKICAgTUNJL00KLS0tLSAxMTAxNCwxMTAxNSAtLS0tCistLS0gMTEwMTUsMTEwMTYgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogMTE2MDksMTE2MTEgKioqKgogICBkZW11cmVuZXNzL1NNCiAhIG5kL0EKICAgTUlBCi0tLS0gMTE2MDUsMTE2MDcgLS0tLQorLS0tIDExNjA2LDExNjA4IC0tLS0KICAgZGVtdXJlbmVzcy9TTQogISBuZAogICBNSUEKQEAgLTE0MiwxMyArMzQ1LDEzIEBACiAgIGVuZ3Jvc3MvTERSU0cKICEgaG9iYml0CiAgIGNlcnRhaW50eS9NVVMKLS0tLSAxMzY2NSwxMzY2NyAtLS0tCistLS0gMTM2NjYsMTM2NjggLS0tLQogICBlbmdyb3NzL0xEUlNHCiAhIGhvYmJpdC9NUwogICBjZXJ0YWludHkvTVVTCiAqKioqKioqKioqKioqKioKICoqKiAxNDQzNCwxNDQzNSAqKioqCi0tLS0gMTQ0MzAsMTQ0MzIgLS0tLQorLS0tIDE0NDMxLDE0NDMzIC0tLS0KICAgcG9tcG9tL01TCiArIHBvbXBvbi9NCiAgIERldmxhbmQvTQpAQCAtMTU3LDcgKzM2MCw3IEBACiAgIGJsb29kc3RvbmUvTQogISBjZXRlcmEvUwogICBzdG9ybS9TR1pSRE0KLS0tLSAxOTI2MiwxOTI2NCAtLS0tCistLS0gMTkyNjMsMTkyNjUgLS0tLQogICBibG9vZHN0b25lL00KICEgZXQgY2V0ZXJhL1MKICAgc3Rvcm0vU0daUkRNCkBAIC0xNjYsMTMgKzM2OSwyOCBAQAogICBIYW5zZWwvTQogISByaW5nL0daSkRSTQogICBIYW5zZW4vTQotLS0tIDIwMTU5LDIwMTYxIC0tLS0KKy0tLSAyMDE2MCwyMDE2MiAtLS0tCiAgIEhhbnNlbC9NCiAhIHJpbmcvR1pKRFJNUwogICBIYW5zZW4vTQogKioqKioqKioqKioqKioqCisqKiogMjY5NjAsMjY5NjUgKioqKgorICBXaXNlbmhlaW1lci9NCishIGRpc2MvR0RNCisgIGhvcnRpY3VsdHVyaXN0L1NNCisgIGlzb3Ryb3BpY2FsbHkKKyEgZGlzaC9ERworICBkaXNidXJzZXIvTQorLS0tIDI2OTU4LDI2OTYzIC0tLS0KKyAgV2lzZW5oZWltZXIvTQorISBkaXNjL0dETVMKKyAgaG9ydGljdWx0dXJpc3QvU00KKyAgaXNvdHJvcGljYWxseQorISBkaXNoL0RHTVMKKyAgZGlzYnVyc2VyL00KKyoqKioqKioqKioqKioqKgogKioqIDI4MTU3LDI4MTU4ICoqKioKLS0tLSAyODE1NCwyODE1NiAtLS0tCistLS0gMjgxNTUsMjgxNTcgLS0tLQogICBwbmV1bW9uaWEvTVMKICsgcG5ldW1vbmljCiAgIFNvY3JhdGljL1MKQEAgLTE4MSwxNiArMzk5LDE2IEBACiAgIGNsYXF1ZS9NUwogLSBldGMKICAgQ2hhZC9NCi0tLS0gMzQ5OTcsMzQ5OTggLS0tLQorLS0tIDM0OTk4LDM0OTk5IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDM2NzA3LDM2NzA4ICoqKioKLS0tLSAzNjcwNCwzNjcwNiAtLS0tCistLS0gMzY3MDUsMzY3MDcgLS0tLQogICBNb29keS9NCiArIE1vb2xlbmFhci9NCiAgIEJyZXNlbmhhbS9NCiAqKioqKioqKioqKioqKioKICoqKiA1MDI3Miw1MDI3MyAqKioqCi0tLS0gNTAyNzAsNTAyNzIgLS0tLQorLS0tIDUwMjcxLDUwMjczIC0tLS0KICAgRHV0Y2gvTQogKyBGYXJzaQogICBTaGFyb24vTQpAQCAtMTk5LDE4ICs0MTcsMjMgQEAKICAgaGF0Y2hlcnkvTVMKICEgdmltL1NNCiAgIGNvbXBhdHJpb3QvTVMKLS0tLSA1MjU2NCw1MjU2NiAtLS0tCistLS0gNTI1NjUsNTI1NjcgLS0tLQogICBoYXRjaGVyeS9NUwogISBWaW0vU00KICAgY29tcGF0cmlvdC9NUwogKioqKioqKioqKioqKioqCiAqKiogNTM0OTAsNTM0OTEgKioqKgotLS0tIDUzNDg5LDUzNDkxIC0tLS0KKy0tLSA1MzQ5MCw1MzQ5MiAtLS0tCiAgIHVuc2VhcmNoYWJsZQogKyBzZWFyY2hhYmxlCiAgIGZlbGljaXRvdXMvSVkKICoqKioqKioqKioqKioqKgogKioqIDYyMzQxICoqKioKLS0tLSA2MjM0MSw2MjM0MiAtLS0tCistLS0gNjIzNDIsNjIzNDggLS0tLQogICBkYXRhL00KICsgZXQgYWwuCisrIHRoZSB0aGUvIQorKyBhIGEvIQorKyBhIGFuLyEKKysgYW4gYS8hCisrIGFuIGFuLyEKZGlmZiAtLWdpdCBhL3NyYy9zcGVsbC9lbl9HQi5kaWZmIGIvc3JjL3NwZWxsL2VuX0dCLmRpZmYKaW5kZXggNDJmZGM1ZC4uYzJlYzQwNCAxMDA2NDQKLS0tIGEvc3JjL3NwZWxsL2VuX0dCLmRpZmYKKysrIGIvc3JjL3NwZWxsL2VuX0dCLmRpZmYKQEAgLTEsMTcgKzEsMjAgQEAKICoqKiBlbl9HQi5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9HQi5hZmYJU2F0IEp1biAxOCAxOTo0MjoyNCAyMDA1CistLS0gZW5fR0IuYWZmCVRodSBKdW4gMjMgMTc6NDM6MzAgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNyw5ICoqKioKICAgU0VUIElTTzg4NTktMQogISBUUlkgZXNpYelucnRvbGNkdWdtcGhieWZ2a3ctJy56cWp4U05SVExDR0RNUEhCRUFVWU9GSVZLV/bi9FpRSljF5+ju6uDv/OTxIAogICBSRVAgMjQKLS0tLSA3LDE0IC0tLS0KKy0tLSA3LDE3IC0tLS0KICAgU0VUIElTTzg4NTktMQogISBUUlkgZXNpYelucnRvbGNkdWdtcGhieWZ2a3ctJy56cWp4U05SVExDR0RNUEhCRUFVWU9GSVZLV/bi9FpRSljF5+ju6uDv/OTxCiAhIAotISBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t8KLSEgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7fCi0hIFVQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3worISBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CishIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKyEgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/worISAKKyEgUkFSID8KKyEgQkFEICEKICEgCiAgIFJFUCAyNAogKioqKioqKioqKioqKioqCkBAIC0zNiw3ICszOSw3IEBACiAgIFBGWCBFIFkgMQogISBQRlggRSAwIGRpcyAuIAogICBQRlggRiBZIDUKLS0tLSAzOSw1OCAtLS0tCistLS0gNDIsNjEgLS0tLQogICBQRlggQSBZIDIKICEgUEZYIEEgMCByZSBbXmVdCiAhIFBGWCBBIDAgcmUtIGUKQEAgLTQ1NCw3ICs0NTcsNyBAQAogICBTRlggVCB5IGllc3QgW15hZWlvdV15CiAhIFNGWCBUIDAgZXIgW2FlaW91XXkgCiAgIFNGWCBUIDAgZXN0IFthZWlvdV15Ci0tLS0gNjIsNDU2IC0tLS0KKy0tLSA2NSw0NTkgLS0tLQogICBQRlggRiAwIGNvbCBsCiAhIFBGWCBGIDAgY29uIFteYWJlaGlsbW9wcnVdLgogICBQRlggSyBZIDEKQEAgLTE1MzgsNyArMTU0MSw3IEBACiAhIFNGWCAzIDAgaXN0J3MgW2FlaW91YnBdeSAKICEgU0ZYIDMgbyBpc3QncyBvIAogISBTRlggMyAwIGlzdCdzIFteZW95XSAKLS0tLSA0NjMsMTE0OCAtLS0tCistLS0gNDY2LDEyNzIgLS0tLQogICBTRlggUiBZIDcyCiAhIFNGWCBSIDAgciBlCiAhIFNGWCBSIDAgcnMgZQpAQCAtMjIyNSw4ICsyMjI4LDEyOSBAQAogISBTRlggMyAwIGlzdCdzIFthZWlvdWJwXXkKICEgU0ZYIDMgbyBpc3QncyBvCiAhIFNGWCAzIDAgaXN0J3MgW15lb3ldCishIAorISBNQVAgNQorISBNQVAgYeDh4uPk5QorISBNQVAgZejp6usKKyEgTUFQIGns7e7vCishIE1BUCBv8vP09fYKKyEgTUFQIHX5+vv8CishIE1BUCBu8QorISBNQVAgY+cKKyEgTUFQIHn//QorISBNQVAgc98KKyEgCishICMgVGhpcyBjb21lcyBmcm9tIEFzcGVsbCBlbl9waG9uZXQuZGF0LCB2ZXJzaW9uIDEuMSwgMjAwMC0wMS0wNworISAKKyEgU0FMIEFIKEFFSU9VWSktXiAgICAgICAgICpICishIFNBTCBBUihBRUlPVVkpLV4gICAgICAgICAqUgorISBTQUwgQShIUileICAgICAgICAgICAgICAgKgorISBTQUwgQV4gICAgICAgICAgICAgICAgICAgKgorISBTQUwgQUgoQUVJT1VZKS0gICAgICAgICAgSAorISBTQUwgQVIoQUVJT1VZKS0gICAgICAgICAgUgorISBTQUwgQShIUikgICAgICAgICAgICAgICAgXworISBTQUwgwF4gICAgICAgICAgICAgICAgICAgKgorISBTQUwgxV4gICAgICAgICAgICAgICAgICAgKgorISBTQUwgQkItICAgICAgICAgICAgICAgICAgXworISBTQUwgQiAgICAgICAgICAgICAgICAgICAgQgorISBTQUwgQ1EtICAgICAgICAgICAgICAgICAgXworISBTQUwgQ0lBICAgICAgICAgICAgICAgICAgWAorISBTQUwgQ0ggICAgICAgICAgICAgICAgICAgWAorISBTQUwgQyhFSVkpLSAgICAgICAgICAgICAgUworISBTQUwgQ0sgICAgICAgICAgICAgICAgICAgSworISBTQUwgQ09VR0heICAgICAgICAgICAgICAgS0YKKyEgU0FMIENDPCAgICAgICAgICAgICAgICAgIEMKKyEgU0FMIEMgICAgICAgICAgICAgICAgICAgIEsKKyEgU0FMIERHKEVJWSkgICAgICAgICAgICAgIEsKKyEgU0FMIERELSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIEQgICAgICAgICAgICAgICAgICAgIFQKKyEgU0FMIMk8ICAgICAgICAgICAgICAgICAgIEUKKyEgU0FMIEVIKEFFSU9VWSktXiAgICAgICAgICpICishIFNBTCBFUihBRUlPVVkpLV4gICAgICAgICAqUgorISBTQUwgRShIUileICAgICAgICAgICAgICAgKgorISBTQUwgRU5PVUdIXiQgICAgICAgICAgICAgKk5GCishIFNBTCBFXiAgICAgICAgICAgICAgICAgICAqCishIFNBTCBFSChBRUlPVVkpLSAgICAgICAgICBICishIFNBTCBFUihBRUlPVVkpLSAgICAgICAgICBSCishIFNBTCBFKEhSKSAgICAgICAgICAgICAgICBfCishIFNBTCBGRi0gICAgICAgICAgICAgICAgICBfCishIFNBTCBGICAgICAgICAgICAgICAgICAgICBGCishIFNBTCBHTl4gICAgICAgICAgICAgICAgICBOCishIFNBTCBHTiQgICAgICAgICAgICAgICAgICBOCishIFNBTCBHTlMkICAgICAgICAgICAgICAgICBOUworISBTQUwgR05FRCQgICAgICAgICAgICAgICAgTgorISBTQUwgR0goQUVJT1VZKS0gICAgICAgICAgSworISBTQUwgR0ggICAgICAgICAgICAgICAgICAgXworISBTQUwgR0c5ICAgICAgICAgICAgICAgICAgSworISBTQUwgRyAgICAgICAgICAgICAgICAgICAgSworISBTQUwgSCAgICAgICAgICAgICAgICAgICAgSAorISBTQUwgSUgoQUVJT1VZKS1eICAgICAgICAgKkgKKyEgU0FMIElSKEFFSU9VWSktXiAgICAgICAgICpSCishIFNBTCBJKEhSKV4gICAgICAgICAgICAgICAqCishIFNBTCBJXiAgICAgICAgICAgICAgICAgICAqCishIFNBTCBJTkc2ICAgICAgICAgICAgICAgICBOCishIFNBTCBJSChBRUlPVVkpLSAgICAgICAgICBICishIFNBTCBJUihBRUlPVVkpLSAgICAgICAgICBSCishIFNBTCBJKEhSKSAgICAgICAgICAgICAgICBfCishIFNBTCBKICAgICAgICAgICAgICAgICAgICBLCishIFNBTCBLTl4gICAgICAgICAgICAgICAgICBOCishIFNBTCBLSy0gICAgICAgICAgICAgICAgICBfCishIFNBTCBLICAgICAgICAgICAgICAgICAgICBLCishIFNBTCBMQVVHSF4gICAgICAgICAgICAgICBMRgorISBTQUwgTEwtICAgICAgICAgICAgICAgICAgXworISBTQUwgTCAgICAgICAgICAgICAgICAgICAgTAorISBTQUwgTUIkICAgICAgICAgICAgICAgICAgTQorISBTQUwgTU0gICAgICAgICAgICAgICAgICAgTQorISBTQUwgTSAgICAgICAgICAgICAgICAgICAgTQorISBTQUwgTk4tICAgICAgICAgICAgICAgICAgXworISBTQUwgTiAgICAgICAgICAgICAgICAgICAgTgorISBTQUwgT0goQUVJT1VZKS1eICAgICAgICAgKkgKKyEgU0FMIE9SKEFFSU9VWSktXiAgICAgICAgICpSCishIFNBTCBPKEhSKV4gICAgICAgICAgICAgICAqCishIFNBTCBPXiAgICAgICAgICAgICAgICAgICAqCishIFNBTCBPSChBRUlPVVkpLSAgICAgICAgICBICishIFNBTCBPUihBRUlPVVkpLSAgICAgICAgICBSCishIFNBTCBPKEhSKSAgICAgICAgICAgICAgICBfCishIFNBTCBQSCAgICAgICAgICAgICAgICAgICBGCishIFNBTCBQTl4gICAgICAgICAgICAgICAgICBOCishIFNBTCBQUC0gICAgICAgICAgICAgICAgICBfCishIFNBTCBQICAgICAgICAgICAgICAgICAgICBQCishIFNBTCBRICAgICAgICAgICAgICAgICAgICBLCishIFNBTCBSSF4gICAgICAgICAgICAgICAgICBSCishIFNBTCBST1VHSF4gICAgICAgICAgICAgICBSRgorISBTQUwgUlItICAgICAgICAgICAgICAgICAgXworISBTQUwgUiAgICAgICAgICAgICAgICAgICAgUgorISBTQUwgU0NIKEVPVSktICAgICAgICAgICAgU0sKKyEgU0FMIFNDKElFWSktICAgICAgICAgICAgIFMKKyEgU0FMIFNIICAgICAgICAgICAgICAgICAgIFgKKyEgU0FMIFNJKEFPKS0gICAgICAgICAgICAgIFgKKyEgU0FMIFNTLSAgICAgICAgICAgICAgICAgIF8KKyEgU0FMIFMgICAgICAgICAgICAgICAgICAgIFMKKyEgU0FMIFRJKEFPKS0gICAgICAgICAgICAgIFgKKyEgU0FMIFRIICAgICAgICAgICAgICAgICAgIEAKKyEgU0FMIFRDSC0tICAgICAgICAgICAgICAgIF8KKyEgU0FMIFRPVUdIXiAgICAgICAgICAgICAgIFRGCishIFNBTCBUVC0gICAgICAgICAgICAgICAgICBfCishIFNBTCBUICAgICAgICAgICAgICAgICAgICBUCishIFNBTCBVSChBRUlPVVkpLV4gICAgICAgICAqSAorISBTQUwgVVIoQUVJT1VZKS1eICAgICAgICAgKlIKKyEgU0FMIFUoSFIpXiAgICAgICAgICAgICAgICoKKyEgU0FMIFVeICAgICAgICAgICAgICAgICAgICoKKyEgU0FMIFVIKEFFSU9VWSktICAgICAgICAgIEgKKyEgU0FMIFVSKEFFSU9VWSktICAgICAgICAgIFIKKyEgU0FMIFUoSFIpICAgICAgICAgICAgICAgIF8KKyEgU0FMIFZeICAgICAgICAgICAgICAgICAgIFcKKyEgU0FMIFYgICAgICAgICAgICAgICAgICAgIEYKKyEgU0FMIFdSXiAgICAgICAgICAgICAgICAgIFIKKyEgU0FMIFdIXiAgICAgICAgICAgICAgICAgIFcKKyEgU0FMIFcoQUVJT1UpLSAgICAgICAgICAgIFcKKyEgU0FMIFheICAgICAgICAgICAgICAgICAgIFMKKyEgU0FMIFggICAgICAgICAgICAgICAgICAgIEtTCishIFNBTCBZKEFFSU9VKS0gICAgICAgICAgICBZCishIFNBTCBaWi0gICAgICAgICAgICAgICAgICBfCishIFNBTCBaICAgICAgICAgICAgICAgICAgICBTCiAqKiogZW5fR0Iub3JpZy5kaWMJU3VuIEFwciAxNyAxODowODo1MCAyMDA1Ci0tLS0gZW5fR0IuZGljCVR1ZSBKdW4gMjEgMjA6MjY6MTEgMjAwNQorLS0tIGVuX0dCLmRpYwlXZWQgSnVuIDIyIDE0OjA2OjQ2IDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDE4NywxODkgKioqKgogICBhaXRjaC9TTQpAQCAtMjIzNCw2ICsyMzU4LDE4IEBACiAgIGFsLUphemVlcmEKIC0tLSAxODcsMTg4IC0tLS0KICoqKioqKioqKioqKioqKgorKioqIDE3OTUsMTc5NiAqKioqCistLS0gMTc5NCwxNzk2IC0tLS0KKyAgY29uaWMvUworKyBjb25qLgorICBjb25qZWN0dXJhbAorKioqKioqKioqKioqKioqCisqKiogMjEwMywyMTA1ICoqKioKKyAgY3phcnNoaXAKKy0gZC9vCisgIGQnYXJ0CistLS0gMjEwMywyMTA0IC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDIxNDgsMjE1MCAqKioqCiAgIGRhenpsZS9EUmtHSlMKIC0gZEJtCkBAIC0yMjgzLDggKzI0MTksMTQgQEAKICsgZEJkCiAgIERDQgogKioqKioqKioqKioqKioqCisqKiogMTE1OTEsMTE1OTMgKioqKgorICBk6XJhaWxsZXVyL1NNCistIGUKKyAgZSdlbgorLS0tIDExNTkwLDExNTkxIC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDE0NTkxLDE0NTkyICoqKioKLS0tLSAxNDU5MCwxNDU5MiAtLS0tCistLS0gMTQ1ODksMTQ1OTEgLS0tLQogICBuYXRpdmUvU1AKICsgbmF0aXZlbHkKICAgbmF0aXZpdHkvU00KQEAgLTIyOTMsMjIgKzI0MzUsMzQgQEAKICAgUlNQQ0EKIC0gcnRlCiAgIHJ1YmF0aQotLS0tIDE2MTcyLDE2MTczIC0tLS0KKy0tLSAxNjE3MSwxNjE3MiAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAxNzI1MSwxNzI1MyAqKioqCisgIHPpYW5jZS9TTQorLSB0L2FjCisgIFQnYW5nCistLS0gMTcyNDksMTcyNTAgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogMTc4MDgsMTc4MDkgKioqKgotLS0tIDE3ODA3LDE3ODA5IC0tLS0KKy0tLSAxNzgwNSwxNzgwNyAtLS0tCiAgIHVuc2VhcmNoYWJsZQogKyBzZWFyY2hhYmxlCiAgIHVuc2hha2FibGUvWQogKioqKioqKioqKioqKioqCisqKiogMTgyNjgsMTgyNzAgKioqKgorICB4eWxvcGhvbmUvU00KKy0geS9LCisgIHlhY2h0ZXJzCistLS0gMTgyNjYsMTgyNjcgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogMTgzMjIsMTgzMjMgKioqKgotLS0tIDE4MzIyLDE4MzI0IC0tLS0KKy0tLSAxODMxOSwxODMyMSAtLS0tCiAgIOltaWdy6S9TCiArIG5kCiAgIDNHUFAKICoqKioqKioqKioqKioqKgogKioqIDE5MzAzLDE5MzA0ICoqKioKLS0tLSAxOTMwNCwxOTMwNiAtLS0tCistLS0gMTkzMDEsMTkzMDMgLS0tLQogICBCcmFtcHRvbi9NCiArIEJyYW0vTQogICBicmFuZC9NUkRHU1oKQEAgLTIzMTcsMTQgKzI0NzEsMjYgQEAKICAgZXN0aW1hdGl2ZQogISBldAogICBldGFsb24KLS0tLSAyMTA5OSwyMTEwMiAtLS0tCistLS0gMjEwOTYsMjEwOTkgLS0tLQogICBlc3RpbWF0aXZlCiAhIGV0IGNldGVyYQogISBldCBhbC4KICAgZXRhbG9uCiAqKioqKioqKioqKioqKioKKyoqKiAyMTIyOCwyMTIzMCAqKioqCisgIEV6cmEKKy0gZi8zNworICBGYWJlci9NCistLS0gMjEyMjgsMjEyMjkgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMjI3MzQsMjI3MzYgKioqKgorICBqdXN0aWZpY2F0aW9uL00KKy0gay9FCisgIEthYnVsCistLS0gMjI3MzMsMjI3MzQgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogMjM2MzIsMjM2MzMgKioqKgotLS0tIDIzNjM1LDIzNjM3IC0tLS0KKy0tLSAyMzYzMCwyMzYzMiAtLS0tCiAgIE1vb2cKICsgTW9vbGVuYWFyL00KICAgbW9vbmxpZ2h0L0dSRFNNCkBAIC0yMzMzLDQwICsyNDk5LDEwMyBAQAogICBveHlnZW5hdGlvbi9NCiAtIHAvRllBSQogICBQYWJsby9NCi0tLS0gMjQyNDYsMjQyNDcgLS0tLQorLS0tIDI0MjQxLDI0MjQyIC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDI3MjIzLDI3MjI1ICoqKioKICAgVmlsbGllcnMKICEgdmltL00KICAgVmluY2kvTQotLS0tIDI3MjI2LDI3MjI4IC0tLS0KKy0tLSAyNzIyMSwyNzIyMyAtLS0tCiAgIFZpbGxpZXJzCiAhIFZpbS9NCiAgIFZpbmNpL00KICoqKioqKioqKioqKioqKgorKioqIDI3NTY4LDI3NTcwICoqKioKKyAgWXZldHRlCistIHovZAorICBaZWFsYW5kZXJzCistLS0gMjc1NjYsMjc1NjcgLS0tLQorKioqKioqKioqKioqKioqCiAqKiogMjgxNzQsMjgxNzYgKioqKgogICBBenRlYy9NCiAtIGIvYnAKICAgQmFhbC9NCi0tLS0gMjgxNzcsMjgxNzggLS0tLQorLS0tIDI4MTcxLDI4MTcyIC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDI4ODkwLDI4ODkyICoqKioKKyAgQ2F0aHkKKyEgY2F0aW9uL01XCisgIGNhdG5pcC9TTQorLS0tIDI4ODg2LDI4ODg4IC0tLS0KKyAgQ2F0aHkKKyEgY2F0aW9uL01XUworICBjYXRuaXAvU00KKyoqKioqKioqKioqKioqKgorKioqIDMwNTg3LDMwNTg5ICoqKioKKyAgZmlzc2lvbmFibGUvUworISBmaXN0LzZHRAorICBmaXQvNlRSR01ZSlBTRGoKKy0tLSAzMDU4MywzMDU4NSAtLS0tCisgIGZpc3Npb25hYmxlL1MKKyEgZmlzdC82R0RNUworICBmaXQvNlRSR01ZSlBTRGoKKyoqKioqKioqKioqKioqKgorKioqIDMwODQ2LDMwODQ4ICoqKioKKyAgZnV6enkvVFAKKy0gZy83MworICBHYS95CistLS0gMzA4NDIsMzA4NDMgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogMzE0MDksMzE0MTEgKioqKgogICBob2IvTURHWlMKICEgaG9iYml0CiAgIEhvYmJzCi0tLS0gMzE0MTEsMzE0MTMgLS0tLQorLS0tIDMxNDA0LDMxNDA2IC0tLS0KICAgaG9iL01ER1pTCiAhIGhvYmJpdC9NUwogICBIb2JicwogKioqKioqKioqKioqKioqCisqKiogMzIxMTAsMzIxMTIgKioqKgorICBrV2gKKyEgbC9GCisgIGxhYi9Nb1MKKy0tLSAzMjEwNSwzMjEwNyAtLS0tCisgIGtXaAorISBjb2xsCisgIGxhYi9Nb1MKKyoqKioqKioqKioqKioqKgogKioqIDMyMTc0LDMyMTc2ICoqKioKICAgbGFzc28vR01EUwogLSBsYXN0LWRpdGNoCiAgIExhc3psby9NCi0tLS0gMzIxNzYsMzIxNzcgLS0tLQorLS0tIDMyMTY5LDMyMTcwIC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDM0MTg4LDM0MTkwICoqKioKKyAgcOJ06S9NCistIHEKKyAgUWF0YXIKKy0tLSAzNDE4MiwzNDE4MyAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAzNjMyNCwzNjMyNiAqKioqCisgIHV0dGVybW9zdAorLSB2CisgIHZhY2F0ZS9uREdOUworLS0tIDM2MzE3LDM2MzE4IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDM3OTE2LDM3OTE4ICoqKioKKyAgYnlzCistIGMvbk4KKyAgQ2EveQorLS0tIDM3OTA4LDM3OTA5IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDQwNDY4LDQwNDcwICoqKioKKyAgR/ZkZWwvTQorLSBoL0UKKyAgaGEncCdvcnRoCistLS0gNDA0NTksNDA0NjAgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDMyNzUsNDMyNzYgKioqKgotLS0tIDQzMjc2LDQzMjc4IC0tLS0KKy0tLSA0MzI2NSw0MzI2NyAtLS0tCiAgIHBuZXVtb25pYS9NUwogKyBwbmV1bW9uaWMKICAgUE8KQEAgLTIzNzUsNCArMjYwNCwxMyBAQAogICBxd2VydHkKIC0gci9kCiAgIFJhCi0tLS0gNDM2NjcsNDM2NjggLS0tLQorLS0tIDQzNjU2LDQzNjU3IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDQ2MTQ4ICoqKioKKy0tLSA0NjEzOCw0NjE0MyAtLS0tCisgIOAKKysgdGhlIHRoZS8hCisrIGEgYS8hCisrIGEgYW4vIQorKyBhbiBhLyEKKysgYW4gYW4vIQpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsL2VuX1VTLmRpZmYgYi9zcmMvc3BlbGwvZW5fVVMuZGlmZgppbmRleCA0NjBmYTRlLi40OTc0MDBmIDEwMDY0NAotLS0gYS9zcmMvc3BlbGwvZW5fVVMuZGlmZgorKysgYi9zcmMvc3BlbGwvZW5fVVMuZGlmZgpAQCAtMSwxNCArMSwxNSBAQAogKioqIGVuX1VTLm9yaWcuYWZmCUZyaSBBcHIgMTUgMTM6MjA6MzYgMjAwNQotLS0tIGVuX1VTLmFmZglUdWUgSnVuIDIxIDIwOjQ2OjUyIDIwMDUKKy0tLSBlbl9VUy5hZmYJVGh1IEp1biAyMyAxNzo0MjowNSAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiAzLDQgKioqKgotLS0tIDMsMTAgLS0tLQorLS0tIDMsMTEgLS0tLQogICAKLSsgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7fCi0rIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t8KKysgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIFVQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KICsgCiArIFJBUiA/CisrIEJBRCAhCiArIAogICBQRlggQSBZIDEKICoqKioqKioqKioqKioqKgpAQCAtMTcsNyArMTgsNyBAQAogISBTRlggTiAgIHkgICAgIGljYXRpb24gICAgeSAKICEgU0ZYIE4gICAwICAgICBlbiAgICAgICAgIFteZXldIAogICAKLS0tLSAzNiwzOSAtLS0tCistLS0gMzcsNDAgLS0tLQogICBTRlggTiAgIGUgICAgIGlvbiAgICAgICAgZQogISBTRlggTiAgIHkgICAgIGljYXRpb24gICAgeQogISBTRlggTiAgIDAgICAgIGVuICAgICAgICAgW15leV0KQEAgLTI3LDcgKzI4LDcgQEAKICAgU0ZYIEggICB5ICAgICBpZXRoICAgICAgIHkKICEgU0ZYIEggICAwICAgICB0aCAgICAgICAgIFteeV0gCiAgIAotLS0tIDQ2LDQ4IC0tLS0KKy0tLSA0Nyw0OSAtLS0tCiAgIFNGWCBIICAgeSAgICAgaWV0aCAgICAgICB5CiAhIFNGWCBIICAgMCAgICAgdGggICAgICAgICBbXnldCiAgIApAQCAtMzYsMjAgKzM3LDIwIEBACiAgIFNGWCBHICAgZSAgICAgaW5nICAgICAgICBlCiAhIFNGWCBHICAgMCAgICAgaW5nICAgICAgICBbXmVdIAogICAKLS0tLSA1Myw1NSAtLS0tCistLS0gNTQsNTYgLS0tLQogICBTRlggRyAgIGUgICAgIGluZyAgICAgICAgZQogISBTRlggRyAgIDAgICAgIGluZyAgICAgICAgW15lXQogICAKICoqKioqKioqKioqKioqKgogKioqIDEzNywxMzggKioqKgotLS0tIDE0MywxNDYgLS0tLQorLS0tIDE0NCwxNDcgLS0tLQogICBSRVAgdXkgaQogKyBSRVAgeSBpZQogKyBSRVAgaWUgeQogICBSRVAgaSBlZQogKioqKioqKioqKioqKioqCiAqKiogMTg4ICoqKioKLS0tLSAxOTYsMzE3IC0tLS0KKy0tLSAxOTcsMzE4IC0tLS0KICAgUkVQIHNodW4gY2lvbgogKyAKICsgTUFQIDUKQEAgLTE3Myw3ICsxNzQsNyBAQAogKyBTQUwgWlotICAgICAgICAgICAgICAgICAgXwogKyBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwogKioqIGVuX1VTLm9yaWcuZGljCUZyaSBBcHIgMTUgMTM6MjA6MzYgMjAwNQotLS0tIGVuX1VTLmRpYwlUdWUgSnVuIDIxIDIwOjI2OjIyIDIwMDUKKy0tLSBlbl9VUy5kaWMJV2VkIEp1biAyMiAxNDowNjoyOSAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA1OTQ0LDU5NDYgKioqKgogICBiawpAQCAtMTg1LDExICsxODYsMzAgQEAKICEgcHJvYmVkCiAgIEJrL00KICoqKioqKioqKioqKioqKgorKioqIDkwMDcsOTAwOSAqKioqCisgIENhenppZS9NCistIGMvQgorICBDQgorLS0tIDkwMDgsOTAwOSAtLS0tCisqKioqKioqKioqKioqKioKICoqKiA5MjMzLDkyMzUgKioqKgogICBjZXRhY2Vhbi9TCiAtIGNldGVyYS9TCiAgIENldHVzL00KLS0tLSA5MjM0LDkyMzUgLS0tLQorLS0tIDkyMzMsOTIzNCAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAxMTU3NSwxMTU3NiAqKioqCistLS0gMTE1NzQsMTE1NzcgLS0tLQorICBjb25kdWl0L01TCisrIGNvbmVkCisrIGNvbmUvTVMKKyAgY29uZWZsb3dlci9NCisqKioqKioqKioqKioqKioKKyoqKiAxMTcxMiwxMTcxMyAqKioqCistLS0gMTE3MTMsMTE3MTUgLS0tLQorICBjb25pZmVyb3VzCisrIGNvbmouCisgIGNvbmplY3R1cmFsL1kKICoqKioqKioqKioqKioqKgogKioqIDE0MDM4LDE0MDQzICoqKioKICAgZGF6emxpbmcvWQpAQCAtMTk4LDcgKzIxOCw3IEBACiAgIGRibAogICBkQi9NCiAgIERCTVMKLS0tLSAxNDAzOCwxNDA0NCAtLS0tCistLS0gMTQwNDAsMTQwNDYgLS0tLQogICBkYXp6bGluZy9ZCiAgIGRibAogICBkQi9NCkBAIC0yMDcsMTIgKzIyNyw0MiBAQAogKyBkQmQKICAgREJNUwogKioqKioqKioqKioqKioqCisqKiogMTU0NjQsMTU0NjYgKioqKgorICBkaW5nYmF0L01TCishIGRpbmcvR0QKKyAgZGluZ2h5L1NNCistLS0gMTU0NjcsMTU0NjkgLS0tLQorICBkaW5nYmF0L01TCishIGRpbmcvR0RTCisgIGRpbmdoeS9TTQorKioqKioqKioqKioqKioqCisqKiogMTU2OTAsMTU2OTIgKioqKgorICBkaXNoZXZlbG1lbnQvTVMKKyEgZGlzaC9HRAorICBkaXNob25lc3QKKy0tLSAxNTY5MywxNTY5NSAtLS0tCisgIGRpc2hldmVsbWVudC9NUworISBkaXNoL0dETVMKKyAgZGlzaG9uZXN0CisqKioqKioqKioqKioqKioKKyoqKiAxNTk3MywxNTk3NSAqKioqCisgIGRqZWxsYWJhL1MKKy0gZC9KR1ZYCisgIERqaWJvdXRpL00KKy0tLSAxNTk3NiwxNTk3NyAtLS0tCisqKioqKioqKioqKioqKioKICoqKiAxNjkxMSwxNjkxMiAqKioqCi0tLS0gMTY5MTIsMTY5MTQgLS0tLQorLS0tIDE2OTEzLDE2OTE1IC0tLS0KICAgZHVzdHkvUlBUCiArIEZhcnNpCiAgIER1dGNoL00KICoqKioqKioqKioqKioqKgorKioqIDE3MzU3LDE3MzU5ICoqKioKKyAgRUZMCistIGUvRk1EUworICBFZnJhaW4vTQorLS0tIDE3MzYwLDE3MzYxIC0tLS0KKyoqKioqKioqKioqKioqKgogKioqIDE4NzgwLDE4NzgyICoqKioKICAgZXN0dWFyeS9TTQogISBldApAQCAtMjMyLDExICsyODIsMzIgQEAKICEgZXRjLgogICBldGNldGVyYS9TTQogKioqKioqKioqKioqKioqCisqKiogMjA1NTksMjA1NjEgKioqKgorICBGaW9yaS9NCistIGYvSVJBQworICBmaXJlYXJtL1NNCistLS0gMjA1NjIsMjA1NjMgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMjQ0MDIsMjQ0MDQgKioqKgorICBndXp6bGVyL00KKyEgZy9WQlgKKyAgR3dhbGlvci9NCistLS0gMjQ0MDQsMjQ0MDYgLS0tLQorICBndXp6bGVyL00KKyEgZ2VucworICBHd2FsaW9yL00KKyoqKioqKioqKioqKioqKgorKioqIDI1NDczLDI1NDc1ICoqKioKKyAgaGVtcC9NTlMKKy0gaC9FTVMKKyAgaGVtc3RpdGNoL0RTTUcKKy0tLSAyNTQ3NSwyNTQ3NiAtLS0tCisqKioqKioqKioqKioqKioKICoqKiAyNTk2MywyNTk2NSAqKioqCiAgIGhvYmJpbmcKICEgaG9iYml0CiAgIGhvYmJsZXIvTQotLS0tIDI1OTY2LDI1OTY4IC0tLS0KKy0tLSAyNTk2NCwyNTk2NiAtLS0tCiAgIGhvYmJpbmcKICEgaG9iYml0L01TCiAgIGhvYmJsZXIvTQpAQCAtMjQ1LDE3ICszMTYsNjIgQEAKICAgSFNUCiAtIGh0CiAgIEhUTUwKLS0tLSAyNjUyNywyNjUyOCAtLS0tCistLS0gMjY1MjUsMjY1MjYgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMjY5NDIsMjY5NDQgKioqKgorICBIegorLSBpCisgIEkKKy0tLSAyNjk0MiwyNjk0MyAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAyOTYyNywyOTYyOSAqKioqCisgIEplemViZWwvTVMKKy0gai9GCisgIEpGSy9NCistLS0gMjk2MjYsMjk2MjcgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMzA1NzgsMzA1ODAgKioqKgorICBrZXl3b3JkL1NNCishIGsvRkdFSVMKKyAga2cKKy0tLSAzMDU3NiwzMDU4MyAtLS0tCisgIGtleXdvcmQvU00KKyEgaW5raW5nCishIGRpc2tpbmcKKyEgY29ua2luZworISBpbmtzCishIGRpc2tzCishIGNvbmtzCisgIGtnCisqKioqKioqKioqKioqKioKKyoqKiAzMjY5NCwzMjY5NiAqKioqCisgIExpenp5L00KKyEgbC9KR1ZYVAorICBManVibGphbmEvTQorLS0tIDMyNjk3LDMyNjk5IC0tLS0KKyAgTGl6enkvTQorISBsaW5ncworICBManVibGphbmEvTQorKioqKioqKioqKioqKioqCisqKiogMzQ0NTYsMzQ0NTggKioqKgorICBtYXNoL0pHWk1TUkQKKyEgbS9BU0sKKyAgbWFza2VkL1UKKy0tLSAzNDQ1OSwzNDQ2MiAtLS0tCisgIG1hc2gvSkdaTVNSRAorISByZW1zCishIHByb20vUworICBtYXNrZWQvVQogKioqKioqKioqKioqKioqCiAqKiogMzQ3NDYsMzQ3NDcgKioqKgotLS0tIDM0NzQ4LDM0NzUxIC0tLS0KKy0tLSAzNDc1MCwzNDc1MyAtLS0tCiAgIE1iCiArIE1ieXRlCiArIE1iaXQKICAgTUIKICoqKioqKioqKioqKioqKgogKioqIDM2NjA1LDM2NjA2ICoqKioKLS0tLSAzNjYwOSwzNjYxMSAtLS0tCistLS0gMzY2MTEsMzY2MTMgLS0tLQogICBNb29nCiArIE1vb2xlbmFhci9NCiAgIG1vby9HU0QKQEAgLTI2NCwyNSArMzgwLDMxIEBACiAgIE5TRgogLSBuL1QKICAgTlQKLS0tLSAzODg3NiwzODg3NyAtLS0tCistLS0gMzg4NzgsMzg4NzkgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMzkwMTEsMzkwMTMgKioqKgorICBOWgorLSBvCisgIE8KKy0tLSAzOTAxNywzOTAxOCAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiAzOTUzMiwzOTUzNCAqKioqCiAgIG9tL1hOCiAtIE9OCiAgIG9uYW5pc20vTQotLS0tIDM5NTM2LDM5NTM3IC0tLS0KKy0tLSAzOTUzNywzOTUzOCAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0MjUwOCw0MjUxMCAqKioqCiAgIHBpbmZlYXRoZXIvU00KICEgcGluZy9HRFJNCiAgIHBpbmhlYWRlZC9QCi0tLS0gNDI1MTEsNDI1MTMgLS0tLQorLS0tIDQyNTEyLDQyNTE0IC0tLS0KICAgcGluZmVhdGhlci9TTQogISBwaW5nL0dEUk1TCiAgIHBpbmhlYWRlZC9QCiAqKioqKioqKioqKioqKioKICoqKiA0Mjk4Myw0Mjk4NCAqKioqCi0tLS0gNDI5ODYsNDI5ODggLS0tLQorLS0tIDQyOTg3LDQyOTg5IC0tLS0KICAgcG5ldW1vbmlhL01TCiArIHBuZXVtb25pYwogICBQTwpAQCAtMjkxLDcgKzQxMyw3IEBACiAgIHBvbXBvbS9TTQogISBwb21wb24ncwogICBwb21wb3NpdHkvTVMKLS0tLSA0MzIyMCw0MzIyMiAtLS0tCistLS0gNDMyMjEsNDMyMjMgLS0tLQogICBwb21wb20vU00KICEgcG9tcG9uL00KICAgcG9tcG9zaXR5L01TCkBAIC0zMDAsNyArNDIyLDEzIEBACiAgIFBYCiAtIHAvWFRHSgogICBQeWdtYWxpb24vTQotLS0tIDQ0OTQ0LDQ0OTQ1IC0tLS0KKy0tLSA0NDk0NSw0NDk0NiAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiA0NDk4Myw0NDk4NSAqKioqCisgIHB5eC9NRFNHCistIHEKKyAgUQorLS0tIDQ0OTg3LDQ0OTg4IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDQ2NTA3LDQ2NTA5ICoqKioKICAgUmVuYXVsdC9NUwpAQCAtMzQxLDYgKzQ2OSwxNSBAQAogISBzaW5ncwogICBzeWJhcml0ZS9NUwogKioqKioqKioqKioqKioqCisqKiogNTc3MjgsNTc3MzAgKioqKgorICBUWAorISB0L1hUSkJHCisgIFR5YmFsdC9NCistLS0gNTc3MjcsNTc3MjkgLS0tLQorICBUWAorISB0aW5ncworICBUeWJhbHQvTQorKioqKioqKioqKioqKioqCiAqKiogNTc4MDksNTc4MTEgKioqKgogICBUemVsdGFsL00KIC0gdQpAQCAtMzUzLDYgKzQ5MCwxNSBAQAogKyBzZWFyY2hhYmxlCiAgIHVuc2Vhc29uYWwKICoqKioqKioqKioqKioqKgorKioqIDU5MDcyLDU5MDc0ICoqKioKKyAgdmFzdC9QVFNZUgorISB2L0FTVgorICBWQVQKKy0tLSA1OTA3MSw1OTA3MyAtLS0tCisgIHZhc3QvUFRTWVIKKyEgcmV2cworICBWQVQKKyoqKioqKioqKioqKioqKgogKioqIDU5NTM4LDU5NTQwICoqKioKICAgdmkvTURSCiAhIHZpbS9NUwpAQCAtMzYyLDggKzUwOCwzNyBAQAogISBWaW0vTVMKICAgdmluYWlncmV0dGUvTVMKICoqKioqKioqKioqKioqKgorKioqIDYxNTM0LDYxNTM2ICoqKioKKyAgV1dXCishIHcvWFRKR1YKKyAgV1kKKy0tLSA2MTUzMyw2MTUzNiAtLS0tCisgIFdXVworISB3ZW5zCishIHdpbmdzCisgIFdZCisqKioqKioqKioqKioqKioKKyoqKiA2MTc1MCw2MTc1MiAqKioqCisgIHlldy9TTQorLSB5L0YKKyAgWWdnZHJhc2lsL00KKy0tLSA2MTc1MCw2MTc1MSAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiA2MjA1OCw2MjA2MCAqKioqCisgIFpzaWdtb25keS9NCishIHovVEdKCisgIFp1YmVuZWxnZW51YmkvTQorLS0tIDYyMDU3LDYyMDU5IC0tLS0KKyAgWnNpZ21vbmR5L00KKyEgemluZ3MKKyAgWnViZW5lbGdlbnViaS9NCisqKioqKioqKioqKioqKioKICoqKiA2MjA3NyAqKioqCi0tLS0gNjIwNzYsNjIwNzggLS0tLQorLS0tIDYyMDc2LDYyMDgyIC0tLS0KICAgenltdXJneS9TCi0rIHRoZSB0aGUvPwogKyBuZAorKyB0aGUgdGhlLyEKKysgYSBhLyEKKysgYSBhbi8hCisrIGFuIGEvIQorKyBhbiBhbi8hCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZnJfRlIuZGlmZiBiL3NyYy9zcGVsbC9mcl9GUi5kaWZmCmluZGV4IDFjMDI3MjguLjJiZTAzMzQgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9mcl9GUi5kaWZmCisrKyBiL3NyYy9zcGVsbC9mcl9GUi5kaWZmCkBAIC0xLDExICsxLDI3IEBACiAqKiogZnJfRlIub3JpZy5hZmYJU3VuIEFwciAxNCAxNzoxODoyMiAyMDAyCi0tLS0gZnJfRlIuYWZmCVNhdCBKdW4gMTggMTk6NDM6MDIgMjAwNQorLS0tIGZyX0ZSLmFmZglTYXQgSnVuIDI1IDE1OjEyOjAwIDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDMsNCAqKioqCiAtLS0gMyw4IC0tLS0KICAgCi0rIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t8KLSsgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7fCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CiArIAogICBQRlggQSBZIDEwCisqKioqKioqKioqKioqKioKKyoqKiA2OTEsNjkyICoqKioKKy0tLSA2OTUsNzA3IC0tLS0KKyAgCisrIAorKyBNQVAgNQorKyBNQVAgYeDh4uPk5QorKyBNQVAgZejp6usKKysgTUFQIGns7e7vCisrIE1BUCBv8vP09fYKKysgTUFQIHX5+vv8CisrIE1BUCBu8QorKyBNQVAgY+cKKysgTUFQIHn//QorKyBNQVAgc98KKyAgCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvbmxfTkwuZGlmZiBiL3NyYy9zcGVsbC9ubF9OTC5kaWZmCmluZGV4IGY2YThmMDguLmM3MmE0ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9ubF9OTC5kaWZmCisrKyBiL3NyYy9zcGVsbC9ubF9OTC5kaWZmCkBAIC0xLDEyICsxLDE0IEBACiAqKiogbmxfTkwub3JpZy5hZmYJV2VkIEFwciAyMCAxMTo0ODoxNiAyMDA1Ci0tLS0gbmxfTkwuYWZmCVR1ZSBKdW4gMjEgMTE6MDg6MzIgMjAwNQorLS0tIG5sX05MLmFmZglUaHUgSnVuIDIzIDIwOjUyOjE4IDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDMsNCAqKioqCi0tLS0gMyw4IC0tLS0KKy0tLSAzLDEwIC0tLS0KICAgCi0rIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3wotKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t8KLSsgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7fCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CisrIAorKyBLRVAgPQogKyAKICAgTk9TUExJVFNVR1MKICoqKioqKioqKioqKioqKgpAQCAtMzEsNyArMzMsNyBAQAogISBTRlggSiAwIGplIFthZWlvdV1bYmNkZmdrcHRdIAogISBTRlggSiAwIGplcyBbYWVpb3VdW2JjZGZna3B0XSAKICAgCi0tLS0gMzcsNTYgLS0tLQorLS0tIDM5LDU4IC0tLS0KICAgU0ZYIEogTiAxOAogISBTRlggSiAwIHRqZSBbYWVpb3VdW2FlaW91XQogISBTRlggSiAwIHRqZXMgW2FlaW91XVthZWlvdV0KQEAgLTU3LDcgKzU5LDcgQEAKICAgUkVQIHViaSBpYnUKICEgUkVQIGNyb2Mga3JvayAKICAgUkVQIHRlbiB0aGFuCi0tLS0gMjU3LDI1OSAtLS0tCistLS0gMjU5LDI2MSAtLS0tCiAgIFJFUCB1YmkgaWJ1CiAhIFJFUCBjcm9jIGtyb2sKICAgUkVQIHRlbiB0aGFuCkBAIC02Niw3ICs2OCw3IEBACiAgIFJFUCBjYXB1Y2lubyBjYXBwdWNjaW5vCiAhIFJFUCBjZWxjaXVzIENlbHNpdXMgCiAgIFJFUCBrYWRvIGNhZGVhdQotLS0tIDI5MiwyOTQgLS0tLQorLS0tIDI5NCwyOTYgLS0tLQogICBSRVAgY2FwdWNpbm8gY2FwcHVjY2lubwogISBSRVAgY2VsY2l1cyBDZWxzaXVzCiAgIFJFUCBrYWRvIGNhZGVhdQpAQCAtNzksNyArODEsNyBAQAogICBSRVAga29tbWl0dGVlIGNvbWl06QogISBSRVAga3dpcyBxdWl6IAogICBSRVAga3dpc3NlbiBxdWl6emVuCi0tLS0gMjk4LDMwNCAtLS0tCistLS0gMzAwLDMwNiAtLS0tCiAgIFJFUCBjb21taXR0ZWUgY29taXTpCiAhIFJFUCBrb21pdGVlIGNvbWl06QogISBSRVAga29taXR0ZWUgY29taXTpCkBAIC05Miw3ICs5NCw3IEBACiAgIFJFUCBjb3B5IGtvcGlqCiAhIFJFUCBwaXRvcmVzcXVlIHBpdHRvcmVza2UgCiAgIFJFUCByZWlrd2VpdGUgcmVpa3dpamR0ZQotLS0tIDMwNiwzMDggLS0tLQorLS0tIDMwOCwzMTAgLS0tLQogICBSRVAgY29weSBrb3BpagogISBSRVAgcGl0b3Jlc3F1ZSBwaXR0b3Jlc2tlCiAgIFJFUCByZWlrd2VpdGUgcmVpa3dpamR0ZQpAQCAtMTA0LDcgKzEwNiw3IEBACiAhIFJFUCBrb250ZWtzdCBjb250ZXh0IAogISBSRVAga29ycmVrdCBjb3JyZWN0IAogICBSRVAga3JpdGlrdXMgY3JpdGljdXMKLS0tLSAzMTgsMzIzIC0tLS0KKy0tLSAzMjAsMzI1IC0tLS0KICAgUkVQIGtsdXAgY2x1YgogISBSRVAgd2lza2lkIHdoaXp6a2lkCiAhIFJFUCBrb250YWt0IGNvbnRhY3QKQEAgLTExMyw4ICsxMTUsMTAgQEAKICAgUkVQIGtyaXRpa3VzIGNyaXRpY3VzCiAqKioqKioqKioqKioqKioKICoqKiAzMzMgKioqKgotLS0tIDMzNyw0NTggLS0tLQorLS0tIDMzOSw0NjIgLS0tLQogICBSRVAgYWZsYXNzZW4gYWZnZWxhc3RlbgorKyBSRVAgc3ZwIHMudi5wLgorKyBSRVAgem96IHouby56LgogKyAKICsgTUFQIDUKICsgTUFQIGHg4eLj5OUKQEAgLTIzNyw3ICsyNDEsMTYgQEAKICsgU0FMIFpaLSAgICAgICAgICAgICAgICAgIF8KICsgU0FMIFogICAgICAgICAgICAgICAgICAgIFMKICoqKiBubF9OTC5vcmlnLmRpYwlUdWUgQXByIDE5IDIxOjAzOjE1IDIwMDUKLS0tLSBubF9OTC5kaWMJV2VkIEp1biAxNSAxMDozNjoyMCAyMDA1CistLS0gbmxfTkwuZGljCUZyaSBKdW4gMjQgMTU6NDI6MjkgMjAwNQorKioqKioqKioqKioqKioqCisqKiogMSwzICoqKioKKyAgMTE5OTM3CishICdWZXJzaWUtMTItOC0yMDAzLiBDb3B5cmlnaHQgKGMpIE5lZGVybGFuZHNlIFRleCBHZWJydWlrZXJzZ3JvZXAgZW4gUy5Ccm91d2VyJworICAncy1HcmF2ZWxhbmQKKy0tLSAxLDMgLS0tLQorICAxMTk5MzcKKyEgI1ZlcnNpZS0xMi04LTIwMDMuIENvcHlyaWdodCAoYykgTmVkZXJsYW5kc2UgVGV4IEdlYnJ1aWtlcnNncm9lcCBlbiBTLkJyb3V3ZXInCisgICdzLUdyYXZlbGFuZAogKioqKioqKioqKioqKioqCiAqKiogOCw5ICoqKioKIC0tLSA4LDExIC0tLS0KQEAgLTI2NiwyNyArMjc5LDMyIEBACiAgIER3aW5nZWxvbwogKioqKioqKioqKioqKioqCiAqKiogNzQ4NSw3NDg2ICoqKioKLS0tLSA3NDg5LDc0OTMgLS0tLQorLS0tIDc0ODksNzQ5OCAtLS0tCiAgIGF2b25kL1NOCi0rICdzIGF2b25kcwotKyAncyBtaWRkYWdzCi0rICdzIG9jaHRlbmRzCisrICdzIGF2b25kcy89CisrICdzIG1pZGRhZ3MvPQorKyAncyBvY2h0ZW5kcy89CisrICdzIG1vcmdlbnMvPQorKyAncyBBdm9uZHMKKysgJ3MgTWlkZGFncworKyAncyBPY2h0ZW5kcworKyAncyBNb3JnZW5zCiAgIGF2b25kYXBw6GwvUwogKioqKioqKioqKioqKioqCiAqKiogMjA2ODEsMjA2ODIgKioqKgotLS0tIDIwNjg4LDIwNjkwIC0tLS0KKy0tLSAyMDY5MywyMDY5NSAtLS0tCiAgIGN5dG9zdGF0aWNhCiArIGQubS52LgogICBkYWFkL1AKICoqKioqKioqKioqKioqKgogKioqIDQ2MzAwLDQ2MzAxICoqKioKLS0tLSA0NjMwOCw0NjMxMCAtLS0tCistLS0gNDYzMTMsNDYzMTUgLS0tLQogICBpbmZvcm1hdGljdXMKICsgaW5mb3JtYXRpZS9TCiAgIGluZm9ybWF0aWUtdWl0d2lzc2VsaW5nCiAqKioqKioqKioqKioqKioKICoqKiA2MDIwNiw2MDIwOCAqKioqCi0tLS0gNjAyMTUsNjAyMjIgLS0tLQorLS0tIDYwMjIwLDYwMjI3IC0tLS0KICAgbPZzcwogKyBtLmEudy4KICsgbS5iLnQuCkBAIC0yOTcsMjYgKzMxNSwyNyBAQAogICBtYWFnCiAqKioqKioqKioqKioqKioKICoqKiA5NzQ3NCw5NzQ3NSAqKioqCi0tLS0gOTc0ODgsOTc0OTAgLS0tLQorLS0tIDk3NDkzLDk3NDk2IC0tLS0KICAgc3XvY2lkZXJpc2ljby9YCiArIHMudi5wLgorKyB6Lm8uei4KICAgc3dhZ2dlci9TCiAqKioqKioqKioqKioqKioKICoqKiAxMDE0MjgsMTAxNDI5ICoqKioKLS0tLSAxMDE0NDMsMTAxNDQ2IC0tLS0KKy0tLSAxMDE0NDksMTAxNDUyIC0tLS0KICAgdG9lemljaHRob3VkZXIvUwogKyB0b2V6aWNodGhvdWRlcnNhYW5zcHJha2VsaWpraGVpZHN2ZXJ6ZWtlcmluZwogKyB0b2V6aWNodGhvdWRlcnNhYW5zcHJha2VsaWpraGVpZHN2ZXJ6ZWtlcmluZ2VuCiAgIHRvZXppZS9OCiAqKioqKioqKioqKioqKioKICoqKiAxMDM3MDcsMTAzNzA4ICoqKioKLS0tLSAxMDM3MjQsMTAzNzI2IC0tLS0KKy0tLSAxMDM3MzAsMTAzNzMyIC0tLS0KICAgdOp0ZS3gLXTqdGUvUwogKyB1CiAgIHVjaHRlbmQvTgogKioqKioqKioqKioqKioqCiAqKiogMTE5OTM4ICoqKioKLS0tLSAxMTk5NTYsMTIwMTI2IC0tLS0KKy0tLSAxMTk5NjIsMTIwMTM2IC0tLS0KICAg/GJlcmhhdXB0CiArIENocmlzdGlhYW4vWAogKyBGcmVkL1gKQEAgLTQ4OCwzICs1MDcsNyBAQAogKyB3aXNoZnVsIHRoaW5raW5nCiArIOAgZ29nbwogKyDgIHByb3BvcworKyBjYS4KKysgZXZ0LgorKyBlbnouCisrIGJpanYuCmRpZmYgLS1naXQgYS9zcmMvc3ludGF4LmMgYi9zcmMvc3ludGF4LmMKaW5kZXggNjA5MmExYy4uMzEzZjYwMCAxMDA2NDQKLS0tIGEvc3JjL3N5bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtNzA3NCw3ICs3MDc0LDExIEBACiAgICAgaW50CSAgICBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGhpZ2hsaWdodF9nYS5nYV9sZW47ICsraSkKKyAgICB7CiAJaGlnaGxpZ2h0X2NsZWFyKGkpOworCXZpbV9mcmVlKEhMX1RBQkxFKClbaV0uc2dfbmFtZSk7CisJdmltX2ZyZWUoSExfVEFCTEUoKVtpXS5zZ19uYW1lX3UpOworICAgIH0KICAgICBnYV9jbGVhcigmaGlnaGxpZ2h0X2dhKTsKIH0KICNlbmRpZgpAQCAtNzQ4NSw3ICs3NDg5LDcgQEAKICAgICBhdHRyZW50cnlfVAkqYWVwOwogewogICAgIGludAkJaTsKLSAgICBhdHRyZW50cnlfVAkqZ2FwOworICAgIGF0dHJlbnRyeV9UCSp0YWVwOwogICAgIHN0YXRpYyBpbnQJcmVjdXJzaXZlID0gRkFMU0U7CiAKICAgICAvKgpAQCAtNzQ5OSwzNSArNzUwMywzOSBAQAogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsZS0+Z2FfbGVuOyArK2kpCiAgICAgewotCWdhcCA9ICYoKChhdHRyZW50cnlfVCAqKXRhYmxlLT5nYV9kYXRhKVtpXSk7Ci0JaWYgKAkgICBhZXAtPmFlX2F0dHIgPT0gZ2FwLT5hZV9hdHRyCisJdGFlcCA9ICYoKChhdHRyZW50cnlfVCAqKXRhYmxlLT5nYV9kYXRhKVtpXSk7CisJaWYgKAkgICBhZXAtPmFlX2F0dHIgPT0gdGFlcC0+YWVfYXR0cgogCQkmJiAoCiAjaWZkZWYgRkVBVF9HVUkKIAkJICAgICAgICh0YWJsZSA9PSAmZ3VpX2F0dHJfdGFibGUKLQkJCSYmIChhZXAtPmFlX3UuZ3VpLmZnX2NvbG9yID09IGdhcC0+YWVfdS5ndWkuZmdfY29sb3IKLQkJCSAgICAmJiBhZXAtPmFlX3UuZ3VpLmJnX2NvbG9yID09IGdhcC0+YWVfdS5ndWkuYmdfY29sb3IKLQkJCSAgICAmJiBhZXAtPmFlX3UuZ3VpLnNwX2NvbG9yID09IGdhcC0+YWVfdS5ndWkuc3BfY29sb3IKLQkJCSAgICAmJiBhZXAtPmFlX3UuZ3VpLmZvbnQgPT0gZ2FwLT5hZV91Lmd1aS5mb250CisJCQkmJiAoYWVwLT5hZV91Lmd1aS5mZ19jb2xvciA9PSB0YWVwLT5hZV91Lmd1aS5mZ19jb2xvcgorCQkJICAgICYmIGFlcC0+YWVfdS5ndWkuYmdfY29sb3IKKwkJCQkJCSAgICA9PSB0YWVwLT5hZV91Lmd1aS5iZ19jb2xvcgorCQkJICAgICYmIGFlcC0+YWVfdS5ndWkuc3BfY29sb3IKKwkJCQkJCSAgICA9PSB0YWVwLT5hZV91Lmd1aS5zcF9jb2xvcgorCQkJICAgICYmIGFlcC0+YWVfdS5ndWkuZm9udCA9PSB0YWVwLT5hZV91Lmd1aS5mb250CiAjICBpZmRlZiBGRUFUX1hGT05UU0VUCi0JCQkgICAgJiYgYWVwLT5hZV91Lmd1aS5mb250c2V0ID09IGdhcC0+YWVfdS5ndWkuZm9udHNldAorCQkJICAgICYmIGFlcC0+YWVfdS5ndWkuZm9udHNldCA9PSB0YWVwLT5hZV91Lmd1aS5mb250c2V0CiAjICBlbmRpZgogCQkJICAgICkpCiAJCSAgICB8fAogI2VuZGlmCiAJCSAgICAgICAodGFibGUgPT0gJnRlcm1fYXR0cl90YWJsZQotCQkJJiYgKGFlcC0+YWVfdS50ZXJtLnN0YXJ0ID09IE5VTEwpID09Ci0JCQkJCQkoZ2FwLT5hZV91LnRlcm0uc3RhcnQgPT0gTlVMTCkKKwkJCSYmIChhZXAtPmFlX3UudGVybS5zdGFydCA9PSBOVUxMKQorCQkJCQkgICAgPT0gKHRhZXAtPmFlX3UudGVybS5zdGFydCA9PSBOVUxMKQogCQkJJiYgKGFlcC0+YWVfdS50ZXJtLnN0YXJ0ID09IE5VTEwKIAkJCSAgICB8fCBTVFJDTVAoYWVwLT5hZV91LnRlcm0uc3RhcnQsCi0JCQkJCQkgICBnYXAtPmFlX3UudGVybS5zdGFydCkgPT0gMCkKLQkJCSYmIChhZXAtPmFlX3UudGVybS5zdG9wID09IE5VTEwpID09Ci0JCQkJCQkgKGdhcC0+YWVfdS50ZXJtLnN0b3AgPT0gTlVMTCkKKwkJCQkJCSAgdGFlcC0+YWVfdS50ZXJtLnN0YXJ0KSA9PSAwKQorCQkJJiYgKGFlcC0+YWVfdS50ZXJtLnN0b3AgPT0gTlVMTCkKKwkJCQkJICAgICA9PSAodGFlcC0+YWVfdS50ZXJtLnN0b3AgPT0gTlVMTCkKIAkJCSYmIChhZXAtPmFlX3UudGVybS5zdG9wID09IE5VTEwKIAkJCSAgICB8fCBTVFJDTVAoYWVwLT5hZV91LnRlcm0uc3RvcCwKLQkJCQkJCSAgIGdhcC0+YWVfdS50ZXJtLnN0b3ApID09IDApKQorCQkJCQkJICB0YWVwLT5hZV91LnRlcm0uc3RvcCkgPT0gMCkpCiAJCSAgICB8fCAodGFibGUgPT0gJmN0ZXJtX2F0dHJfdGFibGUKLQkJCSYmIGFlcC0+YWVfdS5jdGVybS5mZ19jb2xvciA9PSBnYXAtPmFlX3UuY3Rlcm0uZmdfY29sb3IKLQkJCSYmIGFlcC0+YWVfdS5jdGVybS5iZ19jb2xvciA9PSBnYXAtPmFlX3UuY3Rlcm0uYmdfY29sb3IpCisJCQkgICAgJiYgYWVwLT5hZV91LmN0ZXJtLmZnX2NvbG9yCisJCQkJCQkgID09IHRhZXAtPmFlX3UuY3Rlcm0uZmdfY29sb3IKKwkJCSAgICAmJiBhZXAtPmFlX3UuY3Rlcm0uYmdfY29sb3IKKwkJCQkJCSA9PSB0YWVwLT5hZV91LmN0ZXJtLmJnX2NvbG9yKQogCQkgICAgICkpCiAKIAlyZXR1cm4gaSArIEFUVFJfT0ZGOwpAQCAtNzU0NywxMSArNzU1NSw4IEBACiAJfQogCXJlY3Vyc2l2ZSA9IFRSVUU7CiAKLSNpZmRlZiBGRUFUX0dVSQotCWdhX2NsZWFyKCZndWlfYXR0cl90YWJsZSk7Ci0jZW5kaWYKLQlnYV9jbGVhcigmdGVybV9hdHRyX3RhYmxlKTsKLQlnYV9jbGVhcigmY3Rlcm1fYXR0cl90YWJsZSk7CisJY2xlYXJfaGxfdGFibGVzKCk7CisKIAltdXN0X3JlZHJhdyA9IENMRUFSOwogCiAJZm9yIChpID0gMDsgaSA8IGhpZ2hsaWdodF9nYS5nYV9sZW47ICsraSkKQEAgLTc1NjYsNDEgKzc1NzEsNjMgQEAKICAgICBpZiAoZ2FfZ3Jvdyh0YWJsZSwgMSkgPT0gRkFJTCkKIAlyZXR1cm4gMDsKIAotICAgIGdhcCA9ICYoKChhdHRyZW50cnlfVCAqKXRhYmxlLT5nYV9kYXRhKVt0YWJsZS0+Z2FfbGVuXSk7Ci0gICAgdmltX21lbXNldChnYXAsIDAsIHNpemVvZihhdHRyZW50cnlfVCkpOwotICAgIGdhcC0+YWVfYXR0ciA9IGFlcC0+YWVfYXR0cjsKKyAgICB0YWVwID0gJigoKGF0dHJlbnRyeV9UICopdGFibGUtPmdhX2RhdGEpW3RhYmxlLT5nYV9sZW5dKTsKKyAgICB2aW1fbWVtc2V0KHRhZXAsIDAsIHNpemVvZihhdHRyZW50cnlfVCkpOworICAgIHRhZXAtPmFlX2F0dHIgPSBhZXAtPmFlX2F0dHI7CiAjaWZkZWYgRkVBVF9HVUkKICAgICBpZiAodGFibGUgPT0gJmd1aV9hdHRyX3RhYmxlKQogICAgIHsKLQlnYXAtPmFlX3UuZ3VpLmZnX2NvbG9yID0gYWVwLT5hZV91Lmd1aS5mZ19jb2xvcjsKLQlnYXAtPmFlX3UuZ3VpLmJnX2NvbG9yID0gYWVwLT5hZV91Lmd1aS5iZ19jb2xvcjsKLQlnYXAtPmFlX3UuZ3VpLnNwX2NvbG9yID0gYWVwLT5hZV91Lmd1aS5zcF9jb2xvcjsKLQlnYXAtPmFlX3UuZ3VpLmZvbnQgPSBhZXAtPmFlX3UuZ3VpLmZvbnQ7CisJdGFlcC0+YWVfdS5ndWkuZmdfY29sb3IgPSBhZXAtPmFlX3UuZ3VpLmZnX2NvbG9yOworCXRhZXAtPmFlX3UuZ3VpLmJnX2NvbG9yID0gYWVwLT5hZV91Lmd1aS5iZ19jb2xvcjsKKwl0YWVwLT5hZV91Lmd1aS5zcF9jb2xvciA9IGFlcC0+YWVfdS5ndWkuc3BfY29sb3I7CisJdGFlcC0+YWVfdS5ndWkuZm9udCA9IGFlcC0+YWVfdS5ndWkuZm9udDsKICMgaWZkZWYgRkVBVF9YRk9OVFNFVAotCWdhcC0+YWVfdS5ndWkuZm9udHNldCA9IGFlcC0+YWVfdS5ndWkuZm9udHNldDsKKwl0YWVwLT5hZV91Lmd1aS5mb250c2V0ID0gYWVwLT5hZV91Lmd1aS5mb250c2V0OwogIyBlbmRpZgogICAgIH0KICNlbmRpZgogICAgIGlmICh0YWJsZSA9PSAmdGVybV9hdHRyX3RhYmxlKQogICAgIHsKIAlpZiAoYWVwLT5hZV91LnRlcm0uc3RhcnQgPT0gTlVMTCkKLQkgICAgZ2FwLT5hZV91LnRlcm0uc3RhcnQgPSBOVUxMOworCSAgICB0YWVwLT5hZV91LnRlcm0uc3RhcnQgPSBOVUxMOwogCWVsc2UKLQkgICAgZ2FwLT5hZV91LnRlcm0uc3RhcnQgPSB2aW1fc3Ryc2F2ZShhZXAtPmFlX3UudGVybS5zdGFydCk7CisJICAgIHRhZXAtPmFlX3UudGVybS5zdGFydCA9IHZpbV9zdHJzYXZlKGFlcC0+YWVfdS50ZXJtLnN0YXJ0KTsKIAlpZiAoYWVwLT5hZV91LnRlcm0uc3RvcCA9PSBOVUxMKQotCSAgICBnYXAtPmFlX3UudGVybS5zdG9wID0gTlVMTDsKKwkgICAgdGFlcC0+YWVfdS50ZXJtLnN0b3AgPSBOVUxMOwogCWVsc2UKLQkgICAgZ2FwLT5hZV91LnRlcm0uc3RvcCA9IHZpbV9zdHJzYXZlKGFlcC0+YWVfdS50ZXJtLnN0b3ApOworCSAgICB0YWVwLT5hZV91LnRlcm0uc3RvcCA9IHZpbV9zdHJzYXZlKGFlcC0+YWVfdS50ZXJtLnN0b3ApOwogICAgIH0KICAgICBlbHNlIGlmICh0YWJsZSA9PSAmY3Rlcm1fYXR0cl90YWJsZSkKICAgICB7Ci0JZ2FwLT5hZV91LmN0ZXJtLmZnX2NvbG9yID0gYWVwLT5hZV91LmN0ZXJtLmZnX2NvbG9yOwotCWdhcC0+YWVfdS5jdGVybS5iZ19jb2xvciA9IGFlcC0+YWVfdS5jdGVybS5iZ19jb2xvcjsKKwl0YWVwLT5hZV91LmN0ZXJtLmZnX2NvbG9yID0gYWVwLT5hZV91LmN0ZXJtLmZnX2NvbG9yOworCXRhZXAtPmFlX3UuY3Rlcm0uYmdfY29sb3IgPSBhZXAtPmFlX3UuY3Rlcm0uYmdfY29sb3I7CiAgICAgfQogICAgICsrdGFibGUtPmdhX2xlbjsKICAgICByZXR1cm4gKHRhYmxlLT5nYV9sZW4gLSAxICsgQVRUUl9PRkYpOwogfQogCisvKgorICogQ2xlYXIgYWxsIGhpZ2hsaWdodCB0YWJsZXMuCisgKi8KKyAgICB2b2lkCitjbGVhcl9obF90YWJsZXMoKQoreworICAgIGludAkJaTsKKyAgICBhdHRyZW50cnlfVAkqdGFlcDsKKworI2lmZGVmIEZFQVRfR1VJCisgICAgZ2FfY2xlYXIoJmd1aV9hdHRyX3RhYmxlKTsKKyNlbmRpZgorICAgIGZvciAoaSA9IDA7IGkgPCB0ZXJtX2F0dHJfdGFibGUuZ2FfbGVuOyArK2kpCisgICAgeworCXRhZXAgPSAmKCgoYXR0cmVudHJ5X1QgKil0ZXJtX2F0dHJfdGFibGUuZ2FfZGF0YSlbaV0pOworCXZpbV9mcmVlKHRhZXAtPmFlX3UudGVybS5zdGFydCk7CisJdmltX2ZyZWUodGFlcC0+YWVfdS50ZXJtLnN0b3ApOworICAgIH0KKyAgICBnYV9jbGVhcigmdGVybV9hdHRyX3RhYmxlKTsKKyAgICBnYV9jbGVhcigmY3Rlcm1fYXR0cl90YWJsZSk7Cit9CisKICNpZiBkZWZpbmVkKEZFQVRfU1lOX0hMKSB8fCBkZWZpbmVkKFBST1RPKQogLyoKICAqIENvbWJpbmUgc3BlY2lhbCBhdHRyaWJ1dGVzIChlLmcuLCBmb3Igc3BlbGxpbmcpIHdpdGggb3RoZXIgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvc3JjL3RhZy5jIGIvc3JjL3RhZy5jCmluZGV4IGU5NDMyMmQuLmU3ODBiM2MgMTAwNjQ0Ci0tLSBhL3NyYy90YWcuYworKysgYi9zcmMvdGFnLmMKQEAgLTEyMiw3ICsxMjIsOCBAQAogICogdHlwZSA9PSBEVF9MQVNUOglqdW1wIHRvIGxhc3QgbWF0Y2ggb2Ygc2FtZSB0YWcKICAqIHR5cGUgPT0gRFRfU0VMRUNUOgkiOnRzZWxlY3QgW3RhZ10iLCBzZWxlY3QgdGFnIGZyb20gYSBsaXN0IG9mIGFsbCBtYXRjaGVzCiAgKiB0eXBlID09IERUX0pVTVA6CSI6dGp1bXAgW3RhZ10iLCBqdW1wIHRvIHRhZyBvciBzZWxlY3QgdGFnIGZyb20gYSBsaXN0Ci0gKiB0eXBlID09IERUX0NTQ09QRToJdXNlIGNzY29wZSB0byBmaW5kIHRoZSB0YWcuCisgKiB0eXBlID09IERUX0NTQ09QRToJdXNlIGNzY29wZSB0byBmaW5kIHRoZSB0YWcKKyAqIHR5cGUgPT0gRFRfRlJFRToJZnJlZSBjYWNoZWQgbWF0Y2hlcwogICoKICAqIGZvciBjc2NvcGUsIHJldHVybnMgVFJVRSBpZiB3ZSBqdW1wZWQgdG8gdGFnIG9yIGFib3J0ZWQsIEZBTFNFIG90aGVyd2lzZQogICovCkBAIC0xNzMsNiArMTc0LDE5IEBACiAgICAgc3RhdGljIGNoYXJfdQkqKm1hdGNoZXMgPSBOVUxMOwogICAgIHN0YXRpYyBpbnQJCWZsYWdzOwogCisjaWZkZWYgRVhJVEZSRUUKKyAgICBpZiAodHlwZSA9PSBEVF9GUkVFKQorICAgIHsKKwkvKiByZW1vdmUgdGhlIGxpc3Qgb2YgbWF0Y2hlcyAqLworCUZyZWVXaWxkKG51bV9tYXRjaGVzLCBtYXRjaGVzKTsKKyMgaWZkZWYgRkVBVF9DU0NPUEUKKwljc19mcmVlX3RhZ3MoKTsKKyMgZW5kaWYKKwludW1fbWF0Y2hlcyA9IDA7CisJcmV0dXJuIEZBTFNFOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHR5cGUgPT0gRFRfSEVMUCkKICAgICB7CiAJdHlwZSA9IERUX1RBRzsKQEAgLTIxMDgsNyArMjEyMiw4IEBACiAJCQkgKiBvdGhlciB0YWc6IDxtdHQ+PHRhZ19mbmFtZT48TlVMPjxOVUw+PGxidWY+CiAJCQkgKiB3aXRob3V0IEVtYWNzIHRhZ3M6IDxtdHQ+PHRhZ19mbmFtZT48TlVMPjxsYnVmPgogCQkJICovCi0JCQlsZW4gPSAoaW50KVNUUkxFTih0YWdfZm5hbWUpICsgKGludClTVFJMRU4obGJ1Zl9saW5lKSArIDM7CisJCQlsZW4gPSAoaW50KVNUUkxFTih0YWdfZm5hbWUpCisJCQkJCQkgKyAoaW50KVNUUkxFTihsYnVmX2xpbmUpICsgMzsKICNpZmRlZiBGRUFUX0VNQUNTX1RBR1MKIAkJCWlmIChpc19ldGFnKQogCQkJICAgIGxlbiArPSAoaW50KVNUUkxFTihlYnVmKSArIDE7CkBAIC0yMzQ1LDYgKzIzNjAsMTcgQEAKIAkJCQkJCQkgICB2aW1fc3Ryc2F2ZShmbmFtZSk7CiB9CiAKK3N0YXRpYyB2b2lkCSpzZWFyY2hfY3R4ID0gTlVMTDsKKworI2lmIGRlZmluZWQoRVhJVEZSRUUpIHx8IGRlZmluZWQoUFJPVE8pCisgICAgdm9pZAorZnJlZV90YWdfc3R1ZmYoKQoreworICAgIHZpbV9maW5kZmlsZV9jbGVhbnVwKHNlYXJjaF9jdHgpOworICAgIGRvX3RhZyhOVUxMLCBEVF9GUkVFLCAwLCAwLCAwKTsKK30KKyNlbmRpZgorCiAvKgogICogR2V0IHRoZSBuZXh0IG5hbWUgb2YgYSB0YWcgZmlsZSBmcm9tIHRoZSB0YWcgZmlsZSBsaXN0LgogICogRm9yIGhlbHAgZmlsZXMsIHVzZSAidGFncyIgZmlsZSBvbmx5LgpAQCAtMjM1Niw3ICsyMzgyLDYgQEAKICAgICBpbnQJCWZpcnN0OwkvKiBUUlVFIHdoZW4gZmlyc3QgZmlsZSBuYW1lIGlzIHdhbnRlZCAqLwogICAgIGNoYXJfdQkqYnVmOwkvKiBwb2ludGVyIHRvIGJ1ZmZlciBvZiBNQVhQQVRITCBjaGFycyAqLwogewotICAgIHN0YXRpYyB2b2lkCQkqc2VhcmNoX2N0eCA9IE5VTEw7CiAgICAgc3RhdGljIGNoYXJfdQkqbnAgPSBOVUxMOwogICAgIHN0YXRpYyBpbnQJCWRpZF9maWxlZmluZF9pbml0OwogICAgIHN0YXRpYyBpbnQJCWhmX2lkeCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvdW5kby5jIGIvc3JjL3VuZG8uYwppbmRleCAyYmI1NDU2Li5lNTg2ZTU2IDEwMDY0NAotLS0gYS9zcmMvdW5kby5jCisrKyBiL3NyYy91bmRvLmMKQEAgLTQxMSw2ICs0MTEsOCBAQAogCSAgICB9CiAJfQogICAgIH0KKyAgICBlbHNlCisJdWVwLT51ZV9hcnJheSA9IE5VTEw7CiAgICAgdWVwLT51ZV9uZXh0ID0gY3VyYnVmLT5iX3VfbmV3aGVhZC0+dWhfZW50cnk7CiAgICAgY3VyYnVmLT5iX3VfbmV3aGVhZC0+dWhfZW50cnkgPSB1ZXA7CiAgICAgY3VyYnVmLT5iX3Vfc3luY2VkID0gRkFMU0U7CkBAIC05MjMsNiArOTI1LDcgQEAKIHsKICAgICB3aGlsZSAobikKIAlVX0ZSRUVfTElORSh1ZXAtPnVlX2FycmF5Wy0tbl0pOworICAgIFVfRlJFRV9MSU5FKChjaGFyX3UgKil1ZXAtPnVlX2FycmF5KTsKICAgICBVX0ZSRUVfTElORSgoY2hhcl91ICopdWVwKTsKIH0KIApAQCAtMTA0Nyw2ICsxMDUwLDcgQEAKIHsKICAgICB3aGlsZSAoYnVmLT5iX3VfbmV3aGVhZCAhPSBOVUxMKQogCXVfZnJlZWxpc3QoYnVmLCBidWYtPmJfdV9uZXdoZWFkKTsKKyAgICBVX0ZSRUVfTElORShidWYtPmJfdV9saW5lX3B0cik7CiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCA0ZGUyOWQwLi4wYzM4YTBlIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTM2LDUgKzM2LDUgQEAKICNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX1NIT1JUCSI3LjBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBhYSBBTFBIQSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgSnVuIDI0KSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBKdW4gMjQsIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgSnVuIDI1KSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBKdW4gMjUsIGNvbXBpbGVkICIK