Name: series-workflowspllv Phase: Failed StartedAt: 2026-08-10 16:20:24 +0000 UTC FinishedAt: 2026-08-10 17:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspllv[0] Phase: Succeeded StartedAt: 2026-08-10 16:20:24 +0000 UTC FinishedAt: 2026-08-10 17:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspllv[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 16:20:24 +0000 UTC FinishedAt: 2026-08-10 17:14:00 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwMjA0ZjI4MWY1ZmY1ZDFjZmRjMGFiY2IzNjc5OWJjNmNhMjYwY2NcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNzoxMzoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgJiM0MzsxLDE0MiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcJiMzNDsvXCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xuJiM0MztcbiYjNDM7XHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcJiMzNDtwcm9nX3RyaWdnZXJlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCYjMzQ7ZXJyXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRydW5fdGVzdChza2VsKTtcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxuJiM0MztcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXCYjMzQ7c3lzY2FsbHNcJiMzNDssIFwmIzM0O3N5c19lbnRlcl9nZXRjd2RcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiYjNDM7XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4mIzQzO1x0XHQuY3R4X2luID0gYXJncyxcbiYjNDM7XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbiYjNDM7XHQpO1xuJiM0MztcdGludCBmZCwgZXJyO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0ge307XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuJiM0MztcdFx0LmN0eF9pbiA9IGFyZ3MsXG4mIzQzO1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4mIzQzO1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4mIzQzO1x0KTtcbiYjNDM7XHRpbnQgZmQsIGVycjtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9idGZcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbiYjNDM7XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RyYWNlcG9pbnRcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzeXNfZXhpdFwmIzM0OykpXG4mIzQzO1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RyYWNlcG9pbnRfYWxpYXNcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyYXdfdHBfYmFyZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9ub25fc3lzY2FsbFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4mIzQzO1xuJiM0MztcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICYjNDM7MSwxMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IHRhcmdldF9waWQ7XG4mIzQzO2ludCBwcm9nX3RyaWdnZXJlZDtcbiYjNDM7bG9uZyBlcnI7XG4mIzQzO2NoYXIgY29waWVkX2J5dGU7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxuJiM0Mzt7XG4mIzQzO1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cHJvZ190cmlnZ2VyZWQgPSAxO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbiYjNDM7XHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHAucy9zeXNfZW50ZXJcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuJiM0MztcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbiYjNDM7e1xuJiM0MztcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVx1MDAzZWFyZ3NbMF0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuJiM0MztcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAuc1wmIzM0OylcbiYjNDM7aW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdGlmICgoX191NjQpcmVncyA9PSAweDEyMzRVTEwgXHUwMDI2XHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXG4mIzQzO1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgJiM0MzsgKF9fdTY0KWlkO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3RwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICYjNDM7MSwxOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbiYjNDM7U0VDKFwmIzM0O3RwX2J0Zi5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5AQCAtNzYsNyAmIzQzOzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwmIzM0OyxcbiYjNDM7XHRcJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCYjMzQ7LFxuJiM0MztcdC5pbnNucyA9IHtcbiYjNDM7XHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4mIzQzO1x0QlBGX0VYSVRfSU5TTigpLFxuJiM0MztcdH0sXG4mIzQzO1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbiYjNDM7XHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuJiM0MztcdC5rZnVuYyA9IFwmIzM0O3N5c19lbnRlclwmIzM0OyxcbiYjNDM7XHQucmVzdWx0ID0gQUNDRVBULFxuJiM0MztcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHQucnVucyA9IC0xLFxuJiM0Mzt9LFxuJiM0Mzt7XG4mIzQzO1x0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCYjMzQ7LFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgJiM0Mzs5OCw3IEBAXG4gXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuIFx0LmtmdW5jID0gXCYjMzQ7c2NoZWRfc3dpdGNoXCYjMzQ7LFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcJiMzNDtPbmx5IGZlbnRyeS9mZXhpdC9mc2Vzc2lvbi9mbW9kX3JldCwgbHNtLCBpdGVyLCB1cHJvYmUsIGFuZCBzdHJ1Y3Rfb3BzIHByb2dyYW1zIGNhbiBiZSBzbGVlcGFibGVcJiMzNDssXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7LFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzAyMDRmMjgxZjVmZjVkMWNmZGMwYWJjYjM2Nzk5YmM2Y2EyNjBjYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE3OjEzOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xOTUwMGI3ODVlZTMyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKQEAgLTAsMCAmIzQzOzEsMTQyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW1BBVEhfTUFYXSA9ICYjMzQ7LyYjMzQ7OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3RhcmdldF9waWQgPSBnZXRwaWQoKTsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCA9IDA7CiYjNDM7CXNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyID0gMDsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtjb3BpZWRfYnl0ZSA9IDA7CiYjNDM7CiYjNDM7CXN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCwgMSwgJiMzNDtwcm9nX3RyaWdnZXJlZCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyLCAwLCAmIzM0O2VyciYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7Y29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCAmIzM0O2NvcGllZF9ieXRlJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csCiYjNDM7CQkJCSBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDtwcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnVuX3Rlc3Qoc2tlbCk7CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7CiYjNDM7CWlmIChBU1NFUlRfT0tfUFRSKGxpbmssICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssICYjMzQ7YXR0YWNoX3Nob3VsZF9mYWlsJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsCiYjNDM7CQkJCQkJICAmIzM0O3N5c19lbnRlciYjMzQ7KTsKJiM0MzsJaWYgKEFTU0VSVF9PS19QVFIobGluaywgJiMzNDthdHRhY2gmIzM0OykpCiYjNDM7CQlicGZfbGlua19fZGVzdHJveShsaW5rKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfdHBfYmFyZSwKJiM0MzsJCQkJCSAgICAgICYjMzQ7c3lzY2FsbHMmIzM0OywgJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkJiMzNDspOwomIzQzOwlpZiAoQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CV9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspOwomIzQzOwlBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sICYjMzQ7dGVzdF9ydW5fcmV0dmFsJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJX191NjQgYXJnc1syXSA9IHt9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJCS5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfRVJSKGVyciwgJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RwX2J0ZiYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHAmIzM0OykpCiYjNDM7CQlydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHJhY2Vwb2ludCYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3N5c19leGl0JiMzNDspKQomIzQzOwkJcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cmFjZXBvaW50X2FsaWFzJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfb25seShza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHJhY2Vwb2ludF9hbGlhcyYjMzQ7KSkKJiM0MzsJCXRlc3RfYXR0YWNoX29ubHkoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF9yYXdfdHBfYmFyZShza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF90cF9iYXJlKHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bihza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9ub25fZmF1bHRhYmxlJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHBfbm9uX3N5c2NhbGwmIzM0OykpCiYjNDM7CQl0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3QmIzM0OykpCiYjNDM7CQlSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7CiYjNDM7CiYjNDM7CXRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jCkBAIC0wLDAgJiM0MzsxLDExMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS91bmlzdGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfY29yZV9yZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MztpbnQgdGFyZ2V0X3BpZDsKJiM0MztpbnQgcHJvZ190cmlnZ2VyZWQ7CiYjNDM7bG9uZyBlcnI7CiYjNDM7Y2hhciBjb3BpZWRfYnl0ZTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKQomIzQzO3sKJiM0MzsJZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKCZhbXA7Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcHJvZ190cmlnZ2VyZWQgPSAxOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZCkKJiM0Mzt7CiYjNDM7CWlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgJmd0OyZndDsgMzIpICE9IHRhcmdldF9waWQgfHwKJiM0MzsJICAgIGlkICE9IF9fTlJfZ2V0Y3dkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zeXNfZW50ZXImIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKQomIzQzO3sKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCB8fAomIzQzOwkgICAgaWQgIT0gX19OUl9nZXRjd2QpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkJiMzNDspCiYjNDM7aW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpCiYjNDM7ewomIzQzOwlpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpICZndDsmZ3Q7IDMyKSAhPSB0YXJnZXRfcGlkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLSZndDthcmdzWzBdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRfcmVncyAqcmVnczsKJiM0MzsKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3Jhd190cC5zJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucyYjMzQ7KQomIzQzO2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlciYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMICZhbXA7JmFtcDsgKF9fdTY0KWlkID09IDB4NTY3OFVMTCkKJiM0MzsJCXJldHVybiAoX191NjQpcmVncyAmIzQzOyAoX191NjQpaWQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zY2hlZC9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDc0OGE5NTIwYmIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCkBAIC0wLDAgJiM0MzsxLDE4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi8KJiM0MztTRUMoJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMKaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYwpAQCAtNzYsNyAmIzQzOzc2LDIwIEBACiAJLnJ1bnMgPSAtMSwKIH0sCiB7Ci0JJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0JiMzNDssCiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7LAomIzQzOwkuaW5zbnMgPSB7CiYjNDM7CUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKJiM0MzsJQlBGX0VYSVRfSU5TTigpLAomIzQzOwl9LAomIzQzOwkucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLAomIzQzOwkuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLAomIzQzOwkua2Z1bmMgPSAmIzM0O3N5c19lbnRlciYjMzQ7LAomIzQzOwkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CS5ydW5zID0gLTEsCiYjNDM7fSwKJiM0Mzt7CiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlJiMzNDssCiAJLmluc25zID0gewogCUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKIAlCUEZfRVhJVF9JTlNOKCksCkBAIC04NSw3ICYjNDM7OTgsNyBAQAogCS5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsCiAJLmtmdW5jID0gJiMzNDtzY2hlZF9zd2l0Y2gmIzM0OywKIAkucmVzdWx0ID0gUkVKRUNULAotCS5lcnJzdHIgPSAmIzM0O09ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZSYjMzQ7LAomIzQzOwkuZXJyc3RyID0gJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7LAogCS5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSwKIAkucnVucyA9IC0xLAogfSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzNwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBTbGVlcGFibGUgVHJhY2Vwb2ludCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3Mgc3VwcG9zZWRseSBhZGRpbmcgdGVzdHMgZm9yIHNsZWVwYWJsZSB0cmFjZXBvaW50cyB3aXRoaW4gQlBGLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzZWxmLWNvbnRhaW5lZDsgSSBkb24mIzM5O3Qgd2FudCBhbnkgdW5leHBlY3RlZCByZWdyZXNzaW9ucyBpbiBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgY2hlY2tpbmcgaWYgYW55IGZpbGVzICpvdXRzaWRlKiBvZiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeSBoYXZlIGJlZW4gdG91Y2hlZC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBhcmVhIG9mIGNvbmNlcm4gd2hlbiBhZGRpbmcgbmV3IHNlbGYgdGVzdHMuCgpBbHJpZ2h0LCB0aGUgZGlmZiBjb25maXJtcyBpdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGlzb2xhdGVkIHdpdGhpbiB0aGF0IHNwZWNpZmljIHRlc3RpbmcgZnJhbWV3b3JrLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBtb2RpZmllZCBmaWxlcyBqdXN0IHRvIGNvbmZpcm0uIE9rYXksIEkgc2VlOgoKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGV4cGVjdGVkLCB0aGUgdGVzdCBkZWZpbml0aW9ucy4KKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGFsc28gZXhwZWN0ZWQsIHRoZSBzdWNjZXNzZnVsIHByb2dyYW0gdG8gdXNlLgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgIC0gQW5kIG9mIGNvdXJzZSwgdGhlIGZhaWx1cmUgdGVzdCBwcm9ncmFtLgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2AgLSBUaGlzIGlzIGludGVyZXN0aW5nLiBMb29rcyBsaWtlIHdlJiMzOTtyZSB1cGRhdGluZyB0aGUgdmVyaWZpZXIgdG8gYWxsb3cgZm9yIHRoZXNlIHNsZWVwYWJsZSB0cmFjZXBvaW50cy4gVGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuCgpJIHN0aWxsIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdXNpbmcgYGdpdCBsb2dgIG9yIGBnaXQgc2hvd2AsIGp1c3QgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBzdXJwcmlzZXMgaW4gdGhlIG92ZXJhbGwgY29tbWl0LiBKdXN0IGEgc2FuaXR5IGNoZWNrIGF0IHRoaXMgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtNzgte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jOjc5Olx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYy04MC1cdC5pbnNucyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTA4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyB0aGUgQ29tbWl0IERpZmYqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBkaWZmLi4uIGl0IGxvb2tzIGxpa2UgdGhlICpjb21wbGV0ZSogZGlmZiBmb3IgdGhlIGNvbW1pdCwgcmlnaHQ/IExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBzZWVpbmcgdGhlIHdob2xlIHBpY3R1cmUgaGVyZS4gTm93LCBsZXQgbWUgcXVpY2tseSBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlLiBBaCwgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcuJiMzNDsgUmlnaHQsIHRoYXQgbmFycm93cyBpdCBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoYXQmIzM5O3MgZ29vZDsgaXQga2VlcHMgdGhlIHNjb3BlIHJlbGF0aXZlbHkgY29udGFpbmVkLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIHRob3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBrZXJuZWwtbGV2ZWwgbW9kaWZpY2F0aW9ucyBpbiBIRUFEIHRoYXQgbWlnaHQgcmVsYXRlIHRvIHRoaXMgcGFydGljdWxhciBhcmVhLiBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzeXN0ZW0gYmVmb3JlIEkgZGlnIGZ1cnRoZXIuIFRoaXMgaXMgYSBjb21tb24gc2l0dWF0aW9uIHdpdGggc3l6LWNsdXN0ZXIgcGF0Y2hlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jPTEyPVNFQyhcJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2hcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jOjEzOl9fZmFpbHVyZSBfX21zZyhcJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMtMTQtaW50IEJQRl9QUk9HKGhhbmRsZV9zY2hlZF9zd2l0Y2gsIGJvb2wgcHJlZW1wdCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAwLVx0LnJlc3VsdCA9IFJFSkVDVCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYzoxMDE6XHQuZXJyc3RyID0gXCYjMzQ7U2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAyLVx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGlnZ2luZyBEZWVwZXIgaW50byBDb21taXQgU2NvcGUqKgoKUmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIHNlZWluZyB0aGUgd2hvbGUgcGljdHVyZS4gSSYjMzk7dmUgZ290IHRoaXMgY29tbWl0IGluIGZyb250IG9mIG1lLCBidXQgSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgaXNvbGF0ZWQuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIG1pc3Mgc29tZXRoaW5nIGNydWNpYWwsIGVzcGVjaWFsbHkgaW4gYSBsYXJnZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgZGV0YWlscyBhZ2FpbiwgYW5kIGxvb2sgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIGBnaXRgIGNvbW1hbmQgb3IgdXNlIG15IElERSYjMzk7cyBmdW5jdGlvbmFsaXR5IHRvIGlkZW50aWZ5ICphbGwqIGZpbGVzIHRvdWNoZWQgYnkgdGhpcyBjb21taXQsIG5vdCBqdXN0IHRoZSBpbW1lZGlhdGVseSBvYnZpb3VzIG9uZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgcmV2aWV3IHByb2Nlc3MuIFRoaXMgaXMgdG8gc2VlIGlmIGFueSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZXMgd2VyZSBpbmNsdWRlZCwgYW5kIEkgYWxzbyBuZWVkIHRvIHNlZSBpZiBhbnkgZGVwZW5kIG9uIHRoaXMgY2hhbmdlLiBUaGlzIHF1aWNrIGNoZWNrIHdpbGwgZ2l2ZSBtZSBjb25maWRlbmNlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGltcGFjdHMgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IGJsaW5kc2lkZWQgbGF0ZXIgYnkgYSBjYXNjYWRpbmcgZWZmZWN0IEkgZGlkbiYjMzk7dCBhbnRpY2lwYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBDdXJyZW50IENoYW5nZXMgd2l0aCBHaXQqKgoKT2theSwgdGltZSB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiB3aGF0IEkmIzM5O3ZlIGJlZW4gd29ya2luZyBvbiwgcHJvYmFibHkgYmVmb3JlIEkgY29tbWl0IG9yIHB1c2guIFRoZSBmYXN0ZXN0IHdheSB0byBzZWUgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdG8gdXNlIGBnaXQgc2hvdyAtLXN0YXQgSEVBRGAuIFRoYXQgY29tbWFuZCB3aWxsIGNvbmNpc2VseSBzdW1tYXJpemUgdGhlIGNoYW5nZXMgaW4gbXkgd29ya2luZyBkaXJlY3RvcnkgY29tcGFyZWQgdG8gdGhlIGxhc3QgY29tbWl0LCByaWdodD8gU3BlY2lmaWNhbGx5LCBpdCYjMzk7bGwgc2hvdyBtZSB0aGUgbnVtYmVyIG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBmb3IgZWFjaCBmaWxlIG1vZGlmaWVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIGZvciBhIHJhcGlkIGFzc2Vzc21lbnQuIFRoaXMgYXZvaWRzIGEgZnVsbCBkaWZmLCB3aGljaCBtaWdodCBiZSBvdmVya2lsbCByaWdodCBub3cuIEkganVzdCB3YW50IHRoZSBiaXJkJiMzOTtzLWV5ZSB2aWV3LCB0aGUgZmlsZS1sZXZlbCBpbXBhY3QuIExldCYjMzk7cyBzZWUgd2hhdCBpdCB0ZWxscyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7LiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxOi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyOi8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0OiNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTojaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjojaW5jbHVkZSBcJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc6I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OnN0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExOlx0Y2hhciBidWZbUEFUSF9NQVhdID0gXCYjMzQ7L1wmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM6XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDpcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE1Olx0c2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE2Olx0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTc6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxODpcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMDpcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vwcm9nX3RyaWdnZXJlZCwgMSwgXCYjMzQ7cHJvZ190cmlnZ2VyZWRcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjE6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyLCAwLCBcJiMzNDtlcnJcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjI6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMzp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyNDpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI1OnN0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI2Olx0XHRcdFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI3OntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI4Olx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mjk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMDpcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzE6XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzI6XHRcdHJldHVybjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjMzOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzQ6XHRydW5fdGVzdChza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM1Olx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNjp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM4OnN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX29ubHkoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mzk6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDA6XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0MTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQyOlx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0MzpcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NDpcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NTp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NjpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQ3OnN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0ODp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0OTpcdHN0cnVjdCBicGZfbGluayAqbGluaztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTE6XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUyOlx0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTM6XHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTQ6fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NjpzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU3OntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU4Olx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MDpcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9iYXJlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjE6XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjI6XHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcJiMzNDthdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjM6XHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjQ6fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2NjpzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njc6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njg6XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2OTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcwOlx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzE6XHRcdFx0XHRcdCAgICAgIFwmIzM0O3N5c2NhbGxzXCYjMzQ7LCBcJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcyOlx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7YXR0YWNoXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjczOlx0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc0On1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc1OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzY6c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3Nzp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3ODpcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzk6XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MDpcdFx0LmN0eF9pbiA9IGFyZ3MsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MTpcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODI6XHQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODM6XHRpbnQgZmQsIGVycjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg0OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODU6XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4NjpcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg3Olx0QVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODg6XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4OTp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MDpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjkxOnN0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5Mjp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MzpcdF9fdTY0IGFyZ3NbMl0gPSB7fTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk0Olx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTU6XHRcdC5jdHhfaW4gPSBhcmdzLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTY6XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk3Olx0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5ODpcdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OTpcdGludCBmZCwgZXJyO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAxOlx0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAyOlx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAzOlx0QVNTRVJUX0VSUihlcnIsIFwmIzM0O3Rlc3RfcnVuX29uX2NwdV9yZWplY3RcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA0On1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNjp2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDc6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA4Olx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA5OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTEwOlx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTE6XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTI6XHRcdHJldHVybjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExMzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0ZlwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTU6XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE2Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNzpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTg6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cmFjZXBvaW50XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExOTpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3N5c19leGl0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMTpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2V4aXRfdHAsIHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTIyOlx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjM6XHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Jhd190cmFjZXBvaW50X2FsaWFzXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNTpcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNjpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Jhd190cF9iYXJlXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNzpcdFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyODpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI5Olx0XHR0ZXN0X3RwX2JhcmUoc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzA6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzE6XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzI6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzMzpcdFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM0Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM1Olx0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM2Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHBfbm9uX3N5c2NhbGxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM3Olx0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM4Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHBfYnRmX25vbl9mYXVsdGFibGVfcmVqZWN0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzOTpcdFx0UlVOX1RFU1RTKHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQxOlx0dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX2Rlc3Ryb3koc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDI6fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0OQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gLSBTZWxmdGVzdHMgT25seSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IGluZGljYXRlcyBJIHNob3VsZCBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKRmlyc3QsIGxldCBtZSBjb25maXJtOiB0aGUgZGlmZiBwcm92aWRlZCBwcmVjaXNlbHkgcmVmbGVjdHMgdGhlIGFwcGxpZWQgY2hhbmdlcy4gSXQmIzM5O3Mgc29sZWx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS4gTm8gY2hhbmdlcyBhcmUgYmVpbmcgbWFkZSB0byB0aGUga2VybmVsJiMzOTtzIGNvcmUgc291cmNlIGNvZGUsIG5vdGhpbmcgaW4gYGtlcm5lbC9icGYvYCwgYG5ldC9jb3JlL2AsIG9yIGFueXdoZXJlIGVsc2UgdGhhdCB3b3VsZCBkaXJlY3RseSBhbHRlciBrZXJuZWwgZXhlY3V0aW9uLgoKVGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBieSBpdHMgbG9jYXRpb24sIHBvaW50cyB0byBtb2RpZmljYXRpb25zIG9ubHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZnJhbWV3b3JrLiBTZWxmdGVzdHMsIGluIG15IHVuZGVyc3RhbmRpbmcsIGFyZSB1c2VyLXNwYWNlIHRlc3QgcHJvZ3JhbXMuIFRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwmIzM5O3Mgb3BlcmF0aW9uYWwgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uIG9yIHRoZSBmdXp6aW5nIHByb2Nlc3MgaXRzZWxmLiBUaGVyZWZvcmUsIGV2ZW4gdGhvdWdoICYjMzQ7c2VsZnRlc3RzJiMzNDsgaXNuJiMzOTt0IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZSByZWFzb25zIHRvIHJldHVybiBgZmFsc2VgLCB0aGUgaW50ZW50IG1hdGNoZXMgLSB0aGlzIGlzbiYjMzk7dCBtYWtpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLiBJdCYjMzk7cyB1c2VyLXNwYWNlIHRlc3RpbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIG90aGVyIGZpbGVzIHdlcmUgbW9kaWZpZWQgYmV5b25kIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LgoKVGhlIGRpZmYgbGlzdHMgdGhlc2UgZmlsZXM6CgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jYAoKWWVzLCB0aGV5IGFyZSBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFzIGV4cGVjdGVkLiBTbywgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MTUuMjEyNzE1NDAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0MDAyMzU5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzoxMzoxNS4yMTI3MjA1OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE4OTU1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDIwNGYyODFmNWZmNWQxY2ZkYzBhYmNiMzY3OTliYzZjYTI2MGNjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDE3OjEzOjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjE5NTAwYjc4NWVlMzJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcXG5AQCAtMCwwICsxLDE0MiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdGVzdF9wcm9ncy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFxcXCJcXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcXFwiL1xcXCI7XFxuK1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRhcmdldF9waWQgPSBnZXRwaWQoKTtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vwcm9nX3RyaWdnZXJlZCA9IDA7XFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZXJyID0gMDtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vjb3BpZWRfYnl0ZSA9IDA7XFxuK1xcbitcXHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcXG4rXFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcXFwicHJvZ190cmlnZ2VyZWRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZXJyLCAwLCBcXFwiZXJyXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWNvcGllZF9ieXRlLCAnLycsIFxcXCJjb3BpZWRfYnl0ZVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcXFwicHJvZ19hdHRhY2hcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cnVuX3Rlc3Qoc2tlbCk7XFxuK1xcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcXFwiYXR0YWNoX3Nob3VsZF9mYWlsXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgXFxcInN5c19lbnRlclxcXCIpO1xcbitcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnQoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX2JhcmUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJzeXNjYWxsc1xcXCIsIFxcXCJzeXNfZW50ZXJfZ2V0Y3dkXFxcIik7XFxuK1xcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW4oc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXFxuK1xcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbitcXHRcXHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuK1xcdCk7XFxuK1xcdGludCBmZCwgZXJyO1xcbitcXG4rXFx0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXFx1MDAyNnRvcHRzKTtcXG4rXFx0QVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIik7XFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIGFyZ3NbMF0gKyBhcmdzWzFdLCBcXFwidGVzdF9ydW5fcmV0dmFsXFxcIik7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0X191NjQgYXJnc1syXSA9IHt9O1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXFxuK1xcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbitcXHRcXHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuK1xcdFxcdC5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSxcXG4rXFx0KTtcXG4rXFx0aW50IGZkLCBlcnI7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRBU1NFUlRfRVJSKGVyciwgXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKTtcXG4rfVxcbitcXG4rdm9pZCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0ZlxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJyYXdfdHBcXFwiKSlcXG4rXFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHJhY2Vwb2ludFxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInN5c19leGl0XFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50X2FsaWFzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJyYXdfdHJhY2Vwb2ludF9hbGlhc1xcXCIpKVxcbitcXHRcXHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cF9iYXJlXFxcIikpXFxuK1xcdFxcdHRlc3RfcmF3X3RwX2JhcmUoc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9iYXJlXFxcIikpXFxuK1xcdFxcdHRlc3RfdHBfYmFyZShza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XFxcIikpXFxuK1xcdFxcdHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cF9ub25fZmF1bHRhYmxlXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX3JlamVjdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfbm9uX3N5c2NhbGxcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90cF9ub25fc3lzY2FsbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3RcXFwiKSlcXG4rXFx0XFx0UlVOX1RFU1RTKHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwpO1xcbitcXG4rXFx0dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbkBAIC0wLDAgKzEsMTEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vdW5pc3RkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfY29yZV9yZWFkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4raW50IHRhcmdldF9waWQ7XFxuK2ludCBwcm9nX3RyaWdnZXJlZDtcXG4rbG9uZyBlcnI7XFxuK2NoYXIgY29waWVkX2J5dGU7XFxuK1xcbitzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxcbit7XFxuK1xcdGVyciA9IGJwZl9jb3B5X2Zyb21fdXNlcihcXHUwMDI2Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cHJvZ190cmlnZ2VyZWQgPSAxO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cF9idGYucy9zeXNfZW50ZXJcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxcbit7XFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcXG4rXFx0ICAgIGlkICE9IF9fTlJfZ2V0Y3dkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxcbitcXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcXFwiKVxcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcXG4re1xcbitcXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVxcdTAwM2VhcmdzWzBdKTtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3N5c2NhbGxzL3N5c19leGl0X2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcXG4re1xcbitcXHRzdHJ1Y3QgcHRfcmVncyAqcmVncztcXG4rXFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmVncyA9IChzdHJ1Y3QgcHRfcmVncyAqKWJwZl90YXNrX3B0X3JlZ3MoYnBmX2dldF9jdXJyZW50X3Rhc2tfYnRmKCkpO1xcbitcXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHAuc1xcXCIpXFxuK2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcXFwiKVxcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChfX3U2NClyZWdzID09IDB4MTIzNFVMTCBcXHUwMDI2XFx1MDAyNiAoX191NjQpaWQgPT0gMHg1Njc4VUxMKVxcbitcXHRcXHRyZXR1cm4gKF9fdTY0KXJlZ3MgKyAoX191NjQpaWQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHAucy9zY2hlZF9zd2l0Y2hcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsXFxuK1xcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHAucy9zY2hlZC9zY2hlZF9zd2l0Y2hcXFwiKVxcbitpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNzQ4YTk1MjBiYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXFxuQEAgLTAsMCArMSwxOCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cXG4rU0VDKFxcXCJ0cF9idGYucy9zY2hlZF9zd2l0Y2hcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zY2hlZF9zd2l0Y2gsIGJvb2wgcHJlZW1wdCxcXG4rXFx0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcXG5pbmRleCBjMmI3ZjVlYmYxNjhjLi42ZGFiYzU1MjI5NDU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbkBAIC03Niw3ICs3NiwyMCBAQFxcbiBcXHQucnVucyA9IC0xLFxcbiB9LFxcbiB7XFxuLVxcdFxcXCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0XFxcIixcXG4rXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcXFwiLFxcbitcXHQuaW5zbnMgPSB7XFxuK1xcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcXG4rXFx0QlBGX0VYSVRfSU5TTigpLFxcbitcXHR9LFxcbitcXHQucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLFxcbitcXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxcbitcXHQua2Z1bmMgPSBcXFwic3lzX2VudGVyXFxcIixcXG4rXFx0LnJlc3VsdCA9IEFDQ0VQVCxcXG4rXFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxcbitcXHQucnVucyA9IC0xLFxcbit9LFxcbit7XFxuK1xcdFxcXCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0IG5vbi1mYXVsdGFibGVcXFwiLFxcbiBcXHQuaW5zbnMgPSB7XFxuIFxcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcXG4gXFx0QlBGX0VYSVRfSU5TTigpLFxcbkBAIC04NSw3ICs5OCw3IEBAXFxuIFxcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXFxuIFxcdC5rZnVuYyA9IFxcXCJzY2hlZF9zd2l0Y2hcXFwiLFxcbiBcXHQucmVzdWx0ID0gUkVKRUNULFxcbi1cXHQuZXJyc3RyID0gXFxcIk9ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZVxcXCIsXFxuK1xcdC5lcnJzdHIgPSBcXFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcXFwiLFxcbiBcXHQuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsXFxuIFxcdC5ydW5zID0gLTEsXFxuIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjE2LjYzNTI3NTI5NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyOTc3NjY0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDIwNGYyODFmNWZmNWQxY2ZkYzBhYmNiMzY3OTliYzZjYTI2MGNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTc6MTM6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgKzEsMTQyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisjaW5jbHVkZSBcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFwiXG4rXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdGNoYXIgYnVmW1BBVEhfTUFYXSA9IFwiL1wiO1xuK1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNldGFyZ2V0X3BpZCA9IGdldHBpZCgpO1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyID0gMDtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWNvcGllZF9ieXRlID0gMDtcbitcbitcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuK1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcInByb2dfdHJpZ2dlcmVkXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCJlcnJcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICcvJywgXCJjb3BpZWRfYnl0ZVwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuK1x0XHRcdFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcInByb2dfYXR0YWNoXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRydW5fdGVzdChza2VsKTtcbitcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmICghQVNTRVJUX0VSUl9QVFIobGluaywgXCJhdHRhY2hfc2hvdWxkX2ZhaWxcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbitcdFx0XHRcdFx0XHQgIFwic3lzX2VudGVyXCIpO1xuK1x0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCJhdHRhY2hcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdHN0cnVjdCBicGZfbGluayAqbGluaztcbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfYmFyZSxcbitcdFx0XHRcdFx0ICAgICAgXCJzeXNjYWxsc1wiLCBcInN5c19lbnRlcl9nZXRjd2RcIik7XG4rXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcImF0dGFjaFwiKSlcbitcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW4oc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuK1x0XHQuY3R4X2luID0gYXJncyxcbitcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxuK1x0KTtcbitcdGludCBmZCwgZXJyO1xuK1xuK1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0QVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1blwiKTtcbitcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIGFyZ3NbMF0gKyBhcmdzWzFdLCBcInRlc3RfcnVuX3JldHZhbFwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRfX3U2NCBhcmdzWzJdID0ge307XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4rXHRcdC5jdHhfaW4gPSBhcmdzLFxuK1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4rXHRcdC5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSxcbitcdCk7XG4rXHRpbnQgZmQsIGVycjtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbitcdEFTU0VSVF9FUlIoZXJyLCBcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcIik7XG4rfVxuK1xuK3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbit7XG4rXHRzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7XG4rXG4rXHRza2VsID0gdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHBfYnRmXCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwXCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHJhY2Vwb2ludFwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic3lzX2V4aXRcIikpXG4rXHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHJhY2Vwb2ludF9hbGlhc1wiKSlcbitcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYWxpYXMpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyYXdfdHJhY2Vwb2ludF9hbGlhc1wiKSlcbitcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwX2JhcmVcIikpXG4rXHRcdHRlc3RfcmF3X3RwX2JhcmUoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX2JhcmVcIikpXG4rXHRcdHRlc3RfdHBfYmFyZShza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGVzdF9ydW5cIikpXG4rXHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcIikpXG4rXHRcdHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwX25vbl9mYXVsdGFibGVcIikpXG4rXHRcdHRlc3RfYXR0YWNoX3JlamVjdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX25vbl9zeXNjYWxsXCIpKVxuK1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3RcIikpXG4rXHRcdFJVTl9URVNUUyh0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsKTtcbitcbitcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgKzEsMTEyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4raW50IHRhcmdldF9waWQ7XG4raW50IHByb2dfdHJpZ2dlcmVkO1xuK2xvbmcgZXJyO1xuK2NoYXIgY29waWVkX2J5dGU7XG4rXG4rc3RhdGljIGludCBjb3B5X2dldGN3ZF9hcmcoY2hhciAqdWJ1Zilcbit7XG4rXHRlcnIgPSBicGZfY29weV9mcm9tX3VzZXIoXHUwMDI2Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHByb2dfdHJpZ2dlcmVkID0gMTtcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJ0cF9idGYucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XG4rXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4rfVxuK1xuK1NFQyhcInJhd190cC5zL3N5c19lbnRlclwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4re1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbitcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJ0cC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbit7XG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopYXJncy1cdTAwM2VhcmdzWzBdKTtcbit9XG4rXG4rU0VDKFwidHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpXG4re1xuK1x0c3RydWN0IHB0X3JlZ3MgKnJlZ3M7XG4rXG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJyYXdfdHAuc1wiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX2JhcmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJ0cC5zXCIpXG4raW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RyYWNlcG9pbnQucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJyYXdfdHAucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMIFx1MDAyNlx1MDAyNiAoX191NjQpaWQgPT0gMHg1Njc4VUxMKVxuK1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgKyAoX191NjQpaWQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnMvc2NoZWRfc3dpdGNoXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuK1x0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHAucy9zY2hlZC9zY2hlZF9zd2l0Y2hcIilcbitpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICsxLDE4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuKy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbitTRUMoXCJ0cF9idGYucy9zY2hlZF9zd2l0Y2hcIilcbitfX2ZhaWx1cmUgX19tc2coXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsXG4rXHQgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KVxuK3tcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbmluZGV4IGMyYjdmNWViZjE2OGMuLjZkYWJjNTUyMjk0NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuQEAgLTc2LDcgKzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0XCIsXG4rXHRcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcIixcbitcdC5pbnNucyA9IHtcbitcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcbitcdEJQRl9FWElUX0lOU04oKSxcbitcdH0sXG4rXHQucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLFxuK1x0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcbitcdC5rZnVuYyA9IFwic3lzX2VudGVyXCIsXG4rXHQucmVzdWx0ID0gQUNDRVBULFxuK1x0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuK1x0LnJ1bnMgPSAtMSxcbit9LFxuK3tcbitcdFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCIsXG4gXHQuaW5zbnMgPSB7XG4gXHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4gXHRCUEZfRVhJVF9JTlNOKCksXG5AQCAtODUsNyArOTgsNyBAQFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcbiBcdC5rZnVuYyA9IFwic2NoZWRfc3dpdGNoXCIsXG4gXHQucmVzdWx0ID0gUkVKRUNULFxuLVx0LmVycnN0ciA9IFwiT25seSBmZW50cnkvZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQsIGxzbSwgaXRlciwgdXByb2JlLCBhbmQgc3RydWN0X29wcyBwcm9ncmFtcyBjYW4gYmUgc2xlZXBhYmxlXCIsXG4rXHQuZXJyc3RyID0gXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwiLFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MTYuNjM1Mjc2MzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwMzcxNjMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBTbGVlcGFibGUgVHJhY2Vwb2ludCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3Mgc3VwcG9zZWRseSBhZGRpbmcgdGVzdHMgZm9yIHNsZWVwYWJsZSB0cmFjZXBvaW50cyB3aXRoaW4gQlBGLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1ha2Ugc3VyZSBpdCdzIHNlbGYtY29udGFpbmVkOyBJIGRvbid0IHdhbnQgYW55IHVuZXhwZWN0ZWQgcmVncmVzc2lvbnMgaW4gY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgY2hlY2tpbmcgaWYgYW55IGZpbGVzICpvdXRzaWRlKiBvZiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeSBoYXZlIGJlZW4gdG91Y2hlZC4gVGhhdCdzIHRoZSBwcmltYXJ5IGFyZWEgb2YgY29uY2VybiB3aGVuIGFkZGluZyBuZXcgc2VsZiB0ZXN0cy5cblxuQWxyaWdodCwgdGhlIGRpZmYgY29uZmlybXMgaXQuIEl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZXMgYXJlIGFsbCBpc29sYXRlZCB3aXRoaW4gdGhhdCBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29yay4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgbW9kaWZpZWQgZmlsZXMganVzdCB0byBjb25maXJtLiBPa2F5LCBJIHNlZTpcblxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGV4cGVjdGVkLCB0aGUgdGVzdCBkZWZpbml0aW9ucy5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgIC0gVGhpcyBpcyBhbHNvIGV4cGVjdGVkLCB0aGUgc3VjY2Vzc2Z1bCBwcm9ncmFtIHRvIHVzZS5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY2AgLSBBbmQgb2YgY291cnNlLCB0aGUgZmFpbHVyZSB0ZXN0IHByb2dyYW0uXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2AgLSBUaGlzIGlzIGludGVyZXN0aW5nLiBMb29rcyBsaWtlIHdlJ3JlIHVwZGF0aW5nIHRoZSB2ZXJpZmllciB0byBhbGxvdyBmb3IgdGhlc2Ugc2xlZXBhYmxlIHRyYWNlcG9pbnRzLiBUaGF0J3MgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuXG5cbkkgc3RpbGwgd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB1c2luZyBgZ2l0IGxvZ2Agb3IgYGdpdCBzaG93YCwganVzdCB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcyBpbiB0aGUgb3ZlcmFsbCBjb21taXQuIEp1c3QgYSBzYW5pdHkgY2hlY2sgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgzNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjI0LjIzODk5NDczN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5ODEyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jLTc4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmM6Nzk6XFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYy04MC1cXHQuaW5zbnMgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjI1LjkyODgxNDE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMTI4NDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkFuYWx5emluZyB0aGUgQ29tbWl0IERpZmYqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRpZmYuLi4gaXQgbG9va3MgbGlrZSB0aGUgKmNvbXBsZXRlKiBkaWZmIGZvciB0aGUgY29tbWl0LCByaWdodD8gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlIGhlcmUuIE5vdywgbGV0IG1lIHF1aWNrbHkgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBjb21taXQgbWVzc2FnZS4gQWgsIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LlwiIFJpZ2h0LCB0aGF0IG5hcnJvd3MgaXQgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGF0J3MgZ29vZDsgaXQga2VlcHMgdGhlIHNjb3BlIHJlbGF0aXZlbHkgY29udGFpbmVkLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIHRob3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGtlcm5lbC1sZXZlbCBtb2RpZmljYXRpb25zIGluIEhFQUQgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhpcyBwYXJ0aWN1bGFyIGFyZWEuIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBkaWcgZnVydGhlci4gVGhpcyBpcyBhIGNvbW1vbiBzaXR1YXRpb24gd2l0aCBzeXotY2x1c3RlciBwYXRjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTA4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MjkuOTQwMTAxMDYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTAyMTczNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYz0xMj1TRUMoXFxcInRwX2J0Zi5zL3NjaGVkX3N3aXRjaFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYzoxMzpfX2ZhaWx1cmUgX19tc2coXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jLTE0LWludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAwLVxcdC5yZXN1bHQgPSBSRUpFQ1QsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jOjEwMTpcXHQuZXJyc3RyID0gXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAyLVxcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MzEuNDUwMzI0MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzEwMDgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gQ29tbWl0IFNjb3BlKipcblxuUmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJ20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ3ZlIGdvdCB0aGlzIGNvbW1pdCBpbiBmcm9udCBvZiBtZSwgYnV0IEkgY2FuJ3QganVzdCBhc3N1bWUgaXQncyBpc29sYXRlZC4gSXQncyB0b28gZWFzeSB0byBtaXNzIHNvbWV0aGluZyBjcnVjaWFsLCBlc3BlY2lhbGx5IGluIGEgbGFyZ2UgY29kZWJhc2UuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgZGV0YWlscyBhZ2FpbiwgYW5kIGxvb2sgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIGBnaXRgIGNvbW1hbmQgb3IgdXNlIG15IElERSdzIGZ1bmN0aW9uYWxpdHkgdG8gaWRlbnRpZnkgKmFsbCogZmlsZXMgdG91Y2hlZCBieSB0aGlzIGNvbW1pdCwgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgb25lcy4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJldmlldyBwcm9jZXNzLiBUaGlzIGlzIHRvIHNlZSBpZiBhbnkgc2VlbWluZ2x5IHVucmVsYXRlZCBjaGFuZ2VzIHdlcmUgaW5jbHVkZWQsIGFuZCBJIGFsc28gbmVlZCB0byBzZWUgaWYgYW55IGRlcGVuZCBvbiB0aGlzIGNoYW5nZS4gVGhpcyBxdWljayBjaGVjayB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGltcGFjdHMgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgZG9uJ3Qgd2FudCB0byBnZXQgYmxpbmRzaWRlZCBsYXRlciBieSBhIGNhc2NhZGluZyBlZmZlY3QgSSBkaWRuJ3QgYW50aWNpcGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA1NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjM0Ljg3MzQyNjc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDcyMTYxNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MzYuMzIwNjQ4NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NjI0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqUmV2aWV3aW5nIEN1cnJlbnQgQ2hhbmdlcyB3aXRoIEdpdCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCBJJ3ZlIGJlZW4gd29ya2luZyBvbiwgcHJvYmFibHkgYmVmb3JlIEkgY29tbWl0IG9yIHB1c2guIFRoZSBmYXN0ZXN0IHdheSB0byBzZWUgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdG8gdXNlIGBnaXQgc2hvdyAtLXN0YXQgSEVBRGAuIFRoYXQgY29tbWFuZCB3aWxsIGNvbmNpc2VseSBzdW1tYXJpemUgdGhlIGNoYW5nZXMgaW4gbXkgd29ya2luZyBkaXJlY3RvcnkgY29tcGFyZWQgdG8gdGhlIGxhc3QgY29tbWl0LCByaWdodD8gU3BlY2lmaWNhbGx5LCBpdCdsbCBzaG93IG1lIHRoZSBudW1iZXIgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zIGZvciBlYWNoIGZpbGUgbW9kaWZpZWQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQgZm9yIGEgcmFwaWQgYXNzZXNzbWVudC4gVGhpcyBhdm9pZHMgYSBmdWxsIGRpZmYsIHdoaWNoIG1pZ2h0IGJlIG92ZXJraWxsIHJpZ2h0IG5vdy4gSSBqdXN0IHdhbnQgdGhlIGJpcmQncy1leWUgdmlldywgdGhlIGZpbGUtbGV2ZWwgaW1wYWN0LiBMZXQncyBzZWUgd2hhdCBpdCB0ZWxscyBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjM5LjczNTI3NTY1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NTMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI6LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDojaW5jbHVkZSBcXHUwMDNjdGVzdF9wcm9ncy5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU6I2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY6I2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk6c3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTpcXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcXFwiL1xcXCI7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQ6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vwcm9nX3RyaWdnZXJlZCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTU6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE2OlxcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlY29waWVkX2J5dGUgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE3OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE4OlxcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE5OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjIwOlxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcXFwicHJvZ190cmlnZ2VyZWRcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMTpcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIsIDAsIFxcXCJlcnJcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMjpcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vjb3BpZWRfYnl0ZSwgJy8nLCBcXFwiY29waWVkX2J5dGVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMzp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjQ6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjU6c3RhdGljIHZvaWQgcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mjc6e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI4OlxcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyOTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMDpcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMTpcXHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXFxcInByb2dfYXR0YWNoXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzI6XFx0XFx0cmV0dXJuO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjMzOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM0OlxcdHJ1bl90ZXN0KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM1OlxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM2On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNzpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozODpzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozOTp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDA6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQxOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQyOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQzOlxcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NDpcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NTp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDY6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDc6c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0ODp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDk6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUwOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUxOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUyOlxcdGlmICghQVNTRVJUX0VSUl9QVFIobGluaywgXFxcImF0dGFjaF9zaG91bGRfZmFpbFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUzOlxcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU0On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NjpzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1Nzp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTg6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU5OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjYwOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MTpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJzeXNfZW50ZXJcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MjpcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjM6XFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjQ6fVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY2OnN0YXRpYyB2b2lkIHRlc3RfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njc6e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY4OlxcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2OTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3MDpcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcxOlxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJzeXNjYWxsc1xcXCIsIFxcXCJzeXNfZW50ZXJfZ2V0Y3dkXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzI6XFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjczOlxcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc0On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3NjpzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3Nzp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzg6XFx0X191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzk6XFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgwOlxcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgxOlxcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MjpcXHQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgzOlxcdGludCBmZCwgZXJyO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg0OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg1OlxcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODY6XFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXFx1MDAyNnRvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4NzpcXHRBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4ODpcXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICsgYXJnc1sxXSwgXFxcInRlc3RfcnVuX3JldHZhbFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg5On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MTpzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjkyOntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MzpcXHRfX3U2NCBhcmdzWzJdID0ge307XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTQ6XFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk1OlxcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk2OlxcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5NzpcXHRcXHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTg6XFx0KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OTpcXHRpbnQgZmQsIGVycjtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDA6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAxOlxcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAyOlxcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAzOlxcdEFTU0VSVF9FUlIoZXJyLCBcXFwidGVzdF9ydW5fb25fY3B1X3JlamVjdFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNDp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNjp2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA3OntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDg6XFx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTA6XFx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTExOlxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExMjpcXHRcXHRyZXR1cm47XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTEzOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfYnRmXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE1OlxcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTY6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNzpcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE4OlxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50XFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE5OlxcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic3lzX2V4aXRcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjE6XFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjI6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRyYWNlcG9pbnRfYWxpYXNcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjM6XFx0XFx0dGVzdF9hdHRhY2hfb25seShza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjQ6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cmFjZXBvaW50X2FsaWFzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI1OlxcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNjpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX2JhcmVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjc6XFx0XFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjg6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2JhcmVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjk6XFx0XFx0dGVzdF90cF9iYXJlKHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzMDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9ydW5cXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzE6XFx0XFx0dGVzdF90ZXN0X3J1bihza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzI6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzM6XFx0XFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzNDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX25vbl9mYXVsdGFibGVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzU6XFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM2OlxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9ub25fc3lzY2FsbFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzNzpcXHRcXHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzg6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzOTpcXHRcXHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQwOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE0MTpcXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDI6fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzoxMzozOS43NzcxMzE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM1Nzc2NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiAtIFNlbGZ0ZXN0cyBPbmx5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IGluZGljYXRlcyBJIHNob3VsZCBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLlxuXG5GaXJzdCwgbGV0IG1lIGNvbmZpcm06IHRoZSBkaWZmIHByb3ZpZGVkIHByZWNpc2VseSByZWZsZWN0cyB0aGUgYXBwbGllZCBjaGFuZ2VzLiBJdCdzIHNvbGVseSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuIE5vIGNoYW5nZXMgYXJlIGJlaW5nIG1hZGUgdG8gdGhlIGtlcm5lbCdzIGNvcmUgc291cmNlIGNvZGUsIG5vdGhpbmcgaW4gYGtlcm5lbC9icGYvYCwgYG5ldC9jb3JlL2AsIG9yIGFueXdoZXJlIGVsc2UgdGhhdCB3b3VsZCBkaXJlY3RseSBhbHRlciBrZXJuZWwgZXhlY3V0aW9uLlxuXG5UaGUgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIGJ5IGl0cyBsb2NhdGlvbiwgcG9pbnRzIHRvIG1vZGlmaWNhdGlvbnMgb25seSB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBmcmFtZXdvcmsuIFNlbGZ0ZXN0cywgaW4gbXkgdW5kZXJzdGFuZGluZywgYXJlIHVzZXItc3BhY2UgdGVzdCBwcm9ncmFtcy4gVGhleSBhcmUgbm90IHBhcnQgb2YgdGhlIGtlcm5lbCdzIG9wZXJhdGlvbmFsIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiBvciB0aGUgZnV6emluZyBwcm9jZXNzIGl0c2VsZi4gVGhlcmVmb3JlLCBldmVuIHRob3VnaCBcInNlbGZ0ZXN0c1wiIGlzbid0IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZSByZWFzb25zIHRvIHJldHVybiBgZmFsc2VgLCB0aGUgaW50ZW50IG1hdGNoZXMgLSB0aGlzIGlzbid0IG1ha2luZyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuIEl0J3MgdXNlci1zcGFjZSB0ZXN0aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIG90aGVyIGZpbGVzIHdlcmUgbW9kaWZpZWQgYmV5b25kIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LlxuXG5UaGUgZGlmZiBsaXN0cyB0aGVzZSBmaWxlczpcblxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2BcbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2BcblxuWWVzLCB0aGV5IGFyZSBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFzIGV4cGVjdGVkLiBTbywgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5NDksIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6NDkuNjEyOTExMTg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6NDkuNjEyOTQxMTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowspllv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 16:20:24 +0000 UTC FinishedAt: 2026-08-10 17:13:50 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwMjA0ZjI4MWY1ZmY1ZDFjZmRjMGFiY2IzNjc5OWJjNmNhMjYwY2NcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNzoxMzoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgJiM0MzsxLDE0MiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcJiMzNDsvXCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xuJiM0MztcbiYjNDM7XHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcJiMzNDtwcm9nX3RyaWdnZXJlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCYjMzQ7ZXJyXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRydW5fdGVzdChza2VsKTtcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxuJiM0MztcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXCYjMzQ7c3lzY2FsbHNcJiMzNDssIFwmIzM0O3N5c19lbnRlcl9nZXRjd2RcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiYjNDM7XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4mIzQzO1x0XHQuY3R4X2luID0gYXJncyxcbiYjNDM7XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbiYjNDM7XHQpO1xuJiM0MztcdGludCBmZCwgZXJyO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0ge307XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuJiM0MztcdFx0LmN0eF9pbiA9IGFyZ3MsXG4mIzQzO1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4mIzQzO1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4mIzQzO1x0KTtcbiYjNDM7XHRpbnQgZmQsIGVycjtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9idGZcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbiYjNDM7XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RyYWNlcG9pbnRcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzeXNfZXhpdFwmIzM0OykpXG4mIzQzO1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RyYWNlcG9pbnRfYWxpYXNcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyYXdfdHBfYmFyZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9ub25fc3lzY2FsbFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4mIzQzO1xuJiM0MztcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICYjNDM7MSwxMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IHRhcmdldF9waWQ7XG4mIzQzO2ludCBwcm9nX3RyaWdnZXJlZDtcbiYjNDM7bG9uZyBlcnI7XG4mIzQzO2NoYXIgY29waWVkX2J5dGU7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxuJiM0Mzt7XG4mIzQzO1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cHJvZ190cmlnZ2VyZWQgPSAxO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbiYjNDM7XHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHAucy9zeXNfZW50ZXJcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuJiM0MztcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbiYjNDM7e1xuJiM0MztcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVx1MDAzZWFyZ3NbMF0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuJiM0MztcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAuc1wmIzM0OylcbiYjNDM7aW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdGlmICgoX191NjQpcmVncyA9PSAweDEyMzRVTEwgXHUwMDI2XHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXG4mIzQzO1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgJiM0MzsgKF9fdTY0KWlkO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3RwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICYjNDM7MSwxOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbiYjNDM7U0VDKFwmIzM0O3RwX2J0Zi5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5AQCAtNzYsNyAmIzQzOzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwmIzM0OyxcbiYjNDM7XHRcJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCYjMzQ7LFxuJiM0MztcdC5pbnNucyA9IHtcbiYjNDM7XHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4mIzQzO1x0QlBGX0VYSVRfSU5TTigpLFxuJiM0MztcdH0sXG4mIzQzO1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbiYjNDM7XHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuJiM0MztcdC5rZnVuYyA9IFwmIzM0O3N5c19lbnRlclwmIzM0OyxcbiYjNDM7XHQucmVzdWx0ID0gQUNDRVBULFxuJiM0MztcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHQucnVucyA9IC0xLFxuJiM0Mzt9LFxuJiM0Mzt7XG4mIzQzO1x0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCYjMzQ7LFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgJiM0Mzs5OCw3IEBAXG4gXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuIFx0LmtmdW5jID0gXCYjMzQ7c2NoZWRfc3dpdGNoXCYjMzQ7LFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcJiMzNDtPbmx5IGZlbnRyeS9mZXhpdC9mc2Vzc2lvbi9mbW9kX3JldCwgbHNtLCBpdGVyLCB1cHJvYmUsIGFuZCBzdHJ1Y3Rfb3BzIHByb2dyYW1zIGNhbiBiZSBzbGVlcGFibGVcJiMzNDssXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7LFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzAyMDRmMjgxZjVmZjVkMWNmZGMwYWJjYjM2Nzk5YmM2Y2EyNjBjYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE3OjEzOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xOTUwMGI3ODVlZTMyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKQEAgLTAsMCAmIzQzOzEsMTQyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW1BBVEhfTUFYXSA9ICYjMzQ7LyYjMzQ7OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3RhcmdldF9waWQgPSBnZXRwaWQoKTsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCA9IDA7CiYjNDM7CXNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyID0gMDsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtjb3BpZWRfYnl0ZSA9IDA7CiYjNDM7CiYjNDM7CXN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCwgMSwgJiMzNDtwcm9nX3RyaWdnZXJlZCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyLCAwLCAmIzM0O2VyciYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7Y29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCAmIzM0O2NvcGllZF9ieXRlJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csCiYjNDM7CQkJCSBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDtwcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnVuX3Rlc3Qoc2tlbCk7CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7CiYjNDM7CWlmIChBU1NFUlRfT0tfUFRSKGxpbmssICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssICYjMzQ7YXR0YWNoX3Nob3VsZF9mYWlsJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsCiYjNDM7CQkJCQkJICAmIzM0O3N5c19lbnRlciYjMzQ7KTsKJiM0MzsJaWYgKEFTU0VSVF9PS19QVFIobGluaywgJiMzNDthdHRhY2gmIzM0OykpCiYjNDM7CQlicGZfbGlua19fZGVzdHJveShsaW5rKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfdHBfYmFyZSwKJiM0MzsJCQkJCSAgICAgICYjMzQ7c3lzY2FsbHMmIzM0OywgJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkJiMzNDspOwomIzQzOwlpZiAoQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CV9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspOwomIzQzOwlBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sICYjMzQ7dGVzdF9ydW5fcmV0dmFsJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJX191NjQgYXJnc1syXSA9IHt9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJCS5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfRVJSKGVyciwgJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RwX2J0ZiYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHAmIzM0OykpCiYjNDM7CQlydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHJhY2Vwb2ludCYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3N5c19leGl0JiMzNDspKQomIzQzOwkJcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cmFjZXBvaW50X2FsaWFzJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfb25seShza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHJhY2Vwb2ludF9hbGlhcyYjMzQ7KSkKJiM0MzsJCXRlc3RfYXR0YWNoX29ubHkoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF9yYXdfdHBfYmFyZShza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF90cF9iYXJlKHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bihza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9ub25fZmF1bHRhYmxlJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHBfbm9uX3N5c2NhbGwmIzM0OykpCiYjNDM7CQl0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3QmIzM0OykpCiYjNDM7CQlSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7CiYjNDM7CiYjNDM7CXRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jCkBAIC0wLDAgJiM0MzsxLDExMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS91bmlzdGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfY29yZV9yZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MztpbnQgdGFyZ2V0X3BpZDsKJiM0MztpbnQgcHJvZ190cmlnZ2VyZWQ7CiYjNDM7bG9uZyBlcnI7CiYjNDM7Y2hhciBjb3BpZWRfYnl0ZTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKQomIzQzO3sKJiM0MzsJZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKCZhbXA7Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcHJvZ190cmlnZ2VyZWQgPSAxOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZCkKJiM0Mzt7CiYjNDM7CWlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgJmd0OyZndDsgMzIpICE9IHRhcmdldF9waWQgfHwKJiM0MzsJICAgIGlkICE9IF9fTlJfZ2V0Y3dkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zeXNfZW50ZXImIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKQomIzQzO3sKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCB8fAomIzQzOwkgICAgaWQgIT0gX19OUl9nZXRjd2QpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkJiMzNDspCiYjNDM7aW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpCiYjNDM7ewomIzQzOwlpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpICZndDsmZ3Q7IDMyKSAhPSB0YXJnZXRfcGlkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLSZndDthcmdzWzBdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRfcmVncyAqcmVnczsKJiM0MzsKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3Jhd190cC5zJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucyYjMzQ7KQomIzQzO2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlciYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMICZhbXA7JmFtcDsgKF9fdTY0KWlkID09IDB4NTY3OFVMTCkKJiM0MzsJCXJldHVybiAoX191NjQpcmVncyAmIzQzOyAoX191NjQpaWQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zY2hlZC9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDc0OGE5NTIwYmIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCkBAIC0wLDAgJiM0MzsxLDE4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi8KJiM0MztTRUMoJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMKaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYwpAQCAtNzYsNyAmIzQzOzc2LDIwIEBACiAJLnJ1bnMgPSAtMSwKIH0sCiB7Ci0JJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0JiMzNDssCiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7LAomIzQzOwkuaW5zbnMgPSB7CiYjNDM7CUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKJiM0MzsJQlBGX0VYSVRfSU5TTigpLAomIzQzOwl9LAomIzQzOwkucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLAomIzQzOwkuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLAomIzQzOwkua2Z1bmMgPSAmIzM0O3N5c19lbnRlciYjMzQ7LAomIzQzOwkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CS5ydW5zID0gLTEsCiYjNDM7fSwKJiM0Mzt7CiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlJiMzNDssCiAJLmluc25zID0gewogCUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKIAlCUEZfRVhJVF9JTlNOKCksCkBAIC04NSw3ICYjNDM7OTgsNyBAQAogCS5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsCiAJLmtmdW5jID0gJiMzNDtzY2hlZF9zd2l0Y2gmIzM0OywKIAkucmVzdWx0ID0gUkVKRUNULAotCS5lcnJzdHIgPSAmIzM0O09ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZSYjMzQ7LAomIzQzOwkuZXJyc3RyID0gJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7LAogCS5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSwKIAkucnVucyA9IC0xLAogfSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzNwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBTbGVlcGFibGUgVHJhY2Vwb2ludCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3Mgc3VwcG9zZWRseSBhZGRpbmcgdGVzdHMgZm9yIHNsZWVwYWJsZSB0cmFjZXBvaW50cyB3aXRoaW4gQlBGLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzZWxmLWNvbnRhaW5lZDsgSSBkb24mIzM5O3Qgd2FudCBhbnkgdW5leHBlY3RlZCByZWdyZXNzaW9ucyBpbiBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgY2hlY2tpbmcgaWYgYW55IGZpbGVzICpvdXRzaWRlKiBvZiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeSBoYXZlIGJlZW4gdG91Y2hlZC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBhcmVhIG9mIGNvbmNlcm4gd2hlbiBhZGRpbmcgbmV3IHNlbGYgdGVzdHMuCgpBbHJpZ2h0LCB0aGUgZGlmZiBjb25maXJtcyBpdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGlzb2xhdGVkIHdpdGhpbiB0aGF0IHNwZWNpZmljIHRlc3RpbmcgZnJhbWV3b3JrLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBtb2RpZmllZCBmaWxlcyBqdXN0IHRvIGNvbmZpcm0uIE9rYXksIEkgc2VlOgoKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGV4cGVjdGVkLCB0aGUgdGVzdCBkZWZpbml0aW9ucy4KKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGFsc28gZXhwZWN0ZWQsIHRoZSBzdWNjZXNzZnVsIHByb2dyYW0gdG8gdXNlLgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgIC0gQW5kIG9mIGNvdXJzZSwgdGhlIGZhaWx1cmUgdGVzdCBwcm9ncmFtLgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2AgLSBUaGlzIGlzIGludGVyZXN0aW5nLiBMb29rcyBsaWtlIHdlJiMzOTtyZSB1cGRhdGluZyB0aGUgdmVyaWZpZXIgdG8gYWxsb3cgZm9yIHRoZXNlIHNsZWVwYWJsZSB0cmFjZXBvaW50cy4gVGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuCgpJIHN0aWxsIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdXNpbmcgYGdpdCBsb2dgIG9yIGBnaXQgc2hvd2AsIGp1c3QgdG8gcnVsZSBvdXQgYW55IHBvdGVudGlhbCBzdXJwcmlzZXMgaW4gdGhlIG92ZXJhbGwgY29tbWl0LiBKdXN0IGEgc2FuaXR5IGNoZWNrIGF0IHRoaXMgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtNzgte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jOjc5Olx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYy04MC1cdC5pbnNucyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTA4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyB0aGUgQ29tbWl0IERpZmYqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBkaWZmLi4uIGl0IGxvb2tzIGxpa2UgdGhlICpjb21wbGV0ZSogZGlmZiBmb3IgdGhlIGNvbW1pdCwgcmlnaHQ/IExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBzZWVpbmcgdGhlIHdob2xlIHBpY3R1cmUgaGVyZS4gTm93LCBsZXQgbWUgcXVpY2tseSBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlLiBBaCwgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcuJiMzNDsgUmlnaHQsIHRoYXQgbmFycm93cyBpdCBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoYXQmIzM5O3MgZ29vZDsgaXQga2VlcHMgdGhlIHNjb3BlIHJlbGF0aXZlbHkgY29udGFpbmVkLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIHRob3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBrZXJuZWwtbGV2ZWwgbW9kaWZpY2F0aW9ucyBpbiBIRUFEIHRoYXQgbWlnaHQgcmVsYXRlIHRvIHRoaXMgcGFydGljdWxhciBhcmVhLiBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzeXN0ZW0gYmVmb3JlIEkgZGlnIGZ1cnRoZXIuIFRoaXMgaXMgYSBjb21tb24gc2l0dWF0aW9uIHdpdGggc3l6LWNsdXN0ZXIgcGF0Y2hlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jPTEyPVNFQyhcJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2hcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jOjEzOl9fZmFpbHVyZSBfX21zZyhcJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMtMTQtaW50IEJQRl9QUk9HKGhhbmRsZV9zY2hlZF9zd2l0Y2gsIGJvb2wgcHJlZW1wdCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAwLVx0LnJlc3VsdCA9IFJFSkVDVCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYzoxMDE6XHQuZXJyc3RyID0gXCYjMzQ7U2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAyLVx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGlnZ2luZyBEZWVwZXIgaW50byBDb21taXQgU2NvcGUqKgoKUmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIHNlZWluZyB0aGUgd2hvbGUgcGljdHVyZS4gSSYjMzk7dmUgZ290IHRoaXMgY29tbWl0IGluIGZyb250IG9mIG1lLCBidXQgSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgaXNvbGF0ZWQuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIG1pc3Mgc29tZXRoaW5nIGNydWNpYWwsIGVzcGVjaWFsbHkgaW4gYSBsYXJnZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgZGV0YWlscyBhZ2FpbiwgYW5kIGxvb2sgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIGBnaXRgIGNvbW1hbmQgb3IgdXNlIG15IElERSYjMzk7cyBmdW5jdGlvbmFsaXR5IHRvIGlkZW50aWZ5ICphbGwqIGZpbGVzIHRvdWNoZWQgYnkgdGhpcyBjb21taXQsIG5vdCBqdXN0IHRoZSBpbW1lZGlhdGVseSBvYnZpb3VzIG9uZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgcmV2aWV3IHByb2Nlc3MuIFRoaXMgaXMgdG8gc2VlIGlmIGFueSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZXMgd2VyZSBpbmNsdWRlZCwgYW5kIEkgYWxzbyBuZWVkIHRvIHNlZSBpZiBhbnkgZGVwZW5kIG9uIHRoaXMgY2hhbmdlLiBUaGlzIHF1aWNrIGNoZWNrIHdpbGwgZ2l2ZSBtZSBjb25maWRlbmNlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGltcGFjdHMgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IGJsaW5kc2lkZWQgbGF0ZXIgYnkgYSBjYXNjYWRpbmcgZWZmZWN0IEkgZGlkbiYjMzk7dCBhbnRpY2lwYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBDdXJyZW50IENoYW5nZXMgd2l0aCBHaXQqKgoKT2theSwgdGltZSB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiB3aGF0IEkmIzM5O3ZlIGJlZW4gd29ya2luZyBvbiwgcHJvYmFibHkgYmVmb3JlIEkgY29tbWl0IG9yIHB1c2guIFRoZSBmYXN0ZXN0IHdheSB0byBzZWUgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdG8gdXNlIGBnaXQgc2hvdyAtLXN0YXQgSEVBRGAuIFRoYXQgY29tbWFuZCB3aWxsIGNvbmNpc2VseSBzdW1tYXJpemUgdGhlIGNoYW5nZXMgaW4gbXkgd29ya2luZyBkaXJlY3RvcnkgY29tcGFyZWQgdG8gdGhlIGxhc3QgY29tbWl0LCByaWdodD8gU3BlY2lmaWNhbGx5LCBpdCYjMzk7bGwgc2hvdyBtZSB0aGUgbnVtYmVyIG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyBmb3IgZWFjaCBmaWxlIG1vZGlmaWVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkIGZvciBhIHJhcGlkIGFzc2Vzc21lbnQuIFRoaXMgYXZvaWRzIGEgZnVsbCBkaWZmLCB3aGljaCBtaWdodCBiZSBvdmVya2lsbCByaWdodCBub3cuIEkganVzdCB3YW50IHRoZSBiaXJkJiMzOTtzLWV5ZSB2aWV3LCB0aGUgZmlsZS1sZXZlbCBpbXBhY3QuIExldCYjMzk7cyBzZWUgd2hhdCBpdCB0ZWxscyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7LiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxOi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyOi8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0OiNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTojaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjojaW5jbHVkZSBcJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc6I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OnN0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExOlx0Y2hhciBidWZbUEFUSF9NQVhdID0gXCYjMzQ7L1wmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM6XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDpcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE1Olx0c2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE2Olx0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTc6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxODpcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMDpcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vwcm9nX3RyaWdnZXJlZCwgMSwgXCYjMzQ7cHJvZ190cmlnZ2VyZWRcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjE6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyLCAwLCBcJiMzNDtlcnJcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjI6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMzp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyNDpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI1OnN0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI2Olx0XHRcdFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI3OntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI4Olx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mjk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMDpcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzE6XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzI6XHRcdHJldHVybjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjMzOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzQ6XHRydW5fdGVzdChza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM1Olx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNjp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM4OnN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX29ubHkoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mzk6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDA6XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0MTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQyOlx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0MzpcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NDpcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NTp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NjpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQ3OnN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0ODp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0OTpcdHN0cnVjdCBicGZfbGluayAqbGluaztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTE6XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUyOlx0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTM6XHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTQ6fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NjpzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU3OntcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU4Olx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MDpcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9iYXJlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjE6XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjI6XHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcJiMzNDthdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjM6XHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjQ6fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2NjpzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njc6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njg6XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2OTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcwOlx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzE6XHRcdFx0XHRcdCAgICAgIFwmIzM0O3N5c2NhbGxzXCYjMzQ7LCBcJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcyOlx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7YXR0YWNoXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjczOlx0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc0On1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc1OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzY6c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3Nzp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3ODpcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzk6XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MDpcdFx0LmN0eF9pbiA9IGFyZ3MsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MTpcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODI6XHQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODM6XHRpbnQgZmQsIGVycjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg0OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODU6XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4NjpcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg3Olx0QVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODg6XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4OTp9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MDpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjkxOnN0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5Mjp7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MzpcdF9fdTY0IGFyZ3NbMl0gPSB7fTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk0Olx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTU6XHRcdC5jdHhfaW4gPSBhcmdzLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTY6XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk3Olx0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5ODpcdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OTpcdGludCBmZCwgZXJyO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAxOlx0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAyOlx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAzOlx0QVNTRVJUX0VSUihlcnIsIFwmIzM0O3Rlc3RfcnVuX29uX2NwdV9yZWplY3RcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA0On1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNTpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNjp2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDc6e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA4Olx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA5OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTEwOlx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTE6XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTI6XHRcdHJldHVybjtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExMzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0ZlwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTU6XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE2Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNzpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTg6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cmFjZXBvaW50XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExOTpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3N5c19leGl0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMTpcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2V4aXRfdHAsIHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTIyOlx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjM6XHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNDpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Jhd190cmFjZXBvaW50X2FsaWFzXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNTpcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNjpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Jhd190cF9iYXJlXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNzpcdFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyODpcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI5Olx0XHR0ZXN0X3RwX2JhcmUoc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzA6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzE6XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzI6XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzMzpcdFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM0Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM1Olx0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM2Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHBfbm9uX3N5c2NhbGxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM3Olx0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM4Olx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHBfYnRmX25vbl9mYXVsdGFibGVfcmVqZWN0XCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzOTpcdFx0UlVOX1RFU1RTKHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQwOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQxOlx0dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX2Rlc3Ryb3koc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDI6fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0OQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gLSBTZWxmdGVzdHMgT25seSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IGluZGljYXRlcyBJIHNob3VsZCBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKRmlyc3QsIGxldCBtZSBjb25maXJtOiB0aGUgZGlmZiBwcm92aWRlZCBwcmVjaXNlbHkgcmVmbGVjdHMgdGhlIGFwcGxpZWQgY2hhbmdlcy4gSXQmIzM5O3Mgc29sZWx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS4gTm8gY2hhbmdlcyBhcmUgYmVpbmcgbWFkZSB0byB0aGUga2VybmVsJiMzOTtzIGNvcmUgc291cmNlIGNvZGUsIG5vdGhpbmcgaW4gYGtlcm5lbC9icGYvYCwgYG5ldC9jb3JlL2AsIG9yIGFueXdoZXJlIGVsc2UgdGhhdCB3b3VsZCBkaXJlY3RseSBhbHRlciBrZXJuZWwgZXhlY3V0aW9uLgoKVGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBieSBpdHMgbG9jYXRpb24sIHBvaW50cyB0byBtb2RpZmljYXRpb25zIG9ubHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZnJhbWV3b3JrLiBTZWxmdGVzdHMsIGluIG15IHVuZGVyc3RhbmRpbmcsIGFyZSB1c2VyLXNwYWNlIHRlc3QgcHJvZ3JhbXMuIFRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwmIzM5O3Mgb3BlcmF0aW9uYWwgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uIG9yIHRoZSBmdXp6aW5nIHByb2Nlc3MgaXRzZWxmLiBUaGVyZWZvcmUsIGV2ZW4gdGhvdWdoICYjMzQ7c2VsZnRlc3RzJiMzNDsgaXNuJiMzOTt0IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZSByZWFzb25zIHRvIHJldHVybiBgZmFsc2VgLCB0aGUgaW50ZW50IG1hdGNoZXMgLSB0aGlzIGlzbiYjMzk7dCBtYWtpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLiBJdCYjMzk7cyB1c2VyLXNwYWNlIHRlc3RpbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIG90aGVyIGZpbGVzIHdlcmUgbW9kaWZpZWQgYmV5b25kIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LgoKVGhlIGRpZmYgbGlzdHMgdGhlc2UgZmlsZXM6CgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jYAoKWWVzLCB0aGV5IGFyZSBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFzIGV4cGVjdGVkLiBTbywgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MTUuMjEyNzE1NDAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0MDAyMzU5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzoxMzoxNS4yMTI3MjA1OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE4OTU1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDIwNGYyODFmNWZmNWQxY2ZkYzBhYmNiMzY3OTliYzZjYTI2MGNjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDE3OjEzOjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjE5NTAwYjc4NWVlMzJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcXG5AQCAtMCwwICsxLDE0MiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdGVzdF9wcm9ncy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFxcXCJcXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcXFwiL1xcXCI7XFxuK1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRhcmdldF9waWQgPSBnZXRwaWQoKTtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vwcm9nX3RyaWdnZXJlZCA9IDA7XFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZXJyID0gMDtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vjb3BpZWRfYnl0ZSA9IDA7XFxuK1xcbitcXHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcXG4rXFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcXFwicHJvZ190cmlnZ2VyZWRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZXJyLCAwLCBcXFwiZXJyXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWNvcGllZF9ieXRlLCAnLycsIFxcXCJjb3BpZWRfYnl0ZVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcXFwicHJvZ19hdHRhY2hcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cnVuX3Rlc3Qoc2tlbCk7XFxuK1xcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcXFwiYXR0YWNoX3Nob3VsZF9mYWlsXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgXFxcInN5c19lbnRlclxcXCIpO1xcbitcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnQoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX2JhcmUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJzeXNjYWxsc1xcXCIsIFxcXCJzeXNfZW50ZXJfZ2V0Y3dkXFxcIik7XFxuK1xcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW4oc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXFxuK1xcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbitcXHRcXHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuK1xcdCk7XFxuK1xcdGludCBmZCwgZXJyO1xcbitcXG4rXFx0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXFx1MDAyNnRvcHRzKTtcXG4rXFx0QVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIik7XFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIGFyZ3NbMF0gKyBhcmdzWzFdLCBcXFwidGVzdF9ydW5fcmV0dmFsXFxcIik7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0X191NjQgYXJnc1syXSA9IHt9O1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXFxuK1xcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbitcXHRcXHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuK1xcdFxcdC5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSxcXG4rXFx0KTtcXG4rXFx0aW50IGZkLCBlcnI7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRBU1NFUlRfRVJSKGVyciwgXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKTtcXG4rfVxcbitcXG4rdm9pZCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0ZlxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJyYXdfdHBcXFwiKSlcXG4rXFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHJhY2Vwb2ludFxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInN5c19leGl0XFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50X2FsaWFzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJyYXdfdHJhY2Vwb2ludF9hbGlhc1xcXCIpKVxcbitcXHRcXHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cF9iYXJlXFxcIikpXFxuK1xcdFxcdHRlc3RfcmF3X3RwX2JhcmUoc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9iYXJlXFxcIikpXFxuK1xcdFxcdHRlc3RfdHBfYmFyZShza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XFxcIikpXFxuK1xcdFxcdHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cF9ub25fZmF1bHRhYmxlXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX3JlamVjdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfbm9uX3N5c2NhbGxcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90cF9ub25fc3lzY2FsbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3RcXFwiKSlcXG4rXFx0XFx0UlVOX1RFU1RTKHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwpO1xcbitcXG4rXFx0dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbkBAIC0wLDAgKzEsMTEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vdW5pc3RkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfY29yZV9yZWFkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4raW50IHRhcmdldF9waWQ7XFxuK2ludCBwcm9nX3RyaWdnZXJlZDtcXG4rbG9uZyBlcnI7XFxuK2NoYXIgY29waWVkX2J5dGU7XFxuK1xcbitzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxcbit7XFxuK1xcdGVyciA9IGJwZl9jb3B5X2Zyb21fdXNlcihcXHUwMDI2Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cHJvZ190cmlnZ2VyZWQgPSAxO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cF9idGYucy9zeXNfZW50ZXJcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxcbit7XFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcXG4rXFx0ICAgIGlkICE9IF9fTlJfZ2V0Y3dkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxcbitcXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcXFwiKVxcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcXG4re1xcbitcXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVxcdTAwM2VhcmdzWzBdKTtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3N5c2NhbGxzL3N5c19leGl0X2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcXG4re1xcbitcXHRzdHJ1Y3QgcHRfcmVncyAqcmVncztcXG4rXFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmVncyA9IChzdHJ1Y3QgcHRfcmVncyAqKWJwZl90YXNrX3B0X3JlZ3MoYnBmX2dldF9jdXJyZW50X3Rhc2tfYnRmKCkpO1xcbitcXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHAuc1xcXCIpXFxuK2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcXFwiKVxcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChfX3U2NClyZWdzID09IDB4MTIzNFVMTCBcXHUwMDI2XFx1MDAyNiAoX191NjQpaWQgPT0gMHg1Njc4VUxMKVxcbitcXHRcXHRyZXR1cm4gKF9fdTY0KXJlZ3MgKyAoX191NjQpaWQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHAucy9zY2hlZF9zd2l0Y2hcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsXFxuK1xcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwidHAucy9zY2hlZC9zY2hlZF9zd2l0Y2hcXFwiKVxcbitpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNzQ4YTk1MjBiYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXFxuQEAgLTAsMCArMSwxOCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cXG4rU0VDKFxcXCJ0cF9idGYucy9zY2hlZF9zd2l0Y2hcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zY2hlZF9zd2l0Y2gsIGJvb2wgcHJlZW1wdCxcXG4rXFx0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcXG5pbmRleCBjMmI3ZjVlYmYxNjhjLi42ZGFiYzU1MjI5NDU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbkBAIC03Niw3ICs3NiwyMCBAQFxcbiBcXHQucnVucyA9IC0xLFxcbiB9LFxcbiB7XFxuLVxcdFxcXCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0XFxcIixcXG4rXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcXFwiLFxcbitcXHQuaW5zbnMgPSB7XFxuK1xcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcXG4rXFx0QlBGX0VYSVRfSU5TTigpLFxcbitcXHR9LFxcbitcXHQucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLFxcbitcXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxcbitcXHQua2Z1bmMgPSBcXFwic3lzX2VudGVyXFxcIixcXG4rXFx0LnJlc3VsdCA9IEFDQ0VQVCxcXG4rXFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxcbitcXHQucnVucyA9IC0xLFxcbit9LFxcbit7XFxuK1xcdFxcXCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0IG5vbi1mYXVsdGFibGVcXFwiLFxcbiBcXHQuaW5zbnMgPSB7XFxuIFxcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcXG4gXFx0QlBGX0VYSVRfSU5TTigpLFxcbkBAIC04NSw3ICs5OCw3IEBAXFxuIFxcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXFxuIFxcdC5rZnVuYyA9IFxcXCJzY2hlZF9zd2l0Y2hcXFwiLFxcbiBcXHQucmVzdWx0ID0gUkVKRUNULFxcbi1cXHQuZXJyc3RyID0gXFxcIk9ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZVxcXCIsXFxuK1xcdC5lcnJzdHIgPSBcXFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcXFwiLFxcbiBcXHQuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsXFxuIFxcdC5ydW5zID0gLTEsXFxuIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjE2LjYzNTI3NTI5NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyOTc3NjY0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDIwNGYyODFmNWZmNWQxY2ZkYzBhYmNiMzY3OTliYzZjYTI2MGNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTc6MTM6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgKzEsMTQyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisjaW5jbHVkZSBcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFwiXG4rXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdGNoYXIgYnVmW1BBVEhfTUFYXSA9IFwiL1wiO1xuK1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNldGFyZ2V0X3BpZCA9IGdldHBpZCgpO1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuK1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlZXJyID0gMDtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWNvcGllZF9ieXRlID0gMDtcbitcbitcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuK1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcInByb2dfdHJpZ2dlcmVkXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCJlcnJcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICcvJywgXCJjb3BpZWRfYnl0ZVwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuK1x0XHRcdFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcInByb2dfYXR0YWNoXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRydW5fdGVzdChza2VsKTtcbitcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbitcdGlmICghQVNTRVJUX0VSUl9QVFIobGluaywgXCJhdHRhY2hfc2hvdWxkX2ZhaWxcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbitcdFx0XHRcdFx0XHQgIFwic3lzX2VudGVyXCIpO1xuK1x0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCJhdHRhY2hcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdHN0cnVjdCBicGZfbGluayAqbGluaztcbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfYmFyZSxcbitcdFx0XHRcdFx0ICAgICAgXCJzeXNjYWxsc1wiLCBcInN5c19lbnRlcl9nZXRjd2RcIik7XG4rXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcImF0dGFjaFwiKSlcbitcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW4oc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuK3tcbitcdF9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9O1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuK1x0XHQuY3R4X2luID0gYXJncyxcbitcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxuK1x0KTtcbitcdGludCBmZCwgZXJyO1xuK1xuK1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0QVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1blwiKTtcbitcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIGFyZ3NbMF0gKyBhcmdzWzFdLCBcInRlc3RfcnVuX3JldHZhbFwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRfX3U2NCBhcmdzWzJdID0ge307XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4rXHRcdC5jdHhfaW4gPSBhcmdzLFxuK1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4rXHRcdC5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSxcbitcdCk7XG4rXHRpbnQgZmQsIGVycjtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbitcdEFTU0VSVF9FUlIoZXJyLCBcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcIik7XG4rfVxuK1xuK3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbit7XG4rXHRzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7XG4rXG4rXHRza2VsID0gdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHBfYnRmXCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwXCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHJhY2Vwb2ludFwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic3lzX2V4aXRcIikpXG4rXHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHJhY2Vwb2ludF9hbGlhc1wiKSlcbitcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYWxpYXMpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyYXdfdHJhY2Vwb2ludF9hbGlhc1wiKSlcbitcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwX2JhcmVcIikpXG4rXHRcdHRlc3RfcmF3X3RwX2JhcmUoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX2JhcmVcIikpXG4rXHRcdHRlc3RfdHBfYmFyZShza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGVzdF9ydW5cIikpXG4rXHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcIikpXG4rXHRcdHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChza2VsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RwX25vbl9mYXVsdGFibGVcIikpXG4rXHRcdHRlc3RfYXR0YWNoX3JlamVjdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX25vbl9zeXNjYWxsXCIpKVxuK1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3RcIikpXG4rXHRcdFJVTl9URVNUUyh0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsKTtcbitcbitcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgKzEsMTEyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4raW50IHRhcmdldF9waWQ7XG4raW50IHByb2dfdHJpZ2dlcmVkO1xuK2xvbmcgZXJyO1xuK2NoYXIgY29waWVkX2J5dGU7XG4rXG4rc3RhdGljIGludCBjb3B5X2dldGN3ZF9hcmcoY2hhciAqdWJ1Zilcbit7XG4rXHRlcnIgPSBicGZfY29weV9mcm9tX3VzZXIoXHUwMDI2Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHByb2dfdHJpZ2dlcmVkID0gMTtcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJ0cF9idGYucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XG4rXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4rfVxuK1xuK1NFQyhcInJhd190cC5zL3N5c19lbnRlclwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4re1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbitcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJ0cC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbit7XG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopYXJncy1cdTAwM2VhcmdzWzBdKTtcbit9XG4rXG4rU0VDKFwidHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpXG4re1xuK1x0c3RydWN0IHB0X3JlZ3MgKnJlZ3M7XG4rXG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4rXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJyYXdfdHAuc1wiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX2JhcmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJ0cC5zXCIpXG4raW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcIilcbitpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RyYWNlcG9pbnQucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJyYXdfdHAucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMIFx1MDAyNlx1MDAyNiAoX191NjQpaWQgPT0gMHg1Njc4VUxMKVxuK1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgKyAoX191NjQpaWQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnMvc2NoZWRfc3dpdGNoXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuK1x0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHAucy9zY2hlZC9zY2hlZF9zd2l0Y2hcIilcbitpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICsxLDE4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuKy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbitTRUMoXCJ0cF9idGYucy9zY2hlZF9zd2l0Y2hcIilcbitfX2ZhaWx1cmUgX19tc2coXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsXG4rXHQgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KVxuK3tcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbmluZGV4IGMyYjdmNWViZjE2OGMuLjZkYWJjNTUyMjk0NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuQEAgLTc2LDcgKzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0XCIsXG4rXHRcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcIixcbitcdC5pbnNucyA9IHtcbitcdEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSxcbitcdEJQRl9FWElUX0lOU04oKSxcbitcdH0sXG4rXHQucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLFxuK1x0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcbitcdC5rZnVuYyA9IFwic3lzX2VudGVyXCIsXG4rXHQucmVzdWx0ID0gQUNDRVBULFxuK1x0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuK1x0LnJ1bnMgPSAtMSxcbit9LFxuK3tcbitcdFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCIsXG4gXHQuaW5zbnMgPSB7XG4gXHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4gXHRCUEZfRVhJVF9JTlNOKCksXG5AQCAtODUsNyArOTgsNyBAQFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcbiBcdC5rZnVuYyA9IFwic2NoZWRfc3dpdGNoXCIsXG4gXHQucmVzdWx0ID0gUkVKRUNULFxuLVx0LmVycnN0ciA9IFwiT25seSBmZW50cnkvZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQsIGxzbSwgaXRlciwgdXByb2JlLCBhbmQgc3RydWN0X29wcyBwcm9ncmFtcyBjYW4gYmUgc2xlZXBhYmxlXCIsXG4rXHQuZXJyc3RyID0gXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFwiLFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MTYuNjM1Mjc2MzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwMzcxNjMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBTbGVlcGFibGUgVHJhY2Vwb2ludCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3Mgc3VwcG9zZWRseSBhZGRpbmcgdGVzdHMgZm9yIHNsZWVwYWJsZSB0cmFjZXBvaW50cyB3aXRoaW4gQlBGLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1ha2Ugc3VyZSBpdCdzIHNlbGYtY29udGFpbmVkOyBJIGRvbid0IHdhbnQgYW55IHVuZXhwZWN0ZWQgcmVncmVzc2lvbnMgaW4gY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgY2hlY2tpbmcgaWYgYW55IGZpbGVzICpvdXRzaWRlKiBvZiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeSBoYXZlIGJlZW4gdG91Y2hlZC4gVGhhdCdzIHRoZSBwcmltYXJ5IGFyZWEgb2YgY29uY2VybiB3aGVuIGFkZGluZyBuZXcgc2VsZiB0ZXN0cy5cblxuQWxyaWdodCwgdGhlIGRpZmYgY29uZmlybXMgaXQuIEl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZXMgYXJlIGFsbCBpc29sYXRlZCB3aXRoaW4gdGhhdCBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29yay4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgbW9kaWZpZWQgZmlsZXMganVzdCB0byBjb25maXJtLiBPa2F5LCBJIHNlZTpcblxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AgLSBUaGlzIGlzIGV4cGVjdGVkLCB0aGUgdGVzdCBkZWZpbml0aW9ucy5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgIC0gVGhpcyBpcyBhbHNvIGV4cGVjdGVkLCB0aGUgc3VjY2Vzc2Z1bCBwcm9ncmFtIHRvIHVzZS5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY2AgLSBBbmQgb2YgY291cnNlLCB0aGUgZmFpbHVyZSB0ZXN0IHByb2dyYW0uXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2AgLSBUaGlzIGlzIGludGVyZXN0aW5nLiBMb29rcyBsaWtlIHdlJ3JlIHVwZGF0aW5nIHRoZSB2ZXJpZmllciB0byBhbGxvdyBmb3IgdGhlc2Ugc2xlZXBhYmxlIHRyYWNlcG9pbnRzLiBUaGF0J3MgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuXG5cbkkgc3RpbGwgd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB1c2luZyBgZ2l0IGxvZ2Agb3IgYGdpdCBzaG93YCwganVzdCB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcyBpbiB0aGUgb3ZlcmFsbCBjb21taXQuIEp1c3QgYSBzYW5pdHkgY2hlY2sgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgzNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjI0LjIzODk5NDczN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5ODEyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jLTc4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmM6Nzk6XFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCBhY2NlcHRcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYy04MC1cXHQuaW5zbnMgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjI1LjkyODgxNDE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMTI4NDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkFuYWx5emluZyB0aGUgQ29tbWl0IERpZmYqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRpZmYuLi4gaXQgbG9va3MgbGlrZSB0aGUgKmNvbXBsZXRlKiBkaWZmIGZvciB0aGUgY29tbWl0LCByaWdodD8gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlIGhlcmUuIE5vdywgbGV0IG1lIHF1aWNrbHkgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBjb21taXQgbWVzc2FnZS4gQWgsIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LlwiIFJpZ2h0LCB0aGF0IG5hcnJvd3MgaXQgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGF0J3MgZ29vZDsgaXQga2VlcHMgdGhlIHNjb3BlIHJlbGF0aXZlbHkgY29udGFpbmVkLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIHRob3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGtlcm5lbC1sZXZlbCBtb2RpZmljYXRpb25zIGluIEhFQUQgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhpcyBwYXJ0aWN1bGFyIGFyZWEuIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBkaWcgZnVydGhlci4gVGhpcyBpcyBhIGNvbW1vbiBzaXR1YXRpb24gd2l0aCBzeXotY2x1c3RlciBwYXRjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTA4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MjkuOTQwMTAxMDYyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTAyMTczNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYz0xMj1TRUMoXFxcInRwX2J0Zi5zL3NjaGVkX3N3aXRjaFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYzoxMzpfX2ZhaWx1cmUgX19tc2coXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jLTE0LWludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAwLVxcdC5yZXN1bHQgPSBSRUpFQ1QsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jOjEwMTpcXHQuZXJyc3RyID0gXFxcIlNsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMtMTAyLVxcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MzEuNDUwMzI0MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzEwMDgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gQ29tbWl0IFNjb3BlKipcblxuUmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJ20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ3ZlIGdvdCB0aGlzIGNvbW1pdCBpbiBmcm9udCBvZiBtZSwgYnV0IEkgY2FuJ3QganVzdCBhc3N1bWUgaXQncyBpc29sYXRlZC4gSXQncyB0b28gZWFzeSB0byBtaXNzIHNvbWV0aGluZyBjcnVjaWFsLCBlc3BlY2lhbGx5IGluIGEgbGFyZ2UgY29kZWJhc2UuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgZGV0YWlscyBhZ2FpbiwgYW5kIGxvb2sgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIGBnaXRgIGNvbW1hbmQgb3IgdXNlIG15IElERSdzIGZ1bmN0aW9uYWxpdHkgdG8gaWRlbnRpZnkgKmFsbCogZmlsZXMgdG91Y2hlZCBieSB0aGlzIGNvbW1pdCwgbm90IGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXMgb25lcy4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJldmlldyBwcm9jZXNzLiBUaGlzIGlzIHRvIHNlZSBpZiBhbnkgc2VlbWluZ2x5IHVucmVsYXRlZCBjaGFuZ2VzIHdlcmUgaW5jbHVkZWQsIGFuZCBJIGFsc28gbmVlZCB0byBzZWUgaWYgYW55IGRlcGVuZCBvbiB0aGlzIGNoYW5nZS4gVGhpcyBxdWljayBjaGVjayB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGltcGFjdHMgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgZG9uJ3Qgd2FudCB0byBnZXQgYmxpbmRzaWRlZCBsYXRlciBieSBhIGNhc2NhZGluZyBlZmZlY3QgSSBkaWRuJ3QgYW50aWNpcGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA1NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjM0Ljg3MzQyNjc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDcyMTYxNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6MzYuMzIwNjQ4NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NjI0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqUmV2aWV3aW5nIEN1cnJlbnQgQ2hhbmdlcyB3aXRoIEdpdCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCBJJ3ZlIGJlZW4gd29ya2luZyBvbiwgcHJvYmFibHkgYmVmb3JlIEkgY29tbWl0IG9yIHB1c2guIFRoZSBmYXN0ZXN0IHdheSB0byBzZWUgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdG8gdXNlIGBnaXQgc2hvdyAtLXN0YXQgSEVBRGAuIFRoYXQgY29tbWFuZCB3aWxsIGNvbmNpc2VseSBzdW1tYXJpemUgdGhlIGNoYW5nZXMgaW4gbXkgd29ya2luZyBkaXJlY3RvcnkgY29tcGFyZWQgdG8gdGhlIGxhc3QgY29tbWl0LCByaWdodD8gU3BlY2lmaWNhbGx5LCBpdCdsbCBzaG93IG1lIHRoZSBudW1iZXIgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zIGZvciBlYWNoIGZpbGUgbW9kaWZpZWQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQgZm9yIGEgcmFwaWQgYXNzZXNzbWVudC4gVGhpcyBhdm9pZHMgYSBmdWxsIGRpZmYsIHdoaWNoIG1pZ2h0IGJlIG92ZXJraWxsIHJpZ2h0IG5vdy4gSSBqdXN0IHdhbnQgdGhlIGJpcmQncy1leWUgdmlldywgdGhlIGZpbGUtbGV2ZWwgaW1wYWN0LiBMZXQncyBzZWUgd2hhdCBpdCB0ZWxscyBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjEzOjM5LjczNTI3NTY1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NTMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI6LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDojaW5jbHVkZSBcXHUwMDNjdGVzdF9wcm9ncy5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU6I2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY6I2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLnNrZWwuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk6c3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTpcXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcXFwiL1xcXCI7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQ6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vwcm9nX3RyaWdnZXJlZCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTU6XFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE2OlxcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlY29waWVkX2J5dGUgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE3OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE4OlxcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE5OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjIwOlxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcXFwicHJvZ190cmlnZ2VyZWRcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMTpcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIsIDAsIFxcXCJlcnJcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMjpcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vjb3BpZWRfYnl0ZSwgJy8nLCBcXFwiY29waWVkX2J5dGVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyMzp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjQ6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MjU6c3RhdGljIHZvaWQgcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Mjc6e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjI4OlxcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoyOTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMDpcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozMTpcXHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXFxcInByb2dfYXR0YWNoXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MzI6XFx0XFx0cmV0dXJuO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjMzOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM0OlxcdHJ1bl90ZXN0KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM1OlxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjM2On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozNzpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozODpzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzozOTp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDA6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQxOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQyOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjQzOlxcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NDpcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0NTp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDY6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDc6c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo0ODp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NDk6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUwOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUxOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUyOlxcdGlmICghQVNTRVJUX0VSUl9QVFIobGluaywgXFxcImF0dGFjaF9zaG91bGRfZmFpbFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjUzOlxcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU0On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1NjpzdGF0aWMgdm9pZCB0ZXN0X3Jhd190cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo1Nzp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NTg6XFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjU5OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjYwOlxcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MTpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJzeXNfZW50ZXJcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2MjpcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjM6XFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NjQ6fVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY2OnN0YXRpYyB2b2lkIHRlc3RfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Njc6e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjY4OlxcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo2OTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3MDpcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjcxOlxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJzeXNjYWxsc1xcXCIsIFxcXCJzeXNfZW50ZXJfZ2V0Y3dkXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6NzI6XFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjczOlxcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjc0On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3NjpzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo3Nzp7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzg6XFx0X191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6Nzk6XFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgwOlxcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgxOlxcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4MjpcXHQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjgzOlxcdGludCBmZCwgZXJyO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg0OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg1OlxcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6ODY6XFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXFx1MDAyNnRvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4NzpcXHRBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo4ODpcXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICsgYXJnc1sxXSwgXFxcInRlc3RfcnVuX3JldHZhbFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjg5On1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MTpzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjkyOntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5MzpcXHRfX3U2NCBhcmdzWzJdID0ge307XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTQ6XFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk1OlxcdFxcdC5jdHhfaW4gPSBhcmdzLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjk2OlxcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5NzpcXHRcXHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6OTg6XFx0KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzo5OTpcXHRpbnQgZmQsIGVycjtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDA6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAxOlxcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAyOlxcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTAzOlxcdEFTU0VSVF9FUlIoZXJyLCBcXFwidGVzdF9ydW5fb25fY3B1X3JlamVjdFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNDp9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwNjp2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTA3OntcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMDg6XFx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEwOTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTA6XFx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTExOlxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExMjpcXHRcXHRyZXR1cm47XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTEzOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfYnRmXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE1OlxcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMTY6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjExNzpcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE4OlxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50XFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTE5OlxcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyMDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic3lzX2V4aXRcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjE6XFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjI6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRyYWNlcG9pbnRfYWxpYXNcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjM6XFx0XFx0dGVzdF9hdHRhY2hfb25seShza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjQ6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cmFjZXBvaW50X2FsaWFzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTI1OlxcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEyNjpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX2JhcmVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjc6XFx0XFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjg6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2JhcmVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMjk6XFx0XFx0dGVzdF90cF9iYXJlKHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzMDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9ydW5cXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzE6XFx0XFx0dGVzdF90ZXN0X3J1bihza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzI6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzM6XFx0XFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzNDpcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX25vbl9mYXVsdGFibGVcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzU6XFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTM2OlxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9ub25fc3lzY2FsbFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzNzpcXHRcXHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxMzg6XFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjEzOTpcXHRcXHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmM6MTQwOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jOjE0MTpcXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYzoxNDI6fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzoxMzozOS43NzcxMzE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM1Nzc2NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiAtIFNlbGZ0ZXN0cyBPbmx5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IGluZGljYXRlcyBJIHNob3VsZCBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLlxuXG5GaXJzdCwgbGV0IG1lIGNvbmZpcm06IHRoZSBkaWZmIHByb3ZpZGVkIHByZWNpc2VseSByZWZsZWN0cyB0aGUgYXBwbGllZCBjaGFuZ2VzLiBJdCdzIHNvbGVseSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuIE5vIGNoYW5nZXMgYXJlIGJlaW5nIG1hZGUgdG8gdGhlIGtlcm5lbCdzIGNvcmUgc291cmNlIGNvZGUsIG5vdGhpbmcgaW4gYGtlcm5lbC9icGYvYCwgYG5ldC9jb3JlL2AsIG9yIGFueXdoZXJlIGVsc2UgdGhhdCB3b3VsZCBkaXJlY3RseSBhbHRlciBrZXJuZWwgZXhlY3V0aW9uLlxuXG5UaGUgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIGJ5IGl0cyBsb2NhdGlvbiwgcG9pbnRzIHRvIG1vZGlmaWNhdGlvbnMgb25seSB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBmcmFtZXdvcmsuIFNlbGZ0ZXN0cywgaW4gbXkgdW5kZXJzdGFuZGluZywgYXJlIHVzZXItc3BhY2UgdGVzdCBwcm9ncmFtcy4gVGhleSBhcmUgbm90IHBhcnQgb2YgdGhlIGtlcm5lbCdzIG9wZXJhdGlvbmFsIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiBvciB0aGUgZnV6emluZyBwcm9jZXNzIGl0c2VsZi4gVGhlcmVmb3JlLCBldmVuIHRob3VnaCBcInNlbGZ0ZXN0c1wiIGlzbid0IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZSByZWFzb25zIHRvIHJldHVybiBgZmFsc2VgLCB0aGUgaW50ZW50IG1hdGNoZXMgLSB0aGlzIGlzbid0IG1ha2luZyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuIEl0J3MgdXNlci1zcGFjZSB0ZXN0aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIG90aGVyIGZpbGVzIHdlcmUgbW9kaWZpZWQgYmV5b25kIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LlxuXG5UaGUgZGlmZiBsaXN0cyB0aGVzZSBmaWxlczpcblxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2BcbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY2BcblxuWWVzLCB0aGV5IGFyZSBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFzIGV4cGVjdGVkLiBTbywgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5NDksIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6NDkuNjEyOTExMTg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6MTM6NDkuNjEyOTQxMTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowspllv[1] Phase: Running StartedAt: 2026-08-10 17:14:00 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspllv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 17:14:00 +0000 UTC FinishedAt: 2026-08-10 17:14:05 +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,}