Name: series-workflown7lft Phase: Failed StartedAt: 2026-06-24 11:50:05 +0000 UTC FinishedAt: 2026-06-24 12:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7lft[0] Phase: Succeeded StartedAt: 2026-06-24 11:50:05 +0000 UTC FinishedAt: 2026-06-24 12:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7lft[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 11:50:05 +0000 UTC FinishedAt: 2026-06-24 12:17:23 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY1MjA4Njk1NTljYWI5NTBiZmM0NWM3MjYxMjYwZWFlZWJhNjhjMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxMjoxNjoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcbmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXG5AQCAtMTk5NSwxMiAmIzQzOzE5OTUsMTIgQEAgc3RhdGljIGludCBmbWFuX2luaXQoc3RydWN0IGZtYW4gKmZtYW4pXG4gXG4gXHQvKiBJbml0IEtleUdlbiAqL1xuIFx0Zm1hbi1cdTAwM2VrZXlnZW4gPSBrZXlnZW5faW5pdChmbWFuLVx1MDAzZWtnX3JlZ3MpO1xuLVx0aWYgKCFmbWFuLVx1MDAzZWtleWdlbilcbiYjNDM7XHRpZiAoIWZtYW4tXHUwMDNla2V5Z2VuKSB7XG4mIzQzO1x0XHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXG4tXHRlcnIgPSBlbmFibGUoZm1hbiwgY2ZnKTtcbi1cdGlmIChlcnIgIT0gMClcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlbmFibGUoZm1hbiwgY2ZnKTtcbiBcbiBcdGVuYWJsZV90aW1lX3N0YW1wKGZtYW4pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjUyMDg2OTU1OWNhYjk1MGJmYzQ1YzcyNjEyNjBlYWVlYmE2OGMwZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDEyOjE2OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jCmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYwpAQCAtMTk5NSwxMiAmIzQzOzE5OTUsMTIgQEAgc3RhdGljIGludCBmbWFuX2luaXQoc3RydWN0IGZtYW4gKmZtYW4pCiAKIAkvKiBJbml0IEtleUdlbiAqLwogCWZtYW4tJmd0O2tleWdlbiA9IGtleWdlbl9pbml0KGZtYW4tJmd0O2tnX3JlZ3MpOwotCWlmICghZm1hbi0mZ3Q7a2V5Z2VuKQomIzQzOwlpZiAoIWZtYW4tJmd0O2tleWdlbikgewomIzQzOwkJZnJlZV9pbml0X3Jlc291cmNlcyhmbWFuKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAotCWVyciA9IGVuYWJsZShmbWFuLCBjZmcpOwotCWlmIChlcnIgIT0gMCkKLQkJcmV0dXJuIGVycjsKJiM0MzsJZW5hYmxlKGZtYW4sIGNmZyk7CiAKIAllbmFibGVfdGltZV9zdGFtcChmbWFuKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBGTWFuIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY2AuIEl0JiMzOTtzIHRvdWNoaW5nIHRoZSBgZm1hbl9pbml0YCBmdW5jdGlvbiwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBhIGNhbGwgdG8gYGZyZWVfaW5pdF9yZXNvdXJjZXMoZm1hbilgIGlmIGBrZXlnZW5faW5pdGAgZmFpbHMuIFRoYXQmIzM5O3MgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZSDigJMgbWFraW5nIHN1cmUgd2UgY2xlYW4gdXAgcHJvcGVybHkgb24gZXJyb3IuICBJdCBhbHNvIHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIG5vdyAqaWdub3JpbmcqIHRoZSByZXR1cm4gdmFsdWUgb2YgYGVuYWJsZShmbWFuLCBjZmcpYC4gVGhhdCBmZWVscyBhIGJpdOKApnVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoYXQuIElzIGl0IGRlbGliZXJhdGU/IElzIGl0IHNhZmU/CgpUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlzIHdoZXRoZXIgdGhpcyBtb2RpZmljYXRpb24gZXZlbiBtYXR0ZXJzIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50cy4gVGhpcyBpcyBhIEZyZWVzY2FsZSBGTWFuIGRyaXZlci4gIFRoZSBGcmVlc2NhbGUgRk1hbiBpcyB1c3VhbGx5IGhhcmR3YXJlIHNwZWNpZmljLCBmb3VuZCBpbiBGcmVlc2NhbGUgUW9ySVEgU29DcywgYm90aCBQb3dlclBDIGFuZCBBUk0uIElzIHRoaXMgZXZlbiByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyAgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IG9mdGVuLCB0aGVzZSBzb3J0cyBvZiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGFyZSAqdmVyeSogZGlmZmljdWx0IHRvIGVtdWxhdGUgY29tcGxldGVseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiAgU28gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gcHJvcGVybHkgdGVzdCB0aGlzIG9yIGlmIHdlIHdpbGwgbmVlZCB0byBjcmVhdGUgYSBzcGVjaWFsIGVudmlyb25tZW50LiAgCgpJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgRk1hbiB0byBzZWUgaWYgaXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3RpdmUgaW4gdGhlIFZNcyB3ZSB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9GTUFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjI6Y29uZmlnIEZTTF9GTUFOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGTWFuIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTI1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBLY29uZmlnIFJldmlldyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uICYjMzQ7TGV0JiMzOTtzIHJlYWQgdGhlIEtjb25maWcuJiMzNDsgVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCwgaXNuJiMzOTt0IGl0PyBCZWZvcmUgYW55IHNlcmlvdXMgd29yayBiZWdpbnMsIHlvdSAqYWx3YXlzKiBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgYXJlIHdlIGV2ZW4gc3RhcnRpbmcgZnJvbT8gV2hhdCBhcmUgdGhlIGtleSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIGRlZmluZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyBJIHNob3VsZCBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZj8mIzM0OwoKTXkgbWluZCYjMzk7cyBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBwb3NzaWJpbGl0aWVzLiBJJiMzOTttIHdvbmRlcmluZzoKCiogICBJcyB0aGlzIGEgZnJlc2ggS2NvbmZpZywgb3Igb25lIEkmIzM5O20gZmFtaWxpYXIgd2l0aD8gVGhhdCBpbmZvcm1zIG15IGFwcHJvYWNoLiBJZiBJIGtub3cgaXQsIEkmIzM5O2xsIGdvIGZvciBxdWljayBzcGVjaWZpYyBjaGVja3MgZm9yIGNlcnRhaW4gdmFyaWFibGVzLgoqICAgQXJlIHRoZXJlIGFueSBpbmNsdWRlIGRpcmVjdGl2ZXM/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmdhbml6YXRpb25hbCBzdHJ1Y3R1cmUgaW1tZWRpYXRlbHksIGFuZCBkZXRlcm1pbmUgd2hldGhlciBJIG5lZWQgdG8gdHJhY2sgZG93biBvdGhlciBLY29uZmlnIGZpbGVzLgoqICAgQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgZGVmaW5lZD8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgQ1BVLCBib2FyZCwgb3IgYnVpbGQgY29uZmlndXJhdGlvbj8gSSB3YW50IHRvIGNvbnRleHR1YWxpemUgdGhpcyBpbW1lZGlhdGVseS4KKiAgIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIG9yIGZlYXR1cmVzLCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyBpcyBhYm91dCB0byBraWNrIGluIG15IGludGVybmFsIGNvbmZsaWN0IHJlc29sdXRpb24gY29kZSBmb3IgcG90ZW50aWFsIHByb2JsZW1zLgoqICAgQW0gSSBsb29raW5nIHRvIGNoYW5nZSBzb21ldGhpbmc/IE9yIHVuZGVyc3RhbmQgd2hhdCBpcyBhdmFpbGFibGUuIFRoYXQgaGVscHMgdG8gZm9jdXMgbXkgaW5pdGlhbCByZXZpZXcuCgpTbywgSSYjMzk7bSBtZW50YWxseSBza2V0Y2hpbmcgb3V0IGEgcGxhbi4gSXQmIzM5O3MgdGltZSB0byBmaW5kIHRoZSBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRlNMX0ZNQU5cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0ZNYW4gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBGU0xfU09DIHx8IEFSQ0hfTEFZRVJTQ0FQRSB8fCBDT01QSUxFX1RFU1RcbiAgIDU6XHRcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuICAgNjpcdFx0c2VsZWN0IFBIWUxJTktcbiAgIDc6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuICAgODpcdFx0c2VsZWN0IENSQzMyXG4gICA5Olx0XHRkZWZhdWx0IG5cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdFx0RnJlZXNjYWxlIERhdGEtUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIEZyYW1lIE1hbmFnZXJcbiAgMTI6XHRcdFx0KEZNYW4pIHN1cHBvcnRcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgRFBBQV9FUlJBVFVNX0EwNTAzODVcbiAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcdGRlcGVuZHMgb24gQVJNNjQgXHUwMDI2XHUwMDI2IEZTTF9EUEFBXG4gIDE3Olx0XHRkZWZhdWx0IHlcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdFx0RFBBQSBGTWFuIGVycmF0dW0gQTA1MDM4NSBzb2Z0d2FyZSB3b3JrYXJvdW5kIGltcGxlbWVudGF0aW9uOlxuICAyMDpcdFx0XHRhbGlnbiBidWZmZXJzLCBkYXRhIHN0YXJ0LCBTRyBmcmFnbWVudCBsZW5ndGggdG8gYXZvaWQgRk1hbiBETUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnJlZXNjYWxlIEZNYW4gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpdCYjMzk7cyBjb250aW5nZW50IG9uIGEgZmV3IHNwZWNpZmljIGRlZmluZXM6IGBGU0xfU09DYCwgYEFSQ0hfTEFZRVJTQ0FQRWAsIG9yIGBDT01QSUxFX1RFU1RgLiBDbGVhcmx5LCBpdCYjMzk7cyBhIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgRnJlZXNjYWxlIERhdGEtUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIEZyYW1lIE1hbmFnZXIg4oCTIEZNYW4uIFRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgYWx3YXlzIHBvcHMgaW50byBteSBoZWFkIHdpdGggdGhlc2UgaGFyZHdhcmUgZHJpdmVycyBpczogaXMgdGhlcmUgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBBbmQsIGFzIEkgc3VzcGVjdGVkLCB0aGUgYW5zd2VyIGlzIHVzdWFsbHkgbm8uIFRoaXMgaXMgYSBzcGVjaWZpYyBTeXN0ZW0tb24tYS1DaGlwIChTb0MpIGhhcmR3YXJlIGJsb2NrOyB5b3UmIzM5O3JlIG5vdCBnb2luZyB0byBnZXQgYSBnb29kIGVtdWxhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uYWxpdHkgZWFzaWx5LgoKTXkgaW1tZWRpYXRlIGNvbmNsdXNpb24gaXM6IGlmIGl0JiMzOTtzIGEgaGFyZHdhcmUgZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gZGVjZW50IGVtdWxhdGlvbiwgdGhpcyBjb2RlIHBhdGggaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIEl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreSB0byB2YWxpZGF0ZSB3aXRob3V0IHRoZSB0YXJnZXQgaGFyZHdhcmUuIFdhaXQgYSBzZWNvbmQsIHRob3VnaCwgaXMgdGhlcmUgYSBwb3NzaWJpbGl0eSBvZiBpbnN0YW50aWF0aW5nIHRoaXMgdGhpbmcgdmlhIGEgZGV2aWNlIHRyZWUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIGNvdWxkIGFsbG93IHNvbWUgbGV2ZWwgb2YgdGVzdD8gT2theSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGZtYW5fcHJvYmVgIGZ1bmN0aW9uIHRvIGNvbmZpcm0gaWYgdGhpcyBpcyBwb3NzaWJsZS4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZtYW5fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI2ODk9c3RhdGljIHN0cnVjdCBmbWFuICpyZWFkX2R0c19ub2RlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjgyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODI2OnN0YXRpYyBpbnQgZm1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZl9kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjgyNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODgtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI4ODk6XHQucHJvYmUgPSBmbWFuX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTAtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODYzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIFN5emthbGxlciBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbSYjMzk7cyBkZXZpY2UgdHJlZS4gSXQgbmVlZHMgYSBzcGVjaWZpYyBub2RlLCB3aGljaCBpc24mIzM5O3QgdW51c3VhbCwgYnV0IGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHdlIG5lZWQgdG8gY29uc2lkZXIuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdCB1c2luZyBTeXprYWxsZXIuCgpDYW4gd2UgYWN0dWFsbHkgZ2V0IFN5emthbGxlciB0byBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcz8gSSByZWNhbGwgdGhhdCBgc3l6X2Rldl9wbGF0Zm9ybWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGlzIHRoZSB1c3VhbCBtZXRob2QuIFRoZSBjYXZlYXQgaXMgY3J1Y2lhbCwgdGhvdWdoOiB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGEgd2F5IHdoZXJlIGl0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGNyYXNoIGlmIHRoZSBleHBlY3RlZCBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgc3BlY2lmaWNhbGx5IHdpdGggTU1JTyB0aGF0IGNhdXNlcyBlcnJvcnMgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LiBUaGF0JiMzOTtzIGEga2V5IHJlcXVpcmVtZW50LgoKVG8gdW5kZXJzdGFuZCBob3cgdG8gcHJvY2VlZCwgSSBuZWVkIHRvIGFuYWx5emUgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZm1hbl9wcm9iZWAgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3QgaW5zaWdodCBpbnRvIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBTeXprYWxsZXIgY29tcGF0aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODI2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MjY6XHRzdGF0aWMgaW50IGZtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxuMjgyNzpcdHtcbjI4Mjg6XHRcdHN0cnVjdCBmbWFuICpmbWFuO1xuMjgyOTpcdFx0c3RydWN0IGRldmljZSAqZGV2O1xuMjgzMDpcdFx0aW50IGVycjtcbjI4MzE6XHRcbjI4MzI6XHRcdGRldiA9IFx1MDAyNm9mX2Rldi1cdTAwM2VkZXY7XG4yODMzOlx0XG4yODM0Olx0XHRmbWFuID0gcmVhZF9kdHNfbm9kZShvZl9kZXYpO1xuMjgzNTpcdFx0aWYgKElTX0VSUihmbWFuKSlcbjI4MzY6XHRcdFx0cmV0dXJuIFBUUl9FUlIoZm1hbik7XG4yODM3Olx0XG4yODM4Olx0XHRlcnIgPSBmbWFuX2NvbmZpZyhmbWFuKTtcbjI4Mzk6XHRcdGlmIChlcnIpIHtcbjI4NDA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzOiBGTWFuIGNvbmZpZyBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbjI4NDE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yODQyOlx0XHR9XG4yODQzOlx0XG4yODQ0Olx0XHRpZiAoZm1hbl9pbml0KGZtYW4pICE9IDApIHtcbjI4NDU6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzOiBGTWFuIGluaXQgZmFpbGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4yODQ2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjg0NzpcdFx0fVxuMjg0ODpcdFxuMjg0OTpcdFx0aWYgKGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5lcnJfaXJxID09IDApIHtcbjI4NTA6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX0JVU19FUlJPUiwgZmFsc2UpO1xuMjg1MTpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfUkVBRF9FQ0MsIGZhbHNlKTtcbjI4NTI6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX1NZU1RFTV9XUklURV9FQ0MsIGZhbHNlKTtcbjI4NTM6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX0ZNX1dSSVRFX0VDQywgZmFsc2UpO1xuMjg1NDpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfU0lOR0xFX1BPUlRfRUNDLCBmYWxzZSk7XG4yODU1Olx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0ZQTV9TVEFMTF9PTl9UQVNLUywgZmFsc2UpO1xuMjg1NjpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fU0lOR0xFX0VDQywgZmFsc2UpO1xuMjg1NzpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fRE9VQkxFX0VDQywgZmFsc2UpO1xuMjg1ODpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9RTUlfU0lOR0xFX0VDQywgZmFsc2UpO1xuMjg1OTpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9RTUlfRE9VQkxFX0VDQywgZmFsc2UpO1xuMjg2MDpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbixcbjI4NjE6XHRcdFx0XHRcdCAgIEZNQU5fRVhfUU1JX0RFUV9GUk9NX1VOS05PV05fUE9SVElELCBmYWxzZSk7XG4yODYyOlx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9MSVNUX1JBTV9FQ0MsIGZhbHNlKTtcbjI4NjM6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfQk1JX1NUT1JBR0VfUFJPRklMRV9FQ0MsXG4yODY0Olx0XHRcdFx0XHQgICBmYWxzZSk7XG4yODY1Olx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9TVEFUSVNUSUNTX1JBTV9FQ0MsIGZhbHNlKTtcbjI4NjY6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfQk1JX0RJU1BBVENIX1JBTV9FQ0MsIGZhbHNlKTtcbjI4Njc6XHRcdH1cbjI4Njg6XHRcbjI4Njk6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGZtYW4pO1xuMjg3MDpcdFxuMjg3MTpcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O0ZNYW4lZCBwcm9iZWRcXG5cJiMzNDssIGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5pZCk7XG4yODcyOlx0XG4yODczOlx0XHRyZXR1cm4gMDtcbjI4NzQ6XHR9XG4yODc1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYHJlYWRfZHRzX25vZGVgIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcmVhZF9kdHNfbm9kZWAgZnVuY3Rpb24uIEkgc2VlIGl0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2l0IGFzc3VtcHRpb25zIGhlcmUgcmVnYXJkaW5nIHRoZSBpbnB1dCBEVFMgKERldmljZSBUcmVlIFNvdXJjZSkgZm9ybWF0PyBBcmUgd2UgZXhwZWN0aW5nIGEgcHJlLXBhcnNlZCwgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uLCBvciBpcyB0aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgaW5pdGlhbCBwYXJzaW5nIHN0YWdlcyBhcyB3ZWxsPyBUaGUgbmFtaW5nIHN1Z2dlc3RzIGEgbGV2ZWwgb2YgYWJzdHJhY3Rpb24g4oCTIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBub2RlLCBidXQgd2hhdCBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYXJlIGJhY2tpbmcgdGhpcyAmIzM0O25vZGUmIzM0OyBhYnN0cmFjdGlvbj8gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgdG8ga25vdyB0aG9zZSBkZXRhaWxzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KClRoZW4sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZXJyb3IgaGFuZGxpbmcuIFdoYXQgaXMgdGhpcyBmdW5jdGlvbiBleHBlY3RlZCB0byBkbyBpZiBhIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmUgZWxlbWVudCBpcyBtaXNzaW5nIGluIGEgRFRTIGZpbGU/IERvZXMgaXQgcmV0dXJuIGFuIGVycm9yIGNvZGUsIHRocm93IGFuIGV4Y2VwdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEFuZCBpbXBvcnRhbnRseSwgd2hhdCBjb25zdGl0dXRlcyBhbiAmIzM0O2Vycm9yJiMzNDsgaW4gdGhlIGNvbnRleHQgb2YgcmVhZGluZyBhIG5vZGU/IElzIGl0IGp1c3QgYSBtaXNzaW5nIHByb3BlcnR5LCBvciBtb3JlIHNldmVyZSBzdHJ1Y3R1cmFsIGlzc3VlcyB3aXRoaW4gdGhlIHRyZWUgaXRzZWxmPyBBcmUgdGhlcmUgZ3JhY2VmdWwgZGVncmFkYXRpb24gbWVjaGFuaXNtcyBpZiBzb21ldGhpbmcgaXMgbm90IHBlcmZlY3Q/CgpNeSBuZXh0IGNvbnNpZGVyYXRpb24gaXMgcGVyZm9ybWFuY2UuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGZyZXF1ZW50bHktdXNlZCBEVFMgcHJvY2Vzc2luZyBwaXBlbGluZSwgZXZlcnkgY3ljbGUgY291bnRzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHdvcmsuIEFyZSB3ZSBnb2luZyB0byBzZWUgYW55IHJlcGVhdGVkIG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bm5lY2Vzc2FyeSBzdHJpbmcgY29weWluZz8gSSBhbSB0aGlua2luZywgYXJlIHRoZXJlIHdheXMgdG8gb3B0aW1pemUgdGhpcyBmdW5jdGlvbiB0byBtaW5pbWl6ZSByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbWF4aW1pemUgdGhyb3VnaHB1dD8gV2hhdCBpcyB0aGUgZnVuY3Rpb24mIzM5O3MgbWVtb3J5IGZvb3RwcmludD8gV2lsbCBpdCByZXN1bHQgaW4gZXhjZXNzaXZlIGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uIGFjdGl2aXR5LCBwb3RlbnRpYWxseSBpbXBhY3RpbmcgcmVhbC10aW1lIHBlcmZvcm1hbmNlPwoKRmluYWxseSwgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlIHdpdGggb3RoZXIgRFRTIHByb2Nlc3NpbmcgY29tcG9uZW50cz8gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gSSYjMzk7bSBob3BpbmcgdGhhdCBpdCB3aWxsIGJlIGRlc2lnbmVkIGluIGEgbW9kdWxhciBmYXNoaW9uIHRvIHN1cHBvcnQgdGVzdGluZywgZWFzaWVyIGRlYnVnZ2luZywgYW5kIG1haW50ZW5hbmNlLgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbG9naWMgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI2ODk6XHRzdGF0aWMgc3RydWN0IGZtYW4gKnJlYWRfZHRzX25vZGUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxuMjY5MDpcdHtcbjI2OTE6XHRcdHN0cnVjdCBmbWFuICpmbWFuO1xuMjY5MjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpmbV9ub2RlLCAqbXVyYW1fbm9kZTtcbjI2OTM6XHRcdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xuMjY5NDpcdFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4yNjk1Olx0XHR1MzIgdmFsLCByYW5nZVsyXTtcbjI2OTY6XHRcdGludCBlcnIsIGlycTtcbjI2OTc6XHRcdHN0cnVjdCBjbGsgKmNsaztcbjI2OTg6XHRcdHUzMiBjbGtfcmF0ZTtcbjI2OTk6XHRcbjI3MDA6XHRcdGZtYW4gPSBremFsbG9jX29iaigqZm1hbik7XG4yNzAxOlx0XHRpZiAoIWZtYW4pXG4yNzAyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuMjcwMzpcdFxuMjcwNDpcdFx0Zm1fbm9kZSA9IG9mX25vZGVfZ2V0KG9mX2Rldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG4yNzA1Olx0XG4yNzA2Olx0XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihmbV9ub2RlLCBcJiMzNDtjZWxsLWluZGV4XCYjMzQ7LCBcdTAwMjZ2YWwpO1xuMjcwNzpcdFx0aWYgKGVycikge1xuMjcwODpcdFx0XHRkZXZfZXJyKFx1MDAyNm9mX2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBmYWlsZWQgdG8gcmVhZCBjZWxsLWluZGV4IGZvciAlcE9GXFxuXCYjMzQ7LFxuMjcwOTpcdFx0XHRcdF9fZnVuY19fLCBmbV9ub2RlKTtcbjI3MTA6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjcxMTpcdFx0fVxuMjcxMjpcdFx0Zm1hbi1cdTAwM2VkdHNfcGFyYW1zLmlkID0gKHU4KXZhbDtcbjI3MTM6XHRcbjI3MTQ6XHRcdC8qIEdldCB0aGUgRk0gaW50ZXJydXB0ICovXG4yNzE1Olx0XHRlcnIgPSBwbGF0Zm9ybV9nZXRfaXJxKG9mX2RldiwgMCk7XG4yNzE2Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMjcxNzpcdFx0XHRnb3RvIGZtYW5fbm9kZV9wdXQ7XG4yNzE4Olx0XHRpcnEgPSBlcnI7XG4yNzE5Olx0XG4yNzIwOlx0XHQvKiBHZXQgdGhlIEZNIGVycm9yIGludGVycnVwdCAqL1xuMjcyMTpcdFx0ZXJyID0gcGxhdGZvcm1fZ2V0X2lycShvZl9kZXYsIDEpO1xuMjcyMjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbjI3MjM6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjcyNDpcdFx0Zm1hbi1cdTAwM2VkdHNfcGFyYW1zLmVycl9pcnEgPSBlcnI7XG4yNzI1Olx0XG4yNzI2Olx0XHRjbGsgPSBvZl9jbGtfZ2V0KGZtX25vZGUsIDApO1xuMjcyNzpcdFx0aWYgKElTX0VSUihjbGspKSB7XG4yNzI4Olx0XHRcdGVyciA9IFBUUl9FUlIoY2xrKTtcbjI3Mjk6XHRcdFx0ZGV2X2VycihcdTAwMjZvZl9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogRmFpbGVkIHRvIGdldCBGTSVkIGNsb2NrIHN0cnVjdHVyZVxcblwmIzM0OyxcbjI3MzA6XHRcdFx0XHRfX2Z1bmNfXywgZm1hbi1cdTAwM2VkdHNfcGFyYW1zLmlkKTtcbjI3MzE6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjczMjpcdFx0fVxuMjczMzpcdFxuMjczNDpcdFx0Y2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2xrKTtcbjI3MzU6XHRcdGlmICghY2xrX3JhdGUpIHtcbjI3MzY6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjI3Mzc6XHRcdFx0ZGV2X2VycihcdTAwMjZvZl9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogRmFpbGVkIHRvIGRldGVybWluZSBGTSVkIGNsb2NrIHJhdGVcXG5cJiMzNDssXG4yNzM4Olx0XHRcdFx0X19mdW5jX18sIGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTkKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBpbiBWaXJ0dWFsaXplZCBGdXp6aW5nIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBwcmV0dHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgRnJlZXNjYWxlIEZNYW4gZHJpdmVyLCBkZWFsaW5nIHdpdGggdGhpbmdzIGxpa2UgTU1JTyBiYXNlIGFkZHJlc3NlcywgaW50ZXJydXB0IGxpbmVzLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbnMuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBiZWNhdXNlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIGFuZCBhY2Nlc3MgdG8gaGFyZHdhcmUgcmVzb3VyY2VzLgoKTXkgZmlyc3QgdGhvdWdodCB3YXMsICYjMzQ7Q291bGQgdGhpcyAqcG9zc2libHkqIGJlIHJlYWNoZWQgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8mIzM0OyBTeXprYWxsZXIsIG9mIGNvdXJzZSwgZG9lcyBydW4gb24gYSB2YXJpZXR5IG9mIFFFTVUtZW11bGF0ZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTTY0IGFuZCBQUEM2NC4gQnV0IHRoaXMgaXMgRnJlZXNjYWxlIEZNYW4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zIOKAkyBhbmQgY2VydGFpbmx5IHRoZSBvbmVzIHR5cGljYWxseSB1c2VkIGJ5IFN5emthbGxlciBsaWtlIGB2aXJ0YCBvciBgcTM1YCDigJMgZG9uJiMzOTt0IGVtdWxhdGUgKnRoaXMqIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIEkga25vdyBvZiBzcGVjaWZpYyBgcWVtdS1zeXN0ZW0tcHBjYCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgY29uZmlndXJhdGlvbnMsIGJ1dCBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byB1c2UgdGhlbSBmb3IgdGhpcy4gU28gaXQgc2VlbXMgdW5saWtlbHkuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHdlbnQgYmFjayBhbmQgY2hlY2tlZC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGBmbWFuX2luaXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgZm1hbl9wcm9iZWAuIGBmbWFuX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGBmbWFuX2RyaXZlcmAuIEFuZCBgZm1hbl9kcml2ZXJgIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgaGFyZHdhcmUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgJiMzNDtmc2wsZm1hbiYjMzQ7LiBSaWdodCwgc3RpbGwgbm8gd2F5IHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gaGl0LgoKRXZlbiAqaWYqIFN5emthbGxlciBzb21laG93IGluamVjdGVkIGEgZmFrZSBwbGF0Zm9ybSBkZXZpY2UsIHRoYXQgd291bGQgYmUgYSBjb21wbGV0ZSBmYWlsLiBJdCB3b3VsZCBpbW1lZGlhdGVseSBjcmFzaCBhdCBgb2ZfY2xrX2dldGAgb3IgYGlvcmVtYXBgIG9yIHdoZW4gYXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlIE1NSU8gcmVnaW9ucy4gTm8gdmFsaWQgY2xvY2sgcmVzb3VyY2VzIG9yIE1NSU8gYWRkcmVzc2VzIGV4aXN0LiBFdmVuICppZiogdGhvc2UgcGFzc2VkLCB0aGUgZHJpdmVyIGltbWVkaWF0ZWx5IGNhbGxzIGhhcmR3YXJlIE1NSU8gYWNjZXNzZXMgd2hpY2ggd291bGQgZmF1bHQgaWYgbm90IGJhY2tlZCBieSByZWFsIGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi4KClNvLCBpbiBjb25jbHVzaW9uLCB0aGVyZSYjMzk7cyBubyB3YXkgdGhpcyBjb2RlIHBhdGggaXMgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIE1NSU8gYWNjZXNzZXMgYW5kIGNsb2NrIGRlcGVuZGVuY2llcyBhcmUgdG9vIHNwZWNpZmljLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiBmdXp6aW5nIGN5Y2xlcyB0byBhdHRlbXB0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIE1NSU8gcmVzb3VyY2VzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgdXNlZCBieSBmdXp6ZXJzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgY2xvY2tzLCBhbmQgTU1JTyByZXNvdXJjZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSB1c2VkIGJ5IGZ1enplcnMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoxNi44MzkzODIxMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg3ODQyNzg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIE1NSU8gcmVzb3VyY2VzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgdXNlZCBieSBmdXp6ZXJzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoxNi44MzkzODk0ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMDkyNTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY1MjA4Njk1NTljYWI5NTBiZmM0NWM3MjYxMjYwZWFlZWJhNjhjMGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTI6MTY6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXFxuaW5kZXggMDEzMjczYTJkZTMyZjIuLjNhMmE1NzIwN2U1NWY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xcbkBAIC0xOTk1LDEyICsxOTk1LDEyIEBAIHN0YXRpYyBpbnQgZm1hbl9pbml0KHN0cnVjdCBmbWFuICpmbWFuKVxcbiBcXG4gXFx0LyogSW5pdCBLZXlHZW4gKi9cXG4gXFx0Zm1hbi1cXHUwMDNla2V5Z2VuID0ga2V5Z2VuX2luaXQoZm1hbi1cXHUwMDNla2dfcmVncyk7XFxuLVxcdGlmICghZm1hbi1cXHUwMDNla2V5Z2VuKVxcbitcXHRpZiAoIWZtYW4tXFx1MDAzZWtleWdlbikge1xcbitcXHRcXHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXG4tXFx0ZXJyID0gZW5hYmxlKGZtYW4sIGNmZyk7XFxuLVxcdGlmIChlcnIgIT0gMClcXG4tXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0ZW5hYmxlKGZtYW4sIGNmZyk7XFxuIFxcbiBcXHRlbmFibGVfdGltZV9zdGFtcChmbWFuKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjE3LjQ2MzcyMTA4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNTQwNzk3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNTIwODY5NTU5Y2FiOTUwYmZjNDVjNzI2MTI2MGVhZWViYTY4YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTI6MTY6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcbmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXG5AQCAtMTk5NSwxMiArMTk5NSwxMiBAQCBzdGF0aWMgaW50IGZtYW5faW5pdChzdHJ1Y3QgZm1hbiAqZm1hbilcbiBcbiBcdC8qIEluaXQgS2V5R2VuICovXG4gXHRmbWFuLVx1MDAzZWtleWdlbiA9IGtleWdlbl9pbml0KGZtYW4tXHUwMDNla2dfcmVncyk7XG4tXHRpZiAoIWZtYW4tXHUwMDNla2V5Z2VuKVxuK1x0aWYgKCFmbWFuLVx1MDAzZWtleWdlbikge1xuK1x0XHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbi1cdGVyciA9IGVuYWJsZShmbWFuLCBjZmcpO1xuLVx0aWYgKGVyciAhPSAwKVxuLVx0XHRyZXR1cm4gZXJyO1xuK1x0ZW5hYmxlKGZtYW4sIGNmZyk7XG4gXG4gXHRlbmFibGVfdGltZV9zdGFtcChmbWFuKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjE3LjQ2MzcyNDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDI4Njk2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEZNYW4gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY2AuIEl0J3MgdG91Y2hpbmcgdGhlIGBmbWFuX2luaXRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBhZGRpbmcgYSBjYWxsIHRvIGBmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pYCBpZiBga2V5Z2VuX2luaXRgIGZhaWxzLiBUaGF0J3MgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZSDigJMgbWFraW5nIHN1cmUgd2UgY2xlYW4gdXAgcHJvcGVybHkgb24gZXJyb3IuICBJdCBhbHNvIHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIG5vdyAqaWdub3JpbmcqIHRoZSByZXR1cm4gdmFsdWUgb2YgYGVuYWJsZShmbWFuLCBjZmcpYC4gVGhhdCBmZWVscyBhIGJpdOKApnVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoYXQuIElzIGl0IGRlbGliZXJhdGU/IElzIGl0IHNhZmU/XG5cblRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBldmVuIG1hdHRlcnMgaW4gb3VyIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGEgRnJlZXNjYWxlIEZNYW4gZHJpdmVyLiAgVGhlIEZyZWVzY2FsZSBGTWFuIGlzIHVzdWFsbHkgaGFyZHdhcmUgc3BlY2lmaWMsIGZvdW5kIGluIEZyZWVzY2FsZSBRb3JJUSBTb0NzLCBib3RoIFBvd2VyUEMgYW5kIEFSTS4gSXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/ICBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgb2Z0ZW4sIHRoZXNlIHNvcnRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgYXJlICp2ZXJ5KiBkaWZmaWN1bHQgdG8gZW11bGF0ZSBjb21wbGV0ZWx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuICBTbyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHByb3Blcmx5IHRlc3QgdGhpcyBvciBpZiB3ZSB3aWxsIG5lZWQgdG8gY3JlYXRlIGEgc3BlY2lhbCBlbnZpcm9ubWVudC4gIFxuXG5JIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgRk1hbiB0byBzZWUgaWYgaXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgY2hhbmNlIHRoaXMgY29kZSBwYXRoIGlzIGFjdGl2ZSBpbiB0aGUgVk1zIHdlIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjIzLjA2NjU5NzM0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMzMDYyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9GTUFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc6Mjpjb25maWcgRlNMX0ZNQU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MjMuMjE5OTExNjUyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2NzA3OTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgS2NvbmZpZyBSZXZpZXcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIFwiTGV0J3MgcmVhZCB0aGUgS2NvbmZpZy5cIiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAsIGlzbid0IGl0PyBCZWZvcmUgYW55IHNlcmlvdXMgd29yayBiZWdpbnMsIHlvdSAqYWx3YXlzKiBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEknbSB0aGlua2luZywgXCJXaGVyZSBhcmUgd2UgZXZlbiBzdGFydGluZyBmcm9tPyBXaGF0IGFyZSB0aGUga2V5IGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZD8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIEkgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IGF3YXJlIG9mP1wiXG5cbk15IG1pbmQncyBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBwb3NzaWJpbGl0aWVzLiBJJ20gd29uZGVyaW5nOlxuXG4qICAgSXMgdGhpcyBhIGZyZXNoIEtjb25maWcsIG9yIG9uZSBJJ20gZmFtaWxpYXIgd2l0aD8gVGhhdCBpbmZvcm1zIG15IGFwcHJvYWNoLiBJZiBJIGtub3cgaXQsIEknbGwgZ28gZm9yIHF1aWNrIHNwZWNpZmljIGNoZWNrcyBmb3IgY2VydGFpbiB2YXJpYWJsZXMuXG4qICAgQXJlIHRoZXJlIGFueSBpbmNsdWRlIGRpcmVjdGl2ZXM/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG9yZ2FuaXphdGlvbmFsIHN0cnVjdHVyZSBpbW1lZGlhdGVseSwgYW5kIGRldGVybWluZSB3aGV0aGVyIEkgbmVlZCB0byB0cmFjayBkb3duIG90aGVyIEtjb25maWcgZmlsZXMuXG4qICAgQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgZGVmaW5lZD8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgQ1BVLCBib2FyZCwgb3IgYnVpbGQgY29uZmlndXJhdGlvbj8gSSB3YW50IHRvIGNvbnRleHR1YWxpemUgdGhpcyBpbW1lZGlhdGVseS5cbiogICBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzLCBvciBmZWF0dXJlcywgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgaXMgYWJvdXQgdG8ga2ljayBpbiBteSBpbnRlcm5hbCBjb25mbGljdCByZXNvbHV0aW9uIGNvZGUgZm9yIHBvdGVudGlhbCBwcm9ibGVtcy5cbiogICBBbSBJIGxvb2tpbmcgdG8gY2hhbmdlIHNvbWV0aGluZz8gT3IgdW5kZXJzdGFuZCB3aGF0IGlzIGF2YWlsYWJsZS4gVGhhdCBoZWxwcyB0byBmb2N1cyBteSBpbml0aWFsIHJldmlldy5cblxuU28sIEknbSBtZW50YWxseSBza2V0Y2hpbmcgb3V0IGEgcGxhbi4gSXQncyB0aW1lIHRvIGZpbmQgdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoyNy4wODY5OTQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGU0xfRk1BTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgUENTX0xZTlhcXG4gICA4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHRcXHRGcmVlc2NhbGUgRGF0YS1QYXRoIEFjY2VsZXJhdGlvbiBBcmNoaXRlY3R1cmUgRnJhbWUgTWFuYWdlclxcbiAgMTI6XFx0XFx0XFx0KEZNYW4pIHN1cHBvcnRcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIEFSTTY0IFxcdTAwMjZcXHUwMDI2IEZTTF9EUEFBXFxuICAxNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdFxcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcXG4gIDIwOlxcdFxcdFxcdGFsaWduIGJ1ZmZlcnMsIGRhdGEgc3RhcnQsIFNHIGZyYWdtZW50IGxlbmd0aCB0byBhdm9pZCBGTWFuIERNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoyNy4wODcxNzYzNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDMzNzk3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGcmVlc2NhbGUgRk1hbiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpdCdzIGNvbnRpbmdlbnQgb24gYSBmZXcgc3BlY2lmaWMgZGVmaW5lczogYEZTTF9TT0NgLCBgQVJDSF9MQVlFUlNDQVBFYCwgb3IgYENPTVBJTEVfVEVTVGAuIENsZWFybHksIGl0J3MgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIEZyZWVzY2FsZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSBGcmFtZSBNYW5hZ2VyIOKAkyBGTWFuLiBUaGUgbmV4dCBxdWVzdGlvbiB0aGF0IGFsd2F5cyBwb3BzIGludG8gbXkgaGVhZCB3aXRoIHRoZXNlIGhhcmR3YXJlIGRyaXZlcnMgaXM6IGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhlIGFuc3dlciBpcyB1c3VhbGx5IG5vLiBUaGlzIGlzIGEgc3BlY2lmaWMgU3lzdGVtLW9uLWEtQ2hpcCAoU29DKSBoYXJkd2FyZSBibG9jazsgeW91J3JlIG5vdCBnb2luZyB0byBnZXQgYSBnb29kIGVtdWxhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uYWxpdHkgZWFzaWx5LlxuXG5NeSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpczogaWYgaXQncyBhIGhhcmR3YXJlIGRyaXZlciwgYW5kIHRoZXJlJ3Mgbm8gZGVjZW50IGVtdWxhdGlvbiwgdGhpcyBjb2RlIHBhdGggaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIEl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5IHRvIHZhbGlkYXRlIHdpdGhvdXQgdGhlIHRhcmdldCBoYXJkd2FyZS4gV2FpdCBhIHNlY29uZCwgdGhvdWdoLCBpcyB0aGVyZSBhIHBvc3NpYmlsaXR5IG9mIGluc3RhbnRpYXRpbmcgdGhpcyB0aGluZyB2aWEgYSBkZXZpY2UgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggY291bGQgYWxsb3cgc29tZSBsZXZlbCBvZiB0ZXN0PyBPa2F5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBmbWFuX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIGlmIHRoaXMgaXMgcG9zc2libGUuIFRpbWUgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjMxLjY5MDU1OTc2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzNDg2MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm1hbl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI2ODk9c3RhdGljIHN0cnVjdCBmbWFuICpyZWFkX2R0c19ub2RlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yODI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODI2OnN0YXRpYyBpbnQgZm1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjg4OC1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODg5OlxcdC5wcm9iZSA9IGZtYW5fcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTAtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MzEuODQxOTE3MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2NjQ2NTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBsYXRmb3JtIERyaXZlciBhbmQgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0ncyBkZXZpY2UgdHJlZS4gSXQgbmVlZHMgYSBzcGVjaWZpYyBub2RlLCB3aGljaCBpc24ndCB1bnVzdWFsLCBidXQgaXQncyB0aGUgZm91bmRhdGlvbiB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgd2UgY2FuIGludGVyYWN0IHdpdGggaXQgdXNpbmcgU3l6a2FsbGVyLlxuXG5DYW4gd2UgYWN0dWFsbHkgZ2V0IFN5emthbGxlciB0byBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcz8gSSByZWNhbGwgdGhhdCBgc3l6X2Rldl9wbGF0Zm9ybWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGlzIHRoZSB1c3VhbCBtZXRob2QuIFRoZSBjYXZlYXQgaXMgY3J1Y2lhbCwgdGhvdWdoOiB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGEgd2F5IHdoZXJlIGl0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgY3Jhc2ggaWYgdGhlIGV4cGVjdGVkIGhhcmR3YXJlIGlzbid0IHByZXNlbnQsIHNwZWNpZmljYWxseSB3aXRoIE1NSU8gdGhhdCBjYXVzZXMgZXJyb3JzIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LiBUaGF0J3MgYSBrZXkgcmVxdWlyZW1lbnQuXG5cblRvIHVuZGVyc3RhbmQgaG93IHRvIHByb2NlZWQsIEkgbmVlZCB0byBhbmFseXplIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBmbWFuX3Byb2JlYCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhlIGRldmljZSBwcm9iaW5nIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIFN5emthbGxlciBjb21wYXRpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MzYuNDA4Mzg2ODc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgyNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgyNjpcXHRzdGF0aWMgaW50IGZtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxcbjI4Mjc6XFx0e1xcbjI4Mjg6XFx0XFx0c3RydWN0IGZtYW4gKmZtYW47XFxuMjgyOTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuMjgzMDpcXHRcXHRpbnQgZXJyO1xcbjI4MzE6XFx0XFxuMjgzMjpcXHRcXHRkZXYgPSBcXHUwMDI2b2ZfZGV2LVxcdTAwM2VkZXY7XFxuMjgzMzpcXHRcXG4yODM0OlxcdFxcdGZtYW4gPSByZWFkX2R0c19ub2RlKG9mX2Rldik7XFxuMjgzNTpcXHRcXHRpZiAoSVNfRVJSKGZtYW4pKVxcbjI4MzY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZm1hbik7XFxuMjgzNzpcXHRcXG4yODM4OlxcdFxcdGVyciA9IGZtYW5fY29uZmlnKGZtYW4pO1xcbjI4Mzk6XFx0XFx0aWYgKGVycikge1xcbjI4NDA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCIlczogRk1hbiBjb25maWcgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuMjg0MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODQyOlxcdFxcdH1cXG4yODQzOlxcdFxcbjI4NDQ6XFx0XFx0aWYgKGZtYW5faW5pdChmbWFuKSAhPSAwKSB7XFxuMjg0NTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBGTWFuIGluaXQgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuMjg0NjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODQ3OlxcdFxcdH1cXG4yODQ4OlxcdFxcbjI4NDk6XFx0XFx0aWYgKGZtYW4tXFx1MDAzZWR0c19wYXJhbXMuZXJyX2lycSA9PSAwKSB7XFxuMjg1MDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfQlVTX0VSUk9SLCBmYWxzZSk7XFxuMjg1MTpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfUkVBRF9FQ0MsIGZhbHNlKTtcXG4yODUyOlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0RNQV9TWVNURU1fV1JJVEVfRUNDLCBmYWxzZSk7XFxuMjg1MzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfRk1fV1JJVEVfRUNDLCBmYWxzZSk7XFxuMjg1NDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfU0lOR0xFX1BPUlRfRUNDLCBmYWxzZSk7XFxuMjg1NTpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fU1RBTExfT05fVEFTS1MsIGZhbHNlKTtcXG4yODU2OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0ZQTV9TSU5HTEVfRUNDLCBmYWxzZSk7XFxuMjg1NzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fRE9VQkxFX0VDQywgZmFsc2UpO1xcbjI4NTg6XFx0XFx0XFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfUU1JX1NJTkdMRV9FQ0MsIGZhbHNlKTtcXG4yODU5OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX1FNSV9ET1VCTEVfRUNDLCBmYWxzZSk7XFxuMjg2MDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbixcXG4yODYxOlxcdFxcdFxcdFxcdFxcdCAgIEZNQU5fRVhfUU1JX0RFUV9GUk9NX1VOS05PV05fUE9SVElELCBmYWxzZSk7XFxuMjg2MjpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9CTUlfTElTVF9SQU1fRUNDLCBmYWxzZSk7XFxuMjg2MzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9CTUlfU1RPUkFHRV9QUk9GSUxFX0VDQyxcXG4yODY0OlxcdFxcdFxcdFxcdFxcdCAgIGZhbHNlKTtcXG4yODY1OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9TVEFUSVNUSUNTX1JBTV9FQ0MsIGZhbHNlKTtcXG4yODY2OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9ESVNQQVRDSF9SQU1fRUNDLCBmYWxzZSk7XFxuMjg2NzpcXHRcXHR9XFxuMjg2ODpcXHRcXG4yODY5OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGZtYW4pO1xcbjI4NzA6XFx0XFxuMjg3MTpcXHRcXHRkZXZfZGJnKGRldiwgXFxcIkZNYW4lZCBwcm9iZWRcXFxcblxcXCIsIGZtYW4tXFx1MDAzZWR0c19wYXJhbXMuaWQpO1xcbjI4NzI6XFx0XFxuMjg3MzpcXHRcXHRyZXR1cm4gMDtcXG4yODc0OlxcdH1cXG4yODc1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjozNi40MDg2NTQ3MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NTUyNTczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGByZWFkX2R0c19ub2RlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGByZWFkX2R0c19ub2RlYCBmdW5jdGlvbi4gSSBzZWUgaXQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgaGVyZSByZWdhcmRpbmcgdGhlIGlucHV0IERUUyAoRGV2aWNlIFRyZWUgU291cmNlKSBmb3JtYXQ/IEFyZSB3ZSBleHBlY3RpbmcgYSBwcmUtcGFyc2VkLCBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24sIG9yIGlzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoZSBpbml0aWFsIHBhcnNpbmcgc3RhZ2VzIGFzIHdlbGw/IFRoZSBuYW1pbmcgc3VnZ2VzdHMgYSBsZXZlbCBvZiBhYnN0cmFjdGlvbiDigJMgd2UncmUgZGVhbGluZyB3aXRoIGEgbm9kZSwgYnV0IHdoYXQgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiYWNraW5nIHRoaXMgXCJub2RlXCIgYWJzdHJhY3Rpb24/IFdlJ3JlIGdvaW5nIHRvIG5lZWQgdG8ga25vdyB0aG9zZSBkZXRhaWxzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi5cblxuVGhlbiwgSSdtIHRoaW5raW5nIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGlzIHRoaXMgZnVuY3Rpb24gZXhwZWN0ZWQgdG8gZG8gaWYgYSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlIGVsZW1lbnQgaXMgbWlzc2luZyBpbiBhIERUUyBmaWxlPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlLCB0aHJvdyBhbiBleGNlcHRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBbmQgaW1wb3J0YW50bHksIHdoYXQgY29uc3RpdHV0ZXMgYW4gXCJlcnJvclwiIGluIHRoZSBjb250ZXh0IG9mIHJlYWRpbmcgYSBub2RlPyBJcyBpdCBqdXN0IGEgbWlzc2luZyBwcm9wZXJ0eSwgb3IgbW9yZSBzZXZlcmUgc3RydWN0dXJhbCBpc3N1ZXMgd2l0aGluIHRoZSB0cmVlIGl0c2VsZj8gQXJlIHRoZXJlIGdyYWNlZnVsIGRlZ3JhZGF0aW9uIG1lY2hhbmlzbXMgaWYgc29tZXRoaW5nIGlzIG5vdCBwZXJmZWN0P1xuXG5NeSBuZXh0IGNvbnNpZGVyYXRpb24gaXMgcGVyZm9ybWFuY2UuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGZyZXF1ZW50bHktdXNlZCBEVFMgcHJvY2Vzc2luZyBwaXBlbGluZSwgZXZlcnkgY3ljbGUgY291bnRzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHdvcmsuIEFyZSB3ZSBnb2luZyB0byBzZWUgYW55IHJlcGVhdGVkIG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bm5lY2Vzc2FyeSBzdHJpbmcgY29weWluZz8gSSBhbSB0aGlua2luZywgYXJlIHRoZXJlIHdheXMgdG8gb3B0aW1pemUgdGhpcyBmdW5jdGlvbiB0byBtaW5pbWl6ZSByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbWF4aW1pemUgdGhyb3VnaHB1dD8gV2hhdCBpcyB0aGUgZnVuY3Rpb24ncyBtZW1vcnkgZm9vdHByaW50PyBXaWxsIGl0IHJlc3VsdCBpbiBleGNlc3NpdmUgYWxsb2NhdGlvbiBvciBkZWFsbG9jYXRpb24gYWN0aXZpdHksIHBvdGVudGlhbGx5IGltcGFjdGluZyByZWFsLXRpbWUgcGVyZm9ybWFuY2U/XG5cbkZpbmFsbHksIHdoYXQncyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlIHdpdGggb3RoZXIgRFRTIHByb2Nlc3NpbmcgY29tcG9uZW50cz8gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gSSdtIGhvcGluZyB0aGF0IGl0IHdpbGwgYmUgZGVzaWduZWQgaW4gYSBtb2R1bGFyIGZhc2hpb24gdG8gc3VwcG9ydCB0ZXN0aW5nLCBlYXNpZXIgZGVidWdnaW5nLCBhbmQgbWFpbnRlbmFuY2UuXG5cbk9rYXksIGxldCdzIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbG9naWMgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6NDAuNzY0MTg0MDU1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY4OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY4OTpcXHRzdGF0aWMgc3RydWN0IGZtYW4gKnJlYWRfZHRzX25vZGUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxcbjI2OTA6XFx0e1xcbjI2OTE6XFx0XFx0c3RydWN0IGZtYW4gKmZtYW47XFxuMjY5MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmZtX25vZGUsICptdXJhbV9ub2RlO1xcbjI2OTM6XFx0XFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuMjY5NDpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4yNjk1OlxcdFxcdHUzMiB2YWwsIHJhbmdlWzJdO1xcbjI2OTY6XFx0XFx0aW50IGVyciwgaXJxO1xcbjI2OTc6XFx0XFx0c3RydWN0IGNsayAqY2xrO1xcbjI2OTg6XFx0XFx0dTMyIGNsa19yYXRlO1xcbjI2OTk6XFx0XFxuMjcwMDpcXHRcXHRmbWFuID0ga3phbGxvY19vYmooKmZtYW4pO1xcbjI3MDE6XFx0XFx0aWYgKCFmbWFuKVxcbjI3MDI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMjcwMzpcXHRcXG4yNzA0OlxcdFxcdGZtX25vZGUgPSBvZl9ub2RlX2dldChvZl9kZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG4yNzA1OlxcdFxcbjI3MDY6XFx0XFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZm1fbm9kZSwgXFxcImNlbGwtaW5kZXhcXFwiLCBcXHUwMDI2dmFsKTtcXG4yNzA3OlxcdFxcdGlmIChlcnIpIHtcXG4yNzA4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9mX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXM6IGZhaWxlZCB0byByZWFkIGNlbGwtaW5kZXggZm9yICVwT0ZcXFxcblxcXCIsXFxuMjcwOTpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1fbm9kZSk7XFxuMjcxMDpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjcxMTpcXHRcXHR9XFxuMjcxMjpcXHRcXHRmbWFuLVxcdTAwM2VkdHNfcGFyYW1zLmlkID0gKHU4KXZhbDtcXG4yNzEzOlxcdFxcbjI3MTQ6XFx0XFx0LyogR2V0IHRoZSBGTSBpbnRlcnJ1cHQgKi9cXG4yNzE1OlxcdFxcdGVyciA9IHBsYXRmb3JtX2dldF9pcnEob2ZfZGV2LCAwKTtcXG4yNzE2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjI3MTc6XFx0XFx0XFx0Z290byBmbWFuX25vZGVfcHV0O1xcbjI3MTg6XFx0XFx0aXJxID0gZXJyO1xcbjI3MTk6XFx0XFxuMjcyMDpcXHRcXHQvKiBHZXQgdGhlIEZNIGVycm9yIGludGVycnVwdCAqL1xcbjI3MjE6XFx0XFx0ZXJyID0gcGxhdGZvcm1fZ2V0X2lycShvZl9kZXYsIDEpO1xcbjI3MjI6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMjcyMzpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjcyNDpcXHRcXHRmbWFuLVxcdTAwM2VkdHNfcGFyYW1zLmVycl9pcnEgPSBlcnI7XFxuMjcyNTpcXHRcXG4yNzI2OlxcdFxcdGNsayA9IG9mX2Nsa19nZXQoZm1fbm9kZSwgMCk7XFxuMjcyNzpcXHRcXHRpZiAoSVNfRVJSKGNsaykpIHtcXG4yNzI4OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoY2xrKTtcXG4yNzI5OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9mX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEZhaWxlZCB0byBnZXQgRk0lZCBjbG9jayBzdHJ1Y3R1cmVcXFxcblxcXCIsXFxuMjczMDpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1hbi1cXHUwMDNlZHRzX3BhcmFtcy5pZCk7XFxuMjczMTpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjczMjpcXHRcXHR9XFxuMjczMzpcXHRcXG4yNzM0OlxcdFxcdGNsa19yYXRlID0gY2xrX2dldF9yYXRlKGNsayk7XFxuMjczNTpcXHRcXHRpZiAoIWNsa19yYXRlKSB7XFxuMjczNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjI3Mzc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2b2ZfZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogRmFpbGVkIHRvIGRldGVybWluZSBGTSVkIGNsb2NrIHJhdGVcXFxcblxcXCIsXFxuMjczODpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1hbi1cXHUwMDNlZHRzX3BhcmFtcy5pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjQwLjc2NDQzODA1NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk1MzI3NTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGggaW4gVmlydHVhbGl6ZWQgRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGNvZGUgYW5kIEkndmUgZ290IGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEZyZWVzY2FsZSBGTWFuIGRyaXZlciwgZGVhbGluZyB3aXRoIHRoaW5ncyBsaWtlIE1NSU8gYmFzZSBhZGRyZXNzZXMsIGludGVycnVwdCBsaW5lcywgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgYmVjYXVzZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIGFuZCBhY2Nlc3MgdG8gaGFyZHdhcmUgcmVzb3VyY2VzLlxuXG5NeSBmaXJzdCB0aG91Z2h0IHdhcywgXCJDb3VsZCB0aGlzICpwb3NzaWJseSogYmUgcmVhY2hlZCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VP1wiIFN5emthbGxlciwgb2YgY291cnNlLCBkb2VzIHJ1biBvbiBhIHZhcmlldHkgb2YgUUVNVS1lbXVsYXRlZCBhcmNoaXRlY3R1cmVzIGxpa2UgQVJNNjQgYW5kIFBQQzY0LiBCdXQgdGhpcyBpcyBGcmVlc2NhbGUgRk1hbi4gSSdtIHByZXR0eSBzdXJlIHRoYXQgc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucyDigJMgYW5kIGNlcnRhaW5seSB0aGUgb25lcyB0eXBpY2FsbHkgdXNlZCBieSBTeXprYWxsZXIgbGlrZSBgdmlydGAgb3IgYHEzNWAg4oCTIGRvbid0IGVtdWxhdGUgKnRoaXMqIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIEkga25vdyBvZiBzcGVjaWZpYyBgcWVtdS1zeXN0ZW0tcHBjYCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgY29uZmlndXJhdGlvbnMsIGJ1dCBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIHVzZSB0aGVtIGZvciB0aGlzLiBTbyBpdCBzZWVtcyB1bmxpa2VseS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgZm1hbl9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGZtYW5fcHJvYmVgLiBgZm1hbl9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBgZm1hbl9kcml2ZXJgLiBBbmQgYGZtYW5fZHJpdmVyYCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhcmR3YXJlIHdpdGggdGhlIGNvbXBhdGlibGUgc3RyaW5nIFwiZnNsLGZtYW5cIi4gUmlnaHQsIHN0aWxsIG5vIHdheSB0aGF0IGl0J3MgZ29pbmcgdG8gaGl0LlxuXG5FdmVuICppZiogU3l6a2FsbGVyIHNvbWVob3cgaW5qZWN0ZWQgYSBmYWtlIHBsYXRmb3JtIGRldmljZSwgdGhhdCB3b3VsZCBiZSBhIGNvbXBsZXRlIGZhaWwuIEl0IHdvdWxkIGltbWVkaWF0ZWx5IGNyYXNoIGF0IGBvZl9jbGtfZ2V0YCBvciBgaW9yZW1hcGAgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGUgTU1JTyByZWdpb25zLiBObyB2YWxpZCBjbG9jayByZXNvdXJjZXMgb3IgTU1JTyBhZGRyZXNzZXMgZXhpc3QuIEV2ZW4gKmlmKiB0aG9zZSBwYXNzZWQsIHRoZSBkcml2ZXIgaW1tZWRpYXRlbHkgY2FsbHMgaGFyZHdhcmUgTU1JTyBhY2Nlc3NlcyB3aGljaCB3b3VsZCBmYXVsdCBpZiBub3QgYmFja2VkIGJ5IHJlYWwgaGFyZHdhcmUgb3Igc3BlY2lmaWMgZW11bGF0aW9uLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgdGhlcmUncyBubyB3YXkgdGhpcyBjb2RlIHBhdGggaXMgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIE1NSU8gYWNjZXNzZXMgYW5kIGNsb2NrIGRlcGVuZGVuY2llcyBhcmUgdG9vIHNwZWNpZmljLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCB3b3VsZCBiZSBhIGNvbXBsZXRlIHdhc3RlIG9mIGZ1enppbmcgY3ljbGVzIHRvIGF0dGVtcHQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ1OSwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjo1MS43MTc3MTgzNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgY2xvY2tzLCBhbmQgTU1JTyByZXNvdXJjZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSB1c2VkIGJ5IGZ1enplcnMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown7lft[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 11:50:05 +0000 UTC FinishedAt: 2026-06-24 12:16:53 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY1MjA4Njk1NTljYWI5NTBiZmM0NWM3MjYxMjYwZWFlZWJhNjhjMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxMjoxNjoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcbmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXG5AQCAtMTk5NSwxMiAmIzQzOzE5OTUsMTIgQEAgc3RhdGljIGludCBmbWFuX2luaXQoc3RydWN0IGZtYW4gKmZtYW4pXG4gXG4gXHQvKiBJbml0IEtleUdlbiAqL1xuIFx0Zm1hbi1cdTAwM2VrZXlnZW4gPSBrZXlnZW5faW5pdChmbWFuLVx1MDAzZWtnX3JlZ3MpO1xuLVx0aWYgKCFmbWFuLVx1MDAzZWtleWdlbilcbiYjNDM7XHRpZiAoIWZtYW4tXHUwMDNla2V5Z2VuKSB7XG4mIzQzO1x0XHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXG4tXHRlcnIgPSBlbmFibGUoZm1hbiwgY2ZnKTtcbi1cdGlmIChlcnIgIT0gMClcbi1cdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlbmFibGUoZm1hbiwgY2ZnKTtcbiBcbiBcdGVuYWJsZV90aW1lX3N0YW1wKGZtYW4pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjUyMDg2OTU1OWNhYjk1MGJmYzQ1YzcyNjEyNjBlYWVlYmE2OGMwZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDEyOjE2OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jCmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYwpAQCAtMTk5NSwxMiAmIzQzOzE5OTUsMTIgQEAgc3RhdGljIGludCBmbWFuX2luaXQoc3RydWN0IGZtYW4gKmZtYW4pCiAKIAkvKiBJbml0IEtleUdlbiAqLwogCWZtYW4tJmd0O2tleWdlbiA9IGtleWdlbl9pbml0KGZtYW4tJmd0O2tnX3JlZ3MpOwotCWlmICghZm1hbi0mZ3Q7a2V5Z2VuKQomIzQzOwlpZiAoIWZtYW4tJmd0O2tleWdlbikgewomIzQzOwkJZnJlZV9pbml0X3Jlc291cmNlcyhmbWFuKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAotCWVyciA9IGVuYWJsZShmbWFuLCBjZmcpOwotCWlmIChlcnIgIT0gMCkKLQkJcmV0dXJuIGVycjsKJiM0MzsJZW5hYmxlKGZtYW4sIGNmZyk7CiAKIAllbmFibGVfdGltZV9zdGFtcChmbWFuKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBGTWFuIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY2AuIEl0JiMzOTtzIHRvdWNoaW5nIHRoZSBgZm1hbl9pbml0YCBmdW5jdGlvbiwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBhIGNhbGwgdG8gYGZyZWVfaW5pdF9yZXNvdXJjZXMoZm1hbilgIGlmIGBrZXlnZW5faW5pdGAgZmFpbHMuIFRoYXQmIzM5O3MgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZSDigJMgbWFraW5nIHN1cmUgd2UgY2xlYW4gdXAgcHJvcGVybHkgb24gZXJyb3IuICBJdCBhbHNvIHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIG5vdyAqaWdub3JpbmcqIHRoZSByZXR1cm4gdmFsdWUgb2YgYGVuYWJsZShmbWFuLCBjZmcpYC4gVGhhdCBmZWVscyBhIGJpdOKApnVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoYXQuIElzIGl0IGRlbGliZXJhdGU/IElzIGl0IHNhZmU/CgpUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlzIHdoZXRoZXIgdGhpcyBtb2RpZmljYXRpb24gZXZlbiBtYXR0ZXJzIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50cy4gVGhpcyBpcyBhIEZyZWVzY2FsZSBGTWFuIGRyaXZlci4gIFRoZSBGcmVlc2NhbGUgRk1hbiBpcyB1c3VhbGx5IGhhcmR3YXJlIHNwZWNpZmljLCBmb3VuZCBpbiBGcmVlc2NhbGUgUW9ySVEgU29DcywgYm90aCBQb3dlclBDIGFuZCBBUk0uIElzIHRoaXMgZXZlbiByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyAgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IG9mdGVuLCB0aGVzZSBzb3J0cyBvZiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGFyZSAqdmVyeSogZGlmZmljdWx0IHRvIGVtdWxhdGUgY29tcGxldGVseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiAgU28gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gcHJvcGVybHkgdGVzdCB0aGlzIG9yIGlmIHdlIHdpbGwgbmVlZCB0byBjcmVhdGUgYSBzcGVjaWFsIGVudmlyb25tZW50LiAgCgpJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgRk1hbiB0byBzZWUgaWYgaXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSB0aGlzIGNvZGUgcGF0aCBpcyBhY3RpdmUgaW4gdGhlIFZNcyB3ZSB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9GTUFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjI6Y29uZmlnIEZTTF9GTUFOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGTWFuIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTI1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBLY29uZmlnIFJldmlldyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uICYjMzQ7TGV0JiMzOTtzIHJlYWQgdGhlIEtjb25maWcuJiMzNDsgVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCwgaXNuJiMzOTt0IGl0PyBCZWZvcmUgYW55IHNlcmlvdXMgd29yayBiZWdpbnMsIHlvdSAqYWx3YXlzKiBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgYXJlIHdlIGV2ZW4gc3RhcnRpbmcgZnJvbT8gV2hhdCBhcmUgdGhlIGtleSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIGRlZmluZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyBJIHNob3VsZCBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZj8mIzM0OwoKTXkgbWluZCYjMzk7cyBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBwb3NzaWJpbGl0aWVzLiBJJiMzOTttIHdvbmRlcmluZzoKCiogICBJcyB0aGlzIGEgZnJlc2ggS2NvbmZpZywgb3Igb25lIEkmIzM5O20gZmFtaWxpYXIgd2l0aD8gVGhhdCBpbmZvcm1zIG15IGFwcHJvYWNoLiBJZiBJIGtub3cgaXQsIEkmIzM5O2xsIGdvIGZvciBxdWljayBzcGVjaWZpYyBjaGVja3MgZm9yIGNlcnRhaW4gdmFyaWFibGVzLgoqICAgQXJlIHRoZXJlIGFueSBpbmNsdWRlIGRpcmVjdGl2ZXM/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmdhbml6YXRpb25hbCBzdHJ1Y3R1cmUgaW1tZWRpYXRlbHksIGFuZCBkZXRlcm1pbmUgd2hldGhlciBJIG5lZWQgdG8gdHJhY2sgZG93biBvdGhlciBLY29uZmlnIGZpbGVzLgoqICAgQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgZGVmaW5lZD8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgQ1BVLCBib2FyZCwgb3IgYnVpbGQgY29uZmlndXJhdGlvbj8gSSB3YW50IHRvIGNvbnRleHR1YWxpemUgdGhpcyBpbW1lZGlhdGVseS4KKiAgIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIG9yIGZlYXR1cmVzLCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyBpcyBhYm91dCB0byBraWNrIGluIG15IGludGVybmFsIGNvbmZsaWN0IHJlc29sdXRpb24gY29kZSBmb3IgcG90ZW50aWFsIHByb2JsZW1zLgoqICAgQW0gSSBsb29raW5nIHRvIGNoYW5nZSBzb21ldGhpbmc/IE9yIHVuZGVyc3RhbmQgd2hhdCBpcyBhdmFpbGFibGUuIFRoYXQgaGVscHMgdG8gZm9jdXMgbXkgaW5pdGlhbCByZXZpZXcuCgpTbywgSSYjMzk7bSBtZW50YWxseSBza2V0Y2hpbmcgb3V0IGEgcGxhbi4gSXQmIzM5O3MgdGltZSB0byBmaW5kIHRoZSBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRlNMX0ZNQU5cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0ZNYW4gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBGU0xfU09DIHx8IEFSQ0hfTEFZRVJTQ0FQRSB8fCBDT01QSUxFX1RFU1RcbiAgIDU6XHRcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuICAgNjpcdFx0c2VsZWN0IFBIWUxJTktcbiAgIDc6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuICAgODpcdFx0c2VsZWN0IENSQzMyXG4gICA5Olx0XHRkZWZhdWx0IG5cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdFx0RnJlZXNjYWxlIERhdGEtUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIEZyYW1lIE1hbmFnZXJcbiAgMTI6XHRcdFx0KEZNYW4pIHN1cHBvcnRcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgRFBBQV9FUlJBVFVNX0EwNTAzODVcbiAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcdGRlcGVuZHMgb24gQVJNNjQgXHUwMDI2XHUwMDI2IEZTTF9EUEFBXG4gIDE3Olx0XHRkZWZhdWx0IHlcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdFx0RFBBQSBGTWFuIGVycmF0dW0gQTA1MDM4NSBzb2Z0d2FyZSB3b3JrYXJvdW5kIGltcGxlbWVudGF0aW9uOlxuICAyMDpcdFx0XHRhbGlnbiBidWZmZXJzLCBkYXRhIHN0YXJ0LCBTRyBmcmFnbWVudCBsZW5ndGggdG8gYXZvaWQgRk1hbiBETUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnJlZXNjYWxlIEZNYW4gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpdCYjMzk7cyBjb250aW5nZW50IG9uIGEgZmV3IHNwZWNpZmljIGRlZmluZXM6IGBGU0xfU09DYCwgYEFSQ0hfTEFZRVJTQ0FQRWAsIG9yIGBDT01QSUxFX1RFU1RgLiBDbGVhcmx5LCBpdCYjMzk7cyBhIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgRnJlZXNjYWxlIERhdGEtUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIEZyYW1lIE1hbmFnZXIg4oCTIEZNYW4uIFRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgYWx3YXlzIHBvcHMgaW50byBteSBoZWFkIHdpdGggdGhlc2UgaGFyZHdhcmUgZHJpdmVycyBpczogaXMgdGhlcmUgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBBbmQsIGFzIEkgc3VzcGVjdGVkLCB0aGUgYW5zd2VyIGlzIHVzdWFsbHkgbm8uIFRoaXMgaXMgYSBzcGVjaWZpYyBTeXN0ZW0tb24tYS1DaGlwIChTb0MpIGhhcmR3YXJlIGJsb2NrOyB5b3UmIzM5O3JlIG5vdCBnb2luZyB0byBnZXQgYSBnb29kIGVtdWxhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uYWxpdHkgZWFzaWx5LgoKTXkgaW1tZWRpYXRlIGNvbmNsdXNpb24gaXM6IGlmIGl0JiMzOTtzIGEgaGFyZHdhcmUgZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gZGVjZW50IGVtdWxhdGlvbiwgdGhpcyBjb2RlIHBhdGggaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIEl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreSB0byB2YWxpZGF0ZSB3aXRob3V0IHRoZSB0YXJnZXQgaGFyZHdhcmUuIFdhaXQgYSBzZWNvbmQsIHRob3VnaCwgaXMgdGhlcmUgYSBwb3NzaWJpbGl0eSBvZiBpbnN0YW50aWF0aW5nIHRoaXMgdGhpbmcgdmlhIGEgZGV2aWNlIHRyZWUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIGNvdWxkIGFsbG93IHNvbWUgbGV2ZWwgb2YgdGVzdD8gT2theSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGZtYW5fcHJvYmVgIGZ1bmN0aW9uIHRvIGNvbmZpcm0gaWYgdGhpcyBpcyBwb3NzaWJsZS4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZtYW5fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI2ODk9c3RhdGljIHN0cnVjdCBmbWFuICpyZWFkX2R0c19ub2RlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjgyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODI2OnN0YXRpYyBpbnQgZm1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZl9kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjgyNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODgtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI4ODk6XHQucHJvYmUgPSBmbWFuX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTAtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODYzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIFN5emthbGxlciBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbSYjMzk7cyBkZXZpY2UgdHJlZS4gSXQgbmVlZHMgYSBzcGVjaWZpYyBub2RlLCB3aGljaCBpc24mIzM5O3QgdW51c3VhbCwgYnV0IGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHdlIG5lZWQgdG8gY29uc2lkZXIuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdCB1c2luZyBTeXprYWxsZXIuCgpDYW4gd2UgYWN0dWFsbHkgZ2V0IFN5emthbGxlciB0byBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcz8gSSByZWNhbGwgdGhhdCBgc3l6X2Rldl9wbGF0Zm9ybWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGlzIHRoZSB1c3VhbCBtZXRob2QuIFRoZSBjYXZlYXQgaXMgY3J1Y2lhbCwgdGhvdWdoOiB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGEgd2F5IHdoZXJlIGl0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGNyYXNoIGlmIHRoZSBleHBlY3RlZCBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgc3BlY2lmaWNhbGx5IHdpdGggTU1JTyB0aGF0IGNhdXNlcyBlcnJvcnMgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LiBUaGF0JiMzOTtzIGEga2V5IHJlcXVpcmVtZW50LgoKVG8gdW5kZXJzdGFuZCBob3cgdG8gcHJvY2VlZCwgSSBuZWVkIHRvIGFuYWx5emUgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZm1hbl9wcm9iZWAgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJlc3QgaW5zaWdodCBpbnRvIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBTeXprYWxsZXIgY29tcGF0aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODI2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MjY6XHRzdGF0aWMgaW50IGZtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxuMjgyNzpcdHtcbjI4Mjg6XHRcdHN0cnVjdCBmbWFuICpmbWFuO1xuMjgyOTpcdFx0c3RydWN0IGRldmljZSAqZGV2O1xuMjgzMDpcdFx0aW50IGVycjtcbjI4MzE6XHRcbjI4MzI6XHRcdGRldiA9IFx1MDAyNm9mX2Rldi1cdTAwM2VkZXY7XG4yODMzOlx0XG4yODM0Olx0XHRmbWFuID0gcmVhZF9kdHNfbm9kZShvZl9kZXYpO1xuMjgzNTpcdFx0aWYgKElTX0VSUihmbWFuKSlcbjI4MzY6XHRcdFx0cmV0dXJuIFBUUl9FUlIoZm1hbik7XG4yODM3Olx0XG4yODM4Olx0XHRlcnIgPSBmbWFuX2NvbmZpZyhmbWFuKTtcbjI4Mzk6XHRcdGlmIChlcnIpIHtcbjI4NDA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzOiBGTWFuIGNvbmZpZyBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbjI4NDE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yODQyOlx0XHR9XG4yODQzOlx0XG4yODQ0Olx0XHRpZiAoZm1hbl9pbml0KGZtYW4pICE9IDApIHtcbjI4NDU6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzOiBGTWFuIGluaXQgZmFpbGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4yODQ2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjg0NzpcdFx0fVxuMjg0ODpcdFxuMjg0OTpcdFx0aWYgKGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5lcnJfaXJxID09IDApIHtcbjI4NTA6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX0JVU19FUlJPUiwgZmFsc2UpO1xuMjg1MTpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfUkVBRF9FQ0MsIGZhbHNlKTtcbjI4NTI6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX1NZU1RFTV9XUklURV9FQ0MsIGZhbHNlKTtcbjI4NTM6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfRE1BX0ZNX1dSSVRFX0VDQywgZmFsc2UpO1xuMjg1NDpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfU0lOR0xFX1BPUlRfRUNDLCBmYWxzZSk7XG4yODU1Olx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0ZQTV9TVEFMTF9PTl9UQVNLUywgZmFsc2UpO1xuMjg1NjpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fU0lOR0xFX0VDQywgZmFsc2UpO1xuMjg1NzpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fRE9VQkxFX0VDQywgZmFsc2UpO1xuMjg1ODpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9RTUlfU0lOR0xFX0VDQywgZmFsc2UpO1xuMjg1OTpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9RTUlfRE9VQkxFX0VDQywgZmFsc2UpO1xuMjg2MDpcdFx0XHRmbWFuX3NldF9leGNlcHRpb24oZm1hbixcbjI4NjE6XHRcdFx0XHRcdCAgIEZNQU5fRVhfUU1JX0RFUV9GUk9NX1VOS05PV05fUE9SVElELCBmYWxzZSk7XG4yODYyOlx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9MSVNUX1JBTV9FQ0MsIGZhbHNlKTtcbjI4NjM6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfQk1JX1NUT1JBR0VfUFJPRklMRV9FQ0MsXG4yODY0Olx0XHRcdFx0XHQgICBmYWxzZSk7XG4yODY1Olx0XHRcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9TVEFUSVNUSUNTX1JBTV9FQ0MsIGZhbHNlKTtcbjI4NjY6XHRcdFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfQk1JX0RJU1BBVENIX1JBTV9FQ0MsIGZhbHNlKTtcbjI4Njc6XHRcdH1cbjI4Njg6XHRcbjI4Njk6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGZtYW4pO1xuMjg3MDpcdFxuMjg3MTpcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O0ZNYW4lZCBwcm9iZWRcXG5cJiMzNDssIGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5pZCk7XG4yODcyOlx0XG4yODczOlx0XHRyZXR1cm4gMDtcbjI4NzQ6XHR9XG4yODc1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYHJlYWRfZHRzX25vZGVgIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcmVhZF9kdHNfbm9kZWAgZnVuY3Rpb24uIEkgc2VlIGl0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2l0IGFzc3VtcHRpb25zIGhlcmUgcmVnYXJkaW5nIHRoZSBpbnB1dCBEVFMgKERldmljZSBUcmVlIFNvdXJjZSkgZm9ybWF0PyBBcmUgd2UgZXhwZWN0aW5nIGEgcHJlLXBhcnNlZCwgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uLCBvciBpcyB0aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgaW5pdGlhbCBwYXJzaW5nIHN0YWdlcyBhcyB3ZWxsPyBUaGUgbmFtaW5nIHN1Z2dlc3RzIGEgbGV2ZWwgb2YgYWJzdHJhY3Rpb24g4oCTIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBub2RlLCBidXQgd2hhdCBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYXJlIGJhY2tpbmcgdGhpcyAmIzM0O25vZGUmIzM0OyBhYnN0cmFjdGlvbj8gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgdG8ga25vdyB0aG9zZSBkZXRhaWxzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi4KClRoZW4sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZXJyb3IgaGFuZGxpbmcuIFdoYXQgaXMgdGhpcyBmdW5jdGlvbiBleHBlY3RlZCB0byBkbyBpZiBhIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmUgZWxlbWVudCBpcyBtaXNzaW5nIGluIGEgRFRTIGZpbGU/IERvZXMgaXQgcmV0dXJuIGFuIGVycm9yIGNvZGUsIHRocm93IGFuIGV4Y2VwdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEFuZCBpbXBvcnRhbnRseSwgd2hhdCBjb25zdGl0dXRlcyBhbiAmIzM0O2Vycm9yJiMzNDsgaW4gdGhlIGNvbnRleHQgb2YgcmVhZGluZyBhIG5vZGU/IElzIGl0IGp1c3QgYSBtaXNzaW5nIHByb3BlcnR5LCBvciBtb3JlIHNldmVyZSBzdHJ1Y3R1cmFsIGlzc3VlcyB3aXRoaW4gdGhlIHRyZWUgaXRzZWxmPyBBcmUgdGhlcmUgZ3JhY2VmdWwgZGVncmFkYXRpb24gbWVjaGFuaXNtcyBpZiBzb21ldGhpbmcgaXMgbm90IHBlcmZlY3Q/CgpNeSBuZXh0IGNvbnNpZGVyYXRpb24gaXMgcGVyZm9ybWFuY2UuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGZyZXF1ZW50bHktdXNlZCBEVFMgcHJvY2Vzc2luZyBwaXBlbGluZSwgZXZlcnkgY3ljbGUgY291bnRzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHdvcmsuIEFyZSB3ZSBnb2luZyB0byBzZWUgYW55IHJlcGVhdGVkIG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bm5lY2Vzc2FyeSBzdHJpbmcgY29weWluZz8gSSBhbSB0aGlua2luZywgYXJlIHRoZXJlIHdheXMgdG8gb3B0aW1pemUgdGhpcyBmdW5jdGlvbiB0byBtaW5pbWl6ZSByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbWF4aW1pemUgdGhyb3VnaHB1dD8gV2hhdCBpcyB0aGUgZnVuY3Rpb24mIzM5O3MgbWVtb3J5IGZvb3RwcmludD8gV2lsbCBpdCByZXN1bHQgaW4gZXhjZXNzaXZlIGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uIGFjdGl2aXR5LCBwb3RlbnRpYWxseSBpbXBhY3RpbmcgcmVhbC10aW1lIHBlcmZvcm1hbmNlPwoKRmluYWxseSwgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlIHdpdGggb3RoZXIgRFRTIHByb2Nlc3NpbmcgY29tcG9uZW50cz8gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gSSYjMzk7bSBob3BpbmcgdGhhdCBpdCB3aWxsIGJlIGRlc2lnbmVkIGluIGEgbW9kdWxhciBmYXNoaW9uIHRvIHN1cHBvcnQgdGVzdGluZywgZWFzaWVyIGRlYnVnZ2luZywgYW5kIG1haW50ZW5hbmNlLgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbG9naWMgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI2ODk6XHRzdGF0aWMgc3RydWN0IGZtYW4gKnJlYWRfZHRzX25vZGUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxuMjY5MDpcdHtcbjI2OTE6XHRcdHN0cnVjdCBmbWFuICpmbWFuO1xuMjY5MjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpmbV9ub2RlLCAqbXVyYW1fbm9kZTtcbjI2OTM6XHRcdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xuMjY5NDpcdFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4yNjk1Olx0XHR1MzIgdmFsLCByYW5nZVsyXTtcbjI2OTY6XHRcdGludCBlcnIsIGlycTtcbjI2OTc6XHRcdHN0cnVjdCBjbGsgKmNsaztcbjI2OTg6XHRcdHUzMiBjbGtfcmF0ZTtcbjI2OTk6XHRcbjI3MDA6XHRcdGZtYW4gPSBremFsbG9jX29iaigqZm1hbik7XG4yNzAxOlx0XHRpZiAoIWZtYW4pXG4yNzAyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuMjcwMzpcdFxuMjcwNDpcdFx0Zm1fbm9kZSA9IG9mX25vZGVfZ2V0KG9mX2Rldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG4yNzA1Olx0XG4yNzA2Olx0XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihmbV9ub2RlLCBcJiMzNDtjZWxsLWluZGV4XCYjMzQ7LCBcdTAwMjZ2YWwpO1xuMjcwNzpcdFx0aWYgKGVycikge1xuMjcwODpcdFx0XHRkZXZfZXJyKFx1MDAyNm9mX2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBmYWlsZWQgdG8gcmVhZCBjZWxsLWluZGV4IGZvciAlcE9GXFxuXCYjMzQ7LFxuMjcwOTpcdFx0XHRcdF9fZnVuY19fLCBmbV9ub2RlKTtcbjI3MTA6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjcxMTpcdFx0fVxuMjcxMjpcdFx0Zm1hbi1cdTAwM2VkdHNfcGFyYW1zLmlkID0gKHU4KXZhbDtcbjI3MTM6XHRcbjI3MTQ6XHRcdC8qIEdldCB0aGUgRk0gaW50ZXJydXB0ICovXG4yNzE1Olx0XHRlcnIgPSBwbGF0Zm9ybV9nZXRfaXJxKG9mX2RldiwgMCk7XG4yNzE2Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMjcxNzpcdFx0XHRnb3RvIGZtYW5fbm9kZV9wdXQ7XG4yNzE4Olx0XHRpcnEgPSBlcnI7XG4yNzE5Olx0XG4yNzIwOlx0XHQvKiBHZXQgdGhlIEZNIGVycm9yIGludGVycnVwdCAqL1xuMjcyMTpcdFx0ZXJyID0gcGxhdGZvcm1fZ2V0X2lycShvZl9kZXYsIDEpO1xuMjcyMjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbjI3MjM6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjcyNDpcdFx0Zm1hbi1cdTAwM2VkdHNfcGFyYW1zLmVycl9pcnEgPSBlcnI7XG4yNzI1Olx0XG4yNzI2Olx0XHRjbGsgPSBvZl9jbGtfZ2V0KGZtX25vZGUsIDApO1xuMjcyNzpcdFx0aWYgKElTX0VSUihjbGspKSB7XG4yNzI4Olx0XHRcdGVyciA9IFBUUl9FUlIoY2xrKTtcbjI3Mjk6XHRcdFx0ZGV2X2VycihcdTAwMjZvZl9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogRmFpbGVkIHRvIGdldCBGTSVkIGNsb2NrIHN0cnVjdHVyZVxcblwmIzM0OyxcbjI3MzA6XHRcdFx0XHRfX2Z1bmNfXywgZm1hbi1cdTAwM2VkdHNfcGFyYW1zLmlkKTtcbjI3MzE6XHRcdFx0Z290byBmbWFuX25vZGVfcHV0O1xuMjczMjpcdFx0fVxuMjczMzpcdFxuMjczNDpcdFx0Y2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2xrKTtcbjI3MzU6XHRcdGlmICghY2xrX3JhdGUpIHtcbjI3MzY6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjI3Mzc6XHRcdFx0ZGV2X2VycihcdTAwMjZvZl9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogRmFpbGVkIHRvIGRldGVybWluZSBGTSVkIGNsb2NrIHJhdGVcXG5cJiMzNDssXG4yNzM4Olx0XHRcdFx0X19mdW5jX18sIGZtYW4tXHUwMDNlZHRzX3BhcmFtcy5pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTkKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBpbiBWaXJ0dWFsaXplZCBGdXp6aW5nIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBwcmV0dHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgRnJlZXNjYWxlIEZNYW4gZHJpdmVyLCBkZWFsaW5nIHdpdGggdGhpbmdzIGxpa2UgTU1JTyBiYXNlIGFkZHJlc3NlcywgaW50ZXJydXB0IGxpbmVzLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbnMuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBiZWNhdXNlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIGFuZCBhY2Nlc3MgdG8gaGFyZHdhcmUgcmVzb3VyY2VzLgoKTXkgZmlyc3QgdGhvdWdodCB3YXMsICYjMzQ7Q291bGQgdGhpcyAqcG9zc2libHkqIGJlIHJlYWNoZWQgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8mIzM0OyBTeXprYWxsZXIsIG9mIGNvdXJzZSwgZG9lcyBydW4gb24gYSB2YXJpZXR5IG9mIFFFTVUtZW11bGF0ZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTTY0IGFuZCBQUEM2NC4gQnV0IHRoaXMgaXMgRnJlZXNjYWxlIEZNYW4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zIOKAkyBhbmQgY2VydGFpbmx5IHRoZSBvbmVzIHR5cGljYWxseSB1c2VkIGJ5IFN5emthbGxlciBsaWtlIGB2aXJ0YCBvciBgcTM1YCDigJMgZG9uJiMzOTt0IGVtdWxhdGUgKnRoaXMqIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIEkga25vdyBvZiBzcGVjaWZpYyBgcWVtdS1zeXN0ZW0tcHBjYCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgY29uZmlndXJhdGlvbnMsIGJ1dCBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byB1c2UgdGhlbSBmb3IgdGhpcy4gU28gaXQgc2VlbXMgdW5saWtlbHkuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHdlbnQgYmFjayBhbmQgY2hlY2tlZC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGBmbWFuX2luaXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgZm1hbl9wcm9iZWAuIGBmbWFuX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGBmbWFuX2RyaXZlcmAuIEFuZCBgZm1hbl9kcml2ZXJgIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgaGFyZHdhcmUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgJiMzNDtmc2wsZm1hbiYjMzQ7LiBSaWdodCwgc3RpbGwgbm8gd2F5IHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gaGl0LgoKRXZlbiAqaWYqIFN5emthbGxlciBzb21laG93IGluamVjdGVkIGEgZmFrZSBwbGF0Zm9ybSBkZXZpY2UsIHRoYXQgd291bGQgYmUgYSBjb21wbGV0ZSBmYWlsLiBJdCB3b3VsZCBpbW1lZGlhdGVseSBjcmFzaCBhdCBgb2ZfY2xrX2dldGAgb3IgYGlvcmVtYXBgIG9yIHdoZW4gYXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlIE1NSU8gcmVnaW9ucy4gTm8gdmFsaWQgY2xvY2sgcmVzb3VyY2VzIG9yIE1NSU8gYWRkcmVzc2VzIGV4aXN0LiBFdmVuICppZiogdGhvc2UgcGFzc2VkLCB0aGUgZHJpdmVyIGltbWVkaWF0ZWx5IGNhbGxzIGhhcmR3YXJlIE1NSU8gYWNjZXNzZXMgd2hpY2ggd291bGQgZmF1bHQgaWYgbm90IGJhY2tlZCBieSByZWFsIGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi4KClNvLCBpbiBjb25jbHVzaW9uLCB0aGVyZSYjMzk7cyBubyB3YXkgdGhpcyBjb2RlIHBhdGggaXMgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIE1NSU8gYWNjZXNzZXMgYW5kIGNsb2NrIGRlcGVuZGVuY2llcyBhcmUgdG9vIHNwZWNpZmljLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiBmdXp6aW5nIGN5Y2xlcyB0byBhdHRlbXB0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIE1NSU8gcmVzb3VyY2VzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgdXNlZCBieSBmdXp6ZXJzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgY2xvY2tzLCBhbmQgTU1JTyByZXNvdXJjZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSB1c2VkIGJ5IGZ1enplcnMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoxNi44MzkzODIxMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg3ODQyNzg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIE1NSU8gcmVzb3VyY2VzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgdXNlZCBieSBmdXp6ZXJzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoxNi44MzkzODk0ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMDkyNTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY1MjA4Njk1NTljYWI5NTBiZmM0NWM3MjYxMjYwZWFlZWJhNjhjMGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTI6MTY6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXFxuaW5kZXggMDEzMjczYTJkZTMyZjIuLjNhMmE1NzIwN2U1NWY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xcbkBAIC0xOTk1LDEyICsxOTk1LDEyIEBAIHN0YXRpYyBpbnQgZm1hbl9pbml0KHN0cnVjdCBmbWFuICpmbWFuKVxcbiBcXG4gXFx0LyogSW5pdCBLZXlHZW4gKi9cXG4gXFx0Zm1hbi1cXHUwMDNla2V5Z2VuID0ga2V5Z2VuX2luaXQoZm1hbi1cXHUwMDNla2dfcmVncyk7XFxuLVxcdGlmICghZm1hbi1cXHUwMDNla2V5Z2VuKVxcbitcXHRpZiAoIWZtYW4tXFx1MDAzZWtleWdlbikge1xcbitcXHRcXHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXG4tXFx0ZXJyID0gZW5hYmxlKGZtYW4sIGNmZyk7XFxuLVxcdGlmIChlcnIgIT0gMClcXG4tXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0ZW5hYmxlKGZtYW4sIGNmZyk7XFxuIFxcbiBcXHRlbmFibGVfdGltZV9zdGFtcChmbWFuKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjE3LjQ2MzcyMTA4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNTQwNzk3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNTIwODY5NTU5Y2FiOTUwYmZjNDVjNzI2MTI2MGVhZWViYTY4YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTI6MTY6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcbmluZGV4IDAxMzI3M2EyZGUzMmYyLi4zYTJhNTcyMDdlNTVmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jXG5AQCAtMTk5NSwxMiArMTk5NSwxMiBAQCBzdGF0aWMgaW50IGZtYW5faW5pdChzdHJ1Y3QgZm1hbiAqZm1hbilcbiBcbiBcdC8qIEluaXQgS2V5R2VuICovXG4gXHRmbWFuLVx1MDAzZWtleWdlbiA9IGtleWdlbl9pbml0KGZtYW4tXHUwMDNla2dfcmVncyk7XG4tXHRpZiAoIWZtYW4tXHUwMDNla2V5Z2VuKVxuK1x0aWYgKCFmbWFuLVx1MDAzZWtleWdlbikge1xuK1x0XHRmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbi1cdGVyciA9IGVuYWJsZShmbWFuLCBjZmcpO1xuLVx0aWYgKGVyciAhPSAwKVxuLVx0XHRyZXR1cm4gZXJyO1xuK1x0ZW5hYmxlKGZtYW4sIGNmZyk7XG4gXG4gXHRlbmFibGVfdGltZV9zdGFtcChmbWFuKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjE3LjQ2MzcyNDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDI4Njk2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEZNYW4gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY2AuIEl0J3MgdG91Y2hpbmcgdGhlIGBmbWFuX2luaXRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBhZGRpbmcgYSBjYWxsIHRvIGBmcmVlX2luaXRfcmVzb3VyY2VzKGZtYW4pYCBpZiBga2V5Z2VuX2luaXRgIGZhaWxzLiBUaGF0J3MgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZSDigJMgbWFraW5nIHN1cmUgd2UgY2xlYW4gdXAgcHJvcGVybHkgb24gZXJyb3IuICBJdCBhbHNvIHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIG5vdyAqaWdub3JpbmcqIHRoZSByZXR1cm4gdmFsdWUgb2YgYGVuYWJsZShmbWFuLCBjZmcpYC4gVGhhdCBmZWVscyBhIGJpdOKApnVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoYXQuIElzIGl0IGRlbGliZXJhdGU/IElzIGl0IHNhZmU/XG5cblRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaXMgd2hldGhlciB0aGlzIG1vZGlmaWNhdGlvbiBldmVuIG1hdHRlcnMgaW4gb3VyIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGEgRnJlZXNjYWxlIEZNYW4gZHJpdmVyLiAgVGhlIEZyZWVzY2FsZSBGTWFuIGlzIHVzdWFsbHkgaGFyZHdhcmUgc3BlY2lmaWMsIGZvdW5kIGluIEZyZWVzY2FsZSBRb3JJUSBTb0NzLCBib3RoIFBvd2VyUEMgYW5kIEFSTS4gSXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/ICBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgb2Z0ZW4sIHRoZXNlIHNvcnRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgYXJlICp2ZXJ5KiBkaWZmaWN1bHQgdG8gZW11bGF0ZSBjb21wbGV0ZWx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuICBTbyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHByb3Blcmx5IHRlc3QgdGhpcyBvciBpZiB3ZSB3aWxsIG5lZWQgdG8gY3JlYXRlIGEgc3BlY2lhbCBlbnZpcm9ubWVudC4gIFxuXG5JIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgRk1hbiB0byBzZWUgaWYgaXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgY2hhbmNlIHRoaXMgY29kZSBwYXRoIGlzIGFjdGl2ZSBpbiB0aGUgVk1zIHdlIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjIzLjA2NjU5NzM0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMzMDYyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9GTUFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc6Mjpjb25maWcgRlNMX0ZNQU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MjMuMjE5OTExNjUyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2NzA3OTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgS2NvbmZpZyBSZXZpZXcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIFwiTGV0J3MgcmVhZCB0aGUgS2NvbmZpZy5cIiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAsIGlzbid0IGl0PyBCZWZvcmUgYW55IHNlcmlvdXMgd29yayBiZWdpbnMsIHlvdSAqYWx3YXlzKiBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEknbSB0aGlua2luZywgXCJXaGVyZSBhcmUgd2UgZXZlbiBzdGFydGluZyBmcm9tPyBXaGF0IGFyZSB0aGUga2V5IGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZD8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIEkgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IGF3YXJlIG9mP1wiXG5cbk15IG1pbmQncyBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBwb3NzaWJpbGl0aWVzLiBJJ20gd29uZGVyaW5nOlxuXG4qICAgSXMgdGhpcyBhIGZyZXNoIEtjb25maWcsIG9yIG9uZSBJJ20gZmFtaWxpYXIgd2l0aD8gVGhhdCBpbmZvcm1zIG15IGFwcHJvYWNoLiBJZiBJIGtub3cgaXQsIEknbGwgZ28gZm9yIHF1aWNrIHNwZWNpZmljIGNoZWNrcyBmb3IgY2VydGFpbiB2YXJpYWJsZXMuXG4qICAgQXJlIHRoZXJlIGFueSBpbmNsdWRlIGRpcmVjdGl2ZXM/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG9yZ2FuaXphdGlvbmFsIHN0cnVjdHVyZSBpbW1lZGlhdGVseSwgYW5kIGRldGVybWluZSB3aGV0aGVyIEkgbmVlZCB0byB0cmFjayBkb3duIG90aGVyIEtjb25maWcgZmlsZXMuXG4qICAgQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgZGVmaW5lZD8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgQ1BVLCBib2FyZCwgb3IgYnVpbGQgY29uZmlndXJhdGlvbj8gSSB3YW50IHRvIGNvbnRleHR1YWxpemUgdGhpcyBpbW1lZGlhdGVseS5cbiogICBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzLCBvciBmZWF0dXJlcywgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgaXMgYWJvdXQgdG8ga2ljayBpbiBteSBpbnRlcm5hbCBjb25mbGljdCByZXNvbHV0aW9uIGNvZGUgZm9yIHBvdGVudGlhbCBwcm9ibGVtcy5cbiogICBBbSBJIGxvb2tpbmcgdG8gY2hhbmdlIHNvbWV0aGluZz8gT3IgdW5kZXJzdGFuZCB3aGF0IGlzIGF2YWlsYWJsZS4gVGhhdCBoZWxwcyB0byBmb2N1cyBteSBpbml0aWFsIHJldmlldy5cblxuU28sIEknbSBtZW50YWxseSBza2V0Y2hpbmcgb3V0IGEgcGxhbi4gSXQncyB0aW1lIHRvIGZpbmQgdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoyNy4wODY5OTQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGU0xfRk1BTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgUENTX0xZTlhcXG4gICA4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHRcXHRGcmVlc2NhbGUgRGF0YS1QYXRoIEFjY2VsZXJhdGlvbiBBcmNoaXRlY3R1cmUgRnJhbWUgTWFuYWdlclxcbiAgMTI6XFx0XFx0XFx0KEZNYW4pIHN1cHBvcnRcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIEFSTTY0IFxcdTAwMjZcXHUwMDI2IEZTTF9EUEFBXFxuICAxNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdFxcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcXG4gIDIwOlxcdFxcdFxcdGFsaWduIGJ1ZmZlcnMsIGRhdGEgc3RhcnQsIFNHIGZyYWdtZW50IGxlbmd0aCB0byBhdm9pZCBGTWFuIERNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjoyNy4wODcxNzYzNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDMzNzk3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGcmVlc2NhbGUgRk1hbiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpdCdzIGNvbnRpbmdlbnQgb24gYSBmZXcgc3BlY2lmaWMgZGVmaW5lczogYEZTTF9TT0NgLCBgQVJDSF9MQVlFUlNDQVBFYCwgb3IgYENPTVBJTEVfVEVTVGAuIENsZWFybHksIGl0J3MgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIEZyZWVzY2FsZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSBGcmFtZSBNYW5hZ2VyIOKAkyBGTWFuLiBUaGUgbmV4dCBxdWVzdGlvbiB0aGF0IGFsd2F5cyBwb3BzIGludG8gbXkgaGVhZCB3aXRoIHRoZXNlIGhhcmR3YXJlIGRyaXZlcnMgaXM6IGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhlIGFuc3dlciBpcyB1c3VhbGx5IG5vLiBUaGlzIGlzIGEgc3BlY2lmaWMgU3lzdGVtLW9uLWEtQ2hpcCAoU29DKSBoYXJkd2FyZSBibG9jazsgeW91J3JlIG5vdCBnb2luZyB0byBnZXQgYSBnb29kIGVtdWxhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uYWxpdHkgZWFzaWx5LlxuXG5NeSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpczogaWYgaXQncyBhIGhhcmR3YXJlIGRyaXZlciwgYW5kIHRoZXJlJ3Mgbm8gZGVjZW50IGVtdWxhdGlvbiwgdGhpcyBjb2RlIHBhdGggaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIEl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5IHRvIHZhbGlkYXRlIHdpdGhvdXQgdGhlIHRhcmdldCBoYXJkd2FyZS4gV2FpdCBhIHNlY29uZCwgdGhvdWdoLCBpcyB0aGVyZSBhIHBvc3NpYmlsaXR5IG9mIGluc3RhbnRpYXRpbmcgdGhpcyB0aGluZyB2aWEgYSBkZXZpY2UgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggY291bGQgYWxsb3cgc29tZSBsZXZlbCBvZiB0ZXN0PyBPa2F5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBmbWFuX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIGlmIHRoaXMgaXMgcG9zc2libGUuIFRpbWUgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjMxLjY5MDU1OTc2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzNDg2MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm1hbl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI2ODk9c3RhdGljIHN0cnVjdCBmbWFuICpyZWFkX2R0c19ub2RlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yODI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODI2OnN0YXRpYyBpbnQgZm1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjg4OC1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyODg5OlxcdC5wcm9iZSA9IGZtYW5fcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTAtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MzEuODQxOTE3MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2NjQ2NTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBsYXRmb3JtIERyaXZlciBhbmQgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0ncyBkZXZpY2UgdHJlZS4gSXQgbmVlZHMgYSBzcGVjaWZpYyBub2RlLCB3aGljaCBpc24ndCB1bnVzdWFsLCBidXQgaXQncyB0aGUgZm91bmRhdGlvbiB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgd2UgY2FuIGludGVyYWN0IHdpdGggaXQgdXNpbmcgU3l6a2FsbGVyLlxuXG5DYW4gd2UgYWN0dWFsbHkgZ2V0IFN5emthbGxlciB0byBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcz8gSSByZWNhbGwgdGhhdCBgc3l6X2Rldl9wbGF0Zm9ybWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGlzIHRoZSB1c3VhbCBtZXRob2QuIFRoZSBjYXZlYXQgaXMgY3J1Y2lhbCwgdGhvdWdoOiB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGEgd2F5IHdoZXJlIGl0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgY3Jhc2ggaWYgdGhlIGV4cGVjdGVkIGhhcmR3YXJlIGlzbid0IHByZXNlbnQsIHNwZWNpZmljYWxseSB3aXRoIE1NSU8gdGhhdCBjYXVzZXMgZXJyb3JzIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LiBUaGF0J3MgYSBrZXkgcmVxdWlyZW1lbnQuXG5cblRvIHVuZGVyc3RhbmQgaG93IHRvIHByb2NlZWQsIEkgbmVlZCB0byBhbmFseXplIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBmbWFuX3Byb2JlYCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhlIGRldmljZSBwcm9iaW5nIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIFN5emthbGxlciBjb21wYXRpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6MzYuNDA4Mzg2ODc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgyNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgyNjpcXHRzdGF0aWMgaW50IGZtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxcbjI4Mjc6XFx0e1xcbjI4Mjg6XFx0XFx0c3RydWN0IGZtYW4gKmZtYW47XFxuMjgyOTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuMjgzMDpcXHRcXHRpbnQgZXJyO1xcbjI4MzE6XFx0XFxuMjgzMjpcXHRcXHRkZXYgPSBcXHUwMDI2b2ZfZGV2LVxcdTAwM2VkZXY7XFxuMjgzMzpcXHRcXG4yODM0OlxcdFxcdGZtYW4gPSByZWFkX2R0c19ub2RlKG9mX2Rldik7XFxuMjgzNTpcXHRcXHRpZiAoSVNfRVJSKGZtYW4pKVxcbjI4MzY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZm1hbik7XFxuMjgzNzpcXHRcXG4yODM4OlxcdFxcdGVyciA9IGZtYW5fY29uZmlnKGZtYW4pO1xcbjI4Mzk6XFx0XFx0aWYgKGVycikge1xcbjI4NDA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCIlczogRk1hbiBjb25maWcgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuMjg0MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODQyOlxcdFxcdH1cXG4yODQzOlxcdFxcbjI4NDQ6XFx0XFx0aWYgKGZtYW5faW5pdChmbWFuKSAhPSAwKSB7XFxuMjg0NTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBGTWFuIGluaXQgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuMjg0NjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODQ3OlxcdFxcdH1cXG4yODQ4OlxcdFxcbjI4NDk6XFx0XFx0aWYgKGZtYW4tXFx1MDAzZWR0c19wYXJhbXMuZXJyX2lycSA9PSAwKSB7XFxuMjg1MDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfQlVTX0VSUk9SLCBmYWxzZSk7XFxuMjg1MTpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfUkVBRF9FQ0MsIGZhbHNlKTtcXG4yODUyOlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0RNQV9TWVNURU1fV1JJVEVfRUNDLCBmYWxzZSk7XFxuMjg1MzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfRk1fV1JJVEVfRUNDLCBmYWxzZSk7XFxuMjg1NDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9ETUFfU0lOR0xFX1BPUlRfRUNDLCBmYWxzZSk7XFxuMjg1NTpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fU1RBTExfT05fVEFTS1MsIGZhbHNlKTtcXG4yODU2OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0ZQTV9TSU5HTEVfRUNDLCBmYWxzZSk7XFxuMjg1NzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9GUE1fRE9VQkxFX0VDQywgZmFsc2UpO1xcbjI4NTg6XFx0XFx0XFx0Zm1hbl9zZXRfZXhjZXB0aW9uKGZtYW4sIEZNQU5fRVhfUU1JX1NJTkdMRV9FQ0MsIGZhbHNlKTtcXG4yODU5OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX1FNSV9ET1VCTEVfRUNDLCBmYWxzZSk7XFxuMjg2MDpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbixcXG4yODYxOlxcdFxcdFxcdFxcdFxcdCAgIEZNQU5fRVhfUU1JX0RFUV9GUk9NX1VOS05PV05fUE9SVElELCBmYWxzZSk7XFxuMjg2MjpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9CTUlfTElTVF9SQU1fRUNDLCBmYWxzZSk7XFxuMjg2MzpcXHRcXHRcXHRmbWFuX3NldF9leGNlcHRpb24oZm1hbiwgRk1BTl9FWF9CTUlfU1RPUkFHRV9QUk9GSUxFX0VDQyxcXG4yODY0OlxcdFxcdFxcdFxcdFxcdCAgIGZhbHNlKTtcXG4yODY1OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9TVEFUSVNUSUNTX1JBTV9FQ0MsIGZhbHNlKTtcXG4yODY2OlxcdFxcdFxcdGZtYW5fc2V0X2V4Y2VwdGlvbihmbWFuLCBGTUFOX0VYX0JNSV9ESVNQQVRDSF9SQU1fRUNDLCBmYWxzZSk7XFxuMjg2NzpcXHRcXHR9XFxuMjg2ODpcXHRcXG4yODY5OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGZtYW4pO1xcbjI4NzA6XFx0XFxuMjg3MTpcXHRcXHRkZXZfZGJnKGRldiwgXFxcIkZNYW4lZCBwcm9iZWRcXFxcblxcXCIsIGZtYW4tXFx1MDAzZWR0c19wYXJhbXMuaWQpO1xcbjI4NzI6XFx0XFxuMjg3MzpcXHRcXHRyZXR1cm4gMDtcXG4yODc0OlxcdH1cXG4yODc1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjozNi40MDg2NTQ3MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NTUyNTczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGByZWFkX2R0c19ub2RlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGByZWFkX2R0c19ub2RlYCBmdW5jdGlvbi4gSSBzZWUgaXQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgaGVyZSByZWdhcmRpbmcgdGhlIGlucHV0IERUUyAoRGV2aWNlIFRyZWUgU291cmNlKSBmb3JtYXQ/IEFyZSB3ZSBleHBlY3RpbmcgYSBwcmUtcGFyc2VkLCBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24sIG9yIGlzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoZSBpbml0aWFsIHBhcnNpbmcgc3RhZ2VzIGFzIHdlbGw/IFRoZSBuYW1pbmcgc3VnZ2VzdHMgYSBsZXZlbCBvZiBhYnN0cmFjdGlvbiDigJMgd2UncmUgZGVhbGluZyB3aXRoIGEgbm9kZSwgYnV0IHdoYXQgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiYWNraW5nIHRoaXMgXCJub2RlXCIgYWJzdHJhY3Rpb24/IFdlJ3JlIGdvaW5nIHRvIG5lZWQgdG8ga25vdyB0aG9zZSBkZXRhaWxzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbi5cblxuVGhlbiwgSSdtIHRoaW5raW5nIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGlzIHRoaXMgZnVuY3Rpb24gZXhwZWN0ZWQgdG8gZG8gaWYgYSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlIGVsZW1lbnQgaXMgbWlzc2luZyBpbiBhIERUUyBmaWxlPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlLCB0aHJvdyBhbiBleGNlcHRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBbmQgaW1wb3J0YW50bHksIHdoYXQgY29uc3RpdHV0ZXMgYW4gXCJlcnJvclwiIGluIHRoZSBjb250ZXh0IG9mIHJlYWRpbmcgYSBub2RlPyBJcyBpdCBqdXN0IGEgbWlzc2luZyBwcm9wZXJ0eSwgb3IgbW9yZSBzZXZlcmUgc3RydWN0dXJhbCBpc3N1ZXMgd2l0aGluIHRoZSB0cmVlIGl0c2VsZj8gQXJlIHRoZXJlIGdyYWNlZnVsIGRlZ3JhZGF0aW9uIG1lY2hhbmlzbXMgaWYgc29tZXRoaW5nIGlzIG5vdCBwZXJmZWN0P1xuXG5NeSBuZXh0IGNvbnNpZGVyYXRpb24gaXMgcGVyZm9ybWFuY2UuIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGZyZXF1ZW50bHktdXNlZCBEVFMgcHJvY2Vzc2luZyBwaXBlbGluZSwgZXZlcnkgY3ljbGUgY291bnRzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHdvcmsuIEFyZSB3ZSBnb2luZyB0byBzZWUgYW55IHJlcGVhdGVkIG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bm5lY2Vzc2FyeSBzdHJpbmcgY29weWluZz8gSSBhbSB0aGlua2luZywgYXJlIHRoZXJlIHdheXMgdG8gb3B0aW1pemUgdGhpcyBmdW5jdGlvbiB0byBtaW5pbWl6ZSByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbWF4aW1pemUgdGhyb3VnaHB1dD8gV2hhdCBpcyB0aGUgZnVuY3Rpb24ncyBtZW1vcnkgZm9vdHByaW50PyBXaWxsIGl0IHJlc3VsdCBpbiBleGNlc3NpdmUgYWxsb2NhdGlvbiBvciBkZWFsbG9jYXRpb24gYWN0aXZpdHksIHBvdGVudGlhbGx5IGltcGFjdGluZyByZWFsLXRpbWUgcGVyZm9ybWFuY2U/XG5cbkZpbmFsbHksIHdoYXQncyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlIHdpdGggb3RoZXIgRFRTIHByb2Nlc3NpbmcgY29tcG9uZW50cz8gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gSSdtIGhvcGluZyB0aGF0IGl0IHdpbGwgYmUgZGVzaWduZWQgaW4gYSBtb2R1bGFyIGZhc2hpb24gdG8gc3VwcG9ydCB0ZXN0aW5nLCBlYXNpZXIgZGVidWdnaW5nLCBhbmQgbWFpbnRlbmFuY2UuXG5cbk9rYXksIGxldCdzIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbG9naWMgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTI6MTY6NDAuNzY0MTg0MDU1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY4OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY4OTpcXHRzdGF0aWMgc3RydWN0IGZtYW4gKnJlYWRfZHRzX25vZGUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZfZGV2KVxcbjI2OTA6XFx0e1xcbjI2OTE6XFx0XFx0c3RydWN0IGZtYW4gKmZtYW47XFxuMjY5MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmZtX25vZGUsICptdXJhbV9ub2RlO1xcbjI2OTM6XFx0XFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuMjY5NDpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4yNjk1OlxcdFxcdHUzMiB2YWwsIHJhbmdlWzJdO1xcbjI2OTY6XFx0XFx0aW50IGVyciwgaXJxO1xcbjI2OTc6XFx0XFx0c3RydWN0IGNsayAqY2xrO1xcbjI2OTg6XFx0XFx0dTMyIGNsa19yYXRlO1xcbjI2OTk6XFx0XFxuMjcwMDpcXHRcXHRmbWFuID0ga3phbGxvY19vYmooKmZtYW4pO1xcbjI3MDE6XFx0XFx0aWYgKCFmbWFuKVxcbjI3MDI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMjcwMzpcXHRcXG4yNzA0OlxcdFxcdGZtX25vZGUgPSBvZl9ub2RlX2dldChvZl9kZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG4yNzA1OlxcdFxcbjI3MDY6XFx0XFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZm1fbm9kZSwgXFxcImNlbGwtaW5kZXhcXFwiLCBcXHUwMDI2dmFsKTtcXG4yNzA3OlxcdFxcdGlmIChlcnIpIHtcXG4yNzA4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9mX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXM6IGZhaWxlZCB0byByZWFkIGNlbGwtaW5kZXggZm9yICVwT0ZcXFxcblxcXCIsXFxuMjcwOTpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1fbm9kZSk7XFxuMjcxMDpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjcxMTpcXHRcXHR9XFxuMjcxMjpcXHRcXHRmbWFuLVxcdTAwM2VkdHNfcGFyYW1zLmlkID0gKHU4KXZhbDtcXG4yNzEzOlxcdFxcbjI3MTQ6XFx0XFx0LyogR2V0IHRoZSBGTSBpbnRlcnJ1cHQgKi9cXG4yNzE1OlxcdFxcdGVyciA9IHBsYXRmb3JtX2dldF9pcnEob2ZfZGV2LCAwKTtcXG4yNzE2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjI3MTc6XFx0XFx0XFx0Z290byBmbWFuX25vZGVfcHV0O1xcbjI3MTg6XFx0XFx0aXJxID0gZXJyO1xcbjI3MTk6XFx0XFxuMjcyMDpcXHRcXHQvKiBHZXQgdGhlIEZNIGVycm9yIGludGVycnVwdCAqL1xcbjI3MjE6XFx0XFx0ZXJyID0gcGxhdGZvcm1fZ2V0X2lycShvZl9kZXYsIDEpO1xcbjI3MjI6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMjcyMzpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjcyNDpcXHRcXHRmbWFuLVxcdTAwM2VkdHNfcGFyYW1zLmVycl9pcnEgPSBlcnI7XFxuMjcyNTpcXHRcXG4yNzI2OlxcdFxcdGNsayA9IG9mX2Nsa19nZXQoZm1fbm9kZSwgMCk7XFxuMjcyNzpcXHRcXHRpZiAoSVNfRVJSKGNsaykpIHtcXG4yNzI4OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoY2xrKTtcXG4yNzI5OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9mX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEZhaWxlZCB0byBnZXQgRk0lZCBjbG9jayBzdHJ1Y3R1cmVcXFxcblxcXCIsXFxuMjczMDpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1hbi1cXHUwMDNlZHRzX3BhcmFtcy5pZCk7XFxuMjczMTpcXHRcXHRcXHRnb3RvIGZtYW5fbm9kZV9wdXQ7XFxuMjczMjpcXHRcXHR9XFxuMjczMzpcXHRcXG4yNzM0OlxcdFxcdGNsa19yYXRlID0gY2xrX2dldF9yYXRlKGNsayk7XFxuMjczNTpcXHRcXHRpZiAoIWNsa19yYXRlKSB7XFxuMjczNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjI3Mzc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2b2ZfZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogRmFpbGVkIHRvIGRldGVybWluZSBGTSVkIGNsb2NrIHJhdGVcXFxcblxcXCIsXFxuMjczODpcXHRcXHRcXHRcXHRfX2Z1bmNfXywgZm1hbi1cXHUwMDNlZHRzX3BhcmFtcy5pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEyOjE2OjQwLjc2NDQzODA1NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk1MzI3NTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGggaW4gVmlydHVhbGl6ZWQgRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGNvZGUgYW5kIEkndmUgZ290IGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEZyZWVzY2FsZSBGTWFuIGRyaXZlciwgZGVhbGluZyB3aXRoIHRoaW5ncyBsaWtlIE1NSU8gYmFzZSBhZGRyZXNzZXMsIGludGVycnVwdCBsaW5lcywgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgYmVjYXVzZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIGFuZCBhY2Nlc3MgdG8gaGFyZHdhcmUgcmVzb3VyY2VzLlxuXG5NeSBmaXJzdCB0aG91Z2h0IHdhcywgXCJDb3VsZCB0aGlzICpwb3NzaWJseSogYmUgcmVhY2hlZCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VP1wiIFN5emthbGxlciwgb2YgY291cnNlLCBkb2VzIHJ1biBvbiBhIHZhcmlldHkgb2YgUUVNVS1lbXVsYXRlZCBhcmNoaXRlY3R1cmVzIGxpa2UgQVJNNjQgYW5kIFBQQzY0LiBCdXQgdGhpcyBpcyBGcmVlc2NhbGUgRk1hbi4gSSdtIHByZXR0eSBzdXJlIHRoYXQgc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucyDigJMgYW5kIGNlcnRhaW5seSB0aGUgb25lcyB0eXBpY2FsbHkgdXNlZCBieSBTeXprYWxsZXIgbGlrZSBgdmlydGAgb3IgYHEzNWAg4oCTIGRvbid0IGVtdWxhdGUgKnRoaXMqIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIEkga25vdyBvZiBzcGVjaWZpYyBgcWVtdS1zeXN0ZW0tcHBjYCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgY29uZmlndXJhdGlvbnMsIGJ1dCBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIHVzZSB0aGVtIGZvciB0aGlzLiBTbyBpdCBzZWVtcyB1bmxpa2VseS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgZm1hbl9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGZtYW5fcHJvYmVgLiBgZm1hbl9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBgZm1hbl9kcml2ZXJgLiBBbmQgYGZtYW5fZHJpdmVyYCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhcmR3YXJlIHdpdGggdGhlIGNvbXBhdGlibGUgc3RyaW5nIFwiZnNsLGZtYW5cIi4gUmlnaHQsIHN0aWxsIG5vIHdheSB0aGF0IGl0J3MgZ29pbmcgdG8gaGl0LlxuXG5FdmVuICppZiogU3l6a2FsbGVyIHNvbWVob3cgaW5qZWN0ZWQgYSBmYWtlIHBsYXRmb3JtIGRldmljZSwgdGhhdCB3b3VsZCBiZSBhIGNvbXBsZXRlIGZhaWwuIEl0IHdvdWxkIGltbWVkaWF0ZWx5IGNyYXNoIGF0IGBvZl9jbGtfZ2V0YCBvciBgaW9yZW1hcGAgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGUgTU1JTyByZWdpb25zLiBObyB2YWxpZCBjbG9jayByZXNvdXJjZXMgb3IgTU1JTyBhZGRyZXNzZXMgZXhpc3QuIEV2ZW4gKmlmKiB0aG9zZSBwYXNzZWQsIHRoZSBkcml2ZXIgaW1tZWRpYXRlbHkgY2FsbHMgaGFyZHdhcmUgTU1JTyBhY2Nlc3NlcyB3aGljaCB3b3VsZCBmYXVsdCBpZiBub3QgYmFja2VkIGJ5IHJlYWwgaGFyZHdhcmUgb3Igc3BlY2lmaWMgZW11bGF0aW9uLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgdGhlcmUncyBubyB3YXkgdGhpcyBjb2RlIHBhdGggaXMgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIE1NSU8gYWNjZXNzZXMgYW5kIGNsb2NrIGRlcGVuZGVuY2llcyBhcmUgdG9vIHNwZWNpZmljLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCB3b3VsZCBiZSBhIGNvbXBsZXRlIHdhc3RlIG9mIGZ1enppbmcgY3ljbGVzIHRvIGF0dGVtcHQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ1OSwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMjoxNjo1MS43MTc3MTgzNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgY2xvY2tzLCBhbmQgTU1JTyByZXNvdXJjZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSB1c2VkIGJ5IGZ1enplcnMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBNTUlPIHJlc291cmNlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIHVzZWQgYnkgZnV6emVycywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown7lft[1] Phase: Running StartedAt: 2026-06-24 12:17:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7lft[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-24 12:17:23 +0000 UTC FinishedAt: 2026-06-24 12:17:34 +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,}