Name: series-workflowndkgm Phase: Failed StartedAt: 2026-06-20 13:16:00 +0000 UTC FinishedAt: 2026-06-20 13:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowndkgm[0] Phase: Succeeded StartedAt: 2026-06-20 13:16:00 +0000 UTC FinishedAt: 2026-06-20 13:29:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowndkgm[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 13:16:00 +0000 UTC FinishedAt: 2026-06-20 13:29:48 +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+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMTM6Mjk6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li43ZDc1OTUxNThiZjkyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0zOTE3LDEzICYjNDM7MzkxNywzMCBAQCBzdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9saW5rX3VwKHZvaWQgKnVwc3RyZWFtKVxuIFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdTMyIHBoeWxpbmtfZ2V0X3BoeV9pZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBoeS1cdTAwM2Vpc19jNDUpIHtcbiYjNDM7XHRcdGNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktXHUwMDNlYzQ1X2lkcy5kZXZpY2VfaWRzKTtcbiYjNDM7XHRcdGludCBpO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG51bV9pZHM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdGlmIChwaHktXHUwMDNlYzQ1X2lkcy5tbWRzX3ByZXNlbnQgXHUwMDI2IEJJVChpKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gKHBoeS1cdTAwM2VjNDVfaWRzLmRldmljZV9pZHNbaV0pO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXR1cm4gcGh5LVx1MDAzZXBoeV9pZDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSB1cHN0cmVhbTtcbiBcbiBcdGlmICghcGh5LVx1MDAzZWRydikge1xuLVx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7UEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwmIzM0Oyxcbi1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG4mIzQzO1x0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7UEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgcGh5bGlua19nZXRfcGh5X2lkKHBoeSkpO1xuIFx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7RHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGFuIGVycm9yIGxvZ2dpbmcgbWVzc2FnZSAocGh5bGlua19lcnIpIGJ5IGFkZGluZyBhIGhlbHBlciBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBQSFkgSUQuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMTM6Mjk6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCAwODdhYzYzZjkxOTNkNy4uN2Q3NTk1MTU4YmY5MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMzkxNywxMyAmIzQzOzM5MTcsMzAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSkKIAlwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgcGh5bGlua19nZXRfcGh5X2lkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiYjNDM7ewomIzQzOwlpZiAocGh5LSZndDtpc19jNDUpIHsKJiM0MzsJCWNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktJmd0O2M0NV9pZHMuZGV2aWNlX2lkcyk7CiYjNDM7CQlpbnQgaTsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDE7IGkgJmx0OyBudW1faWRzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWlmIChwaHktJmd0O2M0NV9pZHMubW1kc19wcmVzZW50ICZhbXA7IEJJVChpKSkKJiM0MzsJCQkJcmV0dXJuIChwaHktJmd0O2M0NV9pZHMuZGV2aWNlX2lkc1tpXSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldHVybiBwaHktJmd0O3BoeV9pZDsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiB7CiAJc3RydWN0IHBoeWxpbmsgKnBsID0gdXBzdHJlYW07CiAKIAlpZiAoIXBoeS0mZ3Q7ZHJ2KSB7Ci0JCXBoeWxpbmtfZXJyKHBsLCAmIzM0O1BIWSAlcyAoaWQgMHglLjhseCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcbiYjMzQ7LAotCQkJICAgIHBoeWRldl9uYW1lKHBoeSksICh1bnNpZ25lZCBsb25nKXBoeS0mZ3Q7cGh5X2lkKTsKJiM0MzsJCXBoeWxpbmtfZXJyKHBsLCAmIzM0O1BIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxuJiMzNDssCiYjNDM7CQkJICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTsKIAkJcGh5bGlua19lcnIocGwsICYjMzQ7RHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBBIExvZ2dpbmctT25seSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgYSBoZWxwZXIgZnVuY3Rpb24sIGBwaHlsaW5rX2dldF9waHlfaWRgLCBhbmQgdXNpbmcgaXQgd2l0aGluIGBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeWAgdG8gcmVmaW5lIGFuIGVycm9yIG1lc3NhZ2UuIEJ1dCBob2xkIG9uLCB0aGUgY3JpdGljYWwgZGV0YWlsIGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGltcGFjdHMgdGhlIGVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gYHBoeS0mZ3Q7ZHJ2YCBpcyBudWxsLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRpZmY6IHRoZSBjb3JlIGNoYW5nZSBib2lscyBkb3duIHRvIHJlcGxhY2luZyB0aGUgb3JpZ2luYWwgYHBoeS0mZ3Q7cGh5X2lkYCBpbiB0aGUgYHBoeWxpbmtfZXJyYCBjYWxsIHdpdGggdGhlIG5ldyBmdW5jdGlvbiBjYWxsLgoKYGBgYwogCWlmICghcGh5LSZndDtkcnYpIHsKLQkJcGh5bGlua19lcnIocGwsICYjMzQ7UEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxuJiMzNDssCi0JCQkgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LSZndDtwaHlfaWQpOwomIzQzOwkJcGh5bGlua19lcnIocGwsICYjMzQ7UEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXG4mIzM0OywKJiM0MzsJCQkgICAgcGh5ZGV2X25hbWUocGh5KSwgcGh5bGlua19nZXRfcGh5X2lkKHBoeSkpOwogCQlwaHlsaW5rX2VycihwbCwgJiMzNDtEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxuJiMzNDspOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CmBgYAoKVGhlIG9ubHkgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBuZXcgZnVuY3Rpb24gd2l0aGluIHRoZSBgcGh5bGlua19lcnJgIG1hY3JvLiBBbmQsIGBwaHlsaW5rX2VycmAgaXMgZnVuZGFtZW50YWxseSBhIGxvZ2dpbmcgbWVjaGFuaXNtLiBTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlIG9mIHRodW1iLCBhIHBhdGNoIHRoYXQmIzM5O3Mgc29sZWx5IGFib3V0IGxvZ2dpbmcg4oCTIHN1Y2ggYXMgY2hhbmdlcyB0byBgcHJfZXJyYCwgYHByaW50a2AsIG9yIHRyYWNlcG9pbnRzIOKAkyB3b3VsZG4mIzM5O3QgYmUgZmxhZ2dlZCBmb3IgZnV6emluZy4KCk15IGFuYWx5c2lzIGFsaWducyB3aXRoIHRoaXMgY3JpdGVyaW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgSXQmIzM5O3MgYSBzdHJhaWdodC1mb3J3YXJkIGNhc2Ugb2YgaW1wcm92ZWQgbG9nZ2luZy4KCkkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2gganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBgcGh5bGlua19nZXRfcGh5X2lkYCBpc24mIzM5O3QgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEJ1dCBiYXNlZCBvbiB0aGUgZGlmZiwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1vZHVsZXMsIEkgYW0gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19nZXRfcGh5X2lkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzkxMT1zdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9saW5rX3VwKHZvaWQgKnVwc3RyZWFtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxOS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkyMDpzdGF0aWMgdTMyIHBoeWxpbmtfZ2V0X3BoeV9pZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTIxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5Mzc9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5NDItXHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtQSFkgJXMgKGlkIDB4JS44eCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5NDM6XHRcdFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk0NC1cdFx0cGh5bGlua19lcnIocGwsIFwmIzM0O0RyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI1CgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEVycm9yIE1lc3NhZ2UgQ29udGV4dCoqCgpSaWdodCwgc28gdGhpcyB2YXJpYWJsZSwgYFdvcnRoRnV6emluZ2AsIGl0JiMzOTtzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIGFuIGVycm9yIG1lc3NhZ2UuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvciwgaXNuJiMzOTt0IGl0PyBJZiBpdCB3YXMgY3JpdGljYWwgZm9yIHJ1bnRpbWUgYmVoYXZpb3Igb3IgaW5mbHVlbmNpbmcgZnV6emluZyBzdHJhdGVneSBtb3JlIGJyb2FkbHksIHdlJiMzOTtkIHNlZSBpdCByZWZlcmVuY2VkIGluIG11bHRpcGxlIHBsYWNlcy4gVGhlIGZhY3QgaXQmIzM5O3Mgc29sZWx5IGluIHRoZSBlcnJvciBtZXNzYWdlIHN1Z2dlc3RzIGl04oCZcyBwcm9iYWJseSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgY29uZGl0aW9uIHRoYXQgKnRyaWdnZXJzKiB0aGUgZXJyb3IsIHJhdGhlciB0aGFuIGJlaW5nIGEgZ2xvYmFsIGNvbnRyb2wuIEluIGVzc2VuY2UsIGl0JiMzOTtzIGFib3V0IHRoZSBjaXJjdW1zdGFuY2VzIHN1cnJvdW5kaW5nIHRoZSBlcnJvciYjMzk7cyBvY2N1cnJlbmNlLiBDb25zaWRlcmluZyB0aGF0LCBJJiMzOTttIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIHNldHRpbmcgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgd2hhdGV2ZXIgY29uZGl0aW9uIGxlYWRzIHRvIHRoaXMgZXJyb3IgbWVhbnMgdGhlIGlucHV0IGlzIGluaGVyZW50bHkgdW5zdWl0YWJsZSBmb3IgZnV6emluZywgYW5kIGF0dGVtcHRpbmcgdG8gZG8gc28gd291bGQgYmUgYSB3YXN0ZSBvZiByZXNvdXJjZXMsIG9yIHBvdGVudGlhbGx5IGxlYWQgdG8gbWlzbGVhZGluZyByZXN1bHRzLiBJdCB3aWxsIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGZ1enppbmcgb24gYW4gaW5hcHByb3ByaWF0ZSBpbnB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOToyMy42MzUzODczNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMzNjQ5OTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MjMuNjM1MzkyNDU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE2NDY2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjI5OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMDg3YWM2M2Y5MTkzZDcuLjdkNzU5NTE1OGJmOTJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuQEAgLTM5MTcsMTMgKzM5MTcsMzAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4gXFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgcGh5bGlua19nZXRfcGh5X2lkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuK3tcXG4rXFx0aWYgKHBoeS1cXHUwMDNlaXNfYzQ1KSB7XFxuK1xcdFxcdGNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktXFx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkcyk7XFxuK1xcdFxcdGludCBpO1xcbitcXG4rXFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG51bV9pZHM7IGkrKykge1xcbitcXHRcXHRcXHRpZiAocGh5LVxcdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCBcXHUwMDI2IEJJVChpKSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIChwaHktXFx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkc1tpXSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRyZXR1cm4gcGh5LVxcdTAwM2VwaHlfaWQ7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSB1cHN0cmVhbTtcXG4gXFxuIFxcdGlmICghcGh5LVxcdTAwM2VkcnYpIHtcXG4tXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJQSFkgJXMgKGlkIDB4JS44bHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVxcdTAwM2VwaHlfaWQpO1xcbitcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcIlBIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcXG4gXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjI5OjI0LjE4NzgyOTcyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3ODQwNDk3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjllNjVkOTE3YWFjOTdhNWYxMWU3YzgwMThkZjMyNjY5N2JiNjMwZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjI5OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li43ZDc1OTUxNThiZjkyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0zOTE3LDEzICszOTE3LDMwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfdXAodm9pZCAqdXBzdHJlYW0pXG4gXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTtcbiB9XG4gXG4rc3RhdGljIHUzMiBwaHlsaW5rX2dldF9waHlfaWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbit7XG4rXHRpZiAocGh5LVx1MDAzZWlzX2M0NSkge1xuK1x0XHRjb25zdCBpbnQgbnVtX2lkcyA9IEFSUkFZX1NJWkUocGh5LVx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkcyk7XG4rXHRcdGludCBpO1xuK1xuK1x0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBudW1faWRzOyBpKyspIHtcbitcdFx0XHRpZiAocGh5LVx1MDAzZWM0NV9pZHMubW1kc19wcmVzZW50IFx1MDAyNiBCSVQoaSkpXG4rXHRcdFx0XHRyZXR1cm4gKHBoeS1cdTAwM2VjNDVfaWRzLmRldmljZV9pZHNbaV0pO1xuK1x0XHR9XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fSBlbHNlIHtcbitcdFx0cmV0dXJuIHBoeS1cdTAwM2VwaHlfaWQ7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4ge1xuIFx0c3RydWN0IHBoeWxpbmsgKnBsID0gdXBzdHJlYW07XG4gXG4gXHRpZiAoIXBoeS1cdTAwM2VkcnYpIHtcbi1cdFx0cGh5bGlua19lcnIocGwsIFwiUEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwiLFxuLVx0XHRcdCAgICBwaHlkZXZfbmFtZShwaHkpLCAodW5zaWduZWQgbG9uZylwaHktXHUwMDNlcGh5X2lkKTtcbitcdFx0cGh5bGlua19lcnIocGwsIFwiUEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxuXCIsXG4rXHRcdFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcbiBcdFx0cGh5bGlua19lcnIocGwsIFwiRHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MjQuMTg3ODMxNTEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTEzNjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogQSBMb2dnaW5nLU9ubHkgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgaGVscGVyIGZ1bmN0aW9uLCBgcGh5bGlua19nZXRfcGh5X2lkYCwgYW5kIHVzaW5nIGl0IHdpdGhpbiBgcGh5bGlua19zZnBfY29ubmVjdF9waHlgIHRvIHJlZmluZSBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaG9sZCBvbiwgdGhlIGNyaXRpY2FsIGRldGFpbCBpcyB0aGF0IHRoaXMgY2hhbmdlICpvbmx5KiBpbXBhY3RzIHRoZSBlcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIGBwaHktXHUwMDNlZHJ2YCBpcyBudWxsLiBMZXQncyBkaWcgaW50byB0aGUgZGlmZjogdGhlIGNvcmUgY2hhbmdlIGJvaWxzIGRvd24gdG8gcmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBgcGh5LVx1MDAzZXBoeV9pZGAgaW4gdGhlIGBwaHlsaW5rX2VycmAgY2FsbCB3aXRoIHRoZSBuZXcgZnVuY3Rpb24gY2FsbC5cblxuYGBgY1xuIFx0aWYgKCFwaHktXHUwMDNlZHJ2KSB7XG4tXHRcdHBoeWxpbmtfZXJyKHBsLCBcIlBIWSAlcyAoaWQgMHglLjhseCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXG5cIixcbi1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG4rXHRcdHBoeWxpbmtfZXJyKHBsLCBcIlBIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwiLFxuK1x0XHRcdCAgICBwaHlkZXZfbmFtZShwaHkpLCBwaHlsaW5rX2dldF9waHlfaWQocGh5KSk7XG4gXHRcdHBoeWxpbmtfZXJyKHBsLCBcIkRyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmBgYFxuXG5UaGUgb25seSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gaGVyZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhlIG5ldyBmdW5jdGlvbiB3aXRoaW4gdGhlIGBwaHlsaW5rX2VycmAgbWFjcm8uIEFuZCwgYHBoeWxpbmtfZXJyYCBpcyBmdW5kYW1lbnRhbGx5IGEgbG9nZ2luZyBtZWNoYW5pc20uIFNvLCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGUgb2YgdGh1bWIsIGEgcGF0Y2ggdGhhdCdzIHNvbGVseSBhYm91dCBsb2dnaW5nIOKAkyBzdWNoIGFzIGNoYW5nZXMgdG8gYHByX2VycmAsIGBwcmludGtgLCBvciB0cmFjZXBvaW50cyDigJMgd291bGRuJ3QgYmUgZmxhZ2dlZCBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgYWxpZ25zIHdpdGggdGhpcyBjcml0ZXJpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cIiBJdCdzIGEgc3RyYWlnaHQtZm9yd2FyZCBjYXNlIG9mIGltcHJvdmVkIGxvZ2dpbmcuXG5cbkknbGwgZG8gYSBxdWljayBncmVwIHNlYXJjaCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IGBwaHlsaW5rX2dldF9waHlfaWRgIGlzbid0IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZSwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLiBCdXQgYmFzZWQgb24gdGhlIGRpZmYsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBtb2R1bGVzLCBJIGFtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MzAuODg2OTY5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE5Njg5MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfZ2V0X3BoeV9pZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MTE9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxOS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MjA6c3RhdGljIHUzMiBwaHlsaW5rX2dldF9waHlfaWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTM3PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5NDItXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJQSFkgJXMgKGlkIDB4JS44eCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozOTQzOlxcdFxcdFxcdCAgICBwaHlkZXZfbmFtZShwaHkpLCBwaHlsaW5rX2dldF9waHlfaWQocGh5KSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTQ0LVxcdFxcdHBoeWxpbmtfZXJyKHBsLCBcXFwiRHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOTozMy4zMDY2NjUxNjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY1MTg2OTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRXJyb3IgTWVzc2FnZSBDb250ZXh0KipcblxuUmlnaHQsIHNvIHRoaXMgdmFyaWFibGUsIGBXb3J0aEZ1enppbmdgLCBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIGFuIGVycm9yIG1lc3NhZ2UuIFRoYXQncyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yLCBpc24ndCBpdD8gSWYgaXQgd2FzIGNyaXRpY2FsIGZvciBydW50aW1lIGJlaGF2aW9yIG9yIGluZmx1ZW5jaW5nIGZ1enppbmcgc3RyYXRlZ3kgbW9yZSBicm9hZGx5LCB3ZSdkIHNlZSBpdCByZWZlcmVuY2VkIGluIG11bHRpcGxlIHBsYWNlcy4gVGhlIGZhY3QgaXQncyBzb2xlbHkgaW4gdGhlIGVycm9yIG1lc3NhZ2Ugc3VnZ2VzdHMgaXTigJlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBjb25kaXRpb24gdGhhdCAqdHJpZ2dlcnMqIHRoZSBlcnJvciwgcmF0aGVyIHRoYW4gYmVpbmcgYSBnbG9iYWwgY29udHJvbC4gSW4gZXNzZW5jZSwgaXQncyBhYm91dCB0aGUgY2lyY3Vtc3RhbmNlcyBzdXJyb3VuZGluZyB0aGUgZXJyb3IncyBvY2N1cnJlbmNlLiBDb25zaWRlcmluZyB0aGF0LCBJJ20gbGVhbmluZyBoZWF2aWx5IHRvd2FyZHMgc2V0dGluZyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJdCdzIGxpa2VseSB0aGF0IHdoYXRldmVyIGNvbmRpdGlvbiBsZWFkcyB0byB0aGlzIGVycm9yIG1lYW5zIHRoZSBpbnB1dCBpcyBpbmhlcmVudGx5IHVuc3VpdGFibGUgZm9yIGZ1enppbmcsIGFuZCBhdHRlbXB0aW5nIHRvIGRvIHNvIHdvdWxkIGJlIGEgd2FzdGUgb2YgcmVzb3VyY2VzLCBvciBwb3RlbnRpYWxseSBsZWFkIHRvIG1pc2xlYWRpbmcgcmVzdWx0cy4gSXQgd2lsbCBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBmdXp6aW5nIG9uIGFuIGluYXBwcm9wcmlhdGUgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjUsIk91dHB1dFRva2VucyI6NjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOTozNy45NzE4NTQyN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowndkgm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 13:16:00 +0000 UTC FinishedAt: 2026-06-20 13:29:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMTM6Mjk6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li43ZDc1OTUxNThiZjkyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0zOTE3LDEzICYjNDM7MzkxNywzMCBAQCBzdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9saW5rX3VwKHZvaWQgKnVwc3RyZWFtKVxuIFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdTMyIHBoeWxpbmtfZ2V0X3BoeV9pZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBoeS1cdTAwM2Vpc19jNDUpIHtcbiYjNDM7XHRcdGNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktXHUwMDNlYzQ1X2lkcy5kZXZpY2VfaWRzKTtcbiYjNDM7XHRcdGludCBpO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG51bV9pZHM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdGlmIChwaHktXHUwMDNlYzQ1X2lkcy5tbWRzX3ByZXNlbnQgXHUwMDI2IEJJVChpKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gKHBoeS1cdTAwM2VjNDVfaWRzLmRldmljZV9pZHNbaV0pO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXR1cm4gcGh5LVx1MDAzZXBoeV9pZDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbiB7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSB1cHN0cmVhbTtcbiBcbiBcdGlmICghcGh5LVx1MDAzZWRydikge1xuLVx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7UEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwmIzM0Oyxcbi1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG4mIzQzO1x0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7UEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgcGh5bGlua19nZXRfcGh5X2lkKHBoeSkpO1xuIFx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7RHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGFuIGVycm9yIGxvZ2dpbmcgbWVzc2FnZSAocGh5bGlua19lcnIpIGJ5IGFkZGluZyBhIGhlbHBlciBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBQSFkgSUQuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMTM6Mjk6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCAwODdhYzYzZjkxOTNkNy4uN2Q3NTk1MTU4YmY5MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMzkxNywxMyAmIzQzOzM5MTcsMzAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSkKIAlwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgcGh5bGlua19nZXRfcGh5X2lkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiYjNDM7ewomIzQzOwlpZiAocGh5LSZndDtpc19jNDUpIHsKJiM0MzsJCWNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktJmd0O2M0NV9pZHMuZGV2aWNlX2lkcyk7CiYjNDM7CQlpbnQgaTsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDE7IGkgJmx0OyBudW1faWRzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWlmIChwaHktJmd0O2M0NV9pZHMubW1kc19wcmVzZW50ICZhbXA7IEJJVChpKSkKJiM0MzsJCQkJcmV0dXJuIChwaHktJmd0O2M0NV9pZHMuZGV2aWNlX2lkc1tpXSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldHVybiBwaHktJmd0O3BoeV9pZDsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpCiB7CiAJc3RydWN0IHBoeWxpbmsgKnBsID0gdXBzdHJlYW07CiAKIAlpZiAoIXBoeS0mZ3Q7ZHJ2KSB7Ci0JCXBoeWxpbmtfZXJyKHBsLCAmIzM0O1BIWSAlcyAoaWQgMHglLjhseCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcbiYjMzQ7LAotCQkJICAgIHBoeWRldl9uYW1lKHBoeSksICh1bnNpZ25lZCBsb25nKXBoeS0mZ3Q7cGh5X2lkKTsKJiM0MzsJCXBoeWxpbmtfZXJyKHBsLCAmIzM0O1BIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxuJiMzNDssCiYjNDM7CQkJICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTsKIAkJcGh5bGlua19lcnIocGwsICYjMzQ7RHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBBIExvZ2dpbmctT25seSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgYSBoZWxwZXIgZnVuY3Rpb24sIGBwaHlsaW5rX2dldF9waHlfaWRgLCBhbmQgdXNpbmcgaXQgd2l0aGluIGBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeWAgdG8gcmVmaW5lIGFuIGVycm9yIG1lc3NhZ2UuIEJ1dCBob2xkIG9uLCB0aGUgY3JpdGljYWwgZGV0YWlsIGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGltcGFjdHMgdGhlIGVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gYHBoeS0mZ3Q7ZHJ2YCBpcyBudWxsLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRpZmY6IHRoZSBjb3JlIGNoYW5nZSBib2lscyBkb3duIHRvIHJlcGxhY2luZyB0aGUgb3JpZ2luYWwgYHBoeS0mZ3Q7cGh5X2lkYCBpbiB0aGUgYHBoeWxpbmtfZXJyYCBjYWxsIHdpdGggdGhlIG5ldyBmdW5jdGlvbiBjYWxsLgoKYGBgYwogCWlmICghcGh5LSZndDtkcnYpIHsKLQkJcGh5bGlua19lcnIocGwsICYjMzQ7UEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxuJiMzNDssCi0JCQkgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LSZndDtwaHlfaWQpOwomIzQzOwkJcGh5bGlua19lcnIocGwsICYjMzQ7UEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXG4mIzM0OywKJiM0MzsJCQkgICAgcGh5ZGV2X25hbWUocGh5KSwgcGh5bGlua19nZXRfcGh5X2lkKHBoeSkpOwogCQlwaHlsaW5rX2VycihwbCwgJiMzNDtEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxuJiMzNDspOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CmBgYAoKVGhlIG9ubHkgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBuZXcgZnVuY3Rpb24gd2l0aGluIHRoZSBgcGh5bGlua19lcnJgIG1hY3JvLiBBbmQsIGBwaHlsaW5rX2VycmAgaXMgZnVuZGFtZW50YWxseSBhIGxvZ2dpbmcgbWVjaGFuaXNtLiBTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlIG9mIHRodW1iLCBhIHBhdGNoIHRoYXQmIzM5O3Mgc29sZWx5IGFib3V0IGxvZ2dpbmcg4oCTIHN1Y2ggYXMgY2hhbmdlcyB0byBgcHJfZXJyYCwgYHByaW50a2AsIG9yIHRyYWNlcG9pbnRzIOKAkyB3b3VsZG4mIzM5O3QgYmUgZmxhZ2dlZCBmb3IgZnV6emluZy4KCk15IGFuYWx5c2lzIGFsaWducyB3aXRoIHRoaXMgY3JpdGVyaW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgSXQmIzM5O3MgYSBzdHJhaWdodC1mb3J3YXJkIGNhc2Ugb2YgaW1wcm92ZWQgbG9nZ2luZy4KCkkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2gganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBgcGh5bGlua19nZXRfcGh5X2lkYCBpc24mIzM5O3QgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEJ1dCBiYXNlZCBvbiB0aGUgZGlmZiwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1vZHVsZXMsIEkgYW0gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19nZXRfcGh5X2lkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzkxMT1zdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9saW5rX3VwKHZvaWQgKnVwc3RyZWFtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxOS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkyMDpzdGF0aWMgdTMyIHBoeWxpbmtfZ2V0X3BoeV9pZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTIxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5Mzc9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5NDItXHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtQSFkgJXMgKGlkIDB4JS44eCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5NDM6XHRcdFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk0NC1cdFx0cGh5bGlua19lcnIocGwsIFwmIzM0O0RyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI1CgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEVycm9yIE1lc3NhZ2UgQ29udGV4dCoqCgpSaWdodCwgc28gdGhpcyB2YXJpYWJsZSwgYFdvcnRoRnV6emluZ2AsIGl0JiMzOTtzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIGFuIGVycm9yIG1lc3NhZ2UuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvciwgaXNuJiMzOTt0IGl0PyBJZiBpdCB3YXMgY3JpdGljYWwgZm9yIHJ1bnRpbWUgYmVoYXZpb3Igb3IgaW5mbHVlbmNpbmcgZnV6emluZyBzdHJhdGVneSBtb3JlIGJyb2FkbHksIHdlJiMzOTtkIHNlZSBpdCByZWZlcmVuY2VkIGluIG11bHRpcGxlIHBsYWNlcy4gVGhlIGZhY3QgaXQmIzM5O3Mgc29sZWx5IGluIHRoZSBlcnJvciBtZXNzYWdlIHN1Z2dlc3RzIGl04oCZcyBwcm9iYWJseSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgY29uZGl0aW9uIHRoYXQgKnRyaWdnZXJzKiB0aGUgZXJyb3IsIHJhdGhlciB0aGFuIGJlaW5nIGEgZ2xvYmFsIGNvbnRyb2wuIEluIGVzc2VuY2UsIGl0JiMzOTtzIGFib3V0IHRoZSBjaXJjdW1zdGFuY2VzIHN1cnJvdW5kaW5nIHRoZSBlcnJvciYjMzk7cyBvY2N1cnJlbmNlLiBDb25zaWRlcmluZyB0aGF0LCBJJiMzOTttIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIHNldHRpbmcgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgd2hhdGV2ZXIgY29uZGl0aW9uIGxlYWRzIHRvIHRoaXMgZXJyb3IgbWVhbnMgdGhlIGlucHV0IGlzIGluaGVyZW50bHkgdW5zdWl0YWJsZSBmb3IgZnV6emluZywgYW5kIGF0dGVtcHRpbmcgdG8gZG8gc28gd291bGQgYmUgYSB3YXN0ZSBvZiByZXNvdXJjZXMsIG9yIHBvdGVudGlhbGx5IGxlYWQgdG8gbWlzbGVhZGluZyByZXN1bHRzLiBJdCB3aWxsIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGZ1enppbmcgb24gYW4gaW5hcHByb3ByaWF0ZSBpbnB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOToyMy42MzUzODczNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMzNjQ5OTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MjMuNjM1MzkyNDU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE2NDY2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2OWU2NWQ5MTdhYWM5N2E1ZjExZTdjODAxOGRmMzI2Njk3YmI2MzBkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjI5OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMDg3YWM2M2Y5MTkzZDcuLjdkNzU5NTE1OGJmOTJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuQEAgLTM5MTcsMTMgKzM5MTcsMzAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4gXFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgcGh5bGlua19nZXRfcGh5X2lkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuK3tcXG4rXFx0aWYgKHBoeS1cXHUwMDNlaXNfYzQ1KSB7XFxuK1xcdFxcdGNvbnN0IGludCBudW1faWRzID0gQVJSQVlfU0laRShwaHktXFx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkcyk7XFxuK1xcdFxcdGludCBpO1xcbitcXG4rXFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG51bV9pZHM7IGkrKykge1xcbitcXHRcXHRcXHRpZiAocGh5LVxcdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCBcXHUwMDI2IEJJVChpKSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIChwaHktXFx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkc1tpXSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRyZXR1cm4gcGh5LVxcdTAwM2VwaHlfaWQ7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4ge1xcbiBcXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSB1cHN0cmVhbTtcXG4gXFxuIFxcdGlmICghcGh5LVxcdTAwM2VkcnYpIHtcXG4tXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJQSFkgJXMgKGlkIDB4JS44bHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVxcdTAwM2VwaHlfaWQpO1xcbitcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcIlBIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcXG4gXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjI5OjI0LjE4NzgyOTcyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3ODQwNDk3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYW4gZXJyb3IgbG9nZ2luZyBtZXNzYWdlIChwaHlsaW5rX2VycikgYnkgYWRkaW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIFBIWSBJRC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb25hbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjllNjVkOTE3YWFjOTdhNWYxMWU3YzgwMThkZjMyNjY5N2JiNjMwZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjI5OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li43ZDc1OTUxNThiZjkyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0zOTE3LDEzICszOTE3LDMwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfdXAodm9pZCAqdXBzdHJlYW0pXG4gXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTtcbiB9XG4gXG4rc3RhdGljIHUzMiBwaHlsaW5rX2dldF9waHlfaWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbit7XG4rXHRpZiAocGh5LVx1MDAzZWlzX2M0NSkge1xuK1x0XHRjb25zdCBpbnQgbnVtX2lkcyA9IEFSUkFZX1NJWkUocGh5LVx1MDAzZWM0NV9pZHMuZGV2aWNlX2lkcyk7XG4rXHRcdGludCBpO1xuK1xuK1x0XHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBudW1faWRzOyBpKyspIHtcbitcdFx0XHRpZiAocGh5LVx1MDAzZWM0NV9pZHMubW1kc19wcmVzZW50IFx1MDAyNiBCSVQoaSkpXG4rXHRcdFx0XHRyZXR1cm4gKHBoeS1cdTAwM2VjNDVfaWRzLmRldmljZV9pZHNbaV0pO1xuK1x0XHR9XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fSBlbHNlIHtcbitcdFx0cmV0dXJuIHBoeS1cdTAwM2VwaHlfaWQ7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4ge1xuIFx0c3RydWN0IHBoeWxpbmsgKnBsID0gdXBzdHJlYW07XG4gXG4gXHRpZiAoIXBoeS1cdTAwM2VkcnYpIHtcbi1cdFx0cGh5bGlua19lcnIocGwsIFwiUEhZICVzIChpZCAweCUuOGx4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwiLFxuLVx0XHRcdCAgICBwaHlkZXZfbmFtZShwaHkpLCAodW5zaWduZWQgbG9uZylwaHktXHUwMDNlcGh5X2lkKTtcbitcdFx0cGh5bGlua19lcnIocGwsIFwiUEhZICVzIChpZCAweCUuOHgpIGhhcyBubyBkcml2ZXIgbG9hZGVkXFxuXCIsXG4rXHRcdFx0ICAgIHBoeWRldl9uYW1lKHBoeSksIHBoeWxpbmtfZ2V0X3BoeV9pZChwaHkpKTtcbiBcdFx0cGh5bGlua19lcnIocGwsIFwiRHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MjQuMTg3ODMxNTEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTEzNjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogQSBMb2dnaW5nLU9ubHkgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgaGVscGVyIGZ1bmN0aW9uLCBgcGh5bGlua19nZXRfcGh5X2lkYCwgYW5kIHVzaW5nIGl0IHdpdGhpbiBgcGh5bGlua19zZnBfY29ubmVjdF9waHlgIHRvIHJlZmluZSBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaG9sZCBvbiwgdGhlIGNyaXRpY2FsIGRldGFpbCBpcyB0aGF0IHRoaXMgY2hhbmdlICpvbmx5KiBpbXBhY3RzIHRoZSBlcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIGBwaHktXHUwMDNlZHJ2YCBpcyBudWxsLiBMZXQncyBkaWcgaW50byB0aGUgZGlmZjogdGhlIGNvcmUgY2hhbmdlIGJvaWxzIGRvd24gdG8gcmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBgcGh5LVx1MDAzZXBoeV9pZGAgaW4gdGhlIGBwaHlsaW5rX2VycmAgY2FsbCB3aXRoIHRoZSBuZXcgZnVuY3Rpb24gY2FsbC5cblxuYGBgY1xuIFx0aWYgKCFwaHktXHUwMDNlZHJ2KSB7XG4tXHRcdHBoeWxpbmtfZXJyKHBsLCBcIlBIWSAlcyAoaWQgMHglLjhseCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXG5cIixcbi1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG4rXHRcdHBoeWxpbmtfZXJyKHBsLCBcIlBIWSAlcyAoaWQgMHglLjh4KSBoYXMgbm8gZHJpdmVyIGxvYWRlZFxcblwiLFxuK1x0XHRcdCAgICBwaHlkZXZfbmFtZShwaHkpLCBwaHlsaW5rX2dldF9waHlfaWQocGh5KSk7XG4gXHRcdHBoeWxpbmtfZXJyKHBsLCBcIkRyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmBgYFxuXG5UaGUgb25seSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gaGVyZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhlIG5ldyBmdW5jdGlvbiB3aXRoaW4gdGhlIGBwaHlsaW5rX2VycmAgbWFjcm8uIEFuZCwgYHBoeWxpbmtfZXJyYCBpcyBmdW5kYW1lbnRhbGx5IGEgbG9nZ2luZyBtZWNoYW5pc20uIFNvLCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGUgb2YgdGh1bWIsIGEgcGF0Y2ggdGhhdCdzIHNvbGVseSBhYm91dCBsb2dnaW5nIOKAkyBzdWNoIGFzIGNoYW5nZXMgdG8gYHByX2VycmAsIGBwcmludGtgLCBvciB0cmFjZXBvaW50cyDigJMgd291bGRuJ3QgYmUgZmxhZ2dlZCBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgYWxpZ25zIHdpdGggdGhpcyBjcml0ZXJpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cIiBJdCdzIGEgc3RyYWlnaHQtZm9yd2FyZCBjYXNlIG9mIGltcHJvdmVkIGxvZ2dpbmcuXG5cbkknbGwgZG8gYSBxdWljayBncmVwIHNlYXJjaCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IGBwaHlsaW5rX2dldF9waHlfaWRgIGlzbid0IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZSwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLiBCdXQgYmFzZWQgb24gdGhlIGRpZmYsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBtb2R1bGVzLCBJIGFtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6Mjk6MzAuODg2OTY5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE5Njg5MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfZ2V0X3BoeV9pZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MTE9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxOS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MjA6c3RhdGljIHUzMiBwaHlsaW5rX2dldF9waHlfaWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTM3PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29ubmVjdF9waHkodm9pZCAqdXBzdHJlYW0sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5NDItXFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJQSFkgJXMgKGlkIDB4JS44eCkgaGFzIG5vIGRyaXZlciBsb2FkZWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozOTQzOlxcdFxcdFxcdCAgICBwaHlkZXZfbmFtZShwaHkpLCBwaHlsaW5rX2dldF9waHlfaWQocGh5KSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTQ0LVxcdFxcdHBoeWxpbmtfZXJyKHBsLCBcXFwiRHJpdmVycyB3aGljaCBoYW5kbGUga25vd24gY29tbW9uIGNhc2VzOiBDT05GSUdfQkNNODQ4ODFfUEhZLCBDT05GSUdfTUFSVkVMTF9QSFlcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOTozMy4zMDY2NjUxNjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY1MTg2OTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRXJyb3IgTWVzc2FnZSBDb250ZXh0KipcblxuUmlnaHQsIHNvIHRoaXMgdmFyaWFibGUsIGBXb3J0aEZ1enppbmdgLCBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIGFuIGVycm9yIG1lc3NhZ2UuIFRoYXQncyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yLCBpc24ndCBpdD8gSWYgaXQgd2FzIGNyaXRpY2FsIGZvciBydW50aW1lIGJlaGF2aW9yIG9yIGluZmx1ZW5jaW5nIGZ1enppbmcgc3RyYXRlZ3kgbW9yZSBicm9hZGx5LCB3ZSdkIHNlZSBpdCByZWZlcmVuY2VkIGluIG11bHRpcGxlIHBsYWNlcy4gVGhlIGZhY3QgaXQncyBzb2xlbHkgaW4gdGhlIGVycm9yIG1lc3NhZ2Ugc3VnZ2VzdHMgaXTigJlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBjb25kaXRpb24gdGhhdCAqdHJpZ2dlcnMqIHRoZSBlcnJvciwgcmF0aGVyIHRoYW4gYmVpbmcgYSBnbG9iYWwgY29udHJvbC4gSW4gZXNzZW5jZSwgaXQncyBhYm91dCB0aGUgY2lyY3Vtc3RhbmNlcyBzdXJyb3VuZGluZyB0aGUgZXJyb3IncyBvY2N1cnJlbmNlLiBDb25zaWRlcmluZyB0aGF0LCBJJ20gbGVhbmluZyBoZWF2aWx5IHRvd2FyZHMgc2V0dGluZyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJdCdzIGxpa2VseSB0aGF0IHdoYXRldmVyIGNvbmRpdGlvbiBsZWFkcyB0byB0aGlzIGVycm9yIG1lYW5zIHRoZSBpbnB1dCBpcyBpbmhlcmVudGx5IHVuc3VpdGFibGUgZm9yIGZ1enppbmcsIGFuZCBhdHRlbXB0aW5nIHRvIGRvIHNvIHdvdWxkIGJlIGEgd2FzdGUgb2YgcmVzb3VyY2VzLCBvciBwb3RlbnRpYWxseSBsZWFkIHRvIG1pc2xlYWRpbmcgcmVzdWx0cy4gSXQgd2lsbCBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBmdXp6aW5nIG9uIGFuIGluYXBwcm9wcmlhdGUgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjUsIk91dHB1dFRva2VucyI6NjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzoyOTozNy45NzE4NTQyN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhbiBlcnJvciBsb2dnaW5nIG1lc3NhZ2UgKHBoeWxpbmtfZXJyKSBieSBhZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgUEhZIElELiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowndkgm[1] Phase: Running StartedAt: 2026-06-20 13:29:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowndkgm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-20 13:29:48 +0000 UTC FinishedAt: 2026-06-20 13:29:52 +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,}