Name: series-workflow44wxl Phase: Failed StartedAt: 2026-08-25 12:57:52 +0000 UTC FinishedAt: 2026-08-25 14:03:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow44wxl[0] Phase: Succeeded StartedAt: 2026-08-25 12:57:52 +0000 UTC FinishedAt: 2026-08-25 14:03:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow44wxl[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 12:57:52 +0000 UTC FinishedAt: 2026-08-25 14:03:14 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZTU0YmRlMWExOTQ2N2Q2YzlhZmE3MDBhYmYxYjdiZmY0MThkY2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTM6NTI6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9nYXRlLmMgYi9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuaW5kZXggZmRiZmNhYTNlMmFiOS4uNGM0YTBmODBkZWMxZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuQEAgLTE2NiwxMyAmIzQzOzE2NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9HQVRFX0VOVFJZX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRTXVx0PSB7IC50eXBlID0gTkxBX1MzMiB9LFxuIH07XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XG4mIzQzO1x0Lm1pbiA9IDAsXG4mIzQzO1x0Lm1heCA9IFM2NF9NQVgsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4gXHRbVENBX0dBVEVfUEFSTVNdXHRcdD1cbiBcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXG4gXHRbVENBX0dBVEVfUFJJT1JJVFldXHRcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiBcdFtUQ0FfR0FURV9FTlRSWV9MSVNUXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbVENBX0dBVEVfQkFTRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4tXHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuJiM0MztcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVx0XHQ9XG4mIzQzO1x0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG4gXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfR0FURV9DTE9DS0lEXVx0XHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG5AQCAtNTAxLDYgJiM0Mzs1MDcsNyBAQCBzdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdFx0Y3ljbGUgPSBrdGltZV9hZGRfbnMoY3ljbGUsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbiBcdFx0Y3ljbGV0aW1lID0gY3ljbGU7XG4gXHR9XG4mIzQzO1xuIFx0cC1cdTAwM2V0Y2ZnX2N5Y2xldGltZSA9IGN5Y2xldGltZTtcbiBcdHAtXHUwMDNldGNmZ19jeWNsZXRpbWVfZXh0ID0gY3ljbGV0aW1lX2V4dDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xMG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTU0YmRlMWExOTQ2N2Q2YzlhZmE3MDBhYmYxYjdiZmY0MThkY2QyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTM6NTI6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhdGUuYyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCmluZGV4IGZkYmZjYWEzZTJhYjkuLjRjNGEwZjgwZGVjMWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCkBAIC0xNjYsMTMgJiM0MzsxNjYsMTkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfR0FURV9FTlRSWV9NQVggJiM0MzsgMV0gPSB7CiAJW1RDQV9HQVRFX0VOVFJZX01BWF9PQ1RFVFNdCT0geyAudHlwZSA9IE5MQV9TMzIgfSwKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0gewomIzQzOwkubWluID0gMCwKJiM0MzsJLm1heCA9IFM2NF9NQVgsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7CiAJW1RDQV9HQVRFX1BBUk1TXQkJPQogCQlOTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IHRjX2dhdGUpKSwKIAlbVENBX0dBVEVfUFJJT1JJVFldCQk9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCiAJW1RDQV9HQVRFX0VOVFJZX0xJU1RdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW1RDQV9HQVRFX0JBU0VfVElNRV0JCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKLQlbVENBX0dBVEVfQ1lDTEVfVElNRV0JCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKJiM0MzsJW1RDQV9HQVRFX0NZQ0xFX1RJTUVdCQk9CiYjNDM7CQlOTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsICZhbXA7Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSwKIAlbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKIAlbVENBX0dBVEVfRkxBR1NdCQk9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW1RDQV9HQVRFX0NMT0NLSURdCQk9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCkBAIC01MDEsNiAmIzQzOzUwNyw3IEBAIHN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwKIAkJCWN5Y2xlID0ga3RpbWVfYWRkX25zKGN5Y2xlLCBlbnRyeS0mZ3Q7aW50ZXJ2YWwpOwogCQljeWNsZXRpbWUgPSBjeWNsZTsKIAl9CiYjNDM7CiAJcC0mZ3Q7dGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7CiAJcC0mZ3Q7dGNmZ19jeWNsZXRpbWVfZXh0ID0gY3ljbGV0aW1lX2V4dDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGxpbmsgUG9saWN5IENoYW5nZSBpbiBgYWN0X2dhdGUuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIG5ldGxpbmsgcG9saWN5IGluIGBuZXQvc2NoZWQvYWN0X2dhdGUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHBvbGljeSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCB3YXMgdXNpbmcgYE5MQV9VNjRgLCBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciwgYW5kIG5vdyBpdCYjMzk7cyB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCAmYW1wO2dhdGVfY3ljbGVfdGltZV9yYW5nZSlgLCB3aGljaCBpcyBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciwgYnV0IHJlc3RyaWN0ZWQgdG8gdGhlIHJhbmdlIGBbMCwgUzY0X01BWF1gLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgTkxBX1U2NGAgYWxyZWFkeSBpbXBsaWVzIHVuc2lnbmVkLCBzbyB3aGF0JiMzOTtzIHRoZSBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgYnVnIGluIHBhcnNpbmcgc29tZXdoZXJlIHRoYXQgYWxsb3dlZCBzaWduZWQgaW50ZXJwcmV0YXRpb24/IE9yIGFyZSB0aGV5IGp1c3QgZXhwbGljaXRseSByZXN0cmljdGluZyB0aGUgcmFuZ2UsIGV2ZW4gdGhvdWdoIHRoZSB1bnNpZ25lZCBuYXR1cmUgYWxyZWFkeSBkaWQgdGhhdD8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29kZSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCBzZWVtcyB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYHRjZl9nYXRlX2luaXRgIGZ1bmN0aW9uLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHRoZSBuZXcgcG9saWN5IGFuZCB0aGUgb2xkIG9uZSB0byBmaW5kIG91dCB0aGUgaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDQV9HQVRFX0NZQ0xFX1RJTUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhdGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhdGUuYz0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhdGVfcG9saWN5W1RDQV9HQVRFX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzktXHRbVENBX0dBVEVfQkFTRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODA6XHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgxLVx0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODI6XHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODMtXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2My1cdFx0XHRlcnIgPSB0Y2ZfZ2F0ZV9jb3B5X2VudHJpZXMocCwgY3VyX3AsIGV4dGFjayk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0NjQ6XHRcdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICF0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2NS1cdFx0XHRcdGN5Y2xldGltZSA9IGN1cl9wLVx1MDAzZXRjZmdfY3ljbGV0aW1lO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4MC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MTpcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MjpcdFx0Y3ljbGV0aW1lID0gbmxhX2dldF91NjQodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgzLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg0Olx0aWYgKHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NTpcdFx0Y3ljbGV0aW1lX2V4dCA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODYtXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYzNy1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjYzODpcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUUsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzktXHRcdFx0ICAgICAgcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZSwgVENBX0dBVEVfUEFEKSlcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDEtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2NDI6XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FX0VYVCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY0My1cdFx0XHQgICAgICBwLVx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCwgVENBX0dBVEVfUEFEKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHN1YmplY3QgbWF0dGVyIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBUeXBlIG9mIGBjeWNsZXRpbWVgKioKCkhtbSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGRhdGEgdHlwZSBmb3IgYGN5Y2xldGltZWAuIElzIGl0IGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgdTY0YCkgb3IgYSBzaWduZWQgNjQtYml0IGludGVnZXIgKGBzNjRgKT8gS25vd2luZyB0aGF0IGlzIGNydWNpYWwgZm9yIGF2b2lkaW5nIHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgYW5kIGVuc3VyaW5nIHRoZSBjb3JyZWN0IGludGVycHJldGF0aW9uIG9mIHRoZSB0aW1lciB2YWx1ZXMgaW4gbXkgY3VycmVudCB3b3JrLiBJIG5lZWQgdGhhdCBkYXRhIHR5cGUgaW4gbXkgaGVhZCwgbm93IQoKTGV0JiMzOTtzIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgZGV0YWlsLiBBIHF1aWNrIHNjYW4gb2YgYHRjZl9nYXRlX2luaXRgIGFuZCB0aGUgYHN0cnVjdCB0Y19nYXRlYCBkZWZpbml0aW9uIHNob3VsZCBwcm92aWRlIHRoZSBhbnN3ZXIsIGFuZCBjZW1lbnQgdGhlIGV4YWN0IGRhdGEgdHlwZSBpbiBteSBrbm93bGVkZ2UtYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y19nYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYHN0cnVjdCB0Y19nYXRlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGhhbmRzIG9uIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgdGNfZ2F0ZWAuIEl0JiMzOTtzIGEga2V5IHN0cnVjdHVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsYXlvdXQgYW5kIG1lbWJlcnMgZm9yIHdoYXRldmVyIEkmIzM5O20gd29ya2luZyBvbiDigJMgcHJvYmFibHkgc29tZXRoaW5nIGRlZXAgaW4gdHJhZmZpYyBjb250cm9sIG9yIFFvUy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBvciBtYXliZSB0aGUgaGVhZGVycyBpZiBJJiMzOTttIGx1Y2t5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIEkmIzM5O20gdGFyZ2V0aW5nLCBvciBpdCYjMzk7cyBnb2luZyB0byBiZSBhIHdpbGQgZ29vc2UgY2hhc2UuIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgdGhlIHN0YW5kYXJkIGluY2x1ZGUgcGF0aHMsIGFuZCB0aGVuIHBlcmhhcHMgcGVyZm9ybSBhIGNzY29wZSBvciBjdGFncyBzZWFyY2guIEkgaG9wZSBJIGNhbiBsb2NhdGUgdGhlIGRlZmluaXRpb24gcXVpY2tseSB3aXRob3V0IHJlbHlpbmcgb24gZXh0ZXJuYWwgcGFja2FnZXMuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgbmVzdGluZywgcGVyaGFwcyBpdCBpcyB1c2VkIGluIGB0Y2Agb3Igb25lIG9mIGl0cyBkZXBlbmRlbmNpZXMuIE9uY2UgSSBoYXZlIHRoZSBzb3VyY2UgY29kZSBwYXRoLCBJIGNhbiBkaWcgaW4gYW5kIGFuYWx5emUgaXQgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHRjX2dhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtOC1cbmluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oOjk6c3RydWN0IHRjX2dhdGUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtMTAtXHR0Y19nZW47XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzUtXHRbVENBX0dBVEVfUEFSTVNdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE3NjpcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzctXHRbVENBX0dBVEVfUFJJT1JJVFldXHRcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3Mi1cdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM3MzpcdHN0cnVjdCB0Y19nYXRlICpwYXJtO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzc0LVx0dTY0IG9sZF9iYXNldGltZSA9IDA7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYxNi1cdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MTc6XHRzdHJ1Y3QgdGNfZ2F0ZSBvcHQgPSB7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MTgtXHRcdC5pbmRleCAgICA9IGdhY3QtXHUwMDNldGNmX2luZGV4LFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTY4OT1zdGF0aWMgc2l6ZV90IHRjZl9nYXRlX2dldF9maWxsX3NpemUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYWN0KVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjkwLXtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjY5MTpcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHRjX2dhdGUpKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY5Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIENvcnJlY3QgRGF0YSBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHdoaWNoIHN0cnVjdHVyZSBob2xkcyB0aGUgYHRjZmdfY3ljbGV0aW1lYCBmaWVsZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBiZWVuIGJvdW5jaW5nIGFyb3VuZCBhIGZldyBkaWZmZXJlbnQgVENGIHN0cnVjdHVyZXMsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gQWhhISBUaGUgcGVubnkganVzdCBkcm9wcGVkIC0gSXQmIzM5O3MgYHN0cnVjdCB0Y2ZfZ2F0ZWAuIFRoYXQmIzM5O3MgdGhlIG9uZS4gSSB3YXMgZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGEgZmV3IG90aGVycyBpbml0aWFsbHksIGJ1dCBJJiMzOTttIGNlcnRhaW4gbm93LiBgc3RydWN0IHRjZl9nYXRlYCBpcyB0aGUgc3RydWN0dXJlIEkmIzM5O20gbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y2ZfZ2F0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTE3PXN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkge1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMjUtXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjI2OnN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMge1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0yNy1cdHMzMlx0XHRcdHRjZmdfcHJpb3JpdHk7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC00MC1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NDE6c3RydWN0IHRjZl9nYXRlIHtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNDItXHRzdHJ1Y3QgdGNfYWN0aW9uXHRjb21tb247XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjQzOlx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyBfX3JjdSAqcGFyYW07XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQ0LVx0dThcdFx0XHRjdXJyZW50X2dhdGVfc3RhdHVzO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTItXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjUzOiNkZWZpbmUgdG9fZ2F0ZShhKSAoKHN0cnVjdCB0Y2ZfZ2F0ZSAqKWEpXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU0LVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnRjZl9nYXRlX3BhcmFtc19sb2NrZWQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTYte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NzpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU4LVxuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NjM9c3RhdGljIGlubGluZSBzMzIgdGNmX2dhdGVfcHJpbyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC02NC17XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjY1Olx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNjYtXHRzMzIgdGNmZ19wcmlvO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NzQ9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfYmFzZXRpbWUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNzUte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo3NjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTc3LVx0dTY0IHRjZmdfYmFzZXRpbWU7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD04NT1zdGF0aWMgaW5saW5lIHU2NCB0Y2ZfZ2F0ZV9jeWNsZXRpbWUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtODYte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo4NzpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTg4LVx0dTY0IHRjZmdfY3ljbGV0aW1lO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9OTY9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfY3ljbGV0aW1lZXh0KGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTk3LXtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6OTg6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC05OS1cdHU2NCB0Y2ZnX2N5Y2xldGltZWV4dDtcbi0tXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTEwNz1zdGF0aWMgaW5saW5lIHUzMiB0Y2ZfZ2F0ZV9udW1fZW50cmllcyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMDgte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoxMDk6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMTAtXHR1MzIgbnVtX2VudHJpZXM7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xMTg9c3RhdGljIGlubGluZSBzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnlcbi0tXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEyMS1cdHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeSAqb2U7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjEyMjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEyMy1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTE5PXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2F0ZV9vcHM7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIxOnN0YXRpYyBrdGltZV90IGdhdGVfZ2V0X3RpbWUoc3RydWN0IHRjZl9nYXRlICpnYWN0KVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjIte1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1PXN0YXRpYyB2b2lkIHRjZl9nYXRlX3BhcmFtc19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzYtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzpzdGF0aWMgdm9pZCBnYXRlX2dldF9zdGFydF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM4Olx0XHRcdFx0Y29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcGFyYW0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zOS1cdFx0XHRcdGt0aW1lX3QgKnN0YXJ0KVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3LVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTg6c3RhdGljIHZvaWQgZ2F0ZV9zdGFydF90aW1lcihzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QsIGt0aW1lX3Qgc3RhcnQpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01OS17XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NzE9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdhdGVfdGltZXJfZnVuYyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Mi17XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3MzpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRjZl9nYXRlLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzQtXHRcdFx0XHRcdCAgICAgaGl0aW1lcik7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NS1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKm5leHQ7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3NjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Ny1cdGt0aW1lX3QgY2xvc2VfdGltZSwgbm93O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTEyMj1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2dhdGVfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTI1LXtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjEyNjpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xMjctXHRpbnQgYWN0aW9uID0gUkVBRF9PTkNFKGdhY3QtXHUwMDNldGNmX2FjdGlvbik7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MjI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfZW50cnlfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyaWVzKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTIzOC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIzOTpzdGF0aWMgaW50IHRjZl9nYXRlX2NvcHlfZW50cmllcyhzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpkc3QsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoyNDA6XHRcdFx0XHQgY29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqc3JjLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjQxLVx0XHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0yNjg9c3RhdGljIGludCBwYXJzZV9nYXRlX2xpc3Qoc3RydWN0IG5sYXR0ciAqbGlzdF9hdHRyLFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MjY5Olx0XHRcdCAgIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnNjaGVkLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjcwLVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zMjM9c3RhdGljIGludCBnYXRlX2Nsb2NrX3Jlc29sdmUoczMyIGNsb2NraWQsIGVudW0gdGtfb2Zmc2V0cyAqdGtvLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0NC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM0NTpzdGF0aWMgdm9pZCBnYXRlX3NldHVwX3RpbWVyKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCwgczMyIGNsb2NraWQsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNDYtXHRcdFx0ICAgICBlbnVtIHRrX29mZnNldHMgdGtvKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1Mz1zdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzU5LVx0dTY0IGN5Y2xldGltZSA9IDAsIGJhc2V0aW1lID0gMCwgY3ljbGV0aW1lX2V4dCA9IDA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjA6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwID0gTlVMTCwgKm9sZF9wID0gTlVMTDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM2MS1cdGVudW0gdGtfb2Zmc2V0cyBvbGRfdGtfb2Zmc2V0ID0gVEtfT0ZGU19UQUk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjI6XHRjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpjdXJfcCA9IE5VTEw7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNjMtXHRib29sIGJpbmQgPSBmbGFncyBcdTAwMjYgVENBX0FDVF9GTEFHU19CSU5EO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3MS1cdHMzMiBjbG9ja2lkID0gQ0xPQ0tfVEFJO1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6MzcyOlx0c3RydWN0IHRjZl9nYXRlICpnYWN0O1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzczLVx0c3RydWN0IHRjX2dhdGUgKnBhcm07XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NTYyPXN0YXRpYyB2b2lkIHRjZl9nYXRlX3BhcmFtc19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NjMte1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTY0Olx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zLCByY3UpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNTY1LVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTU3MD1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NzEte1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTcyOlx0c3RydWN0IHRjZl9nYXRlICpnYWN0ID0gdG9fZ2F0ZShhKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjU3MzpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NzQtXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYxNS1cdHVuc2lnbmVkIGNoYXIgKmIgPSBza2JfdGFpbF9wb2ludGVyKHNrYik7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MTY6XHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE3LVx0c3RydWN0IHRjX2dhdGUgb3B0ID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyMi1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjIzOlx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyNC1cdHN0cnVjdCBubGF0dHIgKmVudHJ5X2xpc3Q7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9Njc5PXN0YXRpYyB2b2lkIHRjZl9nYXRlX3N0YXRzX3VwZGF0ZShzdHJ1Y3QgdGNfYWN0aW9uICphLCB1NjQgYnl0ZXMsIHU2NCBwYWNrZXRzLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY4MS17XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2ODI6XHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjgzLVx0c3RydWN0IHRjZl90ICp0bSA9IFx1MDAyNmdhY3QtXHUwMDNldGNmX3RtO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTc0Mz1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X2dhdGVfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTc1My1cdC5vZmZsb2FkX2FjdF9zZXR1cCA9XHR0Y2ZfZ2F0ZV9vZmZsb2FkX2FjdF9zZXR1cCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjc1NDpcdC5zaXplXHRcdD1cdHNpemVvZihzdHJ1Y3QgdGNmX2dhdGUpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzU1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0bGluayBQb2xpY3kgQ2hhbmdlKioKCk9rYXksIHNvIGB0Y2ZnX2N5Y2xldGltZWAgaXMgYSBgdTY0YC4gSSBzZWUgdGhhdCB0aGlzIGNvbW1pdCByZXN0cmljdHMgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgIHdpdGhpbiB0aGUgbmV0bGluayBwb2xpY3kgdG8gdGhlIHJhbmdlIG9mIGBbMCwgUzY0X01BWF1gLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IHByZXZlbnQgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCwgYXMgYW4gdW5zaWduZWQgaW50ZWdlciwgd291bGQgYWN0dWFsbHkgYmUgbGFyZ2UgdmFsdWVzLCBhbmQgdG8gY2F0Y2ggdmFsdWVzIHRoYXQgYXJlIHNpbXBseSB0b28gbGFyZ2UuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aGV5JiMzOTtyZSB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCAmYW1wO2dhdGVfY3ljbGVfdGltZV9yYW5nZSlgLiBSaWdodC4gVGhhdCBtZWFucyB0aGUgYXR0cmlidXRlIGdldHMgdHJlYXRlZCBhcyBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciAoYE5MQV9TNjRgKSBkdXJpbmcgdmFsaWRhdGlvbiwgYW5kIHRoZSByYW5nZSBpcyBlZmZlY3RpdmVseSBgMGAgdG8gYFM2NF9NQVhgLiBUaGF0JiMzOTtzIHRoZSBrZXkgZGlmZmVyZW5jZSEgSXQgbG9va3MgbGlrZSBwcmV2aW91c2x5IHRoZSBhdHRyaWJ1dGUgbWF5IGhhdmUgYmVlbiB0cmVhdGVkIGFzIGBOTEFfVTY0YCwgcG90ZW50aWFsbHkgYWNjZXB0aW5nIHZhbHVlcyB1cCB0byBgVTY0X01BWGAuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEl0ICppcyogYSBuZXRsaW5rIHBvbGljeSBjaGFuZ2UsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlc2UgYnVncyBsdXJrLiBCdXQgaXQmIzM5O3MganVzdCByZXN0cmljdGluZyB0aGUgYWNjZXB0ZWQgcmFuZ2UuIElmIGEgdXNlciB0cmllcyB0byBwYXNzIGEgdmFsdWUgZXhjZWVkaW5nIGBTNjRfTUFYYCwgaXQmIzM5O2xsIG5vdyBiZSByZWplY3RlZCB3aXRoIGBFSU5WQUxgIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgZ2V0dGluZyBhY2NlcHRlZC4gVGhpcyBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgc3l6a2FsbGVyIGJ1ZyBmaXgsIHdoZXJlIGEgbGFyZ2UgdmFsdWUgY291bGQgY2F1c2Ugb3ZlcmZsb3dzIG9yIG90aGVyIGlzc3VlcyBkb3duIHRoZSBsaW5lLgoKRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgbG9naWMgdGhhdCBuZWVkIGZ1enppbmc/IE5vLCBub3QgcmVhbGx5LiBUaGlzIGlzIGEgcG9saWN5IGRlZmluaXRpb24gY2hhbmdlLiBUaGUgbmV0bGluayBwb2xpY3kgdmFsaWRhdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgY29yZSBuZXRsaW5rIGNvZGUuIFRoZSBvbmx5IGNoYW5nZXMgYXJlIHdpdGhpbiBgZ2F0ZV9wb2xpY3lgIGFuZCBgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgZGlmZiBqdXN0IHRvIGJlIGV4dHJhIHN1cmUuIExldCBtZSBnbyBvdmVyIHRoZSBkZXRhaWxzIG9mIHRoZSBkaWZmIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUQ0FfR0FURV9DWUNMRV9USU1FJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTc5LVx0W1RDQV9HQVRFX0JBU0VfVElNRV1cdFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgwOlx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4MS1cdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgyOlx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgzLVx0W1RDQV9HQVRFX0ZMQUdTXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzUzPXN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjMtXHRcdFx0ZXJyID0gdGNmX2dhdGVfY29weV9lbnRyaWVzKHAsIGN1cl9wLCBleHRhY2spO1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDY0Olx0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiAhdGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjUtXHRcdFx0XHRjeWNsZXRpbWUgPSBjdXJfcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZTtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODAtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODE6XHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODI6XHRcdGN5Y2xldGltZSA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4My1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NDpcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODU6XHRcdGN5Y2xldGltZV9leHQgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDg2LVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTYxMj1zdGF0aWMgaW50IHRjZl9nYXRlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzctXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2Mzg6XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjM5LVx0XHRcdCAgICAgIHAtXHUwMDNldGNmZ19jeWNsZXRpbWUsIFRDQV9HQVRFX1BBRCkpXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjQxLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjQyOlx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0dBVEVfQ1lDTEVfVElNRV9FWFQsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDMtXHRcdFx0ICAgICAgcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZV9leHQsIFRDQV9HQVRFX1BBRCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBBbGwgaXQmIzM5O3MgZG9pbmcgaXMgdHdlYWtpbmcgdGhlIGBnYXRlX3BvbGljeWAgYW5kIGFkZGluZyBhIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgLiBBbmQgdGhlcmUmIzM5O3MgdGhhdCBibGFuayBsaW5lIGFkZGVkIGluIGB0Y2ZfZ2F0ZV9pbml0YCwgYnV0IHRoYXQmIzM5O3MganVzdCBjb3NtZXRpYywgaXNuJiMzOTt0IGl0PyBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY2xhcmF0aXZlIGNoYW5nZS4gSXQmIzM5O3MganVzdCB0aWdodGVuaW5nIHVwIHRoZSBuZXRsaW5rIHBvbGljeSwgcmVzdHJpY3RpbmcgdGhlIGFsbG93YWJsZSByYW5nZSBvZiBhbiBhdHRyaWJ1dGUuIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgZnV6emluZy4gV2UmIzM5O3JlIGp1c3QgcHJldmVudGluZyB0aGUgcG9zc2liaWxpdHkgb2YgcGFyc2luZyBhIGdhcmJhZ2UgdmFsdWUsIHJlYWxseSBhIHNhbml0eSBjaGVjay4gU28sIG15IGd1dCBmZWVsaW5nIGlzLCB3ZSBjYW4gc2tpcCBmdXp6aW5nIHRoaXMgb25lLiBObyBuZWVkIHRvIHdhc3RlIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBlc3NlbnRpYWxseSBhIGJvdW5kcyBjaGVjay4KCkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBkaWZmIGFnYWluLi4uIEdvdHRhIGJlIHRob3JvdWdoLiBBbHdheXMgdGhlIGRldmlscyBpbiB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2F0ZV9jeWNsZV90aW1lX3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmM9MTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBlbnRyeV9wb2xpY3lbVENBX0dBVEVfRU5UUllfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE2OC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0ge1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTcwLVx0Lm1pbiA9IDAsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgwLVx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE4MTpcdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgyLVx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIzNgoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDU4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgYGFjdF9nYXRlLmNgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBxdWljayBnbGFuY2UsIHRoaXMgZGlmZiBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgbWFraW5nIGEgbmV0bGluayBwb2xpY3kgdXBkYXRlIHdpdGhpbiB0aGUgYGFjdF9nYXRlLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCBhdHRyaWJ1dGUuCgpJbml0aWFsbHksIGl0IHNlZW1zIHRoZSBgVENBX0dBVEVfQ1lDTEVfVElNRWAgd2FzIGRlZmluZWQgd2l0aCBhIGdlbmVyaWMgYE5MQV9VNjRgIHR5cGUuIFRoZSBwYXRjaCBub3cgaW50cm9kdWNlcyBhIHJhbmdlIHZhbGlkYXRpb24gdG8gaXQgdXNpbmcgYE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORURgIGFuZCBhIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgc2V0cyBhIG1pbmltdW0gdmFsdWUgb2YgMCBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIGBTNjRfTUFYYCBmb3IgdGhlIGN5Y2xlIHRpbWUsIGVuc3VyaW5nIHRoYXQgdGhlIGBjeWNsZV90aW1lYCB2YWx1ZSBpcyBwcm9wZXJseSBjb25zdHJhaW5lZC4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZ29vZCBwcmFjdGljZSB0byBhdm9pZCB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIHByZXZlbnQuCgpUaGUgc2Vjb25kIHBhcnQgaXMgdG8gYWRkIGEgYmxhbmsgbGluZS4KClRoaXMgaXMgYSBwb2xpY3kgY2hhbmdlIHRoYXQgYWRkcyB2YWxpZGF0aW9uLiBUaGVyZSYjMzk7cyBubyBuZXcsIGV4ZWN1dGFibGUgbG9naWMgdG8gc2NydXRpbml6ZS4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXNuJiMzOTt0IGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgZ2VuZXJhdGluZyBuZXcgdGVzdCBjYXNlcyBvciBmaW5kaW5nIG5ldyBidWdzLiBJJiMzOTtsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0MS4zODA5MDY3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg5MTI5MTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUyOjQxLjM4MDkxMjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxODM4NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGU1NGJkZTFhMTk0NjdkNmM5YWZhNzAwYWJmMWI3YmZmNDE4ZGNkMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzo1MjozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhdGUuYyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXFxuaW5kZXggZmRiZmNhYTNlMmFiOS4uNGM0YTBmODBkZWMxZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhdGUuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXFxuQEAgLTE2NiwxMyArMTY2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBlbnRyeV9wb2xpY3lbVENBX0dBVEVfRU5UUllfTUFYICsgMV0gPSB7XFxuIFxcdFtUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRTXVxcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XFxuK1xcdC5taW4gPSAwLFxcbitcXHQubWF4ID0gUzY0X01BWCxcXG4rfTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG4gXFx0W1RDQV9HQVRFX1BBUk1TXVxcdFxcdD1cXG4gXFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXFxuIFxcdFtUQ0FfR0FURV9QUklPUklUWV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuIFxcdFtUQ0FfR0FURV9FTlRSWV9MSVNUXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W1RDQV9HQVRFX0JBU0VfVElNRV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxuLVxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4rXFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXFx0XFx0PVxcbitcXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFxcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxcbiBcXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiBcXHRbVENBX0dBVEVfRkxBR1NdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiBcXHRbVENBX0dBVEVfQ0xPQ0tJRF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuQEAgLTUwMSw2ICs1MDcsNyBAQCBzdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuIFxcdFxcdFxcdGN5Y2xlID0ga3RpbWVfYWRkX25zKGN5Y2xlLCBlbnRyeS1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRcXHRjeWNsZXRpbWUgPSBjeWNsZTtcXG4gXFx0fVxcbitcXG4gXFx0cC1cXHUwMDNldGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7XFxuIFxcdHAtXFx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCA9IGN5Y2xldGltZV9leHQ7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0Mi45MzM3MTY1MzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjAzMzg0NjMyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRlNTRiZGUxYTE5NDY3ZDZjOWFmYTcwMGFiZjFiN2JmZjQxOGRjZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzo1MjozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jIGIvbmV0L3NjaGVkL2FjdF9nYXRlLmNcbmluZGV4IGZkYmZjYWEzZTJhYjkuLjRjNGEwZjgwZGVjMWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9nYXRlLmNcbkBAIC0xNjYsMTMgKzE2NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9HQVRFX0VOVFJZX01BWCArIDFdID0ge1xuIFx0W1RDQV9HQVRFX0VOVFJZX01BWF9PQ1RFVFNdXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0ge1xuK1x0Lm1pbiA9IDAsXG4rXHQubWF4ID0gUzY0X01BWCxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcbiBcdFtUQ0FfR0FURV9QQVJNU11cdFx0PVxuIFx0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IHRjX2dhdGUpKSxcbiBcdFtUQ0FfR0FURV9QUklPUklUWV1cdFx0PSB7IC50eXBlID0gTkxBX1MzMiB9LFxuIFx0W1RDQV9HQVRFX0VOVFJZX0xJU1RdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtUQ0FfR0FURV9CQVNFX1RJTUVdXHRcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcbi1cdFtUQ0FfR0FURV9DWUNMRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4rXHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PVxuK1x0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG4gXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfR0FURV9DTE9DS0lEXVx0XHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG5AQCAtNTAxLDYgKzUwNyw3IEBAIHN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbiBcdFx0XHRjeWNsZSA9IGt0aW1lX2FkZF9ucyhjeWNsZSwgZW50cnktXHUwMDNlaW50ZXJ2YWwpO1xuIFx0XHRjeWNsZXRpbWUgPSBjeWNsZTtcbiBcdH1cbitcbiBcdHAtXHUwMDNldGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7XG4gXHRwLVx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCA9IGN5Y2xldGltZV9leHQ7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0Mi45MzM3MTg4MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjE4ODE0NzQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRsaW5rIFBvbGljeSBDaGFuZ2UgaW4gYGFjdF9nYXRlLmNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbmV0bGluayBwb2xpY3kgaW4gYG5ldC9zY2hlZC9hY3RfZ2F0ZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNoYW5naW5nIHRoZSBwb2xpY3kgZm9yIGBUQ0FfR0FURV9DWUNMRV9USU1FYC4gSXQgd2FzIHVzaW5nIGBOTEFfVTY0YCwgYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIsIGFuZCBub3cgaXQncyB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpYCwgd2hpY2ggaXMgYSBzaWduZWQgNjQtYml0IGludGVnZXIsIGJ1dCByZXN0cmljdGVkIHRvIHRoZSByYW5nZSBgWzAsIFM2NF9NQVhdYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgTkxBX1U2NGAgYWxyZWFkeSBpbXBsaWVzIHVuc2lnbmVkLCBzbyB3aGF0J3MgdGhlIHBvaW50PyBJcyB0aGVyZSBhIHN1YnRsZSBidWcgaW4gcGFyc2luZyBzb21ld2hlcmUgdGhhdCBhbGxvd2VkIHNpZ25lZCBpbnRlcnByZXRhdGlvbj8gT3IgYXJlIHRoZXkganVzdCBleHBsaWNpdGx5IHJlc3RyaWN0aW5nIHRoZSByYW5nZSwgZXZlbiB0aG91Z2ggdGhlIHVuc2lnbmVkIG5hdHVyZSBhbHJlYWR5IGRpZCB0aGF0PyBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29kZSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCBzZWVtcyB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYHRjZl9nYXRlX2luaXRgIGZ1bmN0aW9uLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHRoZSBuZXcgcG9saWN5IGFuZCB0aGUgb2xkIG9uZSB0byBmaW5kIG91dCB0aGUgaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTUuMTIxODY4MjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MTY0Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDQV9HQVRFX0NZQ0xFX1RJTUVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2FjdF9nYXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE3OS1cXHRbVENBX0dBVEVfQkFTRV9USU1FXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODA6XFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXFx0XFx0PVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4MS1cXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFxcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE4MjpcXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4My1cXHRbVENBX0dBVEVfRkxBR1NdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzUzPXN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2My1cXHRcXHRcXHRlcnIgPSB0Y2ZfZ2F0ZV9jb3B5X2VudHJpZXMocCwgY3VyX3AsIGV4dGFjayk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDY0OlxcdFxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2ICF0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjUtXFx0XFx0XFx0XFx0Y3ljbGV0aW1lID0gY3VyX3AtXFx1MDAzZXRjZmdfY3ljbGV0aW1lO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgwLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MTpcXHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDgyOlxcdFxcdGN5Y2xldGltZSA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODMtXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg0OlxcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg1OlxcdFxcdGN5Y2xldGltZV9leHQgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4Ni1cXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTYxMj1zdGF0aWMgaW50IHRjZl9nYXRlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYzNy1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2Mzg6XFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0dBVEVfQ1lDTEVfVElNRSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzktXFx0XFx0XFx0ICAgICAgcC1cXHUwMDNldGNmZ19jeWNsZXRpbWUsIFRDQV9HQVRFX1BBRCkpXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDEtXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjQyOlxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUVfRVhULFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY0My1cXHRcXHRcXHQgICAgICBwLVxcdTAwM2V0Y2ZnX2N5Y2xldGltZV9leHQsIFRDQV9HQVRFX1BBRCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUyOjU1LjE5OTAzNzQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4OTI0MTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzdWJqZWN0IG1hdHRlciBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBUeXBlIG9mIGBjeWNsZXRpbWVgKipcblxuSG1tLCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBkYXRhIHR5cGUgZm9yIGBjeWNsZXRpbWVgLiBJcyBpdCBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciAoYHU2NGApIG9yIGEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgczY0YCk/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWVzIGFuZCBlbnN1cmluZyB0aGUgY29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiB0aGUgdGltZXIgdmFsdWVzIGluIG15IGN1cnJlbnQgd29yay4gSSBuZWVkIHRoYXQgZGF0YSB0eXBlIGluIG15IGhlYWQsIG5vdyFcblxuTGV0J3MgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBkZXRhaWwuIEEgcXVpY2sgc2NhbiBvZiBgdGNmX2dhdGVfaW5pdGAgYW5kIHRoZSBgc3RydWN0IHRjX2dhdGVgIGRlZmluaXRpb24gc2hvdWxkIHByb3ZpZGUgdGhlIGFuc3dlciwgYW5kIGNlbWVudCB0aGUgZXhhY3QgZGF0YSB0eXBlIGluIG15IGtub3dsZWRnZS1iYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTkuNTg4MjgxNzY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTkwNTg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHRjX2dhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTkuNjk0MTk2OTA1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNDE5NTI3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipMb2NhdGluZyB0aGUgRGVmaW5pdGlvbiBvZiBgc3RydWN0IHRjX2dhdGVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHRjX2dhdGVgLiBJdCdzIGEga2V5IHN0cnVjdHVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsYXlvdXQgYW5kIG1lbWJlcnMgZm9yIHdoYXRldmVyIEknbSB3b3JraW5nIG9uIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgZGVlcCBpbiB0cmFmZmljIGNvbnRyb2wgb3IgUW9TLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgb3IgbWF5YmUgdGhlIGhlYWRlcnMgaWYgSSdtIGx1Y2t5LiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gSSdtIHRhcmdldGluZywgb3IgaXQncyBnb2luZyB0byBiZSBhIHdpbGQgZ29vc2UgY2hhc2UuIExldCBtZSBzZWUuLi4gSSdsbCBjaGVjayB0aGUgc3RhbmRhcmQgaW5jbHVkZSBwYXRocywgYW5kIHRoZW4gcGVyaGFwcyBwZXJmb3JtIGEgY3Njb3BlIG9yIGN0YWdzIHNlYXJjaC4gSSBob3BlIEkgY2FuIGxvY2F0ZSB0aGUgZGVmaW5pdGlvbiBxdWlja2x5IHdpdGhvdXQgcmVseWluZyBvbiBleHRlcm5hbCBwYWNrYWdlcy4gSSdtIGV4cGVjdGluZyBzb21lIG5lc3RpbmcsIHBlcmhhcHMgaXQgaXMgdXNlZCBpbiBgdGNgIG9yIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBPbmNlIEkgaGF2ZSB0aGUgc291cmNlIGNvZGUgcGF0aCwgSSBjYW4gZGlnIGluIGFuZCBhbmFseXplIGl0IHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTM6MDMuODA4Mzk0MDQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTk5MTg0NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHRjX2dhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oLTgtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmg6OTpzdHJ1Y3QgdGNfZ2F0ZSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtMTAtXFx0dGNfZ2VuO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzUtXFx0W1RDQV9HQVRFX1BBUk1TXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxNzY6XFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTc3LVxcdFtUQ0FfR0FURV9QUklPUklUWV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzcyLVxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzM6XFx0c3RydWN0IHRjX2dhdGUgKnBhcm07XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzc0LVxcdHU2NCBvbGRfYmFzZXRpbWUgPSAwO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE2LVxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjE3OlxcdHN0cnVjdCB0Y19nYXRlIG9wdCA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MTgtXFx0XFx0LmluZGV4ICAgID0gZ2FjdC1cXHUwMDNldGNmX2luZGV4LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9Njg5PXN0YXRpYyBzaXplX3QgdGNmX2dhdGVfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjkwLXtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2OTE6XFx0cmV0dXJuIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgdGNfZ2F0ZSkpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY5Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUzOjA2LjEyODMxNzA3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjI5MzI1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIENvcnJlY3QgRGF0YSBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB3aGljaCBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGB0Y2ZnX2N5Y2xldGltZWAgZmllbGQuIExldCdzIHNlZS4uLiBJJ3ZlIGJlZW4gYm91bmNpbmcgYXJvdW5kIGEgZmV3IGRpZmZlcmVudCBUQ0Ygc3RydWN0dXJlcywgYW5kIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBBaGEhIFRoZSBwZW5ueSBqdXN0IGRyb3BwZWQgLSBJdCdzIGBzdHJ1Y3QgdGNmX2dhdGVgLiBUaGF0J3MgdGhlIG9uZS4gSSB3YXMgZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGEgZmV3IG90aGVycyBpbml0aWFsbHksIGJ1dCBJJ20gY2VydGFpbiBub3cuIGBzdHJ1Y3QgdGNmX2dhdGVgIGlzIHRoZSBzdHJ1Y3R1cmUgSSdtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA4LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTM6MDkuMDkxMjUxNzM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI3NzI0ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCB0Y2ZfZ2F0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xNz1zdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5IHtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMjUtXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoyNjpzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zIHtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTI3LVxcdHMzMlxcdFxcdFxcdHRjZmdfcHJpb3JpdHk7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQwLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NDE6c3RydWN0IHRjZl9nYXRlIHtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQyLVxcdHN0cnVjdCB0Y19hY3Rpb25cXHRjb21tb247XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo0MzpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zIF9fcmN1ICpwYXJhbTtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQ0LVxcdHU4XFx0XFx0XFx0Y3VycmVudF9nYXRlX3N0YXR1cztcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTItXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1MzojZGVmaW5lIHRvX2dhdGUoYSkgKChzdHJ1Y3QgdGNmX2dhdGUgKilhKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTQtXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnRjZl9nYXRlX3BhcmFtc19sb2NrZWQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU2LXtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjU3OlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC01OC1cXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NjM9c3RhdGljIGlubGluZSBzMzIgdGNmX2dhdGVfcHJpbyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNjQte1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NjU6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTY2LVxcdHMzMiB0Y2ZnX3ByaW87XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTc0PXN0YXRpYyBpbmxpbmUgdTY0IHRjZl9nYXRlX2Jhc2V0aW1lKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC03NS17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo3NjpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNzctXFx0dTY0IHRjZmdfYmFzZXRpbWU7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTg1PXN0YXRpYyBpbmxpbmUgdTY0IHRjZl9nYXRlX2N5Y2xldGltZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtODYte1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6ODc6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTg4LVxcdHU2NCB0Y2ZnX2N5Y2xldGltZTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9OTY9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfY3ljbGV0aW1lZXh0KGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC05Ny17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo5ODpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtOTktXFx0dTY0IHRjZmdfY3ljbGV0aW1lZXh0O1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xMDc9c3RhdGljIGlubGluZSB1MzIgdGNmX2dhdGVfbnVtX2VudHJpZXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEwOC17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoxMDk6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTExMC1cXHR1MzIgbnVtX2VudHJpZXM7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTExOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMjEtXFx0c3RydWN0IGFjdGlvbl9nYXRlX2VudHJ5ICpvZTtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjEyMjpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMTIzLVxcdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTk9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9nYXRlX29wcztcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoyMTpzdGF0aWMga3RpbWVfdCBnYXRlX2dldF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdClcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMi17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNT1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNi1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzpzdGF0aWMgdm9pZCBnYXRlX2dldF9zdGFydF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozODpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwYXJhbSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zOS1cXHRcXHRcXHRcXHRrdGltZV90ICpzdGFydClcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3LVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjU4OnN0YXRpYyB2b2lkIGdhdGVfc3RhcnRfdGltZXIoc3RydWN0IHRjZl9nYXRlICpnYWN0LCBrdGltZV90IHN0YXJ0KVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU5LXtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTcxPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBnYXRlX3RpbWVyX2Z1bmMoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTcyLXtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3MzpcXHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB0Y2ZfZ2F0ZSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NC1cXHRcXHRcXHRcXHRcXHQgICAgIGhpdGltZXIpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTc1LVxcdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKm5leHQ7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NzY6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Ny1cXHRrdGltZV90IGNsb3NlX3RpbWUsIG5vdztcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTEyMj1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2dhdGVfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xMjUte1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjEyNjpcXHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTEyNy1cXHRpbnQgYWN0aW9uID0gUkVBRF9PTkNFKGdhY3QtXFx1MDAzZXRjZl9hY3Rpb24pO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MjI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfZW50cnlfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyaWVzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjM4LVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIzOTpzdGF0aWMgaW50IHRjZl9nYXRlX2NvcHlfZW50cmllcyhzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpkc3QsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MjQwOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpzcmMsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjQxLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0yNjg9c3RhdGljIGludCBwYXJzZV9nYXRlX2xpc3Qoc3RydWN0IG5sYXR0ciAqbGlzdF9hdHRyLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjI2OTpcXHRcXHRcXHQgICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpzY2hlZCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yNzAtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzIzPXN0YXRpYyBpbnQgZ2F0ZV9jbG9ja19yZXNvbHZlKHMzMiBjbG9ja2lkLCBlbnVtIHRrX29mZnNldHMgKnRrbyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0NC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNDU6c3RhdGljIHZvaWQgZ2F0ZV9zZXR1cF90aW1lcihzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QsIHMzMiBjbG9ja2lkLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0Ni1cXHRcXHRcXHQgICAgIGVudW0gdGtfb2Zmc2V0cyB0a28pXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzU5LVxcdHU2NCBjeWNsZXRpbWUgPSAwLCBiYXNldGltZSA9IDAsIGN5Y2xldGltZV9leHQgPSAwO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM2MDpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwID0gTlVMTCwgKm9sZF9wID0gTlVMTDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNjEtXFx0ZW51bSB0a19vZmZzZXRzIG9sZF90a19vZmZzZXQgPSBUS19PRkZTX1RBSTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjI6XFx0Y29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqY3VyX3AgPSBOVUxMO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM2My1cXHRib29sIGJpbmQgPSBmbGFncyBcXHUwMDI2IFRDQV9BQ1RfRkxBR1NfQklORDtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3MS1cXHRzMzIgY2xvY2tpZCA9IENMT0NLX1RBSTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzI6XFx0c3RydWN0IHRjZl9nYXRlICpnYWN0O1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3My1cXHRzdHJ1Y3QgdGNfZ2F0ZSAqcGFybTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTU2Mj1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU2My17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTY0OlxcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnAgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHRjZl9nYXRlX3BhcmFtcywgcmN1KTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NjUtXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz01NzA9c3RhdGljIHZvaWQgdGNmX2dhdGVfY2xlYW51cChzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3MS17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTcyOlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTczOlxcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNTc0LVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE1LVxcdHVuc2lnbmVkIGNoYXIgKmIgPSBza2JfdGFpbF9wb2ludGVyKHNrYik7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjE2OlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE3LVxcdHN0cnVjdCB0Y19nYXRlIG9wdCA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyMi1cXHRzdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5ICplbnRyeTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MjM6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MjQtXFx0c3RydWN0IG5sYXR0ciAqZW50cnlfbGlzdDtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTY3OT1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9zdGF0c191cGRhdGUoc3RydWN0IHRjX2FjdGlvbiAqYSwgdTY0IGJ5dGVzLCB1NjQgcGFja2V0cyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY4MS17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjgyOlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjgzLVxcdHN0cnVjdCB0Y2ZfdCAqdG0gPSBcXHUwMDI2Z2FjdC1cXHUwMDNldGNmX3RtO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NzQzPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2F0ZV9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NTMtXFx0Lm9mZmxvYWRfYWN0X3NldHVwID1cXHR0Y2ZfZ2F0ZV9vZmZsb2FkX2FjdF9zZXR1cCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3NTQ6XFx0LnNpemVcXHRcXHQ9XFx0c2l6ZW9mKHN0cnVjdCB0Y2ZfZ2F0ZSksXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzU1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUzOjExLjQxODk4Mjk2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDY5NzQ1NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldGxpbmsgUG9saWN5IENoYW5nZSoqXG5cbk9rYXksIHNvIGB0Y2ZnX2N5Y2xldGltZWAgaXMgYSBgdTY0YC4gSSBzZWUgdGhhdCB0aGlzIGNvbW1pdCByZXN0cmljdHMgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgIHdpdGhpbiB0aGUgbmV0bGluayBwb2xpY3kgdG8gdGhlIHJhbmdlIG9mIGBbMCwgUzY0X01BWF1gLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IHByZXZlbnQgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCwgYXMgYW4gdW5zaWduZWQgaW50ZWdlciwgd291bGQgYWN0dWFsbHkgYmUgbGFyZ2UgdmFsdWVzLCBhbmQgdG8gY2F0Y2ggdmFsdWVzIHRoYXQgYXJlIHNpbXBseSB0b28gbGFyZ2UuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRoZXkncmUgdXNpbmcgYE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKWAuIFJpZ2h0LiBUaGF0IG1lYW5zIHRoZSBhdHRyaWJ1dGUgZ2V0cyB0cmVhdGVkIGFzIGEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgTkxBX1M2NGApIGR1cmluZyB2YWxpZGF0aW9uLCBhbmQgdGhlIHJhbmdlIGlzIGVmZmVjdGl2ZWx5IGAwYCB0byBgUzY0X01BWGAuIFRoYXQncyB0aGUga2V5IGRpZmZlcmVuY2UhIEl0IGxvb2tzIGxpa2UgcHJldmlvdXNseSB0aGUgYXR0cmlidXRlIG1heSBoYXZlIGJlZW4gdHJlYXRlZCBhcyBgTkxBX1U2NGAsIHBvdGVudGlhbGx5IGFjY2VwdGluZyB2YWx1ZXMgdXAgdG8gYFU2NF9NQVhgLlxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEl0ICppcyogYSBuZXRsaW5rIHBvbGljeSBjaGFuZ2UsIGFuZCB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBidWdzIGx1cmsuIEJ1dCBpdCdzIGp1c3QgcmVzdHJpY3RpbmcgdGhlIGFjY2VwdGVkIHJhbmdlLiBJZiBhIHVzZXIgdHJpZXMgdG8gcGFzcyBhIHZhbHVlIGV4Y2VlZGluZyBgUzY0X01BWGAsIGl0J2xsIG5vdyBiZSByZWplY3RlZCB3aXRoIGBFSU5WQUxgIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgZ2V0dGluZyBhY2NlcHRlZC4gVGhpcyBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgc3l6a2FsbGVyIGJ1ZyBmaXgsIHdoZXJlIGEgbGFyZ2UgdmFsdWUgY291bGQgY2F1c2Ugb3ZlcmZsb3dzIG9yIG90aGVyIGlzc3VlcyBkb3duIHRoZSBsaW5lLlxuXG5Eb2VzIHRoaXMgaW50cm9kdWNlIGFueSBuZXcgY29kZSBwYXRocyBvciBsb2dpYyB0aGF0IG5lZWQgZnV6emluZz8gTm8sIG5vdCByZWFsbHkuIFRoaXMgaXMgYSBwb2xpY3kgZGVmaW5pdGlvbiBjaGFuZ2UuIFRoZSBuZXRsaW5rIHBvbGljeSB2YWxpZGF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBjb3JlIG5ldGxpbmsgY29kZS4gVGhlIG9ubHkgY2hhbmdlcyBhcmUgd2l0aGluIGBnYXRlX3BvbGljeWAgYW5kIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGRpZmYganVzdCB0byBiZSBleHRyYSBzdXJlLiBMZXQgbWUgZ28gb3ZlciB0aGUgZGV0YWlscyBvZiB0aGUgZGlmZiBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAzNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1MzoxOC44ODg3MzE0MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjc5MzgyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUQ0FfR0FURV9DWUNMRV9USU1FXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2F0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZ2F0ZV9wb2xpY3lbVENBX0dBVEVfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzktXFx0W1RDQV9HQVRFX0JBU0VfVElNRV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgwOlxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODEtXFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODI6XFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODMtXFx0W1RDQV9HQVRFX0ZMQUdTXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1Mz1zdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjMtXFx0XFx0XFx0ZXJyID0gdGNmX2dhdGVfY29weV9lbnRyaWVzKHAsIGN1cl9wLCBleHRhY2spO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ2NDpcXHRcXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiAhdGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDY1LVxcdFxcdFxcdFxcdGN5Y2xldGltZSA9IGN1cl9wLVxcdTAwM2V0Y2ZnX2N5Y2xldGltZTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4MC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODE6XFx0aWYgKHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MjpcXHRcXHRjeWNsZXRpbWUgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FXSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgzLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NDpcXHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NTpcXHRcXHRjeWNsZXRpbWVfZXh0ID0gbmxhX2dldF91NjQodGJbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODYtXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz02MTI9c3RhdGljIGludCB0Y2ZfZ2F0ZV9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzctXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjM4OlxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUUsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjM5LVxcdFxcdFxcdCAgICAgIHAtXFx1MDAzZXRjZmdfY3ljbGV0aW1lLCBUQ0FfR0FURV9QQUQpKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjQxLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjY0MjpcXHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FX0VYVCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDMtXFx0XFx0XFx0ICAgICAgcC1cXHUwMDNldGNmZ19jeWNsZXRpbWVfZXh0LCBUQ0FfR0FURV9QQUQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1MzoxOC45OTU1MjkxODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2MTAwNDc5MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBBbGwgaXQncyBkb2luZyBpcyB0d2Vha2luZyB0aGUgYGdhdGVfcG9saWN5YCBhbmQgYWRkaW5nIGEgYGdhdGVfY3ljbGVfdGltZV9yYW5nZWAuIEFuZCB0aGVyZSdzIHRoYXQgYmxhbmsgbGluZSBhZGRlZCBpbiBgdGNmX2dhdGVfaW5pdGAsIGJ1dCB0aGF0J3MganVzdCBjb3NtZXRpYywgaXNuJ3QgaXQ/IEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjbGFyYXRpdmUgY2hhbmdlLiBJdCdzIGp1c3QgdGlnaHRlbmluZyB1cCB0aGUgbmV0bGluayBwb2xpY3ksIHJlc3RyaWN0aW5nIHRoZSBhbGxvd2FibGUgcmFuZ2Ugb2YgYW4gYXR0cmlidXRlLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgZnV6emluZy4gV2UncmUganVzdCBwcmV2ZW50aW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBwYXJzaW5nIGEgZ2FyYmFnZSB2YWx1ZSwgcmVhbGx5IGEgc2FuaXR5IGNoZWNrLiBTbywgbXkgZ3V0IGZlZWxpbmcgaXMsIHdlIGNhbiBza2lwIGZ1enppbmcgdGhpcyBvbmUuIE5vIG5lZWQgdG8gd2FzdGUgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0J3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2suXG5cbkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBkaWZmIGFnYWluLi4uIEdvdHRhIGJlIHRob3JvdWdoLiBBbHdheXMgdGhlIGRldmlscyBpbiB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1NzozNS4wOTYwMTA4NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTI5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdhdGVfY3ljbGVfdGltZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2dhdGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2dhdGUuYz0xNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfR0FURV9FTlRSWV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE2OC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb25fc2lnbmVkIGdhdGVfY3ljbGVfdGltZV9yYW5nZSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzAtXFx0Lm1pbiA9IDAsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhdGVfcG9saWN5W1RDQV9HQVRFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgwLVxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODE6XFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODItXFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTc6MzUuMTQyOTQ0ODc3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODEyOTE5MzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgYGFjdF9nYXRlLmNgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGlzIGRpZmYgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UncmUgbWFraW5nIGEgbmV0bGluayBwb2xpY3kgdXBkYXRlIHdpdGhpbiB0aGUgYGFjdF9nYXRlLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCBhdHRyaWJ1dGUuXG5cbkluaXRpYWxseSwgaXQgc2VlbXMgdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCB3YXMgZGVmaW5lZCB3aXRoIGEgZ2VuZXJpYyBgTkxBX1U2NGAgdHlwZS4gVGhlIHBhdGNoIG5vdyBpbnRyb2R1Y2VzIGEgcmFuZ2UgdmFsaWRhdGlvbiB0byBpdCB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRGAgYW5kIGEgYGdhdGVfY3ljbGVfdGltZV9yYW5nZWAgc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBzZXRzIGEgbWluaW11bSB2YWx1ZSBvZiAwIGFuZCBhIG1heGltdW0gdmFsdWUgb2YgYFM2NF9NQVhgIGZvciB0aGUgY3ljbGUgdGltZSwgZW5zdXJpbmcgdGhhdCB0aGUgYGN5Y2xlX3RpbWVgIHZhbHVlIGlzIHByb3Blcmx5IGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBnb29kIHByYWN0aWNlIHRvIGF2b2lkIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gcHJldmVudC5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIHRvIGFkZCBhIGJsYW5rIGxpbmUuXG5cblRoaXMgaXMgYSBwb2xpY3kgY2hhbmdlIHRoYXQgYWRkcyB2YWxpZGF0aW9uLiBUaGVyZSdzIG5vIG5ldywgZXhlY3V0YWJsZSBsb2dpYyB0byBzY3J1dGluaXplLiBGcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGdlbmVyYXRpbmcgbmV3IHRlc3QgY2FzZXMgb3IgZmluZGluZyBuZXcgYnVncy4gSSdsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIzNiwiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDowMzowMy4yNzIxNDI1NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgbmV0bGluayBwb2xpY3kgZGVmaW5pdGlvbiB0byByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgdGhlIFRDQV9HQVRFX0NZQ0xFX1RJTUUgYXR0cmlidXRlIGFuZCBhZGRzIGEgYmxhbmsgbGluZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyBvciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgbmV0bGluayBwb2xpY3kgZGVmaW5pdGlvbiB0byByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgdGhlIFRDQV9HQVRFX0NZQ0xFX1RJTUUgYXR0cmlidXRlIGFuZCBhZGRzIGEgYmxhbmsgbGluZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyBvciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDowMzowMy4yNzIxODI0ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow44wxl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 12:57:52 +0000 UTC FinishedAt: 2026-08-25 14:03:04 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZTU0YmRlMWExOTQ2N2Q2YzlhZmE3MDBhYmYxYjdiZmY0MThkY2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTM6NTI6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9nYXRlLmMgYi9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuaW5kZXggZmRiZmNhYTNlMmFiOS4uNGM0YTBmODBkZWMxZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuQEAgLTE2NiwxMyAmIzQzOzE2NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9HQVRFX0VOVFJZX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRTXVx0PSB7IC50eXBlID0gTkxBX1MzMiB9LFxuIH07XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XG4mIzQzO1x0Lm1pbiA9IDAsXG4mIzQzO1x0Lm1heCA9IFM2NF9NQVgsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4gXHRbVENBX0dBVEVfUEFSTVNdXHRcdD1cbiBcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXG4gXHRbVENBX0dBVEVfUFJJT1JJVFldXHRcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiBcdFtUQ0FfR0FURV9FTlRSWV9MSVNUXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbVENBX0dBVEVfQkFTRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4tXHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuJiM0MztcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVx0XHQ9XG4mIzQzO1x0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG4gXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfR0FURV9DTE9DS0lEXVx0XHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG5AQCAtNTAxLDYgJiM0Mzs1MDcsNyBAQCBzdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdFx0Y3ljbGUgPSBrdGltZV9hZGRfbnMoY3ljbGUsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbiBcdFx0Y3ljbGV0aW1lID0gY3ljbGU7XG4gXHR9XG4mIzQzO1xuIFx0cC1cdTAwM2V0Y2ZnX2N5Y2xldGltZSA9IGN5Y2xldGltZTtcbiBcdHAtXHUwMDNldGNmZ19jeWNsZXRpbWVfZXh0ID0gY3ljbGV0aW1lX2V4dDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xMG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTU0YmRlMWExOTQ2N2Q2YzlhZmE3MDBhYmYxYjdiZmY0MThkY2QyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTM6NTI6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhdGUuYyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCmluZGV4IGZkYmZjYWEzZTJhYjkuLjRjNGEwZjgwZGVjMWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jCkBAIC0xNjYsMTMgJiM0MzsxNjYsMTkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfR0FURV9FTlRSWV9NQVggJiM0MzsgMV0gPSB7CiAJW1RDQV9HQVRFX0VOVFJZX01BWF9PQ1RFVFNdCT0geyAudHlwZSA9IE5MQV9TMzIgfSwKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0gewomIzQzOwkubWluID0gMCwKJiM0MzsJLm1heCA9IFM2NF9NQVgsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7CiAJW1RDQV9HQVRFX1BBUk1TXQkJPQogCQlOTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IHRjX2dhdGUpKSwKIAlbVENBX0dBVEVfUFJJT1JJVFldCQk9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCiAJW1RDQV9HQVRFX0VOVFJZX0xJU1RdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW1RDQV9HQVRFX0JBU0VfVElNRV0JCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKLQlbVENBX0dBVEVfQ1lDTEVfVElNRV0JCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKJiM0MzsJW1RDQV9HQVRFX0NZQ0xFX1RJTUVdCQk9CiYjNDM7CQlOTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsICZhbXA7Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSwKIAlbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdCT0geyAudHlwZSA9IE5MQV9VNjQgfSwKIAlbVENBX0dBVEVfRkxBR1NdCQk9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW1RDQV9HQVRFX0NMT0NLSURdCQk9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCkBAIC01MDEsNiAmIzQzOzUwNyw3IEBAIHN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwKIAkJCWN5Y2xlID0ga3RpbWVfYWRkX25zKGN5Y2xlLCBlbnRyeS0mZ3Q7aW50ZXJ2YWwpOwogCQljeWNsZXRpbWUgPSBjeWNsZTsKIAl9CiYjNDM7CiAJcC0mZ3Q7dGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7CiAJcC0mZ3Q7dGNmZ19jeWNsZXRpbWVfZXh0ID0gY3ljbGV0aW1lX2V4dDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGxpbmsgUG9saWN5IENoYW5nZSBpbiBgYWN0X2dhdGUuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIG5ldGxpbmsgcG9saWN5IGluIGBuZXQvc2NoZWQvYWN0X2dhdGUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHBvbGljeSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCB3YXMgdXNpbmcgYE5MQV9VNjRgLCBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciwgYW5kIG5vdyBpdCYjMzk7cyB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCAmYW1wO2dhdGVfY3ljbGVfdGltZV9yYW5nZSlgLCB3aGljaCBpcyBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciwgYnV0IHJlc3RyaWN0ZWQgdG8gdGhlIHJhbmdlIGBbMCwgUzY0X01BWF1gLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgTkxBX1U2NGAgYWxyZWFkeSBpbXBsaWVzIHVuc2lnbmVkLCBzbyB3aGF0JiMzOTtzIHRoZSBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgYnVnIGluIHBhcnNpbmcgc29tZXdoZXJlIHRoYXQgYWxsb3dlZCBzaWduZWQgaW50ZXJwcmV0YXRpb24/IE9yIGFyZSB0aGV5IGp1c3QgZXhwbGljaXRseSByZXN0cmljdGluZyB0aGUgcmFuZ2UsIGV2ZW4gdGhvdWdoIHRoZSB1bnNpZ25lZCBuYXR1cmUgYWxyZWFkeSBkaWQgdGhhdD8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29kZSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCBzZWVtcyB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYHRjZl9nYXRlX2luaXRgIGZ1bmN0aW9uLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHRoZSBuZXcgcG9saWN5IGFuZCB0aGUgb2xkIG9uZSB0byBmaW5kIG91dCB0aGUgaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDQV9HQVRFX0NZQ0xFX1RJTUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhdGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhdGUuYz0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhdGVfcG9saWN5W1RDQV9HQVRFX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzktXHRbVENBX0dBVEVfQkFTRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODA6XHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgxLVx0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODI6XHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODMtXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2My1cdFx0XHRlcnIgPSB0Y2ZfZ2F0ZV9jb3B5X2VudHJpZXMocCwgY3VyX3AsIGV4dGFjayk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0NjQ6XHRcdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICF0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2NS1cdFx0XHRcdGN5Y2xldGltZSA9IGN1cl9wLVx1MDAzZXRjZmdfY3ljbGV0aW1lO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4MC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MTpcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MjpcdFx0Y3ljbGV0aW1lID0gbmxhX2dldF91NjQodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgzLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg0Olx0aWYgKHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXSlcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NTpcdFx0Y3ljbGV0aW1lX2V4dCA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODYtXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYzNy1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjYzODpcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUUsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzktXHRcdFx0ICAgICAgcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZSwgVENBX0dBVEVfUEFEKSlcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDEtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2NDI6XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FX0VYVCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY0My1cdFx0XHQgICAgICBwLVx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCwgVENBX0dBVEVfUEFEKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHN1YmplY3QgbWF0dGVyIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBUeXBlIG9mIGBjeWNsZXRpbWVgKioKCkhtbSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGRhdGEgdHlwZSBmb3IgYGN5Y2xldGltZWAuIElzIGl0IGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgdTY0YCkgb3IgYSBzaWduZWQgNjQtYml0IGludGVnZXIgKGBzNjRgKT8gS25vd2luZyB0aGF0IGlzIGNydWNpYWwgZm9yIGF2b2lkaW5nIHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgYW5kIGVuc3VyaW5nIHRoZSBjb3JyZWN0IGludGVycHJldGF0aW9uIG9mIHRoZSB0aW1lciB2YWx1ZXMgaW4gbXkgY3VycmVudCB3b3JrLiBJIG5lZWQgdGhhdCBkYXRhIHR5cGUgaW4gbXkgaGVhZCwgbm93IQoKTGV0JiMzOTtzIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgZGV0YWlsLiBBIHF1aWNrIHNjYW4gb2YgYHRjZl9nYXRlX2luaXRgIGFuZCB0aGUgYHN0cnVjdCB0Y19nYXRlYCBkZWZpbml0aW9uIHNob3VsZCBwcm92aWRlIHRoZSBhbnN3ZXIsIGFuZCBjZW1lbnQgdGhlIGV4YWN0IGRhdGEgdHlwZSBpbiBteSBrbm93bGVkZ2UtYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y19nYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYHN0cnVjdCB0Y19nYXRlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGhhbmRzIG9uIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgdGNfZ2F0ZWAuIEl0JiMzOTtzIGEga2V5IHN0cnVjdHVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsYXlvdXQgYW5kIG1lbWJlcnMgZm9yIHdoYXRldmVyIEkmIzM5O20gd29ya2luZyBvbiDigJMgcHJvYmFibHkgc29tZXRoaW5nIGRlZXAgaW4gdHJhZmZpYyBjb250cm9sIG9yIFFvUy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBvciBtYXliZSB0aGUgaGVhZGVycyBpZiBJJiMzOTttIGx1Y2t5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIEkmIzM5O20gdGFyZ2V0aW5nLCBvciBpdCYjMzk7cyBnb2luZyB0byBiZSBhIHdpbGQgZ29vc2UgY2hhc2UuIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgdGhlIHN0YW5kYXJkIGluY2x1ZGUgcGF0aHMsIGFuZCB0aGVuIHBlcmhhcHMgcGVyZm9ybSBhIGNzY29wZSBvciBjdGFncyBzZWFyY2guIEkgaG9wZSBJIGNhbiBsb2NhdGUgdGhlIGRlZmluaXRpb24gcXVpY2tseSB3aXRob3V0IHJlbHlpbmcgb24gZXh0ZXJuYWwgcGFja2FnZXMuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgbmVzdGluZywgcGVyaGFwcyBpdCBpcyB1c2VkIGluIGB0Y2Agb3Igb25lIG9mIGl0cyBkZXBlbmRlbmNpZXMuIE9uY2UgSSBoYXZlIHRoZSBzb3VyY2UgY29kZSBwYXRoLCBJIGNhbiBkaWcgaW4gYW5kIGFuYWx5emUgaXQgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHRjX2dhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtOC1cbmluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oOjk6c3RydWN0IHRjX2dhdGUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtMTAtXHR0Y19nZW47XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzUtXHRbVENBX0dBVEVfUEFSTVNdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE3NjpcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzctXHRbVENBX0dBVEVfUFJJT1JJVFldXHRcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3Mi1cdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM3MzpcdHN0cnVjdCB0Y19nYXRlICpwYXJtO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzc0LVx0dTY0IG9sZF9iYXNldGltZSA9IDA7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYxNi1cdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MTc6XHRzdHJ1Y3QgdGNfZ2F0ZSBvcHQgPSB7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MTgtXHRcdC5pbmRleCAgICA9IGdhY3QtXHUwMDNldGNmX2luZGV4LFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTY4OT1zdGF0aWMgc2l6ZV90IHRjZl9nYXRlX2dldF9maWxsX3NpemUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYWN0KVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjkwLXtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjY5MTpcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHRjX2dhdGUpKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY5Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIENvcnJlY3QgRGF0YSBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHdoaWNoIHN0cnVjdHVyZSBob2xkcyB0aGUgYHRjZmdfY3ljbGV0aW1lYCBmaWVsZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBiZWVuIGJvdW5jaW5nIGFyb3VuZCBhIGZldyBkaWZmZXJlbnQgVENGIHN0cnVjdHVyZXMsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gQWhhISBUaGUgcGVubnkganVzdCBkcm9wcGVkIC0gSXQmIzM5O3MgYHN0cnVjdCB0Y2ZfZ2F0ZWAuIFRoYXQmIzM5O3MgdGhlIG9uZS4gSSB3YXMgZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGEgZmV3IG90aGVycyBpbml0aWFsbHksIGJ1dCBJJiMzOTttIGNlcnRhaW4gbm93LiBgc3RydWN0IHRjZl9nYXRlYCBpcyB0aGUgc3RydWN0dXJlIEkmIzM5O20gbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y2ZfZ2F0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTE3PXN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkge1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMjUtXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjI2OnN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMge1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0yNy1cdHMzMlx0XHRcdHRjZmdfcHJpb3JpdHk7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC00MC1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NDE6c3RydWN0IHRjZl9nYXRlIHtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNDItXHRzdHJ1Y3QgdGNfYWN0aW9uXHRjb21tb247XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjQzOlx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyBfX3JjdSAqcGFyYW07XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQ0LVx0dThcdFx0XHRjdXJyZW50X2dhdGVfc3RhdHVzO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTItXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjUzOiNkZWZpbmUgdG9fZ2F0ZShhKSAoKHN0cnVjdCB0Y2ZfZ2F0ZSAqKWEpXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU0LVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnRjZl9nYXRlX3BhcmFtc19sb2NrZWQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTYte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NzpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU4LVxuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NjM9c3RhdGljIGlubGluZSBzMzIgdGNmX2dhdGVfcHJpbyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC02NC17XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjY1Olx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNjYtXHRzMzIgdGNmZ19wcmlvO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NzQ9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfYmFzZXRpbWUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNzUte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo3NjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTc3LVx0dTY0IHRjZmdfYmFzZXRpbWU7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD04NT1zdGF0aWMgaW5saW5lIHU2NCB0Y2ZfZ2F0ZV9jeWNsZXRpbWUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtODYte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo4NzpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTg4LVx0dTY0IHRjZmdfY3ljbGV0aW1lO1xuLS1cbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9OTY9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfY3ljbGV0aW1lZXh0KGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTk3LXtcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6OTg6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC05OS1cdHU2NCB0Y2ZnX2N5Y2xldGltZWV4dDtcbi0tXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTEwNz1zdGF0aWMgaW5saW5lIHUzMiB0Y2ZfZ2F0ZV9udW1fZW50cmllcyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMDgte1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoxMDk6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMTAtXHR1MzIgbnVtX2VudHJpZXM7XG4tLVxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xMTg9c3RhdGljIGlubGluZSBzdHJ1Y3QgYWN0aW9uX2dhdGVfZW50cnlcbi0tXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEyMS1cdHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeSAqb2U7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjEyMjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEyMy1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTE5PXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2F0ZV9vcHM7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIxOnN0YXRpYyBrdGltZV90IGdhdGVfZ2V0X3RpbWUoc3RydWN0IHRjZl9nYXRlICpnYWN0KVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjIte1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1PXN0YXRpYyB2b2lkIHRjZl9nYXRlX3BhcmFtc19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzYtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzpzdGF0aWMgdm9pZCBnYXRlX2dldF9zdGFydF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM4Olx0XHRcdFx0Y29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcGFyYW0sXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zOS1cdFx0XHRcdGt0aW1lX3QgKnN0YXJ0KVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3LVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTg6c3RhdGljIHZvaWQgZ2F0ZV9zdGFydF90aW1lcihzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QsIGt0aW1lX3Qgc3RhcnQpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01OS17XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NzE9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdhdGVfdGltZXJfZnVuYyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Mi17XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3MzpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRjZl9nYXRlLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzQtXHRcdFx0XHRcdCAgICAgaGl0aW1lcik7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NS1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKm5leHQ7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3NjpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Ny1cdGt0aW1lX3QgY2xvc2VfdGltZSwgbm93O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTEyMj1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2dhdGVfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTI1LXtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjEyNjpcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xMjctXHRpbnQgYWN0aW9uID0gUkVBRF9PTkNFKGdhY3QtXHUwMDNldGNmX2FjdGlvbik7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MjI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfZW50cnlfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyaWVzKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTIzOC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIzOTpzdGF0aWMgaW50IHRjZl9nYXRlX2NvcHlfZW50cmllcyhzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpkc3QsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoyNDA6XHRcdFx0XHQgY29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqc3JjLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjQxLVx0XHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0yNjg9c3RhdGljIGludCBwYXJzZV9nYXRlX2xpc3Qoc3RydWN0IG5sYXR0ciAqbGlzdF9hdHRyLFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MjY5Olx0XHRcdCAgIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnNjaGVkLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjcwLVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zMjM9c3RhdGljIGludCBnYXRlX2Nsb2NrX3Jlc29sdmUoczMyIGNsb2NraWQsIGVudW0gdGtfb2Zmc2V0cyAqdGtvLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0NC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM0NTpzdGF0aWMgdm9pZCBnYXRlX3NldHVwX3RpbWVyKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCwgczMyIGNsb2NraWQsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNDYtXHRcdFx0ICAgICBlbnVtIHRrX29mZnNldHMgdGtvKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1Mz1zdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzU5LVx0dTY0IGN5Y2xldGltZSA9IDAsIGJhc2V0aW1lID0gMCwgY3ljbGV0aW1lX2V4dCA9IDA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjA6XHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwID0gTlVMTCwgKm9sZF9wID0gTlVMTDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM2MS1cdGVudW0gdGtfb2Zmc2V0cyBvbGRfdGtfb2Zmc2V0ID0gVEtfT0ZGU19UQUk7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjI6XHRjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpjdXJfcCA9IE5VTEw7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNjMtXHRib29sIGJpbmQgPSBmbGFncyBcdTAwMjYgVENBX0FDVF9GTEFHU19CSU5EO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3MS1cdHMzMiBjbG9ja2lkID0gQ0xPQ0tfVEFJO1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6MzcyOlx0c3RydWN0IHRjZl9nYXRlICpnYWN0O1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzczLVx0c3RydWN0IHRjX2dhdGUgKnBhcm07XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NTYyPXN0YXRpYyB2b2lkIHRjZl9nYXRlX3BhcmFtc19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NjMte1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTY0Olx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zLCByY3UpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNTY1LVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTU3MD1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEpXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NzEte1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTcyOlx0c3RydWN0IHRjZl9nYXRlICpnYWN0ID0gdG9fZ2F0ZShhKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjU3MzpcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NzQtXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYxNS1cdHVuc2lnbmVkIGNoYXIgKmIgPSBza2JfdGFpbF9wb2ludGVyKHNrYik7XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MTY6XHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE3LVx0c3RydWN0IHRjX2dhdGUgb3B0ID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyMi1cdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjIzOlx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyNC1cdHN0cnVjdCBubGF0dHIgKmVudHJ5X2xpc3Q7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9Njc5PXN0YXRpYyB2b2lkIHRjZl9nYXRlX3N0YXRzX3VwZGF0ZShzdHJ1Y3QgdGNfYWN0aW9uICphLCB1NjQgYnl0ZXMsIHU2NCBwYWNrZXRzLFxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY4MS17XG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2ODI6XHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjgzLVx0c3RydWN0IHRjZl90ICp0bSA9IFx1MDAyNmdhY3QtXHUwMDNldGNmX3RtO1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTc0Mz1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X2dhdGVfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTc1My1cdC5vZmZsb2FkX2FjdF9zZXR1cCA9XHR0Y2ZfZ2F0ZV9vZmZsb2FkX2FjdF9zZXR1cCxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjc1NDpcdC5zaXplXHRcdD1cdHNpemVvZihzdHJ1Y3QgdGNmX2dhdGUpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzU1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0bGluayBQb2xpY3kgQ2hhbmdlKioKCk9rYXksIHNvIGB0Y2ZnX2N5Y2xldGltZWAgaXMgYSBgdTY0YC4gSSBzZWUgdGhhdCB0aGlzIGNvbW1pdCByZXN0cmljdHMgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgIHdpdGhpbiB0aGUgbmV0bGluayBwb2xpY3kgdG8gdGhlIHJhbmdlIG9mIGBbMCwgUzY0X01BWF1gLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IHByZXZlbnQgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCwgYXMgYW4gdW5zaWduZWQgaW50ZWdlciwgd291bGQgYWN0dWFsbHkgYmUgbGFyZ2UgdmFsdWVzLCBhbmQgdG8gY2F0Y2ggdmFsdWVzIHRoYXQgYXJlIHNpbXBseSB0b28gbGFyZ2UuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aGV5JiMzOTtyZSB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCAmYW1wO2dhdGVfY3ljbGVfdGltZV9yYW5nZSlgLiBSaWdodC4gVGhhdCBtZWFucyB0aGUgYXR0cmlidXRlIGdldHMgdHJlYXRlZCBhcyBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciAoYE5MQV9TNjRgKSBkdXJpbmcgdmFsaWRhdGlvbiwgYW5kIHRoZSByYW5nZSBpcyBlZmZlY3RpdmVseSBgMGAgdG8gYFM2NF9NQVhgLiBUaGF0JiMzOTtzIHRoZSBrZXkgZGlmZmVyZW5jZSEgSXQgbG9va3MgbGlrZSBwcmV2aW91c2x5IHRoZSBhdHRyaWJ1dGUgbWF5IGhhdmUgYmVlbiB0cmVhdGVkIGFzIGBOTEFfVTY0YCwgcG90ZW50aWFsbHkgYWNjZXB0aW5nIHZhbHVlcyB1cCB0byBgVTY0X01BWGAuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEl0ICppcyogYSBuZXRsaW5rIHBvbGljeSBjaGFuZ2UsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlc2UgYnVncyBsdXJrLiBCdXQgaXQmIzM5O3MganVzdCByZXN0cmljdGluZyB0aGUgYWNjZXB0ZWQgcmFuZ2UuIElmIGEgdXNlciB0cmllcyB0byBwYXNzIGEgdmFsdWUgZXhjZWVkaW5nIGBTNjRfTUFYYCwgaXQmIzM5O2xsIG5vdyBiZSByZWplY3RlZCB3aXRoIGBFSU5WQUxgIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgZ2V0dGluZyBhY2NlcHRlZC4gVGhpcyBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgc3l6a2FsbGVyIGJ1ZyBmaXgsIHdoZXJlIGEgbGFyZ2UgdmFsdWUgY291bGQgY2F1c2Ugb3ZlcmZsb3dzIG9yIG90aGVyIGlzc3VlcyBkb3duIHRoZSBsaW5lLgoKRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgbG9naWMgdGhhdCBuZWVkIGZ1enppbmc/IE5vLCBub3QgcmVhbGx5LiBUaGlzIGlzIGEgcG9saWN5IGRlZmluaXRpb24gY2hhbmdlLiBUaGUgbmV0bGluayBwb2xpY3kgdmFsaWRhdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgY29yZSBuZXRsaW5rIGNvZGUuIFRoZSBvbmx5IGNoYW5nZXMgYXJlIHdpdGhpbiBgZ2F0ZV9wb2xpY3lgIGFuZCBgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgZGlmZiBqdXN0IHRvIGJlIGV4dHJhIHN1cmUuIExldCBtZSBnbyBvdmVyIHRoZSBkZXRhaWxzIG9mIHRoZSBkaWZmIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUQ0FfR0FURV9DWUNMRV9USU1FJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTc5LVx0W1RDQV9HQVRFX0JBU0VfVElNRV1cdFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgwOlx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4MS1cdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgyOlx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgzLVx0W1RDQV9HQVRFX0ZMQUdTXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzUzPXN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjMtXHRcdFx0ZXJyID0gdGNmX2dhdGVfY29weV9lbnRyaWVzKHAsIGN1cl9wLCBleHRhY2spO1xubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDY0Olx0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiAhdGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjUtXHRcdFx0XHRjeWNsZXRpbWUgPSBjdXJfcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZTtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODAtXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODE6XHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODI6XHRcdGN5Y2xldGltZSA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKTtcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4My1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NDpcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODU6XHRcdGN5Y2xldGltZV9leHQgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pO1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDg2LVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTYxMj1zdGF0aWMgaW50IHRjZl9nYXRlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzctXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2Mzg6XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjM5LVx0XHRcdCAgICAgIHAtXHUwMDNldGNmZ19jeWNsZXRpbWUsIFRDQV9HQVRFX1BBRCkpXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjQxLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjQyOlx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0dBVEVfQ1lDTEVfVElNRV9FWFQsXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDMtXHRcdFx0ICAgICAgcC1cdTAwM2V0Y2ZnX2N5Y2xldGltZV9leHQsIFRDQV9HQVRFX1BBRCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBBbGwgaXQmIzM5O3MgZG9pbmcgaXMgdHdlYWtpbmcgdGhlIGBnYXRlX3BvbGljeWAgYW5kIGFkZGluZyBhIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgLiBBbmQgdGhlcmUmIzM5O3MgdGhhdCBibGFuayBsaW5lIGFkZGVkIGluIGB0Y2ZfZ2F0ZV9pbml0YCwgYnV0IHRoYXQmIzM5O3MganVzdCBjb3NtZXRpYywgaXNuJiMzOTt0IGl0PyBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY2xhcmF0aXZlIGNoYW5nZS4gSXQmIzM5O3MganVzdCB0aWdodGVuaW5nIHVwIHRoZSBuZXRsaW5rIHBvbGljeSwgcmVzdHJpY3RpbmcgdGhlIGFsbG93YWJsZSByYW5nZSBvZiBhbiBhdHRyaWJ1dGUuIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgZnV6emluZy4gV2UmIzM5O3JlIGp1c3QgcHJldmVudGluZyB0aGUgcG9zc2liaWxpdHkgb2YgcGFyc2luZyBhIGdhcmJhZ2UgdmFsdWUsIHJlYWxseSBhIHNhbml0eSBjaGVjay4gU28sIG15IGd1dCBmZWVsaW5nIGlzLCB3ZSBjYW4gc2tpcCBmdXp6aW5nIHRoaXMgb25lLiBObyBuZWVkIHRvIHdhc3RlIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBlc3NlbnRpYWxseSBhIGJvdW5kcyBjaGVjay4KCkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBkaWZmIGFnYWluLi4uIEdvdHRhIGJlIHRob3JvdWdoLiBBbHdheXMgdGhlIGRldmlscyBpbiB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2F0ZV9jeWNsZV90aW1lX3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9nYXRlLmM9MTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBlbnRyeV9wb2xpY3lbVENBX0dBVEVfRU5UUllfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE2OC1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0ge1xubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTcwLVx0Lm1pbiA9IDAsXG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgwLVx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXHRcdD1cbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE4MTpcdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgyLVx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIzNgoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDU4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgYGFjdF9nYXRlLmNgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBxdWljayBnbGFuY2UsIHRoaXMgZGlmZiBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgbWFraW5nIGEgbmV0bGluayBwb2xpY3kgdXBkYXRlIHdpdGhpbiB0aGUgYGFjdF9nYXRlLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCBhdHRyaWJ1dGUuCgpJbml0aWFsbHksIGl0IHNlZW1zIHRoZSBgVENBX0dBVEVfQ1lDTEVfVElNRWAgd2FzIGRlZmluZWQgd2l0aCBhIGdlbmVyaWMgYE5MQV9VNjRgIHR5cGUuIFRoZSBwYXRjaCBub3cgaW50cm9kdWNlcyBhIHJhbmdlIHZhbGlkYXRpb24gdG8gaXQgdXNpbmcgYE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORURgIGFuZCBhIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgc2V0cyBhIG1pbmltdW0gdmFsdWUgb2YgMCBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIGBTNjRfTUFYYCBmb3IgdGhlIGN5Y2xlIHRpbWUsIGVuc3VyaW5nIHRoYXQgdGhlIGBjeWNsZV90aW1lYCB2YWx1ZSBpcyBwcm9wZXJseSBjb25zdHJhaW5lZC4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZ29vZCBwcmFjdGljZSB0byBhdm9pZCB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIHByZXZlbnQuCgpUaGUgc2Vjb25kIHBhcnQgaXMgdG8gYWRkIGEgYmxhbmsgbGluZS4KClRoaXMgaXMgYSBwb2xpY3kgY2hhbmdlIHRoYXQgYWRkcyB2YWxpZGF0aW9uLiBUaGVyZSYjMzk7cyBubyBuZXcsIGV4ZWN1dGFibGUgbG9naWMgdG8gc2NydXRpbml6ZS4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXNuJiMzOTt0IGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgZ2VuZXJhdGluZyBuZXcgdGVzdCBjYXNlcyBvciBmaW5kaW5nIG5ldyBidWdzLiBJJiMzOTtsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0MS4zODA5MDY3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg5MTI5MTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUyOjQxLjM4MDkxMjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxODM4NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGU1NGJkZTFhMTk0NjdkNmM5YWZhNzAwYWJmMWI3YmZmNDE4ZGNkMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzo1MjozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhdGUuYyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXFxuaW5kZXggZmRiZmNhYTNlMmFiOS4uNGM0YTBmODBkZWMxZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhdGUuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jXFxuQEAgLTE2NiwxMyArMTY2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBlbnRyeV9wb2xpY3lbVENBX0dBVEVfRU5UUllfTUFYICsgMV0gPSB7XFxuIFxcdFtUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRTXVxcdD0geyAudHlwZSA9IE5MQV9TMzIgfSxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XFxuK1xcdC5taW4gPSAwLFxcbitcXHQubWF4ID0gUzY0X01BWCxcXG4rfTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG4gXFx0W1RDQV9HQVRFX1BBUk1TXVxcdFxcdD1cXG4gXFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXFxuIFxcdFtUQ0FfR0FURV9QUklPUklUWV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuIFxcdFtUQ0FfR0FURV9FTlRSWV9MSVNUXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W1RDQV9HQVRFX0JBU0VfVElNRV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxuLVxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4rXFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXFx0XFx0PVxcbitcXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFxcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxcbiBcXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiBcXHRbVENBX0dBVEVfRkxBR1NdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiBcXHRbVENBX0dBVEVfQ0xPQ0tJRF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuQEAgLTUwMSw2ICs1MDcsNyBAQCBzdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuIFxcdFxcdFxcdGN5Y2xlID0ga3RpbWVfYWRkX25zKGN5Y2xlLCBlbnRyeS1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRcXHRjeWNsZXRpbWUgPSBjeWNsZTtcXG4gXFx0fVxcbitcXG4gXFx0cC1cXHUwMDNldGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7XFxuIFxcdHAtXFx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCA9IGN5Y2xldGltZV9leHQ7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0Mi45MzM3MTY1MzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjAzMzg0NjMyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBuZXRsaW5rIHBvbGljeSBkZWZpbml0aW9uIHRvIHJlc3RyaWN0IHRoZSByYW5nZSBvZiB0aGUgVENBX0dBVEVfQ1lDTEVfVElNRSBhdHRyaWJ1dGUgYW5kIGFkZHMgYSBibGFuayBsaW5lLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRlNTRiZGUxYTE5NDY3ZDZjOWFmYTcwMGFiZjFiN2JmZjQxOGRjZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzo1MjozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jIGIvbmV0L3NjaGVkL2FjdF9nYXRlLmNcbmluZGV4IGZkYmZjYWEzZTJhYjkuLjRjNGEwZjgwZGVjMWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhdGUuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9nYXRlLmNcbkBAIC0xNjYsMTMgKzE2NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9HQVRFX0VOVFJZX01BWCArIDFdID0ge1xuIFx0W1RDQV9HQVRFX0VOVFJZX01BWF9PQ1RFVFNdXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgZ2F0ZV9jeWNsZV90aW1lX3JhbmdlID0ge1xuK1x0Lm1pbiA9IDAsXG4rXHQubWF4ID0gUzY0X01BWCxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcbiBcdFtUQ0FfR0FURV9QQVJNU11cdFx0PVxuIFx0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IHRjX2dhdGUpKSxcbiBcdFtUQ0FfR0FURV9QUklPUklUWV1cdFx0PSB7IC50eXBlID0gTkxBX1MzMiB9LFxuIFx0W1RDQV9HQVRFX0VOVFJZX0xJU1RdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtUQ0FfR0FURV9CQVNFX1RJTUVdXHRcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcbi1cdFtUQ0FfR0FURV9DWUNMRV9USU1FXVx0XHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4rXHRbVENBX0dBVEVfQ1lDTEVfVElNRV1cdFx0PVxuK1x0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFx1MDAyNmdhdGVfY3ljbGVfdGltZV9yYW5nZSksXG4gXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gXHRbVENBX0dBVEVfRkxBR1NdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfR0FURV9DTE9DS0lEXVx0XHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG5AQCAtNTAxLDYgKzUwNyw3IEBAIHN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbiBcdFx0XHRjeWNsZSA9IGt0aW1lX2FkZF9ucyhjeWNsZSwgZW50cnktXHUwMDNlaW50ZXJ2YWwpO1xuIFx0XHRjeWNsZXRpbWUgPSBjeWNsZTtcbiBcdH1cbitcbiBcdHAtXHUwMDNldGNmZ19jeWNsZXRpbWUgPSBjeWNsZXRpbWU7XG4gXHRwLVx1MDAzZXRjZmdfY3ljbGV0aW1lX2V4dCA9IGN5Y2xldGltZV9leHQ7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1Mjo0Mi45MzM3MTg4MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjE4ODE0NzQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRsaW5rIFBvbGljeSBDaGFuZ2UgaW4gYGFjdF9nYXRlLmNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbmV0bGluayBwb2xpY3kgaW4gYG5ldC9zY2hlZC9hY3RfZ2F0ZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNoYW5naW5nIHRoZSBwb2xpY3kgZm9yIGBUQ0FfR0FURV9DWUNMRV9USU1FYC4gSXQgd2FzIHVzaW5nIGBOTEFfVTY0YCwgYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIsIGFuZCBub3cgaXQncyB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpYCwgd2hpY2ggaXMgYSBzaWduZWQgNjQtYml0IGludGVnZXIsIGJ1dCByZXN0cmljdGVkIHRvIHRoZSByYW5nZSBgWzAsIFM2NF9NQVhdYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgTkxBX1U2NGAgYWxyZWFkeSBpbXBsaWVzIHVuc2lnbmVkLCBzbyB3aGF0J3MgdGhlIHBvaW50PyBJcyB0aGVyZSBhIHN1YnRsZSBidWcgaW4gcGFyc2luZyBzb21ld2hlcmUgdGhhdCBhbGxvd2VkIHNpZ25lZCBpbnRlcnByZXRhdGlvbj8gT3IgYXJlIHRoZXkganVzdCBleHBsaWNpdGx5IHJlc3RyaWN0aW5nIHRoZSByYW5nZSwgZXZlbiB0aG91Z2ggdGhlIHVuc2lnbmVkIG5hdHVyZSBhbHJlYWR5IGRpZCB0aGF0PyBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29kZSBmb3IgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgLiBJdCBzZWVtcyB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYHRjZl9nYXRlX2luaXRgIGZ1bmN0aW9uLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHRoZSBuZXcgcG9saWN5IGFuZCB0aGUgb2xkIG9uZSB0byBmaW5kIG91dCB0aGUgaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTUuMTIxODY4MjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MTY0Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDQV9HQVRFX0NZQ0xFX1RJTUVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2FjdF9nYXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE3OS1cXHRbVENBX0dBVEVfQkFTRV9USU1FXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODA6XFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVdXFx0XFx0PVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4MS1cXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0VfU0lHTkVEKE5MQV9TNjQsIFxcdTAwMjZnYXRlX2N5Y2xlX3RpbWVfcmFuZ2UpLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjE4MjpcXHRbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE4My1cXHRbVENBX0dBVEVfRkxBR1NdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzUzPXN0YXRpYyBpbnQgdGNmX2dhdGVfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ2My1cXHRcXHRcXHRlcnIgPSB0Y2ZfZ2F0ZV9jb3B5X2VudHJpZXMocCwgY3VyX3AsIGV4dGFjayk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDY0OlxcdFxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2ICF0YltUQ0FfR0FURV9DWUNMRV9USU1FXSlcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjUtXFx0XFx0XFx0XFx0Y3ljbGV0aW1lID0gY3VyX3AtXFx1MDAzZXRjZmdfY3ljbGV0aW1lO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgwLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MTpcXHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDgyOlxcdFxcdGN5Y2xldGltZSA9IG5sYV9nZXRfdTY0KHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODMtXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg0OlxcdGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NDg1OlxcdFxcdGN5Y2xldGltZV9leHQgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FX0VYVF0pO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4Ni1cXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTYxMj1zdGF0aWMgaW50IHRjZl9nYXRlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYzNy1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2Mzg6XFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0dBVEVfQ1lDTEVfVElNRSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzktXFx0XFx0XFx0ICAgICAgcC1cXHUwMDNldGNmZ19jeWNsZXRpbWUsIFRDQV9HQVRFX1BBRCkpXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDEtXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjQyOlxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUVfRVhULFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY0My1cXHRcXHRcXHQgICAgICBwLVxcdTAwM2V0Y2ZnX2N5Y2xldGltZV9leHQsIFRDQV9HQVRFX1BBRCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUyOjU1LjE5OTAzNzQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4OTI0MTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzdWJqZWN0IG1hdHRlciBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBUeXBlIG9mIGBjeWNsZXRpbWVgKipcblxuSG1tLCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBkYXRhIHR5cGUgZm9yIGBjeWNsZXRpbWVgLiBJcyBpdCBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciAoYHU2NGApIG9yIGEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgczY0YCk/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWVzIGFuZCBlbnN1cmluZyB0aGUgY29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiB0aGUgdGltZXIgdmFsdWVzIGluIG15IGN1cnJlbnQgd29yay4gSSBuZWVkIHRoYXQgZGF0YSB0eXBlIGluIG15IGhlYWQsIG5vdyFcblxuTGV0J3MgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBkZXRhaWwuIEEgcXVpY2sgc2NhbiBvZiBgdGNmX2dhdGVfaW5pdGAgYW5kIHRoZSBgc3RydWN0IHRjX2dhdGVgIGRlZmluaXRpb24gc2hvdWxkIHByb3ZpZGUgdGhlIGFuc3dlciwgYW5kIGNlbWVudCB0aGUgZXhhY3QgZGF0YSB0eXBlIGluIG15IGtub3dsZWRnZS1iYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTkuNTg4MjgxNzY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTkwNTg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHRjX2dhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTI6NTkuNjk0MTk2OTA1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNDE5NTI3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipMb2NhdGluZyB0aGUgRGVmaW5pdGlvbiBvZiBgc3RydWN0IHRjX2dhdGVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHRjX2dhdGVgLiBJdCdzIGEga2V5IHN0cnVjdHVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsYXlvdXQgYW5kIG1lbWJlcnMgZm9yIHdoYXRldmVyIEknbSB3b3JraW5nIG9uIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgZGVlcCBpbiB0cmFmZmljIGNvbnRyb2wgb3IgUW9TLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgb3IgbWF5YmUgdGhlIGhlYWRlcnMgaWYgSSdtIGx1Y2t5LiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gSSdtIHRhcmdldGluZywgb3IgaXQncyBnb2luZyB0byBiZSBhIHdpbGQgZ29vc2UgY2hhc2UuIExldCBtZSBzZWUuLi4gSSdsbCBjaGVjayB0aGUgc3RhbmRhcmQgaW5jbHVkZSBwYXRocywgYW5kIHRoZW4gcGVyaGFwcyBwZXJmb3JtIGEgY3Njb3BlIG9yIGN0YWdzIHNlYXJjaC4gSSBob3BlIEkgY2FuIGxvY2F0ZSB0aGUgZGVmaW5pdGlvbiBxdWlja2x5IHdpdGhvdXQgcmVseWluZyBvbiBleHRlcm5hbCBwYWNrYWdlcy4gSSdtIGV4cGVjdGluZyBzb21lIG5lc3RpbmcsIHBlcmhhcHMgaXQgaXMgdXNlZCBpbiBgdGNgIG9yIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBPbmNlIEkgaGF2ZSB0aGUgc291cmNlIGNvZGUgcGF0aCwgSSBjYW4gZGlnIGluIGFuZCBhbmFseXplIGl0IHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTM6MDMuODA4Mzk0MDQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTk5MTg0NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHRjX2dhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oLTgtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmg6OTpzdHJ1Y3QgdGNfZ2F0ZSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgtMTAtXFx0dGNfZ2VuO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYXRlX3BvbGljeVtUQ0FfR0FURV9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzUtXFx0W1RDQV9HQVRFX1BBUk1TXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxNzY6XFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19nYXRlKSksXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTc3LVxcdFtUQ0FfR0FURV9QUklPUklUWV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzcyLVxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzM6XFx0c3RydWN0IHRjX2dhdGUgKnBhcm07XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzc0LVxcdHU2NCBvbGRfYmFzZXRpbWUgPSAwO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE2LVxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjE3OlxcdHN0cnVjdCB0Y19nYXRlIG9wdCA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MTgtXFx0XFx0LmluZGV4ICAgID0gZ2FjdC1cXHUwMDNldGNmX2luZGV4LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9Njg5PXN0YXRpYyBzaXplX3QgdGNmX2dhdGVfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjkwLXtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2OTE6XFx0cmV0dXJuIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgdGNfZ2F0ZSkpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY5Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUzOjA2LjEyODMxNzA3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjI5MzI1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIENvcnJlY3QgRGF0YSBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB3aGljaCBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGB0Y2ZnX2N5Y2xldGltZWAgZmllbGQuIExldCdzIHNlZS4uLiBJJ3ZlIGJlZW4gYm91bmNpbmcgYXJvdW5kIGEgZmV3IGRpZmZlcmVudCBUQ0Ygc3RydWN0dXJlcywgYW5kIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBBaGEhIFRoZSBwZW5ueSBqdXN0IGRyb3BwZWQgLSBJdCdzIGBzdHJ1Y3QgdGNmX2dhdGVgLiBUaGF0J3MgdGhlIG9uZS4gSSB3YXMgZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGEgZmV3IG90aGVycyBpbml0aWFsbHksIGJ1dCBJJ20gY2VydGFpbiBub3cuIGBzdHJ1Y3QgdGNmX2dhdGVgIGlzIHRoZSBzdHJ1Y3R1cmUgSSdtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA4LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTM6MDkuMDkxMjUxNzM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI3NzI0ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCB0Y2ZfZ2F0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xNz1zdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5IHtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMjUtXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoyNjpzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zIHtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTI3LVxcdHMzMlxcdFxcdFxcdHRjZmdfcHJpb3JpdHk7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQwLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NDE6c3RydWN0IHRjZl9nYXRlIHtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQyLVxcdHN0cnVjdCB0Y19hY3Rpb25cXHRjb21tb247XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo0MzpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zIF9fcmN1ICpwYXJhbTtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTQ0LVxcdHU4XFx0XFx0XFx0Y3VycmVudF9nYXRlX3N0YXR1cztcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTItXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1MzojZGVmaW5lIHRvX2dhdGUoYSkgKChzdHJ1Y3QgdGNmX2dhdGUgKilhKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNTQtXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo1NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnRjZl9nYXRlX3BhcmFtc19sb2NrZWQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTU2LXtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjU3OlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC01OC1cXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9NjM9c3RhdGljIGlubGluZSBzMzIgdGNmX2dhdGVfcHJpbyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNjQte1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6NjU6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTY2LVxcdHMzMiB0Y2ZnX3ByaW87XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTc0PXN0YXRpYyBpbmxpbmUgdTY0IHRjZl9nYXRlX2Jhc2V0aW1lKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC03NS17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo3NjpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtNzctXFx0dTY0IHRjZmdfYmFzZXRpbWU7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTg1PXN0YXRpYyBpbmxpbmUgdTY0IHRjZl9nYXRlX2N5Y2xldGltZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtODYte1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg6ODc6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTg4LVxcdHU2NCB0Y2ZnX2N5Y2xldGltZTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmg9OTY9c3RhdGljIGlubGluZSB1NjQgdGNmX2dhdGVfY3ljbGV0aW1lZXh0KGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC05Ny17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDo5ODpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtOTktXFx0dTY0IHRjZmdfY3ljbGV0aW1lZXh0O1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaD0xMDc9c3RhdGljIGlubGluZSB1MzIgdGNmX2dhdGVfbnVtX2VudHJpZXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTEwOC17XFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaDoxMDk6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oLTExMC1cXHR1MzIgbnVtX2VudHJpZXM7XFxuLS1cXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oPTExOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBhY3Rpb25fZ2F0ZV9lbnRyeVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2dhdGUuaC0xMjEtXFx0c3RydWN0IGFjdGlvbl9nYXRlX2VudHJ5ICpvZTtcXG5pbmNsdWRlL25ldC90Y19hY3QvdGNfZ2F0ZS5oOjEyMjpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwO1xcbmluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgtMTIzLVxcdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MTk9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9nYXRlX29wcztcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoyMTpzdGF0aWMga3RpbWVfdCBnYXRlX2dldF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdClcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yMi17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNT1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNi1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzpzdGF0aWMgdm9pZCBnYXRlX2dldF9zdGFydF90aW1lKHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozODpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwYXJhbSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zOS1cXHRcXHRcXHRcXHRrdGltZV90ICpzdGFydClcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3LVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjU4OnN0YXRpYyB2b2lkIGdhdGVfc3RhcnRfdGltZXIoc3RydWN0IHRjZl9nYXRlICpnYWN0LCBrdGltZV90IHN0YXJ0KVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU5LXtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTcxPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBnYXRlX3RpbWVyX2Z1bmMoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTcyLXtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3MzpcXHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB0Y2ZfZ2F0ZSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NC1cXHRcXHRcXHRcXHRcXHQgICAgIGhpdGltZXIpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTc1LVxcdHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnkgKm5leHQ7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NzY6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03Ny1cXHRrdGltZV90IGNsb3NlX3RpbWUsIG5vdztcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTEyMj1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2dhdGVfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xMjUte1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjEyNjpcXHRzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QgPSB0b19nYXRlKGEpO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTEyNy1cXHRpbnQgYWN0aW9uID0gUkVBRF9PTkNFKGdhY3QtXFx1MDAzZXRjZl9hY3Rpb24pO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MjI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfZW50cnlfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyaWVzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjM4LVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjIzOTpzdGF0aWMgaW50IHRjZl9nYXRlX2NvcHlfZW50cmllcyhzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpkc3QsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MjQwOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpzcmMsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMjQxLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0yNjg9c3RhdGljIGludCBwYXJzZV9nYXRlX2xpc3Qoc3RydWN0IG5sYXR0ciAqbGlzdF9hdHRyLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjI2OTpcXHRcXHRcXHQgICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpzY2hlZCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0yNzAtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9MzIzPXN0YXRpYyBpbnQgZ2F0ZV9jbG9ja19yZXNvbHZlKHMzMiBjbG9ja2lkLCBlbnVtIHRrX29mZnNldHMgKnRrbyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0NC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNDU6c3RhdGljIHZvaWQgZ2F0ZV9zZXR1cF90aW1lcihzdHJ1Y3QgdGNmX2dhdGUgKmdhY3QsIHMzMiBjbG9ja2lkLFxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM0Ni1cXHRcXHRcXHQgICAgIGVudW0gdGtfb2Zmc2V0cyB0a28pXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0zNTM9c3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMzU5LVxcdHU2NCBjeWNsZXRpbWUgPSAwLCBiYXNldGltZSA9IDAsIGN5Y2xldGltZV9leHQgPSAwO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjM2MDpcXHRzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwID0gTlVMTCwgKm9sZF9wID0gTlVMTDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0zNjEtXFx0ZW51bSB0a19vZmZzZXRzIG9sZF90a19vZmZzZXQgPSBUS19PRkZTX1RBSTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNjI6XFx0Y29uc3Qgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqY3VyX3AgPSBOVUxMO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM2My1cXHRib29sIGJpbmQgPSBmbGFncyBcXHUwMDI2IFRDQV9BQ1RfRkxBR1NfQklORDtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3MS1cXHRzMzIgY2xvY2tpZCA9IENMT0NLX1RBSTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzozNzI6XFx0c3RydWN0IHRjZl9nYXRlICpnYWN0O1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTM3My1cXHRzdHJ1Y3QgdGNfZ2F0ZSAqcGFybTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTU2Mj1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU2My17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTY0OlxcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnAgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHRjZl9nYXRlX3BhcmFtcywgcmN1KTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy01NjUtXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz01NzA9c3RhdGljIHZvaWQgdGNmX2dhdGVfY2xlYW51cChzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTU3MS17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTcyOlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NTczOlxcdHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnA7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNTc0LVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NjEyPXN0YXRpYyBpbnQgdGNmX2dhdGVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE1LVxcdHVuc2lnbmVkIGNoYXIgKmIgPSBza2JfdGFpbF9wb2ludGVyKHNrYik7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjE2OlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjE3LVxcdHN0cnVjdCB0Y19nYXRlIG9wdCA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTYyMi1cXHRzdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5ICplbnRyeTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo2MjM6XFx0c3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcDtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MjQtXFx0c3RydWN0IG5sYXR0ciAqZW50cnlfbGlzdDtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTY3OT1zdGF0aWMgdm9pZCB0Y2ZfZ2F0ZV9zdGF0c191cGRhdGUoc3RydWN0IHRjX2FjdGlvbiAqYSwgdTY0IGJ5dGVzLCB1NjQgcGFja2V0cyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTY4MS17XFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjgyOlxcdHN0cnVjdCB0Y2ZfZ2F0ZSAqZ2FjdCA9IHRvX2dhdGUoYSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjgzLVxcdHN0cnVjdCB0Y2ZfdCAqdG0gPSBcXHUwMDI2Z2FjdC1cXHUwMDNldGNmX3RtO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM9NzQzPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2F0ZV9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy03NTMtXFx0Lm9mZmxvYWRfYWN0X3NldHVwID1cXHR0Y2ZfZ2F0ZV9vZmZsb2FkX2FjdF9zZXR1cCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo3NTQ6XFx0LnNpemVcXHRcXHQ9XFx0c2l6ZW9mKHN0cnVjdCB0Y2ZfZ2F0ZSksXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNzU1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjUzOjExLjQxODk4Mjk2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDY5NzQ1NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldGxpbmsgUG9saWN5IENoYW5nZSoqXG5cbk9rYXksIHNvIGB0Y2ZnX2N5Y2xldGltZWAgaXMgYSBgdTY0YC4gSSBzZWUgdGhhdCB0aGlzIGNvbW1pdCByZXN0cmljdHMgYFRDQV9HQVRFX0NZQ0xFX1RJTUVgIHdpdGhpbiB0aGUgbmV0bGluayBwb2xpY3kgdG8gdGhlIHJhbmdlIG9mIGBbMCwgUzY0X01BWF1gLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgY2xlYXI6IHByZXZlbnQgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCwgYXMgYW4gdW5zaWduZWQgaW50ZWdlciwgd291bGQgYWN0dWFsbHkgYmUgbGFyZ2UgdmFsdWVzLCBhbmQgdG8gY2F0Y2ggdmFsdWVzIHRoYXQgYXJlIHNpbXBseSB0b28gbGFyZ2UuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRoZXkncmUgdXNpbmcgYE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKWAuIFJpZ2h0LiBUaGF0IG1lYW5zIHRoZSBhdHRyaWJ1dGUgZ2V0cyB0cmVhdGVkIGFzIGEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIChgTkxBX1M2NGApIGR1cmluZyB2YWxpZGF0aW9uLCBhbmQgdGhlIHJhbmdlIGlzIGVmZmVjdGl2ZWx5IGAwYCB0byBgUzY0X01BWGAuIFRoYXQncyB0aGUga2V5IGRpZmZlcmVuY2UhIEl0IGxvb2tzIGxpa2UgcHJldmlvdXNseSB0aGUgYXR0cmlidXRlIG1heSBoYXZlIGJlZW4gdHJlYXRlZCBhcyBgTkxBX1U2NGAsIHBvdGVudGlhbGx5IGFjY2VwdGluZyB2YWx1ZXMgdXAgdG8gYFU2NF9NQVhgLlxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEl0ICppcyogYSBuZXRsaW5rIHBvbGljeSBjaGFuZ2UsIGFuZCB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBidWdzIGx1cmsuIEJ1dCBpdCdzIGp1c3QgcmVzdHJpY3RpbmcgdGhlIGFjY2VwdGVkIHJhbmdlLiBJZiBhIHVzZXIgdHJpZXMgdG8gcGFzcyBhIHZhbHVlIGV4Y2VlZGluZyBgUzY0X01BWGAsIGl0J2xsIG5vdyBiZSByZWplY3RlZCB3aXRoIGBFSU5WQUxgIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgZ2V0dGluZyBhY2NlcHRlZC4gVGhpcyBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgc3l6a2FsbGVyIGJ1ZyBmaXgsIHdoZXJlIGEgbGFyZ2UgdmFsdWUgY291bGQgY2F1c2Ugb3ZlcmZsb3dzIG9yIG90aGVyIGlzc3VlcyBkb3duIHRoZSBsaW5lLlxuXG5Eb2VzIHRoaXMgaW50cm9kdWNlIGFueSBuZXcgY29kZSBwYXRocyBvciBsb2dpYyB0aGF0IG5lZWQgZnV6emluZz8gTm8sIG5vdCByZWFsbHkuIFRoaXMgaXMgYSBwb2xpY3kgZGVmaW5pdGlvbiBjaGFuZ2UuIFRoZSBuZXRsaW5rIHBvbGljeSB2YWxpZGF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBjb3JlIG5ldGxpbmsgY29kZS4gVGhlIG9ubHkgY2hhbmdlcyBhcmUgd2l0aGluIGBnYXRlX3BvbGljeWAgYW5kIGBnYXRlX2N5Y2xlX3RpbWVfcmFuZ2VgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGRpZmYganVzdCB0byBiZSBleHRyYSBzdXJlLiBMZXQgbWUgZ28gb3ZlciB0aGUgZGV0YWlscyBvZiB0aGUgZGlmZiBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAzNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1MzoxOC44ODg3MzE0MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjc5MzgyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUQ0FfR0FURV9DWUNMRV9USU1FXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2F0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZ2F0ZV9wb2xpY3lbVENBX0dBVEVfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzktXFx0W1RDQV9HQVRFX0JBU0VfVElNRV1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6MTgwOlxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODEtXFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODI6XFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODMtXFx0W1RDQV9HQVRFX0ZMQUdTXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jPTM1Mz1zdGF0aWMgaW50IHRjZl9nYXRlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00NjMtXFx0XFx0XFx0ZXJyID0gdGNmX2dhdGVfY29weV9lbnRyaWVzKHAsIGN1cl9wLCBleHRhY2spO1xcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ2NDpcXHRcXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiAhdGJbVENBX0dBVEVfQ1lDTEVfVElNRV0pXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDY1LVxcdFxcdFxcdFxcdGN5Y2xldGltZSA9IGN1cl9wLVxcdTAwM2V0Y2ZnX2N5Y2xldGltZTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTQ4MC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzo0ODE6XFx0aWYgKHRiW1RDQV9HQVRFX0NZQ0xFX1RJTUVdKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4MjpcXHRcXHRjeWNsZXRpbWUgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1FXSk7XFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNDgzLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NDpcXHRpZiAodGJbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdKVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjQ4NTpcXHRcXHRjeWNsZXRpbWVfZXh0ID0gbmxhX2dldF91NjQodGJbVENBX0dBVEVfQ1lDTEVfVElNRV9FWFRdKTtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy00ODYtXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz02MTI9c3RhdGljIGludCB0Y2ZfZ2F0ZV9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02MzctXFxubmV0L3NjaGVkL2FjdF9nYXRlLmM6NjM4OlxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9HQVRFX0NZQ0xFX1RJTUUsXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjM5LVxcdFxcdFxcdCAgICAgIHAtXFx1MDAzZXRjZmdfY3ljbGV0aW1lLCBUQ0FfR0FURV9QQUQpKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtNjQxLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jOjY0MjpcXHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfR0FURV9DWUNMRV9USU1FX0VYVCxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy02NDMtXFx0XFx0XFx0ICAgICAgcC1cXHUwMDNldGNmZ19jeWNsZXRpbWVfZXh0LCBUQ0FfR0FURV9QQUQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1MzoxOC45OTU1MjkxODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2MTAwNDc5MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBBbGwgaXQncyBkb2luZyBpcyB0d2Vha2luZyB0aGUgYGdhdGVfcG9saWN5YCBhbmQgYWRkaW5nIGEgYGdhdGVfY3ljbGVfdGltZV9yYW5nZWAuIEFuZCB0aGVyZSdzIHRoYXQgYmxhbmsgbGluZSBhZGRlZCBpbiBgdGNmX2dhdGVfaW5pdGAsIGJ1dCB0aGF0J3MganVzdCBjb3NtZXRpYywgaXNuJ3QgaXQ/IEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjbGFyYXRpdmUgY2hhbmdlLiBJdCdzIGp1c3QgdGlnaHRlbmluZyB1cCB0aGUgbmV0bGluayBwb2xpY3ksIHJlc3RyaWN0aW5nIHRoZSBhbGxvd2FibGUgcmFuZ2Ugb2YgYW4gYXR0cmlidXRlLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgZnV6emluZy4gV2UncmUganVzdCBwcmV2ZW50aW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBwYXJzaW5nIGEgZ2FyYmFnZSB2YWx1ZSwgcmVhbGx5IGEgc2FuaXR5IGNoZWNrLiBTbywgbXkgZ3V0IGZlZWxpbmcgaXMsIHdlIGNhbiBza2lwIGZ1enppbmcgdGhpcyBvbmUuIE5vIG5lZWQgdG8gd2FzdGUgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0J3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2suXG5cbkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBkaWZmIGFnYWluLi4uIEdvdHRhIGJlIHRob3JvdWdoLiBBbHdheXMgdGhlIGRldmlscyBpbiB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzo1NzozNS4wOTYwMTA4NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTI5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdhdGVfY3ljbGVfdGltZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2dhdGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2dhdGUuYz0xNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfR0FURV9FTlRSWV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2F0ZS5jLTE2OC1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb25fc2lnbmVkIGdhdGVfY3ljbGVfdGltZV9yYW5nZSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xNzAtXFx0Lm1pbiA9IDAsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYz0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhdGVfcG9saWN5W1RDQV9HQVRFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYXRlLmMtMTgwLVxcdFtUQ0FfR0FURV9DWUNMRV9USU1FXVxcdFxcdD1cXG5uZXQvc2NoZWQvYWN0X2dhdGUuYzoxODE6XFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRChOTEFfUzY0LCBcXHUwMDI2Z2F0ZV9jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvYWN0X2dhdGUuYy0xODItXFx0W1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6NTc6MzUuMTQyOTQ0ODc3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODEyOTE5MzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgYGFjdF9nYXRlLmNgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGlzIGRpZmYgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UncmUgbWFraW5nIGEgbmV0bGluayBwb2xpY3kgdXBkYXRlIHdpdGhpbiB0aGUgYGFjdF9nYXRlLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCBhdHRyaWJ1dGUuXG5cbkluaXRpYWxseSwgaXQgc2VlbXMgdGhlIGBUQ0FfR0FURV9DWUNMRV9USU1FYCB3YXMgZGVmaW5lZCB3aXRoIGEgZ2VuZXJpYyBgTkxBX1U2NGAgdHlwZS4gVGhlIHBhdGNoIG5vdyBpbnRyb2R1Y2VzIGEgcmFuZ2UgdmFsaWRhdGlvbiB0byBpdCB1c2luZyBgTkxBX1BPTElDWV9GVUxMX1JBTkdFX1NJR05FRGAgYW5kIGEgYGdhdGVfY3ljbGVfdGltZV9yYW5nZWAgc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBzZXRzIGEgbWluaW11bSB2YWx1ZSBvZiAwIGFuZCBhIG1heGltdW0gdmFsdWUgb2YgYFM2NF9NQVhgIGZvciB0aGUgY3ljbGUgdGltZSwgZW5zdXJpbmcgdGhhdCB0aGUgYGN5Y2xlX3RpbWVgIHZhbHVlIGlzIHByb3Blcmx5IGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBnb29kIHByYWN0aWNlIHRvIGF2b2lkIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gcHJldmVudC5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIHRvIGFkZCBhIGJsYW5rIGxpbmUuXG5cblRoaXMgaXMgYSBwb2xpY3kgY2hhbmdlIHRoYXQgYWRkcyB2YWxpZGF0aW9uLiBUaGVyZSdzIG5vIG5ldywgZXhlY3V0YWJsZSBsb2dpYyB0byBzY3J1dGluaXplLiBGcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGdlbmVyYXRpbmcgbmV3IHRlc3QgY2FzZXMgb3IgZmluZGluZyBuZXcgYnVncy4gSSdsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIzNiwiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDowMzowMy4yNzIxNDI1NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgbmV0bGluayBwb2xpY3kgZGVmaW5pdGlvbiB0byByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgdGhlIFRDQV9HQVRFX0NZQ0xFX1RJTUUgYXR0cmlidXRlIGFuZCBhZGRzIGEgYmxhbmsgbGluZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyBvciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgbmV0bGluayBwb2xpY3kgZGVmaW5pdGlvbiB0byByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgdGhlIFRDQV9HQVRFX0NZQ0xFX1RJTUUgYXR0cmlidXRlIGFuZCBhZGRzIGEgYmxhbmsgbGluZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyBvciBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDowMzowMy4yNzIxODI0ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow44wxl[1] Phase: Running StartedAt: 2026-08-25 14:03:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow44wxl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-25 14:03:14 +0000 UTC FinishedAt: 2026-08-25 14:03:19 +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,}