Name: series-workflowg5hhr Phase: Failed StartedAt: 2026-09-10 19:42:32 +0000 UTC FinishedAt: 2026-09-10 20:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hhr[0] Phase: Succeeded StartedAt: 2026-09-10 19:42:32 +0000 UTC FinishedAt: 2026-09-10 20:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hhr[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 19:42:32 +0000 UTC FinishedAt: 2026-09-10 20:03:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwMGZmYWZkMDI0YThjODU5NmZjZWRlMTYyZTdjMDU2Mzg2ODQxZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDowMzoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IDhjMmY5MjU1YjM2ZDcuLjZhYjkxMWU4MjE1NTEgMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuQEAgLTE3NjksNyAmIzQzOzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiYjNDM7XHRcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4gXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgeGRwbWV0YV9pZmluZGV4KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCBvZmZsb2FkX2lmaW5kZXgpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5pbmRleCBjMDM2ZThhOTFlZDg4Li4yMjFjNGZlMWZiMzE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuQEAgLTk5MzgsNiAmIzQzOzk5MzgsMTYgQEAgaW50IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctXHUwMDNlcHJvZ19mbGFncyB8IGZsYWdzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIFx1MDAyNiB+ZmxhZ3MpO1xuJiM0Mzt9XG4mIzQzO1xuIF9fdTMyIGJwZl9wcm9ncmFtX19sb2dfbGV2ZWwoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbiBcdHJldHVybiBwcm9nLVx1MDAzZWxvZ19sZXZlbDtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5oIGIvdG9vbHMvbGliL2JwZi9saWJicGYuaFxuaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbkBAIC0xMDExLDYgJiM0MzsxMDExLDEyIEBAIGJwZl9wcm9ncmFtX19zZXRfZXhwZWN0ZWRfYXR0YWNoX3R5cGUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuIExJQkJQRl9BUEkgX191MzIgYnBmX3Byb2dyYW1fX2ZsYWdzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyk7XG4gTElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbiBcbiYjNDM7LyogQ29udmVuaWVuY2UgaGVscGVycyB0byBub24tZGVzdHJ1Y3RpdmVseSBhZGQgb3IgY2xlYXIgdGhlIHNwZWNpZmllZCBmbGFnc1xuJiM0MzsgKiBpbnN0ZWFkIG9mIGNsb2JiZXJpbmcgdGhlbSBhcyBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKCkgZG9lcy5cbiYjNDM7ICovXG4mIzQzO0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7XG4mIzQzO0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbiYjNDM7XG4gLyogUGVyLXByb2dyYW0gbG9nIGxldmVsIGFuZCBsb2cgYnVmZmVyIGdldHRlcnMvc2V0dGVycy5cbiAgKiBTZWUgYnBmX29iamVjdF9vcGVuX29wdHMgY29tbWVudHMgcmVnYXJkaW5nIGxvZ19sZXZlbCBhbmQgbG9nX2J1ZlxuICAqIGludGVyYWN0aW9ucy5cbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXAgYi90b29scy9saWIvYnBmL2xpYmJwZi5tYXBcbmluZGV4IDA4YWIyZWE4ODFmYjYuLmE4MTFhMWIzYTA4NTcgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXBcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuQEAgLTQ1OCw3ICYjNDM7NDU4LDkgQEAgTElCQlBGXzEuNy4wIHtcbiBcbiBMSUJCUEZfMS44LjAge1xuIFx0Z2xvYmFsOlxuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncztcbiBcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpO1xuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzO1xuIFx0XHRicGZfcHJvZ3JhbV9fY2xvbmU7XG4gXHRcdGJ0Zl9fZmluZF9ieV9uYW1lX2tpbmRfb3duO1xuIFx0XHRidGZfX25ld19lbXB0eV9vcHRzO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbmluZGV4IDdkYWRiOTBlN2I2ODkuLjQxMTM2ZTFjNzc1MmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbkBAIC01NDMsOSAmIzQzOzU0Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi9cbi1cdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoXG4tXHRcdFx0ICAgICAgIHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXG4tXHRcdFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSksXG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpLFxuIFx0XHQgICAgICAgXCYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG5pbmRleCA2NTIzMDdhMWIyMmU3Li45MDJhNzBkNWFmZWI2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RhdGljIGludCBjaGVja19sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuIFx0fVxuIFxuIFx0YnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7XG4gXG4gXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbmluZGV4IDI1ZWI1OWY0NjBhYmUuLjcyYzBlZjhkYTQwOWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG5AQCAtMTAsMTUgJiM0MzsxMCwzMSBAQCB2b2lkIHRlc3Rfa2VybmVsX2ZsYWcodm9pZClcbiBcdHN0cnVjdCB0ZXN0X2tlcm5lbF9mbGFnICpsc21fc2tlbDtcbiBcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3QgKnNrZWwgPSBOVUxMO1xuIFx0c3RydWN0IGtmdW5jX2NhbGxfdGVzdF9sc2tlbCAqbHNrZWwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbiYjNDM7XHRfX3UzMiBmbGFncztcbiBcdGludCByZXQ7XG4gXG4tXHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW4oKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgXCYjMzQ7bHNtX3NrZWxcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZikgXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHRwcm9nID0gbHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmO1xuJiM0MztcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xuJiM0MztcdEFTU0VSVF9FUShmbGFncyBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuIFx0XHQgIEJQRl9GX1NMRUVQQUJMRSwgXCYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcJiMzNDspO1xuIFxuJiM0MztcdHJldCA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfQU5ZX0FMSUdOTUVOVCk7XG4mIzQzO1x0QVNTRVJUX09LKHJldCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2FkZF9mbGFncyByZXRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyksIGZsYWdzIHwgQlBGX0ZfQU5ZX0FMSUdOTUVOVCxcbiYjNDM7XHRcdCAgXCYjMzQ7YnBmX3Byb2dyYW1fX2FkZF9mbGFncyB2YWx1ZVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcbiYjNDM7XHRBU1NFUlRfT0socmV0LCBcJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0XCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncywgXCYjMzQ7YnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzIHZhbHVlXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gdGVzdF9rZXJuZWxfZmxhZ19fbG9hZChsc21fc2tlbCk7XG4mIzQzO1x0QVNTRVJUX09LKHJldCwgXCYjMzQ7dGVzdF9rZXJuZWxfZmxhZ19fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuIFx0bHNtX3NrZWwtXHUwMDNlYnNzLVx1MDAzZW1vbml0b3JlZF90aWQgPSBzeXNfZ2V0dGlkKCk7XG4gXG4gXHRyZXQgPSB0ZXN0X2tlcm5lbF9mbGFnX19hdHRhY2gobHNtX3NrZWwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5pbmRleCBlZDNmZDBhODhkYWI2Li42NTExMjNjZDg2MDJkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xuQEAgLTM2MSw4ICYjNDM7MzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpXG4gXG4gXHRzbF9za2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IHNsX3NrZWw7XG4gXG4tXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNsX3NrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXG4tXHRcdFx0XHQgICAgIGJwZl9wcm9ncmFtX19mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzbGVlcF9za2VsX3NldF9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG5pbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG5AQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCYjMzQ7cnhcJiMzNDspO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyZWRpcmVjdFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCYjMzQ7bG9hZCBza2VsZXRvblwmIzM0OykpXG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbmluZGV4IDc5NGE3ZGZiMDU3OTYuLjI4NzI0ZGUwNjMyMjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbkBAIC03NDgsNyAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdFx0XHQgc3RydWN0IGJwZl9vYmplY3QgKm9iaixcbiBcdFx0XHQgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbi1cdGludCBtaW5fbG9nX2xldmVsID0gMCwgcHJvZ19mbGFncztcbiYjNDM7XHRpbnQgbWluX2xvZ19sZXZlbCA9IDA7XG4gXG4gXHRpZiAoZW52LnZlcmJvc2l0eSBcdTAwM2UgVkVSQk9TRV9OT05FKVxuIFx0XHRtaW5fbG9nX2xldmVsID0gMTtcbkBAIC03NjYsOCAmIzQzOzc2Niw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdGVsc2VcbiBcdFx0YnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy1cdTAwM2Vsb2dfbGV2ZWwpO1xuIFxuLVx0cHJvZ19mbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZ19mbGFncyB8IHNwZWMtXHUwMDNlcHJvZ19mbGFncyk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuIFxuIFx0dGVzdGVyLVx1MDAzZWxvZ19idWZbMF0gPSAmIzM5O1xcMCYjMzk7O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbmluZGV4IDNmMDM3OTQ5ZTk3ODkuLmQxZDYwNDUxYzViY2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xuQEAgLTI5Miw3ICYjNDM7MjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdCk7XG4gXHRzdHJ1Y3QgYnBmX29iamVjdCAqb2JqO1xuIFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuLVx0X191MzIgZmxhZ3M7XG4gXHRpbnQgZXJyO1xuIFxuIFx0b2JqID0gYnBmX29iamVjdF9fb3Blbl9maWxlKGZpbGUsIFx1MDAyNm9wdHMpO1xuQEAgLTMwOCw4ICYjNDM7MzA3LDcgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdGlmICh0eXBlICE9IEJQRl9QUk9HX1RZUEVfVU5TUEVDIFx1MDAyNlx1MDAyNiBicGZfcHJvZ3JhbV9fdHlwZShwcm9nKSAhPSB0eXBlKVxuIFx0XHRicGZfcHJvZ3JhbV9fc2V0X3R5cGUocHJvZywgdHlwZSk7XG4gXG4tXHRmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IHRlc3RpbmdfcHJvZ19mbGFncygpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBmbGFncyk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4gXG4gXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGU3MDc0MWM2YjliN2MuLjljZmM5YjRiNDFjMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC0xNzIyLDkgJiM0MzsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcbiBcdGZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpO1xuIFxuIFx0aWYgKGVudi5mb3JjZV9jaGVja3BvaW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuIFx0aWYgKGVudi5mb3JjZV9yZWdfaW52YXJpYW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcbiYjNDM7XHRcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfVEVTVF9SRUdfSU5WQVJJQU5UUyk7XG4gXG4gXHRvcHRzLmxvZ19idWYgPSBidWY7XG4gXHRvcHRzLmxvZ19zaXplID0gYnVmX3N6O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG5AQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyeFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwmIzM0O2xvYWQgYnBmIHByb2dyYW0uLi5cXG5cJiMzNDspO1xuIFx0cmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDBmZmFmZDAyNGE4Yzg1OTZmY2VkZTE2MmU3YzA1NjM4Njg0MWY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMjA6MDM6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmMKaW5kZXggOGMyZjkyNTViMzZkNy4uNmFiOTExZTgyMTU1MSAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTc2OSw3ICYjNDM7MTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSkKIAkJfQogCiAJCWlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgJmFtcDsmYW1wOyB4ZHBtZXRhX2lmaW5kZXgpIHsKLQkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiYjNDM7CQkJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAJCQlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpOwogCQl9IGVsc2UgewogCQkJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jCmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuYwpAQCAtOTkzOCw2ICYjNDM7OTkzOCwxNiBAQCBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKQogCXJldHVybiAwOwogfQogCiYjNDM7aW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctJmd0O3Byb2dfZmxhZ3MgfCBmbGFncyk7CiYjNDM7fQomIzQzOwomIzQzO2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctJmd0O3Byb2dfZmxhZ3MgJmFtcDsgfmZsYWdzKTsKJiM0Mzt9CiYjNDM7CiBfX3UzMiBicGZfcHJvZ3JhbV9fbG9nX2xldmVsKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKIHsKIAlyZXR1cm4gcHJvZy0mZ3Q7bG9nX2xldmVsOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuaCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmgKaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL2xpYmJwZi5oCkBAIC0xMDExLDYgJiM0MzsxMDExLDEyIEBAIGJwZl9wcm9ncmFtX19zZXRfZXhwZWN0ZWRfYXR0YWNoX3R5cGUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLAogTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTsKIExJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7CiAKJiM0MzsvKiBDb252ZW5pZW5jZSBoZWxwZXJzIHRvIG5vbi1kZXN0cnVjdGl2ZWx5IGFkZCBvciBjbGVhciB0aGUgc3BlY2lmaWVkIGZsYWdzCiYjNDM7ICogaW5zdGVhZCBvZiBjbG9iYmVyaW5nIHRoZW0gYXMgYnBmX3Byb2dyYW1fX3NldF9mbGFncygpIGRvZXMuCiYjNDM7ICovCiYjNDM7TElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTsKJiM0MztMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7CiYjNDM7CiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLgogICogU2VlIGJwZl9vYmplY3Rfb3Blbl9vcHRzIGNvbW1lbnRzIHJlZ2FyZGluZyBsb2dfbGV2ZWwgYW5kIGxvZ19idWYKICAqIGludGVyYWN0aW9ucy4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcAppbmRleCAwOGFiMmVhODgxZmI2Li5hODExYTFiM2EwODU3IDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXAKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwCkBAIC00NTgsNyAmIzQzOzQ1OCw5IEBAIExJQkJQRl8xLjcuMCB7CiAKIExJQkJQRl8xLjguMCB7CiAJZ2xvYmFsOgomIzQzOwkJYnBmX3Byb2dyYW1fX2FkZF9mbGFnczsKIAkJYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpOwomIzQzOwkJYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzOwogCQlicGZfcHJvZ3JhbV9fY2xvbmU7CiAJCWJ0Zl9fZmluZF9ieV9uYW1lX2tpbmRfb3duOwogCQlidGZfX25ld19lbXB0eV9vcHRzOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwppbmRleCA3ZGFkYjkwZTdiNjg5Li40MTEzNmUxYzc3NTJlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwpAQCAtNTQzLDkgJiM0Mzs1NDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZCkKIAkJcmV0dXJuOwogCiAJLyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovCi0JaWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncygKLQkJCSAgICAgICBza2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwKLQkJCSAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSwKJiM0MzsJaWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKSwKIAkJICAgICAgICYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFncyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCmluZGV4IDY1MjMwN2ExYjIyZTcuLjkwMmE3MGQ1YWZlYjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2xvYWQoY29uc3QgY2hhciAqZmlsZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpCiAJfQogCiAJYnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgdGVzdGluZ19wcm9nX2ZsYWdzKCkpOwomIzQzOwlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHRlc3RpbmdfcHJvZ19mbGFncygpKTsKIAlicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7CiAKIAllcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYwppbmRleCAyNWViNTlmNDYwYWJlLi43MmMwZWY4ZGE0MDllIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMKQEAgLTEwLDE1ICYjNDM7MTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpCiAJc3RydWN0IHRlc3Rfa2VybmVsX2ZsYWcgKmxzbV9za2VsOwogCXN0cnVjdCBrZnVuY19jYWxsX3Rlc3QgKnNrZWwgPSBOVUxMOwogCXN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nOwomIzQzOwlfX3UzMiBmbGFnczsKIAlpbnQgcmV0OwogCi0JbHNtX3NrZWwgPSB0ZXN0X2tlcm5lbF9mbGFnX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3BlbigpOwogCWlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgJiMzNDtsc21fc2tlbCYjMzQ7KSkKIAkJcmV0dXJuOwogCi0JQVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhsc21fc2tlbC0mZ3Q7cHJvZ3MuYnBmKSAmYW1wOyBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CXByb2cgPSBsc21fc2tlbC0mZ3Q7cHJvZ3MuYnBmOwomIzQzOwlmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKTsKJiM0MzsJQVNTRVJUX0VRKGZsYWdzICZhbXA7IEJQRl9GX1NMRUVQQUJMRSwKIAkJICBCUEZfRl9TTEVFUEFCTEUsICYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiAKJiM0MzsJcmV0ID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTsKJiM0MzsJQVNTRVJUX09LKHJldCwgJiMzNDticGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHJldCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MgfCBCUEZfRl9BTllfQUxJR05NRU5ULAomIzQzOwkJICAmIzM0O2JwZl9wcm9ncmFtX19hZGRfZmxhZ3MgdmFsdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTsKJiM0MzsJQVNTRVJUX09LKHJldCwgJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0JiMzNDspOwomIzQzOwlBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncywgJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgdmFsdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2xvYWQobHNtX3NrZWwpOwomIzQzOwlBU1NFUlRfT0socmV0LCAmIzM0O3Rlc3Rfa2VybmVsX2ZsYWdfX2xvYWQmIzM0Oyk7CiYjNDM7CiAJbHNtX3NrZWwtJmd0O2Jzcy0mZ3Q7bW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTsKIAogCXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYwppbmRleCBlZDNmZDBhODhkYWI2Li42NTExMjNjZDg2MDJkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMKQEAgLTM2MSw4ICYjNDM7MzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpCiAKIAlzbF9za2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gc2xfc2tlbDsKIAotCWVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsCi0JCQkJICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTsKJiM0MzsJZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2xlZXBfc2tlbF9zZXRfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwppbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwpAQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZCkKIAogCXByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLSZndDtvYmosICYjMzQ7cngmIzM0Oyk7CiAJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwogCiAJLyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3JtcwogCSAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLgogCSAqLwogCW5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai0mZ3Q7b2JqLCAmIzM0O3JlZGlyZWN0JiMzNDspOwogCWJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiYjNDM7CWJwZl9wcm9ncmFtX19hZGRfZmxhZ3MobmV3X3Byb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlpZiAoIUFTU0VSVF9PSyh4ZHBfbWV0YWRhdGFfX2xvYWQoYnBmX29iaiksICYjMzQ7bG9hZCBza2VsZXRvbiYjMzQ7KSkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCmluZGV4IDc5NGE3ZGZiMDU3OTYuLjI4NzI0ZGUwNjMyMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCkBAIC03NDgsNyAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlciwKIAkJCSBzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLAogCQkJIHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKIHsKLQlpbnQgbWluX2xvZ19sZXZlbCA9IDAsIHByb2dfZmxhZ3M7CiYjNDM7CWludCBtaW5fbG9nX2xldmVsID0gMDsKIAogCWlmIChlbnYudmVyYm9zaXR5ICZndDsgVkVSQk9TRV9OT05FKQogCQltaW5fbG9nX2xldmVsID0gMTsKQEAgLTc2Niw4ICYjNDM7NzY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9jYXNlKHN0cnVjdCB0ZXN0X2xvYWRlciAqdGVzdGVyLAogCWVsc2UKIAkJYnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy0mZ3Q7bG9nX2xldmVsKTsKIAotCXByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nX2ZsYWdzIHwgc3BlYy0mZ3Q7cHJvZ19mbGFncyk7CiYjNDM7CWJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgc3BlYy0mZ3Q7cHJvZ19mbGFncyk7CiAKIAl0ZXN0ZXItJmd0O2xvZ19idWZbMF0gPSAmIzM5O1wwJiMzOTs7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMKaW5kZXggM2YwMzc5NDllOTc4OS4uZDFkNjA0NTFjNWJjYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuYwpAQCAtMjkyLDcgJiM0MzsyOTIsNiBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLAogCSk7CiAJc3RydWN0IGJwZl9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7Ci0JX191MzIgZmxhZ3M7CiAJaW50IGVycjsKIAogCW9iaiA9IGJwZl9vYmplY3RfX29wZW5fZmlsZShmaWxlLCAmYW1wO29wdHMpOwpAQCAtMzA4LDggJiM0MzszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLAogCWlmICh0eXBlICE9IEJQRl9QUk9HX1RZUEVfVU5TUEVDICZhbXA7JmFtcDsgYnBmX3Byb2dyYW1fX3R5cGUocHJvZykgIT0gdHlwZSkKIAkJYnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpOwogCi0JZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKTsKLQlicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTsKJiM0MzsJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7CiAKIAllcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7CiAJaWYgKGVycikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKaW5kZXggZTcwNzQxYzZiOWI3Yy4uOWNmYzliNGI0MWMxMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKQEAgLTE3MjIsOSAmIzQzOzE3MjIsOSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGJwZl9vYmplY3QgKm9iaiwgc3RydWN0IGJwZgogCWZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpOwogCiAJaWYgKGVudi5mb3JjZV9jaGVja3BvaW50cykKLQkJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpOwomIzQzOwkJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpOwogCWlmIChlbnYuZm9yY2VfcmVnX2ludmFyaWFudHMpCi0JCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfVEVTVF9SRUdfSU5WQVJJQU5UUyk7CiYjNDM7CQlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpOwogCiAJb3B0cy5sb2dfYnVmID0gYnVmOwogCW9wdHMubG9nX3NpemUgPSBidWZfc3o7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMKaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYwpAQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotJmd0O29iaiwgJiMzNDtyeCYjMzQ7KTsKIAlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlwcmludGYoJiMzNDtsb2FkIGJwZiBwcm9ncmFtLi4uXG4mIzM0Oyk7CiAJcmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjYyCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vIEZ1enppbmcgTmVlZGVkIEhlcmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmIGFuZCB0aGUgcnVsZXMgZm9yIGZ1enppbmcgYXBwbGljYWJpbGl0eS4gVGhlIGRpZmYgc2hvd3MgbW9kaWZpY2F0aW9ucyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcywgYWxsIG5lYXRseSBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIHNwZWNpZmljYWxseSBgdG9vbHMvYnBmL2JwZnRvb2xgLCBgdG9vbHMvbGliL2JwZmAsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYC4gTm8ga2VybmVsIGNvcmUgZmlsZXMgYXJlIHRvdWNoZWQuCgpOb3csIGxldCYjMzk7cyBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiwgdGhlICYjMzQ7V0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2VjdGlvbiwgaXMgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZSAodGhlIG5lZ2F0aXZlIGNyaXRlcmlhKS4gSXQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCAmIzM0O1VzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMmIzM0OyB3YXJyYW50IGEgYFdvcnRoRnV6emluZz1mYWxzZWAgY2xhc3NpZmljYXRpb24uCgpHaXZlbiB0aGF0ICphbGwqIHRoZSBjaGFuZ2VkIGZpbGVzIGFyZSB3aXRoaW4gdGhvc2Ugc3BlY2lmaWVkIGB0b29scy9gIHN1YmRpcmVjdG9yaWVzIGFuZCwgdGhlcmVmb3JlLCBkb24mIzM5O3QgaW1wYWN0IHRoZSBrZXJuZWwgaXRzZWxmLCB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBmbGFnIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byAqZmFsc2UqLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGFnYWluIHRoYXQgSSBkaWRuJiMzOTt0IG1pc3MgYW55dGhpbmcsIGJ1dCBJJiMzOTttIGNvbmZpZGVudC4gTm8ga2VybmVsIGZpbGVzIGFyZSBwcmVzZW50LCBvbmx5IHRvb2xzLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBjb25jbHVzaW9uIGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChBcyB0aGUgY2hhbmdlIGlzIHNlbGYtY29udGFpbmVkKQoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKiogKE5vIGNvbmZpZyBjaGFuZ2VzIGFyZSBwcmVzZW50LikKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCBsaWJyYXJpZXMgKGB0b29scy9saWIvYnBmYCwgYHRvb2xzL2JwZi9icGZ0b29sYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGZgKSwgd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MDM6MjcuOTUyMDYyMzU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0MzYyNzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjI3Ljk1MjA2NzgxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMTI1MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjAwZmZhZmQwMjRhOGM4NTk2ZmNlZGUxNjJlN2MwNTYzODY4NDFmNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDowMzoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcXG5pbmRleCA4YzJmOTI1NWIzNmQ3Li42YWI5MTFlODIxNTUxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXFx1MDAyNlxcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XFxuLVxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdFxcdFxcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbiBcXHRcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCBvZmZsb2FkX2lmaW5kZXgpO1xcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5jIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbisrKyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcXG5AQCAtOTkzOCw2ICs5OTM4LDE2IEBAIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKVxcbit7XFxuK1xcdHJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfCBmbGFncyk7XFxuK31cXG4rXFxuK2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcXG4re1xcbitcXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVxcdTAwM2Vwcm9nX2ZsYWdzIFxcdTAwMjYgfmZsYWdzKTtcXG4rfVxcbitcXG4gX191MzIgYnBmX3Byb2dyYW1fX2xvZ19sZXZlbChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXFxuIHtcXG4gXFx0cmV0dXJuIHByb2ctXFx1MDAzZWxvZ19sZXZlbDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuaCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcXG5pbmRleCBiOTY1YWQ1NzE1NDAzLi4zOTMyYmY5Y2I0OTAzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5oXFxuQEAgLTEwMTEsNiArMTAxMSwxMiBAQCBicGZfcHJvZ3JhbV9fc2V0X2V4cGVjdGVkX2F0dGFjaF90eXBlKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4gTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTtcXG4gTElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcXG4gXFxuKy8qIENvbnZlbmllbmNlIGhlbHBlcnMgdG8gbm9uLWRlc3RydWN0aXZlbHkgYWRkIG9yIGNsZWFyIHRoZSBzcGVjaWZpZWQgZmxhZ3NcXG4rICogaW5zdGVhZCBvZiBjbG9iYmVyaW5nIHRoZW0gYXMgYnBmX3Byb2dyYW1fX3NldF9mbGFncygpIGRvZXMuXFxuKyAqL1xcbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xcbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7XFxuK1xcbiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLlxcbiAgKiBTZWUgYnBmX29iamVjdF9vcGVuX29wdHMgY29tbWVudHMgcmVnYXJkaW5nIGxvZ19sZXZlbCBhbmQgbG9nX2J1ZlxcbiAgKiBpbnRlcmFjdGlvbnMuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxcbmluZGV4IDA4YWIyZWE4ODFmYjYuLmE4MTFhMWIzYTA4NTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXFxuQEAgLTQ1OCw3ICs0NTgsOSBAQCBMSUJCUEZfMS43LjAge1xcbiBcXG4gTElCQlBGXzEuOC4wIHtcXG4gXFx0Z2xvYmFsOlxcbitcXHRcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzO1xcbiBcXHRcXHRicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGk7XFxuK1xcdFxcdGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncztcXG4gXFx0XFx0YnBmX3Byb2dyYW1fX2Nsb25lO1xcbiBcXHRcXHRidGZfX2ZpbmRfYnlfbmFtZV9raW5kX293bjtcXG4gXFx0XFx0YnRmX19uZXdfZW1wdHlfb3B0cztcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xcbmluZGV4IDdkYWRiOTBlN2I2ODkuLjQxMTM2ZTFjNzc1MmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xcbkBAIC01NDMsOSArNTQzLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9rcHJvYmVfc2xlZXBhYmxlKHZvaWQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIHNsZWVwYWJsZSBrcHJvYmUgdGVzdCBjYXNlIG5lZWRzIGZsYWdzIHNldCBiZWZvcmUgbG9hZGluZyAqL1xcbi1cXHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxcbi1cXHRcXHRcXHQgICAgICAgc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdCAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSxcXG4rXFx0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKSxcXG4gXFx0XFx0ICAgICAgIFxcXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcXG5pbmRleCA2NTIzMDdhMWIyMmU3Li45MDJhNzBkNWFmZWI2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2xvYWQoY29uc3QgY2hhciAqZmlsZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuIFxcdH1cXG4gXFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfdHlwZShwcm9nLCB0eXBlKTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XFxuK1xcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgdGVzdGluZ19wcm9nX2ZsYWdzKCkpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7XFxuIFxcbiBcXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuaW5kZXggMjVlYjU5ZjQ2MGFiZS4uNzJjMGVmOGRhNDA5ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xcbkBAIC0xMCwxNSArMTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXFxuIFxcdHN0cnVjdCB0ZXN0X2tlcm5lbF9mbGFnICpsc21fc2tlbDtcXG4gXFx0c3RydWN0IGtmdW5jX2NhbGxfdGVzdCAqc2tlbCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDtcXG4rXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbitcXHRfX3UzMiBmbGFncztcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW4oKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxzbV9za2VsLCBcXFwibHNtX3NrZWxcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhsc21fc2tlbC1cXHUwMDNlcHJvZ3MuYnBmKSBcXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcXG4rXFx0cHJvZyA9IGxzbV9za2VsLVxcdTAwM2Vwcm9ncy5icGY7XFxuK1xcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xcbitcXHRBU1NFUlRfRVEoZmxhZ3MgXFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXFxuIFxcdFxcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcXFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcXFwiKTtcXG4gXFxuK1xcdHJldCA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfQU5ZX0FMSUdOTUVOVCk7XFxuK1xcdEFTU0VSVF9PSyhyZXQsIFxcXCJicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHJldFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncyB8IEJQRl9GX0FOWV9BTElHTk1FTlQsXFxuK1xcdFxcdCAgXFxcImJwZl9wcm9ncmFtX19hZGRfZmxhZ3MgdmFsdWVcXFwiKTtcXG4rXFxuK1xcdHJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcXG4rXFx0QVNTRVJUX09LKHJldCwgXFxcImJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyByZXRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MsIFxcXCJicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgdmFsdWVcXFwiKTtcXG4rXFxuK1xcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2xvYWQobHNtX3NrZWwpO1xcbitcXHRBU1NFUlRfT0socmV0LCBcXFwidGVzdF9rZXJuZWxfZmxhZ19fbG9hZFxcXCIpO1xcbitcXG4gXFx0bHNtX3NrZWwtXFx1MDAzZWJzcy1cXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcXG4gXFxuIFxcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXFxuaW5kZXggZWQzZmQwYTg4ZGFiNi4uNjUxMTIzY2Q4NjAyZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbkBAIC0zNjEsOCArMzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpXFxuIFxcbiBcXHRzbF9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcXG4gXFxuLVxcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdFxcdCAgICAgYnBmX3Byb2dyYW1fX2ZsYWdzKHNsX3NrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsIEJQRl9GX1NMRUVQQUJMRSk7XFxuIFxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5pbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5AQCAtNDA4LDE0ICs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHQvKiBNYWtlIHN1cmUgd2UgY2FuIGxvYWQgYSBkZXYtYm91bmQgcHJvZ3JhbSB0aGF0IHBlcmZvcm1zXFxuIFxcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxcbiBcXHQgKi9cXG4gXFx0bmV3X3Byb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVxcdTAwM2VvYmosIFxcXCJyZWRpcmVjdFxcXCIpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4rXFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXFxcImxvYWQgc2tlbGV0b25cXFwiKSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcXG5pbmRleCA3OTRhN2RmYjA1Nzk2Li4yODcyNGRlMDYzMjIwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcXG5AQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcXG4gXFx0XFx0XFx0IHN0cnVjdCBicGZfb2JqZWN0ICpvYmosXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXFxuIHtcXG4tXFx0aW50IG1pbl9sb2dfbGV2ZWwgPSAwLCBwcm9nX2ZsYWdzO1xcbitcXHRpbnQgbWluX2xvZ19sZXZlbCA9IDA7XFxuIFxcbiBcXHRpZiAoZW52LnZlcmJvc2l0eSBcXHUwMDNlIFZFUkJPU0VfTk9ORSlcXG4gXFx0XFx0bWluX2xvZ19sZXZlbCA9IDE7XFxuQEAgLTc2Niw4ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2Nhc2Uoc3RydWN0IHRlc3RfbG9hZGVyICp0ZXN0ZXIsXFxuIFxcdGVsc2VcXG4gXFx0XFx0YnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy1cXHUwMDNlbG9nX2xldmVsKTtcXG4gXFxuLVxcdHByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7XFxuLVxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZ19mbGFncyB8IHNwZWMtXFx1MDAzZXByb2dfZmxhZ3MpO1xcbitcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHNwZWMtXFx1MDAzZXByb2dfZmxhZ3MpO1xcbiBcXG4gXFx0dGVzdGVyLVxcdTAwM2Vsb2dfYnVmWzBdID0gJ1xcXFwwJztcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcXG5pbmRleCAzZjAzNzk0OWU5Nzg5Li5kMWQ2MDQ1MWM1YmNjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xcbkBAIC0yOTIsNyArMjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcXG4gXFx0KTtcXG4gXFx0c3RydWN0IGJwZl9vYmplY3QgKm9iajtcXG4gXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbi1cXHRfX3UzMiBmbGFncztcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdG9iaiA9IGJwZl9vYmplY3RfX29wZW5fZmlsZShmaWxlLCBcXHUwMDI2b3B0cyk7XFxuQEAgLTMwOCw4ICszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLFxcbiBcXHRpZiAodHlwZSAhPSBCUEZfUFJPR19UWVBFX1VOU1BFQyBcXHUwMDI2XFx1MDAyNiBicGZfcHJvZ3JhbV9fdHlwZShwcm9nKSAhPSB0eXBlKVxcbiBcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X3R5cGUocHJvZywgdHlwZSk7XFxuIFxcbi1cXHRmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IHRlc3RpbmdfcHJvZ19mbGFncygpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTtcXG4rXFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XFxuIFxcbiBcXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5pbmRleCBlNzA3NDFjNmI5YjdjLi45Y2ZjOWI0YjQxYzEyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5AQCAtMTcyMiw5ICsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcXG4gXFx0Zml4dXBfb2JqKG9iaiwgcHJvZywgYmFzZV9maWxlbmFtZSk7XFxuIFxcbiBcXHRpZiAoZW52LmZvcmNlX2NoZWNrcG9pbnRzKVxcbi1cXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1RFU1RfU1RBVEVfRlJFUSk7XFxuK1xcdFxcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfVEVTVF9TVEFURV9GUkVRKTtcXG4gXFx0aWYgKGVudi5mb3JjZV9yZWdfaW52YXJpYW50cylcXG4tXFx0XFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcXG4rXFx0XFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcXG4gXFxuIFxcdG9wdHMubG9nX2J1ZiA9IGJ1ZjtcXG4gXFx0b3B0cy5sb2dfc2l6ZSA9IGJ1Zl9zejtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcXG5AQCAtODQ1LDcgKzg0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcbiBcXHRwcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cXHUwMDNlb2JqLCBcXFwicnhcXFwiKTtcXG4gXFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdHByaW50ZihcXFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcXFxuXFxcIik7XFxuIFxcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MDM6MjguNDkyODQ2MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjc3MDI4MzE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjAwZmZhZmQwMjRhOGM4NTk2ZmNlZGUxNjJlN2MwNTYzODY4NDFmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjAzOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCA4YzJmOTI1NWIzNmQ3Li42YWI5MTFlODIxNTUxIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdFx0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHBvcywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuYyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5AQCAtOTkzOCw2ICs5OTM4LDE2IEBAIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbit7XG4rXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfCBmbGFncyk7XG4rfVxuK1xuK2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbit7XG4rXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVx1MDAzZXByb2dfZmxhZ3MgXHUwMDI2IH5mbGFncyk7XG4rfVxuK1xuIF9fdTMyIGJwZl9wcm9ncmFtX19sb2dfbGV2ZWwoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbiBcdHJldHVybiBwcm9nLVx1MDAzZWxvZ19sZXZlbDtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5oIGIvdG9vbHMvbGliL2JwZi9saWJicGYuaFxuaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbisrKyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbkBAIC0xMDExLDYgKzEwMTEsMTIgQEAgYnBmX3Byb2dyYW1fX3NldF9leHBlY3RlZF9hdHRhY2hfdHlwZShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4gTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTtcbiBMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xuIFxuKy8qIENvbnZlbmllbmNlIGhlbHBlcnMgdG8gbm9uLWRlc3RydWN0aXZlbHkgYWRkIG9yIGNsZWFyIHRoZSBzcGVjaWZpZWQgZmxhZ3NcbisgKiBpbnN0ZWFkIG9mIGNsb2JiZXJpbmcgdGhlbSBhcyBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKCkgZG9lcy5cbisgKi9cbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xuK0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbitcbiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLlxuICAqIFNlZSBicGZfb2JqZWN0X29wZW5fb3B0cyBjb21tZW50cyByZWdhcmRpbmcgbG9nX2xldmVsIGFuZCBsb2dfYnVmXG4gICogaW50ZXJhY3Rpb25zLlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuaW5kZXggMDhhYjJlYTg4MWZiNi4uYTgxMWExYjNhMDg1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXG5AQCAtNDU4LDcgKzQ1OCw5IEBAIExJQkJQRl8xLjcuMCB7XG4gXG4gTElCQlBGXzEuOC4wIHtcbiBcdGdsb2JhbDpcbitcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncztcbiBcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpO1xuK1x0XHRicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3M7XG4gXHRcdGJwZl9wcm9ncmFtX19jbG9uZTtcbiBcdFx0YnRmX19maW5kX2J5X25hbWVfa2luZF9vd247XG4gXHRcdGJ0Zl9fbmV3X2VtcHR5X29wdHM7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuaW5kZXggN2RhZGI5MGU3YjY4OS4uNDExMzZlMWM3NzUyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuQEAgLTU0Myw5ICs1NDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Lyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovXG4tXHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxuLVx0XHRcdCAgICAgICBza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLFxuLVx0XHRcdCAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpLFxuK1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpLFxuIFx0XHQgICAgICAgXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuY1xuaW5kZXggNjUyMzA3YTFiMjJlNy4uOTAyYTcwZDVhZmViNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuY1xuQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBjaGVja19sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuIFx0fVxuIFxuIFx0YnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4rXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHRlc3RpbmdfcHJvZ19mbGFncygpKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfbG9nX2xldmVsKHByb2csIDQgfCBleHRyYV9wcm9nX2xvYWRfbG9nX2ZsYWdzKTtcbiBcbiBcdGVyciA9IGJwZl9vYmplY3RfX2xvYWQob2JqKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xuaW5kZXggMjVlYjU5ZjQ2MGFiZS4uNzJjMGVmOGRhNDA5ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbkBAIC0xMCwxNSArMTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXG4gXHRzdHJ1Y3QgdGVzdF9rZXJuZWxfZmxhZyAqbHNtX3NrZWw7XG4gXHRzdHJ1Y3Qga2Z1bmNfY2FsbF90ZXN0ICpza2VsID0gTlVMTDtcbiBcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDtcbitcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbitcdF9fdTMyIGZsYWdzO1xuIFx0aW50IHJldDtcbiBcbi1cdGxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3Blbl9hbmRfbG9hZCgpO1xuK1x0bHNtX3NrZWwgPSB0ZXN0X2tlcm5lbF9mbGFnX19vcGVuKCk7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobHNtX3NrZWwsIFwibHNtX3NrZWxcIikpXG4gXHRcdHJldHVybjtcbiBcbi1cdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmKSBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuK1x0cHJvZyA9IGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZjtcbitcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xuK1x0QVNTRVJUX0VRKGZsYWdzIFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXG4gXHRcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcInNsZWVwYWJsZSBpbiBwcm9ncmFtIGZsYWdzXCIpO1xuIFxuK1x0cmV0ID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcbitcdEFTU0VSVF9PSyhyZXQsIFwiYnBmX3Byb2dyYW1fX2FkZF9mbGFncyByZXRcIik7XG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncyB8IEJQRl9GX0FOWV9BTElHTk1FTlQsXG4rXHRcdCAgXCJicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHZhbHVlXCIpO1xuK1xuK1x0cmV0ID0gYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzKHByb2csIEJQRl9GX0FOWV9BTElHTk1FTlQpO1xuK1x0QVNTRVJUX09LKHJldCwgXCJicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0XCIpO1xuK1x0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MsIFwiYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzIHZhbHVlXCIpO1xuK1xuK1x0cmV0ID0gdGVzdF9rZXJuZWxfZmxhZ19fbG9hZChsc21fc2tlbCk7XG4rXHRBU1NFUlRfT0socmV0LCBcInRlc3Rfa2VybmVsX2ZsYWdfX2xvYWRcIik7XG4rXG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IGVkM2ZkMGE4OGRhYjYuLjY1MTEyM2NkODYwMmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYxLDggKzM2MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxuIFxuIFx0c2xfc2tlbC1cdTAwM2Vic3MtXHUwMDNldXNlcl9wdHIgPSBzbF9za2VsO1xuIFxuLVx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLFxuLVx0XHRcdFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuaW5kZXggMDQ3ZGZkYzMyMmEyZi4uM2FiOTYzNDU4OTAzZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuQEAgLTQwOCwxNCArNDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCJyeFwiKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJlZGlyZWN0XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KG5ld19wcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIGJwZl9wcm9ncmFtX19mbGFncyhuZXdfcHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCJsb2FkIHNrZWxldG9uXCIpKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXG5pbmRleCA3OTRhN2RmYjA1Nzk2Li4yODcyNGRlMDYzMjIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXG5AQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdFx0XHQgc3RydWN0IGJwZl9vYmplY3QgKm9iaixcbiBcdFx0XHQgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbi1cdGludCBtaW5fbG9nX2xldmVsID0gMCwgcHJvZ19mbGFncztcbitcdGludCBtaW5fbG9nX2xldmVsID0gMDtcbiBcbiBcdGlmIChlbnYudmVyYm9zaXR5IFx1MDAzZSBWRVJCT1NFX05PTkUpXG4gXHRcdG1pbl9sb2dfbGV2ZWwgPSAxO1xuQEAgLTc2Niw4ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2Nhc2Uoc3RydWN0IHRlc3RfbG9hZGVyICp0ZXN0ZXIsXG4gXHRlbHNlXG4gXHRcdGJwZl9wcm9ncmFtX19zZXRfbG9nX2xldmVsKHByb2csIHNwZWMtXHUwMDNlbG9nX2xldmVsKTtcbiBcbi1cdHByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2dfZmxhZ3MgfCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuIFxuIFx0dGVzdGVyLVx1MDAzZWxvZ19idWZbMF0gPSAnXFwwJztcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jXG5pbmRleCAzZjAzNzk0OWU5Nzg5Li5kMWQ2MDQ1MWM1YmNjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbkBAIC0yOTIsNyArMjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdCk7XG4gXHRzdHJ1Y3QgYnBmX29iamVjdCAqb2JqO1xuIFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuLVx0X191MzIgZmxhZ3M7XG4gXHRpbnQgZXJyO1xuIFxuIFx0b2JqID0gYnBmX29iamVjdF9fb3Blbl9maWxlKGZpbGUsIFx1MDAyNm9wdHMpO1xuQEAgLTMwOCw4ICszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLFxuIFx0aWYgKHR5cGUgIT0gQlBGX1BST0dfVFlQRV9VTlNQRUMgXHUwMDI2XHUwMDI2IGJwZl9wcm9ncmFtX190eXBlKHByb2cpICE9IHR5cGUpXG4gXHRcdGJwZl9wcm9ncmFtX19zZXRfdHlwZShwcm9nLCB0eXBlKTtcbiBcbi1cdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgdGVzdGluZ19wcm9nX2ZsYWdzKCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTtcbitcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgdGVzdGluZ19wcm9nX2ZsYWdzKCkpO1xuIFxuIFx0ZXJyID0gYnBmX29iamVjdF9fbG9hZChvYmopO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5pbmRleCBlNzA3NDFjNmI5YjdjLi45Y2ZjOWI0YjQxYzEyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTcyMiw5ICsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcbiBcdGZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpO1xuIFxuIFx0aWYgKGVudi5mb3JjZV9jaGVja3BvaW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuK1x0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfU1RBVEVfRlJFUSk7XG4gXHRpZiAoZW52LmZvcmNlX3JlZ19pbnZhcmlhbnRzKVxuLVx0XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpO1xuK1x0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpO1xuIFxuIFx0b3B0cy5sb2dfYnVmID0gYnVmO1xuIFx0b3B0cy5sb2dfc2l6ZSA9IGJ1Zl9zejtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbmluZGV4IGM1NTAxYjNmZGY0OGYuLmFiM2Y1ZmM1NmU4NjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJ4XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcblwiKTtcbiBcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjI4LjQ5Mjg0NzUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwMjgwOTA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBGdXp6aW5nIE5lZWRlZCBIZXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGRpZmYgYW5kIHRoZSBydWxlcyBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIGFjcm9zcyBzZXZlcmFsIGZpbGVzLCBhbGwgbmVhdGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgc3BlY2lmaWNhbGx5IGB0b29scy9icGYvYnBmdG9vbGAsIGB0b29scy9saWIvYnBmYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGZgLiBObyBrZXJuZWwgY29yZSBmaWxlcyBhcmUgdG91Y2hlZC5cblxuTm93LCBsZXQncyBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgc2VjdGlvbiwgaXMgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbiBoZXJlICh0aGUgbmVnYXRpdmUgY3JpdGVyaWEpLiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IFwiVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlc1wiIHdhcnJhbnQgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCBjbGFzc2lmaWNhdGlvbi5cblxuR2l2ZW4gdGhhdCAqYWxsKiB0aGUgY2hhbmdlZCBmaWxlcyBhcmUgd2l0aGluIHRob3NlIHNwZWNpZmllZCBgdG9vbHMvYCBzdWJkaXJlY3RvcmllcyBhbmQsIHRoZXJlZm9yZSwgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaXRzZWxmLCB0aGUgXCJXb3J0aEZ1enppbmdcIiBmbGFnIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byAqZmFsc2UqLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBhZ2FpbiB0aGF0IEkgZGlkbid0IG1pc3MgYW55dGhpbmcsIGJ1dCBJJ20gY29uZmlkZW50LiBObyBrZXJuZWwgZmlsZXMgYXJlIHByZXNlbnQsIG9ubHkgdG9vbHMuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgY29uY2x1c2lvbiBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiogKEFzIHRoZSBjaGFuZ2UgaXMgc2VsZi1jb250YWluZWQpXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqIChObyBjb25maWcgY2hhbmdlcyBhcmUgcHJlc2VudC4pXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgYW5kIGxpYnJhcmllcyAoYHRvb2xzL2xpYi9icGZgLCBgdG9vbHMvYnBmL2JwZnRvb2xgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZmApLCB3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjIsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDowMzozNi4xOTU2NTg2MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjM2LjE5NTY3OTYxOVoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg5hhr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 19:42:32 +0000 UTC FinishedAt: 2026-09-10 20:03:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwMGZmYWZkMDI0YThjODU5NmZjZWRlMTYyZTdjMDU2Mzg2ODQxZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDowMzoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IDhjMmY5MjU1YjM2ZDcuLjZhYjkxMWU4MjE1NTEgMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuQEAgLTE3NjksNyAmIzQzOzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiYjNDM7XHRcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4gXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgeGRwbWV0YV9pZmluZGV4KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCBvZmZsb2FkX2lmaW5kZXgpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5pbmRleCBjMDM2ZThhOTFlZDg4Li4yMjFjNGZlMWZiMzE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuQEAgLTk5MzgsNiAmIzQzOzk5MzgsMTYgQEAgaW50IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctXHUwMDNlcHJvZ19mbGFncyB8IGZsYWdzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIFx1MDAyNiB+ZmxhZ3MpO1xuJiM0Mzt9XG4mIzQzO1xuIF9fdTMyIGJwZl9wcm9ncmFtX19sb2dfbGV2ZWwoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbiBcdHJldHVybiBwcm9nLVx1MDAzZWxvZ19sZXZlbDtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5oIGIvdG9vbHMvbGliL2JwZi9saWJicGYuaFxuaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbkBAIC0xMDExLDYgJiM0MzsxMDExLDEyIEBAIGJwZl9wcm9ncmFtX19zZXRfZXhwZWN0ZWRfYXR0YWNoX3R5cGUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuIExJQkJQRl9BUEkgX191MzIgYnBmX3Byb2dyYW1fX2ZsYWdzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyk7XG4gTElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbiBcbiYjNDM7LyogQ29udmVuaWVuY2UgaGVscGVycyB0byBub24tZGVzdHJ1Y3RpdmVseSBhZGQgb3IgY2xlYXIgdGhlIHNwZWNpZmllZCBmbGFnc1xuJiM0MzsgKiBpbnN0ZWFkIG9mIGNsb2JiZXJpbmcgdGhlbSBhcyBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKCkgZG9lcy5cbiYjNDM7ICovXG4mIzQzO0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7XG4mIzQzO0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbiYjNDM7XG4gLyogUGVyLXByb2dyYW0gbG9nIGxldmVsIGFuZCBsb2cgYnVmZmVyIGdldHRlcnMvc2V0dGVycy5cbiAgKiBTZWUgYnBmX29iamVjdF9vcGVuX29wdHMgY29tbWVudHMgcmVnYXJkaW5nIGxvZ19sZXZlbCBhbmQgbG9nX2J1ZlxuICAqIGludGVyYWN0aW9ucy5cbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXAgYi90b29scy9saWIvYnBmL2xpYmJwZi5tYXBcbmluZGV4IDA4YWIyZWE4ODFmYjYuLmE4MTFhMWIzYTA4NTcgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXBcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuQEAgLTQ1OCw3ICYjNDM7NDU4LDkgQEAgTElCQlBGXzEuNy4wIHtcbiBcbiBMSUJCUEZfMS44LjAge1xuIFx0Z2xvYmFsOlxuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncztcbiBcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpO1xuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzO1xuIFx0XHRicGZfcHJvZ3JhbV9fY2xvbmU7XG4gXHRcdGJ0Zl9fZmluZF9ieV9uYW1lX2tpbmRfb3duO1xuIFx0XHRidGZfX25ld19lbXB0eV9vcHRzO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbmluZGV4IDdkYWRiOTBlN2I2ODkuLjQxMTM2ZTFjNzc1MmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbkBAIC01NDMsOSAmIzQzOzU0Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi9cbi1cdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoXG4tXHRcdFx0ICAgICAgIHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXG4tXHRcdFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSksXG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpLFxuIFx0XHQgICAgICAgXCYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG5pbmRleCA2NTIzMDdhMWIyMmU3Li45MDJhNzBkNWFmZWI2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RhdGljIGludCBjaGVja19sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuIFx0fVxuIFxuIFx0YnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7XG4gXG4gXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbmluZGV4IDI1ZWI1OWY0NjBhYmUuLjcyYzBlZjhkYTQwOWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG5AQCAtMTAsMTUgJiM0MzsxMCwzMSBAQCB2b2lkIHRlc3Rfa2VybmVsX2ZsYWcodm9pZClcbiBcdHN0cnVjdCB0ZXN0X2tlcm5lbF9mbGFnICpsc21fc2tlbDtcbiBcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3QgKnNrZWwgPSBOVUxMO1xuIFx0c3RydWN0IGtmdW5jX2NhbGxfdGVzdF9sc2tlbCAqbHNrZWwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbiYjNDM7XHRfX3UzMiBmbGFncztcbiBcdGludCByZXQ7XG4gXG4tXHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW4oKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgXCYjMzQ7bHNtX3NrZWxcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZikgXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHRwcm9nID0gbHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmO1xuJiM0MztcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xuJiM0MztcdEFTU0VSVF9FUShmbGFncyBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuIFx0XHQgIEJQRl9GX1NMRUVQQUJMRSwgXCYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcJiMzNDspO1xuIFxuJiM0MztcdHJldCA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfQU5ZX0FMSUdOTUVOVCk7XG4mIzQzO1x0QVNTRVJUX09LKHJldCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2FkZF9mbGFncyByZXRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyksIGZsYWdzIHwgQlBGX0ZfQU5ZX0FMSUdOTUVOVCxcbiYjNDM7XHRcdCAgXCYjMzQ7YnBmX3Byb2dyYW1fX2FkZF9mbGFncyB2YWx1ZVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcbiYjNDM7XHRBU1NFUlRfT0socmV0LCBcJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0XCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncywgXCYjMzQ7YnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzIHZhbHVlXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gdGVzdF9rZXJuZWxfZmxhZ19fbG9hZChsc21fc2tlbCk7XG4mIzQzO1x0QVNTRVJUX09LKHJldCwgXCYjMzQ7dGVzdF9rZXJuZWxfZmxhZ19fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuIFx0bHNtX3NrZWwtXHUwMDNlYnNzLVx1MDAzZW1vbml0b3JlZF90aWQgPSBzeXNfZ2V0dGlkKCk7XG4gXG4gXHRyZXQgPSB0ZXN0X2tlcm5lbF9mbGFnX19hdHRhY2gobHNtX3NrZWwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5pbmRleCBlZDNmZDBhODhkYWI2Li42NTExMjNjZDg2MDJkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xuQEAgLTM2MSw4ICYjNDM7MzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpXG4gXG4gXHRzbF9za2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IHNsX3NrZWw7XG4gXG4tXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNsX3NrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXG4tXHRcdFx0XHQgICAgIGJwZl9wcm9ncmFtX19mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzbGVlcF9za2VsX3NldF9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG5pbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG5AQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCYjMzQ7cnhcJiMzNDspO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyZWRpcmVjdFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCYjMzQ7bG9hZCBza2VsZXRvblwmIzM0OykpXG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbmluZGV4IDc5NGE3ZGZiMDU3OTYuLjI4NzI0ZGUwNjMyMjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbkBAIC03NDgsNyAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdFx0XHQgc3RydWN0IGJwZl9vYmplY3QgKm9iaixcbiBcdFx0XHQgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbi1cdGludCBtaW5fbG9nX2xldmVsID0gMCwgcHJvZ19mbGFncztcbiYjNDM7XHRpbnQgbWluX2xvZ19sZXZlbCA9IDA7XG4gXG4gXHRpZiAoZW52LnZlcmJvc2l0eSBcdTAwM2UgVkVSQk9TRV9OT05FKVxuIFx0XHRtaW5fbG9nX2xldmVsID0gMTtcbkBAIC03NjYsOCAmIzQzOzc2Niw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdGVsc2VcbiBcdFx0YnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy1cdTAwM2Vsb2dfbGV2ZWwpO1xuIFxuLVx0cHJvZ19mbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZ19mbGFncyB8IHNwZWMtXHUwMDNlcHJvZ19mbGFncyk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuIFxuIFx0dGVzdGVyLVx1MDAzZWxvZ19idWZbMF0gPSAmIzM5O1xcMCYjMzk7O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbmluZGV4IDNmMDM3OTQ5ZTk3ODkuLmQxZDYwNDUxYzViY2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xuQEAgLTI5Miw3ICYjNDM7MjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdCk7XG4gXHRzdHJ1Y3QgYnBmX29iamVjdCAqb2JqO1xuIFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuLVx0X191MzIgZmxhZ3M7XG4gXHRpbnQgZXJyO1xuIFxuIFx0b2JqID0gYnBmX29iamVjdF9fb3Blbl9maWxlKGZpbGUsIFx1MDAyNm9wdHMpO1xuQEAgLTMwOCw4ICYjNDM7MzA3LDcgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdGlmICh0eXBlICE9IEJQRl9QUk9HX1RZUEVfVU5TUEVDIFx1MDAyNlx1MDAyNiBicGZfcHJvZ3JhbV9fdHlwZShwcm9nKSAhPSB0eXBlKVxuIFx0XHRicGZfcHJvZ3JhbV9fc2V0X3R5cGUocHJvZywgdHlwZSk7XG4gXG4tXHRmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IHRlc3RpbmdfcHJvZ19mbGFncygpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBmbGFncyk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4gXG4gXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGU3MDc0MWM2YjliN2MuLjljZmM5YjRiNDFjMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC0xNzIyLDkgJiM0MzsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcbiBcdGZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpO1xuIFxuIFx0aWYgKGVudi5mb3JjZV9jaGVja3BvaW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuJiM0MztcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuIFx0aWYgKGVudi5mb3JjZV9yZWdfaW52YXJpYW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcbiYjNDM7XHRcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfVEVTVF9SRUdfSU5WQVJJQU5UUyk7XG4gXG4gXHRvcHRzLmxvZ19idWYgPSBidWY7XG4gXHRvcHRzLmxvZ19zaXplID0gYnVmX3N6O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG5AQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyeFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwmIzM0O2xvYWQgYnBmIHByb2dyYW0uLi5cXG5cJiMzNDspO1xuIFx0cmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDBmZmFmZDAyNGE4Yzg1OTZmY2VkZTE2MmU3YzA1NjM4Njg0MWY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMjA6MDM6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmMKaW5kZXggOGMyZjkyNTViMzZkNy4uNmFiOTExZTgyMTU1MSAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTc2OSw3ICYjNDM7MTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSkKIAkJfQogCiAJCWlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgJmFtcDsmYW1wOyB4ZHBtZXRhX2lmaW5kZXgpIHsKLQkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiYjNDM7CQkJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAJCQlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpOwogCQl9IGVsc2UgewogCQkJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jCmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuYwpAQCAtOTkzOCw2ICYjNDM7OTkzOCwxNiBAQCBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKQogCXJldHVybiAwOwogfQogCiYjNDM7aW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctJmd0O3Byb2dfZmxhZ3MgfCBmbGFncyk7CiYjNDM7fQomIzQzOwomIzQzO2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctJmd0O3Byb2dfZmxhZ3MgJmFtcDsgfmZsYWdzKTsKJiM0Mzt9CiYjNDM7CiBfX3UzMiBicGZfcHJvZ3JhbV9fbG9nX2xldmVsKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKIHsKIAlyZXR1cm4gcHJvZy0mZ3Q7bG9nX2xldmVsOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuaCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmgKaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL2xpYmJwZi5oCkBAIC0xMDExLDYgJiM0MzsxMDExLDEyIEBAIGJwZl9wcm9ncmFtX19zZXRfZXhwZWN0ZWRfYXR0YWNoX3R5cGUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLAogTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTsKIExJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7CiAKJiM0MzsvKiBDb252ZW5pZW5jZSBoZWxwZXJzIHRvIG5vbi1kZXN0cnVjdGl2ZWx5IGFkZCBvciBjbGVhciB0aGUgc3BlY2lmaWVkIGZsYWdzCiYjNDM7ICogaW5zdGVhZCBvZiBjbG9iYmVyaW5nIHRoZW0gYXMgYnBmX3Byb2dyYW1fX3NldF9mbGFncygpIGRvZXMuCiYjNDM7ICovCiYjNDM7TElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTsKJiM0MztMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7CiYjNDM7CiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLgogICogU2VlIGJwZl9vYmplY3Rfb3Blbl9vcHRzIGNvbW1lbnRzIHJlZ2FyZGluZyBsb2dfbGV2ZWwgYW5kIGxvZ19idWYKICAqIGludGVyYWN0aW9ucy4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcAppbmRleCAwOGFiMmVhODgxZmI2Li5hODExYTFiM2EwODU3IDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5tYXAKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwCkBAIC00NTgsNyAmIzQzOzQ1OCw5IEBAIExJQkJQRl8xLjcuMCB7CiAKIExJQkJQRl8xLjguMCB7CiAJZ2xvYmFsOgomIzQzOwkJYnBmX3Byb2dyYW1fX2FkZF9mbGFnczsKIAkJYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpOwomIzQzOwkJYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzOwogCQlicGZfcHJvZ3JhbV9fY2xvbmU7CiAJCWJ0Zl9fZmluZF9ieV9uYW1lX2tpbmRfb3duOwogCQlidGZfX25ld19lbXB0eV9vcHRzOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwppbmRleCA3ZGFkYjkwZTdiNjg5Li40MTEzNmUxYzc3NTJlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYwpAQCAtNTQzLDkgJiM0Mzs1NDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZCkKIAkJcmV0dXJuOwogCiAJLyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovCi0JaWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncygKLQkJCSAgICAgICBza2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwKLQkJCSAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSwKJiM0MzsJaWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKSwKIAkJICAgICAgICYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFncyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCmluZGV4IDY1MjMwN2ExYjIyZTcuLjkwMmE3MGQ1YWZlYjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2xvYWQoY29uc3QgY2hhciAqZmlsZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpCiAJfQogCiAJYnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgdGVzdGluZ19wcm9nX2ZsYWdzKCkpOwomIzQzOwlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHRlc3RpbmdfcHJvZ19mbGFncygpKTsKIAlicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7CiAKIAllcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYwppbmRleCAyNWViNTlmNDYwYWJlLi43MmMwZWY4ZGE0MDllIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMKQEAgLTEwLDE1ICYjNDM7MTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpCiAJc3RydWN0IHRlc3Rfa2VybmVsX2ZsYWcgKmxzbV9za2VsOwogCXN0cnVjdCBrZnVuY19jYWxsX3Rlc3QgKnNrZWwgPSBOVUxMOwogCXN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nOwomIzQzOwlfX3UzMiBmbGFnczsKIAlpbnQgcmV0OwogCi0JbHNtX3NrZWwgPSB0ZXN0X2tlcm5lbF9mbGFnX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3BlbigpOwogCWlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgJiMzNDtsc21fc2tlbCYjMzQ7KSkKIAkJcmV0dXJuOwogCi0JQVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhsc21fc2tlbC0mZ3Q7cHJvZ3MuYnBmKSAmYW1wOyBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CXByb2cgPSBsc21fc2tlbC0mZ3Q7cHJvZ3MuYnBmOwomIzQzOwlmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKTsKJiM0MzsJQVNTRVJUX0VRKGZsYWdzICZhbXA7IEJQRl9GX1NMRUVQQUJMRSwKIAkJICBCUEZfRl9TTEVFUEFCTEUsICYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiAKJiM0MzsJcmV0ID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTsKJiM0MzsJQVNTRVJUX09LKHJldCwgJiMzNDticGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHJldCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MgfCBCUEZfRl9BTllfQUxJR05NRU5ULAomIzQzOwkJICAmIzM0O2JwZl9wcm9ncmFtX19hZGRfZmxhZ3MgdmFsdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTsKJiM0MzsJQVNTRVJUX09LKHJldCwgJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0JiMzNDspOwomIzQzOwlBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncywgJiMzNDticGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgdmFsdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2xvYWQobHNtX3NrZWwpOwomIzQzOwlBU1NFUlRfT0socmV0LCAmIzM0O3Rlc3Rfa2VybmVsX2ZsYWdfX2xvYWQmIzM0Oyk7CiYjNDM7CiAJbHNtX3NrZWwtJmd0O2Jzcy0mZ3Q7bW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTsKIAogCXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYwppbmRleCBlZDNmZDBhODhkYWI2Li42NTExMjNjZDg2MDJkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMKQEAgLTM2MSw4ICYjNDM7MzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpCiAKIAlzbF9za2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gc2xfc2tlbDsKIAotCWVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsCi0JCQkJICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTsKJiM0MzsJZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLSZndDtwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2xlZXBfc2tlbF9zZXRfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwppbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwpAQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZCkKIAogCXByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLSZndDtvYmosICYjMzQ7cngmIzM0Oyk7CiAJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwogCiAJLyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3JtcwogCSAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLgogCSAqLwogCW5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai0mZ3Q7b2JqLCAmIzM0O3JlZGlyZWN0JiMzNDspOwogCWJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiYjNDM7CWJwZl9wcm9ncmFtX19hZGRfZmxhZ3MobmV3X3Byb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlpZiAoIUFTU0VSVF9PSyh4ZHBfbWV0YWRhdGFfX2xvYWQoYnBmX29iaiksICYjMzQ7bG9hZCBza2VsZXRvbiYjMzQ7KSkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCmluZGV4IDc5NGE3ZGZiMDU3OTYuLjI4NzI0ZGUwNjMyMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jCkBAIC03NDgsNyAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlciwKIAkJCSBzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLAogCQkJIHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKIHsKLQlpbnQgbWluX2xvZ19sZXZlbCA9IDAsIHByb2dfZmxhZ3M7CiYjNDM7CWludCBtaW5fbG9nX2xldmVsID0gMDsKIAogCWlmIChlbnYudmVyYm9zaXR5ICZndDsgVkVSQk9TRV9OT05FKQogCQltaW5fbG9nX2xldmVsID0gMTsKQEAgLTc2Niw4ICYjNDM7NzY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9jYXNlKHN0cnVjdCB0ZXN0X2xvYWRlciAqdGVzdGVyLAogCWVsc2UKIAkJYnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy0mZ3Q7bG9nX2xldmVsKTsKIAotCXByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nX2ZsYWdzIHwgc3BlYy0mZ3Q7cHJvZ19mbGFncyk7CiYjNDM7CWJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgc3BlYy0mZ3Q7cHJvZ19mbGFncyk7CiAKIAl0ZXN0ZXItJmd0O2xvZ19idWZbMF0gPSAmIzM5O1wwJiMzOTs7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMKaW5kZXggM2YwMzc5NDllOTc4OS4uZDFkNjA0NTFjNWJjYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuYwpAQCAtMjkyLDcgJiM0MzsyOTIsNiBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLAogCSk7CiAJc3RydWN0IGJwZl9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7Ci0JX191MzIgZmxhZ3M7CiAJaW50IGVycjsKIAogCW9iaiA9IGJwZl9vYmplY3RfX29wZW5fZmlsZShmaWxlLCAmYW1wO29wdHMpOwpAQCAtMzA4LDggJiM0MzszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLAogCWlmICh0eXBlICE9IEJQRl9QUk9HX1RZUEVfVU5TUEVDICZhbXA7JmFtcDsgYnBmX3Byb2dyYW1fX3R5cGUocHJvZykgIT0gdHlwZSkKIAkJYnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpOwogCi0JZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKTsKLQlicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTsKJiM0MzsJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7CiAKIAllcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7CiAJaWYgKGVycikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKaW5kZXggZTcwNzQxYzZiOWI3Yy4uOWNmYzliNGI0MWMxMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKQEAgLTE3MjIsOSAmIzQzOzE3MjIsOSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGJwZl9vYmplY3QgKm9iaiwgc3RydWN0IGJwZgogCWZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpOwogCiAJaWYgKGVudi5mb3JjZV9jaGVja3BvaW50cykKLQkJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpOwomIzQzOwkJYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpOwogCWlmIChlbnYuZm9yY2VfcmVnX2ludmFyaWFudHMpCi0JCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfVEVTVF9SRUdfSU5WQVJJQU5UUyk7CiYjNDM7CQlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpOwogCiAJb3B0cy5sb2dfYnVmID0gYnVmOwogCW9wdHMubG9nX3NpemUgPSBidWZfc3o7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMKaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYwpAQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotJmd0O29iaiwgJiMzNDtyeCYjMzQ7KTsKIAlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwlicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlwcmludGYoJiMzNDtsb2FkIGJwZiBwcm9ncmFtLi4uXG4mIzM0Oyk7CiAJcmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjYyCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vIEZ1enppbmcgTmVlZGVkIEhlcmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmIGFuZCB0aGUgcnVsZXMgZm9yIGZ1enppbmcgYXBwbGljYWJpbGl0eS4gVGhlIGRpZmYgc2hvd3MgbW9kaWZpY2F0aW9ucyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcywgYWxsIG5lYXRseSBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIHNwZWNpZmljYWxseSBgdG9vbHMvYnBmL2JwZnRvb2xgLCBgdG9vbHMvbGliL2JwZmAsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYC4gTm8ga2VybmVsIGNvcmUgZmlsZXMgYXJlIHRvdWNoZWQuCgpOb3csIGxldCYjMzk7cyBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiwgdGhlICYjMzQ7V0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2VjdGlvbiwgaXMgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZSAodGhlIG5lZ2F0aXZlIGNyaXRlcmlhKS4gSXQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCAmIzM0O1VzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMmIzM0OyB3YXJyYW50IGEgYFdvcnRoRnV6emluZz1mYWxzZWAgY2xhc3NpZmljYXRpb24uCgpHaXZlbiB0aGF0ICphbGwqIHRoZSBjaGFuZ2VkIGZpbGVzIGFyZSB3aXRoaW4gdGhvc2Ugc3BlY2lmaWVkIGB0b29scy9gIHN1YmRpcmVjdG9yaWVzIGFuZCwgdGhlcmVmb3JlLCBkb24mIzM5O3QgaW1wYWN0IHRoZSBrZXJuZWwgaXRzZWxmLCB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBmbGFnIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byAqZmFsc2UqLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGFnYWluIHRoYXQgSSBkaWRuJiMzOTt0IG1pc3MgYW55dGhpbmcsIGJ1dCBJJiMzOTttIGNvbmZpZGVudC4gTm8ga2VybmVsIGZpbGVzIGFyZSBwcmVzZW50LCBvbmx5IHRvb2xzLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBjb25jbHVzaW9uIGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChBcyB0aGUgY2hhbmdlIGlzIHNlbGYtY29udGFpbmVkKQoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKiogKE5vIGNvbmZpZyBjaGFuZ2VzIGFyZSBwcmVzZW50LikKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCBsaWJyYXJpZXMgKGB0b29scy9saWIvYnBmYCwgYHRvb2xzL2JwZi9icGZ0b29sYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGZgKSwgd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29scywgbGlicmFyaWVzLCBhbmQgc2VsZnRlc3RzICh0b29scy9saWIvYnBmLCB0b29scy9icGYvYnBmdG9vbCwgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZikuIFRoZXkgZG8gbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MDM6MjcuOTUyMDYyMzU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0MzYyNzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjI3Ljk1MjA2NzgxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMTI1MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjAwZmZhZmQwMjRhOGM4NTk2ZmNlZGUxNjJlN2MwNTYzODY4NDFmNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDowMzoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcXG5pbmRleCA4YzJmOTI1NWIzNmQ3Li42YWI5MTFlODIxNTUxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXFx1MDAyNlxcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XFxuLVxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdFxcdFxcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbiBcXHRcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCBvZmZsb2FkX2lmaW5kZXgpO1xcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5jIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbisrKyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcXG5AQCAtOTkzOCw2ICs5OTM4LDE2IEBAIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKVxcbit7XFxuK1xcdHJldHVybiBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfCBmbGFncyk7XFxuK31cXG4rXFxuK2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcXG4re1xcbitcXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVxcdTAwM2Vwcm9nX2ZsYWdzIFxcdTAwMjYgfmZsYWdzKTtcXG4rfVxcbitcXG4gX191MzIgYnBmX3Byb2dyYW1fX2xvZ19sZXZlbChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXFxuIHtcXG4gXFx0cmV0dXJuIHByb2ctXFx1MDAzZWxvZ19sZXZlbDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuaCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcXG5pbmRleCBiOTY1YWQ1NzE1NDAzLi4zOTMyYmY5Y2I0OTAzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5oXFxuQEAgLTEwMTEsNiArMTAxMSwxMiBAQCBicGZfcHJvZ3JhbV9fc2V0X2V4cGVjdGVkX2F0dGFjaF90eXBlKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4gTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTtcXG4gTElCQlBGX0FQSSBpbnQgYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcXG4gXFxuKy8qIENvbnZlbmllbmNlIGhlbHBlcnMgdG8gbm9uLWRlc3RydWN0aXZlbHkgYWRkIG9yIGNsZWFyIHRoZSBzcGVjaWZpZWQgZmxhZ3NcXG4rICogaW5zdGVhZCBvZiBjbG9iYmVyaW5nIHRoZW0gYXMgYnBmX3Byb2dyYW1fX3NldF9mbGFncygpIGRvZXMuXFxuKyAqL1xcbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xcbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncyk7XFxuK1xcbiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLlxcbiAgKiBTZWUgYnBmX29iamVjdF9vcGVuX29wdHMgY29tbWVudHMgcmVnYXJkaW5nIGxvZ19sZXZlbCBhbmQgbG9nX2J1ZlxcbiAgKiBpbnRlcmFjdGlvbnMuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxcbmluZGV4IDA4YWIyZWE4ODFmYjYuLmE4MTFhMWIzYTA4NTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXFxuQEAgLTQ1OCw3ICs0NTgsOSBAQCBMSUJCUEZfMS43LjAge1xcbiBcXG4gTElCQlBGXzEuOC4wIHtcXG4gXFx0Z2xvYmFsOlxcbitcXHRcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzO1xcbiBcXHRcXHRicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGk7XFxuK1xcdFxcdGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncztcXG4gXFx0XFx0YnBmX3Byb2dyYW1fX2Nsb25lO1xcbiBcXHRcXHRidGZfX2ZpbmRfYnlfbmFtZV9raW5kX293bjtcXG4gXFx0XFx0YnRmX19uZXdfZW1wdHlfb3B0cztcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xcbmluZGV4IDdkYWRiOTBlN2I2ODkuLjQxMTM2ZTFjNzc1MmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xcbkBAIC01NDMsOSArNTQzLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9rcHJvYmVfc2xlZXBhYmxlKHZvaWQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIHNsZWVwYWJsZSBrcHJvYmUgdGVzdCBjYXNlIG5lZWRzIGZsYWdzIHNldCBiZWZvcmUgbG9hZGluZyAqL1xcbi1cXHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxcbi1cXHRcXHRcXHQgICAgICAgc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdCAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSxcXG4rXFx0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSwgQlBGX0ZfU0xFRVBBQkxFKSxcXG4gXFx0XFx0ICAgICAgIFxcXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcXG5pbmRleCA2NTIzMDdhMWIyMmU3Li45MDJhNzBkNWFmZWI2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2xvYWQoY29uc3QgY2hhciAqZmlsZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuIFxcdH1cXG4gXFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfdHlwZShwcm9nLCB0eXBlKTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XFxuK1xcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgdGVzdGluZ19wcm9nX2ZsYWdzKCkpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2xvZ19sZXZlbChwcm9nLCA0IHwgZXh0cmFfcHJvZ19sb2FkX2xvZ19mbGFncyk7XFxuIFxcbiBcXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuaW5kZXggMjVlYjU5ZjQ2MGFiZS4uNzJjMGVmOGRhNDA5ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xcbkBAIC0xMCwxNSArMTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXFxuIFxcdHN0cnVjdCB0ZXN0X2tlcm5lbF9mbGFnICpsc21fc2tlbDtcXG4gXFx0c3RydWN0IGtmdW5jX2NhbGxfdGVzdCAqc2tlbCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDtcXG4rXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbitcXHRfX3UzMiBmbGFncztcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRsc21fc2tlbCA9IHRlc3Rfa2VybmVsX2ZsYWdfX29wZW4oKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxzbV9za2VsLCBcXFwibHNtX3NrZWxcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhsc21fc2tlbC1cXHUwMDNlcHJvZ3MuYnBmKSBcXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcXG4rXFx0cHJvZyA9IGxzbV9za2VsLVxcdTAwM2Vwcm9ncy5icGY7XFxuK1xcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xcbitcXHRBU1NFUlRfRVEoZmxhZ3MgXFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXFxuIFxcdFxcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcXFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcXFwiKTtcXG4gXFxuK1xcdHJldCA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfQU5ZX0FMSUdOTUVOVCk7XFxuK1xcdEFTU0VSVF9PSyhyZXQsIFxcXCJicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHJldFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncyB8IEJQRl9GX0FOWV9BTElHTk1FTlQsXFxuK1xcdFxcdCAgXFxcImJwZl9wcm9ncmFtX19hZGRfZmxhZ3MgdmFsdWVcXFwiKTtcXG4rXFxuK1xcdHJldCA9IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcXG4rXFx0QVNTRVJUX09LKHJldCwgXFxcImJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyByZXRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MsIFxcXCJicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgdmFsdWVcXFwiKTtcXG4rXFxuK1xcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2xvYWQobHNtX3NrZWwpO1xcbitcXHRBU1NFUlRfT0socmV0LCBcXFwidGVzdF9rZXJuZWxfZmxhZ19fbG9hZFxcXCIpO1xcbitcXG4gXFx0bHNtX3NrZWwtXFx1MDAzZWJzcy1cXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcXG4gXFxuIFxcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXFxuaW5kZXggZWQzZmQwYTg4ZGFiNi4uNjUxMTIzY2Q4NjAyZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbkBAIC0zNjEsOCArMzYxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpXFxuIFxcbiBcXHRzbF9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcXG4gXFxuLVxcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdFxcdCAgICAgYnBmX3Byb2dyYW1fX2ZsYWdzKHNsX3NrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsIEJQRl9GX1NMRUVQQUJMRSk7XFxuIFxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5pbmRleCAwNDdkZmRjMzIyYTJmLi4zYWI5NjM0NTg5MDNkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5AQCAtNDA4LDE0ICs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHQvKiBNYWtlIHN1cmUgd2UgY2FuIGxvYWQgYSBkZXYtYm91bmQgcHJvZ3JhbSB0aGF0IHBlcmZvcm1zXFxuIFxcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxcbiBcXHQgKi9cXG4gXFx0bmV3X3Byb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVxcdTAwM2VvYmosIFxcXCJyZWRpcmVjdFxcXCIpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4rXFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXFxcImxvYWQgc2tlbGV0b25cXFwiKSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcXG5pbmRleCA3OTRhN2RmYjA1Nzk2Li4yODcyNGRlMDYzMjIwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcXG5AQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcXG4gXFx0XFx0XFx0IHN0cnVjdCBicGZfb2JqZWN0ICpvYmosXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXFxuIHtcXG4tXFx0aW50IG1pbl9sb2dfbGV2ZWwgPSAwLCBwcm9nX2ZsYWdzO1xcbitcXHRpbnQgbWluX2xvZ19sZXZlbCA9IDA7XFxuIFxcbiBcXHRpZiAoZW52LnZlcmJvc2l0eSBcXHUwMDNlIFZFUkJPU0VfTk9ORSlcXG4gXFx0XFx0bWluX2xvZ19sZXZlbCA9IDE7XFxuQEAgLTc2Niw4ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2Nhc2Uoc3RydWN0IHRlc3RfbG9hZGVyICp0ZXN0ZXIsXFxuIFxcdGVsc2VcXG4gXFx0XFx0YnBmX3Byb2dyYW1fX3NldF9sb2dfbGV2ZWwocHJvZywgc3BlYy1cXHUwMDNlbG9nX2xldmVsKTtcXG4gXFxuLVxcdHByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7XFxuLVxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgcHJvZ19mbGFncyB8IHNwZWMtXFx1MDAzZXByb2dfZmxhZ3MpO1xcbitcXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHNwZWMtXFx1MDAzZXByb2dfZmxhZ3MpO1xcbiBcXG4gXFx0dGVzdGVyLVxcdTAwM2Vsb2dfYnVmWzBdID0gJ1xcXFwwJztcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcXG5pbmRleCAzZjAzNzk0OWU5Nzg5Li5kMWQ2MDQ1MWM1YmNjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuY1xcbkBAIC0yOTIsNyArMjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcXG4gXFx0KTtcXG4gXFx0c3RydWN0IGJwZl9vYmplY3QgKm9iajtcXG4gXFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbi1cXHRfX3UzMiBmbGFncztcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdG9iaiA9IGJwZl9vYmplY3RfX29wZW5fZmlsZShmaWxlLCBcXHUwMDI2b3B0cyk7XFxuQEAgLTMwOCw4ICszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLFxcbiBcXHRpZiAodHlwZSAhPSBCUEZfUFJPR19UWVBFX1VOU1BFQyBcXHUwMDI2XFx1MDAyNiBicGZfcHJvZ3JhbV9fdHlwZShwcm9nKSAhPSB0eXBlKVxcbiBcXHRcXHRicGZfcHJvZ3JhbV9fc2V0X3R5cGUocHJvZywgdHlwZSk7XFxuIFxcbi1cXHRmbGFncyA9IGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IHRlc3RpbmdfcHJvZ19mbGFncygpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTtcXG4rXFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XFxuIFxcbiBcXHRlcnIgPSBicGZfb2JqZWN0X19sb2FkKG9iaik7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5pbmRleCBlNzA3NDFjNmI5YjdjLi45Y2ZjOWI0YjQxYzEyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5AQCAtMTcyMiw5ICsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcXG4gXFx0Zml4dXBfb2JqKG9iaiwgcHJvZywgYmFzZV9maWxlbmFtZSk7XFxuIFxcbiBcXHRpZiAoZW52LmZvcmNlX2NoZWNrcG9pbnRzKVxcbi1cXHRcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1RFU1RfU1RBVEVfRlJFUSk7XFxuK1xcdFxcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfVEVTVF9TVEFURV9GUkVRKTtcXG4gXFx0aWYgKGVudi5mb3JjZV9yZWdfaW52YXJpYW50cylcXG4tXFx0XFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcXG4rXFx0XFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9URVNUX1JFR19JTlZBUklBTlRTKTtcXG4gXFxuIFxcdG9wdHMubG9nX2J1ZiA9IGJ1ZjtcXG4gXFx0b3B0cy5sb2dfc2l6ZSA9IGJ1Zl9zejtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuaW5kZXggYzU1MDFiM2ZkZjQ4Zi4uYWIzZjVmYzU2ZTg2NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcXG5AQCAtODQ1LDcgKzg0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcbiBcXHRwcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cXHUwMDNlb2JqLCBcXFwicnhcXFwiKTtcXG4gXFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdHByaW50ZihcXFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcXFxuXFxcIik7XFxuIFxcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MDM6MjguNDkyODQ2MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjc3MDI4MzE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjAwZmZhZmQwMjRhOGM4NTk2ZmNlZGUxNjJlN2MwNTYzODY4NDFmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjAzOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCA4YzJmOTI1NWIzNmQ3Li42YWI5MTFlODIxNTUxIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdFx0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHBvcywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuYyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbmluZGV4IGMwMzZlOGE5MWVkODguLjIyMWM0ZmUxZmIzMTkgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5AQCAtOTkzOCw2ICs5OTM4LDE2IEBAIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IGJwZl9wcm9ncmFtX19hZGRfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbit7XG4rXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfCBmbGFncyk7XG4rfVxuK1xuK2ludCBicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBfX3UzMiBmbGFncylcbit7XG4rXHRyZXR1cm4gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBwcm9nLVx1MDAzZXByb2dfZmxhZ3MgXHUwMDI2IH5mbGFncyk7XG4rfVxuK1xuIF9fdTMyIGJwZl9wcm9ncmFtX19sb2dfbGV2ZWwoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbiBcdHJldHVybiBwcm9nLVx1MDAzZWxvZ19sZXZlbDtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5oIGIvdG9vbHMvbGliL2JwZi9saWJicGYuaFxuaW5kZXggYjk2NWFkNTcxNTQwMy4uMzkzMmJmOWNiNDkwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbisrKyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmhcbkBAIC0xMDExLDYgKzEwMTEsMTIgQEAgYnBmX3Byb2dyYW1fX3NldF9leHBlY3RlZF9hdHRhY2hfdHlwZShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4gTElCQlBGX0FQSSBfX3UzMiBicGZfcHJvZ3JhbV9fZmxhZ3MoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKTtcbiBMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xuIFxuKy8qIENvbnZlbmllbmNlIGhlbHBlcnMgdG8gbm9uLWRlc3RydWN0aXZlbHkgYWRkIG9yIGNsZWFyIHRoZSBzcGVjaWZpZWQgZmxhZ3NcbisgKiBpbnN0ZWFkIG9mIGNsb2JiZXJpbmcgdGhlbSBhcyBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKCkgZG9lcy5cbisgKi9cbitMSUJCUEZfQVBJIGludCBicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgX191MzIgZmxhZ3MpO1xuK0xJQkJQRl9BUEkgaW50IGJwZl9wcm9ncmFtX19jbGVhcl9mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIF9fdTMyIGZsYWdzKTtcbitcbiAvKiBQZXItcHJvZ3JhbSBsb2cgbGV2ZWwgYW5kIGxvZyBidWZmZXIgZ2V0dGVycy9zZXR0ZXJzLlxuICAqIFNlZSBicGZfb2JqZWN0X29wZW5fb3B0cyBjb21tZW50cyByZWdhcmRpbmcgbG9nX2xldmVsIGFuZCBsb2dfYnVmXG4gICogaW50ZXJhY3Rpb25zLlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuaW5kZXggMDhhYjJlYTg4MWZiNi4uYTgxMWExYjNhMDg1NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwXG5AQCAtNDU4LDcgKzQ1OCw5IEBAIExJQkJQRl8xLjcuMCB7XG4gXG4gTElCQlBGXzEuOC4wIHtcbiBcdGdsb2JhbDpcbitcdFx0YnBmX3Byb2dyYW1fX2FkZF9mbGFncztcbiBcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpO1xuK1x0XHRicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3M7XG4gXHRcdGJwZl9wcm9ncmFtX19jbG9uZTtcbiBcdFx0YnRmX19maW5kX2J5X25hbWVfa2luZF9vd247XG4gXHRcdGJ0Zl9fbmV3X2VtcHR5X29wdHM7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuaW5kZXggN2RhZGI5MGU3YjY4OS4uNDExMzZlMWM3NzUyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuQEAgLTU0Myw5ICs1NDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Lyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovXG4tXHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxuLVx0XHRcdCAgICAgICBza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLFxuLVx0XHRcdCAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpLFxuK1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpLFxuIFx0XHQgICAgICAgXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX3ZlcmlmX3NjYWxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuY1xuaW5kZXggNjUyMzA3YTFiMjJlNy4uOTAyYTcwZDVhZmViNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl92ZXJpZl9zY2FsZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfdmVyaWZfc2NhbGUuY1xuQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBjaGVja19sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuIFx0fVxuIFxuIFx0YnBmX3Byb2dyYW1fX3NldF90eXBlKHByb2csIHR5cGUpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCB0ZXN0aW5nX3Byb2dfZmxhZ3MoKSk7XG4rXHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIHRlc3RpbmdfcHJvZ19mbGFncygpKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfbG9nX2xldmVsKHByb2csIDQgfCBleHRyYV9wcm9nX2xvYWRfbG9nX2ZsYWdzKTtcbiBcbiBcdGVyciA9IGJwZl9vYmplY3RfX2xvYWQob2JqKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xuaW5kZXggMjVlYjU5ZjQ2MGFiZS4uNzJjMGVmOGRhNDA5ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbkBAIC0xMCwxNSArMTAsMzEgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXG4gXHRzdHJ1Y3QgdGVzdF9rZXJuZWxfZmxhZyAqbHNtX3NrZWw7XG4gXHRzdHJ1Y3Qga2Z1bmNfY2FsbF90ZXN0ICpza2VsID0gTlVMTDtcbiBcdHN0cnVjdCBrZnVuY19jYWxsX3Rlc3RfbHNrZWwgKmxza2VsID0gTlVMTDtcbitcdHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZztcbitcdF9fdTMyIGZsYWdzO1xuIFx0aW50IHJldDtcbiBcbi1cdGxzbV9za2VsID0gdGVzdF9rZXJuZWxfZmxhZ19fb3Blbl9hbmRfbG9hZCgpO1xuK1x0bHNtX3NrZWwgPSB0ZXN0X2tlcm5lbF9mbGFnX19vcGVuKCk7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobHNtX3NrZWwsIFwibHNtX3NrZWxcIikpXG4gXHRcdHJldHVybjtcbiBcbi1cdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmKSBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuK1x0cHJvZyA9IGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZjtcbitcdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpO1xuK1x0QVNTRVJUX0VRKGZsYWdzIFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXG4gXHRcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcInNsZWVwYWJsZSBpbiBwcm9ncmFtIGZsYWdzXCIpO1xuIFxuK1x0cmV0ID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9BTllfQUxJR05NRU5UKTtcbitcdEFTU0VSVF9PSyhyZXQsIFwiYnBmX3Byb2dyYW1fX2FkZF9mbGFncyByZXRcIik7XG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpLCBmbGFncyB8IEJQRl9GX0FOWV9BTElHTk1FTlQsXG4rXHRcdCAgXCJicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzIHZhbHVlXCIpO1xuK1xuK1x0cmV0ID0gYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzKHByb2csIEJQRl9GX0FOWV9BTElHTk1FTlQpO1xuK1x0QVNTRVJUX09LKHJldCwgXCJicGZfcHJvZ3JhbV9fY2xlYXJfZmxhZ3MgcmV0XCIpO1xuK1x0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSwgZmxhZ3MsIFwiYnBmX3Byb2dyYW1fX2NsZWFyX2ZsYWdzIHZhbHVlXCIpO1xuK1xuK1x0cmV0ID0gdGVzdF9rZXJuZWxfZmxhZ19fbG9hZChsc21fc2tlbCk7XG4rXHRBU1NFUlRfT0socmV0LCBcInRlc3Rfa2VybmVsX2ZsYWdfX2xvYWRcIik7XG4rXG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IGVkM2ZkMGE4OGRhYjYuLjY1MTEyM2NkODYwMmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYxLDggKzM2MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxuIFxuIFx0c2xfc2tlbC1cdTAwM2Vic3MtXHUwMDNldXNlcl9wdHIgPSBzbF9za2VsO1xuIFxuLVx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLFxuLVx0XHRcdFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX2FkZF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuaW5kZXggMDQ3ZGZkYzMyMmEyZi4uM2FiOTYzNDU4OTAzZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuQEAgLTQwOCwxNCArNDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCJyeFwiKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJlZGlyZWN0XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KG5ld19wcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIGJwZl9wcm9ncmFtX19mbGFncyhuZXdfcHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCJsb2FkIHNrZWxldG9uXCIpKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9sb2FkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXG5pbmRleCA3OTRhN2RmYjA1Nzk2Li4yODcyNGRlMDYzMjIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfbG9hZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2xvYWRlci5jXG5AQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY2FzZShzdHJ1Y3QgdGVzdF9sb2FkZXIgKnRlc3RlcixcbiBcdFx0XHQgc3RydWN0IGJwZl9vYmplY3QgKm9iaixcbiBcdFx0XHQgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxuIHtcbi1cdGludCBtaW5fbG9nX2xldmVsID0gMCwgcHJvZ19mbGFncztcbitcdGludCBtaW5fbG9nX2xldmVsID0gMDtcbiBcbiBcdGlmIChlbnYudmVyYm9zaXR5IFx1MDAzZSBWRVJCT1NFX05PTkUpXG4gXHRcdG1pbl9sb2dfbGV2ZWwgPSAxO1xuQEAgLTc2Niw4ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2Nhc2Uoc3RydWN0IHRlc3RfbG9hZGVyICp0ZXN0ZXIsXG4gXHRlbHNlXG4gXHRcdGJwZl9wcm9ncmFtX19zZXRfbG9nX2xldmVsKHByb2csIHNwZWMtXHUwMDNlbG9nX2xldmVsKTtcbiBcbi1cdHByb2dfZmxhZ3MgPSBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZyk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIHByb2dfZmxhZ3MgfCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBzcGVjLVx1MDAzZXByb2dfZmxhZ3MpO1xuIFxuIFx0dGVzdGVyLVx1MDAzZWxvZ19idWZbMF0gPSAnXFwwJztcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jXG5pbmRleCAzZjAzNzk0OWU5Nzg5Li5kMWQ2MDQ1MWM1YmNjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmNcbkBAIC0yOTIsNyArMjkyLDYgQEAgaW50IGJwZl9wcm9nX3Rlc3RfbG9hZChjb25zdCBjaGFyICpmaWxlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSxcbiBcdCk7XG4gXHRzdHJ1Y3QgYnBmX29iamVjdCAqb2JqO1xuIFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuLVx0X191MzIgZmxhZ3M7XG4gXHRpbnQgZXJyO1xuIFxuIFx0b2JqID0gYnBmX29iamVjdF9fb3Blbl9maWxlKGZpbGUsIFx1MDAyNm9wdHMpO1xuQEAgLTMwOCw4ICszMDcsNyBAQCBpbnQgYnBmX3Byb2dfdGVzdF9sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLFxuIFx0aWYgKHR5cGUgIT0gQlBGX1BST0dfVFlQRV9VTlNQRUMgXHUwMDI2XHUwMDI2IGJwZl9wcm9ncmFtX190eXBlKHByb2cpICE9IHR5cGUpXG4gXHRcdGJwZl9wcm9ncmFtX19zZXRfdHlwZShwcm9nLCB0eXBlKTtcbiBcbi1cdGZsYWdzID0gYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgdGVzdGluZ19wcm9nX2ZsYWdzKCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGZsYWdzKTtcbitcdGJwZl9wcm9ncmFtX19hZGRfZmxhZ3MocHJvZywgdGVzdGluZ19wcm9nX2ZsYWdzKCkpO1xuIFxuIFx0ZXJyID0gYnBmX29iamVjdF9fbG9hZChvYmopO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5pbmRleCBlNzA3NDFjNmI5YjdjLi45Y2ZjOWI0YjQxYzEyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTcyMiw5ICsxNzIyLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHN0cnVjdCBicGZcbiBcdGZpeHVwX29iaihvYmosIHByb2csIGJhc2VfZmlsZW5hbWUpO1xuIFxuIFx0aWYgKGVudi5mb3JjZV9jaGVja3BvaW50cylcbi1cdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9URVNUX1NUQVRFX0ZSRVEpO1xuK1x0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfU1RBVEVfRlJFUSk7XG4gXHRpZiAoZW52LmZvcmNlX3JlZ19pbnZhcmlhbnRzKVxuLVx0XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpO1xuK1x0XHRicGZfcHJvZ3JhbV9fYWRkX2ZsYWdzKHByb2csIEJQRl9GX1RFU1RfUkVHX0lOVkFSSUFOVFMpO1xuIFxuIFx0b3B0cy5sb2dfYnVmID0gYnVmO1xuIFx0b3B0cy5sb2dfc2l6ZSA9IGJ1Zl9zejtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbmluZGV4IGM1NTAxYjNmZGY0OGYuLmFiM2Y1ZmM1NmU4NjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJ4XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX2FkZF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcblwiKTtcbiBcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjI4LjQ5Mjg0NzUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwMjgwOTA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBGdXp6aW5nIE5lZWRlZCBIZXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGRpZmYgYW5kIHRoZSBydWxlcyBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIGFjcm9zcyBzZXZlcmFsIGZpbGVzLCBhbGwgbmVhdGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgc3BlY2lmaWNhbGx5IGB0b29scy9icGYvYnBmdG9vbGAsIGB0b29scy9saWIvYnBmYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGZgLiBObyBrZXJuZWwgY29yZSBmaWxlcyBhcmUgdG91Y2hlZC5cblxuTm93LCBsZXQncyBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgc2VjdGlvbiwgaXMgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbiBoZXJlICh0aGUgbmVnYXRpdmUgY3JpdGVyaWEpLiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IFwiVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlc1wiIHdhcnJhbnQgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCBjbGFzc2lmaWNhdGlvbi5cblxuR2l2ZW4gdGhhdCAqYWxsKiB0aGUgY2hhbmdlZCBmaWxlcyBhcmUgd2l0aGluIHRob3NlIHNwZWNpZmllZCBgdG9vbHMvYCBzdWJkaXJlY3RvcmllcyBhbmQsIHRoZXJlZm9yZSwgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaXRzZWxmLCB0aGUgXCJXb3J0aEZ1enppbmdcIiBmbGFnIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byAqZmFsc2UqLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBhZ2FpbiB0aGF0IEkgZGlkbid0IG1pc3MgYW55dGhpbmcsIGJ1dCBJJ20gY29uZmlkZW50LiBObyBrZXJuZWwgZmlsZXMgYXJlIHByZXNlbnQsIG9ubHkgdG9vbHMuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgY29uY2x1c2lvbiBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiogKEFzIHRoZSBjaGFuZ2UgaXMgc2VsZi1jb250YWluZWQpXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqIChObyBjb25maWcgY2hhbmdlcyBhcmUgcHJlc2VudC4pXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgYW5kIGxpYnJhcmllcyAoYHRvb2xzL2xpYi9icGZgLCBgdG9vbHMvYnBmL2JwZnRvb2xgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZmApLCB3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjIsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDowMzozNi4xOTU2NTg2MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbHMsIGxpYnJhcmllcywgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvbGliL2JwZiwgdG9vbHMvYnBmL2JwZnRvb2wsIGFuZCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYpLiBUaGV5IGRvIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjAzOjM2LjE5NTY3OTYxOVoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg5hhr[1] Phase: Running StartedAt: 2026-09-10 20:03:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5hhr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 20:03:59 +0000 UTC FinishedAt: 2026-09-10 20:04:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}