Name: series-workflowbkrcl Phase: Failed StartedAt: 2026-08-30 13:17:46 +0000 UTC FinishedAt: 2026-08-30 13:51:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkrcl[0] Phase: Succeeded StartedAt: 2026-08-30 13:17:46 +0000 UTC FinishedAt: 2026-08-30 13:51:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkrcl[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 13:17:46 +0000 UTC FinishedAt: 2026-08-30 13:51:26 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2E2MmI4ODZlMzBkMjQ4NGMwNWY5NzE5YTdjMDA2M2RlZDc5ZGFkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDEzOjE5OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF91YXBzZF9hY3Moc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbiBcdHJldHVybiB1YXBzZF9hY3MgfCB1YXBzZF9hY3MgXHUwMDNjXHUwMDNjIDQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KVxuJiM0MztWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiB7XG4gXHR1OCBieXRlX251bSA9IHBwZV9wb3NfYml0IC8gODtcbiBcdHU4IGJpdF9udW0gPSBwcGVfcG9zX2JpdCAlIDg7XG5AQCAtMTQ2LDYgJiM0MzsxNDYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiBcbiBcdHJldHVybiByZXM7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCk7XG4gXG4gc3RhdGljIHZvaWQgaXdsX21sZF9wYXJzZV9wcGUoc3RydWN0IGl3bF9tbGQgKm1sZCxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgaXdsX2hlX3BrdF9leHRfdjIgKnBrdF9leHQsIHU4IG5zcyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXG5pbmRleCA5OGQ2OTMyMzVjNjYzLi44NjU5YmI3YmY2Y2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXG5AQCAtMzAwLDQgJiM0MzszMDAsOCBAQCB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tZ210X3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIHZvaWQgaXdsX21sZF9yZW1vdmVfbmFuX21jYXN0X2RhdGFfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGl3bF9tbGRfaW50X3N0YSAqc3RhKTtcbiBcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG4mIzQzO3U4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2VuZGlmIC8qIF9faXdsX21sZF9zdGFfaF9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuaW5kZXggZWZhNjE2MzhiOGVlYi4uMzIwMWRjZTlhNWIwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsNiAmIzQzOzEsNyBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gaXdsbWxkLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB1dGlscy5vIGxpbmsubyByeC5vIGFnZy5vIGxpbmstc2VsZWN0aW9uLm9cbiBpd2xtbGQtdGVzdHMteSAmIzQzOz0gY2hhbl9sb2FkX3RocmVzaC5vXG4mIzQzO2l3bG1sZC10ZXN0cy15ICYjNDM7PSB0bGMubyBzdGEub1xuIFxuIGNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYykvLi4vXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSBpd2xtbGQtdGVzdHMub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42NzU0MDg2NjFhZjI4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xuQEAgLTAsMCAmIzQzOzEsODYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4mIzQzOy8qXG4mIzQzOyAqIEtVbml0IHRlc3RzIGZvciBTVEEgY2FwYWJpbGl0eSBoZWxwZXIgZnVuY3Rpb25zXG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdGEuaFwmIzM0O1xuJiM0MztcbiYjNDM7TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHtcbiYjNDM7XHRjb25zdCBjaGFyICpkZXNjO1xuJiM0MztcdHU4IHBwZVsyXTtcbiYjNDM7XHR1OCBwcGVfcG9zX2JpdDtcbiYjNDM7XHR1OCBleHBlY3RlZF92YWw7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBwZV92YWxfY2FzZSBwcGVfdmFsX2Nhc2VzW10gPSB7XG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtBbGlnbmVkIGluIGJ5dGUgMFwmIzM0OyxcbiYjNDM7XHRcdC5wcGUgPSB7IDBiMTExLCAwIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSAwLFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O1VuYWxpZ25lZCBpbiBieXRlIDBcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjAwMTExMDAwLCAwIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSAzLFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0hpZ2hlc3Qgbm9uLWNyb3NzaW5nIHBvc2l0aW9uXCYjMzQ7LFxuJiM0MztcdFx0LnBwZSA9IHsgMGIxMTEwMDAwMCwgMCB9LFxuJiM0MztcdFx0LnBwZV9wb3NfYml0ID0gNSxcbiYjNDM7XHRcdC5leHBlY3RlZF92YWwgPSA3LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtWYWx1ZSBpbiBieXRlIDFcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwLCAwYjAwMDAwMDExIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA4LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDMsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYXQgYml0IDZcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjAxMDAwMDAwLCAwYjAwMDAwMDAxIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA2LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDUsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYXQgYml0IDdcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjEwMDAwMDAwLCAwYjAwMDAwMDExIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA3LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYWxsIHplcm9zXCYjMzQ7LFxuJiM0MztcdFx0LnBwZSA9IHsgMCwgMCB9LFxuJiM0MztcdFx0LnBwZV9wb3NfYml0ID0gNixcbiYjNDM7XHRcdC5leHBlY3RlZF92YWwgPSAwLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKHBwZV92YWxfY2FzZXMsIHBwZV92YWxfY2FzZXMsIGRlc2MpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlICp0YyA9IHRlc3QtXHUwMDNlcGFyYW1fdmFsdWU7XG4mIzQzO1x0dTggcHBlW10gPSB7IHRjLVx1MDAzZXBwZVswXSwgdGMtXHUwMDNlcHBlWzFdIH07XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy1cdTAwM2VleHBlY3RlZF92YWwsXG4mIzQzO1x0XHRcdGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwocHBlLCB0Yy1cdTAwM2VwcGVfcG9zX2JpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hlX2dldF9wcGVfdmFsLCBwcGVfdmFsX2Nhc2VzX2dlbl9wYXJhbXMpLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBwcGVfdmFsX3Rlc3RzID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7aXdsX21sZF9wcGVfdmFsX3Rlc3RzXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiYjNDM7LypcbiYjNDM7ICogS1VuaXQgdGVzdHMgZm9yIFRMQyByYXRlLXNlbGVjdGlvbiBoZWxwZXIgZnVuY3Rpb25zXG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0bGMuaFwmIzM0O1xuJiM0MztcbiYjNDM7TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSB7XG4mIzQzO1x0Y29uc3QgY2hhciAqZGVzYztcbiYjNDM7XHRpbnQgbnNzO1xuJiM0MztcdHUxNiByeF9tY3NfbWFwO1xuJiM0MztcdGludCBleHBlY3RlZF9tY3M7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgaGlnaGVzdF9md19tY3NfY2FzZXNbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O05TUyAxIHN1cHBvcnRzIE1DUyAwLTdcJiMzNDssXG4mIzQzO1x0XHQubnNzID0gMSxcbiYjNDM7XHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzcsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M3LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtOU1MgMSBzdXBwb3J0cyBNQ1MgMC04XCYjMzQ7LFxuJiM0MztcdFx0Lm5zcyA9IDEsXG4mIzQzO1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxuJiM0MztcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7TlNTIDEgc3VwcG9ydHMgTUNTIDAtOVwmIzM0OyxcbiYjNDM7XHRcdC5uc3MgPSAxLFxuJiM0MztcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSxcbiYjNDM7XHRcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzksXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O05TUyAyIHN1cHBvcnRzIE1DUyAwLTlcJiMzNDssXG4mIzQzO1x0XHQubnNzID0gMixcbiYjNDM7XHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzkgXHUwMDNjXHUwMDNjIDIsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XCYjMzQ7LFxuJiM0MztcdFx0Lm5zcyA9IDQsXG4mIzQzO1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84IFx1MDAzY1x1MDAzYyA2LFxuJiM0MztcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcbiYjNDM7XHR9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7S1VOSVRfQVJSQVlfUEFSQU1fREVTQyhoaWdoZXN0X2Z3X21jc19jYXNlcywgaGlnaGVzdF9md19tY3NfY2FzZXMsIGRlc2MpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oaWdoZXN0X2Z3X21jcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgdmh0X2NhcCA9IHtcbiYjNDM7XHRcdC52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy1cdTAwM2VyeF9tY3NfbWFwKSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXHUwMDNlZXhwZWN0ZWRfbWNzLFxuJiM0MztcdFx0XHRpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhcdTAwMjZ2aHRfY2FwLCB0Yy1cdTAwM2Vuc3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcbiYjNDM7XHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGlnaGVzdF9md19tY3MsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzX2dlbl9wYXJhbXMpLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBoaWdoZXN0X2Z3X21jc190ZXN0cyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O2l3bF9tbGRfaGlnaGVzdF9md19tY3NfdGVzdHNcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSB7XG4mIzQzO1x0Y29uc3QgY2hhciAqZGVzYztcbiYjNDM7XHR1OCByeF9uc3M7XG4mIzQzO1x0dTggdHhfbnNzO1xuJiM0MztcdHU4IGV4cGVjdGVkX25zcztcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0ge1xuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7UlggbGltaXRlZFwmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDAyLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4ODAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMixcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7VFggbGltaXRlZFwmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDBmLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4MzAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMyxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7RXF1YWxcJiMzNDssXG4mIzQzO1x0XHQucnhfbnNzID0gMHgwNSxcbiYjNDM7XHRcdC50eF9uc3MgPSAweDUwLFxuJiM0MztcdFx0LmV4cGVjdGVkX25zcyA9IDUsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0JvdGggemVyb1wmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDAwLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4MDAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMCxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7Qm90aCBtYXhcJiMzNDssXG4mIzQzO1x0XHQucnhfbnNzID0gMHgwZixcbiYjNDM7XHRcdC50eF9uc3MgPSAweGYwLFxuJiM0MztcdFx0LmV4cGVjdGVkX25zcyA9IDE1LFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKGVodF9tYXhfbnNzX2Nhc2VzLCBlaHRfbWF4X25zc19jYXNlcywgZGVzYyk7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2VodF9tYXhfbnNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBlaHRfbWF4X25zc19jYXNlICp0YyA9IHRlc3QtXHUwMDNlcGFyYW1fdmFsdWU7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy1cdTAwM2VleHBlY3RlZF9uc3MsXG4mIzQzO1x0XHRcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHRjLVx1MDAzZXJ4X25zcywgdGMtXHUwMDNldHhfbnNzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBlaHRfbWF4X25zc190ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2VodF9tYXhfbnNzLCBlaHRfbWF4X25zc19jYXNlc19nZW5fcGFyYW1zKSxcbiYjNDM7XHR7fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gZWh0X21heF9uc3NfdGVzdF9jYXNlcyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO2t1bml0X3Rlc3Rfc3VpdGUoZWh0X21heF9uc3NfdGVzdHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbmluZGV4IGI2YzJmYTM2NjRjYmMuLjcyZGRiNzg4YWQzZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF9md19zZ2koc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhKVxuIFx0cmV0dXJuIHNnaV9jaHdpZHRocztcbiB9XG4gXG4tc3RhdGljIGludFxuJiM0MztWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgaW50XG4gaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcbiBcdFx0XHQgICBpbnQgbnNzKVxuIHtcbkBAIC0xODMsNiAmIzQzOzE4Myw3IEBAIGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXAsXG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyk7XG4gXG4gc3RhdGljIHZvaWRcbiBpd2xfbWxkX2ZpbGxfdmh0X3JhdGVzKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSxcbkBAIC0zMTYsNyAmIzQzOzMxNyw3IEBAIGl3bF9tbGRfZ2V0X2VodF9tY3Nfb2ZfYncoZW51bSBJV0xfVExDX01DU19QRVJfQlcgYncsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcbiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKVxuIHtcbiBcdHU4IHR4ID0gdThfZ2V0X2JpdHModHhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfVFgpO1xuIFx0dTggcnggPSB1OF9nZXRfYml0cyhyeF9uc3MsIElFRUU4MDIxMV9FSFRfTUNTX05TU19SWCk7XG5AQCAtMzI1LDYgJiM0MzszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXG4gXHQgKi9cbiBcdHJldHVybiBtaW4odHgsIHJ4KTtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9laHRfbWF4X25zcyk7XG4gXG4gI2RlZmluZSBNQVhfTlNTX01DUyhtY3NfbnVtLCByeCwgdHgpIFxcXG4gXHRpd2xfbWxkX2dldF9laHRfbWF4X25zcygocngpLVx1MDAzZXJ4X3R4X21jcyAjI21jc19udW0jIyBfbWF4X25zcywgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXG5pbmRleCBjN2ZmMjA5YzlhYjY2Li4yNjlkMGYyYTYxZWY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXG5AQCAtMjMsNCAmIzQzOzIzLDEwIEBAIGludCBpd2xfbWxkX3NlbmRfdGxjX2RoYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCB1OCBzdGFfaWQsIHUzMiB0eXBlLCB1MzIgZGF0YSk7XG4gdm9pZCBpd2xfbWxkX3RsY191cGRhdGVfcGh5KHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZik7XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxuJiM0MztpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcbiYjNDM7XHRcdFx0ICAgICAgIGludCBuc3MpO1xuJiM0Mzt1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjZW5kaWYgLyogX19pd2xfbWxkX3RsY19oX18gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxMzoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYTYyYjg4NmUzMGQyNDg0YzA1Zjk3MTlhN2MwMDYzZGVkNzlkYWQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTM6MTk6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF91YXBzZF9hY3Moc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSkKIAlyZXR1cm4gdWFwc2RfYWNzIHwgdWFwc2RfYWNzICZsdDsmbHQ7IDQ7CiB9CiAKLXN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQomIzQzO1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQogewogCXU4IGJ5dGVfbnVtID0gcHBlX3Bvc19iaXQgLyA4OwogCXU4IGJpdF9udW0gPSBwcGVfcG9zX2JpdCAlIDg7CkBAIC0xNDYsNiAmIzQzOzE0Niw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQogCiAJcmV0dXJuIHJlczsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCk7CiAKIHN0YXRpYyB2b2lkIGl3bF9tbGRfcGFyc2VfcHBlKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJCQkgICAgICBzdHJ1Y3QgaXdsX2hlX3BrdF9leHRfdjIgKnBrdF9leHQsIHU4IG5zcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKaW5kZXggOThkNjkzMjM1YzY2My4uODY1OWJiN2JmNmNmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKQEAgLTMwMCw0ICYjNDM7MzAwLDggQEAgdm9pZCBpd2xfbWxkX3JlbW92ZV9uYW5fbWdtdF9zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwKIHZvaWQgaXdsX21sZF9yZW1vdmVfbmFuX21jYXN0X2RhdGFfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJCQkJICAgICAgIHN0cnVjdCBpd2xfbWxkX2ludF9zdGEgKnN0YSk7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykKJiM0Mzt1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KTsKJiM0MzsjZW5kaWYKJiM0MzsKICNlbmRpZiAvKiBfX2l3bF9tbGRfc3RhX2hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQppbmRleCBlZmE2MTYzOGI4ZWViLi4zMjAxZGNlOWE1YjAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQpAQCAtMSw2ICYjNDM7MSw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogaXdsbWxkLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB1dGlscy5vIGxpbmsubyByeC5vIGFnZy5vIGxpbmstc2VsZWN0aW9uLm8KIGl3bG1sZC10ZXN0cy15ICYjNDM7PSBjaGFuX2xvYWRfdGhyZXNoLm8KJiM0Mztpd2xtbGQtdGVzdHMteSAmIzQzOz0gdGxjLm8gc3RhLm8KIAogY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKS8uLi8KIG9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSAmIzQzOz0gaXdsbWxkLXRlc3RzLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNjc1NDA4NjYxYWYyOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jCkBAIC0wLDAgJiM0MzsxLDg2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlCiYjNDM7LyoKJiM0MzsgKiBLVW5pdCB0ZXN0cyBmb3IgU1RBIGNhcGFiaWxpdHkgaGVscGVyIGZ1bmN0aW9ucwomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O2t1bml0L3Rlc3QuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0YS5oJiMzNDsKJiM0MzsKJiM0MztNT0RVTEVfSU1QT1JUX05TKCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkcmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IHBwZV92YWxfY2FzZSB7CiYjNDM7CWNvbnN0IGNoYXIgKmRlc2M7CiYjNDM7CXU4IHBwZVsyXTsKJiM0MzsJdTggcHBlX3Bvc19iaXQ7CiYjNDM7CXU4IGV4cGVjdGVkX3ZhbDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHBwZV92YWxfY2FzZXNbXSA9IHsKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O0FsaWduZWQgaW4gYnl0ZSAwJiMzNDssCiYjNDM7CQkucHBlID0geyAwYjExMSwgMCB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gMCwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7VW5hbGlnbmVkIGluIGJ5dGUgMCYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIwMDExMTAwMCwgMCB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gMywKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7SGlnaGVzdCBub24tY3Jvc3NpbmcgcG9zaXRpb24mIzM0OywKJiM0MzsJCS5wcGUgPSB7IDBiMTExMDAwMDAsIDAgfSwKJiM0MzsJCS5wcGVfcG9zX2JpdCA9IDUsCiYjNDM7CQkuZXhwZWN0ZWRfdmFsID0gNywKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O1ZhbHVlIGluIGJ5dGUgMSYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMCwgMGIwMDAwMDAxMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gOCwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSAzLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhdCBiaXQgNiYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIwMTAwMDAwMCwgMGIwMDAwMDAwMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gNiwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA1LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhdCBiaXQgNyYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIxMDAwMDAwMCwgMGIwMDAwMDAxMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gNywKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhbGwgemVyb3MmIzM0OywKJiM0MzsJCS5wcGUgPSB7IDAsIDAgfSwKJiM0MzsJCS5wcGVfcG9zX2JpdCA9IDYsCiYjNDM7CQkuZXhwZWN0ZWRfdmFsID0gMCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzOwomIzQzO0tVTklUX0FSUkFZX1BBUkFNX0RFU0MocHBlX3ZhbF9jYXNlcywgcHBlX3ZhbF9jYXNlcywgZGVzYyk7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlICp0YyA9IHRlc3QtJmd0O3BhcmFtX3ZhbHVlOwomIzQzOwl1OCBwcGVbXSA9IHsgdGMtJmd0O3BwZVswXSwgdGMtJmd0O3BwZVsxXSB9OwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtJmd0O2V4cGVjdGVkX3ZhbCwKJiM0MzsJCQlpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHBwZSwgdGMtJmd0O3BwZV9wb3NfYml0KSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBwcGVfdmFsX3Rlc3RfY2FzZXNbXSA9IHsKJiM0MzsJS1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hlX2dldF9wcGVfdmFsLCBwcGVfdmFsX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcHBlX3ZhbF90ZXN0cyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2l3bF9tbGRfcHBlX3ZhbF90ZXN0cyYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHBwZV92YWxfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUocHBlX3ZhbF90ZXN0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjcwNGExYmIxYTVlYWQKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2UKJiM0MzsvKgomIzQzOyAqIEtVbml0IHRlc3RzIGZvciBUTEMgcmF0ZS1zZWxlY3Rpb24gaGVscGVyIGZ1bmN0aW9ucwomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O2t1bml0L3Rlc3QuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3RsYy5oJiMzNDsKJiM0MzsKJiM0MztNT0RVTEVfSU1QT1JUX05TKCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkcmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgewomIzQzOwljb25zdCBjaGFyICpkZXNjOwomIzQzOwlpbnQgbnNzOwomIzQzOwl1MTYgcnhfbWNzX21hcDsKJiM0MzsJaW50IGV4cGVjdGVkX21jczsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSBoaWdoZXN0X2Z3X21jc19jYXNlc1tdID0gewomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDEgc3VwcG9ydHMgTUNTIDAtNyYjMzQ7LAomIzQzOwkJLm5zcyA9IDEsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF83LAomIzQzOwkJLmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTNywKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O05TUyAxIHN1cHBvcnRzIE1DUyAwLTgmIzM0OywKJiM0MzsJCS5uc3MgPSAxLAomIzQzOwkJLnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOCwKJiM0MzsJCS5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzgsCiYjNDM7CX0sCiYjNDM7CXsKJiM0MzsJCS5kZXNjID0gJiMzNDtOU1MgMSBzdXBwb3J0cyBNQ1MgMC05JiMzNDssCiYjNDM7CQkubnNzID0gMSwKJiM0MzsJCS5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzksCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDIgc3VwcG9ydHMgTUNTIDAtOSYjMzQ7LAomIzQzOwkJLm5zcyA9IDIsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF85ICZsdDsmbHQ7IDIsCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDQgc3VwcG9ydHMgTUNTIDAtOCYjMzQ7LAomIzQzOwkJLm5zcyA9IDQsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84ICZsdDsmbHQ7IDYsCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LAomIzQzOwl9LAomIzQzO307CiYjNDM7CiYjNDM7S1VOSVRfQVJSQVlfUEFSQU1fREVTQyhoaWdoZXN0X2Z3X21jc19jYXNlcywgaGlnaGVzdF9md19tY3NfY2FzZXMsIGRlc2MpOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfaGlnaGVzdF9md19tY3Moc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgKnRjID0gdGVzdC0mZ3Q7cGFyYW1fdmFsdWU7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgdmh0X2NhcCA9IHsKJiM0MzsJCS52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy0mZ3Q7cnhfbWNzX21hcCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy0mZ3Q7ZXhwZWN0ZWRfbWNzLAomIzQzOwkJCWl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKCZhbXA7dmh0X2NhcCwgdGMtJmd0O25zcykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgaGlnaGVzdF9md19tY3NfdGVzdF9jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGlnaGVzdF9md19tY3MsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgaGlnaGVzdF9md19tY3NfdGVzdHMgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtpd2xfbWxkX2hpZ2hlc3RfZndfbWNzX3Rlc3RzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gaGlnaGVzdF9md19tY3NfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUoaGlnaGVzdF9md19tY3NfdGVzdHMpOwomIzQzOwomIzQzO3N0cnVjdCBlaHRfbWF4X25zc19jYXNlIHsKJiM0MzsJY29uc3QgY2hhciAqZGVzYzsKJiM0MzsJdTggcnhfbnNzOwomIzQzOwl1OCB0eF9uc3M7CiYjNDM7CXU4IGV4cGVjdGVkX25zczsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0gewomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7UlggbGltaXRlZCYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MDIsCiYjNDM7CQkudHhfbnNzID0gMHg4MCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAyLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7VFggbGltaXRlZCYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MGYsCiYjNDM7CQkudHhfbnNzID0gMHgzMCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAzLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7RXF1YWwmIzM0OywKJiM0MzsJCS5yeF9uc3MgPSAweDA1LAomIzQzOwkJLnR4X25zcyA9IDB4NTAsCiYjNDM7CQkuZXhwZWN0ZWRfbnNzID0gNSwKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O0JvdGggemVybyYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MDAsCiYjNDM7CQkudHhfbnNzID0gMHgwMCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAwLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Qm90aCBtYXgmIzM0OywKJiM0MzsJCS5yeF9uc3MgPSAweDBmLAomIzQzOwkJLnR4X25zcyA9IDB4ZjAsCiYjNDM7CQkuZXhwZWN0ZWRfbnNzID0gMTUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0MzsKJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKGVodF9tYXhfbnNzX2Nhc2VzLCBlaHRfbWF4X25zc19jYXNlcywgZGVzYyk7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9laHRfbWF4X25zcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSAqdGMgPSB0ZXN0LSZndDtwYXJhbV92YWx1ZTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLSZndDtleHBlY3RlZF9uc3MsCiYjNDM7CQkJaXdsX21sZF9nZXRfZWh0X21heF9uc3ModGMtJmd0O3J4X25zcywgdGMtJmd0O3R4X25zcykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFX1BBUkFNKHRlc3RfZWh0X21heF9uc3MsIGVodF9tYXhfbnNzX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gZWh0X21heF9uc3NfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUoZWh0X21heF9uc3NfdGVzdHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwppbmRleCBiNmMyZmEzNjY0Y2JjLi43MmRkYjc4OGFkM2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwpAQCAtMTYxLDcgJiM0MzsxNjEsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZndfc2dpKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSkKIAlyZXR1cm4gc2dpX2Nod2lkdGhzOwogfQogCi1zdGF0aWMgaW50CiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGludAogaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCwKIAkJCSAgIGludCBuc3MpCiB7CkBAIC0xODMsNiAmIzQzOzE4Myw3IEBAIGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXAsCiAKIAlyZXR1cm4gMDsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MpOwogCiBzdGF0aWMgdm9pZAogaXdsX21sZF9maWxsX3ZodF9yYXRlcyhzdHJ1Y3QgaXdsX21sZF90bGNfc3RhX2NhcGEgKmNhcGEsCkBAIC0zMTYsNyAmIzQzOzMxNyw3IEBAIGl3bF9tbGRfZ2V0X2VodF9tY3Nfb2ZfYncoZW51bSBJV0xfVExDX01DU19QRVJfQlcgYncsCiAJfQogfQogCi1zdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpCiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKQogewogCXU4IHR4ID0gdThfZ2V0X2JpdHModHhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfVFgpOwogCXU4IHJ4ID0gdThfZ2V0X2JpdHMocnhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfUlgpOwpAQCAtMzI1LDYgJiM0MzszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpCiAJICovCiAJcmV0dXJuIG1pbih0eCwgcngpOwogfQomIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9laHRfbWF4X25zcyk7CiAKICNkZWZpbmUgTUFYX05TU19NQ1MobWNzX251bSwgcngsIHR4KSBcCiAJaXdsX21sZF9nZXRfZWh0X21heF9uc3MoKHJ4KS0mZ3Q7cnhfdHhfbWNzICMjbWNzX251bSMjIF9tYXhfbnNzLCBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCmluZGV4IGM3ZmYyMDljOWFiNjYuLjI2OWQwZjJhNjFlZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCkBAIC0yMyw0ICYjNDM7MjMsMTAgQEAgaW50IGl3bF9tbGRfc2VuZF90bGNfZGhjKHN0cnVjdCBpd2xfbWxkICptbGQsIHU4IHN0YV9pZCwgdTMyIHR5cGUsIHUzMiBkYXRhKTsKIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQkJICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZik7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykKJiM0MztpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCwKJiM0MzsJCQkgICAgICAgaW50IG5zcyk7CiYjNDM7dTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpOwomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzcxCgkJCQkJCQlvdXRwdXQ6IDg3CgkJCQkJCQl0aG91Z2h0czogMTAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogaXdsd2lmaSBNTEQgS1VuaXQgVGVzdCBBZGRpdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIEtVbml0IHRlc3RzIHRvIHRoZSBpd2x3aWZpIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGRyaXZlci4gVGhlIGtleSBmaWxlcyBpbXBhY3RlZCBhcmUgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIGFuZCBoZXJlJiMzOTtzIHdoeToKCkZpcnN0LCB0aGVyZSBhcmUgKm5vKiBmdW5jdGlvbmFsIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIHZpc2liaWxpdHkgb2YgZXhpc3RpbmcgaGVscGVyIGZ1bmN0aW9uczogYGl3bF9tbGRfaGVfZ2V0X3BwZV92YWxgLCBgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3NgLCBhbmQgYGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzYC4gVGhlc2Ugd2VyZSBtYWRlIGBWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVRgIGFuZCBgRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUYCwgd2hpY2gsIGFzIEkga25vdywgaXMgcHJlY2lzZWx5IGZvciBtYWtpbmcgdGhlbSBhY2Nlc3NpYmxlIHRvIHRoZSBuZXcgS1VuaXQgdGVzdCBtb2R1bGUuIFRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgaXNuJiMzOTt0IHRvdWNoZWQgYXQgYWxsLgoKU2Vjb25kLCB0aGUgYnVsayBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgS1VuaXQgdGVzdCBmaWxlcywgc3BlY2lmaWNhbGx5IGBzdGEuY2AgYW5kIGB0bGMuY2AgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL2AuICBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGZvciB0ZXN0IGNvdmVyYWdlLgoKVGhpcmQsIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBiZWluZyBhbiBJbnRlbCBXaS1GaSBkcml2ZXIsIHJlbGllcyBvbiAqYWN0dWFsKiBoYXJkd2FyZS4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHByYWN0aWNhbGx5IGVtdWxhdGVkIHdpdGggZnVsbCBmaWRlbGl0eSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIHdoaWNoIGlzIHdoYXQgd2Ugd291bGQgbmVlZCBmb3IgZWZmZWN0aXZlIGZ1enppbmcgdmlhIFN5emthbGxlciBvciBzaW1pbGFyIHRvb2xzLiBUaGlzIGxpbWl0cyB0aGUgc2NvcGUgb2YgYW55IHBvdGVudGlhbCBmdXp6aW5nLgoKTXkgcmVhZGluZyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGFsaWducyB3aXRoIHRoaXMgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmVuJiMzOTt0IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGVzdHMgYW5kIG5vdCBmdW5jdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi4KClRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0IGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzoxOTowMS4zNTkwMjI5ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0MDkxNDI1NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjE5OjAxLjM1OTAyNzYxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMjgxNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2E2MmI4ODZlMzBkMjQ4NGMwNWY5NzE5YTdjMDA2M2RlZDc5ZGFkMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxMzoxOTowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jXFxuaW5kZXggNzk1N2FjMTFiMGNkNS4uZmQwY2VlOWE5MmI1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jXFxuQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfdWFwc2RfYWNzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuIFxcdHJldHVybiB1YXBzZF9hY3MgfCB1YXBzZF9hY3MgXFx1MDAzY1xcdTAwM2MgNDtcXG4gfVxcbiBcXG4tc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KVxcbiB7XFxuIFxcdHU4IGJ5dGVfbnVtID0gcHBlX3Bvc19iaXQgLyA4O1xcbiBcXHR1OCBiaXRfbnVtID0gcHBlX3Bvc19iaXQgJSA4O1xcbkBAIC0xNDYsNiArMTQ2LDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXFxuIFxcbiBcXHRyZXR1cm4gcmVzO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2hlX2dldF9wcGVfdmFsKTtcXG4gXFxuIHN0YXRpYyB2b2lkIGl3bF9tbGRfcGFyc2VfcHBlKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfaGVfcGt0X2V4dF92MiAqcGt0X2V4dCwgdTggbnNzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXFxuaW5kZXggOThkNjkzMjM1YzY2My4uODY1OWJiN2JmNmNmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXFxuQEAgLTMwMCw0ICszMDAsOCBAQCB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tZ210X3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tY2FzdF9kYXRhX3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGl3bF9tbGRfaW50X3N0YSAqc3RhKTtcXG4gXFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbit1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KTtcXG4rI2VuZGlmXFxuK1xcbiAjZW5kaWYgLyogX19pd2xfbWxkX3N0YV9oX18gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IGVmYTYxNjM4YjhlZWIuLjMyMDFkY2U5YTViMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxcbkBAIC0xLDYgKzEsNyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiBpd2xtbGQtdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gdXRpbHMubyBsaW5rLm8gcngubyBhZ2cubyBsaW5rLXNlbGVjdGlvbi5vXFxuIGl3bG1sZC10ZXN0cy15ICs9IGNoYW5fbG9hZF90aHJlc2gub1xcbitpd2xtbGQtdGVzdHMteSArPSB0bGMubyBzdGEub1xcbiBcXG4gY2NmbGFncy15ICs9IC1JJChzcmMpLy4uL1xcbiBvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgKz0gaXdsbWxkLXRlc3RzLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjc1NDA4NjYxYWYyOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xcbkBAIC0wLDAgKzEsODYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuKy8qXFxuKyAqIEtVbml0IHRlc3RzIGZvciBTVEEgY2FwYWJpbGl0eSBoZWxwZXIgZnVuY3Rpb25zXFxuKyAqXFxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxcbisgKi9cXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJzdGEuaFxcXCJcXG4rXFxuK01PRFVMRV9JTVBPUlRfTlMoXFxcIkVYUE9SVEVEX0ZPUl9LVU5JVF9URVNUSU5HXFxcIik7XFxuK1xcbitzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHtcXG4rXFx0Y29uc3QgY2hhciAqZGVzYztcXG4rXFx0dTggcHBlWzJdO1xcbitcXHR1OCBwcGVfcG9zX2JpdDtcXG4rXFx0dTggZXhwZWN0ZWRfdmFsO1xcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgcHBlX3ZhbF9jYXNlc1tdID0ge1xcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIkFsaWduZWQgaW4gYnl0ZSAwXFxcIixcXG4rXFx0XFx0LnBwZSA9IHsgMGIxMTEsIDAgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gMCxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiVW5hbGlnbmVkIGluIGJ5dGUgMFxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMDAxMTEwMDAsIDAgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gMyxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiSGlnaGVzdCBub24tY3Jvc3NpbmcgcG9zaXRpb25cXFwiLFxcbitcXHRcXHQucHBlID0geyAwYjExMTAwMDAwLCAwIH0sXFxuK1xcdFxcdC5wcGVfcG9zX2JpdCA9IDUsXFxuK1xcdFxcdC5leHBlY3RlZF92YWwgPSA3LFxcbitcXHR9LFxcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIlZhbHVlIGluIGJ5dGUgMVxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDAsIDBiMDAwMDAwMTEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gOCxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDMsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgNlxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMDEwMDAwMDAsIDBiMDAwMDAwMDEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gNixcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDUsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgN1xcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMTAwMDAwMDAsIDBiMDAwMDAwMTEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gNyxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhbGwgemVyb3NcXFwiLFxcbitcXHRcXHQucHBlID0geyAwLCAwIH0sXFxuK1xcdFxcdC5wcGVfcG9zX2JpdCA9IDYsXFxuK1xcdFxcdC5leHBlY3RlZF92YWwgPSAwLFxcbitcXHR9LFxcbit9O1xcbitcXG4rS1VOSVRfQVJSQVlfUEFSQU1fREVTQyhwcGVfdmFsX2Nhc2VzLCBwcGVfdmFsX2Nhc2VzLCBkZXNjKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfaGVfZ2V0X3BwZV92YWwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgKnRjID0gdGVzdC1cXHUwMDNlcGFyYW1fdmFsdWU7XFxuK1xcdHU4IHBwZVtdID0geyB0Yy1cXHUwMDNlcHBlWzBdLCB0Yy1cXHUwMDNlcHBlWzFdIH07XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX3ZhbCxcXG4rXFx0XFx0XFx0aXdsX21sZF9oZV9nZXRfcHBlX3ZhbChwcGUsIHRjLVxcdTAwM2VwcGVfcG9zX2JpdCkpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0VfUEFSQU0odGVzdF9oZV9nZXRfcHBlX3ZhbCwgcHBlX3ZhbF9jYXNlc19nZW5fcGFyYW1zKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHBwZV92YWxfdGVzdHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bF9tbGRfcHBlX3ZhbF90ZXN0c1xcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuY1xcbkBAIC0wLDAgKzEsMTM4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbisvKlxcbisgKiBLVW5pdCB0ZXN0cyBmb3IgVExDIHJhdGUtc2VsZWN0aW9uIGhlbHBlciBmdW5jdGlvbnNcXG4rICpcXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uXFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNja3VuaXQvdGVzdC5oXFx1MDAzZVxcbitcXG4rI2luY2x1ZGUgXFxcInRsYy5oXFxcIlxcbitcXG4rTU9EVUxFX0lNUE9SVF9OUyhcXFwiRVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcXFwiKTtcXG4rXFxuK3N0cnVjdCBoaWdoZXN0X2Z3X21jc19jYXNlIHtcXG4rXFx0Y29uc3QgY2hhciAqZGVzYztcXG4rXFx0aW50IG5zcztcXG4rXFx0dTE2IHJ4X21jc19tYXA7XFxuK1xcdGludCBleHBlY3RlZF9tY3M7XFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgaGlnaGVzdF9md19tY3NfY2FzZXNbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgMSBzdXBwb3J0cyBNQ1MgMC03XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDEsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzcsXFxuK1xcdFxcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiTlNTIDEgc3VwcG9ydHMgTUNTIDAtOFxcXCIsXFxuK1xcdFxcdC5uc3MgPSAxLFxcbitcXHRcXHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxcbitcXHRcXHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxcbitcXHR9LFxcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIk5TUyAxIHN1cHBvcnRzIE1DUyAwLTlcXFwiLFxcbitcXHRcXHQubnNzID0gMSxcXG4rXFx0XFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSxcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgMiBzdXBwb3J0cyBNQ1MgMC05XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDIsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzkgXFx1MDAzY1xcdTAwM2MgMixcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDQsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzggXFx1MDAzY1xcdTAwM2MgNixcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcXG4rXFx0fSxcXG4rfTtcXG4rXFxuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoaGlnaGVzdF9md19tY3NfY2FzZXMsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzLCBkZXNjKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfaGlnaGVzdF9md19tY3Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBoaWdoZXN0X2Z3X21jc19jYXNlICp0YyA9IHRlc3QtXFx1MDAzZXBhcmFtX3ZhbHVlO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwIHZodF9jYXAgPSB7XFxuK1xcdFxcdC52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy1cXHUwMDNlcnhfbWNzX21hcCksXFxuK1xcdH07XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX21jcyxcXG4rXFx0XFx0XFx0aXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoXFx1MDAyNnZodF9jYXAsIHRjLVxcdTAwM2Vuc3MpKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hpZ2hlc3RfZndfbWNzLCBoaWdoZXN0X2Z3X21jc19jYXNlc19nZW5fcGFyYW1zKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIGhpZ2hlc3RfZndfbWNzX3Rlc3RzID0ge1xcbitcXHQubmFtZSA9IFxcXCJpd2xfbWxkX2hpZ2hlc3RfZndfbWNzX3Rlc3RzXFxcIixcXG4rXFx0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XFxuK1xcbitzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSB7XFxuK1xcdGNvbnN0IGNoYXIgKmRlc2M7XFxuK1xcdHU4IHJ4X25zcztcXG4rXFx0dTggdHhfbnNzO1xcbitcXHR1OCBleHBlY3RlZF9uc3M7XFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVodF9tYXhfbnNzX2Nhc2UgZWh0X21heF9uc3NfY2FzZXNbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJSWCBsaW1pdGVkXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MDIsXFxuK1xcdFxcdC50eF9uc3MgPSAweDgwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMixcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJUWCBsaW1pdGVkXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MGYsXFxuK1xcdFxcdC50eF9uc3MgPSAweDMwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMyxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJFcXVhbFxcXCIsXFxuK1xcdFxcdC5yeF9uc3MgPSAweDA1LFxcbitcXHRcXHQudHhfbnNzID0gMHg1MCxcXG4rXFx0XFx0LmV4cGVjdGVkX25zcyA9IDUsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQm90aCB6ZXJvXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MDAsXFxuK1xcdFxcdC50eF9uc3MgPSAweDAwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMCxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJCb3RoIG1heFxcXCIsXFxuK1xcdFxcdC5yeF9uc3MgPSAweDBmLFxcbitcXHRcXHQudHhfbnNzID0gMHhmMCxcXG4rXFx0XFx0LmV4cGVjdGVkX25zcyA9IDE1LFxcbitcXHR9LFxcbit9O1xcbitcXG4rS1VOSVRfQVJSQVlfUEFSQU1fREVTQyhlaHRfbWF4X25zc19jYXNlcywgZWh0X21heF9uc3NfY2FzZXMsIGRlc2MpO1xcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9laHRfbWF4X25zcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGVodF9tYXhfbnNzX2Nhc2UgKnRjID0gdGVzdC1cXHUwMDNlcGFyYW1fdmFsdWU7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX25zcyxcXG4rXFx0XFx0XFx0aXdsX21sZF9nZXRfZWh0X21heF9uc3ModGMtXFx1MDAzZXJ4X25zcywgdGMtXFx1MDAzZXR4X25zcykpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0ge1xcbitcXHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfZWh0X21heF9uc3MsIGVodF9tYXhfbnNzX2Nhc2VzX2dlbl9wYXJhbXMpLFxcbitcXHR7fSxcXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bF9tbGRfZWh0X21heF9uc3NfdGVzdHNcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IGVodF9tYXhfbnNzX3Rlc3RfY2FzZXMsXFxuK307XFxuK1xcbitrdW5pdF90ZXN0X3N1aXRlKGVodF9tYXhfbnNzX3Rlc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xcbmluZGV4IGI2YzJmYTM2NjRjYmMuLjcyZGRiNzg4YWQzZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfZ2V0X2Z3X3NnaShzdHJ1Y3QgaXdsX21sZF90bGNfc3RhX2NhcGEgKmNhcGEpXFxuIFxcdHJldHVybiBzZ2lfY2h3aWR0aHM7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnRcXG4rVklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGludFxcbiBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxcbiBcXHRcXHRcXHQgICBpbnQgbnNzKVxcbiB7XFxuQEAgLTE4Myw2ICsxODMsNyBAQCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKTtcXG4gXFxuIHN0YXRpYyB2b2lkXFxuIGl3bF9tbGRfZmlsbF92aHRfcmF0ZXMoc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhLFxcbkBAIC0zMTYsNyArMzE3LDcgQEAgaXdsX21sZF9nZXRfZWh0X21jc19vZl9idyhlbnVtIElXTF9UTENfTUNTX1BFUl9CVyBidyxcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcXG4ge1xcbiBcXHR1OCB0eCA9IHU4X2dldF9iaXRzKHR4X25zcywgSUVFRTgwMjExX0VIVF9NQ1NfTlNTX1RYKTtcXG4gXFx0dTggcnggPSB1OF9nZXRfYml0cyhyeF9uc3MsIElFRUU4MDIxMV9FSFRfTUNTX05TU19SWCk7XFxuQEAgLTMyNSw2ICszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXFxuIFxcdCAqL1xcbiBcXHRyZXR1cm4gbWluKHR4LCByeCk7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKTtcXG4gXFxuICNkZWZpbmUgTUFYX05TU19NQ1MobWNzX251bSwgcngsIHR4KSBcXFxcXFxuIFxcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKChyeCktXFx1MDAzZXJ4X3R4X21jcyAjI21jc19udW0jIyBfbWF4X25zcywgXFxcXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXFxuaW5kZXggYzdmZjIwOWM5YWI2Ni4uMjY5ZDBmMmE2MWVmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXFxuQEAgLTIzLDQgKzIzLDEwIEBAIGludCBpd2xfbWxkX3NlbmRfdGxjX2RoYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCB1OCBzdGFfaWQsIHUzMiB0eXBlLCB1MzIgZGF0YSk7XFxuIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mKTtcXG4gXFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbitpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcXG4rXFx0XFx0XFx0ICAgICAgIGludCBuc3MpO1xcbit1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XFxuKyNlbmRpZlxcbitcXG4gI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjE5OjAxLjg0OTg5NDc3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTkzMzYwMDU0MjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNhNjJiODg2ZTMwZDI0ODRjMDVmOTcxOWE3YzAwNjNkZWQ3OWRhZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxMzoxOTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfZ2V0X3VhcHNkX2FjcyhzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuIFx0cmV0dXJuIHVhcHNkX2FjcyB8IHVhcHNkX2FjcyBcdTAwM2NcdTAwM2MgNDtcbiB9XG4gXG4tc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXG4rVklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXG4ge1xuIFx0dTggYnl0ZV9udW0gPSBwcGVfcG9zX2JpdCAvIDg7XG4gXHR1OCBiaXRfbnVtID0gcHBlX3Bvc19iaXQgJSA4O1xuQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiBcbiBcdHJldHVybiByZXM7XG4gfVxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2hlX2dldF9wcGVfdmFsKTtcbiBcbiBzdGF0aWMgdm9pZCBpd2xfbWxkX3BhcnNlX3BwZShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBpd2xfaGVfcGt0X2V4dF92MiAqcGt0X2V4dCwgdTggbnNzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbmluZGV4IDk4ZDY5MzIzNWM2NjMuLjg2NTliYjdiZjZjZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbkBAIC0zMDAsNCArMzAwLDggQEAgdm9pZCBpd2xfbWxkX3JlbW92ZV9uYW5fbWdtdF9zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCxcbiB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tY2FzdF9kYXRhX3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpd2xfbWxkX2ludF9zdGEgKnN0YSk7XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG4rdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdCk7XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIF9faXdsX21sZF9zdGFfaF9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuaW5kZXggZWZhNjE2MzhiOGVlYi4uMzIwMWRjZTlhNWIwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsNiArMSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiBpd2xtbGQtdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gdXRpbHMubyBsaW5rLm8gcngubyBhZ2cubyBsaW5rLXNlbGVjdGlvbi5vXG4gaXdsbWxkLXRlc3RzLXkgKz0gY2hhbl9sb2FkX3RocmVzaC5vXG4raXdsbWxkLXRlc3RzLXkgKz0gdGxjLm8gc3RhLm9cbiBcbiBjY2ZsYWdzLXkgKz0gLUkkKHNyYykvLi4vXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICs9IGl3bG1sZC10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY3NTQwODY2MWFmMjhcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jXG5AQCAtMCwwICsxLDg2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4rLypcbisgKiBLVW5pdCB0ZXN0cyBmb3IgU1RBIGNhcGFiaWxpdHkgaGVscGVyIGZ1bmN0aW9uc1xuKyAqXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uXG4rICovXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJzdGEuaFwiXG4rXG4rTU9EVUxFX0lNUE9SVF9OUyhcIkVYUE9SVEVEX0ZPUl9LVU5JVF9URVNUSU5HXCIpO1xuK1xuK3N0cnVjdCBwcGVfdmFsX2Nhc2Uge1xuK1x0Y29uc3QgY2hhciAqZGVzYztcbitcdHU4IHBwZVsyXTtcbitcdHU4IHBwZV9wb3NfYml0O1xuK1x0dTggZXhwZWN0ZWRfdmFsO1xuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgcHBlX3ZhbF9jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiQWxpZ25lZCBpbiBieXRlIDBcIixcbitcdFx0LnBwZSA9IHsgMGIxMTEsIDAgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gMCxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiVW5hbGlnbmVkIGluIGJ5dGUgMFwiLFxuK1x0XHQucHBlID0geyAwYjAwMTExMDAwLCAwIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDMsXG4rXHRcdC5leHBlY3RlZF92YWwgPSA3LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkhpZ2hlc3Qgbm9uLWNyb3NzaW5nIHBvc2l0aW9uXCIsXG4rXHRcdC5wcGUgPSB7IDBiMTExMDAwMDAsIDAgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gNSxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiVmFsdWUgaW4gYnl0ZSAxXCIsXG4rXHRcdC5wcGUgPSB7IDAsIDBiMDAwMDAwMTEgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gOCxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDMsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgNlwiLFxuK1x0XHQucHBlID0geyAwYjAxMDAwMDAwLCAwYjAwMDAwMDAxIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDYsXG4rXHRcdC5leHBlY3RlZF92YWwgPSA1LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkNyb3NzLWJ5dGUgYXQgYml0IDdcIixcbitcdFx0LnBwZSA9IHsgMGIxMDAwMDAwMCwgMGIwMDAwMDAxMSB9LFxuK1x0XHQucHBlX3Bvc19iaXQgPSA3LFxuK1x0XHQuZXhwZWN0ZWRfdmFsID0gNyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJDcm9zcy1ieXRlIGFsbCB6ZXJvc1wiLFxuK1x0XHQucHBlID0geyAwLCAwIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDYsXG4rXHRcdC5leHBlY3RlZF92YWwgPSAwLFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MocHBlX3ZhbF9jYXNlcywgcHBlX3ZhbF9jYXNlcywgZGVzYyk7XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHBwZV92YWxfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1x0dTggcHBlW10gPSB7IHRjLVx1MDAzZXBwZVswXSwgdGMtXHUwMDNlcHBlWzFdIH07XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXHUwMDNlZXhwZWN0ZWRfdmFsLFxuK1x0XHRcdGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwocHBlLCB0Yy1cdTAwM2VwcGVfcG9zX2JpdCkpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XG4rXHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGVfZ2V0X3BwZV92YWwsIHBwZV92YWxfY2FzZXNfZ2VuX3BhcmFtcyksXG4rXHR7fSxcbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcHBlX3ZhbF90ZXN0cyA9IHtcbitcdC5uYW1lID0gXCJpd2xfbWxkX3BwZV92YWxfdGVzdHNcIixcbitcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmNcbkBAIC0wLDAgKzEsMTM4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4rLypcbisgKiBLVW5pdCB0ZXN0cyBmb3IgVExDIHJhdGUtc2VsZWN0aW9uIGhlbHBlciBmdW5jdGlvbnNcbisgKlxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqL1xuKyNpbmNsdWRlIFx1MDAzY2t1bml0L3Rlc3QuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFwidGxjLmhcIlxuK1xuK01PRFVMRV9JTVBPUlRfTlMoXCJFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wiKTtcbitcbitzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSB7XG4rXHRjb25zdCBjaGFyICpkZXNjO1xuK1x0aW50IG5zcztcbitcdHUxNiByeF9tY3NfbWFwO1xuK1x0aW50IGV4cGVjdGVkX21jcztcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSBoaWdoZXN0X2Z3X21jc19jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiTlNTIDEgc3VwcG9ydHMgTUNTIDAtN1wiLFxuK1x0XHQubnNzID0gMSxcbitcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfNyxcbitcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTNyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJOU1MgMSBzdXBwb3J0cyBNQ1MgMC04XCIsXG4rXHRcdC5uc3MgPSAxLFxuK1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxuK1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIk5TUyAxIHN1cHBvcnRzIE1DUyAwLTlcIixcbitcdFx0Lm5zcyA9IDEsXG4rXHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzksXG4rXHRcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzksXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiTlNTIDIgc3VwcG9ydHMgTUNTIDAtOVwiLFxuK1x0XHQubnNzID0gMixcbitcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSBcdTAwM2NcdTAwM2MgMixcbitcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XCIsXG4rXHRcdC5uc3MgPSA0LFxuK1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84IFx1MDAzY1x1MDAzYyA2LFxuK1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoaGlnaGVzdF9md19tY3NfY2FzZXMsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzLCBkZXNjKTtcbitcbitzdGF0aWMgdm9pZCB0ZXN0X2hpZ2hlc3RfZndfbWNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1x0c3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCB2aHRfY2FwID0ge1xuK1x0XHQudmh0X21jcy5yeF9tY3NfbWFwID0gY3B1X3RvX2xlMTYodGMtXHUwMDNlcnhfbWNzX21hcCksXG4rXHR9O1xuK1xuK1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLVx1MDAzZWV4cGVjdGVkX21jcyxcbitcdFx0XHRpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhcdTAwMjZ2aHRfY2FwLCB0Yy1cdTAwM2Vuc3MpKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0VfUEFSQU0odGVzdF9oaWdoZXN0X2Z3X21jcywgaGlnaGVzdF9md19tY3NfY2FzZXNfZ2VuX3BhcmFtcyksXG4rXHR7fSxcbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgaGlnaGVzdF9md19tY3NfdGVzdHMgPSB7XG4rXHQubmFtZSA9IFwiaXdsX21sZF9oaWdoZXN0X2Z3X21jc190ZXN0c1wiLFxuK1x0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XG4rXG4rc3RydWN0IGVodF9tYXhfbnNzX2Nhc2Uge1xuK1x0Y29uc3QgY2hhciAqZGVzYztcbitcdHU4IHJ4X25zcztcbitcdHU4IHR4X25zcztcbitcdHU4IGV4cGVjdGVkX25zcztcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiUlggbGltaXRlZFwiLFxuK1x0XHQucnhfbnNzID0gMHgwMixcbitcdFx0LnR4X25zcyA9IDB4ODAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSAyLFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIlRYIGxpbWl0ZWRcIixcbitcdFx0LnJ4X25zcyA9IDB4MGYsXG4rXHRcdC50eF9uc3MgPSAweDMwLFxuK1x0XHQuZXhwZWN0ZWRfbnNzID0gMyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJFcXVhbFwiLFxuK1x0XHQucnhfbnNzID0gMHgwNSxcbitcdFx0LnR4X25zcyA9IDB4NTAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSA1LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkJvdGggemVyb1wiLFxuK1x0XHQucnhfbnNzID0gMHgwMCxcbitcdFx0LnR4X25zcyA9IDB4MDAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSAwLFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkJvdGggbWF4XCIsXG4rXHRcdC5yeF9uc3MgPSAweDBmLFxuK1x0XHQudHhfbnNzID0gMHhmMCxcbitcdFx0LmV4cGVjdGVkX25zcyA9IDE1LFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoZWh0X21heF9uc3NfY2FzZXMsIGVodF9tYXhfbnNzX2Nhc2VzLCBkZXNjKTtcbitcbitzdGF0aWMgdm9pZCB0ZXN0X2VodF9tYXhfbnNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLVx1MDAzZWV4cGVjdGVkX25zcyxcbitcdFx0XHRpd2xfbWxkX2dldF9laHRfbWF4X25zcyh0Yy1cdTAwM2VyeF9uc3MsIHRjLVx1MDAzZXR4X25zcykpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0ge1xuK1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2VodF9tYXhfbnNzLCBlaHRfbWF4X25zc19jYXNlc19nZW5fcGFyYW1zKSxcbitcdHt9LFxuK307XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBlaHRfbWF4X25zc190ZXN0cyA9IHtcbitcdC5uYW1lID0gXCJpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzXCIsXG4rXHQudGVzdF9jYXNlcyA9IGVodF9tYXhfbnNzX3Rlc3RfY2FzZXMsXG4rfTtcbitcbitrdW5pdF90ZXN0X3N1aXRlKGVodF9tYXhfbnNzX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jXG5pbmRleCBiNmMyZmEzNjY0Y2JjLi43MmRkYjc4OGFkM2UwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF9md19zZ2koc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhKVxuIFx0cmV0dXJuIHNnaV9jaHdpZHRocztcbiB9XG4gXG4tc3RhdGljIGludFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCBpbnRcbiBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuIFx0XHRcdCAgIGludCBuc3MpXG4ge1xuQEAgLTE4Myw2ICsxODMsNyBAQCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyk7XG4gXG4gc3RhdGljIHZvaWRcbiBpd2xfbWxkX2ZpbGxfdmh0X3JhdGVzKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSxcbkBAIC0zMTYsNyArMzE3LDcgQEAgaXdsX21sZF9nZXRfZWh0X21jc19vZl9idyhlbnVtIElXTF9UTENfTUNTX1BFUl9CVyBidyxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKVxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcbiB7XG4gXHR1OCB0eCA9IHU4X2dldF9iaXRzKHR4X25zcywgSUVFRTgwMjExX0VIVF9NQ1NfTlNTX1RYKTtcbiBcdHU4IHJ4ID0gdThfZ2V0X2JpdHMocnhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfUlgpO1xuQEAgLTMyNSw2ICszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXG4gXHQgKi9cbiBcdHJldHVybiBtaW4odHgsIHJ4KTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKTtcbiBcbiAjZGVmaW5lIE1BWF9OU1NfTUNTKG1jc19udW0sIHJ4LCB0eCkgXFxcbiBcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKChyeCktXHUwMDNlcnhfdHhfbWNzICMjbWNzX251bSMjIF9tYXhfbnNzLCBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbmluZGV4IGM3ZmYyMDljOWFiNjYuLjI2OWQwZjJhNjFlZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbkBAIC0yMyw0ICsyMywxMCBAQCBpbnQgaXdsX21sZF9zZW5kX3RsY19kaGMoc3RydWN0IGl3bF9tbGQgKm1sZCwgdTggc3RhX2lkLCB1MzIgdHlwZSwgdTMyIGRhdGEpO1xuIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuIFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpO1xuIFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxuK2ludCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuK1x0XHRcdCAgICAgICBpbnQgbnNzKTtcbit1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzoxOTowMS44NDk4OTYxMjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTMzNjAwNTE3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBpd2x3aWZpIE1MRCBLVW5pdCBUZXN0IEFkZGl0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIEtVbml0IHRlc3RzIHRvIHRoZSBpd2x3aWZpIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGRyaXZlci4gVGhlIGtleSBmaWxlcyBpbXBhY3RlZCBhcmUgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpc24ndCB3b3J0aCBmdXp6aW5nLCBhbmQgaGVyZSdzIHdoeTpcblxuRmlyc3QsIHRoZXJlIGFyZSAqbm8qIGZ1bmN0aW9uYWwgY29kZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgdmlzaWJpbGl0eSBvZiBleGlzdGluZyBoZWxwZXIgZnVuY3Rpb25zOiBgaXdsX21sZF9oZV9nZXRfcHBlX3ZhbGAsIGBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jc2AsIGFuZCBgaXdsX21sZF9nZXRfZWh0X21heF9uc3NgLiBUaGVzZSB3ZXJlIG1hZGUgYFZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVGAgYW5kIGBFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVRgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBwcmVjaXNlbHkgZm9yIG1ha2luZyB0aGVtIGFjY2Vzc2libGUgdG8gdGhlIG5ldyBLVW5pdCB0ZXN0IG1vZHVsZS4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBpc24ndCB0b3VjaGVkIGF0IGFsbC5cblxuU2Vjb25kLCB0aGUgYnVsayBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgS1VuaXQgdGVzdCBmaWxlcywgc3BlY2lmaWNhbGx5IGBzdGEuY2AgYW5kIGB0bGMuY2AgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL2AuICBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGZvciB0ZXN0IGNvdmVyYWdlLlxuXG5UaGlyZCwgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGJlaW5nIGFuIEludGVsIFdpLUZpIGRyaXZlciwgcmVsaWVzIG9uICphY3R1YWwqIGhhcmR3YXJlLiBUaGlzIGlzbid0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcmFjdGljYWxseSBlbXVsYXRlZCB3aXRoIGZ1bGwgZmlkZWxpdHkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGF0IHdlIHdvdWxkIG5lZWQgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nIHZpYSBTeXprYWxsZXIgb3Igc2ltaWxhciB0b29scy4gVGhpcyBsaW1pdHMgdGhlIHNjb3BlIG9mIGFueSBwb3RlbnRpYWwgZnV6emluZy5cblxuTXkgcmVhZGluZyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGFsaWducyB3aXRoIHRoaXMgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmVuJ3Qgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IGlzIHRoZSBhZGRpdGlvbiBvZiB0ZXN0cyBhbmQgbm90IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgaXRzZWxmLlxuXG5UaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBiZSBgZmFsc2VgLiBJJ2xsIHNldCB0aGUgcmVzdWx0IGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzcxLCJPdXRwdXRUb2tlbnMiOjg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjUxOjE1LjQ1MDQxNjg3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzo1MToxNS40NTA0Mzg5NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbkrcl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 13:17:46 +0000 UTC FinishedAt: 2026-08-30 13:51:17 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2E2MmI4ODZlMzBkMjQ4NGMwNWY5NzE5YTdjMDA2M2RlZDc5ZGFkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDEzOjE5OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF91YXBzZF9hY3Moc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbiBcdHJldHVybiB1YXBzZF9hY3MgfCB1YXBzZF9hY3MgXHUwMDNjXHUwMDNjIDQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KVxuJiM0MztWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiB7XG4gXHR1OCBieXRlX251bSA9IHBwZV9wb3NfYml0IC8gODtcbiBcdHU4IGJpdF9udW0gPSBwcGVfcG9zX2JpdCAlIDg7XG5AQCAtMTQ2LDYgJiM0MzsxNDYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiBcbiBcdHJldHVybiByZXM7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCk7XG4gXG4gc3RhdGljIHZvaWQgaXdsX21sZF9wYXJzZV9wcGUoc3RydWN0IGl3bF9tbGQgKm1sZCxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgaXdsX2hlX3BrdF9leHRfdjIgKnBrdF9leHQsIHU4IG5zcyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXG5pbmRleCA5OGQ2OTMyMzVjNjYzLi44NjU5YmI3YmY2Y2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXG5AQCAtMzAwLDQgJiM0MzszMDAsOCBAQCB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tZ210X3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIHZvaWQgaXdsX21sZF9yZW1vdmVfbmFuX21jYXN0X2RhdGFfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGl3bF9tbGRfaW50X3N0YSAqc3RhKTtcbiBcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG4mIzQzO3U4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2VuZGlmIC8qIF9faXdsX21sZF9zdGFfaF9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuaW5kZXggZWZhNjE2MzhiOGVlYi4uMzIwMWRjZTlhNWIwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsNiAmIzQzOzEsNyBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gaXdsbWxkLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB1dGlscy5vIGxpbmsubyByeC5vIGFnZy5vIGxpbmstc2VsZWN0aW9uLm9cbiBpd2xtbGQtdGVzdHMteSAmIzQzOz0gY2hhbl9sb2FkX3RocmVzaC5vXG4mIzQzO2l3bG1sZC10ZXN0cy15ICYjNDM7PSB0bGMubyBzdGEub1xuIFxuIGNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYykvLi4vXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSBpd2xtbGQtdGVzdHMub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42NzU0MDg2NjFhZjI4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xuQEAgLTAsMCAmIzQzOzEsODYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4mIzQzOy8qXG4mIzQzOyAqIEtVbml0IHRlc3RzIGZvciBTVEEgY2FwYWJpbGl0eSBoZWxwZXIgZnVuY3Rpb25zXG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdGEuaFwmIzM0O1xuJiM0MztcbiYjNDM7TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHtcbiYjNDM7XHRjb25zdCBjaGFyICpkZXNjO1xuJiM0MztcdHU4IHBwZVsyXTtcbiYjNDM7XHR1OCBwcGVfcG9zX2JpdDtcbiYjNDM7XHR1OCBleHBlY3RlZF92YWw7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBwZV92YWxfY2FzZSBwcGVfdmFsX2Nhc2VzW10gPSB7XG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtBbGlnbmVkIGluIGJ5dGUgMFwmIzM0OyxcbiYjNDM7XHRcdC5wcGUgPSB7IDBiMTExLCAwIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSAwLFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O1VuYWxpZ25lZCBpbiBieXRlIDBcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjAwMTExMDAwLCAwIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSAzLFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0hpZ2hlc3Qgbm9uLWNyb3NzaW5nIHBvc2l0aW9uXCYjMzQ7LFxuJiM0MztcdFx0LnBwZSA9IHsgMGIxMTEwMDAwMCwgMCB9LFxuJiM0MztcdFx0LnBwZV9wb3NfYml0ID0gNSxcbiYjNDM7XHRcdC5leHBlY3RlZF92YWwgPSA3LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtWYWx1ZSBpbiBieXRlIDFcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwLCAwYjAwMDAwMDExIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA4LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDMsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYXQgYml0IDZcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjAxMDAwMDAwLCAwYjAwMDAwMDAxIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA2LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDUsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYXQgYml0IDdcJiMzNDssXG4mIzQzO1x0XHQucHBlID0geyAwYjEwMDAwMDAwLCAwYjAwMDAwMDExIH0sXG4mIzQzO1x0XHQucHBlX3Bvc19iaXQgPSA3LFxuJiM0MztcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0Nyb3NzLWJ5dGUgYWxsIHplcm9zXCYjMzQ7LFxuJiM0MztcdFx0LnBwZSA9IHsgMCwgMCB9LFxuJiM0MztcdFx0LnBwZV9wb3NfYml0ID0gNixcbiYjNDM7XHRcdC5leHBlY3RlZF92YWwgPSAwLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKHBwZV92YWxfY2FzZXMsIHBwZV92YWxfY2FzZXMsIGRlc2MpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlICp0YyA9IHRlc3QtXHUwMDNlcGFyYW1fdmFsdWU7XG4mIzQzO1x0dTggcHBlW10gPSB7IHRjLVx1MDAzZXBwZVswXSwgdGMtXHUwMDNlcHBlWzFdIH07XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy1cdTAwM2VleHBlY3RlZF92YWwsXG4mIzQzO1x0XHRcdGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwocHBlLCB0Yy1cdTAwM2VwcGVfcG9zX2JpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hlX2dldF9wcGVfdmFsLCBwcGVfdmFsX2Nhc2VzX2dlbl9wYXJhbXMpLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBwcGVfdmFsX3Rlc3RzID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7aXdsX21sZF9wcGVfdmFsX3Rlc3RzXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiYjNDM7LypcbiYjNDM7ICogS1VuaXQgdGVzdHMgZm9yIFRMQyByYXRlLXNlbGVjdGlvbiBoZWxwZXIgZnVuY3Rpb25zXG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0bGMuaFwmIzM0O1xuJiM0MztcbiYjNDM7TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSB7XG4mIzQzO1x0Y29uc3QgY2hhciAqZGVzYztcbiYjNDM7XHRpbnQgbnNzO1xuJiM0MztcdHUxNiByeF9tY3NfbWFwO1xuJiM0MztcdGludCBleHBlY3RlZF9tY3M7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgaGlnaGVzdF9md19tY3NfY2FzZXNbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O05TUyAxIHN1cHBvcnRzIE1DUyAwLTdcJiMzNDssXG4mIzQzO1x0XHQubnNzID0gMSxcbiYjNDM7XHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzcsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M3LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtOU1MgMSBzdXBwb3J0cyBNQ1MgMC04XCYjMzQ7LFxuJiM0MztcdFx0Lm5zcyA9IDEsXG4mIzQzO1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxuJiM0MztcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7TlNTIDEgc3VwcG9ydHMgTUNTIDAtOVwmIzM0OyxcbiYjNDM7XHRcdC5uc3MgPSAxLFxuJiM0MztcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSxcbiYjNDM7XHRcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzksXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O05TUyAyIHN1cHBvcnRzIE1DUyAwLTlcJiMzNDssXG4mIzQzO1x0XHQubnNzID0gMixcbiYjNDM7XHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzkgXHUwMDNjXHUwMDNjIDIsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmRlc2MgPSBcJiMzNDtOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XCYjMzQ7LFxuJiM0MztcdFx0Lm5zcyA9IDQsXG4mIzQzO1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84IFx1MDAzY1x1MDAzYyA2LFxuJiM0MztcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcbiYjNDM7XHR9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7S1VOSVRfQVJSQVlfUEFSQU1fREVTQyhoaWdoZXN0X2Z3X21jc19jYXNlcywgaGlnaGVzdF9md19tY3NfY2FzZXMsIGRlc2MpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oaWdoZXN0X2Z3X21jcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgdmh0X2NhcCA9IHtcbiYjNDM7XHRcdC52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy1cdTAwM2VyeF9tY3NfbWFwKSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXHUwMDNlZXhwZWN0ZWRfbWNzLFxuJiM0MztcdFx0XHRpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhcdTAwMjZ2aHRfY2FwLCB0Yy1cdTAwM2Vuc3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcbiYjNDM7XHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGlnaGVzdF9md19tY3MsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzX2dlbl9wYXJhbXMpLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBoaWdoZXN0X2Z3X21jc190ZXN0cyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O2l3bF9tbGRfaGlnaGVzdF9md19tY3NfdGVzdHNcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSB7XG4mIzQzO1x0Y29uc3QgY2hhciAqZGVzYztcbiYjNDM7XHR1OCByeF9uc3M7XG4mIzQzO1x0dTggdHhfbnNzO1xuJiM0MztcdHU4IGV4cGVjdGVkX25zcztcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0ge1xuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7UlggbGltaXRlZFwmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDAyLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4ODAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMixcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7VFggbGltaXRlZFwmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDBmLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4MzAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMyxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7RXF1YWxcJiMzNDssXG4mIzQzO1x0XHQucnhfbnNzID0gMHgwNSxcbiYjNDM7XHRcdC50eF9uc3MgPSAweDUwLFxuJiM0MztcdFx0LmV4cGVjdGVkX25zcyA9IDUsXG4mIzQzO1x0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuZGVzYyA9IFwmIzM0O0JvdGggemVyb1wmIzM0OyxcbiYjNDM7XHRcdC5yeF9uc3MgPSAweDAwLFxuJiM0MztcdFx0LnR4X25zcyA9IDB4MDAsXG4mIzQzO1x0XHQuZXhwZWN0ZWRfbnNzID0gMCxcbiYjNDM7XHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5kZXNjID0gXCYjMzQ7Qm90aCBtYXhcJiMzNDssXG4mIzQzO1x0XHQucnhfbnNzID0gMHgwZixcbiYjNDM7XHRcdC50eF9uc3MgPSAweGYwLFxuJiM0MztcdFx0LmV4cGVjdGVkX25zcyA9IDE1LFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKGVodF9tYXhfbnNzX2Nhc2VzLCBlaHRfbWF4X25zc19jYXNlcywgZGVzYyk7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2VodF9tYXhfbnNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBlaHRfbWF4X25zc19jYXNlICp0YyA9IHRlc3QtXHUwMDNlcGFyYW1fdmFsdWU7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy1cdTAwM2VleHBlY3RlZF9uc3MsXG4mIzQzO1x0XHRcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHRjLVx1MDAzZXJ4X25zcywgdGMtXHUwMDNldHhfbnNzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBlaHRfbWF4X25zc190ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2VodF9tYXhfbnNzLCBlaHRfbWF4X25zc19jYXNlc19nZW5fcGFyYW1zKSxcbiYjNDM7XHR7fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gZWh0X21heF9uc3NfdGVzdF9jYXNlcyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO2t1bml0X3Rlc3Rfc3VpdGUoZWh0X21heF9uc3NfdGVzdHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbmluZGV4IGI2YzJmYTM2NjRjYmMuLjcyZGRiNzg4YWQzZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF9md19zZ2koc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhKVxuIFx0cmV0dXJuIHNnaV9jaHdpZHRocztcbiB9XG4gXG4tc3RhdGljIGludFxuJiM0MztWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgaW50XG4gaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcbiBcdFx0XHQgICBpbnQgbnNzKVxuIHtcbkBAIC0xODMsNiAmIzQzOzE4Myw3IEBAIGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXAsXG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyk7XG4gXG4gc3RhdGljIHZvaWRcbiBpd2xfbWxkX2ZpbGxfdmh0X3JhdGVzKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSxcbkBAIC0zMTYsNyAmIzQzOzMxNyw3IEBAIGl3bF9tbGRfZ2V0X2VodF9tY3Nfb2ZfYncoZW51bSBJV0xfVExDX01DU19QRVJfQlcgYncsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcbiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKVxuIHtcbiBcdHU4IHR4ID0gdThfZ2V0X2JpdHModHhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfVFgpO1xuIFx0dTggcnggPSB1OF9nZXRfYml0cyhyeF9uc3MsIElFRUU4MDIxMV9FSFRfTUNTX05TU19SWCk7XG5AQCAtMzI1LDYgJiM0MzszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXG4gXHQgKi9cbiBcdHJldHVybiBtaW4odHgsIHJ4KTtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9laHRfbWF4X25zcyk7XG4gXG4gI2RlZmluZSBNQVhfTlNTX01DUyhtY3NfbnVtLCByeCwgdHgpIFxcXG4gXHRpd2xfbWxkX2dldF9laHRfbWF4X25zcygocngpLVx1MDAzZXJ4X3R4X21jcyAjI21jc19udW0jIyBfbWF4X25zcywgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXG5pbmRleCBjN2ZmMjA5YzlhYjY2Li4yNjlkMGYyYTYxZWY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXG5AQCAtMjMsNCAmIzQzOzIzLDEwIEBAIGludCBpd2xfbWxkX3NlbmRfdGxjX2RoYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCB1OCBzdGFfaWQsIHUzMiB0eXBlLCB1MzIgZGF0YSk7XG4gdm9pZCBpd2xfbWxkX3RsY191cGRhdGVfcGh5KHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZik7XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxuJiM0MztpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcbiYjNDM7XHRcdFx0ICAgICAgIGludCBuc3MpO1xuJiM0Mzt1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjZW5kaWYgLyogX19pd2xfbWxkX3RsY19oX18gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxMzoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYTYyYjg4NmUzMGQyNDg0YzA1Zjk3MTlhN2MwMDYzZGVkNzlkYWQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTM6MTk6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jCkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF91YXBzZF9hY3Moc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSkKIAlyZXR1cm4gdWFwc2RfYWNzIHwgdWFwc2RfYWNzICZsdDsmbHQ7IDQ7CiB9CiAKLXN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQomIzQzO1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQogewogCXU4IGJ5dGVfbnVtID0gcHBlX3Bvc19iaXQgLyA4OwogCXU4IGJpdF9udW0gPSBwcGVfcG9zX2JpdCAlIDg7CkBAIC0xNDYsNiAmIzQzOzE0Niw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KQogCiAJcmV0dXJuIHJlczsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCk7CiAKIHN0YXRpYyB2b2lkIGl3bF9tbGRfcGFyc2VfcHBlKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJCQkgICAgICBzdHJ1Y3QgaXdsX2hlX3BrdF9leHRfdjIgKnBrdF9leHQsIHU4IG5zcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKaW5kZXggOThkNjkzMjM1YzY2My4uODY1OWJiN2JmNmNmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmgKQEAgLTMwMCw0ICYjNDM7MzAwLDggQEAgdm9pZCBpd2xfbWxkX3JlbW92ZV9uYW5fbWdtdF9zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwKIHZvaWQgaXdsX21sZF9yZW1vdmVfbmFuX21jYXN0X2RhdGFfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJCQkJICAgICAgIHN0cnVjdCBpd2xfbWxkX2ludF9zdGEgKnN0YSk7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykKJiM0Mzt1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KTsKJiM0MzsjZW5kaWYKJiM0MzsKICNlbmRpZiAvKiBfX2l3bF9tbGRfc3RhX2hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQppbmRleCBlZmE2MTYzOGI4ZWViLi4zMjAxZGNlOWE1YjAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZQpAQCAtMSw2ICYjNDM7MSw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogaXdsbWxkLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB1dGlscy5vIGxpbmsubyByeC5vIGFnZy5vIGxpbmstc2VsZWN0aW9uLm8KIGl3bG1sZC10ZXN0cy15ICYjNDM7PSBjaGFuX2xvYWRfdGhyZXNoLm8KJiM0Mztpd2xtbGQtdGVzdHMteSAmIzQzOz0gdGxjLm8gc3RhLm8KIAogY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKS8uLi8KIG9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSAmIzQzOz0gaXdsbWxkLXRlc3RzLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNjc1NDA4NjYxYWYyOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jCkBAIC0wLDAgJiM0MzsxLDg2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlCiYjNDM7LyoKJiM0MzsgKiBLVW5pdCB0ZXN0cyBmb3IgU1RBIGNhcGFiaWxpdHkgaGVscGVyIGZ1bmN0aW9ucwomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O2t1bml0L3Rlc3QuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0YS5oJiMzNDsKJiM0MzsKJiM0MztNT0RVTEVfSU1QT1JUX05TKCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkcmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IHBwZV92YWxfY2FzZSB7CiYjNDM7CWNvbnN0IGNoYXIgKmRlc2M7CiYjNDM7CXU4IHBwZVsyXTsKJiM0MzsJdTggcHBlX3Bvc19iaXQ7CiYjNDM7CXU4IGV4cGVjdGVkX3ZhbDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHBwZV92YWxfY2FzZXNbXSA9IHsKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O0FsaWduZWQgaW4gYnl0ZSAwJiMzNDssCiYjNDM7CQkucHBlID0geyAwYjExMSwgMCB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gMCwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7VW5hbGlnbmVkIGluIGJ5dGUgMCYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIwMDExMTAwMCwgMCB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gMywKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7SGlnaGVzdCBub24tY3Jvc3NpbmcgcG9zaXRpb24mIzM0OywKJiM0MzsJCS5wcGUgPSB7IDBiMTExMDAwMDAsIDAgfSwKJiM0MzsJCS5wcGVfcG9zX2JpdCA9IDUsCiYjNDM7CQkuZXhwZWN0ZWRfdmFsID0gNywKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O1ZhbHVlIGluIGJ5dGUgMSYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMCwgMGIwMDAwMDAxMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gOCwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSAzLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhdCBiaXQgNiYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIwMTAwMDAwMCwgMGIwMDAwMDAwMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gNiwKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA1LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhdCBiaXQgNyYjMzQ7LAomIzQzOwkJLnBwZSA9IHsgMGIxMDAwMDAwMCwgMGIwMDAwMDAxMSB9LAomIzQzOwkJLnBwZV9wb3NfYml0ID0gNywKJiM0MzsJCS5leHBlY3RlZF92YWwgPSA3LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Q3Jvc3MtYnl0ZSBhbGwgemVyb3MmIzM0OywKJiM0MzsJCS5wcGUgPSB7IDAsIDAgfSwKJiM0MzsJCS5wcGVfcG9zX2JpdCA9IDYsCiYjNDM7CQkuZXhwZWN0ZWRfdmFsID0gMCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzOwomIzQzO0tVTklUX0FSUkFZX1BBUkFNX0RFU0MocHBlX3ZhbF9jYXNlcywgcHBlX3ZhbF9jYXNlcywgZGVzYyk7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcHBlX3ZhbF9jYXNlICp0YyA9IHRlc3QtJmd0O3BhcmFtX3ZhbHVlOwomIzQzOwl1OCBwcGVbXSA9IHsgdGMtJmd0O3BwZVswXSwgdGMtJmd0O3BwZVsxXSB9OwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtJmd0O2V4cGVjdGVkX3ZhbCwKJiM0MzsJCQlpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHBwZSwgdGMtJmd0O3BwZV9wb3NfYml0KSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBwcGVfdmFsX3Rlc3RfY2FzZXNbXSA9IHsKJiM0MzsJS1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hlX2dldF9wcGVfdmFsLCBwcGVfdmFsX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcHBlX3ZhbF90ZXN0cyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2l3bF9tbGRfcHBlX3ZhbF90ZXN0cyYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHBwZV92YWxfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUocHBlX3ZhbF90ZXN0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjcwNGExYmIxYTVlYWQKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2UKJiM0MzsvKgomIzQzOyAqIEtVbml0IHRlc3RzIGZvciBUTEMgcmF0ZS1zZWxlY3Rpb24gaGVscGVyIGZ1bmN0aW9ucwomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O2t1bml0L3Rlc3QuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3RsYy5oJiMzNDsKJiM0MzsKJiM0MztNT0RVTEVfSU1QT1JUX05TKCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkcmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgewomIzQzOwljb25zdCBjaGFyICpkZXNjOwomIzQzOwlpbnQgbnNzOwomIzQzOwl1MTYgcnhfbWNzX21hcDsKJiM0MzsJaW50IGV4cGVjdGVkX21jczsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSBoaWdoZXN0X2Z3X21jc19jYXNlc1tdID0gewomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDEgc3VwcG9ydHMgTUNTIDAtNyYjMzQ7LAomIzQzOwkJLm5zcyA9IDEsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF83LAomIzQzOwkJLmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTNywKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O05TUyAxIHN1cHBvcnRzIE1DUyAwLTgmIzM0OywKJiM0MzsJCS5uc3MgPSAxLAomIzQzOwkJLnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOCwKJiM0MzsJCS5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzgsCiYjNDM7CX0sCiYjNDM7CXsKJiM0MzsJCS5kZXNjID0gJiMzNDtOU1MgMSBzdXBwb3J0cyBNQ1MgMC05JiMzNDssCiYjNDM7CQkubnNzID0gMSwKJiM0MzsJCS5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzksCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDIgc3VwcG9ydHMgTUNTIDAtOSYjMzQ7LAomIzQzOwkJLm5zcyA9IDIsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF85ICZsdDsmbHQ7IDIsCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M5LAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7TlNTIDQgc3VwcG9ydHMgTUNTIDAtOCYjMzQ7LAomIzQzOwkJLm5zcyA9IDQsCiYjNDM7CQkucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84ICZsdDsmbHQ7IDYsCiYjNDM7CQkuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LAomIzQzOwl9LAomIzQzO307CiYjNDM7CiYjNDM7S1VOSVRfQVJSQVlfUEFSQU1fREVTQyhoaWdoZXN0X2Z3X21jc19jYXNlcywgaGlnaGVzdF9md19tY3NfY2FzZXMsIGRlc2MpOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfaGlnaGVzdF9md19tY3Moc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgKnRjID0gdGVzdC0mZ3Q7cGFyYW1fdmFsdWU7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgdmh0X2NhcCA9IHsKJiM0MzsJCS52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy0mZ3Q7cnhfbWNzX21hcCksCiYjNDM7CX07CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCB0Yy0mZ3Q7ZXhwZWN0ZWRfbWNzLAomIzQzOwkJCWl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKCZhbXA7dmh0X2NhcCwgdGMtJmd0O25zcykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgaGlnaGVzdF9md19tY3NfdGVzdF9jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGlnaGVzdF9md19tY3MsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgaGlnaGVzdF9md19tY3NfdGVzdHMgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtpd2xfbWxkX2hpZ2hlc3RfZndfbWNzX3Rlc3RzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gaGlnaGVzdF9md19tY3NfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUoaGlnaGVzdF9md19tY3NfdGVzdHMpOwomIzQzOwomIzQzO3N0cnVjdCBlaHRfbWF4X25zc19jYXNlIHsKJiM0MzsJY29uc3QgY2hhciAqZGVzYzsKJiM0MzsJdTggcnhfbnNzOwomIzQzOwl1OCB0eF9uc3M7CiYjNDM7CXU4IGV4cGVjdGVkX25zczsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0gewomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7UlggbGltaXRlZCYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MDIsCiYjNDM7CQkudHhfbnNzID0gMHg4MCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAyLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7VFggbGltaXRlZCYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MGYsCiYjNDM7CQkudHhfbnNzID0gMHgzMCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAzLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7RXF1YWwmIzM0OywKJiM0MzsJCS5yeF9uc3MgPSAweDA1LAomIzQzOwkJLnR4X25zcyA9IDB4NTAsCiYjNDM7CQkuZXhwZWN0ZWRfbnNzID0gNSwKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmRlc2MgPSAmIzM0O0JvdGggemVybyYjMzQ7LAomIzQzOwkJLnJ4X25zcyA9IDB4MDAsCiYjNDM7CQkudHhfbnNzID0gMHgwMCwKJiM0MzsJCS5leHBlY3RlZF9uc3MgPSAwLAomIzQzOwl9LAomIzQzOwl7CiYjNDM7CQkuZGVzYyA9ICYjMzQ7Qm90aCBtYXgmIzM0OywKJiM0MzsJCS5yeF9uc3MgPSAweDBmLAomIzQzOwkJLnR4X25zcyA9IDB4ZjAsCiYjNDM7CQkuZXhwZWN0ZWRfbnNzID0gMTUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0MzsKJiM0MztLVU5JVF9BUlJBWV9QQVJBTV9ERVNDKGVodF9tYXhfbnNzX2Nhc2VzLCBlaHRfbWF4X25zc19jYXNlcywgZGVzYyk7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9laHRfbWF4X25zcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSAqdGMgPSB0ZXN0LSZndDtwYXJhbV92YWx1ZTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLSZndDtleHBlY3RlZF9uc3MsCiYjNDM7CQkJaXdsX21sZF9nZXRfZWh0X21heF9uc3ModGMtJmd0O3J4X25zcywgdGMtJmd0O3R4X25zcykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFX1BBUkFNKHRlc3RfZWh0X21heF9uc3MsIGVodF9tYXhfbnNzX2Nhc2VzX2dlbl9wYXJhbXMpLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gZWh0X21heF9uc3NfdGVzdF9jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUoZWh0X21heF9uc3NfdGVzdHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwppbmRleCBiNmMyZmEzNjY0Y2JjLi43MmRkYjc4OGFkM2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYwpAQCAtMTYxLDcgJiM0MzsxNjEsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZndfc2dpKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSkKIAlyZXR1cm4gc2dpX2Nod2lkdGhzOwogfQogCi1zdGF0aWMgaW50CiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGludAogaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCwKIAkJCSAgIGludCBuc3MpCiB7CkBAIC0xODMsNiAmIzQzOzE4Myw3IEBAIGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXAsCiAKIAlyZXR1cm4gMDsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MpOwogCiBzdGF0aWMgdm9pZAogaXdsX21sZF9maWxsX3ZodF9yYXRlcyhzdHJ1Y3QgaXdsX21sZF90bGNfc3RhX2NhcGEgKmNhcGEsCkBAIC0zMTYsNyAmIzQzOzMxNyw3IEBAIGl3bF9tbGRfZ2V0X2VodF9tY3Nfb2ZfYncoZW51bSBJV0xfVExDX01DU19QRVJfQlcgYncsCiAJfQogfQogCi1zdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpCiYjNDM7VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKQogewogCXU4IHR4ID0gdThfZ2V0X2JpdHModHhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfVFgpOwogCXU4IHJ4ID0gdThfZ2V0X2JpdHMocnhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfUlgpOwpAQCAtMzI1LDYgJiM0MzszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpCiAJICovCiAJcmV0dXJuIG1pbih0eCwgcngpOwogfQomIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9laHRfbWF4X25zcyk7CiAKICNkZWZpbmUgTUFYX05TU19NQ1MobWNzX251bSwgcngsIHR4KSBcCiAJaXdsX21sZF9nZXRfZWh0X21heF9uc3MoKHJ4KS0mZ3Q7cnhfdHhfbWNzICMjbWNzX251bSMjIF9tYXhfbnNzLCBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCmluZGV4IGM3ZmYyMDljOWFiNjYuLjI2OWQwZjJhNjFlZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oCkBAIC0yMyw0ICYjNDM7MjMsMTAgQEAgaW50IGl3bF9tbGRfc2VuZF90bGNfZGhjKHN0cnVjdCBpd2xfbWxkICptbGQsIHU4IHN0YV9pZCwgdTMyIHR5cGUsIHUzMiBkYXRhKTsKIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQkJICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZik7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykKJiM0MztpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCwKJiM0MzsJCQkgICAgICAgaW50IG5zcyk7CiYjNDM7dTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpOwomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zMm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzcxCgkJCQkJCQlvdXRwdXQ6IDg3CgkJCQkJCQl0aG91Z2h0czogMTAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogaXdsd2lmaSBNTEQgS1VuaXQgVGVzdCBBZGRpdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIEtVbml0IHRlc3RzIHRvIHRoZSBpd2x3aWZpIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGRyaXZlci4gVGhlIGtleSBmaWxlcyBpbXBhY3RlZCBhcmUgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIGFuZCBoZXJlJiMzOTtzIHdoeToKCkZpcnN0LCB0aGVyZSBhcmUgKm5vKiBmdW5jdGlvbmFsIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIHZpc2liaWxpdHkgb2YgZXhpc3RpbmcgaGVscGVyIGZ1bmN0aW9uczogYGl3bF9tbGRfaGVfZ2V0X3BwZV92YWxgLCBgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3NgLCBhbmQgYGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzYC4gVGhlc2Ugd2VyZSBtYWRlIGBWSVNJQkxFX0lGX0lXTFdJRklfS1VOSVRgIGFuZCBgRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUYCwgd2hpY2gsIGFzIEkga25vdywgaXMgcHJlY2lzZWx5IGZvciBtYWtpbmcgdGhlbSBhY2Nlc3NpYmxlIHRvIHRoZSBuZXcgS1VuaXQgdGVzdCBtb2R1bGUuIFRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgaXNuJiMzOTt0IHRvdWNoZWQgYXQgYWxsLgoKU2Vjb25kLCB0aGUgYnVsayBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgS1VuaXQgdGVzdCBmaWxlcywgc3BlY2lmaWNhbGx5IGBzdGEuY2AgYW5kIGB0bGMuY2AgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL2AuICBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGZvciB0ZXN0IGNvdmVyYWdlLgoKVGhpcmQsIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBiZWluZyBhbiBJbnRlbCBXaS1GaSBkcml2ZXIsIHJlbGllcyBvbiAqYWN0dWFsKiBoYXJkd2FyZS4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHByYWN0aWNhbGx5IGVtdWxhdGVkIHdpdGggZnVsbCBmaWRlbGl0eSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIHdoaWNoIGlzIHdoYXQgd2Ugd291bGQgbmVlZCBmb3IgZWZmZWN0aXZlIGZ1enppbmcgdmlhIFN5emthbGxlciBvciBzaW1pbGFyIHRvb2xzLiBUaGlzIGxpbWl0cyB0aGUgc2NvcGUgb2YgYW55IHBvdGVudGlhbCBmdXp6aW5nLgoKTXkgcmVhZGluZyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGFsaWducyB3aXRoIHRoaXMgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmVuJiMzOTt0IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGVzdHMgYW5kIG5vdCBmdW5jdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi4KClRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0IGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzoxOTowMS4zNTkwMjI5ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0MDkxNDI1NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjE5OjAxLjM1OTAyNzYxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMjgxNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2E2MmI4ODZlMzBkMjQ4NGMwNWY5NzE5YTdjMDA2M2RlZDc5ZGFkMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxMzoxOTowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jXFxuaW5kZXggNzk1N2FjMTFiMGNkNS4uZmQwY2VlOWE5MmI1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jXFxuQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfdWFwc2RfYWNzKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuIFxcdHJldHVybiB1YXBzZF9hY3MgfCB1YXBzZF9hY3MgXFx1MDAzY1xcdTAwM2MgNDtcXG4gfVxcbiBcXG4tc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KVxcbiB7XFxuIFxcdHU4IGJ5dGVfbnVtID0gcHBlX3Bvc19iaXQgLyA4O1xcbiBcXHR1OCBiaXRfbnVtID0gcHBlX3Bvc19iaXQgJSA4O1xcbkBAIC0xNDYsNiArMTQ2LDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXFxuIFxcbiBcXHRyZXR1cm4gcmVzO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2hlX2dldF9wcGVfdmFsKTtcXG4gXFxuIHN0YXRpYyB2b2lkIGl3bF9tbGRfcGFyc2VfcHBlKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfaGVfcGt0X2V4dF92MiAqcGt0X2V4dCwgdTggbnNzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXFxuaW5kZXggOThkNjkzMjM1YzY2My4uODY1OWJiN2JmNmNmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oXFxuQEAgLTMwMCw0ICszMDAsOCBAQCB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tZ210X3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tY2FzdF9kYXRhX3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGl3bF9tbGRfaW50X3N0YSAqc3RhKTtcXG4gXFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbit1OCBpd2xfbWxkX2hlX2dldF9wcGVfdmFsKHU4ICpwcGUsIHU4IHBwZV9wb3NfYml0KTtcXG4rI2VuZGlmXFxuK1xcbiAjZW5kaWYgLyogX19pd2xfbWxkX3N0YV9oX18gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IGVmYTYxNjM4YjhlZWIuLjMyMDFkY2U5YTViMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxcbkBAIC0xLDYgKzEsNyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiBpd2xtbGQtdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gdXRpbHMubyBsaW5rLm8gcngubyBhZ2cubyBsaW5rLXNlbGVjdGlvbi5vXFxuIGl3bG1sZC10ZXN0cy15ICs9IGNoYW5fbG9hZF90aHJlc2gub1xcbitpd2xtbGQtdGVzdHMteSArPSB0bGMubyBzdGEub1xcbiBcXG4gY2NmbGFncy15ICs9IC1JJChzcmMpLy4uL1xcbiBvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgKz0gaXdsbWxkLXRlc3RzLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjc1NDA4NjYxYWYyOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xcbkBAIC0wLDAgKzEsODYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuKy8qXFxuKyAqIEtVbml0IHRlc3RzIGZvciBTVEEgY2FwYWJpbGl0eSBoZWxwZXIgZnVuY3Rpb25zXFxuKyAqXFxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxcbisgKi9cXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJzdGEuaFxcXCJcXG4rXFxuK01PRFVMRV9JTVBPUlRfTlMoXFxcIkVYUE9SVEVEX0ZPUl9LVU5JVF9URVNUSU5HXFxcIik7XFxuK1xcbitzdHJ1Y3QgcHBlX3ZhbF9jYXNlIHtcXG4rXFx0Y29uc3QgY2hhciAqZGVzYztcXG4rXFx0dTggcHBlWzJdO1xcbitcXHR1OCBwcGVfcG9zX2JpdDtcXG4rXFx0dTggZXhwZWN0ZWRfdmFsO1xcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgcHBlX3ZhbF9jYXNlc1tdID0ge1xcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIkFsaWduZWQgaW4gYnl0ZSAwXFxcIixcXG4rXFx0XFx0LnBwZSA9IHsgMGIxMTEsIDAgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gMCxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiVW5hbGlnbmVkIGluIGJ5dGUgMFxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMDAxMTEwMDAsIDAgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gMyxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiSGlnaGVzdCBub24tY3Jvc3NpbmcgcG9zaXRpb25cXFwiLFxcbitcXHRcXHQucHBlID0geyAwYjExMTAwMDAwLCAwIH0sXFxuK1xcdFxcdC5wcGVfcG9zX2JpdCA9IDUsXFxuK1xcdFxcdC5leHBlY3RlZF92YWwgPSA3LFxcbitcXHR9LFxcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIlZhbHVlIGluIGJ5dGUgMVxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDAsIDBiMDAwMDAwMTEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gOCxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDMsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgNlxcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMDEwMDAwMDAsIDBiMDAwMDAwMDEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gNixcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDUsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgN1xcXCIsXFxuK1xcdFxcdC5wcGUgPSB7IDBiMTAwMDAwMDAsIDBiMDAwMDAwMTEgfSxcXG4rXFx0XFx0LnBwZV9wb3NfYml0ID0gNyxcXG4rXFx0XFx0LmV4cGVjdGVkX3ZhbCA9IDcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQ3Jvc3MtYnl0ZSBhbGwgemVyb3NcXFwiLFxcbitcXHRcXHQucHBlID0geyAwLCAwIH0sXFxuK1xcdFxcdC5wcGVfcG9zX2JpdCA9IDYsXFxuK1xcdFxcdC5leHBlY3RlZF92YWwgPSAwLFxcbitcXHR9LFxcbit9O1xcbitcXG4rS1VOSVRfQVJSQVlfUEFSQU1fREVTQyhwcGVfdmFsX2Nhc2VzLCBwcGVfdmFsX2Nhc2VzLCBkZXNjKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfaGVfZ2V0X3BwZV92YWwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgKnRjID0gdGVzdC1cXHUwMDNlcGFyYW1fdmFsdWU7XFxuK1xcdHU4IHBwZVtdID0geyB0Yy1cXHUwMDNlcHBlWzBdLCB0Yy1cXHUwMDNlcHBlWzFdIH07XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX3ZhbCxcXG4rXFx0XFx0XFx0aXdsX21sZF9oZV9nZXRfcHBlX3ZhbChwcGUsIHRjLVxcdTAwM2VwcGVfcG9zX2JpdCkpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0VfUEFSQU0odGVzdF9oZV9nZXRfcHBlX3ZhbCwgcHBlX3ZhbF9jYXNlc19nZW5fcGFyYW1zKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHBwZV92YWxfdGVzdHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bF9tbGRfcHBlX3ZhbF90ZXN0c1xcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuY1xcbkBAIC0wLDAgKzEsMTM4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbisvKlxcbisgKiBLVW5pdCB0ZXN0cyBmb3IgVExDIHJhdGUtc2VsZWN0aW9uIGhlbHBlciBmdW5jdGlvbnNcXG4rICpcXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uXFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNja3VuaXQvdGVzdC5oXFx1MDAzZVxcbitcXG4rI2luY2x1ZGUgXFxcInRsYy5oXFxcIlxcbitcXG4rTU9EVUxFX0lNUE9SVF9OUyhcXFwiRVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcXFwiKTtcXG4rXFxuK3N0cnVjdCBoaWdoZXN0X2Z3X21jc19jYXNlIHtcXG4rXFx0Y29uc3QgY2hhciAqZGVzYztcXG4rXFx0aW50IG5zcztcXG4rXFx0dTE2IHJ4X21jc19tYXA7XFxuK1xcdGludCBleHBlY3RlZF9tY3M7XFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGhpZ2hlc3RfZndfbWNzX2Nhc2UgaGlnaGVzdF9md19tY3NfY2FzZXNbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgMSBzdXBwb3J0cyBNQ1MgMC03XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDEsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzcsXFxuK1xcdFxcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzcsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiTlNTIDEgc3VwcG9ydHMgTUNTIDAtOFxcXCIsXFxuK1xcdFxcdC5uc3MgPSAxLFxcbitcXHRcXHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxcbitcXHRcXHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxcbitcXHR9LFxcbitcXHR7XFxuK1xcdFxcdC5kZXNjID0gXFxcIk5TUyAxIHN1cHBvcnRzIE1DUyAwLTlcXFwiLFxcbitcXHRcXHQubnNzID0gMSxcXG4rXFx0XFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSxcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgMiBzdXBwb3J0cyBNQ1MgMC05XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDIsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzkgXFx1MDAzY1xcdTAwM2MgMixcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XFxcIixcXG4rXFx0XFx0Lm5zcyA9IDQsXFxuK1xcdFxcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzggXFx1MDAzY1xcdTAwM2MgNixcXG4rXFx0XFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOCxcXG4rXFx0fSxcXG4rfTtcXG4rXFxuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoaGlnaGVzdF9md19tY3NfY2FzZXMsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzLCBkZXNjKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfaGlnaGVzdF9md19tY3Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBoaWdoZXN0X2Z3X21jc19jYXNlICp0YyA9IHRlc3QtXFx1MDAzZXBhcmFtX3ZhbHVlO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwIHZodF9jYXAgPSB7XFxuK1xcdFxcdC52aHRfbWNzLnJ4X21jc19tYXAgPSBjcHVfdG9fbGUxNih0Yy1cXHUwMDNlcnhfbWNzX21hcCksXFxuK1xcdH07XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX21jcyxcXG4rXFx0XFx0XFx0aXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoXFx1MDAyNnZodF9jYXAsIHRjLVxcdTAwM2Vuc3MpKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2hpZ2hlc3RfZndfbWNzLCBoaWdoZXN0X2Z3X21jc19jYXNlc19nZW5fcGFyYW1zKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIGhpZ2hlc3RfZndfbWNzX3Rlc3RzID0ge1xcbitcXHQubmFtZSA9IFxcXCJpd2xfbWxkX2hpZ2hlc3RfZndfbWNzX3Rlc3RzXFxcIixcXG4rXFx0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XFxuK1xcbitzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSB7XFxuK1xcdGNvbnN0IGNoYXIgKmRlc2M7XFxuK1xcdHU4IHJ4X25zcztcXG4rXFx0dTggdHhfbnNzO1xcbitcXHR1OCBleHBlY3RlZF9uc3M7XFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVodF9tYXhfbnNzX2Nhc2UgZWh0X21heF9uc3NfY2FzZXNbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJSWCBsaW1pdGVkXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MDIsXFxuK1xcdFxcdC50eF9uc3MgPSAweDgwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMixcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJUWCBsaW1pdGVkXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MGYsXFxuK1xcdFxcdC50eF9uc3MgPSAweDMwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMyxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJFcXVhbFxcXCIsXFxuK1xcdFxcdC5yeF9uc3MgPSAweDA1LFxcbitcXHRcXHQudHhfbnNzID0gMHg1MCxcXG4rXFx0XFx0LmV4cGVjdGVkX25zcyA9IDUsXFxuK1xcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmRlc2MgPSBcXFwiQm90aCB6ZXJvXFxcIixcXG4rXFx0XFx0LnJ4X25zcyA9IDB4MDAsXFxuK1xcdFxcdC50eF9uc3MgPSAweDAwLFxcbitcXHRcXHQuZXhwZWN0ZWRfbnNzID0gMCxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuZGVzYyA9IFxcXCJCb3RoIG1heFxcXCIsXFxuK1xcdFxcdC5yeF9uc3MgPSAweDBmLFxcbitcXHRcXHQudHhfbnNzID0gMHhmMCxcXG4rXFx0XFx0LmV4cGVjdGVkX25zcyA9IDE1LFxcbitcXHR9LFxcbit9O1xcbitcXG4rS1VOSVRfQVJSQVlfUEFSQU1fREVTQyhlaHRfbWF4X25zc19jYXNlcywgZWh0X21heF9uc3NfY2FzZXMsIGRlc2MpO1xcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9laHRfbWF4X25zcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGVodF9tYXhfbnNzX2Nhc2UgKnRjID0gdGVzdC1cXHUwMDNlcGFyYW1fdmFsdWU7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXFx1MDAzZWV4cGVjdGVkX25zcyxcXG4rXFx0XFx0XFx0aXdsX21sZF9nZXRfZWh0X21heF9uc3ModGMtXFx1MDAzZXJ4X25zcywgdGMtXFx1MDAzZXR4X25zcykpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0ge1xcbitcXHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfZWh0X21heF9uc3MsIGVodF9tYXhfbnNzX2Nhc2VzX2dlbl9wYXJhbXMpLFxcbitcXHR7fSxcXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZWh0X21heF9uc3NfdGVzdHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bF9tbGRfZWh0X21heF9uc3NfdGVzdHNcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IGVodF9tYXhfbnNzX3Rlc3RfY2FzZXMsXFxuK307XFxuK1xcbitrdW5pdF90ZXN0X3N1aXRlKGVodF9tYXhfbnNzX3Rlc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xcbmluZGV4IGI2YzJmYTM2NjRjYmMuLjcyZGRiNzg4YWQzZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuY1xcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfZ2V0X2Z3X3NnaShzdHJ1Y3QgaXdsX21sZF90bGNfc3RhX2NhcGEgKmNhcGEpXFxuIFxcdHJldHVybiBzZ2lfY2h3aWR0aHM7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnRcXG4rVklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGludFxcbiBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxcbiBcXHRcXHRcXHQgICBpbnQgbnNzKVxcbiB7XFxuQEAgLTE4Myw2ICsxODMsNyBAQCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2hpZ2hlc3RfZndfbWNzKTtcXG4gXFxuIHN0YXRpYyB2b2lkXFxuIGl3bF9tbGRfZmlsbF92aHRfcmF0ZXMoc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhLFxcbkBAIC0zMTYsNyArMzE3LDcgQEAgaXdsX21sZF9nZXRfZWh0X21jc19vZl9idyhlbnVtIElXTF9UTENfTUNTX1BFUl9CVyBidyxcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcXG4ge1xcbiBcXHR1OCB0eCA9IHU4X2dldF9iaXRzKHR4X25zcywgSUVFRTgwMjExX0VIVF9NQ1NfTlNTX1RYKTtcXG4gXFx0dTggcnggPSB1OF9nZXRfYml0cyhyeF9uc3MsIElFRUU4MDIxMV9FSFRfTUNTX05TU19SWCk7XFxuQEAgLTMyNSw2ICszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXFxuIFxcdCAqL1xcbiBcXHRyZXR1cm4gbWluKHR4LCByeCk7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKTtcXG4gXFxuICNkZWZpbmUgTUFYX05TU19NQ1MobWNzX251bSwgcngsIHR4KSBcXFxcXFxuIFxcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKChyeCktXFx1MDAzZXJ4X3R4X21jcyAjI21jc19udW0jIyBfbWF4X25zcywgXFxcXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXFxuaW5kZXggYzdmZjIwOWM5YWI2Ni4uMjY5ZDBmMmE2MWVmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oXFxuQEAgLTIzLDQgKzIzLDEwIEBAIGludCBpd2xfbWxkX3NlbmRfdGxjX2RoYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCB1OCBzdGFfaWQsIHUzMiB0eXBlLCB1MzIgZGF0YSk7XFxuIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mKTtcXG4gXFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbitpbnQgaXdsX21sZF9nZXRfaGlnaGVzdF9md19tY3MoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcCxcXG4rXFx0XFx0XFx0ICAgICAgIGludCBuc3MpO1xcbit1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XFxuKyNlbmRpZlxcbitcXG4gI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjE5OjAxLjg0OTg5NDc3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTkzMzYwMDU0MjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNhNjJiODg2ZTMwZDI0ODRjMDVmOTcxOWE3YzAwNjNkZWQ3OWRhZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxMzoxOTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbmluZGV4IDc5NTdhYzExYjBjZDUuLmZkMGNlZTlhOTJiNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmNcbkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIHU4IGl3bF9tbGRfZ2V0X3VhcHNkX2FjcyhzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuIFx0cmV0dXJuIHVhcHNkX2FjcyB8IHVhcHNkX2FjcyBcdTAwM2NcdTAwM2MgNDtcbiB9XG4gXG4tc3RhdGljIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXG4rVklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIHU4IGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwodTggKnBwZSwgdTggcHBlX3Bvc19iaXQpXG4ge1xuIFx0dTggYnl0ZV9udW0gPSBwcGVfcG9zX2JpdCAvIDg7XG4gXHR1OCBiaXRfbnVtID0gcHBlX3Bvc19iaXQgJSA4O1xuQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdClcbiBcbiBcdHJldHVybiByZXM7XG4gfVxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2hlX2dldF9wcGVfdmFsKTtcbiBcbiBzdGF0aWMgdm9pZCBpd2xfbWxkX3BhcnNlX3BwZShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBpd2xfaGVfcGt0X2V4dF92MiAqcGt0X2V4dCwgdTggbnNzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbmluZGV4IDk4ZDY5MzIzNWM2NjMuLjg2NTliYjdiZjZjZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmhcbkBAIC0zMDAsNCArMzAwLDggQEAgdm9pZCBpd2xfbWxkX3JlbW92ZV9uYW5fbWdtdF9zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCxcbiB2b2lkIGl3bF9tbGRfcmVtb3ZlX25hbl9tY2FzdF9kYXRhX3N0YShzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpd2xfbWxkX2ludF9zdGEgKnN0YSk7XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG4rdTggaXdsX21sZF9oZV9nZXRfcHBlX3ZhbCh1OCAqcHBlLCB1OCBwcGVfcG9zX2JpdCk7XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIF9faXdsX21sZF9zdGFfaF9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuaW5kZXggZWZhNjE2MzhiOGVlYi4uMzIwMWRjZTlhNWIwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsNiArMSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiBpd2xtbGQtdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gdXRpbHMubyBsaW5rLm8gcngubyBhZ2cubyBsaW5rLXNlbGVjdGlvbi5vXG4gaXdsbWxkLXRlc3RzLXkgKz0gY2hhbl9sb2FkX3RocmVzaC5vXG4raXdsbWxkLXRlc3RzLXkgKz0gdGxjLm8gc3RhLm9cbiBcbiBjY2ZsYWdzLXkgKz0gLUkkKHNyYykvLi4vXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICs9IGl3bG1sZC10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvc3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy9zdGEuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY3NTQwODY2MWFmMjhcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3N0YS5jXG5AQCAtMCwwICsxLDg2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4rLypcbisgKiBLVW5pdCB0ZXN0cyBmb3IgU1RBIGNhcGFiaWxpdHkgaGVscGVyIGZ1bmN0aW9uc1xuKyAqXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IEludGVsIENvcnBvcmF0aW9uXG4rICovXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJzdGEuaFwiXG4rXG4rTU9EVUxFX0lNUE9SVF9OUyhcIkVYUE9SVEVEX0ZPUl9LVU5JVF9URVNUSU5HXCIpO1xuK1xuK3N0cnVjdCBwcGVfdmFsX2Nhc2Uge1xuK1x0Y29uc3QgY2hhciAqZGVzYztcbitcdHU4IHBwZVsyXTtcbitcdHU4IHBwZV9wb3NfYml0O1xuK1x0dTggZXhwZWN0ZWRfdmFsO1xuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwcGVfdmFsX2Nhc2UgcHBlX3ZhbF9jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiQWxpZ25lZCBpbiBieXRlIDBcIixcbitcdFx0LnBwZSA9IHsgMGIxMTEsIDAgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gMCxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiVW5hbGlnbmVkIGluIGJ5dGUgMFwiLFxuK1x0XHQucHBlID0geyAwYjAwMTExMDAwLCAwIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDMsXG4rXHRcdC5leHBlY3RlZF92YWwgPSA3LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkhpZ2hlc3Qgbm9uLWNyb3NzaW5nIHBvc2l0aW9uXCIsXG4rXHRcdC5wcGUgPSB7IDBiMTExMDAwMDAsIDAgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gNSxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDcsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiVmFsdWUgaW4gYnl0ZSAxXCIsXG4rXHRcdC5wcGUgPSB7IDAsIDBiMDAwMDAwMTEgfSxcbitcdFx0LnBwZV9wb3NfYml0ID0gOCxcbitcdFx0LmV4cGVjdGVkX3ZhbCA9IDMsXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiQ3Jvc3MtYnl0ZSBhdCBiaXQgNlwiLFxuK1x0XHQucHBlID0geyAwYjAxMDAwMDAwLCAwYjAwMDAwMDAxIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDYsXG4rXHRcdC5leHBlY3RlZF92YWwgPSA1LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkNyb3NzLWJ5dGUgYXQgYml0IDdcIixcbitcdFx0LnBwZSA9IHsgMGIxMDAwMDAwMCwgMGIwMDAwMDAxMSB9LFxuK1x0XHQucHBlX3Bvc19iaXQgPSA3LFxuK1x0XHQuZXhwZWN0ZWRfdmFsID0gNyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJDcm9zcy1ieXRlIGFsbCB6ZXJvc1wiLFxuK1x0XHQucHBlID0geyAwLCAwIH0sXG4rXHRcdC5wcGVfcG9zX2JpdCA9IDYsXG4rXHRcdC5leHBlY3RlZF92YWwgPSAwLFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MocHBlX3ZhbF9jYXNlcywgcHBlX3ZhbF9jYXNlcywgZGVzYyk7XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9oZV9nZXRfcHBlX3ZhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHBwZV92YWxfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1x0dTggcHBlW10gPSB7IHRjLVx1MDAzZXBwZVswXSwgdGMtXHUwMDNlcHBlWzFdIH07XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdGMtXHUwMDNlZXhwZWN0ZWRfdmFsLFxuK1x0XHRcdGl3bF9tbGRfaGVfZ2V0X3BwZV92YWwocHBlLCB0Yy1cdTAwM2VwcGVfcG9zX2JpdCkpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcHBlX3ZhbF90ZXN0X2Nhc2VzW10gPSB7XG4rXHRLVU5JVF9DQVNFX1BBUkFNKHRlc3RfaGVfZ2V0X3BwZV92YWwsIHBwZV92YWxfY2FzZXNfZ2VuX3BhcmFtcyksXG4rXHR7fSxcbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcHBlX3ZhbF90ZXN0cyA9IHtcbitcdC5uYW1lID0gXCJpd2xfbWxkX3BwZV92YWxfdGVzdHNcIixcbitcdC50ZXN0X2Nhc2VzID0gcHBlX3ZhbF90ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZShwcGVfdmFsX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90ZXN0cy90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL3RsYy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzA0YTFiYjFhNWVhZFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGVzdHMvdGxjLmNcbkBAIC0wLDAgKzEsMTM4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4rLypcbisgKiBLVW5pdCB0ZXN0cyBmb3IgVExDIHJhdGUtc2VsZWN0aW9uIGhlbHBlciBmdW5jdGlvbnNcbisgKlxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqL1xuKyNpbmNsdWRlIFx1MDAzY2t1bml0L3Rlc3QuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFwidGxjLmhcIlxuK1xuK01PRFVMRV9JTVBPUlRfTlMoXCJFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1wiKTtcbitcbitzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSB7XG4rXHRjb25zdCBjaGFyICpkZXNjO1xuK1x0aW50IG5zcztcbitcdHUxNiByeF9tY3NfbWFwO1xuK1x0aW50IGV4cGVjdGVkX21jcztcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSBoaWdoZXN0X2Z3X21jc19jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiTlNTIDEgc3VwcG9ydHMgTUNTIDAtN1wiLFxuK1x0XHQubnNzID0gMSxcbitcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfNyxcbitcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTNyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJOU1MgMSBzdXBwb3J0cyBNQ1MgMC04XCIsXG4rXHRcdC5uc3MgPSAxLFxuK1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84LFxuK1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIk5TUyAxIHN1cHBvcnRzIE1DUyAwLTlcIixcbitcdFx0Lm5zcyA9IDEsXG4rXHRcdC5yeF9tY3NfbWFwID0gSUVFRTgwMjExX1ZIVF9NQ1NfU1VQUE9SVF8wXzksXG4rXHRcdC5leHBlY3RlZF9tY3MgPSBJV0xfVExDX01OR19IVF9SQVRFX01DUzksXG4rXHR9LFxuK1x0e1xuK1x0XHQuZGVzYyA9IFwiTlNTIDIgc3VwcG9ydHMgTUNTIDAtOVwiLFxuK1x0XHQubnNzID0gMixcbitcdFx0LnJ4X21jc19tYXAgPSBJRUVFODAyMTFfVkhUX01DU19TVVBQT1JUXzBfOSBcdTAwM2NcdTAwM2MgMixcbitcdFx0LmV4cGVjdGVkX21jcyA9IElXTF9UTENfTU5HX0hUX1JBVEVfTUNTOSxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJOU1MgNCBzdXBwb3J0cyBNQ1MgMC04XCIsXG4rXHRcdC5uc3MgPSA0LFxuK1x0XHQucnhfbWNzX21hcCA9IElFRUU4MDIxMV9WSFRfTUNTX1NVUFBPUlRfMF84IFx1MDAzY1x1MDAzYyA2LFxuK1x0XHQuZXhwZWN0ZWRfbWNzID0gSVdMX1RMQ19NTkdfSFRfUkFURV9NQ1M4LFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoaGlnaGVzdF9md19tY3NfY2FzZXMsIGhpZ2hlc3RfZndfbWNzX2Nhc2VzLCBkZXNjKTtcbitcbitzdGF0aWMgdm9pZCB0ZXN0X2hpZ2hlc3RfZndfbWNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgaGlnaGVzdF9md19tY3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1x0c3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCB2aHRfY2FwID0ge1xuK1x0XHQudmh0X21jcy5yeF9tY3NfbWFwID0gY3B1X3RvX2xlMTYodGMtXHUwMDNlcnhfbWNzX21hcCksXG4rXHR9O1xuK1xuK1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLVx1MDAzZWV4cGVjdGVkX21jcyxcbitcdFx0XHRpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhcdTAwMjZ2aHRfY2FwLCB0Yy1cdTAwM2Vuc3MpKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGhpZ2hlc3RfZndfbWNzX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0VfUEFSQU0odGVzdF9oaWdoZXN0X2Z3X21jcywgaGlnaGVzdF9md19tY3NfY2FzZXNfZ2VuX3BhcmFtcyksXG4rXHR7fSxcbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgaGlnaGVzdF9md19tY3NfdGVzdHMgPSB7XG4rXHQubmFtZSA9IFwiaXdsX21sZF9oaWdoZXN0X2Z3X21jc190ZXN0c1wiLFxuK1x0LnRlc3RfY2FzZXMgPSBoaWdoZXN0X2Z3X21jc190ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZShoaWdoZXN0X2Z3X21jc190ZXN0cyk7XG4rXG4rc3RydWN0IGVodF9tYXhfbnNzX2Nhc2Uge1xuK1x0Y29uc3QgY2hhciAqZGVzYztcbitcdHU4IHJ4X25zcztcbitcdHU4IHR4X25zcztcbitcdHU4IGV4cGVjdGVkX25zcztcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSBlaHRfbWF4X25zc19jYXNlc1tdID0ge1xuK1x0e1xuK1x0XHQuZGVzYyA9IFwiUlggbGltaXRlZFwiLFxuK1x0XHQucnhfbnNzID0gMHgwMixcbitcdFx0LnR4X25zcyA9IDB4ODAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSAyLFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIlRYIGxpbWl0ZWRcIixcbitcdFx0LnJ4X25zcyA9IDB4MGYsXG4rXHRcdC50eF9uc3MgPSAweDMwLFxuK1x0XHQuZXhwZWN0ZWRfbnNzID0gMyxcbitcdH0sXG4rXHR7XG4rXHRcdC5kZXNjID0gXCJFcXVhbFwiLFxuK1x0XHQucnhfbnNzID0gMHgwNSxcbitcdFx0LnR4X25zcyA9IDB4NTAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSA1LFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkJvdGggemVyb1wiLFxuK1x0XHQucnhfbnNzID0gMHgwMCxcbitcdFx0LnR4X25zcyA9IDB4MDAsXG4rXHRcdC5leHBlY3RlZF9uc3MgPSAwLFxuK1x0fSxcbitcdHtcbitcdFx0LmRlc2MgPSBcIkJvdGggbWF4XCIsXG4rXHRcdC5yeF9uc3MgPSAweDBmLFxuK1x0XHQudHhfbnNzID0gMHhmMCxcbitcdFx0LmV4cGVjdGVkX25zcyA9IDE1LFxuK1x0fSxcbit9O1xuK1xuK0tVTklUX0FSUkFZX1BBUkFNX0RFU0MoZWh0X21heF9uc3NfY2FzZXMsIGVodF9tYXhfbnNzX2Nhc2VzLCBkZXNjKTtcbitcbitzdGF0aWMgdm9pZCB0ZXN0X2VodF9tYXhfbnNzKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZWh0X21heF9uc3NfY2FzZSAqdGMgPSB0ZXN0LVx1MDAzZXBhcmFtX3ZhbHVlO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRjLVx1MDAzZWV4cGVjdGVkX25zcyxcbitcdFx0XHRpd2xfbWxkX2dldF9laHRfbWF4X25zcyh0Yy1cdTAwM2VyeF9uc3MsIHRjLVx1MDAzZXR4X25zcykpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZWh0X21heF9uc3NfdGVzdF9jYXNlc1tdID0ge1xuK1x0S1VOSVRfQ0FTRV9QQVJBTSh0ZXN0X2VodF9tYXhfbnNzLCBlaHRfbWF4X25zc19jYXNlc19nZW5fcGFyYW1zKSxcbitcdHt9LFxuK307XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBlaHRfbWF4X25zc190ZXN0cyA9IHtcbitcdC5uYW1lID0gXCJpd2xfbWxkX2VodF9tYXhfbnNzX3Rlc3RzXCIsXG4rXHQudGVzdF9jYXNlcyA9IGVodF9tYXhfbnNzX3Rlc3RfY2FzZXMsXG4rfTtcbitcbitrdW5pdF90ZXN0X3N1aXRlKGVodF9tYXhfbnNzX3Rlc3RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jXG5pbmRleCBiNmMyZmEzNjY0Y2JjLi43MmRkYjc4OGFkM2UwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5jXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB1OCBpd2xfbWxkX2dldF9md19zZ2koc3RydWN0IGl3bF9tbGRfdGxjX3N0YV9jYXBhICpjYXBhKVxuIFx0cmV0dXJuIHNnaV9jaHdpZHRocztcbiB9XG4gXG4tc3RhdGljIGludFxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCBpbnRcbiBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuIFx0XHRcdCAgIGludCBuc3MpXG4ge1xuQEAgLTE4Myw2ICsxODMsNyBAQCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyk7XG4gXG4gc3RhdGljIHZvaWRcbiBpd2xfbWxkX2ZpbGxfdmh0X3JhdGVzKHN0cnVjdCBpd2xfbWxkX3RsY19zdGFfY2FwYSAqY2FwYSxcbkBAIC0zMTYsNyArMzE3LDcgQEAgaXdsX21sZF9nZXRfZWh0X21jc19vZl9idyhlbnVtIElXTF9UTENfTUNTX1BFUl9CVyBidyxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHU4IGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKHU4IHJ4X25zcywgdTggdHhfbnNzKVxuK1ZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCB1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcylcbiB7XG4gXHR1OCB0eCA9IHU4X2dldF9iaXRzKHR4X25zcywgSUVFRTgwMjExX0VIVF9NQ1NfTlNTX1RYKTtcbiBcdHU4IHJ4ID0gdThfZ2V0X2JpdHMocnhfbnNzLCBJRUVFODAyMTFfRUhUX01DU19OU1NfUlgpO1xuQEAgLTMyNSw2ICszMjYsNyBAQCBzdGF0aWMgdTggaXdsX21sZF9nZXRfZWh0X21heF9uc3ModTggcnhfbnNzLCB1OCB0eF9uc3MpXG4gXHQgKi9cbiBcdHJldHVybiBtaW4odHgsIHJ4KTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKTtcbiBcbiAjZGVmaW5lIE1BWF9OU1NfTUNTKG1jc19udW0sIHJ4LCB0eCkgXFxcbiBcdGl3bF9tbGRfZ2V0X2VodF9tYXhfbnNzKChyeCktXHUwMDNlcnhfdHhfbWNzICMjbWNzX251bSMjIF9tYXhfbnNzLCBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RsYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbmluZGV4IGM3ZmYyMDljOWFiNjYuLjI2OWQwZjJhNjFlZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90bGMuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGxjLmhcbkBAIC0yMyw0ICsyMywxMCBAQCBpbnQgaXdsX21sZF9zZW5kX3RsY19kaGMoc3RydWN0IGl3bF9tbGQgKm1sZCwgdTggc3RhX2lkLCB1MzIgdHlwZSwgdTMyIGRhdGEpO1xuIHZvaWQgaXdsX21sZF90bGNfdXBkYXRlX3BoeShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuIFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpO1xuIFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxuK2ludCBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2aHRfY2FwLFxuK1x0XHRcdCAgICAgICBpbnQgbnNzKTtcbit1OCBpd2xfbWxkX2dldF9laHRfbWF4X25zcyh1OCByeF9uc3MsIHU4IHR4X25zcyk7XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIF9faXdsX21sZF90bGNfaF9fICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzoxOTowMS44NDk4OTYxMjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTMzNjAwNTE3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBpd2x3aWZpIE1MRCBLVW5pdCBUZXN0IEFkZGl0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIEtVbml0IHRlc3RzIHRvIHRoZSBpd2x3aWZpIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGRyaXZlci4gVGhlIGtleSBmaWxlcyBpbXBhY3RlZCBhcmUgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpc24ndCB3b3J0aCBmdXp6aW5nLCBhbmQgaGVyZSdzIHdoeTpcblxuRmlyc3QsIHRoZXJlIGFyZSAqbm8qIGZ1bmN0aW9uYWwgY29kZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgdmlzaWJpbGl0eSBvZiBleGlzdGluZyBoZWxwZXIgZnVuY3Rpb25zOiBgaXdsX21sZF9oZV9nZXRfcHBlX3ZhbGAsIGBpd2xfbWxkX2dldF9oaWdoZXN0X2Z3X21jc2AsIGFuZCBgaXdsX21sZF9nZXRfZWh0X21heF9uc3NgLiBUaGVzZSB3ZXJlIG1hZGUgYFZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVGAgYW5kIGBFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVRgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBwcmVjaXNlbHkgZm9yIG1ha2luZyB0aGVtIGFjY2Vzc2libGUgdG8gdGhlIG5ldyBLVW5pdCB0ZXN0IG1vZHVsZS4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBpc24ndCB0b3VjaGVkIGF0IGFsbC5cblxuU2Vjb25kLCB0aGUgYnVsayBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgS1VuaXQgdGVzdCBmaWxlcywgc3BlY2lmaWNhbGx5IGBzdGEuY2AgYW5kIGB0bGMuY2AgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3Rlc3RzL2AuICBUaGF0IG1lYW5zIHRoaXMgaXMgcHVyZWx5IGZvciB0ZXN0IGNvdmVyYWdlLlxuXG5UaGlyZCwgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGJlaW5nIGFuIEludGVsIFdpLUZpIGRyaXZlciwgcmVsaWVzIG9uICphY3R1YWwqIGhhcmR3YXJlLiBUaGlzIGlzbid0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcmFjdGljYWxseSBlbXVsYXRlZCB3aXRoIGZ1bGwgZmlkZWxpdHkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGF0IHdlIHdvdWxkIG5lZWQgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nIHZpYSBTeXprYWxsZXIgb3Igc2ltaWxhciB0b29scy4gVGhpcyBsaW1pdHMgdGhlIHNjb3BlIG9mIGFueSBwb3RlbnRpYWwgZnV6emluZy5cblxuTXkgcmVhZGluZyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGFsaWducyB3aXRoIHRoaXMgYXNzZXNzbWVudC4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmVuJ3Qgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IGlzIHRoZSBhZGRpdGlvbiBvZiB0ZXN0cyBhbmQgbm90IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgaXRzZWxmLlxuXG5UaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBiZSBgZmFsc2VgLiBJJ2xsIHNldCB0aGUgcmVzdWx0IGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzcxLCJPdXRwdXRUb2tlbnMiOjg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDEzOjUxOjE1LjQ1MDQxNjg3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIEtVbml0IHVuaXQgdGVzdHMgYW5kIGV4cG9ydHMgZXhpc3Rpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIEtVbml0IHRlc3Rpbmcgd2l0aG91dCBhbHRlcmluZyBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuIEFkZGl0aW9uYWxseSwgaXdsd2lmaSBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBLVW5pdCB1bml0IHRlc3RzIGFuZCBleHBvcnRzIGV4aXN0aW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGZvciBLVW5pdCB0ZXN0aW5nIHdpdGhvdXQgYWx0ZXJpbmcgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiBBZGRpdGlvbmFsbHksIGl3bHdpZmkgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxMzo1MToxNS40NTA0Mzg5NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbkrcl[1] Phase: Running StartedAt: 2026-08-30 13:51:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkrcl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 13:51:26 +0000 UTC FinishedAt: 2026-08-30 13:51:31 +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,}