ZGlmZiAtLWdpdCBhL01hYy9JbmNsdWRlL3B5dGhvbnJlc291cmNlcy5oIGIvTWFjL0luY2x1ZGUvcHl0aG9ucmVzb3VyY2VzLmgKaW5kZXggNDllOTA5Zi4uNGE2OWQ1ZCAxMDA2NDQKLS0tIGEvTWFjL0luY2x1ZGUvcHl0aG9ucmVzb3VyY2VzLmgKKysrIGIvTWFjL0luY2x1ZGUvcHl0aG9ucmVzb3VyY2VzLmgKQEAgLTQzLDYgKzQzLDcgQEAKICNkZWZpbmUgT1BUX0RFQlVHR0lORwk3CiAjZGVmaW5lIE9QVF9LRUVQTk9STUFMCTgKICNkZWZpbmUgT1BUX0tFRVBFUlJPUgk5CisjZGVmaW5lIE9QVF9DTURMSU5FCQkxMAogCiAvKiBEaWFsb2cgZm9yICdObyBwcmVmZXJlbmNlcyBkaXJlY3RvcnknICovCiAjZGVmaW5lIE5PUFJFRkRJUl9JRAkxMzMKZGlmZiAtLWdpdCBhL01hYy9QeXRob24vbWFjbWFpbi5jIGIvTWFjL1B5dGhvbi9tYWNtYWluLmMKaW5kZXggOTY2YzI3OS4uYmNmZWQxYSAxMDA2NDQKLS0tIGEvTWFjL1B5dGhvbi9tYWNtYWluLmMKKysrIGIvTWFjL1B5dGhvbi9tYWNtYWluLmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogdm9pZAogUHlNYWNfSW50ZXJhY3RpdmVPcHRpb25zKGludCAqaW5zcGVjdCwgaW50ICp2ZXJib3NlLCBpbnQgKnN1cHByZXNzX3ByaW50LCAKIAkJCQkJCSBpbnQgKnVuYnVmZmVyZWQsIGludCAqZGVidWdnaW5nLCBpbnQgKmtlZXBfbm9ybWFsLAotCQkJCQkJIGludCAqa2VlcF9lcnJvcikKKwkJCQkJCSBpbnQgKmtlZXBfZXJyb3IsIGludCAqYXJnY3AsIGNoYXIgKioqYXJndnApCiB7CiAJS2V5TWFwIHJtYXA7CiAJdW5zaWduZWQgY2hhciAqbWFwOwpAQCAtMjE2LDYgKzIxNiw4IEBACiAJQ29udHJvbEhhbmRsZSBoYW5kbGU7CiAJRGlhbG9nUHRyIGRpYWxvZzsKIAlSZWN0IHJlY3Q7CisJaW50IG9sZF9hcmdjID0gKmFyZ2NwOworCWludCBpOwogCQogCS8qIERlZmF1bHQtZGVmYXVsdHM6ICovCiAJKmtlZXBfZXJyb3IgPSAxOwpAQCAtMjMzLDYgKzIzNSw4IEBACiAJCXByaW50ZigiT3B0aW9uIGRpYWxvZyBub3QgZm91bmQgLSBjYW5ub3Qgc2V0IG9wdGlvbnNcbiIpOwogCQlyZXR1cm47CiAJfQorCVNldERpYWxvZ0RlZmF1bHRJdGVtKGRpYWxvZywgT1BUX09LKTsKKwlTZXREaWFsb2dDYW5jZWxJdGVtKGRpYWxvZywgT1BUX0NBTkNFTCk7CiAJCiAJLyogU2V0IGRlZmF1bHQgdmFsdWVzICovCiAjZGVmaW5lIFNFVF9PUFRfSVRFTShudW0sIHZhcikgXApAQCAtMjU4LDYgKzI2MiwyNCBAQAogCQkJRGlzcG9zRGlhbG9nKGRpYWxvZyk7CiAJCQlleGl0KDApOwogCQl9CisJCWlmICggaXRlbSA9PSBPUFRfQ01ETElORSApIHsKKwkJCWludCBuZXdfYXJnYywgbmV3ZXJfYXJnYzsKKwkJCWNoYXIgKipuZXdfYXJndiwgKipuZXdlcl9hcmd2OworCQkJCisJCQluZXdfYXJnYyA9IGNjb21tYW5kKCZuZXdfYXJndik7CisJCQluZXdlcl9hcmdjID0gKG5ld19hcmdjLTEpICsgb2xkX2FyZ2M7CisJCQluZXdlcl9hcmd2ID0gbWFsbG9jKChuZXdlcl9hcmdjKzEpKnNpemVvZihjaGFyICopKTsKKwkJCWlmKCAhbmV3ZXJfYXJndiApCisJCQkJUHlfRmF0YWxFcnJvcigiQ2Fubm90IG1hbGxvYyBhcmd2XG4iKTsKKwkJCWZvcihpPTA7IGk8b2xkX2FyZ2M7IGkrKykKKwkJCQluZXdlcl9hcmd2W2ldID0gKCphcmd2cClbaV07CisJCQlmb3IoaT1vbGRfYXJnYzsgaTw9bmV3ZXJfYXJnYzsgaSsrKSAvKiBDb3B5IHRoZSBOVUxMIHRvbyAqLworCQkJCW5ld2VyX2FyZ3ZbaV0gPSBuZXdfYXJndltpLW9sZF9hcmdjKzFdOworCQkJKmFyZ3ZwID0gbmV3ZXJfYXJndjsKKwkJCSphcmdjcCA9IG5ld2VyX2FyZ2M7CisJCQkKKwkJCS8qIFhYWFggSXMgaXQgbm90IHNhZmUgdG8gdXNlIGZyZWUoKSBoZXJlLCBhcHBhcmVudGx5ICovCisJCX0KICNkZWZpbmUgT1BUX0lURU0obnVtLCB2YXIpIFwKIAkJaWYgKCBpdGVtID09IChudW0pICkgeyBcCiAJCQkqKHZhcikgPSAhKih2YXIpOyBcCkBAIC0yOTEsMTIgKzMxMywxMiBAQAogCWludCBpbnNwZWN0ID0gMDsKIAlpbnQgdW5idWZmZXJlZCA9IDA7CiAKKwlQeU1hY19JbnRlcmFjdGl2ZU9wdGlvbnMoJmluc3BlY3QsICZQeV9WZXJib3NlRmxhZywgJlB5X1N1cHByZXNzUHJpbnRpbmdGbGFnLAorCQkJJnVuYnVmZmVyZWQsICZQeV9EZWJ1Z0ZsYWcsICZrZWVwX25vcm1hbCwgJmtlZXBfZXJyb3IsICZhcmdjLCAmYXJndik7CisKIAlvcmlnX2FyZ2MgPSBhcmdjOwkvKiBGb3IgZ2V0YXJnY2FyZ3YoKSAqLwogCW9yaWdfYXJndiA9IGFyZ3Y7CiAJYXJndjAgPSBhcmd2WzBdOwkvKiBGb3IgZ2V0cHJvZ3JhbW5hbWUoKSAqLwotCQotCVB5TWFjX0ludGVyYWN0aXZlT3B0aW9ucygmaW5zcGVjdCwgJlB5X1ZlcmJvc2VGbGFnLCAmUHlfU3VwcHJlc3NQcmludGluZ0ZsYWcsCi0JCQkmdW5idWZmZXJlZCwgJlB5X0RlYnVnRmxhZywgJmtlZXBfbm9ybWFsLCAma2VlcF9lcnJvcik7CiAKIAlpZiAodW5idWZmZXJlZCkgewogI2lmbmRlZiBNUFcKQEAgLTM2Niw3ICszODgsNyBAQAogCWlmIChrZWVwKSB7CiAJCVNJT1VYU2V0dGluZ3Muc3RhbmRhbG9uZSA9IDE7CiAJCVNJT1VYU2V0dGluZ3MuYXV0b2Nsb3Nlb25xdWl0ID0gMDsKLQkJU0lPVVhTZXRUaXRsZSgiXHCrdGVybWluYXRlZLsiKTsKKwkJU0lPVVhTZXRUaXRsZSgiXHC0dGVybWluYXRlZKoiKTsKIAl9CiAJZWxzZQogCQlTSU9VWFNldHRpbmdzLmF1dG9jbG9zZW9ucXVpdCA9IDE7CmRpZmYgLS1naXQgYS9NYWMvUmVzb3VyY2VzL2RpYWxvZ3MucnNyYy5ocXggYi9NYWMvUmVzb3VyY2VzL2RpYWxvZ3MucnNyYy5ocXgKaW5kZXggNGRhZTdiYi4uNjczYzU2ZSAxMDA2NDQKLS0tIGEvTWFjL1Jlc291cmNlcy9kaWFsb2dzLnJzcmMuaHF4CisrKyBiL01hYy9SZXNvdXJjZXMvZGlhbG9ncy5yc3JjLmhxeApAQCAtMSw4ICsxLDggQEAKIChUaGlzIGZpbGUgbXVzdCBiZSBjb252ZXJ0ZWQgd2l0aCBCaW5IZXggNC4wKQogCi06JCc0VEJAYVtDaC1aRlIwYkJgImJGaCpNOFAwJjQhJSFOIUYsNVlNUSEqISUhMyEhISFNSSEhIShoYCEhIVFYCis6JCc0VEJAYVtDaC1aRlIwYkJgImJGaCpNOFAwJjQhJSFOIUYsR0xtaiEqISUhMyEhISFOLCEhISkjYCEhIVFYCiBmJiMiOCknSiEmIyIzSTQnYEQiJSExSiZSKkspWyQla2shSmAtMUoiREgzYU5EQCZYRWZHYyxSKmNGUTBjIUohCi0hISgqY0ZRMDU4ZDklITMhITAhIyEhISJiRmgqTThQMCY0ISUhISQzIUohIzMlVWMxKGYzIU4hQiw1W200YCtLCisjISgqY0ZRMDU4ZDklITMhITAhIyEhSiJiRmgqTThQMCY0ISUhISQzIUohIzMlVWMxKGYzIU4hQixHW200YCtLCiBUITRlISVJcmMlaCEhJSNscm1saDUlQEIzODZEcTlAWCIhOColW0QncTlAWCIhNiI0LUomUihOMzkkISEhKCc4CiA1RiEhMyxOLTkkISEhKGYpJ0YhJkohISUiIUxhRDkjZFo0LGQiISJYbSFAQmAqZThxJ05VISkmLSMrISNyISNpCiBMITFkKiFKJSEzKS1TZmMzNlVHRlskJWtrITNQK0NmWCIhK0NBM2NTISEhImQhISUhTiE5LCEmRiFBYCM0IiEqCkBAIC0xNyw3ICsxNyw3IEBACiAhITMlISEzIzMiMyUiISohJTNKISQhKiEmQEojciEnaSFxYDMjNmRYIU4hOUQhIVMhRUoiJSIhQyRCQGpNQ0BgCiAhTiE4KyEhUyEtISRsTCEjMyJNQiEkMyIrITJKMyEqISUmMyMjISczIWtKJk4hISUiISElIU4hOCIhSiMzIiYzCiAhIiEjMyI4ZCE2SiJIISczKSEqISc2MyQhISclIXFKMyRAQDljcUojMyI4ZCFJYCJLISxOJSFOalshKiEmNjMhCi0rISclITRKMyczZiZaQmY5WCEqISYjSiErISVCIXFTSiFOITM5ISNKISshJSkhOEIhITMlISEzIzMiUy0hTiE2CisrISclITRKMyczZiZaQmY5WCEqISYjSiErISVCIXFTSiFOITM5ISNKISshJVQhODghITMlISEzIzMiUy0hTiE2CiAtISFTIU4hQDghM2QhVEomRyIhNDJGJzlaISohJlZgJTAhLSUiQTMzJzNmJlpCZjlYISohJSIqRiEySjZSISYhCiAlISohJylgJFUhJEYiQUIhIU4hQyMhM2QhOSEmRyIhOSZEUTlNRyEjMyJQYCIkMyJaITlkJSJkNFBGZllkRWghCiAhTiFDIiEhaSFgSiRVISohKClgIVshJEohYkIhIU4hQ3AhMzghSUomR0ohIzMiSkohJGAhQiE5WikhKiEnY0ohCkBAIC0zNSwyNSArMzUsMjYgQEAKIGREJ3BaKSYiYkNAQ1BGUTlaQmY5YypiIktGKCJQQkEqYyknMFtGUiplRigzMCsmImpHJ0tbRUwiU0VmZVApJ0MKIFtFJzRQRkwiVEVRMFtGUipQQmgzVCxMITAkOSJYQ0AmY0M1ImJDQGVbR1E4SkRBM0pCQGpOKSgqUEZoNEtGUjMKIEpGKFBkRCdwWixKIzMiIWAhOEohcSEtISJNSiMmOTk4ISEhIS0hKGkhRCEkayFGZCFLUDk5ISEhISQhIi0hJykKLSFhISgqISlHOTkzISEhQTMhI0ojMyJFaSFlMyQ1ITNtJSFlKmVFUUohTiFAcSEhUyFkSiIoIiFDJEJAak1DQGAKLSFOIThIISFOIS0hJTEiNTAmRVI0UEZMIlRFUjRQRlEmTUcnUGZDNSJZRWY0UCknJlFHJzliKSgwTUZRUGBHIy0KLSFOIThjISFOITQzJTEiNEc4RlEmTUM1IlRFQSJbRlIzSkZoNEtHJzlZQ0BqZEZqUyFOITkqISFOIUBgJTAiNGEKLTZHQSJgRlE5Y0ZiIlBIKCJiQ0EwY0RAcFopKCJiREBqZERAalIhKiEmQWAhKiEoJSIkIThCOUBqTEdAQ1FDQSoKLVBDIyJjRyc0W0dBM1tGaDROQ0EqYiEqISZHMyEqISlGIiNgODY0JzlMR0BGSkYnJmJGZjliKSdwZUcoImVHKDMKLSFOIUBKISJpIVhKIy0iM1kxRWgqWUJAYEpDQUtURygpIU4hQEohKyEhWEolKyIzVFBGUipbRkwiUEgnUGQhKiEKLSYiSiFRISJGIWxTSkQ4KFBkRCdwWiknUFpHJzliRigqUEcnOWIpJ3BgRydQW0VSLSFOIUAtISFTIVIhJSxMIlQKLSxDQDlgKSgwZEMnUFspKEdURVE0W0diIltGJzlaKSdwWjFKISEhIjghREoiQiEsSiJUISEiITMhIiEqISYhMy0KLSFOITNiISEpIU4hOFkhMzMhMzMmIUshQ01CQGpNQ0BgIU4hOCshIVMhKWAkakwhIzMiTGQhI0oiISEyVSEhISEKLSEhMyEhISFNSSEhIShoYCEhIVFYIXFSMTglYVMhISEhRiE5QiEhTjQqOSVgISNgIUQzOGE1OSEhJSErVCU2JXAKLSghIUIhakojIiEkbSFOIUFrRlFgIUohIVshISEhUzMka0ZSMyIhISInISEhIkohJGtGUUoiITMiMSEhISJbMyQKLWtGUTMiIUoiWCEhISMoISRrRlEhIUpgI0ghISEnJyEka0ZQYCFKSiMhKSEhI00zJGtGUEohSyEjMyEjISEhZWQKLSFxUio4ISk4IVshISEiIyEhcVIqMyEpQiFhSiEhIiwhIXFSKi0hKUYhZDMhISI5QiFxUiopITMtIXIzISEia04KLSFxUiolISklISshISEhKEohTiFAISEiSiEhISZBISohJkszJEchISEmayEjMyJCQiFqYCEhIklKIU4hQCghMiUKLSEhIUIpISohJkpKISEpISEhTCEka0ZNSiIhISEzISEhIkNgJGtGTTMiITMiQSEhISJUISRrRjgzIiFKIkohISEKLSMhYCRrRkxgIUpgImkhISEjRyEka0ZNISFLISNaKSEhJSJgJGtGTEoiIWAlKiEhIShOISEhcVIpRiRlMFBFJzkKLU1HJTRURlE5TUcncGJIM0cwQ0EwY0JAR1AkZSJqRydLW0VONFRGUTlNRydwYkgzQyJGKCJYQ0EzMjgoUGREJ3AKLVo0J1BiQ0AwZEVoKmoiTiZgRidhUEchRzBDQTBjQkBHUCMmJmVDQTBkREBwWiMmJmVDQTBkREBwWiNlUFBGZGoKLVszZiZaQmY5WCNlUFBGZGpbM2YmWkJmOVgiZHBgRydQW0VSLTI4ZjlYQ0AwZDQnUGJDQDBkRWgqaiQ5ImJFZmUKLWBHJUdQRyVDVEUnODI4aDRLRlI0ZUYjIltGKDRURWZqYyQ5ImJFZmVgRyVHUEclQ1RFJzgqNlFwM0ZROVE0J1AKLWIjTmpbOCgqUENOQ1RFJzgsM1EmTjgoKlBDTkNURSc4KjZRcDNGUTlRNCdQYiM4als4KCpQQ040VEZKWSNCQDQKLTNGUTlRNFFQWEMzWTNGUXBSRlE5Y0ZkKktGSlkzRlFwUkZROWNGZCpLRlQrUToKKyFhISgqISlHOTkzISEhIjghREoiQiEsSiJUISEiITMhIiEqISYhMy0hTiEzYiEhKSFOIThZITMzITMzJiFLIUMKK01CQGpNQ0BgIU4hOCshIVMhKWAkakwhIzMiTGQhI0oiISEyVSEhISEhIUQhISNgIzMiSC0hZGAkaCEzZCUhZSoKK2VFUUohTiFBTSEhSiFwYCImIiFDJEJAak1DQGAhTiE4SCEhTiEtISUxIjUwJkVSNFBGTCJURVI0UEZRJk1HJ1AKK2ZDNSJZRWY0UCknJlFHJzliKSgwTUZRUGBHIy0hTiE4YyEhTiE0MyUxIjRHOEZRJk1DNSJURUEiW0ZSM0pGaDQKK0tHJzlZQ0BqZEZqUyFOITkqISFOIUBgJTAiNGE2R0EiYEZROWNGYiJQSCgiYkNBMGNEQHBaKSgiYkRAamREQGoKK1IhKiEmQWAhKiEoJSIkIThCOUBqTEdAQ1FDQSpQQyMiY0cnNFtHQTNbRmg0TkNBKmIhKiEmRzMhKiEpRiIjYDgKKzY0JzlMR0BGSkYnJmJGZjliKSdwZUcoImVHKDMhTiFASiEiaSFYSiMtIjNZMUVoKllCQGBKQ0FLVEcoKSFOIUAKK0ohKyEhWEolKyIzVFBGUipbRkwiUEgnUGQhKiEmYCEhKiEwOCIjMzNIOGY5ZCkoOVpEQUpZRmg0akUnOEpCZnAKK1lFQCZaQyMiWERAalAsTGlaISohJiJKIVEhIkYhbFNKRDgoUGREJ3BaKSdQWkcnOWJGKCpQRyc5YikncGBHJ1AKK1tFUi0hTiFALSEhUyFSISUsTCJULENAOWApKDBkQydQWykoR1RFUTRbR2IiW0YnOVopJ3BaMUohISEzISEhIU4KKywhISEpI2AhISFRWCJLNFltJmkpISEhIUYhOUIhIU40KjklYCEjYCFEMzhhNTkhISUhK1QlNiVwKCEhQiFqSiMKKyIhJG0hTiEzIks2JiUhKSEhLGAhISErJSJLNiYtITMhITRKISEhQiEiSzYmISEzJSE2SiEhIUVkIks2JVghMykKKyFFISEhIUtgIks2JVMhKS0hUkohISJRRiJLNiVOISkpIUojISEhU2QiSzYlSiEpMyFOISFKISEwRyFCOGEoISMKKyYhLGAhISEzSiFCOGEnISMnIS1CISEhNWAhQjhhJiEjKCEwJSEhITlAIUI4YSUhJSQhMmQhISFCYSFCOGEkISMKKyIhI0ohISEiaSEqISZKISFCISEhIjlgIzMiQjghaDMhISJISiFOIUAnITFGISEhQWkhKiEmS2AkYSEhIScjISMKKzMiQikhISMhISEpSiFOITMiISEhMyEhISJDYCMzIiElIiEmRiEhISdOISohJSEzKSFCISEhIUotIU4hQCQhKEoKKyEhISpkIUI4W0shIyUhK2lKISEzKCEqISUhMy0iIzMhISJLSiFOITMyOGY5WENAMGQ0J1BiQ0AwZEVoKmoiZGUKK1BGaDBLQ2Y4MjgoUGREJ3BaNCdQYkNAMGRFaCpqIk4mYEYnYVBHIXAzSEE0U0VmaiVEQSpQQmg0W0ZSTiczQSIKK2BFJzlkImRlUEZoMEtDZjgpOEE5UEZoNFRFZmkpOEE5UEZoNFRFZmksQEA5YzZRcCRCQGpNQ0BgLEBAOWM2UXAKKyRCQGpNQ0BgKDZoImREQHBaRmBwNkNAYVBCaDQlREEqUEJoNFtGUk4wOCgqW0VBImQ0ZjlkNFFQWEMzcDZHJyYKK2JHKDlgKSdwYEcnUFtFUi0wOCgqW0VBImQ0ZjlkNFFQWEMzUDFFZSJiQ0BDJURBKSs2UXAzRlE5UTRRUFhDM1kKKyNCQDQzRlE5UTRRUFhDM1AxRWUiYkNAQyVEQSkqNlFwM0ZROVE0J1BiI2QqS0MmImJDQEMnREBhUCNlImJFZkcKK2JDQTBjM1EmYiNlImJFZkdiQ0EwYzNRJmInJi06Cg==