Name: series-workflowhh7b4 Phase: Failed StartedAt: 2026-07-04 09:29:43 +0000 UTC FinishedAt: 2026-07-04 09:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhh7b4[0] Phase: Succeeded StartedAt: 2026-07-04 09:29:43 +0000 UTC FinishedAt: 2026-07-04 09:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhh7b4[0].run-triage Phase: Succeeded StartedAt: 2026-07-04 09:29:43 +0000 UTC FinishedAt: 2026-07-04 09:50:01 +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+CgkJCTx0ZD4yMDI2LzA3LzA0IDA5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIG5vbi1mdW5jdGlvbmFsIHJlZmFjdG9yaW5nOiByZXBsYWNpbmcgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoIEFMSUdOX0RPV04sIHJlcGxhY2luZyBhIG1hZ2ljIG51bWJlciAoMHhmZikgd2l0aCBpdHMgbWFjcm8gZXF1aXZhbGVudCAoS0FTQU5fVEFHX0tFUk5FTCksIGFuZCBleHRyYWN0aW5nIGEgcmVwZWF0ZWQgY29uZGl0aW9uYWwgYmxvY2sgaW50byBhIGhlbHBlciBmdW5jdGlvbi4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA5OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVjNDgyZjdhMDYwY2FmODFkZDM0NGU2MjJjZWZhNGQ4YmJlMThjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDk6NDk6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vY29tbW9uLmMgYi9tbS9rYXNhbi9jb21tb24uY1xuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL2NvbW1vbi5jXG5AQCAtMTE5LDcgJiM0MzsxMTksNyBAQCBhc21saW5rYWdlIHZvaWQga2FzYW5fdW5wb2lzb25fdGFza19zdGFja19iZWxvdyhjb25zdCB2b2lkICp3YXRlcm1hcmspXG4gXHQgKiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGVhcmx5IHJlc3VtZSBjb2RlIHdoaWNoIGhhc24mIzM5O3RcbiBcdCAqIHlldCBzZXQgdXAgdGhlIHBlcmNwdSByZWdpc3RlciAoJWdzKS5cbiBcdCAqL1xuLVx0dm9pZCAqYmFzZSA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyayBcdTAwMjYgfihUSFJFQURfU0laRSAtIDEpKTtcbiYjNDM7XHR2b2lkICpiYXNlID0gKHZvaWQgKilBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyaywgVEhSRUFEX1NJWkUpO1xuIFxuIFx0a2FzYW5fdW5wb2lzb24oYmFzZSwgd2F0ZXJtYXJrIC0gYmFzZSwgZmFsc2UpO1xuIH1cbkBAIC0xODgsNyAmIzQzOzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXG4gXHRcdFx0XHRcdGNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KVxuIHtcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSlcbi1cdFx0cmV0dXJuIDB4ZmY7XG4mIzQzO1x0XHRyZXR1cm4gS0FTQU5fVEFHX0tFUk5FTDtcbiBcbiBcdC8qXG4gXHQgKiBJZiB0aGUgY2FjaGUgbmVpdGhlciBoYXMgYSBjb25zdHJ1Y3RvciBub3IgaGFzIFNMQUJfVFlQRVNBRkVfQllfUkNVXG5AQCAtMzQwLDE0ICYjNDM7MzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCxcbiBcdFx0a2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbiYjNDM7XHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLFxuIFx0XHRcdFx0XHR2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpXG4ge1xuIFx0dTggdGFnO1xuIFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcbiBcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00MDIsOCAmIzQzOzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19yZWR6b25lKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIGNvbnN0IHZvaWQgKm9iamVjdCxcbiBcdFx0XHRcdFx0c2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuIHtcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00NDMsOCAmIzQzOzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2ttYWxsb2NfbGFyZ2UoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSxcbiBcdFx0XHRcdFx0XHRnZnBfdCBmbGFncylcbiB7XG4tXHRpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKVxuLVx0XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpO1xuJiM0MztcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xuIFxuIFx0aWYgKHVubGlrZWx5KHB0ciA9PSBOVUxMKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG5AQCAtNDYwLDggJiM0Mzs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xuIHtcbiBcdHN0cnVjdCBzbGFiICpzbGFiO1xuIFxuLVx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbi1cdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbiYjNDM7XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShvYmplY3QgPT0gWkVST19TSVpFX1BUUikpXG4gXHRcdHJldHVybiAodm9pZCAqKW9iamVjdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzVjNDgyZjdhMDYwY2FmODFkZDM0NGU2MjJjZWZhNGQ4YmJlMThjNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMDk6NDk6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9jb21tb24uYyBiL21tL2thc2FuL2NvbW1vbi5jCmluZGV4IGI3ZDA1YzJhNmQ5M2RkLi4zZTliNmI4ZjU1YjhlMCAxMDA2NDQKLS0tIGEvbW0va2FzYW4vY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va2FzYW4vY29tbW9uLmMKQEAgLTExOSw3ICYjNDM7MTE5LDcgQEAgYXNtbGlua2FnZSB2b2lkIGthc2FuX3VucG9pc29uX3Rhc2tfc3RhY2tfYmVsb3coY29uc3Qgdm9pZCAqd2F0ZXJtYXJrKQogCSAqIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZWFybHkgcmVzdW1lIGNvZGUgd2hpY2ggaGFzbiYjMzk7dAogCSAqIHlldCBzZXQgdXAgdGhlIHBlcmNwdSByZWdpc3RlciAoJWdzKS4KIAkgKi8KLQl2b2lkICpiYXNlID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrICZhbXA7IH4oVEhSRUFEX1NJWkUgLSAxKSk7CiYjNDM7CXZvaWQgKmJhc2UgPSAodm9pZCAqKUFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrLCBUSFJFQURfU0laRSk7CiAKIAlrYXNhbl91bnBvaXNvbihiYXNlLCB3YXRlcm1hcmsgLSBiYXNlLCBmYWxzZSk7CiB9CkBAIC0xODgsNyAmIzQzOzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCiAJCQkJCWNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KQogewogCWlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSkKLQkJcmV0dXJuIDB4ZmY7CiYjNDM7CQlyZXR1cm4gS0FTQU5fVEFHX0tFUk5FTDsKIAogCS8qCiAJICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVQpAQCAtMzQwLDE0ICYjNDM7MzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCwKIAkJa2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKQomIzQzO3sKJiM0MzsJaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkKJiM0MzsJCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7fQomIzQzOwogdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogCQkJCQl2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpCiB7CiAJdTggdGFnOwogCXZvaWQgKnRhZ2dlZF9vYmplY3Q7CiAKLQlpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKQotCQlrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpOwomIzQzOwlrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTsKIAogCWlmICh1bmxpa2VseShvYmplY3QgPT0gTlVMTCkpCiAJCXJldHVybiBOVUxMOwpAQCAtNDAyLDggJiM0Mzs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIGNvbnN0IHZvaWQgKm9iamVjdCwKIAkJCQkJc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQogewotCWlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpCi0JCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7CWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpOwogCiAJaWYgKHVubGlrZWx5KG9iamVjdCA9PSBOVUxMKSkKIAkJcmV0dXJuIE5VTEw7CkBAIC00NDMsOCAmIzQzOzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsCiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvY19sYXJnZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLAogCQkJCQkJZ2ZwX3QgZmxhZ3MpCiB7Ci0JaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkKLQkJa2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTsKJiM0MzsJa2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7CiAKIAlpZiAodW5saWtlbHkocHRyID09IE5VTEwpKQogCQlyZXR1cm4gTlVMTDsKQEAgLTQ2MCw4ICYjNDM7NDYzLDcgQEAgdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2tyZWFsbG9jKGNvbnN0IHZvaWQgKm9iamVjdCwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWcKIHsKIAlzdHJ1Y3Qgc2xhYiAqc2xhYjsKIAotCWlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpCi0JCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7CWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpOwogCiAJaWYgKHVubGlrZWx5KG9iamVjdCA9PSBaRVJPX1NJWkVfUFRSKSkKIAkJcmV0dXJuICh2b2lkICopb2JqZWN0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEtBU0FOIGZvciBDbGFyaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtBU0FOIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBtbS9rYXNhbi9jb21tb24uY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgZG9pbmcgc29tZSBob3VzZSBjbGVhbmluZy4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3Jpbmcgb2YgYGthc2FuX3VucG9pc29uX3Rhc2tfc3RhY2tfYmVsb3dgOiB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gd2l0aCBgQUxJR05fRE9XTmAsIHdoaWNoIGlzIG11Y2ggY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZS4gR29vZC4gVGhlbiBpbiBgYXNzaWduX3RhZ2AsIHRoZXkmIzM5O3ZlIGNoYW5nZWQgYDB4ZmZgIHRvIGBLQVNBTl9UQUdfS0VSTkVMYC4gVGhpcyBpcyBwcm9iYWJseSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgdG9vLiBJdCYjMzk7cyBiZXR0ZXIgdG8gdXNlIGEgc3ltYm9saWMgY29uc3RhbnQuCgpBbmQgbGFzdGx5LCB0aGUgcGF0Y2ggZXh0cmFjdHMgdGhpcyBgaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkga2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtgIGJpdCBmcm9tIGEgaGFuZGZ1bCBvZiBhbGxvY2F0aW9uIGZ1bmN0aW9ucyDigJMgYF9fa2FzYW5fc2xhYl9hbGxvY2AsIGBfX2thc2FuX2ttYWxsb2NgLCBldGMuIOKAkyBhbmQgcHV0cyBpdCBpbnRvIGl0cyBvd24gaGVscGVyLCBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGAuIFNtYXJ0LiBDZW50cmFsaXppbmcgdGhpcyBraW5kIG9mIGNvbmRpdGlvbmFsIGxvZ2ljIG1ha2VzIGl0IGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4gSXQmIzM5O3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgoKQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuIENoYW5naW5nIGAweGZmYCB0byBgS0FTQU5fVEFHX0tFUk5FTGAuLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgS0FTQU5fVEFHX0tFUk5FTGAgYWN0dWFsbHkgKmlzKiBgMHhmZmAuIEkgbWVhbiwgSSBhc3N1bWUgaXQgaXMsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uLiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTQtXG5pbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaDo1OiNkZWZpbmUgS0FTQU5fVEFHX0tFUk5FTFx0MHhGRiAvKiBuYXRpdmUga2VybmVsIHBvaW50ZXJzIHRhZyAqL1xuaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNi0jZGVmaW5lIEtBU0FOX1RBR19JTlZBTElEXHQweEZFIC8qIGluYWNjZXNzaWJsZSBtZW1vcnkgdGFnICovXG4tLVxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNC1cbnRvb2xzL2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oOjU6I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMXHQweEZGIC8qIG5hdGl2ZSBrZXJuZWwgcG9pbnRlcnMgdGFnICovXG50b29scy9pbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaC02LSNkZWZpbmUgS0FTQU5fVEFHX0lOVkFMSURcdDB4RkUgLyogaW5hY2Nlc3NpYmxlIG1lbW9yeSB0YWcgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxCgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIHdpdGggTm8gRnVuY3Rpb25hbCBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlc2UgY2hhbmdlcy4gSXQmIzM5O3MgYWxsIGNvc21ldGljLCByZWFsbHkuIFRoZSBjb3JlIGNvbmNlcHQgcmVtYWlucyB1bmNoYW5nZWQuIGBLQVNBTl9UQUdfS0VSTkVMYCBpcyBpbmRlZWQgYDB4RkZgLiBUaGUgc3dpdGNoIGZyb20gYDB4ZmZgIHRvIHRoYXQgc3ltYm9saWMgbmFtZT8gSnVzdCBhIHJlZmFjdG9yLCBub3RoaW5nIHRoYXQgYWZmZWN0cyB0aGUgdW5kZXJseWluZyBiZWhhdmlvci4gU2ltaWxhcmx5LCByZXBsYWNpbmcgYCZhbXA7IH4oVEhSRUFEX1NJWkUgLSAxKWAgd2l0aCBgQUxJR05fRE9XTiguLi4sIFRIUkVBRF9TSVpFKWAgaXMgcHVyZWx5IGFib3V0IHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHksIG5vdCBmdW5jdGlvbi4gQW5kIHRoYXQgZXh0cmFjdGlvbiBvZiBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGA/IEFnYWluLCBqdXN0IGEgcmVmYWN0b3Jpbmcgc3RlcC4gV2l0aCBubyBtYXRlcmlhbCBjaGFuZ2VzIHRvIGJlaGF2aW9yLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIG9uZSYjMzk7cyBhIHBhc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwOTo0OTozNS42Njc1NjUyNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIyNzMxNDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjM1LjY2NzU3MDQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwOTU0Mjk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1YzQ4MmY3YTA2MGNhZjgxZGQzNDRlNjIyY2VmYTRkOGJiZTE4YzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgNCAwOTo0OTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9jb21tb24uYyBiL21tL2thc2FuL2NvbW1vbi5jXFxuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxcbi0tLSBhL21tL2thc2FuL2NvbW1vbi5jXFxuKysrIGIvbW0va2FzYW4vY29tbW9uLmNcXG5AQCAtMTE5LDcgKzExOSw3IEBAIGFzbWxpbmthZ2Ugdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93KGNvbnN0IHZvaWQgKndhdGVybWFyaylcXG4gXFx0ICogYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBlYXJseSByZXN1bWUgY29kZSB3aGljaCBoYXNuJ3RcXG4gXFx0ICogeWV0IHNldCB1cCB0aGUgcGVyY3B1IHJlZ2lzdGVyICglZ3MpLlxcbiBcXHQgKi9cXG4tXFx0dm9pZCAqYmFzZSA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyayBcXHUwMDI2IH4oVEhSRUFEX1NJWkUgLSAxKSk7XFxuK1xcdHZvaWQgKmJhc2UgPSAodm9pZCAqKUFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrLCBUSFJFQURfU0laRSk7XFxuIFxcbiBcXHRrYXNhbl91bnBvaXNvbihiYXNlLCB3YXRlcm1hcmsgLSBiYXNlLCBmYWxzZSk7XFxuIH1cXG5AQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXFxuIFxcdFxcdFxcdFxcdFxcdGNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KVxcbiB7XFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSlcXG4tXFx0XFx0cmV0dXJuIDB4ZmY7XFxuK1xcdFxcdHJldHVybiBLQVNBTl9UQUdfS0VSTkVMO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVVxcbkBAIC0zNDAsMTQgKzM0MCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5wb2lzb25fc2xhYl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmplY3QsXFxuIFxcdFxcdGthc2FuX3NhdmVfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0LCBmbGFncyk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKVxcbit7XFxuK1xcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuK1xcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK31cXG4rXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9zbGFiX2FsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcXG4gXFx0XFx0XFx0XFx0XFx0dm9pZCAqb2JqZWN0LCBnZnBfdCBmbGFncywgYm9vbCBpbml0KVxcbiB7XFxuIFxcdHU4IHRhZztcXG4gXFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcXG4gXFxuLVxcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuLVxcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK1xcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KG9iamVjdCA9PSBOVUxMKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuQEAgLTQwMiw4ICs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgY29uc3Qgdm9pZCAqb2JqZWN0LFxcbiBcXHRcXHRcXHRcXHRcXHRzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuIHtcXG4tXFx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcXG4tXFx0XFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcXG4rXFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG5AQCAtNDQzLDggKzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9rbWFsbG9jX2xhcmdlKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGdmcF90IGZsYWdzKVxcbiB7XFxuLVxcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuLVxcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK1xcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KHB0ciA9PSBOVUxMKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuQEAgLTQ2MCw4ICs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xcbiB7XFxuIFxcdHN0cnVjdCBzbGFiICpzbGFiO1xcbiBcXG4tXFx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcXG4tXFx0XFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcXG4rXFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkob2JqZWN0ID09IFpFUk9fU0laRV9QVFIpKVxcbiBcXHRcXHRyZXR1cm4gKHZvaWQgKilvYmplY3Q7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjM2Ljg3NzczMDYxMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMTcxMzA5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIG5vbi1mdW5jdGlvbmFsIHJlZmFjdG9yaW5nOiByZXBsYWNpbmcgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoIEFMSUdOX0RPV04sIHJlcGxhY2luZyBhIG1hZ2ljIG51bWJlciAoMHhmZikgd2l0aCBpdHMgbWFjcm8gZXF1aXZhbGVudCAoS0FTQU5fVEFHX0tFUk5FTCksIGFuZCBleHRyYWN0aW5nIGEgcmVwZWF0ZWQgY29uZGl0aW9uYWwgYmxvY2sgaW50byBhIGhlbHBlciBmdW5jdGlvbi4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1YzQ4MmY3YTA2MGNhZjgxZGQzNDRlNjIyY2VmYTRkOGJiZTE4YzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDA5OjQ5OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vY29tbW9uLmMgYi9tbS9rYXNhbi9jb21tb24uY1xuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vY29tbW9uLmNcbisrKyBiL21tL2thc2FuL2NvbW1vbi5jXG5AQCAtMTE5LDcgKzExOSw3IEBAIGFzbWxpbmthZ2Ugdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93KGNvbnN0IHZvaWQgKndhdGVybWFyaylcbiBcdCAqIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZWFybHkgcmVzdW1lIGNvZGUgd2hpY2ggaGFzbid0XG4gXHQgKiB5ZXQgc2V0IHVwIHRoZSBwZXJjcHUgcmVnaXN0ZXIgKCVncykuXG4gXHQgKi9cbi1cdHZvaWQgKmJhc2UgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZyl3YXRlcm1hcmsgXHUwMDI2IH4oVEhSRUFEX1NJWkUgLSAxKSk7XG4rXHR2b2lkICpiYXNlID0gKHZvaWQgKilBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyaywgVEhSRUFEX1NJWkUpO1xuIFxuIFx0a2FzYW5fdW5wb2lzb24oYmFzZSwgd2F0ZXJtYXJrIC0gYmFzZSwgZmFsc2UpO1xuIH1cbkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIGlubGluZSB1OCBhc3NpZ25fdGFnKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbiBcdFx0XHRcdFx0Y29uc3Qgdm9pZCAqb2JqZWN0LCBib29sIGluaXQpXG4ge1xuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tBU0FOX0dFTkVSSUMpKVxuLVx0XHRyZXR1cm4gMHhmZjtcbitcdFx0cmV0dXJuIEtBU0FOX1RBR19LRVJORUw7XG4gXG4gXHQvKlxuIFx0ICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVVxuQEAgLTM0MCwxNCArMzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCxcbiBcdFx0a2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZ2ZwX3QgZmxhZ3MpXG4re1xuK1x0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbitcdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbit9XG4rXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLFxuIFx0XHRcdFx0XHR2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpXG4ge1xuIFx0dTggdGFnO1xuIFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcbiBcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4rXHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShvYmplY3QgPT0gTlVMTCkpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTQwMiw4ICs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2ttYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCBjb25zdCB2b2lkICpvYmplY3QsXG4gXHRcdFx0XHRcdHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbiB7XG4tXHRpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKVxuLVx0XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpO1xuK1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00NDMsOCArNDQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvaXNvbl9rbWFsbG9jX2xhcmdlX3JlZHpvbmUoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSxcbiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvY19sYXJnZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLFxuIFx0XHRcdFx0XHRcdGdmcF90IGZsYWdzKVxuIHtcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4rXHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShwdHIgPT0gTlVMTCkpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTQ2MCw4ICs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xuIHtcbiBcdHN0cnVjdCBzbGFiICpzbGFiO1xuIFxuLVx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbi1cdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbitcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xuIFxuIFx0aWYgKHVubGlrZWx5KG9iamVjdCA9PSBaRVJPX1NJWkVfUFRSKSlcbiBcdFx0cmV0dXJuICh2b2lkICopb2JqZWN0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDk6NDk6MzYuODc3NzMxNzkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MjExODQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBLQVNBTiBmb3IgQ2xhcml0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS0FTQU4gcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gYG1tL2thc2FuL2NvbW1vbi5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGRvaW5nIHNvbWUgaG91c2UgY2xlYW5pbmcuIEZpcnN0LCBJIHNlZSBhIHJlZmFjdG9yaW5nIG9mIGBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93YDogdGhleSdyZSByZXBsYWNpbmcgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gd2l0aCBgQUxJR05fRE9XTmAsIHdoaWNoIGlzIG11Y2ggY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZS4gR29vZC4gVGhlbiBpbiBgYXNzaWduX3RhZ2AsIHRoZXkndmUgY2hhbmdlZCBgMHhmZmAgdG8gYEtBU0FOX1RBR19LRVJORUxgLiBUaGlzIGlzIHByb2JhYmx5IHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSB0b28uIEl0J3MgYmV0dGVyIHRvIHVzZSBhIHN5bWJvbGljIGNvbnN0YW50LlxuXG5BbmQgbGFzdGx5LCB0aGUgcGF0Y2ggZXh0cmFjdHMgdGhpcyBgaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkga2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtgIGJpdCBmcm9tIGEgaGFuZGZ1bCBvZiBhbGxvY2F0aW9uIGZ1bmN0aW9ucyDigJMgYF9fa2FzYW5fc2xhYl9hbGxvY2AsIGBfX2thc2FuX2ttYWxsb2NgLCBldGMuIOKAkyBhbmQgcHV0cyBpdCBpbnRvIGl0cyBvd24gaGVscGVyLCBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGAuIFNtYXJ0LiBDZW50cmFsaXppbmcgdGhpcyBraW5kIG9mIGNvbmRpdGlvbmFsIGxvZ2ljIG1ha2VzIGl0IGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4gSXQncyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uXG5cbkJ1dCB3YWl0LCBob2xkIG9uIGEgc2Vjb25kLiBDaGFuZ2luZyBgMHhmZmAgdG8gYEtBU0FOX1RBR19LRVJORUxgLi4uIEkgc2hvdWxkIGNoZWNrIHRoYXQgYEtBU0FOX1RBR19LRVJORUxgIGFjdHVhbGx5ICppcyogYDB4ZmZgLiBJIG1lYW4sIEkgYXNzdW1lIGl0IGlzLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLiBJJ2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24uIEp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjQyLjYyOTg1MzY3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzI0OTI2NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgS0FTQU5fVEFHX0tFUk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaC00LVxcbmluY2x1ZGUvbGludXgva2FzYW4tdGFncy5oOjU6I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMXFx0MHhGRiAvKiBuYXRpdmUga2VybmVsIHBvaW50ZXJzIHRhZyAqL1xcbmluY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTYtI2RlZmluZSBLQVNBTl9UQUdfSU5WQUxJRFxcdDB4RkUgLyogaW5hY2Nlc3NpYmxlIG1lbW9yeSB0YWcgKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmg6NTojZGVmaW5lIEtBU0FOX1RBR19LRVJORUxcXHQweEZGIC8qIG5hdGl2ZSBrZXJuZWwgcG9pbnRlcnMgdGFnICovXFxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNi0jZGVmaW5lIEtBU0FOX1RBR19JTlZBTElEXFx0MHhGRSAvKiBpbmFjY2Vzc2libGUgbWVtb3J5IHRhZyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwOTo0OTo0NS45NTQ3ODQ4ODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQwMDQyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIHdpdGggTm8gRnVuY3Rpb25hbCBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCB0aHJvdWdoIHRoZXNlIGNoYW5nZXMuIEl0J3MgYWxsIGNvc21ldGljLCByZWFsbHkuIFRoZSBjb3JlIGNvbmNlcHQgcmVtYWlucyB1bmNoYW5nZWQuIGBLQVNBTl9UQUdfS0VSTkVMYCBpcyBpbmRlZWQgYDB4RkZgLiBUaGUgc3dpdGNoIGZyb20gYDB4ZmZgIHRvIHRoYXQgc3ltYm9saWMgbmFtZT8gSnVzdCBhIHJlZmFjdG9yLCBub3RoaW5nIHRoYXQgYWZmZWN0cyB0aGUgdW5kZXJseWluZyBiZWhhdmlvci4gU2ltaWxhcmx5LCByZXBsYWNpbmcgYFx1MDAyNiB+KFRIUkVBRF9TSVpFIC0gMSlgIHdpdGggYEFMSUdOX0RPV04oLi4uLCBUSFJFQURfU0laRSlgIGlzIHB1cmVseSBhYm91dCByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LCBub3QgZnVuY3Rpb24uIEFuZCB0aGF0IGV4dHJhY3Rpb24gb2YgYGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmRgPyBBZ2FpbiwganVzdCBhIHJlZmFjdG9yaW5nIHN0ZXAuIFdpdGggbm8gbWF0ZXJpYWwgY2hhbmdlcyB0byBiZWhhdmlvciwgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBvbmUncyBhIHBhc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzEsIk91dHB1dFRva2VucyI6OTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDk6NDk6NDkuODk0ODI5NTc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhh7b4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-04 09:29:43 +0000 UTC FinishedAt: 2026-07-04 09:49:51 +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+CgkJCTx0ZD4yMDI2LzA3LzA0IDA5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIG5vbi1mdW5jdGlvbmFsIHJlZmFjdG9yaW5nOiByZXBsYWNpbmcgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoIEFMSUdOX0RPV04sIHJlcGxhY2luZyBhIG1hZ2ljIG51bWJlciAoMHhmZikgd2l0aCBpdHMgbWFjcm8gZXF1aXZhbGVudCAoS0FTQU5fVEFHX0tFUk5FTCksIGFuZCBleHRyYWN0aW5nIGEgcmVwZWF0ZWQgY29uZGl0aW9uYWwgYmxvY2sgaW50byBhIGhlbHBlciBmdW5jdGlvbi4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA5OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVjNDgyZjdhMDYwY2FmODFkZDM0NGU2MjJjZWZhNGQ4YmJlMThjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDk6NDk6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vY29tbW9uLmMgYi9tbS9rYXNhbi9jb21tb24uY1xuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL2NvbW1vbi5jXG5AQCAtMTE5LDcgJiM0MzsxMTksNyBAQCBhc21saW5rYWdlIHZvaWQga2FzYW5fdW5wb2lzb25fdGFza19zdGFja19iZWxvdyhjb25zdCB2b2lkICp3YXRlcm1hcmspXG4gXHQgKiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGVhcmx5IHJlc3VtZSBjb2RlIHdoaWNoIGhhc24mIzM5O3RcbiBcdCAqIHlldCBzZXQgdXAgdGhlIHBlcmNwdSByZWdpc3RlciAoJWdzKS5cbiBcdCAqL1xuLVx0dm9pZCAqYmFzZSA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyayBcdTAwMjYgfihUSFJFQURfU0laRSAtIDEpKTtcbiYjNDM7XHR2b2lkICpiYXNlID0gKHZvaWQgKilBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyaywgVEhSRUFEX1NJWkUpO1xuIFxuIFx0a2FzYW5fdW5wb2lzb24oYmFzZSwgd2F0ZXJtYXJrIC0gYmFzZSwgZmFsc2UpO1xuIH1cbkBAIC0xODgsNyAmIzQzOzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXG4gXHRcdFx0XHRcdGNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KVxuIHtcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSlcbi1cdFx0cmV0dXJuIDB4ZmY7XG4mIzQzO1x0XHRyZXR1cm4gS0FTQU5fVEFHX0tFUk5FTDtcbiBcbiBcdC8qXG4gXHQgKiBJZiB0aGUgY2FjaGUgbmVpdGhlciBoYXMgYSBjb25zdHJ1Y3RvciBub3IgaGFzIFNMQUJfVFlQRVNBRkVfQllfUkNVXG5AQCAtMzQwLDE0ICYjNDM7MzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCxcbiBcdFx0a2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbiYjNDM7XHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLFxuIFx0XHRcdFx0XHR2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpXG4ge1xuIFx0dTggdGFnO1xuIFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcbiBcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00MDIsOCAmIzQzOzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19yZWR6b25lKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIGNvbnN0IHZvaWQgKm9iamVjdCxcbiBcdFx0XHRcdFx0c2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuIHtcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4mIzQzO1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00NDMsOCAmIzQzOzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2ttYWxsb2NfbGFyZ2UoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSxcbiBcdFx0XHRcdFx0XHRnZnBfdCBmbGFncylcbiB7XG4tXHRpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKVxuLVx0XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpO1xuJiM0MztcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xuIFxuIFx0aWYgKHVubGlrZWx5KHB0ciA9PSBOVUxMKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG5AQCAtNDYwLDggJiM0Mzs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xuIHtcbiBcdHN0cnVjdCBzbGFiICpzbGFiO1xuIFxuLVx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbi1cdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbiYjNDM7XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShvYmplY3QgPT0gWkVST19TSVpFX1BUUikpXG4gXHRcdHJldHVybiAodm9pZCAqKW9iamVjdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzVjNDgyZjdhMDYwY2FmODFkZDM0NGU2MjJjZWZhNGQ4YmJlMThjNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMDk6NDk6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9jb21tb24uYyBiL21tL2thc2FuL2NvbW1vbi5jCmluZGV4IGI3ZDA1YzJhNmQ5M2RkLi4zZTliNmI4ZjU1YjhlMCAxMDA2NDQKLS0tIGEvbW0va2FzYW4vY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va2FzYW4vY29tbW9uLmMKQEAgLTExOSw3ICYjNDM7MTE5LDcgQEAgYXNtbGlua2FnZSB2b2lkIGthc2FuX3VucG9pc29uX3Rhc2tfc3RhY2tfYmVsb3coY29uc3Qgdm9pZCAqd2F0ZXJtYXJrKQogCSAqIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZWFybHkgcmVzdW1lIGNvZGUgd2hpY2ggaGFzbiYjMzk7dAogCSAqIHlldCBzZXQgdXAgdGhlIHBlcmNwdSByZWdpc3RlciAoJWdzKS4KIAkgKi8KLQl2b2lkICpiYXNlID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrICZhbXA7IH4oVEhSRUFEX1NJWkUgLSAxKSk7CiYjNDM7CXZvaWQgKmJhc2UgPSAodm9pZCAqKUFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrLCBUSFJFQURfU0laRSk7CiAKIAlrYXNhbl91bnBvaXNvbihiYXNlLCB3YXRlcm1hcmsgLSBiYXNlLCBmYWxzZSk7CiB9CkBAIC0xODgsNyAmIzQzOzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCiAJCQkJCWNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KQogewogCWlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSkKLQkJcmV0dXJuIDB4ZmY7CiYjNDM7CQlyZXR1cm4gS0FTQU5fVEFHX0tFUk5FTDsKIAogCS8qCiAJICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVQpAQCAtMzQwLDE0ICYjNDM7MzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCwKIAkJa2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKQomIzQzO3sKJiM0MzsJaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkKJiM0MzsJCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7fQomIzQzOwogdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogCQkJCQl2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpCiB7CiAJdTggdGFnOwogCXZvaWQgKnRhZ2dlZF9vYmplY3Q7CiAKLQlpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKQotCQlrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpOwomIzQzOwlrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTsKIAogCWlmICh1bmxpa2VseShvYmplY3QgPT0gTlVMTCkpCiAJCXJldHVybiBOVUxMOwpAQCAtNDAyLDggJiM0Mzs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIGNvbnN0IHZvaWQgKm9iamVjdCwKIAkJCQkJc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQogewotCWlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpCi0JCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7CWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpOwogCiAJaWYgKHVubGlrZWx5KG9iamVjdCA9PSBOVUxMKSkKIAkJcmV0dXJuIE5VTEw7CkBAIC00NDMsOCAmIzQzOzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsCiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvY19sYXJnZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLAogCQkJCQkJZ2ZwX3QgZmxhZ3MpCiB7Ci0JaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkKLQkJa2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTsKJiM0MzsJa2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7CiAKIAlpZiAodW5saWtlbHkocHRyID09IE5VTEwpKQogCQlyZXR1cm4gTlVMTDsKQEAgLTQ2MCw4ICYjNDM7NDYzLDcgQEAgdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2tyZWFsbG9jKGNvbnN0IHZvaWQgKm9iamVjdCwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWcKIHsKIAlzdHJ1Y3Qgc2xhYiAqc2xhYjsKIAotCWlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpCi0JCWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7CiYjNDM7CWthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpOwogCiAJaWYgKHVubGlrZWx5KG9iamVjdCA9PSBaRVJPX1NJWkVfUFRSKSkKIAkJcmV0dXJuICh2b2lkICopb2JqZWN0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEtBU0FOIGZvciBDbGFyaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtBU0FOIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBtbS9rYXNhbi9jb21tb24uY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgZG9pbmcgc29tZSBob3VzZSBjbGVhbmluZy4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3Jpbmcgb2YgYGthc2FuX3VucG9pc29uX3Rhc2tfc3RhY2tfYmVsb3dgOiB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gd2l0aCBgQUxJR05fRE9XTmAsIHdoaWNoIGlzIG11Y2ggY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZS4gR29vZC4gVGhlbiBpbiBgYXNzaWduX3RhZ2AsIHRoZXkmIzM5O3ZlIGNoYW5nZWQgYDB4ZmZgIHRvIGBLQVNBTl9UQUdfS0VSTkVMYC4gVGhpcyBpcyBwcm9iYWJseSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgdG9vLiBJdCYjMzk7cyBiZXR0ZXIgdG8gdXNlIGEgc3ltYm9saWMgY29uc3RhbnQuCgpBbmQgbGFzdGx5LCB0aGUgcGF0Y2ggZXh0cmFjdHMgdGhpcyBgaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkga2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtgIGJpdCBmcm9tIGEgaGFuZGZ1bCBvZiBhbGxvY2F0aW9uIGZ1bmN0aW9ucyDigJMgYF9fa2FzYW5fc2xhYl9hbGxvY2AsIGBfX2thc2FuX2ttYWxsb2NgLCBldGMuIOKAkyBhbmQgcHV0cyBpdCBpbnRvIGl0cyBvd24gaGVscGVyLCBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGAuIFNtYXJ0LiBDZW50cmFsaXppbmcgdGhpcyBraW5kIG9mIGNvbmRpdGlvbmFsIGxvZ2ljIG1ha2VzIGl0IGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4gSXQmIzM5O3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgoKQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuIENoYW5naW5nIGAweGZmYCB0byBgS0FTQU5fVEFHX0tFUk5FTGAuLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgS0FTQU5fVEFHX0tFUk5FTGAgYWN0dWFsbHkgKmlzKiBgMHhmZmAuIEkgbWVhbiwgSSBhc3N1bWUgaXQgaXMsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uLiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTQtXG5pbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaDo1OiNkZWZpbmUgS0FTQU5fVEFHX0tFUk5FTFx0MHhGRiAvKiBuYXRpdmUga2VybmVsIHBvaW50ZXJzIHRhZyAqL1xuaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNi0jZGVmaW5lIEtBU0FOX1RBR19JTlZBTElEXHQweEZFIC8qIGluYWNjZXNzaWJsZSBtZW1vcnkgdGFnICovXG4tLVxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNC1cbnRvb2xzL2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oOjU6I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMXHQweEZGIC8qIG5hdGl2ZSBrZXJuZWwgcG9pbnRlcnMgdGFnICovXG50b29scy9pbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaC02LSNkZWZpbmUgS0FTQU5fVEFHX0lOVkFMSURcdDB4RkUgLyogaW5hY2Nlc3NpYmxlIG1lbW9yeSB0YWcgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxCgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIHdpdGggTm8gRnVuY3Rpb25hbCBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlc2UgY2hhbmdlcy4gSXQmIzM5O3MgYWxsIGNvc21ldGljLCByZWFsbHkuIFRoZSBjb3JlIGNvbmNlcHQgcmVtYWlucyB1bmNoYW5nZWQuIGBLQVNBTl9UQUdfS0VSTkVMYCBpcyBpbmRlZWQgYDB4RkZgLiBUaGUgc3dpdGNoIGZyb20gYDB4ZmZgIHRvIHRoYXQgc3ltYm9saWMgbmFtZT8gSnVzdCBhIHJlZmFjdG9yLCBub3RoaW5nIHRoYXQgYWZmZWN0cyB0aGUgdW5kZXJseWluZyBiZWhhdmlvci4gU2ltaWxhcmx5LCByZXBsYWNpbmcgYCZhbXA7IH4oVEhSRUFEX1NJWkUgLSAxKWAgd2l0aCBgQUxJR05fRE9XTiguLi4sIFRIUkVBRF9TSVpFKWAgaXMgcHVyZWx5IGFib3V0IHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHksIG5vdCBmdW5jdGlvbi4gQW5kIHRoYXQgZXh0cmFjdGlvbiBvZiBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGA/IEFnYWluLCBqdXN0IGEgcmVmYWN0b3Jpbmcgc3RlcC4gV2l0aCBubyBtYXRlcmlhbCBjaGFuZ2VzIHRvIGJlaGF2aW9yLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIG9uZSYjMzk7cyBhIHBhc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDk6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwOTo0OTozNS42Njc1NjUyNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIyNzMxNDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjM1LjY2NzU3MDQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwOTU0Mjk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1YzQ4MmY3YTA2MGNhZjgxZGQzNDRlNjIyY2VmYTRkOGJiZTE4YzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgNCAwOTo0OTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9jb21tb24uYyBiL21tL2thc2FuL2NvbW1vbi5jXFxuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxcbi0tLSBhL21tL2thc2FuL2NvbW1vbi5jXFxuKysrIGIvbW0va2FzYW4vY29tbW9uLmNcXG5AQCAtMTE5LDcgKzExOSw3IEBAIGFzbWxpbmthZ2Ugdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93KGNvbnN0IHZvaWQgKndhdGVybWFyaylcXG4gXFx0ICogYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBlYXJseSByZXN1bWUgY29kZSB3aGljaCBoYXNuJ3RcXG4gXFx0ICogeWV0IHNldCB1cCB0aGUgcGVyY3B1IHJlZ2lzdGVyICglZ3MpLlxcbiBcXHQgKi9cXG4tXFx0dm9pZCAqYmFzZSA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyayBcXHUwMDI2IH4oVEhSRUFEX1NJWkUgLSAxKSk7XFxuK1xcdHZvaWQgKmJhc2UgPSAodm9pZCAqKUFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpd2F0ZXJtYXJrLCBUSFJFQURfU0laRSk7XFxuIFxcbiBcXHRrYXNhbl91bnBvaXNvbihiYXNlLCB3YXRlcm1hcmsgLSBiYXNlLCBmYWxzZSk7XFxuIH1cXG5AQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdTggYXNzaWduX3RhZyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXFxuIFxcdFxcdFxcdFxcdFxcdGNvbnN0IHZvaWQgKm9iamVjdCwgYm9vbCBpbml0KVxcbiB7XFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LQVNBTl9HRU5FUklDKSlcXG4tXFx0XFx0cmV0dXJuIDB4ZmY7XFxuK1xcdFxcdHJldHVybiBLQVNBTl9UQUdfS0VSTkVMO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVVxcbkBAIC0zNDAsMTQgKzM0MCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5wb2lzb25fc2xhYl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmplY3QsXFxuIFxcdFxcdGthc2FuX3NhdmVfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0LCBmbGFncyk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGdmcF90IGZsYWdzKVxcbit7XFxuK1xcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuK1xcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK31cXG4rXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9zbGFiX2FsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcXG4gXFx0XFx0XFx0XFx0XFx0dm9pZCAqb2JqZWN0LCBnZnBfdCBmbGFncywgYm9vbCBpbml0KVxcbiB7XFxuIFxcdHU4IHRhZztcXG4gXFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcXG4gXFxuLVxcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuLVxcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK1xcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KG9iamVjdCA9PSBOVUxMKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuQEAgLTQwMiw4ICs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgY29uc3Qgdm9pZCAqb2JqZWN0LFxcbiBcXHRcXHRcXHRcXHRcXHRzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuIHtcXG4tXFx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcXG4tXFx0XFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcXG4rXFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG5AQCAtNDQzLDggKzQ0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lzb25fa21hbGxvY19sYXJnZV9yZWR6b25lKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXFxuIHZvaWQgKiBfX211c3RfY2hlY2sgX19rYXNhbl9rbWFsbG9jX2xhcmdlKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGdmcF90IGZsYWdzKVxcbiB7XFxuLVxcdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXFxuLVxcdFxcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XFxuK1xcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KHB0ciA9PSBOVUxMKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuQEAgLTQ2MCw4ICs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xcbiB7XFxuIFxcdHN0cnVjdCBzbGFiICpzbGFiO1xcbiBcXG4tXFx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcXG4tXFx0XFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcXG4rXFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkob2JqZWN0ID09IFpFUk9fU0laRV9QVFIpKVxcbiBcXHRcXHRyZXR1cm4gKHZvaWQgKilvYmplY3Q7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjM2Ljg3NzczMDYxMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMTcxMzA5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIG5vbi1mdW5jdGlvbmFsIHJlZmFjdG9yaW5nOiByZXBsYWNpbmcgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoIEFMSUdOX0RPV04sIHJlcGxhY2luZyBhIG1hZ2ljIG51bWJlciAoMHhmZikgd2l0aCBpdHMgbWFjcm8gZXF1aXZhbGVudCAoS0FTQU5fVEFHX0tFUk5FTCksIGFuZCBleHRyYWN0aW5nIGEgcmVwZWF0ZWQgY29uZGl0aW9uYWwgYmxvY2sgaW50byBhIGhlbHBlciBmdW5jdGlvbi4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1YzQ4MmY3YTA2MGNhZjgxZGQzNDRlNjIyY2VmYTRkOGJiZTE4YzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDA5OjQ5OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vY29tbW9uLmMgYi9tbS9rYXNhbi9jb21tb24uY1xuaW5kZXggYjdkMDVjMmE2ZDkzZGQuLjNlOWI2YjhmNTViOGUwIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vY29tbW9uLmNcbisrKyBiL21tL2thc2FuL2NvbW1vbi5jXG5AQCAtMTE5LDcgKzExOSw3IEBAIGFzbWxpbmthZ2Ugdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93KGNvbnN0IHZvaWQgKndhdGVybWFyaylcbiBcdCAqIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZWFybHkgcmVzdW1lIGNvZGUgd2hpY2ggaGFzbid0XG4gXHQgKiB5ZXQgc2V0IHVwIHRoZSBwZXJjcHUgcmVnaXN0ZXIgKCVncykuXG4gXHQgKi9cbi1cdHZvaWQgKmJhc2UgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZyl3YXRlcm1hcmsgXHUwMDI2IH4oVEhSRUFEX1NJWkUgLSAxKSk7XG4rXHR2b2lkICpiYXNlID0gKHZvaWQgKilBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKXdhdGVybWFyaywgVEhSRUFEX1NJWkUpO1xuIFxuIFx0a2FzYW5fdW5wb2lzb24oYmFzZSwgd2F0ZXJtYXJrIC0gYmFzZSwgZmFsc2UpO1xuIH1cbkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIGlubGluZSB1OCBhc3NpZ25fdGFnKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbiBcdFx0XHRcdFx0Y29uc3Qgdm9pZCAqb2JqZWN0LCBib29sIGluaXQpXG4ge1xuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tBU0FOX0dFTkVSSUMpKVxuLVx0XHRyZXR1cm4gMHhmZjtcbitcdFx0cmV0dXJuIEtBU0FOX1RBR19LRVJORUw7XG4gXG4gXHQvKlxuIFx0ICogSWYgdGhlIGNhY2hlIG5laXRoZXIgaGFzIGEgY29uc3RydWN0b3Igbm9yIGhhcyBTTEFCX1RZUEVTQUZFX0JZX1JDVVxuQEAgLTM0MCwxNCArMzQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnBvaXNvbl9zbGFiX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCxcbiBcdFx0a2FzYW5fc2F2ZV9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QsIGZsYWdzKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZ2ZwX3QgZmxhZ3MpXG4re1xuK1x0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbitcdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbit9XG4rXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLFxuIFx0XHRcdFx0XHR2b2lkICpvYmplY3QsIGdmcF90IGZsYWdzLCBib29sIGluaXQpXG4ge1xuIFx0dTggdGFnO1xuIFx0dm9pZCAqdGFnZ2VkX29iamVjdDtcbiBcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4rXHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShvYmplY3QgPT0gTlVMTCkpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTQwMiw4ICs0MDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG9pc29uX2ttYWxsb2NfcmVkem9uZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsXG4gdm9pZCAqIF9fbXVzdF9jaGVjayBfX2thc2FuX2ttYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCBjb25zdCB2b2lkICpvYmplY3QsXG4gXHRcdFx0XHRcdHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbiB7XG4tXHRpZiAoZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZmxhZ3MpKVxuLVx0XHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSgpO1xuK1x0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZChmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkob2JqZWN0ID09IE5VTEwpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC00NDMsOCArNDQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvaXNvbl9rbWFsbG9jX2xhcmdlX3JlZHpvbmUoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSxcbiB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa21hbGxvY19sYXJnZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLFxuIFx0XHRcdFx0XHRcdGdmcF90IGZsYWdzKVxuIHtcbi1cdGlmIChnZnBmbGFnc19hbGxvd19ibG9ja2luZyhmbGFncykpXG4tXHRcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKCk7XG4rXHRrYXNhbl9xdWFyYW50aW5lX3JlZHVjZV9jb25kKGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShwdHIgPT0gTlVMTCkpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTQ2MCw4ICs0NjMsNyBAQCB2b2lkICogX19tdXN0X2NoZWNrIF9fa2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ1xuIHtcbiBcdHN0cnVjdCBzbGFiICpzbGFiO1xuIFxuLVx0aWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSlcbi1cdFx0a2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtcbitcdGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmQoZmxhZ3MpO1xuIFxuIFx0aWYgKHVubGlrZWx5KG9iamVjdCA9PSBaRVJPX1NJWkVfUFRSKSlcbiBcdFx0cmV0dXJuICh2b2lkICopb2JqZWN0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDk6NDk6MzYuODc3NzMxNzkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MjExODQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBLQVNBTiBmb3IgQ2xhcml0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS0FTQU4gcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gYG1tL2thc2FuL2NvbW1vbi5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGRvaW5nIHNvbWUgaG91c2UgY2xlYW5pbmcuIEZpcnN0LCBJIHNlZSBhIHJlZmFjdG9yaW5nIG9mIGBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNrX2JlbG93YDogdGhleSdyZSByZXBsYWNpbmcgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gd2l0aCBgQUxJR05fRE9XTmAsIHdoaWNoIGlzIG11Y2ggY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZS4gR29vZC4gVGhlbiBpbiBgYXNzaWduX3RhZ2AsIHRoZXkndmUgY2hhbmdlZCBgMHhmZmAgdG8gYEtBU0FOX1RBR19LRVJORUxgLiBUaGlzIGlzIHByb2JhYmx5IHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSB0b28uIEl0J3MgYmV0dGVyIHRvIHVzZSBhIHN5bWJvbGljIGNvbnN0YW50LlxuXG5BbmQgbGFzdGx5LCB0aGUgcGF0Y2ggZXh0cmFjdHMgdGhpcyBgaWYgKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGZsYWdzKSkga2FzYW5fcXVhcmFudGluZV9yZWR1Y2UoKTtgIGJpdCBmcm9tIGEgaGFuZGZ1bCBvZiBhbGxvY2F0aW9uIGZ1bmN0aW9ucyDigJMgYF9fa2FzYW5fc2xhYl9hbGxvY2AsIGBfX2thc2FuX2ttYWxsb2NgLCBldGMuIOKAkyBhbmQgcHV0cyBpdCBpbnRvIGl0cyBvd24gaGVscGVyLCBga2FzYW5fcXVhcmFudGluZV9yZWR1Y2VfY29uZGAuIFNtYXJ0LiBDZW50cmFsaXppbmcgdGhpcyBraW5kIG9mIGNvbmRpdGlvbmFsIGxvZ2ljIG1ha2VzIGl0IGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4gSXQncyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uXG5cbkJ1dCB3YWl0LCBob2xkIG9uIGEgc2Vjb25kLiBDaGFuZ2luZyBgMHhmZmAgdG8gYEtBU0FOX1RBR19LRVJORUxgLi4uIEkgc2hvdWxkIGNoZWNrIHRoYXQgYEtBU0FOX1RBR19LRVJORUxgIGFjdHVhbGx5ICppcyogYDB4ZmZgLiBJIG1lYW4sIEkgYXNzdW1lIGl0IGlzLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLiBJJ2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24uIEp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA5OjQ5OjQyLjYyOTg1MzY3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzI0OTI2NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgS0FTQU5fVEFHX0tFUk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2thc2FuLXRhZ3MuaC00LVxcbmluY2x1ZGUvbGludXgva2FzYW4tdGFncy5oOjU6I2RlZmluZSBLQVNBTl9UQUdfS0VSTkVMXFx0MHhGRiAvKiBuYXRpdmUga2VybmVsIHBvaW50ZXJzIHRhZyAqL1xcbmluY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTYtI2RlZmluZSBLQVNBTl9UQUdfSU5WQUxJRFxcdDB4RkUgLyogaW5hY2Nlc3NpYmxlIG1lbW9yeSB0YWcgKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgva2FzYW4tdGFncy5oLTQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmg6NTojZGVmaW5lIEtBU0FOX1RBR19LRVJORUxcXHQweEZGIC8qIG5hdGl2ZSBrZXJuZWwgcG9pbnRlcnMgdGFnICovXFxudG9vbHMvaW5jbHVkZS9saW51eC9rYXNhbi10YWdzLmgtNi0jZGVmaW5lIEtBU0FOX1RBR19JTlZBTElEXFx0MHhGRSAvKiBpbmFjY2Vzc2libGUgbWVtb3J5IHRhZyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwOTo0OTo0NS45NTQ3ODQ4ODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQwMDQyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIHdpdGggTm8gRnVuY3Rpb25hbCBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCB0aHJvdWdoIHRoZXNlIGNoYW5nZXMuIEl0J3MgYWxsIGNvc21ldGljLCByZWFsbHkuIFRoZSBjb3JlIGNvbmNlcHQgcmVtYWlucyB1bmNoYW5nZWQuIGBLQVNBTl9UQUdfS0VSTkVMYCBpcyBpbmRlZWQgYDB4RkZgLiBUaGUgc3dpdGNoIGZyb20gYDB4ZmZgIHRvIHRoYXQgc3ltYm9saWMgbmFtZT8gSnVzdCBhIHJlZmFjdG9yLCBub3RoaW5nIHRoYXQgYWZmZWN0cyB0aGUgdW5kZXJseWluZyBiZWhhdmlvci4gU2ltaWxhcmx5LCByZXBsYWNpbmcgYFx1MDAyNiB+KFRIUkVBRF9TSVpFIC0gMSlgIHdpdGggYEFMSUdOX0RPV04oLi4uLCBUSFJFQURfU0laRSlgIGlzIHB1cmVseSBhYm91dCByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LCBub3QgZnVuY3Rpb24uIEFuZCB0aGF0IGV4dHJhY3Rpb24gb2YgYGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlX2NvbmRgPyBBZ2FpbiwganVzdCBhIHJlZmFjdG9yaW5nIHN0ZXAuIFdpdGggbm8gbWF0ZXJpYWwgY2hhbmdlcyB0byBiZWhhdmlvciwgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBvbmUncyBhIHBhc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzEsIk91dHB1dFRva2VucyI6OTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDk6NDk6NDkuODk0ODI5NTc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZzogcmVwbGFjaW5nIGEgYml0d2lzZSBvcGVyYXRpb24gd2l0aCBBTElHTl9ET1dOLCByZXBsYWNpbmcgYSBtYWdpYyBudW1iZXIgKDB4ZmYpIHdpdGggaXRzIG1hY3JvIGVxdWl2YWxlbnQgKEtBU0FOX1RBR19LRVJORUwpLCBhbmQgZXh0cmFjdGluZyBhIHJlcGVhdGVkIGNvbmRpdGlvbmFsIGJsb2NrIGludG8gYSBoZWxwZXIgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2Ygbm9uLWZ1bmN0aW9uYWwgcmVmYWN0b3Jpbmc6IHJlcGxhY2luZyBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGggQUxJR05fRE9XTiwgcmVwbGFjaW5nIGEgbWFnaWMgbnVtYmVyICgweGZmKSB3aXRoIGl0cyBtYWNybyBlcXVpdmFsZW50IChLQVNBTl9UQUdfS0VSTkVMKSwgYW5kIGV4dHJhY3RpbmcgYSByZXBlYXRlZCBjb25kaXRpb25hbCBibG9jayBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhh7b4[1] Phase: Running StartedAt: 2026-07-04 09:50:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhh7b4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-04 09:50:01 +0000 UTC FinishedAt: 2026-07-04 09:50:21 +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,}