Name: series-workflowdxcpp Phase: Failed StartedAt: 2026-06-25 08:06:56 +0000 UTC FinishedAt: 2026-06-25 08:18:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxcpp[0] Phase: Succeeded StartedAt: 2026-06-25 08:06:56 +0000 UTC FinishedAt: 2026-06-25 08:18:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxcpp[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 08:06:56 +0000 UTC FinishedAt: 2026-06-25 08:18:24 +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+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBLQ1NBTiBhc3NlcnRpb25zIChBU1NFUlRfRVhDTFVTSVZFX0JJVFMpIGFuZCB0cml2aWFsbHkgb3B0aW1pemVzIHBhZ2VfdG9fbmlkIGFuZCBmb2xpb19uaWQgdG8gcmV0dXJuIDAgd2hlbiBDT05GSUdfTlVNQSBpcyBkaXNhYmxlZC4gVGhlc2UgY2hhbmdlcyBkbyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uNzcyYmQxZmM2ZmU3MDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaFxuQEAgLTIyOTQsMTUgJiM0MzsyMjk0LDM2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWRlc2NfbmlkKG1lbWRlc2NfZmxhZ3NfdCBtZGYpXG4gfVxuICNlbmRpZlxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX05VTUFcbiBzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbWVtZGVzY19uaWQoUEZfUE9JU09ORURfQ0hFQ0socGFnZSktXHUwMDNlZmxhZ3MpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwYWdlICpwID0gUEZfUE9JU09ORURfQ0hFQ0socGFnZSk7XG4mIzQzO1xuJiM0MzsjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMocC1cdTAwM2VmbGFncywgTk9ERVNfTUFTSyBcdTAwM2NcdTAwM2MgTk9ERVNfUEdTSElGVCk7XG4mIzQzOyNlbmRpZlxuJiM0MztcdHJldHVybiBtZW1kZXNjX25pZChwLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuJiM0MzsjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsXG4mIzQzO1x0XHRcdCAgICAgIE5PREVTX01BU0sgXHUwMDNjXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX25pZChmb2xpby1cdTAwM2VmbGFncyk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBmb2xpb19uaWQoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbylcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfTlVNQV9CQUxBTkNJTkdcbiAvKiBwYWdlIGFjY2VzcyB0aW1lIGJpdHMgbmVlZHMgdG8gaG9sZCBhdCBsZWFzdCA0IHNlY29uZHMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggY2EyNzEyMTg3MTQ3NWMuLjFiNDMzNjA5ODExM2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTEyNzQsMTcgJiM0MzsxMjc0LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB6b25lX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCB6b25lICp6b25lKVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgbWVtZGVzY196b25lbnVtKG1lbWRlc2NfZmxhZ3NfdCBmbGFncylcbiB7XG4tXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZmxhZ3MuZiwgWk9ORVNfTUFTSyBcdTAwM2NcdTAwM2MgWk9ORVNfUEdTSElGVCk7XG4gXHRyZXR1cm4gKGZsYWdzLmYgXHUwMDNlXHUwMDNlIFpPTkVTX1BHU0hJRlQpIFx1MDAyNiBaT05FU19NQVNLO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIHBhZ2Vfem9uZW51bShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4mIzQzOyNpZiBaT05FU19XSURUSCAhPSAwXG4mIzQzO1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX3pvbmVudW0ocGFnZS1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgZm9saW9fem9uZW51bShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIHtcbiYjNDM7I2lmIFpPTkVTX1dJRFRIICE9IDBcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc3MmJkMWZjNmZlNzA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0yMjk0LDE1ICYjNDM7MjI5NCwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKQogfQogI2VuZGlmCiAKJiM0MzsjaWZkZWYgQ09ORklHX05VTUEKIHN0YXRpYyBpbmxpbmUgaW50IHBhZ2VfdG9fbmlkKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKQogewotCXJldHVybiBtZW1kZXNjX25pZChQRl9QT0lTT05FRF9DSEVDSyhwYWdlKS0mZ3Q7ZmxhZ3MpOwomIzQzOwljb25zdCBzdHJ1Y3QgcGFnZSAqcCA9IFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpOwomIzQzOwomIzQzOyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHUwomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMocC0mZ3Q7ZmxhZ3MsIE5PREVTX01BU0sgJmx0OyZsdDsgTk9ERVNfUEdTSElGVCk7CiYjNDM7I2VuZGlmCiYjNDM7CXJldHVybiBtZW1kZXNjX25pZChwLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGZvbGlvX25pZChjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewomIzQzOyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHUwomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tJmd0O2ZsYWdzLAomIzQzOwkJCSAgICAgIE5PREVTX01BU0sgJmx0OyZsdDsgTk9ERVNfUEdTSElGVCk7CiYjNDM7I2VuZGlmCiAJcmV0dXJuIG1lbWRlc2NfbmlkKGZvbGlvLSZndDtmbGFncyk7CiB9CiYjNDM7I2Vsc2UKJiM0MztzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBmb2xpb19uaWQoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsjZW5kaWYKIAogI2lmZGVmIENPTkZJR19OVU1BX0JBTEFOQ0lORwogLyogcGFnZSBhY2Nlc3MgdGltZSBiaXRzIG5lZWRzIHRvIGhvbGQgYXQgbGVhc3QgNCBzZWNvbmRzICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCBjYTI3MTIxODcxNDc1Yy4uMWI0MzM2MDk4MTEzZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW16b25lLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaApAQCAtMTI3NCwxNyAmIzQzOzEyNzQsMjIgQEAgc3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpCiAKIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgbWVtZGVzY196b25lbnVtKG1lbWRlc2NfZmxhZ3NfdCBmbGFncykKIHsKLQlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZmxhZ3MuZiwgWk9ORVNfTUFTSyAmbHQ7Jmx0OyBaT05FU19QR1NISUZUKTsKIAlyZXR1cm4gKGZsYWdzLmYgJmd0OyZndDsgWk9ORVNfUEdTSElGVCkgJmFtcDsgWk9ORVNfTUFTSzsKIH0KIAogc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBwYWdlX3pvbmVudW0oY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CiYjNDM7I2lmIFpPTkVTX1dJRFRIICE9IDAKJiM0MzsJQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtJmd0O2ZsYWdzLCBaT05FU19NQVNLICZsdDsmbHQ7IFpPTkVTX1BHU0hJRlQpOwomIzQzOyNlbmRpZgogCXJldHVybiBtZW1kZXNjX3pvbmVudW0ocGFnZS0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIGZvbGlvX3pvbmVudW0oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbykKIHsKJiM0MzsjaWYgWk9ORVNfV0lEVEggIT0gMAomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tJmd0O2ZsYWdzLCBaT05FU19NQVNLICZsdDsmbHQ7IFpPTkVTX1BHU0hJRlQpOwomIzQzOyNlbmRpZgogCXJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tJmd0O2ZsYWdzKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBoZWFkZXJzLiBTcGVjaWZpY2FsbHksIGBpbmNsdWRlL2xpbnV4L21tLmhgIGFuZCBgaW5jbHVkZS9saW51eC9tbXpvbmUuaGAuIEZpcnN0IGltcHJlc3Npb246IGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGAjaWZkZWYgQ09ORklHX05VTUFgIGFyb3VuZCB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgZnVuY3Rpb25zIHdpdGhpbiBgbW0uaGAuIFRoYXQmIzM5O3MgYSBOVU1BLXJlbGF0ZWQgbW9kaWZpY2F0aW9uLCBtYWtlcyBzZW5zZS4gSXQgYWxzbyBzZWVtcyB0byBiZSBwbGF5aW5nIHdpdGggYE5PREVfTk9UX0lOX1BBR0VfRkxBR1NgIGluIHJlbGF0aW9uIHRvIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciB0aGUgYHBhZ2UtJmd0O2ZsYWdzYCBhbmQgYGZvbGlvLSZndDtmbGFnc2AgZmllbGRzLiAKCkhvbGQgb24gYSBzZWNvbmQuLi5pdCYjMzk7cyAqYWxzbyogYWRkaW5nIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIHRvIHRoZSBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYCBjYWxscyBpbiBgbW0uaGAhIEludGVyZXN0aW5nLiBBbmQgbm93IEkmIzM5O20gc2VlaW5nIGEgY29uZGl0aW9uYWwgYXJvdW5kIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gIGluIGBtbXpvbmUuaGAsIHNwZWNpZmljYWxseSB1c2luZyBgI2lmIFpPTkVTX1dJRFRIICE9IDBgLiBTbyB0aGlzIGlzIGFib3V0IHpvbmUgc2VsZWN0aW9uLCBhdCBsZWFzdCBpbiBzb21lIGNhc2VzLiBUaGVuIHRoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBzYW1lIG1hY3JvIGZyb20gYG1lbWRlc2Nfem9uZW51bWAuCgpSaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB3aGF0IGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGFjdHVhbGx5ICpkb2VzKi4gTXkgZ3Vlc3MgaXMgdGhhdCBpdCBpcyBhbiBhc3NlcnRpb24gbWFjcm8sIGxpa2VseSByZWxhdGVkIHRvIHNvbWV0aGluZyBsaWtlIEtDU0FOIG9yIGEgZGVidWdnaW5nIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSBjZXJ0YWluIGJpdGZpZWxkcyBpbiB0aGUgYHBhZ2VgIGFuZCBgZm9saW9gIHN0cnVjdHVyZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gCgpPa2F5LCBsZXQmIzM5O3MgY29uZmlybSBteSBhc3N1bXB0aW9uIG9uIGl0cyBkZWZpbml0aW9uLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiBvbmUgb2YgdGhlIEtDU0FOIGhlYWRlcnMuICpBaGEqLCBmb3VuZCBpdC4gSXTigJlzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmhgLgoKSSBzaG91bGQgcHJvYmFibHkgZG8gYSBxdWljayBgZ3JlcGAgZm9yIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIHRvIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHVzZWQuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBpbnRlbmRlZCBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWxseSBleHBvc2UgYW55IHNpZGUgZWZmZWN0cy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gZ2l2ZSB0aGlzIGEgZ3JlZW4gbGlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfQklUUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2tjc2FuLWNoZWNrcy5oPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgX19rY3Nhbl9kaXNhYmxlX2N1cnJlbnQodm9pZCkgeyB9XG4tLVxuaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaC01MjQtICovXG5pbmNsdWRlL2xpbnV4L2tjc2FuLWNoZWNrcy5oOjUyNTojZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfQklUUyh2YXIsIG1hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmgtNTI2LVx0ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLQ1NBTiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCwgYSBLQ1NBTiBtYWNyby4gSSYjMzk7bSBzZWVpbmcgdGhhdCBpdCYjMzk7cyBiZWluZyB1c2VkIHRvIG1vZGlmeSBpbmxpbmUgZnVuY3Rpb25zIHdpdGhpbiBoZWFkZXIgZmlsZXMuIFRoZSBwYXRjaCBpcyBhZGRpbmcgb3Igc2hpZnRpbmcgdGhlc2UgYXNzZXJ0aW9ucyBhcm91bmQsIGFuZCBJIGFsc28gbm90aWNlIGAjaWZkZWYgQ09ORklHX05VTUFgIGJlaW5nIGFkZGVkIGFyb3VuZCBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLgoKTm93LCBsZXQgbWUgdGhpbmsuLi4gTG9va2luZyBhdCBgaW5jbHVkZS9saW51eC9tbS5oYCwgaXQgc2VlbXMgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgKmRpZG4mIzM5O3QqIGhhdmUgdGhhdCBgI2lmZGVmIENPTkZJR19OVU1BYCBjb25kaXRpb25hbCBwcmV2aW91c2x5LiBTbywgd2l0aG91dCBOVU1BIGVuYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IHNpbXBseSByZXR1cm5pbmcgMC4gQmVmb3JlLCB3aXRob3V0IGBDT05GSUdfTlVNQWAsIHRoZXkgd2VyZSByZXR1cm5pbmcgYG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLSZndDtmbGFncylgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNoYW5nZS4KCklmIGBDT05GSUdfTlVNQWAgaXNuJiMzOTt0IHNldCwgd2hhdCB3YXMgdGhlIGJlaGF2aW9yIG9mIGBtZW1kZXNjX25pZGA/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYG1lbWRlc2NfbmlkYCBpbiBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBzZWUgaG93IGl0IHdvcmtlZCBpbiB0aGUgYWJzZW5jZSBvZiBOVU1BIGFuZCBob3cgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgbm93LiBJJiMzOTtsbCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MjI4OT1pbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XG5pbmNsdWRlL2xpbnV4L21tLmgtMjI5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9tbS5oOjIyOTE6c3RhdGljIGlubGluZSBpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZilcbmluY2x1ZGUvbGludXgvbW0uaC0yMjkyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODIyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGN1cnJlbnQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsJiMzOTtzIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGZvY3VzaW5nIG9uIHVuZGVyc3RhbmRpbmcgYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgTGludXgga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgYGluY2x1ZGUvbGludXgvbW0uaGAgaGVhZGVyIGZpbGUsIGFuZCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHZpY2luaXR5IG9mIGxpbmUgMjI4OS4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSB0cnlpbmcgdG8gZ3JvayBzb21lIGZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiwgcGFnZSBtYW5hZ2VtZW50LCB2aXJ0dWFsIG1lbW9yeSBhcmVhcyAoVk1BcyksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGV2ZW4gbW9yZSBncmFudWxhciBsaWtlIHBhZ2UgZmxhZ3Mgb3IgTlVNQSBub2RlIGludGVyYWN0aW9ucywganVkZ2luZyBieSB0aGUgdHlwaWNhbCBjb250ZW50IGZvdW5kIGFyb3VuZCB0aGF0IGxpbmUuIFRoZSBzcGVjaWZpYyBjb250ZXh0IHdpdGhpbiBgbW0uaGAgd2lsbCBpbmZvcm0gd2hhdCYjMzk7cyBiZWluZyBsb29rZWQgYXQsIGJ1dCB0aGUgcmFuZ2UgaW1wbGllcyBhIHNpZ25pZmljYW50IGVsZW1lbnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgSSBjYW4gdW5lYXJ0aCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjI4MDpcdCAqIFdlIG9ubHkgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgZm9yIHR3byBjb21iaW5hYmxlXG4yMjgxOlx0ICogcGFnZXMgaW4gYSB6b25lLlxuMjI4MjpcdCAqL1xuMjI4MzpcdHN0YXRpYyBpbmxpbmUgaW50IHBhZ2Vfem9uZV9pZChzdHJ1Y3QgcGFnZSAqcGFnZSlcbjIyODQ6XHR7XG4yMjg1Olx0XHRyZXR1cm4gKHBhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwM2VcdTAwM2UgWk9ORUlEX1BHU0hJRlQpIFx1MDAyNiBaT05FSURfTUFTSztcbjIyODY6XHR9XG4yMjg3Olx0XG4yMjg4Olx0I2lmZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbjIyODk6XHRpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XG4yMjkwOlx0I2Vsc2VcbjIyOTE6XHRzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxuMjI5MjpcdHtcbjIyOTM6XHRcdHJldHVybiAobWRmLmYgXHUwMDNlXHUwMDNlIE5PREVTX1BHU0hJRlQpIFx1MDAyNiBOT0RFU19NQVNLO1xuMjI5NDpcdH1cbjIyOTU6XHQjZW5kaWZcbjIyOTY6XHRcbjIyOTc6XHQjaWZkZWYgQ09ORklHX05VTUFcbjIyOTg6XHRzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbjIyOTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5VTUEgT3B0aW1pemF0aW9uIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFNvLCBgbWVtZGVzY19uaWRgIGlzIGNhbGN1bGF0ZWQgdXNpbmcgYml0d2lzZSBvcGVyYXRpb25zIG9uIHBhZ2UgZmxhZ3MsIHNwZWNpZmljYWxseSB3aXRoIGBOT0RFU19QR1NISUZUYCBhbmQgYE5PREVTX01BU0tgLCBpZiBgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU2AgaXNuJiMzOTt0IHNldC4gIE5vdywgdGhlIHBhdGNoIGNoYW5nZXMgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgdG8gcmV0dXJuIDAgZGlyZWN0bHkgd2hlbiBgQ09ORklHX05VTUFgIGlzICpub3QqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBvcHRpbWl6aW5nIGEgYml0LCBwZXJoYXBzIGJ5IGF2b2lkaW5nIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMuIEJ1dCBpZiBgQ09ORklHX05VTUFgIGlzIG9mZiwgYE5PREVTX1BHU0hJRlRgIGFuZCBgTk9ERVNfTUFTS2AgYXJlIGxpa2VseSB0byBiZSB6ZXJvIGFueXdheSwgbWVhbmluZyBgbWVtZGVzY19uaWRgICp3b3VsZCogYWxzbyByZXR1cm4gemVyby4KClRoZSByZWFsIGtpY2tlciBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgdG8gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gd2l0aCBgI2lmZGVmIENPTkZJR19OVU1BYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByaW1hcmlseSBhYm91dCBhdm9pZGluZyBhbiBhc3NlcnRpb24gZmFpbHVyZSBvbiBhIHplcm8gYE5PREVTX01BU0tgLiBCZWNhdXNlIGl0IGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UgdG8gYXNzZXJ0IGV4Y2x1c2l2ZSBiaXRzIHdoZW4gdGhlIG1hc2sgaXMgemVyby4KClRoZSBwYXRjaCYjMzk7cyBpbnRlbnQgc2VlbXMgdG8gYmUgdG8gYWRkIEtDU0FOIGFzc2VydGlvbnMgYW5kIG9wdGltaXplIGEgbGl0dGxlIGZvciB0aGUgYCFDT05GSUdfTlVNQWAgY2FzZS4gIEFuZCBob25lc3RseSwgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgcmV0dXJuaW5nIDAgd2hlbiBOVU1BIGlzbiYjMzk7dCBlbmFibGVkIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBhbmQgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCB0byBiZWZvcmUsIHNpbmNlIGFsbCBtZW1vcnkgd291bGQgYmUgb24gbm9kZSAwLiAgRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY29kZSBjbGVhbnVwIHdpdGggYSBLQ1NBTiBjaGVjayB0aHJvd24gaW4uCgpJcyBpdCB3b3J0aCBmdXp6aW5nPyAgTm8uIEl0JiMzOTtzIHJlYWxseSBqdXN0IEtDU0FOIGFzc2VydGlvbnMgYW5kIGEgbWlub3Igb3B0aW1pemF0aW9uIHRoYXQmIzM5O3MgZnVuY3Rpb25hbGx5IG5ldXRyYWwuIEkgc2hvdWxkIGNoZWNrIHRob3VnaCwgdG8gbWFrZSBzdXJlLCB0aGF0IGBOT0RFU19NQVNLYCBpcyBpbmRlZWQgemVybyB3aGVuIGAhQ09ORklHX05VTUFgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgTk9ERVNfTUFTSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tem9uZS5oPTEyMjQ9c3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMjY4LSNkZWZpbmUgWk9ORVNfTUFTS1x0XHQoKDFVTCBcdTAwM2NcdTAwM2MgWk9ORVNfV0lEVEgpIC0gMSlcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTI2OTojZGVmaW5lIE5PREVTX01BU0tcdFx0KCgxVUwgXHUwMDNjXHUwMDNjIE5PREVTX1dJRFRIKSAtIDEpXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNzAtI2RlZmluZSBTRUNUSU9OU19NQVNLXHRcdCgoMVVMIFx1MDAzY1x1MDAzYyBTRUNUSU9OU19XSURUSCkgLSAxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDI4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBOVU1BIENvbmZpZ3VyYXRpb24gYW5kIE5vZGUgV2lkdGgqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgYSBxdWljayBzYW5pdHkgY2hlY2ssIGEgbWVudGFsIGZsYWcgaWYgeW91IHdpbGwuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBOT0RFU19XSURUSGAgYW5kIGAhQ09ORklHX05VTUFgLiBJdCYjMzk7cyBhIGtleSBjb25kaXRpb25hbCwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBgTk9ERVNfV0lEVEhgIGhhcyB0byBiZSBwcmVjaXNlLiBCYXNpY2FsbHksIEkmIzM5O20gcmVtaW5kaW5nIG15c2VsZiB0byBleHBsaWNpdGx5IGV4YW1pbmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byB2YXJpYWJsZXMgdW5kZXIgdGhlIGNvbmRpdGlvbiB0aGF0IGBDT05GSUdfTlVNQWAgaXMgKm5vdCogZW5hYmxlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYE5PREVTX1dJRFRIYCBiZWhhdmVzIGluIGEgbm9uLU5VTUEgZW52aXJvbm1lbnQgYW5kIHdoYXQgaW1wYWN0LCBpZiBhbnksIHRoZSBhYnNlbmNlIG9mIE5VTUEgaGFzIG9uIHRoYXQgcGFydGljdWxhciBzZXR0aW5nLiBJdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UgdG8gdGhvcm91Z2hseSByZXZpZXcgZXZlcnkgY29uZGl0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBOT0RFU19XSURUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTktXHRcdTAwM2M9IEJJVFNfUEVSX0xPTkcgLSBOUl9QQUdFRkxBR1NcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MDojZGVmaW5lIE5PREVTX1dJRFRIXHRcdE5PREVTX1NISUZUXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjEtI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oLTYzLSNlbHNlXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NjQ6I2RlZmluZSBOT0RFU19XSURUSFx0XHQwXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjUtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MTMKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA1MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGUgY2hhbmdlIHNlZW1zIG1pbmltYWwuIFdoZW4gYCFDT05GSUdfTlVNQWAsIGBOT0RFU19XSURUSGAgaXMgemVybywgYW5kIGNvbnNlcXVlbnRseSwgYE5PREVTX01BU0tgIGlzIGFsc28gemVyby4gVGhlcmVmb3JlLCBgbWVtZGVzY19uaWRgIGlzIHBlcmZvcm1pbmcgYSBiaXR3aXNlIEFORCB3aXRoIHplcm8sIHJlc3VsdGluZyBpbiB6ZXJvIHJlZ2FyZGxlc3MuIERpcmVjdGx5IHJldHVybmluZyB6ZXJvIGlzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHRoZSBleGlzdGluZyBjb2RlLiBTbyB0aGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCB3aGljaCBpcyBhIEtDU0FOIGFzc2VydGlvbi4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMuIExvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvbW16b25lLmhgLCBJIHNlZSBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCBiZWluZyBtb3ZlZCBmcm9tIGBtZW1kZXNjX3pvbmVudW1gIHRvIGJvdGggYHBhZ2Vfem9uZW51bWAgYW5kIGBmb2xpb196b25lbnVtYC4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgYXNzZXJ0aW9uIGlzIG5vdyB3cmFwcGVkIGluIGFuIGAjaWYgWk9ORVNfV0lEVEggIT0gMGAgY29uZGl0aW9uYWwuCgpTaW5jZSBLQ1NBTiBhc3NlcnRpb25zIGFyZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgKm5vdCogdG8gYWZmZWN0IGZ1bmN0aW9uYWwgZXhlY3V0aW9uOyB0aGV5IGFyZSBwdXJlbHkgZm9yIGRldGVjdGluZyBkYXRhIHJhY2VzLiBUaGUgcGF0Y2gmIzM5O3MgcHJpbWFyeSBmdW5jdGlvbiByZW1haW5zIHVuY2hhbmdlZCwgYW5kIHRoaXMgb3B0aW1pemF0aW9uIGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgb25seSBhZGRzIGEgZmV3IEtDU0FOIGNoZWNrcy4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBmdXp6aW5nIHNjb3BlLiBJdCBpcyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBiZWhhdmlvciB0aGF0IHJlcXVpcmVzIGZ1enppbmcuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIGluY29uc2VxdWVudGlhbCwgYW5kIHRoZSBhZGRpdGlvbnMgYXJlIHB1cmVseSBmb3IgS0NTQU4gZGF0YS1yYWNlIGRldGVjdGlvbi4KYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjE3Ljg4ODczNDMzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODA0MDg4NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzoxNy44ODg3Mzk4MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjUzMTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYwZWY4MmY3MjI0MzJkZjg0ZDQxMmYxNTcwYzNjNTQ0NWFhYzFiMzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc3MmJkMWZjNmZlNzA3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0yMjk0LDE1ICsyMjk0LDM2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWRlc2NfbmlkKG1lbWRlc2NfZmxhZ3NfdCBtZGYpXFxuIH1cXG4gI2VuZGlmXFxuIFxcbisjaWZkZWYgQ09ORklHX05VTUFcXG4gc3RhdGljIGlubGluZSBpbnQgcGFnZV90b19uaWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLVxcdTAwM2VmbGFncyk7XFxuK1xcdGNvbnN0IHN0cnVjdCBwYWdlICpwID0gUEZfUE9JU09ORURfQ0hFQ0socGFnZSk7XFxuK1xcbisjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcXG4rXFx0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHAtXFx1MDAzZWZsYWdzLCBOT0RFU19NQVNLIFxcdTAwM2NcXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xcbisjZW5kaWZcXG4rXFx0cmV0dXJuIG1lbWRlc2NfbmlkKHAtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4rI2lmbmRlZiBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTXFxuK1xcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmb2xpby1cXHUwMDNlZmxhZ3MsXFxuK1xcdFxcdFxcdCAgICAgIE5PREVTX01BU0sgXFx1MDAzY1xcdTAwM2MgTk9ERVNfUEdTSElGVCk7XFxuKyNlbmRpZlxcbiBcXHRyZXR1cm4gbWVtZGVzY19uaWQoZm9saW8tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbisjZWxzZVxcbitzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rI2VuZGlmXFxuIFxcbiAjaWZkZWYgQ09ORklHX05VTUFfQkFMQU5DSU5HXFxuIC8qIHBhZ2UgYWNjZXNzIHRpbWUgYml0cyBuZWVkcyB0byBob2xkIGF0IGxlYXN0IDQgc2Vjb25kcyAqL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbmluZGV4IGNhMjcxMjE4NzE0NzVjLi4xYjQzMzYwOTgxMTNmMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbkBAIC0xMjc0LDE3ICsxMjc0LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB6b25lX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCB6b25lICp6b25lKVxcbiBcXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBtZW1kZXNjX3pvbmVudW0obWVtZGVzY19mbGFnc190IGZsYWdzKVxcbiB7XFxuLVxcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmbGFncy5mLCBaT05FU19NQVNLIFxcdTAwM2NcXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xcbiBcXHRyZXR1cm4gKGZsYWdzLmYgXFx1MDAzZVxcdTAwM2UgWk9ORVNfUEdTSElGVCkgXFx1MDAyNiBaT05FU19NQVNLO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIHBhZ2Vfem9uZW51bShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4ge1xcbisjaWYgWk9ORVNfV0lEVEggIT0gMFxcbitcXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMocGFnZS1cXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXFx1MDAzY1xcdTAwM2MgWk9ORVNfUEdTSElGVCk7XFxuKyNlbmRpZlxcbiBcXHRyZXR1cm4gbWVtZGVzY196b25lbnVtKHBhZ2UtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBmb2xpb196b25lbnVtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4rI2lmIFpPTkVTX1dJRFRIICE9IDBcXG4rXFx0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKGZvbGlvLVxcdTAwM2VmbGFncywgWk9ORVNfTUFTSyBcXHUwMDNjXFx1MDAzYyBaT05FU19QR1NISUZUKTtcXG4rI2VuZGlmXFxuIFxcdHJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MTguMjc2MDQ0MTU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQxNjc3MTIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43NzJiZDFmYzZmZTcwNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMjI5NCwxNSArMjI5NCwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxuIH1cbiAjZW5kaWZcbiBcbisjaWZkZWYgQ09ORklHX05VTUFcbiBzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbWVtZGVzY19uaWQoUEZfUE9JU09ORURfQ0hFQ0socGFnZSktXHUwMDNlZmxhZ3MpO1xuK1x0Y29uc3Qgc3RydWN0IHBhZ2UgKnAgPSBQRl9QT0lTT05FRF9DSEVDSyhwYWdlKTtcbitcbisjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbitcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhwLVx1MDAzZWZsYWdzLCBOT0RFU19NQVNLIFx1MDAzY1x1MDAzYyBOT0RFU19QR1NISUZUKTtcbisjZW5kaWZcbitcdHJldHVybiBtZW1kZXNjX25pZChwLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuKyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU1xuK1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKGZvbGlvLVx1MDAzZWZsYWdzLFxuK1x0XHRcdCAgICAgIE5PREVTX01BU0sgXHUwMDNjXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2NfbmlkKGZvbGlvLVx1MDAzZWZsYWdzKTtcbiB9XG4rI2Vsc2VcbitzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuKyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfTlVNQV9CQUxBTkNJTkdcbiAvKiBwYWdlIGFjY2VzcyB0aW1lIGJpdHMgbmVlZHMgdG8gaG9sZCBhdCBsZWFzdCA0IHNlY29uZHMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggY2EyNzEyMTg3MTQ3NWMuLjFiNDMzNjA5ODExM2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTEyNzQsMTcgKzEyNzQsMjIgQEAgc3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXG4gXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBtZW1kZXNjX3pvbmVudW0obWVtZGVzY19mbGFnc190IGZsYWdzKVxuIHtcbi1cdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmbGFncy5mLCBaT05FU19NQVNLIFx1MDAzY1x1MDAzYyBaT05FU19QR1NISUZUKTtcbiBcdHJldHVybiAoZmxhZ3MuZiBcdTAwM2VcdTAwM2UgWk9ORVNfUEdTSElGVCkgXHUwMDI2IFpPTkVTX01BU0s7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgcGFnZV96b25lbnVtKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKVxuIHtcbisjaWYgWk9ORVNfV0lEVEggIT0gMFxuK1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2Nfem9uZW51bShwYWdlLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBmb2xpb196b25lbnVtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuKyNpZiBaT05FU19XSURUSCAhPSAwXG4rXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2Nfem9uZW51bShmb2xpby1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MTguMjc2MDQ1Njk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNDE5MDAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQncyB0b3VjaGluZyBzb21lIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgaGVhZGVycy4gU3BlY2lmaWNhbGx5LCBgaW5jbHVkZS9saW51eC9tbS5oYCBhbmQgYGluY2x1ZGUvbGludXgvbW16b25lLmhgLiBGaXJzdCBpbXByZXNzaW9uOiBpdCdzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGAjaWZkZWYgQ09ORklHX05VTUFgIGFyb3VuZCB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgZnVuY3Rpb25zIHdpdGhpbiBgbW0uaGAuIFRoYXQncyBhIE5VTUEtcmVsYXRlZCBtb2RpZmljYXRpb24sIG1ha2VzIHNlbnNlLiBJdCBhbHNvIHNlZW1zIHRvIGJlIHBsYXlpbmcgd2l0aCBgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU2AgaW4gcmVsYXRpb24gdG8gYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgZm9yIHRoZSBgcGFnZS1cdTAwM2VmbGFnc2AgYW5kIGBmb2xpby1cdTAwM2VmbGFnc2AgZmllbGRzLiBcblxuSG9sZCBvbiBhIHNlY29uZC4uLml0J3MgKmFsc28qIGFkZGluZyBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCB0byB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgY2FsbHMgaW4gYG1tLmhgISBJbnRlcmVzdGluZy4gQW5kIG5vdyBJJ20gc2VlaW5nIGEgY29uZGl0aW9uYWwgYXJvdW5kIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gIGluIGBtbXpvbmUuaGAsIHNwZWNpZmljYWxseSB1c2luZyBgI2lmIFpPTkVTX1dJRFRIICE9IDBgLiBTbyB0aGlzIGlzIGFib3V0IHpvbmUgc2VsZWN0aW9uLCBhdCBsZWFzdCBpbiBzb21lIGNhc2VzLiBUaGVuIHRoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBzYW1lIG1hY3JvIGZyb20gYG1lbWRlc2Nfem9uZW51bWAuXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGxvb2sgYXQgd2hhdCBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCBhY3R1YWxseSAqZG9lcyouIE15IGd1ZXNzIGlzIHRoYXQgaXQgaXMgYW4gYXNzZXJ0aW9uIG1hY3JvLCBsaWtlbHkgcmVsYXRlZCB0byBzb21ldGhpbmcgbGlrZSBLQ1NBTiBvciBhIGRlYnVnZ2luZyBjaGVjayBkZXNpZ25lZCB0byBlbnN1cmUgY2VydGFpbiBiaXRmaWVsZHMgaW4gdGhlIGBwYWdlYCBhbmQgYGZvbGlvYCBzdHJ1Y3R1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFxuXG5Pa2F5LCBsZXQncyBjb25maXJtIG15IGFzc3VtcHRpb24gb24gaXRzIGRlZmluaXRpb24uIEkgc2VlbSB0byByZWNhbGwgc2VlaW5nIGl0IGluIG9uZSBvZiB0aGUgS0NTQU4gaGVhZGVycy4gKkFoYSosIGZvdW5kIGl0LiBJdOKAmXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaGAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCB0byBzZWUgd2hlcmUgZWxzZSBpdCdzIHVzZWQuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBpbnRlbmRlZCBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWxseSBleHBvc2UgYW55IHNpZGUgZWZmZWN0cy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gZ2l2ZSB0aGlzIGEgZ3JlZW4gbGlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzoyNC4yMDAyMzgxODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MDA0OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmg9MjMyPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2tjc2FuX2Rpc2FibGVfY3VycmVudCh2b2lkKSB7IH1cXG4tLVxcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmgtNTI0LSAqL1xcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmg6NTI1OiNkZWZpbmUgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHZhciwgbWFzaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaC01MjYtXFx0ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjI2Ljk3MDI5NzQ1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTIxNzQwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLQ1NBTiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCBhIEtDU0FOIG1hY3JvLiBJJ20gc2VlaW5nIHRoYXQgaXQncyBiZWluZyB1c2VkIHRvIG1vZGlmeSBpbmxpbmUgZnVuY3Rpb25zIHdpdGhpbiBoZWFkZXIgZmlsZXMuIFRoZSBwYXRjaCBpcyBhZGRpbmcgb3Igc2hpZnRpbmcgdGhlc2UgYXNzZXJ0aW9ucyBhcm91bmQsIGFuZCBJIGFsc28gbm90aWNlIGAjaWZkZWYgQ09ORklHX05VTUFgIGJlaW5nIGFkZGVkIGFyb3VuZCBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYC4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcuXG5cbk5vdywgbGV0IG1lIHRoaW5rLi4uIExvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvbW0uaGAsIGl0IHNlZW1zIGBwYWdlX3RvX25pZGAgYW5kIGBmb2xpb19uaWRgICpkaWRuJ3QqIGhhdmUgdGhhdCBgI2lmZGVmIENPTkZJR19OVU1BYCBjb25kaXRpb25hbCBwcmV2aW91c2x5LiBTbywgd2l0aG91dCBOVU1BIGVuYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IHNpbXBseSByZXR1cm5pbmcgMC4gQmVmb3JlLCB3aXRob3V0IGBDT05GSUdfTlVNQWAsIHRoZXkgd2VyZSByZXR1cm5pbmcgYG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLVx1MDAzZWZsYWdzKWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY2hhbmdlLlxuXG5JZiBgQ09ORklHX05VTUFgIGlzbid0IHNldCwgd2hhdCB3YXMgdGhlIGJlaGF2aW9yIG9mIGBtZW1kZXNjX25pZGA/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBJIG5lZWQgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBvZiBgbWVtZGVzY19uaWRgIGluIGBpbmNsdWRlL2xpbnV4L21tLmhgIHRvIHNlZSBob3cgaXQgd29ya2VkIGluIHRoZSBhYnNlbmNlIG9mIE5VTUEgYW5kIGhvdyB0aGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBub3cuIEknbGwgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MzEuMzYyNDczNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwOTgwNTU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MjI4OT1pbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XFxuaW5jbHVkZS9saW51eC9tbS5oLTIyOTAtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21tLmg6MjI5MTpzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxcbmluY2x1ZGUvbGludXgvbW0uaC0yMjkyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MzMuNTcyMjg1MDY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODg0NjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsJ3MgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGZvY3VzaW5nIG9uIHVuZGVyc3RhbmRpbmcgYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgTGludXgga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQuIE15IGluaXRpYWwgdGFyZ2V0IGlzIHRoZSBgaW5jbHVkZS9saW51eC9tbS5oYCBoZWFkZXIgZmlsZSwgYW5kIEknbSB6ZXJvaW5nIGluIG9uIHRoZSB2aWNpbml0eSBvZiBsaW5lIDIyODkuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cnlpbmcgdG8gZ3JvayBzb21lIGZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiwgcGFnZSBtYW5hZ2VtZW50LCB2aXJ0dWFsIG1lbW9yeSBhcmVhcyAoVk1BcyksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGV2ZW4gbW9yZSBncmFudWxhciBsaWtlIHBhZ2UgZmxhZ3Mgb3IgTlVNQSBub2RlIGludGVyYWN0aW9ucywganVkZ2luZyBieSB0aGUgdHlwaWNhbCBjb250ZW50IGZvdW5kIGFyb3VuZCB0aGF0IGxpbmUuIFRoZSBzcGVjaWZpYyBjb250ZXh0IHdpdGhpbiBgbW0uaGAgd2lsbCBpbmZvcm0gd2hhdCdzIGJlaW5nIGxvb2tlZCBhdCwgYnV0IHRoZSByYW5nZSBpbXBsaWVzIGEgc2lnbmlmaWNhbnQgZWxlbWVudCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIEkgY2FuIHVuZWFydGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzozNi45MDExMzMwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L21tLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjI4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjI4MDpcXHQgKiBXZSBvbmx5IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGZvciB0d28gY29tYmluYWJsZVxcbjIyODE6XFx0ICogcGFnZXMgaW4gYSB6b25lLlxcbjIyODI6XFx0ICovXFxuMjI4MzpcXHRzdGF0aWMgaW5saW5lIGludCBwYWdlX3pvbmVfaWQoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuMjI4NDpcXHR7XFxuMjI4NTpcXHRcXHRyZXR1cm4gKHBhZ2UtXFx1MDAzZWZsYWdzLmYgXFx1MDAzZVxcdTAwM2UgWk9ORUlEX1BHU0hJRlQpIFxcdTAwMjYgWk9ORUlEX01BU0s7XFxuMjI4NjpcXHR9XFxuMjI4NzpcXHRcXG4yMjg4OlxcdCNpZmRlZiBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTXFxuMjI4OTpcXHRpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XFxuMjI5MDpcXHQjZWxzZVxcbjIyOTE6XFx0c3RhdGljIGlubGluZSBpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZilcXG4yMjkyOlxcdHtcXG4yMjkzOlxcdFxcdHJldHVybiAobWRmLmYgXFx1MDAzZVxcdTAwM2UgTk9ERVNfUEdTSElGVCkgXFx1MDAyNiBOT0RFU19NQVNLO1xcbjIyOTQ6XFx0fVxcbjIyOTU6XFx0I2VuZGlmXFxuMjI5NjpcXHRcXG4yMjk3OlxcdCNpZmRlZiBDT05GSUdfTlVNQVxcbjIyOTg6XFx0c3RhdGljIGlubGluZSBpbnQgcGFnZV90b19uaWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuMjI5OTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjM2LjkwMTU5NDIzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NDA3OTI1NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVU1BIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gU28sIGBtZW1kZXNjX25pZGAgaXMgY2FsY3VsYXRlZCB1c2luZyBiaXR3aXNlIG9wZXJhdGlvbnMgb24gcGFnZSBmbGFncywgc3BlY2lmaWNhbGx5IHdpdGggYE5PREVTX1BHU0hJRlRgIGFuZCBgTk9ERVNfTUFTS2AsIGlmIGBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTYCBpc24ndCBzZXQuICBOb3csIHRoZSBwYXRjaCBjaGFuZ2VzIGBwYWdlX3RvX25pZGAgYW5kIGBmb2xpb19uaWRgIHRvIHJldHVybiAwIGRpcmVjdGx5IHdoZW4gYENPTkZJR19OVU1BYCBpcyAqbm90KiBlbmFibGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgYWJvdXQgb3B0aW1pemluZyBhIGJpdCwgcGVyaGFwcyBieSBhdm9pZGluZyB0aGUgYml0d2lzZSBvcGVyYXRpb25zLiBCdXQgaWYgYENPTkZJR19OVU1BYCBpcyBvZmYsIGBOT0RFU19QR1NISUZUYCBhbmQgYE5PREVTX01BU0tgIGFyZSBsaWtlbHkgdG8gYmUgemVybyBhbnl3YXksIG1lYW5pbmcgYG1lbWRlc2NfbmlkYCAqd291bGQqIGFsc28gcmV0dXJuIHplcm8uXG5cblRoZSByZWFsIGtpY2tlciBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgdG8gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gd2l0aCBgI2lmZGVmIENPTkZJR19OVU1BYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByaW1hcmlseSBhYm91dCBhdm9pZGluZyBhbiBhc3NlcnRpb24gZmFpbHVyZSBvbiBhIHplcm8gYE5PREVTX01BU0tgLiBCZWNhdXNlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBhc3NlcnQgZXhjbHVzaXZlIGJpdHMgd2hlbiB0aGUgbWFzayBpcyB6ZXJvLlxuXG5UaGUgcGF0Y2gncyBpbnRlbnQgc2VlbXMgdG8gYmUgdG8gYWRkIEtDU0FOIGFzc2VydGlvbnMgYW5kIG9wdGltaXplIGEgbGl0dGxlIGZvciB0aGUgYCFDT05GSUdfTlVNQWAgY2FzZS4gIEFuZCBob25lc3RseSwgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgcmV0dXJuaW5nIDAgd2hlbiBOVU1BIGlzbid0IGVuYWJsZWQgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGFuZCBmdW5jdGlvbmFsbHkgaWRlbnRpY2FsIHRvIGJlZm9yZSwgc2luY2UgYWxsIG1lbW9yeSB3b3VsZCBiZSBvbiBub2RlIDAuICBFc3NlbnRpYWxseSwgaXQncyBhIGNvZGUgY2xlYW51cCB3aXRoIGEgS0NTQU4gY2hlY2sgdGhyb3duIGluLlxuXG5JcyBpdCB3b3J0aCBmdXp6aW5nPyAgTm8uIEl0J3MgcmVhbGx5IGp1c3QgS0NTQU4gYXNzZXJ0aW9ucyBhbmQgYSBtaW5vciBvcHRpbWl6YXRpb24gdGhhdCdzIGZ1bmN0aW9uYWxseSBuZXV0cmFsLiBJIHNob3VsZCBjaGVjayB0aG91Z2gsIHRvIG1ha2Ugc3VyZSwgdGhhdCBgTk9ERVNfTUFTS2AgaXMgaW5kZWVkIHplcm8gd2hlbiBgIUNPTkZJR19OVU1BYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjQ0Ljg0MjM4OTQzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5NjkzMDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgTk9ERVNfTUFTS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tem9uZS5oPTEyMjQ9c3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNjgtI2RlZmluZSBaT05FU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgWk9ORVNfV0lEVEgpIC0gMSlcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjEyNjk6I2RlZmluZSBOT0RFU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgTk9ERVNfV0lEVEgpIC0gMSlcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNzAtI2RlZmluZSBTRUNUSU9OU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgU0VDVElPTlNfV0lEVEgpIC0gMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NDcuMjM5MzI2NjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY5MTQ2ODkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBOVU1BIENvbmZpZ3VyYXRpb24gYW5kIE5vZGUgV2lkdGgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBhIG1lbnRhbCBmbGFnIGlmIHlvdSB3aWxsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgTk9ERVNfV0lEVEhgIGFuZCBgIUNPTkZJR19OVU1BYC4gSXQncyBhIGtleSBjb25kaXRpb25hbCwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBgTk9ERVNfV0lEVEhgIGhhcyB0byBiZSBwcmVjaXNlLiBCYXNpY2FsbHksIEknbSByZW1pbmRpbmcgbXlzZWxmIHRvIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIHZhcmlhYmxlcyB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYENPTkZJR19OVU1BYCBpcyAqbm90KiBlbmFibGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgTk9ERVNfV0lEVEhgIGJlaGF2ZXMgaW4gYSBub24tTlVNQSBlbnZpcm9ubWVudCBhbmQgd2hhdCBpbXBhY3QsIGlmIGFueSwgdGhlIGFic2VuY2Ugb2YgTlVNQSBoYXMgb24gdGhhdCBwYXJ0aWN1bGFyIHNldHRpbmcuIEl0J3MgYSBnb29kIHByYWN0aWNlIHRvIHRob3JvdWdobHkgcmV2aWV3IGV2ZXJ5IGNvbmRpdGlvbmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDI4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NDkuOTMwNzk4NDMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1NTE3OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBOT0RFU19XSURUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTktXFx0XFx1MDAzYz0gQklUU19QRVJfTE9ORyAtIE5SX1BBR0VGTEFHU1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MDojZGVmaW5lIE5PREVTX1dJRFRIXFx0XFx0Tk9ERVNfU0hJRlRcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjEtI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjMtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NjQ6I2RlZmluZSBOT0RFU19XSURUSFxcdFxcdDBcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjUtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjUxLjkzNjMyMTYyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzU2NDQ4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGUgY2hhbmdlIHNlZW1zIG1pbmltYWwuIFdoZW4gYCFDT05GSUdfTlVNQWAsIGBOT0RFU19XSURUSGAgaXMgemVybywgYW5kIGNvbnNlcXVlbnRseSwgYE5PREVTX01BU0tgIGlzIGFsc28gemVyby4gVGhlcmVmb3JlLCBgbWVtZGVzY19uaWRgIGlzIHBlcmZvcm1pbmcgYSBiaXR3aXNlIEFORCB3aXRoIHplcm8sIHJlc3VsdGluZyBpbiB6ZXJvIHJlZ2FyZGxlc3MuIERpcmVjdGx5IHJldHVybmluZyB6ZXJvIGlzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHRoZSBleGlzdGluZyBjb2RlLiBTbyB0aGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCB3aGljaCBpcyBhIEtDU0FOIGFzc2VydGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTG9va2luZyBhdCBgaW5jbHVkZS9saW51eC9tbXpvbmUuaGAsIEkgc2VlIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGJlaW5nIG1vdmVkIGZyb20gYG1lbWRlc2Nfem9uZW51bWAgdG8gYm90aCBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBhc3NlcnRpb24gaXMgbm93IHdyYXBwZWQgaW4gYW4gYCNpZiBaT05FU19XSURUSCAhPSAwYCBjb25kaXRpb25hbC5cblxuU2luY2UgS0NTQU4gYXNzZXJ0aW9ucyBhcmUgc3BlY2lmaWNhbGx5IGRlc2lnbmVkICpub3QqIHRvIGFmZmVjdCBmdW5jdGlvbmFsIGV4ZWN1dGlvbjsgdGhleSBhcmUgcHVyZWx5IGZvciBkZXRlY3RpbmcgZGF0YSByYWNlcy4gVGhlIHBhdGNoJ3MgcHJpbWFyeSBmdW5jdGlvbiByZW1haW5zIHVuY2hhbmdlZCwgYW5kIHRoaXMgb3B0aW1pemF0aW9uIGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgb25seSBhZGRzIGEgZmV3IEtDU0FOIGNoZWNrcy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGZ1enppbmcgc2NvcGUuIEl0IGlzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGJlaGF2aW9yIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgaW5jb25zZXF1ZW50aWFsLCBhbmQgdGhlIGFkZGl0aW9ucyBhcmUgcHVyZWx5IGZvciBLQ1NBTiBkYXRhLXJhY2UgZGV0ZWN0aW9uLlxuYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTMsIk91dHB1dFRva2VucyI6ODMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NTkuNjkyNzczMjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxcpp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 08:06:56 +0000 UTC FinishedAt: 2026-06-25 08:18:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBLQ1NBTiBhc3NlcnRpb25zIChBU1NFUlRfRVhDTFVTSVZFX0JJVFMpIGFuZCB0cml2aWFsbHkgb3B0aW1pemVzIHBhZ2VfdG9fbmlkIGFuZCBmb2xpb19uaWQgdG8gcmV0dXJuIDAgd2hlbiBDT05GSUdfTlVNQSBpcyBkaXNhYmxlZC4gVGhlc2UgY2hhbmdlcyBkbyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uNzcyYmQxZmM2ZmU3MDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaFxuQEAgLTIyOTQsMTUgJiM0MzsyMjk0LDM2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWRlc2NfbmlkKG1lbWRlc2NfZmxhZ3NfdCBtZGYpXG4gfVxuICNlbmRpZlxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX05VTUFcbiBzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbWVtZGVzY19uaWQoUEZfUE9JU09ORURfQ0hFQ0socGFnZSktXHUwMDNlZmxhZ3MpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwYWdlICpwID0gUEZfUE9JU09ORURfQ0hFQ0socGFnZSk7XG4mIzQzO1xuJiM0MzsjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMocC1cdTAwM2VmbGFncywgTk9ERVNfTUFTSyBcdTAwM2NcdTAwM2MgTk9ERVNfUEdTSElGVCk7XG4mIzQzOyNlbmRpZlxuJiM0MztcdHJldHVybiBtZW1kZXNjX25pZChwLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuJiM0MzsjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsXG4mIzQzO1x0XHRcdCAgICAgIE5PREVTX01BU0sgXHUwMDNjXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX25pZChmb2xpby1cdTAwM2VmbGFncyk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBmb2xpb19uaWQoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbylcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfTlVNQV9CQUxBTkNJTkdcbiAvKiBwYWdlIGFjY2VzcyB0aW1lIGJpdHMgbmVlZHMgdG8gaG9sZCBhdCBsZWFzdCA0IHNlY29uZHMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggY2EyNzEyMTg3MTQ3NWMuLjFiNDMzNjA5ODExM2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTEyNzQsMTcgJiM0MzsxMjc0LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB6b25lX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCB6b25lICp6b25lKVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgbWVtZGVzY196b25lbnVtKG1lbWRlc2NfZmxhZ3NfdCBmbGFncylcbiB7XG4tXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZmxhZ3MuZiwgWk9ORVNfTUFTSyBcdTAwM2NcdTAwM2MgWk9ORVNfUEdTSElGVCk7XG4gXHRyZXR1cm4gKGZsYWdzLmYgXHUwMDNlXHUwMDNlIFpPTkVTX1BHU0hJRlQpIFx1MDAyNiBaT05FU19NQVNLO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIHBhZ2Vfem9uZW51bShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4mIzQzOyNpZiBaT05FU19XSURUSCAhPSAwXG4mIzQzO1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX3pvbmVudW0ocGFnZS1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgZm9saW9fem9uZW51bShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIHtcbiYjNDM7I2lmIFpPTkVTX1dJRFRIICE9IDBcbiYjNDM7XHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuJiM0MzsjZW5kaWZcbiBcdHJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc3MmJkMWZjNmZlNzA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0yMjk0LDE1ICYjNDM7MjI5NCwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKQogfQogI2VuZGlmCiAKJiM0MzsjaWZkZWYgQ09ORklHX05VTUEKIHN0YXRpYyBpbmxpbmUgaW50IHBhZ2VfdG9fbmlkKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKQogewotCXJldHVybiBtZW1kZXNjX25pZChQRl9QT0lTT05FRF9DSEVDSyhwYWdlKS0mZ3Q7ZmxhZ3MpOwomIzQzOwljb25zdCBzdHJ1Y3QgcGFnZSAqcCA9IFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpOwomIzQzOwomIzQzOyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHUwomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMocC0mZ3Q7ZmxhZ3MsIE5PREVTX01BU0sgJmx0OyZsdDsgTk9ERVNfUEdTSElGVCk7CiYjNDM7I2VuZGlmCiYjNDM7CXJldHVybiBtZW1kZXNjX25pZChwLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGZvbGlvX25pZChjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewomIzQzOyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHUwomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tJmd0O2ZsYWdzLAomIzQzOwkJCSAgICAgIE5PREVTX01BU0sgJmx0OyZsdDsgTk9ERVNfUEdTSElGVCk7CiYjNDM7I2VuZGlmCiAJcmV0dXJuIG1lbWRlc2NfbmlkKGZvbGlvLSZndDtmbGFncyk7CiB9CiYjNDM7I2Vsc2UKJiM0MztzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBmb2xpb19uaWQoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsjZW5kaWYKIAogI2lmZGVmIENPTkZJR19OVU1BX0JBTEFOQ0lORwogLyogcGFnZSBhY2Nlc3MgdGltZSBiaXRzIG5lZWRzIHRvIGhvbGQgYXQgbGVhc3QgNCBzZWNvbmRzICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCBjYTI3MTIxODcxNDc1Yy4uMWI0MzM2MDk4MTEzZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW16b25lLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaApAQCAtMTI3NCwxNyAmIzQzOzEyNzQsMjIgQEAgc3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpCiAKIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgbWVtZGVzY196b25lbnVtKG1lbWRlc2NfZmxhZ3NfdCBmbGFncykKIHsKLQlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZmxhZ3MuZiwgWk9ORVNfTUFTSyAmbHQ7Jmx0OyBaT05FU19QR1NISUZUKTsKIAlyZXR1cm4gKGZsYWdzLmYgJmd0OyZndDsgWk9ORVNfUEdTSElGVCkgJmFtcDsgWk9ORVNfTUFTSzsKIH0KIAogc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBwYWdlX3pvbmVudW0oY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CiYjNDM7I2lmIFpPTkVTX1dJRFRIICE9IDAKJiM0MzsJQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtJmd0O2ZsYWdzLCBaT05FU19NQVNLICZsdDsmbHQ7IFpPTkVTX1BHU0hJRlQpOwomIzQzOyNlbmRpZgogCXJldHVybiBtZW1kZXNjX3pvbmVudW0ocGFnZS0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIGZvbGlvX3pvbmVudW0oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbykKIHsKJiM0MzsjaWYgWk9ORVNfV0lEVEggIT0gMAomIzQzOwlBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tJmd0O2ZsYWdzLCBaT05FU19NQVNLICZsdDsmbHQ7IFpPTkVTX1BHU0hJRlQpOwomIzQzOyNlbmRpZgogCXJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tJmd0O2ZsYWdzKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBoZWFkZXJzLiBTcGVjaWZpY2FsbHksIGBpbmNsdWRlL2xpbnV4L21tLmhgIGFuZCBgaW5jbHVkZS9saW51eC9tbXpvbmUuaGAuIEZpcnN0IGltcHJlc3Npb246IGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGAjaWZkZWYgQ09ORklHX05VTUFgIGFyb3VuZCB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgZnVuY3Rpb25zIHdpdGhpbiBgbW0uaGAuIFRoYXQmIzM5O3MgYSBOVU1BLXJlbGF0ZWQgbW9kaWZpY2F0aW9uLCBtYWtlcyBzZW5zZS4gSXQgYWxzbyBzZWVtcyB0byBiZSBwbGF5aW5nIHdpdGggYE5PREVfTk9UX0lOX1BBR0VfRkxBR1NgIGluIHJlbGF0aW9uIHRvIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciB0aGUgYHBhZ2UtJmd0O2ZsYWdzYCBhbmQgYGZvbGlvLSZndDtmbGFnc2AgZmllbGRzLiAKCkhvbGQgb24gYSBzZWNvbmQuLi5pdCYjMzk7cyAqYWxzbyogYWRkaW5nIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIHRvIHRoZSBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYCBjYWxscyBpbiBgbW0uaGAhIEludGVyZXN0aW5nLiBBbmQgbm93IEkmIzM5O20gc2VlaW5nIGEgY29uZGl0aW9uYWwgYXJvdW5kIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gIGluIGBtbXpvbmUuaGAsIHNwZWNpZmljYWxseSB1c2luZyBgI2lmIFpPTkVTX1dJRFRIICE9IDBgLiBTbyB0aGlzIGlzIGFib3V0IHpvbmUgc2VsZWN0aW9uLCBhdCBsZWFzdCBpbiBzb21lIGNhc2VzLiBUaGVuIHRoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBzYW1lIG1hY3JvIGZyb20gYG1lbWRlc2Nfem9uZW51bWAuCgpSaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB3aGF0IGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGFjdHVhbGx5ICpkb2VzKi4gTXkgZ3Vlc3MgaXMgdGhhdCBpdCBpcyBhbiBhc3NlcnRpb24gbWFjcm8sIGxpa2VseSByZWxhdGVkIHRvIHNvbWV0aGluZyBsaWtlIEtDU0FOIG9yIGEgZGVidWdnaW5nIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSBjZXJ0YWluIGJpdGZpZWxkcyBpbiB0aGUgYHBhZ2VgIGFuZCBgZm9saW9gIHN0cnVjdHVyZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gCgpPa2F5LCBsZXQmIzM5O3MgY29uZmlybSBteSBhc3N1bXB0aW9uIG9uIGl0cyBkZWZpbml0aW9uLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiBvbmUgb2YgdGhlIEtDU0FOIGhlYWRlcnMuICpBaGEqLCBmb3VuZCBpdC4gSXTigJlzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmhgLgoKSSBzaG91bGQgcHJvYmFibHkgZG8gYSBxdWljayBgZ3JlcGAgZm9yIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIHRvIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHVzZWQuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBpbnRlbmRlZCBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWxseSBleHBvc2UgYW55IHNpZGUgZWZmZWN0cy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gZ2l2ZSB0aGlzIGEgZ3JlZW4gbGlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfQklUUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2tjc2FuLWNoZWNrcy5oPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgX19rY3Nhbl9kaXNhYmxlX2N1cnJlbnQodm9pZCkgeyB9XG4tLVxuaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaC01MjQtICovXG5pbmNsdWRlL2xpbnV4L2tjc2FuLWNoZWNrcy5oOjUyNTojZGVmaW5lIEFTU0VSVF9FWENMVVNJVkVfQklUUyh2YXIsIG1hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmgtNTI2LVx0ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLQ1NBTiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCwgYSBLQ1NBTiBtYWNyby4gSSYjMzk7bSBzZWVpbmcgdGhhdCBpdCYjMzk7cyBiZWluZyB1c2VkIHRvIG1vZGlmeSBpbmxpbmUgZnVuY3Rpb25zIHdpdGhpbiBoZWFkZXIgZmlsZXMuIFRoZSBwYXRjaCBpcyBhZGRpbmcgb3Igc2hpZnRpbmcgdGhlc2UgYXNzZXJ0aW9ucyBhcm91bmQsIGFuZCBJIGFsc28gbm90aWNlIGAjaWZkZWYgQ09ORklHX05VTUFgIGJlaW5nIGFkZGVkIGFyb3VuZCBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLgoKTm93LCBsZXQgbWUgdGhpbmsuLi4gTG9va2luZyBhdCBgaW5jbHVkZS9saW51eC9tbS5oYCwgaXQgc2VlbXMgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgKmRpZG4mIzM5O3QqIGhhdmUgdGhhdCBgI2lmZGVmIENPTkZJR19OVU1BYCBjb25kaXRpb25hbCBwcmV2aW91c2x5LiBTbywgd2l0aG91dCBOVU1BIGVuYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IHNpbXBseSByZXR1cm5pbmcgMC4gQmVmb3JlLCB3aXRob3V0IGBDT05GSUdfTlVNQWAsIHRoZXkgd2VyZSByZXR1cm5pbmcgYG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLSZndDtmbGFncylgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNoYW5nZS4KCklmIGBDT05GSUdfTlVNQWAgaXNuJiMzOTt0IHNldCwgd2hhdCB3YXMgdGhlIGJlaGF2aW9yIG9mIGBtZW1kZXNjX25pZGA/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYG1lbWRlc2NfbmlkYCBpbiBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBzZWUgaG93IGl0IHdvcmtlZCBpbiB0aGUgYWJzZW5jZSBvZiBOVU1BIGFuZCBob3cgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgbm93LiBJJiMzOTtsbCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MjI4OT1pbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XG5pbmNsdWRlL2xpbnV4L21tLmgtMjI5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9tbS5oOjIyOTE6c3RhdGljIGlubGluZSBpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZilcbmluY2x1ZGUvbGludXgvbW0uaC0yMjkyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODIyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGN1cnJlbnQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsJiMzOTtzIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGZvY3VzaW5nIG9uIHVuZGVyc3RhbmRpbmcgYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgTGludXgga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgYGluY2x1ZGUvbGludXgvbW0uaGAgaGVhZGVyIGZpbGUsIGFuZCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHZpY2luaXR5IG9mIGxpbmUgMjI4OS4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSB0cnlpbmcgdG8gZ3JvayBzb21lIGZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiwgcGFnZSBtYW5hZ2VtZW50LCB2aXJ0dWFsIG1lbW9yeSBhcmVhcyAoVk1BcyksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGV2ZW4gbW9yZSBncmFudWxhciBsaWtlIHBhZ2UgZmxhZ3Mgb3IgTlVNQSBub2RlIGludGVyYWN0aW9ucywganVkZ2luZyBieSB0aGUgdHlwaWNhbCBjb250ZW50IGZvdW5kIGFyb3VuZCB0aGF0IGxpbmUuIFRoZSBzcGVjaWZpYyBjb250ZXh0IHdpdGhpbiBgbW0uaGAgd2lsbCBpbmZvcm0gd2hhdCYjMzk7cyBiZWluZyBsb29rZWQgYXQsIGJ1dCB0aGUgcmFuZ2UgaW1wbGllcyBhIHNpZ25pZmljYW50IGVsZW1lbnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgSSBjYW4gdW5lYXJ0aCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjI4MDpcdCAqIFdlIG9ubHkgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgZm9yIHR3byBjb21iaW5hYmxlXG4yMjgxOlx0ICogcGFnZXMgaW4gYSB6b25lLlxuMjI4MjpcdCAqL1xuMjI4MzpcdHN0YXRpYyBpbmxpbmUgaW50IHBhZ2Vfem9uZV9pZChzdHJ1Y3QgcGFnZSAqcGFnZSlcbjIyODQ6XHR7XG4yMjg1Olx0XHRyZXR1cm4gKHBhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwM2VcdTAwM2UgWk9ORUlEX1BHU0hJRlQpIFx1MDAyNiBaT05FSURfTUFTSztcbjIyODY6XHR9XG4yMjg3Olx0XG4yMjg4Olx0I2lmZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbjIyODk6XHRpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XG4yMjkwOlx0I2Vsc2VcbjIyOTE6XHRzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxuMjI5MjpcdHtcbjIyOTM6XHRcdHJldHVybiAobWRmLmYgXHUwMDNlXHUwMDNlIE5PREVTX1BHU0hJRlQpIFx1MDAyNiBOT0RFU19NQVNLO1xuMjI5NDpcdH1cbjIyOTU6XHQjZW5kaWZcbjIyOTY6XHRcbjIyOTc6XHQjaWZkZWYgQ09ORklHX05VTUFcbjIyOTg6XHRzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbjIyOTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5VTUEgT3B0aW1pemF0aW9uIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFNvLCBgbWVtZGVzY19uaWRgIGlzIGNhbGN1bGF0ZWQgdXNpbmcgYml0d2lzZSBvcGVyYXRpb25zIG9uIHBhZ2UgZmxhZ3MsIHNwZWNpZmljYWxseSB3aXRoIGBOT0RFU19QR1NISUZUYCBhbmQgYE5PREVTX01BU0tgLCBpZiBgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU2AgaXNuJiMzOTt0IHNldC4gIE5vdywgdGhlIHBhdGNoIGNoYW5nZXMgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgdG8gcmV0dXJuIDAgZGlyZWN0bHkgd2hlbiBgQ09ORklHX05VTUFgIGlzICpub3QqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBvcHRpbWl6aW5nIGEgYml0LCBwZXJoYXBzIGJ5IGF2b2lkaW5nIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMuIEJ1dCBpZiBgQ09ORklHX05VTUFgIGlzIG9mZiwgYE5PREVTX1BHU0hJRlRgIGFuZCBgTk9ERVNfTUFTS2AgYXJlIGxpa2VseSB0byBiZSB6ZXJvIGFueXdheSwgbWVhbmluZyBgbWVtZGVzY19uaWRgICp3b3VsZCogYWxzbyByZXR1cm4gemVyby4KClRoZSByZWFsIGtpY2tlciBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgdG8gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gd2l0aCBgI2lmZGVmIENPTkZJR19OVU1BYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByaW1hcmlseSBhYm91dCBhdm9pZGluZyBhbiBhc3NlcnRpb24gZmFpbHVyZSBvbiBhIHplcm8gYE5PREVTX01BU0tgLiBCZWNhdXNlIGl0IGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UgdG8gYXNzZXJ0IGV4Y2x1c2l2ZSBiaXRzIHdoZW4gdGhlIG1hc2sgaXMgemVyby4KClRoZSBwYXRjaCYjMzk7cyBpbnRlbnQgc2VlbXMgdG8gYmUgdG8gYWRkIEtDU0FOIGFzc2VydGlvbnMgYW5kIG9wdGltaXplIGEgbGl0dGxlIGZvciB0aGUgYCFDT05GSUdfTlVNQWAgY2FzZS4gIEFuZCBob25lc3RseSwgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgcmV0dXJuaW5nIDAgd2hlbiBOVU1BIGlzbiYjMzk7dCBlbmFibGVkIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBhbmQgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCB0byBiZWZvcmUsIHNpbmNlIGFsbCBtZW1vcnkgd291bGQgYmUgb24gbm9kZSAwLiAgRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY29kZSBjbGVhbnVwIHdpdGggYSBLQ1NBTiBjaGVjayB0aHJvd24gaW4uCgpJcyBpdCB3b3J0aCBmdXp6aW5nPyAgTm8uIEl0JiMzOTtzIHJlYWxseSBqdXN0IEtDU0FOIGFzc2VydGlvbnMgYW5kIGEgbWlub3Igb3B0aW1pemF0aW9uIHRoYXQmIzM5O3MgZnVuY3Rpb25hbGx5IG5ldXRyYWwuIEkgc2hvdWxkIGNoZWNrIHRob3VnaCwgdG8gbWFrZSBzdXJlLCB0aGF0IGBOT0RFU19NQVNLYCBpcyBpbmRlZWQgemVybyB3aGVuIGAhQ09ORklHX05VTUFgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgTk9ERVNfTUFTSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tem9uZS5oPTEyMjQ9c3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMjY4LSNkZWZpbmUgWk9ORVNfTUFTS1x0XHQoKDFVTCBcdTAwM2NcdTAwM2MgWk9ORVNfV0lEVEgpIC0gMSlcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTI2OTojZGVmaW5lIE5PREVTX01BU0tcdFx0KCgxVUwgXHUwMDNjXHUwMDNjIE5PREVTX1dJRFRIKSAtIDEpXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNzAtI2RlZmluZSBTRUNUSU9OU19NQVNLXHRcdCgoMVVMIFx1MDAzY1x1MDAzYyBTRUNUSU9OU19XSURUSCkgLSAxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDI4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBOVU1BIENvbmZpZ3VyYXRpb24gYW5kIE5vZGUgV2lkdGgqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgYSBxdWljayBzYW5pdHkgY2hlY2ssIGEgbWVudGFsIGZsYWcgaWYgeW91IHdpbGwuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBOT0RFU19XSURUSGAgYW5kIGAhQ09ORklHX05VTUFgLiBJdCYjMzk7cyBhIGtleSBjb25kaXRpb25hbCwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBgTk9ERVNfV0lEVEhgIGhhcyB0byBiZSBwcmVjaXNlLiBCYXNpY2FsbHksIEkmIzM5O20gcmVtaW5kaW5nIG15c2VsZiB0byBleHBsaWNpdGx5IGV4YW1pbmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byB2YXJpYWJsZXMgdW5kZXIgdGhlIGNvbmRpdGlvbiB0aGF0IGBDT05GSUdfTlVNQWAgaXMgKm5vdCogZW5hYmxlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYE5PREVTX1dJRFRIYCBiZWhhdmVzIGluIGEgbm9uLU5VTUEgZW52aXJvbm1lbnQgYW5kIHdoYXQgaW1wYWN0LCBpZiBhbnksIHRoZSBhYnNlbmNlIG9mIE5VTUEgaGFzIG9uIHRoYXQgcGFydGljdWxhciBzZXR0aW5nLiBJdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UgdG8gdGhvcm91Z2hseSByZXZpZXcgZXZlcnkgY29uZGl0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBOT0RFU19XSURUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTktXHRcdTAwM2M9IEJJVFNfUEVSX0xPTkcgLSBOUl9QQUdFRkxBR1NcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MDojZGVmaW5lIE5PREVTX1dJRFRIXHRcdE5PREVTX1NISUZUXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjEtI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oLTYzLSNlbHNlXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NjQ6I2RlZmluZSBOT0RFU19XSURUSFx0XHQwXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjUtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MTMKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA1MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGUgY2hhbmdlIHNlZW1zIG1pbmltYWwuIFdoZW4gYCFDT05GSUdfTlVNQWAsIGBOT0RFU19XSURUSGAgaXMgemVybywgYW5kIGNvbnNlcXVlbnRseSwgYE5PREVTX01BU0tgIGlzIGFsc28gemVyby4gVGhlcmVmb3JlLCBgbWVtZGVzY19uaWRgIGlzIHBlcmZvcm1pbmcgYSBiaXR3aXNlIEFORCB3aXRoIHplcm8sIHJlc3VsdGluZyBpbiB6ZXJvIHJlZ2FyZGxlc3MuIERpcmVjdGx5IHJldHVybmluZyB6ZXJvIGlzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHRoZSBleGlzdGluZyBjb2RlLiBTbyB0aGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCB3aGljaCBpcyBhIEtDU0FOIGFzc2VydGlvbi4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMuIExvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvbW16b25lLmhgLCBJIHNlZSBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCBiZWluZyBtb3ZlZCBmcm9tIGBtZW1kZXNjX3pvbmVudW1gIHRvIGJvdGggYHBhZ2Vfem9uZW51bWAgYW5kIGBmb2xpb196b25lbnVtYC4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgYXNzZXJ0aW9uIGlzIG5vdyB3cmFwcGVkIGluIGFuIGAjaWYgWk9ORVNfV0lEVEggIT0gMGAgY29uZGl0aW9uYWwuCgpTaW5jZSBLQ1NBTiBhc3NlcnRpb25zIGFyZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgKm5vdCogdG8gYWZmZWN0IGZ1bmN0aW9uYWwgZXhlY3V0aW9uOyB0aGV5IGFyZSBwdXJlbHkgZm9yIGRldGVjdGluZyBkYXRhIHJhY2VzLiBUaGUgcGF0Y2gmIzM5O3MgcHJpbWFyeSBmdW5jdGlvbiByZW1haW5zIHVuY2hhbmdlZCwgYW5kIHRoaXMgb3B0aW1pemF0aW9uIGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgb25seSBhZGRzIGEgZmV3IEtDU0FOIGNoZWNrcy4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBmdXp6aW5nIHNjb3BlLiBJdCBpcyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBiZWhhdmlvciB0aGF0IHJlcXVpcmVzIGZ1enppbmcuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIGluY29uc2VxdWVudGlhbCwgYW5kIHRoZSBhZGRpdGlvbnMgYXJlIHB1cmVseSBmb3IgS0NTQU4gZGF0YS1yYWNlIGRldGVjdGlvbi4KYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjE3Ljg4ODczNDMzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODA0MDg4NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzoxNy44ODg3Mzk4MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjUzMTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYwZWY4MmY3MjI0MzJkZjg0ZDQxMmYxNTcwYzNjNTQ0NWFhYzFiMzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc3MmJkMWZjNmZlNzA3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0yMjk0LDE1ICsyMjk0LDM2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWRlc2NfbmlkKG1lbWRlc2NfZmxhZ3NfdCBtZGYpXFxuIH1cXG4gI2VuZGlmXFxuIFxcbisjaWZkZWYgQ09ORklHX05VTUFcXG4gc3RhdGljIGlubGluZSBpbnQgcGFnZV90b19uaWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLVxcdTAwM2VmbGFncyk7XFxuK1xcdGNvbnN0IHN0cnVjdCBwYWdlICpwID0gUEZfUE9JU09ORURfQ0hFQ0socGFnZSk7XFxuK1xcbisjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcXG4rXFx0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHAtXFx1MDAzZWZsYWdzLCBOT0RFU19NQVNLIFxcdTAwM2NcXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xcbisjZW5kaWZcXG4rXFx0cmV0dXJuIG1lbWRlc2NfbmlkKHAtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4rI2lmbmRlZiBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTXFxuK1xcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmb2xpby1cXHUwMDNlZmxhZ3MsXFxuK1xcdFxcdFxcdCAgICAgIE5PREVTX01BU0sgXFx1MDAzY1xcdTAwM2MgTk9ERVNfUEdTSElGVCk7XFxuKyNlbmRpZlxcbiBcXHRyZXR1cm4gbWVtZGVzY19uaWQoZm9saW8tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbisjZWxzZVxcbitzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rI2VuZGlmXFxuIFxcbiAjaWZkZWYgQ09ORklHX05VTUFfQkFMQU5DSU5HXFxuIC8qIHBhZ2UgYWNjZXNzIHRpbWUgYml0cyBuZWVkcyB0byBob2xkIGF0IGxlYXN0IDQgc2Vjb25kcyAqL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbmluZGV4IGNhMjcxMjE4NzE0NzVjLi4xYjQzMzYwOTgxMTNmMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbkBAIC0xMjc0LDE3ICsxMjc0LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB6b25lX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCB6b25lICp6b25lKVxcbiBcXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBtZW1kZXNjX3pvbmVudW0obWVtZGVzY19mbGFnc190IGZsYWdzKVxcbiB7XFxuLVxcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmbGFncy5mLCBaT05FU19NQVNLIFxcdTAwM2NcXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xcbiBcXHRyZXR1cm4gKGZsYWdzLmYgXFx1MDAzZVxcdTAwM2UgWk9ORVNfUEdTSElGVCkgXFx1MDAyNiBaT05FU19NQVNLO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIGVudW0gem9uZV90eXBlIHBhZ2Vfem9uZW51bShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4ge1xcbisjaWYgWk9ORVNfV0lEVEggIT0gMFxcbitcXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMocGFnZS1cXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXFx1MDAzY1xcdTAwM2MgWk9ORVNfUEdTSElGVCk7XFxuKyNlbmRpZlxcbiBcXHRyZXR1cm4gbWVtZGVzY196b25lbnVtKHBhZ2UtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBmb2xpb196b25lbnVtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4rI2lmIFpPTkVTX1dJRFRIICE9IDBcXG4rXFx0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKGZvbGlvLVxcdTAwM2VmbGFncywgWk9ORVNfTUFTSyBcXHUwMDNjXFx1MDAzYyBaT05FU19QR1NISUZUKTtcXG4rI2VuZGlmXFxuIFxcdHJldHVybiBtZW1kZXNjX3pvbmVudW0oZm9saW8tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MTguMjc2MDQ0MTU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQxNjc3MTIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIEtDU0FOIGFzc2VydGlvbnMgKEFTU0VSVF9FWENMVVNJVkVfQklUUykgYW5kIHRyaXZpYWxseSBvcHRpbWl6ZXMgcGFnZV90b19uaWQgYW5kIGZvbGlvX25pZCB0byByZXR1cm4gMCB3aGVuIENPTkZJR19OVU1BIGlzIGRpc2FibGVkLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MGVmODJmNzIyNDMyZGY4NGQ0MTJmMTU3MGMzYzU0NDVhYWMxYjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MTc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43NzJiZDFmYzZmZTcwNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMjI5NCwxNSArMjI5NCwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxuIH1cbiAjZW5kaWZcbiBcbisjaWZkZWYgQ09ORklHX05VTUFcbiBzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbWVtZGVzY19uaWQoUEZfUE9JU09ORURfQ0hFQ0socGFnZSktXHUwMDNlZmxhZ3MpO1xuK1x0Y29uc3Qgc3RydWN0IHBhZ2UgKnAgPSBQRl9QT0lTT05FRF9DSEVDSyhwYWdlKTtcbitcbisjaWZuZGVmIE5PREVfTk9UX0lOX1BBR0VfRkxBR1NcbitcdEFTU0VSVF9FWENMVVNJVkVfQklUUyhwLVx1MDAzZWZsYWdzLCBOT0RFU19NQVNLIFx1MDAzY1x1MDAzYyBOT0RFU19QR1NISUZUKTtcbisjZW5kaWZcbitcdHJldHVybiBtZW1kZXNjX25pZChwLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuKyNpZm5kZWYgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU1xuK1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKGZvbGlvLVx1MDAzZWZsYWdzLFxuK1x0XHRcdCAgICAgIE5PREVTX01BU0sgXHUwMDNjXHUwMDNjIE5PREVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2NfbmlkKGZvbGlvLVx1MDAzZWZsYWdzKTtcbiB9XG4rI2Vsc2VcbitzdGF0aWMgaW5saW5lIGludCBwYWdlX3RvX25pZChjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgZm9saW9fbmlkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuKyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfTlVNQV9CQUxBTkNJTkdcbiAvKiBwYWdlIGFjY2VzcyB0aW1lIGJpdHMgbmVlZHMgdG8gaG9sZCBhdCBsZWFzdCA0IHNlY29uZHMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggY2EyNzEyMTg3MTQ3NWMuLjFiNDMzNjA5ODExM2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTEyNzQsMTcgKzEyNzQsMjIgQEAgc3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXG4gXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBtZW1kZXNjX3pvbmVudW0obWVtZGVzY19mbGFnc190IGZsYWdzKVxuIHtcbi1cdEFTU0VSVF9FWENMVVNJVkVfQklUUyhmbGFncy5mLCBaT05FU19NQVNLIFx1MDAzY1x1MDAzYyBaT05FU19QR1NISUZUKTtcbiBcdHJldHVybiAoZmxhZ3MuZiBcdTAwM2VcdTAwM2UgWk9ORVNfUEdTSElGVCkgXHUwMDI2IFpPTkVTX01BU0s7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgZW51bSB6b25lX3R5cGUgcGFnZV96b25lbnVtKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKVxuIHtcbisjaWYgWk9ORVNfV0lEVEggIT0gMFxuK1x0QVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHBhZ2UtXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2Nfem9uZW51bShwYWdlLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBlbnVtIHpvbmVfdHlwZSBmb2xpb196b25lbnVtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuKyNpZiBaT05FU19XSURUSCAhPSAwXG4rXHRBU1NFUlRfRVhDTFVTSVZFX0JJVFMoZm9saW8tXHUwMDNlZmxhZ3MsIFpPTkVTX01BU0sgXHUwMDNjXHUwMDNjIFpPTkVTX1BHU0hJRlQpO1xuKyNlbmRpZlxuIFx0cmV0dXJuIG1lbWRlc2Nfem9uZW51bShmb2xpby1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MTguMjc2MDQ1Njk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNDE5MDAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQncyB0b3VjaGluZyBzb21lIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgaGVhZGVycy4gU3BlY2lmaWNhbGx5LCBgaW5jbHVkZS9saW51eC9tbS5oYCBhbmQgYGluY2x1ZGUvbGludXgvbW16b25lLmhgLiBGaXJzdCBpbXByZXNzaW9uOiBpdCdzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGAjaWZkZWYgQ09ORklHX05VTUFgIGFyb3VuZCB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgZnVuY3Rpb25zIHdpdGhpbiBgbW0uaGAuIFRoYXQncyBhIE5VTUEtcmVsYXRlZCBtb2RpZmljYXRpb24sIG1ha2VzIHNlbnNlLiBJdCBhbHNvIHNlZW1zIHRvIGJlIHBsYXlpbmcgd2l0aCBgTk9ERV9OT1RfSU5fUEFHRV9GTEFHU2AgaW4gcmVsYXRpb24gdG8gYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgZm9yIHRoZSBgcGFnZS1cdTAwM2VmbGFnc2AgYW5kIGBmb2xpby1cdTAwM2VmbGFnc2AgZmllbGRzLiBcblxuSG9sZCBvbiBhIHNlY29uZC4uLml0J3MgKmFsc28qIGFkZGluZyBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCB0byB0aGUgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgY2FsbHMgaW4gYG1tLmhgISBJbnRlcmVzdGluZy4gQW5kIG5vdyBJJ20gc2VlaW5nIGEgY29uZGl0aW9uYWwgYXJvdW5kIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGZvciBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gIGluIGBtbXpvbmUuaGAsIHNwZWNpZmljYWxseSB1c2luZyBgI2lmIFpPTkVTX1dJRFRIICE9IDBgLiBTbyB0aGlzIGlzIGFib3V0IHpvbmUgc2VsZWN0aW9uLCBhdCBsZWFzdCBpbiBzb21lIGNhc2VzLiBUaGVuIHRoZXJlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBzYW1lIG1hY3JvIGZyb20gYG1lbWRlc2Nfem9uZW51bWAuXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGxvb2sgYXQgd2hhdCBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCBhY3R1YWxseSAqZG9lcyouIE15IGd1ZXNzIGlzIHRoYXQgaXQgaXMgYW4gYXNzZXJ0aW9uIG1hY3JvLCBsaWtlbHkgcmVsYXRlZCB0byBzb21ldGhpbmcgbGlrZSBLQ1NBTiBvciBhIGRlYnVnZ2luZyBjaGVjayBkZXNpZ25lZCB0byBlbnN1cmUgY2VydGFpbiBiaXRmaWVsZHMgaW4gdGhlIGBwYWdlYCBhbmQgYGZvbGlvYCBzdHJ1Y3R1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFxuXG5Pa2F5LCBsZXQncyBjb25maXJtIG15IGFzc3VtcHRpb24gb24gaXRzIGRlZmluaXRpb24uIEkgc2VlbSB0byByZWNhbGwgc2VlaW5nIGl0IGluIG9uZSBvZiB0aGUgS0NTQU4gaGVhZGVycy4gKkFoYSosIGZvdW5kIGl0LiBJdOKAmXMgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaGAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTYCB0byBzZWUgd2hlcmUgZWxzZSBpdCdzIHVzZWQuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBpbnRlbmRlZCBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWxseSBleHBvc2UgYW55IHNpZGUgZWZmZWN0cy4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBjYW4gZ2l2ZSB0aGlzIGEgZ3JlZW4gbGlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzoyNC4yMDAyMzgxODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MDA0OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmg9MjMyPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2tjc2FuX2Rpc2FibGVfY3VycmVudCh2b2lkKSB7IH1cXG4tLVxcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmgtNTI0LSAqL1xcbmluY2x1ZGUvbGludXgva2NzYW4tY2hlY2tzLmg6NTI1OiNkZWZpbmUgQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKHZhciwgbWFzaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuaW5jbHVkZS9saW51eC9rY3Nhbi1jaGVja3MuaC01MjYtXFx0ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjI2Ljk3MDI5NzQ1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTIxNzQwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLQ1NBTiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCBhIEtDU0FOIG1hY3JvLiBJJ20gc2VlaW5nIHRoYXQgaXQncyBiZWluZyB1c2VkIHRvIG1vZGlmeSBpbmxpbmUgZnVuY3Rpb25zIHdpdGhpbiBoZWFkZXIgZmlsZXMuIFRoZSBwYXRjaCBpcyBhZGRpbmcgb3Igc2hpZnRpbmcgdGhlc2UgYXNzZXJ0aW9ucyBhcm91bmQsIGFuZCBJIGFsc28gbm90aWNlIGAjaWZkZWYgQ09ORklHX05VTUFgIGJlaW5nIGFkZGVkIGFyb3VuZCBgcGFnZV90b19uaWRgIGFuZCBgZm9saW9fbmlkYC4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcuXG5cbk5vdywgbGV0IG1lIHRoaW5rLi4uIExvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvbW0uaGAsIGl0IHNlZW1zIGBwYWdlX3RvX25pZGAgYW5kIGBmb2xpb19uaWRgICpkaWRuJ3QqIGhhdmUgdGhhdCBgI2lmZGVmIENPTkZJR19OVU1BYCBjb25kaXRpb25hbCBwcmV2aW91c2x5LiBTbywgd2l0aG91dCBOVU1BIGVuYWJsZWQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IHNpbXBseSByZXR1cm5pbmcgMC4gQmVmb3JlLCB3aXRob3V0IGBDT05GSUdfTlVNQWAsIHRoZXkgd2VyZSByZXR1cm5pbmcgYG1lbWRlc2NfbmlkKFBGX1BPSVNPTkVEX0NIRUNLKHBhZ2UpLVx1MDAzZWZsYWdzKWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY2hhbmdlLlxuXG5JZiBgQ09ORklHX05VTUFgIGlzbid0IHNldCwgd2hhdCB3YXMgdGhlIGJlaGF2aW9yIG9mIGBtZW1kZXNjX25pZGA/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBJIG5lZWQgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBvZiBgbWVtZGVzY19uaWRgIGluIGBpbmNsdWRlL2xpbnV4L21tLmhgIHRvIHNlZSBob3cgaXQgd29ya2VkIGluIHRoZSBhYnNlbmNlIG9mIE5VTUEgYW5kIGhvdyB0aGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBub3cuIEknbGwgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MzEuMzYyNDczNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwOTgwNTU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MjI4OT1pbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XFxuaW5jbHVkZS9saW51eC9tbS5oLTIyOTAtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21tLmg6MjI5MTpzdGF0aWMgaW5saW5lIGludCBtZW1kZXNjX25pZChtZW1kZXNjX2ZsYWdzX3QgbWRmKVxcbmluY2x1ZGUvbGludXgvbW0uaC0yMjkyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6MzMuNTcyMjg1MDY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODg0NjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsJ3MgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGZvY3VzaW5nIG9uIHVuZGVyc3RhbmRpbmcgYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgTGludXgga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQuIE15IGluaXRpYWwgdGFyZ2V0IGlzIHRoZSBgaW5jbHVkZS9saW51eC9tbS5oYCBoZWFkZXIgZmlsZSwgYW5kIEknbSB6ZXJvaW5nIGluIG9uIHRoZSB2aWNpbml0eSBvZiBsaW5lIDIyODkuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cnlpbmcgdG8gZ3JvayBzb21lIGZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiwgcGFnZSBtYW5hZ2VtZW50LCB2aXJ0dWFsIG1lbW9yeSBhcmVhcyAoVk1BcyksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGV2ZW4gbW9yZSBncmFudWxhciBsaWtlIHBhZ2UgZmxhZ3Mgb3IgTlVNQSBub2RlIGludGVyYWN0aW9ucywganVkZ2luZyBieSB0aGUgdHlwaWNhbCBjb250ZW50IGZvdW5kIGFyb3VuZCB0aGF0IGxpbmUuIFRoZSBzcGVjaWZpYyBjb250ZXh0IHdpdGhpbiBgbW0uaGAgd2lsbCBpbmZvcm0gd2hhdCdzIGJlaW5nIGxvb2tlZCBhdCwgYnV0IHRoZSByYW5nZSBpbXBsaWVzIGEgc2lnbmlmaWNhbnQgZWxlbWVudCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIEkgY2FuIHVuZWFydGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoxNzozNi45MDExMzMwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L21tLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjI4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjI4MDpcXHQgKiBXZSBvbmx5IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGZvciB0d28gY29tYmluYWJsZVxcbjIyODE6XFx0ICogcGFnZXMgaW4gYSB6b25lLlxcbjIyODI6XFx0ICovXFxuMjI4MzpcXHRzdGF0aWMgaW5saW5lIGludCBwYWdlX3pvbmVfaWQoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuMjI4NDpcXHR7XFxuMjI4NTpcXHRcXHRyZXR1cm4gKHBhZ2UtXFx1MDAzZWZsYWdzLmYgXFx1MDAzZVxcdTAwM2UgWk9ORUlEX1BHU0hJRlQpIFxcdTAwMjYgWk9ORUlEX01BU0s7XFxuMjI4NjpcXHR9XFxuMjI4NzpcXHRcXG4yMjg4OlxcdCNpZmRlZiBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTXFxuMjI4OTpcXHRpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZik7XFxuMjI5MDpcXHQjZWxzZVxcbjIyOTE6XFx0c3RhdGljIGlubGluZSBpbnQgbWVtZGVzY19uaWQobWVtZGVzY19mbGFnc190IG1kZilcXG4yMjkyOlxcdHtcXG4yMjkzOlxcdFxcdHJldHVybiAobWRmLmYgXFx1MDAzZVxcdTAwM2UgTk9ERVNfUEdTSElGVCkgXFx1MDAyNiBOT0RFU19NQVNLO1xcbjIyOTQ6XFx0fVxcbjIyOTU6XFx0I2VuZGlmXFxuMjI5NjpcXHRcXG4yMjk3OlxcdCNpZmRlZiBDT05GSUdfTlVNQVxcbjIyOTg6XFx0c3RhdGljIGlubGluZSBpbnQgcGFnZV90b19uaWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuMjI5OTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjM2LjkwMTU5NDIzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NDA3OTI1NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVU1BIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gU28sIGBtZW1kZXNjX25pZGAgaXMgY2FsY3VsYXRlZCB1c2luZyBiaXR3aXNlIG9wZXJhdGlvbnMgb24gcGFnZSBmbGFncywgc3BlY2lmaWNhbGx5IHdpdGggYE5PREVTX1BHU0hJRlRgIGFuZCBgTk9ERVNfTUFTS2AsIGlmIGBOT0RFX05PVF9JTl9QQUdFX0ZMQUdTYCBpc24ndCBzZXQuICBOb3csIHRoZSBwYXRjaCBjaGFuZ2VzIGBwYWdlX3RvX25pZGAgYW5kIGBmb2xpb19uaWRgIHRvIHJldHVybiAwIGRpcmVjdGx5IHdoZW4gYENPTkZJR19OVU1BYCBpcyAqbm90KiBlbmFibGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgYWJvdXQgb3B0aW1pemluZyBhIGJpdCwgcGVyaGFwcyBieSBhdm9pZGluZyB0aGUgYml0d2lzZSBvcGVyYXRpb25zLiBCdXQgaWYgYENPTkZJR19OVU1BYCBpcyBvZmYsIGBOT0RFU19QR1NISUZUYCBhbmQgYE5PREVTX01BU0tgIGFyZSBsaWtlbHkgdG8gYmUgemVybyBhbnl3YXksIG1lYW5pbmcgYG1lbWRlc2NfbmlkYCAqd291bGQqIGFsc28gcmV0dXJuIHplcm8uXG5cblRoZSByZWFsIGtpY2tlciBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYEFTU0VSVF9FWENMVVNJVkVfQklUU2AgdG8gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gd2l0aCBgI2lmZGVmIENPTkZJR19OVU1BYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByaW1hcmlseSBhYm91dCBhdm9pZGluZyBhbiBhc3NlcnRpb24gZmFpbHVyZSBvbiBhIHplcm8gYE5PREVTX01BU0tgLiBCZWNhdXNlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBhc3NlcnQgZXhjbHVzaXZlIGJpdHMgd2hlbiB0aGUgbWFzayBpcyB6ZXJvLlxuXG5UaGUgcGF0Y2gncyBpbnRlbnQgc2VlbXMgdG8gYmUgdG8gYWRkIEtDU0FOIGFzc2VydGlvbnMgYW5kIG9wdGltaXplIGEgbGl0dGxlIGZvciB0aGUgYCFDT05GSUdfTlVNQWAgY2FzZS4gIEFuZCBob25lc3RseSwgYHBhZ2VfdG9fbmlkYCBhbmQgYGZvbGlvX25pZGAgcmV0dXJuaW5nIDAgd2hlbiBOVU1BIGlzbid0IGVuYWJsZWQgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGFuZCBmdW5jdGlvbmFsbHkgaWRlbnRpY2FsIHRvIGJlZm9yZSwgc2luY2UgYWxsIG1lbW9yeSB3b3VsZCBiZSBvbiBub2RlIDAuICBFc3NlbnRpYWxseSwgaXQncyBhIGNvZGUgY2xlYW51cCB3aXRoIGEgS0NTQU4gY2hlY2sgdGhyb3duIGluLlxuXG5JcyBpdCB3b3J0aCBmdXp6aW5nPyAgTm8uIEl0J3MgcmVhbGx5IGp1c3QgS0NTQU4gYXNzZXJ0aW9ucyBhbmQgYSBtaW5vciBvcHRpbWl6YXRpb24gdGhhdCdzIGZ1bmN0aW9uYWxseSBuZXV0cmFsLiBJIHNob3VsZCBjaGVjayB0aG91Z2gsIHRvIG1ha2Ugc3VyZSwgdGhhdCBgTk9ERVNfTUFTS2AgaXMgaW5kZWVkIHplcm8gd2hlbiBgIUNPTkZJR19OVU1BYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjQ0Ljg0MjM4OTQzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5NjkzMDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgTk9ERVNfTUFTS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tem9uZS5oPTEyMjQ9c3RhdGljIGlubGluZSBib29sIHpvbmVfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNjgtI2RlZmluZSBaT05FU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgWk9ORVNfV0lEVEgpIC0gMSlcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjEyNjk6I2RlZmluZSBOT0RFU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgTk9ERVNfV0lEVEgpIC0gMSlcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTEyNzAtI2RlZmluZSBTRUNUSU9OU19NQVNLXFx0XFx0KCgxVUwgXFx1MDAzY1xcdTAwM2MgU0VDVElPTlNfV0lEVEgpIC0gMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NDcuMjM5MzI2NjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY5MTQ2ODkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBOVU1BIENvbmZpZ3VyYXRpb24gYW5kIE5vZGUgV2lkdGgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBhIG1lbnRhbCBmbGFnIGlmIHlvdSB3aWxsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgTk9ERVNfV0lEVEhgIGFuZCBgIUNPTkZJR19OVU1BYC4gSXQncyBhIGtleSBjb25kaXRpb25hbCwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBgTk9ERVNfV0lEVEhgIGhhcyB0byBiZSBwcmVjaXNlLiBCYXNpY2FsbHksIEknbSByZW1pbmRpbmcgbXlzZWxmIHRvIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIHZhcmlhYmxlcyB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYENPTkZJR19OVU1BYCBpcyAqbm90KiBlbmFibGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgTk9ERVNfV0lEVEhgIGJlaGF2ZXMgaW4gYSBub24tTlVNQSBlbnZpcm9ubWVudCBhbmQgd2hhdCBpbXBhY3QsIGlmIGFueSwgdGhlIGFic2VuY2Ugb2YgTlVNQSBoYXMgb24gdGhhdCBwYXJ0aWN1bGFyIHNldHRpbmcuIEl0J3MgYSBnb29kIHByYWN0aWNlIHRvIHRob3JvdWdobHkgcmV2aWV3IGV2ZXJ5IGNvbmRpdGlvbmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDI4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NDkuOTMwNzk4NDMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1NTE3OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBOT0RFU19XSURUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTktXFx0XFx1MDAzYz0gQklUU19QRVJfTE9ORyAtIE5SX1BBR0VGTEFHU1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MDojZGVmaW5lIE5PREVTX1dJRFRIXFx0XFx0Tk9ERVNfU0hJRlRcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjEtI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjMtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NjQ6I2RlZmluZSBOT0RFU19XSURUSFxcdFxcdDBcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjUtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjE3OjUxLjkzNjMyMTYyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzU2NDQ4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGUgY2hhbmdlIHNlZW1zIG1pbmltYWwuIFdoZW4gYCFDT05GSUdfTlVNQWAsIGBOT0RFU19XSURUSGAgaXMgemVybywgYW5kIGNvbnNlcXVlbnRseSwgYE5PREVTX01BU0tgIGlzIGFsc28gemVyby4gVGhlcmVmb3JlLCBgbWVtZGVzY19uaWRgIGlzIHBlcmZvcm1pbmcgYSBiaXR3aXNlIEFORCB3aXRoIHplcm8sIHJlc3VsdGluZyBpbiB6ZXJvIHJlZ2FyZGxlc3MuIERpcmVjdGx5IHJldHVybmluZyB6ZXJvIGlzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHRoZSBleGlzdGluZyBjb2RlLiBTbyB0aGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgLCB3aGljaCBpcyBhIEtDU0FOIGFzc2VydGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTG9va2luZyBhdCBgaW5jbHVkZS9saW51eC9tbXpvbmUuaGAsIEkgc2VlIGBBU1NFUlRfRVhDTFVTSVZFX0JJVFNgIGJlaW5nIG1vdmVkIGZyb20gYG1lbWRlc2Nfem9uZW51bWAgdG8gYm90aCBgcGFnZV96b25lbnVtYCBhbmQgYGZvbGlvX3pvbmVudW1gLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBhc3NlcnRpb24gaXMgbm93IHdyYXBwZWQgaW4gYW4gYCNpZiBaT05FU19XSURUSCAhPSAwYCBjb25kaXRpb25hbC5cblxuU2luY2UgS0NTQU4gYXNzZXJ0aW9ucyBhcmUgc3BlY2lmaWNhbGx5IGRlc2lnbmVkICpub3QqIHRvIGFmZmVjdCBmdW5jdGlvbmFsIGV4ZWN1dGlvbjsgdGhleSBhcmUgcHVyZWx5IGZvciBkZXRlY3RpbmcgZGF0YSByYWNlcy4gVGhlIHBhdGNoJ3MgcHJpbWFyeSBmdW5jdGlvbiByZW1haW5zIHVuY2hhbmdlZCwgYW5kIHRoaXMgb3B0aW1pemF0aW9uIGRvZXMgbm90IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgb25seSBhZGRzIGEgZmV3IEtDU0FOIGNoZWNrcy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGZ1enppbmcgc2NvcGUuIEl0IGlzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGJlaGF2aW9yIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgaW5jb25zZXF1ZW50aWFsLCBhbmQgdGhlIGFkZGl0aW9ucyBhcmUgcHVyZWx5IGZvciBLQ1NBTiBkYXRhLXJhY2UgZGV0ZWN0aW9uLlxuYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTMsIk91dHB1dFRva2VucyI6ODMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MTc6NTkuNjkyNzczMjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgS0NTQU4gYXNzZXJ0aW9ucyAoQVNTRVJUX0VYQ0xVU0lWRV9CSVRTKSBhbmQgdHJpdmlhbGx5IG9wdGltaXplcyBwYWdlX3RvX25pZCBhbmQgZm9saW9fbmlkIHRvIHJldHVybiAwIHdoZW4gQ09ORklHX05VTUEgaXMgZGlzYWJsZWQuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdxcpp[1] Phase: Running StartedAt: 2026-06-25 08:18:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdxcpp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-25 08:18:24 +0000 UTC FinishedAt: 2026-06-25 08:18:45 +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,}