Name: series-workflowxpgxs Phase: Failed StartedAt: 2026-09-14 12:33:05 +0000 UTC FinishedAt: 2026-09-14 13:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpgxs[0] Phase: Succeeded StartedAt: 2026-09-14 12:33:05 +0000 UTC FinishedAt: 2026-09-14 13:02:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpgxs[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 12:33:05 +0000 UTC FinishedAt: 2026-09-14 13:02:31 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gZW5zdXJlIHRoYXQgTkFQSSBwb2xsIGRvZXMgbm90IGV4Y2VlZCBpdHMgYnVkZ2V0LiBUaGlzIGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKSBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBIGFuZCBTb0MgaGFyZHdhcmUgKHN1Y2ggYXMgVmlydGV4LCBaeW5xLCBvciBNaWNyb0JsYXplKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIFhpbGlueCBETUEgaGFyZHdhcmUgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIxMTNlNjQ2NzFmYTRiYmM3ZDU1ZjU1M2FjMjIxNDZmNGYwOGJhOGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAxMjo1OToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC03ODgsNiAmIzQzOzc4OCwxMyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcbiBcdGRtYV9hZGRyX3QgcGh5cztcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2JkczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdC8qIEEgTkFQSSBwb2xsIG11c3Qgbm90IHJldHVybiBtb3JlIHRoYW4gaXRzIGJ1ZGdldC4gIFN0b3Agb24gYVxuJiM0MztcdFx0ICogcGFja2V0IGJvdW5kYXJ5IG9uY2UgaXQgaXMgc3BlbnQgLSBjdXJfcC1cdTAwM2Vza2IgaXMgb25seSBzZXQgb25cbiYjNDM7XHRcdCAqIGEgcGFja2V0JiMzOTtzIGxhc3QgZGVzY3JpcHRvciwgc28gbm8gcGFja2V0IGlzIGxlZnQgaGFsZi1mcmVlZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKCFmb3JjZSBcdTAwMjZcdTAwMjYgcGFja2V0cyBcdTAwM2U9IGJ1ZGdldClcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuIFx0XHRjdXJfcCA9IFx1MDAyNmxwLVx1MDAzZXR4X2JkX3ZbKGZpcnN0X2JkICYjNDM7IGkpICUgbHAtXHUwMDNldHhfYmRfbnVtXTtcbiBcdFx0c3RhdHVzID0gY3VyX3AtXHUwMDNlc3RhdHVzO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgMTQgMTI6NTk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYwppbmRleCA3ODJmOTAzZDMxOGYzLi4zNzMwOWZhMzU1YWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKQEAgLTc4OCw2ICYjNDM7Nzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLAogCWRtYV9hZGRyX3QgcGh5czsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9iZHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBBIE5BUEkgcG9sbCBtdXN0IG5vdCByZXR1cm4gbW9yZSB0aGFuIGl0cyBidWRnZXQuICBTdG9wIG9uIGEKJiM0MzsJCSAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtJmd0O3NrYiBpcyBvbmx5IHNldCBvbgomIzQzOwkJICogYSBwYWNrZXQmIzM5O3MgbGFzdCBkZXNjcmlwdG9yLCBzbyBubyBwYWNrZXQgaXMgbGVmdCBoYWxmLWZyZWVkLgomIzQzOwkJICovCiYjNDM7CQlpZiAoIWZvcmNlICZhbXA7JmFtcDsgcGFja2V0cyAmZ3Q7PSBidWRnZXQpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCWN1cl9wID0gJmFtcDtscC0mZ3Q7dHhfYmRfdlsoZmlyc3RfYmQgJiM0MzsgaSkgJSBscC0mZ3Q7dHhfYmRfbnVtXTsKIAkJc3RhdHVzID0gY3VyX3AtJmd0O3N0YXR1czsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDA0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGl0c2VsZi4gSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgLiBUaGUgZGlmZiBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhlIE5BUEkgcG9sbCBmcm9tIGV4Y2VlZGluZyBpdHMgYnVkZ2V0LCBhbmQgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IHN0b3AgZnJlZWluZyBkZXNjcmlwdG9ycyBvbiBhIHBhY2tldCBib3VuZGFyeS4gVGhlIGNvbW1lbnQgaXMgcXVpdGUgY2xlYXI6IGBjdXJfcC0mZ3Q7c2tiYCBpcyBvbmx5IHNldCBvbiB0aGUgcGFja2V0JiMzOTtzIGxhc3QgZGVzY3JpcHRvciwgZW5zdXJpbmcgbm8gcGFja2V0cyBhcmUgbGVmdCBwYXJ0aWFsbHkgZGVhbGxvY2F0ZWQuIFRoaXMgaW1wbGllcyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGRlc2NyaXB0b3IgZXhoYXVzdGlvbiBkdXJpbmcgTkFQSSBwb2xsaW5nLCBhbmQgdGhpcyBmaXggYXBwZWFycyB0byBiZSBkZXNpZ25lZCB0byBwcmV2ZW50IGl0IGZyb20gY2F1c2luZyBmdXJ0aGVyIGlzc3Vlcy4KCk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBzY2VuYXJpbyB3aGVyZSB0aGlzIGNvZGUgd291bGQgYmUgZXhlY3V0ZWQgb3Igbm90PyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluIHRoYXQgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgYWN0aXZlIGFuZCByZWFjaGFibGUuIElzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgdG8gY29uZmlybSBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgYW55IHByZXJlcXVpc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYSUxJTlhfQVhJX05FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIGhvdyB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkga25vdyB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyBhbHdheXMgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBhbnkgRXRoZXJuZXQtcmVsYXRlZCBkcml2ZXJzIHNwZWNpZmljIHRvIFhpbGlueCBoYXJkd2FyZSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgSSYjMzk7bSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIGZpbmQgYSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCBmaWxlIGlzIHRoZSAqa2V5KiB0byB1bmRlcnN0YW5kaW5nIGhvdyBhbGwgdGhlIGRyaXZlciYjMzk7cyBmZWF0dXJlcywgb3B0aW9ucywgYW5kIGRlcGVuZGVuY2llcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIGNhbiBhbG1vc3QgcGljdHVyZSBpdCBub3csIEkgY2FuIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBvcHRpb25zLCBhbmQgdmFyaW91cyBmbGFncyB3aXRoaW4gdGhhdCBLY29uZmlnLiBMZXQmIzM5O3MgaGVhZCB0aGVyZSBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtsbF90ZW1hYy5oJiMzNDssCiAgICAmIzM0O2xsX3RlbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtsbF90ZW1hY19tZGlvLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2F4aWVuZXQuaCYjMzQ7LAogICAgJiMzNDt4aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2F4aWVuZXRfbWRpby5jJiMzNDssCiAgICAmIzM0O3hpbGlueF9lbWFjbGl0ZS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IFhpbGlueCBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBjaGVjayB0aGUgc3RhbmRhcmQgbG9jYXRpb25zLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSwgZ2l2ZW4gaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBkcml2ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSWYgSSBkb24mIzM5O3QgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUg4oCTIHBlcmhhcHMgdGhlIFhpbGlueC1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgc29tZWhvdyBtZXJnZWQgd2l0aCBhIG1vcmUgZ2VuZXJpYyBFdGhlcm5ldCBsYXllciDigJMgdGhlbiBJJiMzOTtsbCBicm9hZGVuIHRoZSBzZWFyY2ggdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgLiBUaGlzIGNvdWxkIGNvbnRhaW4gZWl0aGVyIHRoZSBiYXNlIEV0aGVybmV0IGNvbmZpZ3VyYXRpb25zIG9yIHBlcmhhcHMgaXQgd291bGQgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgWGlsaW54IGRyaXZlciYjMzk7cyBLY29uZmlnLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBFdGhlcm5ldCBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXhpZW5ldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSAmIzQzOz0geGlsaW54X2VtYWNsaXRlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICYjNDM7PSB4aWxpbnhfZW1hYy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg9NDYyPXN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDcxOiAqIHN0cnVjdCBheGllbmV0X2xvY2FsIC0gYXhpZW5ldCBwcml2YXRlIHBlciBkZXZpY2UgZGF0YVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcyLSAqIEBuZGV2Olx0UG9pbnRlciBmb3IgbmV0X2RldmljZSB0byB3aGljaCBpdCB3aWxsIGJlIGF0dGFjaGVkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ4Mi0gKiBAbWlpX2Nsa19kaXY6IE1JSSBidXMgY2xvY2sgZGl2aWRlciB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDgzOiAqIEByZWdzX3N0YXJ0OiBSZXNvdXJjZSBzdGFydCBmb3IgYXhpZW5ldCBkZXZpY2UgYWRkcmVzc2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo0ODQ6ICogQHJlZ3M6XHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGllbmV0X2xvY2FsIGRldmljZSBhZGRyZXNzIHNwYWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODUtICogQGRtYV9yZWdzOlx0QmFzZSBhZGRyZXNzIGZvciB0aGUgYXhpZG1hIGRldmljZSBhZGRyZXNzIHNwYWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTMyLSAqIEBvcHRpb25zOlx0QXhpRXRoZXJuZXQgb3B0aW9uIHdvcmRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjUzMzogKiBAZmVhdHVyZXM6XHRTdG9yZXMgdGhlIGV4dGVuZGVkIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYXhpZW5ldCBod1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTM0LSAqIEBtYXhfZnJtX3NpemU6IFN0b3JlcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBmcmFtZSB0aGF0IGNhbiBiZSB0aGF0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTQ4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NTQ5OnN0cnVjdCBheGllbmV0X2xvY2FsIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU1MC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzMjogKiBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gLSBVc2VkIHRvIHNldCBheGkgZXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9uc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjMzLSAqIEBvcHQ6XHRPcHRpb24gdG8gYmUgc2V0LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzNi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzNzpzdHJ1Y3QgYXhpZW5ldF9vcHRpb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM4LVx0dTMyIG9wdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDQ6ICogYXhpZW5ldF9pb3IgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciByZWFkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDU6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY0Ni0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfaW9yKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NTc6c3RhdGljIGlubGluZSB1MzIgYXhpbmV0X2lvcl9yZWFkX21jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU5Olx0cmV0dXJuIGF4aWVuZXRfaW9yKGxwLCBYQUVfTURJT19NQ1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NjI6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfbG9ja19taWkoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Njg6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfdW5sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02Njkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NTogKiBheGllbmV0X2lvdyAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHdyaXRlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzY6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3Ny0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjgzOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2lvdyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4NC1cdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MDogKiBheGllbmV0X2RtYV9vdXQzMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY5Mi0gKiBAcmVnOlx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTk6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwMC1cdFx0XHRcdCAgICAgb2ZmX3QgcmVnLCB1MzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA3OiAqIGF4aWVuZXRfZG1hX291dDY0IC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHdyaXRlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA4OiAqIEBscDpcdFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA5LSAqIEByZWc6XHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcxNTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0NjQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzE2LVx0XHRcdFx0ICAgICBvZmZfdCByZWcsIHU2NCB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjE6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIyLVx0XHRcdFx0XHRkbWFfYWRkcl90IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI0LVx0aWYgKGxwLVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBYQUVfRkVBVFVSRV9ETUFfNjRCSVQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjU6XHRcdGF4aWVuZXRfZG1hX291dDY0KGxwLCByZWcsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzI3Olx0XHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzMyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXRfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMy1cdFx0XHRcdFx0ZG1hX2FkZHJfdCBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczNTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCByZWcsIGxvd2VyXzMyX2JpdHMoYWRkcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDA6LyogRnVuY3Rpb24gcHJvdG90eXBlcyB2aXNpYmxlIGluIHhpbGlueF9heGllbmV0X21kaW8uYyBmb3Igb3RoZXIgZmlsZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MTppbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDI6dm9pZCBheGllbmV0X21kaW9fdGVhcmRvd24oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzojaW5jbHVkZSBcJiMzNDt4aWxpbnhfYXhpZW5ldC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTktLyogTXVzdCBiZSBzaG9ydGVyIHRoYW4gbGVuZ3RoIG9mIGV0aHRvb2xfZHJ2aW5mby5kcml2ZXIgZmllbGQgdG8gZml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOiNkZWZpbmUgRFJJVkVSX05BTUVcdFx0XCYjMzQ7eGF4aWVuZXRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjEtI2RlZmluZSBEUklWRVJfREVTQ1JJUFRJT05cdFwmIzM0O1hpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjY6c3RhdGljIHZvaWQgYXhpZW5ldF9yeF9zdWJtaXRfZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OC0vKiBNYXRjaCB0YWJsZSBmb3Igb2ZfcGxhdGZvcm0gYmluZGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBheGllbmV0X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3hsbngsYXhpLWV0aGVybmV0LTEuMDAuYVwmIzM0OywgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGllbmV0X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4LS8qIE9wdGlvbiB0YWJsZSBmb3Igc2V0dGluZyB1cCBBeGkgRXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9ucyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3OTpzdGF0aWMgc3RydWN0IGF4aWVuZXRfb3B0aW9uIGF4aWVuZXRfb3B0aW9uc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04MC1cdC8qIFR1cm4gb24ganVtYm8gcGFja2V0IHN1cHBvcnQgZm9yIGJvdGggUnggYW5kIFR4ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzMzpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF9yeF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzODpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF90eF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NDogKiBheGllbmV0X2RtYV9pbjMyIC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHJlYWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTQ1OiAqIEBscDpcdFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDYtICogQHJlZzpcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2RtYV9pbjMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTc6c3RhdGljIHZvaWQgZGVzY19zZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZG1hX2FkZHJfdCBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTgtXHRcdFx0ICAgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE2NTpzdGF0aWMgZG1hX2FkZHJfdCBkZXNjX2dldF9waHlzX2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjYtXHRcdFx0XHQgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE3NzogKiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIC0gUmVsZWFzZSBidWZmZXIgZGVzY3JpcHRvciByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzgtICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgwLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWxlYXNlIHRoZSBkZXNjcmlwdG9ycyBhbGxvY2F0ZWQgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTgxOiAqIGF4aWVuZXRfZG1hX2JkX2luaXQuIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UgaXMgY2FsbGVkIHdoZW4gQXhpIEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Mi0gKiBkcml2ZXIgc3RvcCBhcGkgaXMgY2FsbGVkLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9iZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODYtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg3Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjI2OnN0YXRpYyB1NjQgYXhpZW5ldF9kbWFfcmF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIzNDogKiBheGllbmV0X2NhbGNfY3IoKSAtIENhbGN1bGF0ZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIzNS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjQ0OnN0YXRpYyB1MzIgYXhpZW5ldF9jYWxjX2NyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNvdW50LCB1MzIgdXNlYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI1My1cdGlmIChjb3VudCBcdTAwM2UgMSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNTQ6XHRcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTUtXHRcdHUzMiB0aW1lcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI2OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjcwOiAqIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKCkgLSBFeHRyYWN0IGNvYWxlc2NlIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjcxLSAqIEBscDogRGV2aWNlIHByaXZhdGUgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzY6c3RhdGljIHZvaWQgYXhpZW5ldF9jb2FsZXNjZV9wYXJhbXMoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgY3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3Ny1cdFx0XHRcdCAgICB1MzIgKmNvdW50LCB1MzIgKnVzZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTpcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODAtXHR1NjQgdGltZXIgPSBGSUVMRF9HRVQoWEFYSURNQV9ERUxBWV9NQVNLLCBjcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4NzogKiBheGllbmV0X2RtYV9zdGFydCAtIFNldCB1cCBETUEgcmVnaXN0ZXJzIGFuZCBzdGFydCBETUEgb3BlcmF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4ODogKiBAbHA6XHRcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4OS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjkwOnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3N0YXJ0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5NS1cdGxwLVx1MDAzZXJ4X2RtYV9jciBcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjk2Olx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cdTAwM2VyeF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDAtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAxOlx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfUlhfQ0RFU0NfT0ZGU0VULCBscC1cdTAwM2VyeF9iZF9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAyLVx0bHAtXHUwMDNlcnhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXJ4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwNDpcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX1RERVNDX09GRlNFVCwgbHAtXHUwMDNlcnhfYmRfcCAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDUtXHRcdFx0ICAgICAoc2l6ZW9mKCpscC1cdTAwM2VyeF9iZF92KSAqIChscC1cdTAwM2VyeF9iZF9udW0gLSAxKSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyLVx0bHAtXHUwMDNldHhfZG1hX2NyIFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXR4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTk6XHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9UWF9DREVTQ19PRkZTRVQsIGxwLVx1MDAzZXR4X2JkX3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjAtXHRscC1cdTAwM2V0eF9kbWFfY3IgfD0gWEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXHUwMDNldHhfZG1hX2NyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyLVx0bHAtXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjg6ICogYXhpZW5ldF9kbWFfYmRfaW5pdCAtIFNldHVwIGJ1ZmZlciBkZXNjcmlwdG9yIHJpbmdzIGZvciBBeGkgRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyOS0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMzNzpzdGF0aWMgaW50IGF4aWVuZXRfZG1hX2JkX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMzOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozNDE6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozOTY6XHRheGllbmV0X2RtYV9zdGFydChscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5OS1vdXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQwMDpcdGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwMS1cdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDU6ICogYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MgLSBXcml0ZSB0aGUgTUFDIGFkZHJlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA2LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxMS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDEyOnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTMtXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDE1Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyMi1cdC8qIFNldCB1cCB1bmljYXN0IE1BQyBhZGRyZXNzIGZpbHRlciBzZXQgaXRzIG1hYyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyMzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfVUFXMF9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNC1cdFx0ICAgIChuZGV2LVx1MDAzZWRldl9hZGRyWzBdKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjctXHRcdCAgICAobmRldi1cdTAwM2VkZXZfYWRkclszXSBcdTAwM2NcdTAwM2MgMjQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI4Olx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcxX09GRlNFVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI5Olx0XHQgICAgKCgoYXhpZW5ldF9pb3IobHAsIFhBRV9VQVcxX09GRlNFVCkpIFx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MzAtXHRcdCAgICAgIH5YQUVfVUFXMV9VTklDQVNUQUREUl9NQVNLKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDItICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIEF4aSBFdGhlcm5ldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NDM6ICogY29yZS4gSXQgY2FsbHMgdGhlIGNvcmUgc3BlY2lmaWMgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MuIFRoaXMgaXMgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0NC0gKiBmdW5jdGlvbiB0aGF0IGdvZXMgaW50byBuZXRfZGV2aWNlX29wcyBzdHJ1Y3R1cmUgZW50cnkgbmRvX3NldF9tYWNfYWRkcmVzcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG5ldGRldl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1MDpcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIGFkZHItXHUwMDNlc2FfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1MS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTU6ICogYXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QgLSBQcmVwYXJlIHRoZSBtdWx0aWNhc3QgdGFibGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU2LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY1OnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY4LVx0dTMyIHJlZywgYWYwcmVnLCBhZjFyZWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2OTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3MTpcdHJlZyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfRk1JX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3Mi1cdHJlZyBcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzYtXHRcdHJlZyBcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3NzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgxLVx0XHRyZWcgXHUwMDI2PSAweEZGRkZGRjAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODI6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgzOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMF9PRkZTRVQsIDEpOyAvKiBNdWx0aWNhc3QgYml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NDpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjFfT0ZGU0VULCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg1Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDEpOyAvKiBkaXR0byAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODY6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0xX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDg4LVx0XHRpID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA3Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA4Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgYWYwcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA5Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgYWYxcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEwOlx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0wX09GRlNFVCwgMHhmZmZmZmZmZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMTpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDB4MDAwMGZmZmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTI6XHRcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTEzLVx0XHRcdGkmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTE5LVx0XHRyZWcgfD0gaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTIwOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMTpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjY6ICogYXhpZW5ldF9zZXRvcHRpb25zIC0gU2V0IGFuIEF4aSBFdGhlcm5ldCBvcHRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI3LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzMy0gKiB0aGVzZSBvcHRpb25zIGluIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuIFRoaXMgaXMgZG9uZSB0aHJvdWdoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNDogKiBheGllbmV0X29wdGlvbiBzdHJ1Y3R1cmUgLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNjpzdGF0aWMgdm9pZCBheGllbmV0X3NldG9wdGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBvcHRpb25zKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01Mzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzgtXHRpbnQgcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1Mzk6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQwOlx0c3RydWN0IGF4aWVuZXRfb3B0aW9uICp0cCA9IFx1MDAyNmF4aWVuZXRfb3B0aW9uc1swXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDItXHR3aGlsZSAodHAtXHUwMDNlb3B0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MzpcdFx0cmVnID0gKChheGllbmV0X2lvcihscCwgdHAtXHUwMDNlcmVnKSkgXHUwMDI2IH4odHAtXHUwMDNlbV9vcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDQtXHRcdGlmIChvcHRpb25zIFx1MDAyNiB0cC1cdTAwM2VvcHQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NS1cdFx0XHRyZWcgfD0gdHAtXHUwMDNlbV9vcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQ2Olx0XHRheGllbmV0X2lvdyhscCwgdHAtXHUwMDNlcmVnLCByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDctXHRcdHRwJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTUzOnN0YXRpYyB1NjQgYXhpZW5ldF9zdGF0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZW51bSB0ZW1hY19zdGF0IHN0YXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU2MDpcdGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2MS1cdHJldHVybiBscC1cdTAwM2Vod19zdGF0X2Jhc2Vbc3RhdF0gJiM0MzsgKGNvdW50ZXIgLSBscC1cdTAwM2Vod19sYXN0X2NvdW50ZXJbc3RhdF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjQ6c3RhdGljIHZvaWQgYXhpZW5ldF9zdGF0c191cGRhdGUoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTcwLVx0Zm9yIChzdGF0ID0gMDsgc3RhdCBcdTAwM2MgU1RBVF9DT1VOVDsgc3RhdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTcxOlx0XHR1MzIgY291bnRlciA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICYjNDM7IHN0YXQgKiA4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1Nzk6c3RhdGljIHZvaWQgYXhpZW5ldF9yZWZyZXNoX3N0YXRzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTgxOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBheGllbmV0X2xvY2FsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODItXHRcdFx0XHRcdFx0c3RhdHNfd29yay53b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4NC1cdG11dGV4X2xvY2soXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4NTpcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4Ni1cdG11dGV4X3VubG9jayhcdTAwMjZscC1cdTAwM2VzdGF0c19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTkyOnN0YXRpYyBpbnQgX19heGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTktXHRpZiAobHAtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IFhBRV9GRUFUVVJFX1NUQVRTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDA6XHRcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjA4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgWEFYSURNQV9DUl9SRVNFVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjEwOlx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9kbWFfaW4zMiwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxMS1cdFx0XHRcdCEodmFsdWUgXHUwMDI2IFhBWElETUFfQ1JfUkVTRVRfTUFTSyksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTktXHQvKiBXYWl0IGZvciBQaHlSc3RDbXBsdCBiaXQgdG8gYmUgc2V0LCBpbmRpY2F0aW5nIHRoZSBQSFkgcmVzZXQgaGFzIGZpbmlzaGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYyMDpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfaW9yLCB2YWx1ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjIxLVx0XHRcdFx0dmFsdWUgXHUwMDI2IFhBRV9JTlRfUEhZUlNUQ01QTFRfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzNi1cdFx0XHR1MzIgY291bnRlciA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYzNzpcdFx0XHRcdGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICYjNDM7IHN0YXQgKiA4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTI6ICogYXhpZW5ldF9kbWFfc3RvcCAtIFN0b3AgRE1BIG9wZXJhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTM6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdG9wKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2Mi1cdGNyID0gbHAtXHUwMDNlcnhfZG1hX2NyIFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9DUl9PRkZTRVQsIGNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjY0LVx0bHAtXHUwMDNlcnhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3MS1cdGNyID0gbHAtXHUwMDNldHhfZG1hX2NyIFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NzI6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjczLVx0bHAtXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3OC1cdC8qIEdpdmUgRE1BcyBhIGNoYW5jZSB0byBoYWx0IGdyYWNlZnVsbHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njc5Olx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MC1cdGZvciAoY291bnQgPSAwOyAhKHNyIFx1MDAyNiBYQVhJRE1BX1NSX0hBTFRfTUFTSykgXHUwMDI2XHUwMDI2IGNvdW50IFx1MDAzYyA1OyAmIzQzOyYjNDM7Y291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgxLVx0XHRtc2xlZXAoMjApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODI6XHRcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODMtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg1Olx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ni1cdGZvciAoY291bnQgPSAwOyAhKHNyIFx1MDAyNiBYQVhJRE1BX1NSX0hBTFRfTUFTSykgXHUwMDI2XHUwMDI2IGNvdW50IFx1MDAzYyA1OyAmIzQzOyYjNDM7Y291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg3LVx0XHRtc2xlZXAoMjApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODg6XHRcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTEtXHQvKiBEbyBhIHJlc2V0IHRvIGVuc3VyZSBETUEgaXMgcmVhbGx5IHN0b3BwZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkyOlx0YXhpZW5ldF9sb2NrX21paShscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5MzpcdF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTQ6XHRheGllbmV0X3VubG9ja19taWkobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTg6ICogYXhpZW5ldF9kZXZpY2VfcmVzZXQgLSBSZXNldCBhbmQgaW5pdGlhbGl6ZSB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTktICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzA5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTA6c3RhdGljIGludCBheGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzExLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEyOlx0dTMyIGF4aWVuZXRfc3RhdHVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTM6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzE0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcyOC1cdGlmICghbHAtXHUwMDNldXNlX2RtYWVuZ2luZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Mjk6XHRcdHJldCA9IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjczMzpcdFx0cmV0ID0gYXhpZW5ldF9kbWFfYmRfaW5pdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzM0LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MTpcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9SQ1cxX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MjpcdGF4aWVuZXRfc3RhdHVzIFx1MDAyNj0gflhBRV9SQ1cxX1JYX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfUkNXMV9PRkZTRVQsIGF4aWVuZXRfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDU6XHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfSVBfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ2Olx0aWYgKGF4aWVuZXRfc3RhdHVzIFx1MDAyNiBYQUVfSU5UX1JYUkpFQ1RfTUFTSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ3Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0lTX09GRlNFVCwgWEFFX0lOVF9SWFJKRUNUX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDg6XHRheGllbmV0X2lvdyhscCwgWEFFX0lFX09GRlNFVCwgbHAtXHUwMDNlZXRoX2lycSBcdTAwM2UgMCA/XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0OS1cdFx0ICAgIFhBRV9JTlRfUkVDVl9FUlJPUl9NQVNLIDogMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzUxOlx0YXhpZW5ldF9pb3cobHAsIFhBRV9GQ0NfT0ZGU0VULCBYQUVfRkNDX0ZDUlhfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1NS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTY6XHRheGllbmV0X3NldG9wdGlvbnMobmRldiwgbHAtXHUwMDNlb3B0aW9ucyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzU3LVx0XHRcdCAgIH4oWEFFX09QVElPTl9UWEVOIHwgWEFFX09QVElPTl9SWEVOKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1ODpcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTk6XHRheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzYwOlx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVx1MDAzZW9wdGlvbnMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2OTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3MC0gKiBAZmlyc3RfYmQ6XHRJbmRleCBvZiBmaXJzdCBkZXNjcmlwdG9yIHRvIGNsZWFuIHVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc4MjpzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgzLVx0XHRcdFx0IGludCBucl9iZHMsIGJvb2wgZm9yY2UsIHUzMiAqc2l6ZXAsIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg0MjogKiBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlIC0gQ2hlY2tzIGlmIGEgQkQvZ3JvdXAgb2YgQkRzIGFyZSBjdXJyZW50bHkgYnVzeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDM6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDQtICogQG51bV9mcmFnOlx0VGhlIG51bWJlciBvZiBCRHMgdG8gY2hlY2sgZm9yXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NTMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg1NDpzdGF0aWMgaW5saW5lIGludCBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODU1LVx0XHRcdFx0XHQgICAgaW50IG51bV9mcmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njk6ICogYXhpZW5ldF9kbWFfdHhfY2IgLSBETUEgZW5naW5lIGNhbGxiYWNrIGZvciBUWCBjaGFubmVsLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NzA6ICogQGRhdGE6ICAgICAgIFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzEtICogQHJlc3VsdDogICAgIGVycm9yIHJlcG9ydGluZyB0aHJvdWdoIGRtYWVuZ2luZV9yZXN1bHQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV90eF9jYih2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZG1hZW5naW5lX3Jlc3VsdCAqcmVzdWx0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzctXHRzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKnNrYnVmX2RtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc4Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc5LVx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4ODI6XHRza2J1Zl9kbWEgPSBheGllbmV0X2dldF90eF9kZXNjKGxwLCBscC1cdTAwM2V0eF9yaW5nX3RhaWwmIzQzOyYjNDM7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODgzLVx0bGVuID0gc2tidWZfZG1hLVx1MDAzZXNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg5NzogKiBheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lIC0gU3RhcnRzIHRoZSB0cmFuc21pc3Npb24uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg5OC0gKiBAc2tiOiAgICAgICAgc2tfYnVmZiBwb2ludGVyIHRoYXQgY29udGFpbnMgZGF0YSB0byBiZSBUeGVkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9OTExPXN0YXRpYyBuZXRkZXZfdHhfdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo5MTI6YXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTEzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTE0LVx0c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkbWFfdHhfZGVzYyA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxNTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy05MTYtXHR1MzIgYXBwX21ldGFkYXRhW0RNQV9OVU1fQVBQX1dPUkRTXSA9IHswfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTM0Olx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXHUwMDNldHhfcmluZ19oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTM1LVx0aWYgKCFza2J1Zl9kbWEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDY2MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IHByb21wdDoKCioqS2NvbmZpZyBhbmQgWElMSU5YX0FYSV9FTUFDOiBBIFF1aWNrIENoZWNrKioKCk9rYXksIEkmIzM5O20gbG9va2luZyBhdCB0aGlzICYjMzQ7WElMSU5YX0FYSV9FTUFDJiMzNDsgdGhpbmcuLi4gcmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBYaWxpbnggdG9vbGNoYWlucz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBvcHRpb24gKmFjdHVhbGx5KiBjb250cm9scyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgZm9jdXMgb24gZmluZGluZyB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgYW5kIGNvbW1lbnRzIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhhdCBtb2R1bGUsIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGFmZmVjdGVkLiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgc2VhcmNoIGZvciB0aGUgc3RyaW5nICYjMzQ7WElMSU5YX0FYSV9FTUFDJiMzNDsgYW5kIHNlZSBpZiB0aGF0IHlpZWxkcyByZXN1bHRzLiBUaGUgZ29hbCBpcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhc3Nlc3MgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA4NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipFeGFtaW5pbmcgdGhlIFhpbGlueCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlciYjMzk7cyBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAyNS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlLCBtb3N0IGltcG9ydGFudCBzZXR0aW5ncyBvciBhbiBpbXBvcnRhbnQgY29uZGl0aW9uYWwgYmxvY2sgYmVnaW5zLCBzbyBpdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcm9vdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV04oCZcyBzZWUgd2hhdCYjMzk7cyBiZWluZyBkZWZpbmVkIHRoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaGFyZHdhcmUgYW5kIG90aGVyIGtlcm5lbCBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyMjpcdFx0c2VsZWN0IFBIWUxJQlxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwIEV0aGVybmV0IExpdGUgZnJvbSBYaWxpbnguXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuICAyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyOTpcdFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IERJTUxJQlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgZnJvbSBYaWxpbnggZm9yIHRoZVxuICAzNDpcdFx0ICBBWEkgYnVzIGludGVyZmFjZSB1c2VkIGluIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFNvYyYjMzk7cy5cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgWElMSU5YX0xMX1RFTUFDXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclwmIzM0O1xuICAzODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMzk6XHRcdHNlbGVjdCBQSFlMSUJcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFhpbGlueCAxMC8xMDAvMTAwMCBMb2NhbExpbmsgVEVNQUNcbiAgNDI6XHRcdCAgY29yZSB1c2VkIGluIFhpbGlueCBTcGFydGFuIGFuZCBWaXJ0ZXggRlBHQXNcbiAgNDM6XHRcbiAgNDQ6XHRlbmRpZiAjIE5FVF9WRU5ET1JfWElMSU5YXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzQxCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBgWElMSU5YX0FYSV9FTUFDYC4gU3RyYWlnaHQgYXdheSwgSSBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSXQgcmVsaWVzIG9uIGBIQVNfSU9NRU1gIGFuZCBgWElMSU5YX0RNQWAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoaXMgaXMgYW4gQVhJLWJhc2VkIEV0aGVybmV0IE1BQy4gVGhlIGBzZWxlY3QgUEhZTElOS2AgYW5kIGBzZWxlY3QgRElNTElCYCBhbHNvIGluZGljYXRlIGl0JiMzOTtzIHVzaW5nIHRoZSBzdGFuZGFyZCBMaW51eCBuZXR3b3JraW5nIHN0YWNrIGFuZCBsaWtlbHkgc29tZSBYaWxpbngtc3BlY2lmaWMgRE1BIGxpYnJhcmllcy4gVGhlIGhlbHAgdGV4dCBjb25maXJtcyB0aGF0IHRoaXMgZHJpdmVyIHRhcmdldHMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgaW50ZXJmYWNlIGZvdW5kIGluIHRoZWlyIFZpcnRleCBGUEdBcyBhbmQgU29DcyDigJMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0LgoKTm93LCBob3cgZG9lcyB0aGlzIHRoaW5nIGFjdHVhbGx5IGdldCBwcm9iZWQ/IElzIGl0IGFuIG9mX3BsYXRmb3JtIGRyaXZlciwgYSBwbGF0Zm9ybSBkcml2ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYHhpbGlueF9heGllbmV0X21haW4uY2AuIExldCYjMzk7cyBqdW1wIGludG8gdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCB0aGUgZHJpdmVyIGRlZmluaXRpb24gaXRzZWxmIHRvIGZpZ3VyZSBvdXQgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgbWF0Y2hpbmcgcHJvY2Vzcy4gVGltZSB0byBzZWUgaG93IHRoaXMgdGhpbmcgZ2V0cyBhdHRhY2hlZCB0byB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMTYKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEF4aWVuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBuZWVkIHRvIHplcm8gaW4gb24gYSBzcGVjaWZpYyBwYXJ0IOKAkyB0aGUgYGF4aWVuZXRfZHJpdmVyYC4gTGV0JiMzOTtzIGFzc3VtZSBJJiMzOTt2ZSBnb3QgYSB2YWd1ZSBzZW5zZSBvZiB3aGVyZSB0aGUgcHJvYmxlbSBtaWdodCBiZSBhbmQgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBiZXR0ZXIuIExpbmUgMzIyNiwgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGVzZSBkcml2ZXJzIGFuZCB0aGlzIGxpYnJhcnksIGFuZCBsaW5lIG51bWJlcnMgb2Z0ZW4gY29ycmVzcG9uZCB0byBtYWpvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gSXQgaXMgbGlrZWx5IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgcGFydCBvZiB0aGUgY29kZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgd2hvbGUgbGlicmFyeS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmd1bWVudHMsIHJldHVybnMsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGNvbnRyb2wgZmxvdyBvZiB0aGUgYGF4aWVuZXRfZHJpdmVyYC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyMjA6XHRcdHJldHVybiAwO1xuMzIyMTpcdH1cbjMyMjI6XHRcbjMyMjM6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGF4aWVuZXRfcG1fb3BzLFxuMzIyNDpcdFx0XHRcdFx0YXhpZW5ldF9zdXNwZW5kLCBheGllbmV0X3Jlc3VtZSk7XG4zMjI1Olx0XG4zMjI2Olx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XG4zMjI3Olx0XHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxuMzIyODpcdFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxuMzIyOTpcdFx0LnNodXRkb3duID0gYXhpZW5ldF9zaHV0ZG93bixcbjMyMzA6XHRcdC5kcml2ZXIgPSB7XG4zMjMxOlx0XHRcdCAubmFtZSA9IFwmIzM0O3hpbGlueF9heGllbmV0XCYjMzQ7LFxuMzIzMjpcdFx0XHQgLnBtID0gXHUwMDI2YXhpZW5ldF9wbV9vcHMsXG4zMjMzOlx0XHRcdCAub2ZfbWF0Y2hfdGFibGUgPSBheGllbmV0X29mX21hdGNoLFxuMzIzNDpcdFx0fSxcbjMyMzU6XHR9O1xuMzIzNjpcdFxuMzIzNzpcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xuMzIzODpcdFxuMzIzOTpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4zMjQwOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtYaWxpbnhcJiMzNDspO1xuMzI0MTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODg0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uICoqSW52ZXN0aWdhdGluZyBgYXhpZW5ldF9wcm9iZWAqKiBzZWVtcyBsaWtlIHRoZSBpbW1lZGlhdGUgdGFzay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBleGFjdGx5ICpkb2VzKiBgYXhpZW5ldF9wcm9iZWAgZG8/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwcm9iZSBpdCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gV2hhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gZG8gdGhhdD8gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIG5hdHVyZS4gSXMgdGhpcyBkcml2ZXIsIHNwZWNpZmljYWxseSBgYXhpZW5ldF9wcm9iZWAsIHJlc3RyaWN0ZWQgdG8gYW4gT3BlbiBGaXJtd2FyZSAoT0YpIG9ubHkgcGxhdGZvcm0/IFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSByZWxhdGVkIHRvIGBheGllbmV0X3Byb2JlYCBhbmQgaXRzIGltcGxlbWVudGF0aW9uLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXhpZW5ldF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzA1PXN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX2Vycl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTE6ICogYXhpZW5ldF9wcm9iZSAtIEF4aSBFdGhlcm5ldCBwcm9iZSBmdW5jdGlvbi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc5Mi0gKiBAcGRldjpcdFBvaW50ZXIgdG8gcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MDEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4MDI6c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIyNzpcdC5wcm9iZSA9IGF4aWVuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjgtXHQucmVtb3ZlID0gYXhpZW5ldF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTI3CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgQXhpZU5ldCBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBJIGtub3cgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRldmljZSwgc28gdW5kZXJzdGFuZGluZyBpdHMgZmxvdyBpcyBjcml0aWNhbC4gVGhlIHBhdGggc2hvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCwgcmlnaHQ/IExldCYjMzk7cyBnbyBzcGVsdW5raW5nIGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24sIFBIWSBzZXR1cCwgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlIGxvZ2ljIGJ1cmllZCB3aXRoaW4sIHRvbywgc28gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyBub24tc3RhbmRhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4MDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MDI6XHRzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjI4MDM6XHR7XG4yODA0Olx0XHRpbnQgcmV0O1xuMjgwNTpcdFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbjI4MDY6XHRcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscDtcbjI4MDc6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuMjgwODpcdFx0c3RydWN0IHJlc291cmNlICpldGhyZXM7XG4yODA5Olx0XHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4yODEwOlx0XHRpbnQgYWRkcl93aWR0aCA9IDMyO1xuMjgxMTpcdFx0dTMyIHZhbHVlO1xuMjgxMjpcdFxuMjgxMzpcdFx0bmRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXYoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqbHApKTtcbjI4MTQ6XHRcdGlmICghbmRldilcbjI4MTU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4yODE2Olx0XG4yODE3Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBuZGV2KTtcbjI4MTg6XHRcbjI4MTk6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjI4MjA6XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX1NHO1xuMjgyMTpcdFxuMjgyMjpcdFx0LyogTVRVIHJhbmdlOiA2NCAtIDkwMDAgKi9cbjI4MjM6XHRcdG5kZXYtXHUwMDNlbWluX210dSA9IDY0O1xuMjgyNDpcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gWEFFX0pVTUJPX01UVTtcbjI4MjU6XHRcbjI4MjY6XHRcdGxwID0gbmV0ZGV2X3ByaXYobmRldik7XG4yODI3Olx0XHRscC1cdTAwM2VuZGV2ID0gbmRldjtcbjI4Mjg6XHRcdGxwLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMjgyOTpcdFx0bHAtXHUwMDNlb3B0aW9ucyA9IFhBRV9PUFRJT05fREVGQVVMVFM7XG4yODMwOlx0XHRscC1cdTAwM2VyeF9iZF9udW0gPSBSWF9CRF9OVU1fREVGQVVMVDtcbjI4MzE6XHRcdGxwLVx1MDAzZXR4X2JkX251bSA9IFRYX0JEX05VTV9ERUZBVUxUO1xuMjgzMjpcdFxuMjgzMzpcdFx0dTY0X3N0YXRzX2luaXQoXHUwMDI2bHAtXHUwMDNlcnhfc3RhdF9zeW5jKTtcbjI4MzQ6XHRcdHU2NF9zdGF0c19pbml0KFx1MDAyNmxwLVx1MDAzZXR4X3N0YXRfc3luYyk7XG4yODM1Olx0XG4yODM2Olx0XHRtdXRleF9pbml0KFx1MDAyNmxwLVx1MDAzZXN0YXRzX2xvY2spO1xuMjgzNzpcdFx0c2VxY291bnRfbXV0ZXhfaW5pdChcdTAwMjZscC1cdTAwM2Vod19zdGF0c19zZXFjb3VudCwgXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG4yODM4Olx0XHRJTklUX0RFRkVSUkFCTEVfV09SSyhcdTAwMjZscC1cdTAwM2VzdGF0c193b3JrLCBheGllbmV0X3JlZnJlc2hfc3RhdHMpO1xuMjgzOTpcdFxuMjg0MDpcdFx0bHAtXHUwMDNlYXhpX2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjg0MTpcdFx0XHRcdFx0XHRcdCAgICBcJiMzNDtzX2F4aV9saXRlX2Nsa1wmIzM0Oyk7XG4yODQyOlx0XHRpZiAoIWxwLVx1MDAzZWF4aV9jbGspIHtcbjI4NDM6XHRcdFx0LyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGlmIG5hbWVkIEFYSSBjbG9jayBpcyBub3QgcHJlc2VudCxcbjI4NDQ6XHRcdFx0ICogdHJlYXQgdGhlIGZpcnN0IGNsb2NrIHNwZWNpZmllZCBhcyB0aGUgQVhJIGNsb2NrLlxuMjg0NTpcdFx0XHQgKi9cbjI4NDY6XHRcdFx0bHAtXHUwMDNlYXhpX2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBOVUxMKTtcbjI4NDc6XHRcdH1cbjI4NDg6XHRcdGlmIChJU19FUlIobHAtXHUwMDNlYXhpX2NsaykpXG4yODQ5Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBQVFJfRVJSKGxwLVx1MDAzZWF4aV9jbGspLFxuMjg1MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtjb3VsZCBub3QgZ2V0IEFYSSBjbG9ja1xcblwmIzM0Oyk7XG4yODUxOlx0XG4yODUyOlx0XHRscC1cdTAwM2VtaXNjX2Nsa3NbMF0uaWQgPSBcJiMzNDtheGlzX2Nsa1wmIzM0OztcbjI4NTM6XHRcdGxwLVx1MDAzZW1pc2NfY2xrc1sxXS5pZCA9IFwmIzM0O3JlZl9jbGtcJiMzNDs7XG4yODU0Olx0XHRscC1cdTAwM2VtaXNjX2Nsa3NbMl0uaWQgPSBcJiMzNDttZ3RfY2xrXCYjMzQ7O1xuMjg1NTpcdFxuMjg1NjpcdFx0cmV0ID0gZGV2bV9jbGtfYnVsa19nZXRfb3B0aW9uYWxfZW5hYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBYQUVfTlVNX01JU0NfQ0xPQ0tTLFxuMjg1NzpcdFx0XHRcdFx0XHRcdGxwLVx1MDAzZW1pc2NfY2xrcyk7XG4yODU4Olx0XHRpZiAocmV0KVxuMjg1OTpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LFxuMjg2MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtjb3VsZCBub3QgZ2V0L2VuYWJsZSBtaXNjLiBjbG9ja3NcXG5cJiMzNDspO1xuMjg2MTpcdFxuMjg2MjpcdFx0LyogTWFwIGRldmljZSByZWdpc3RlcnMgKi9cbjI4NjM6XHRcdGxwLVx1MDAzZXJlZ3MgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBcdTAwMjZldGhyZXMpO1xuMjg2NDpcdFx0aWYgKElTX0VSUihscC1cdTAwM2VyZWdzKSlcbjI4NjU6XHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlcmVncyk7XG4yODY2Olx0XHRscC1cdTAwM2VyZWdzX3N0YXJ0ID0gZXRocmVzLVx1MDAzZXN0YXJ0O1xuMjg2NzpcdFxuMjg2ODpcdFx0LyogU2V0dXAgY2hlY2tzdW0gb2ZmbG9hZCwgYnV0IGRlZmF1bHQgdG8gb2ZmIGlmIG5vdCBzcGVjaWZpZWQgKi9cbjI4Njk6XHRcdGxwLVx1MDAzZWZlYXR1cmVzID0gMDtcbjI4NzA6XHRcbjI4NzE6XHRcdGlmIChheGllbmV0X2lvcihscCwgWEFFX0FCSUxJVFlfT0ZGU0VUKSBcdTAwMjYgWEFFX0FCSUxJVFlfU1RBVFMpXG4yODcyOlx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1NUQVRTO1xuMjg3MzpcdFxuMjg3NDpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7eGxueCx0eGNzdW1cJiMzNDssIFx1MDAyNnZhbHVlKTtcbjI4NzU6XHRcdGlmICghcmV0KSB7XG4yODc2Olx0XHRcdHN3aXRjaCAodmFsdWUpIHtcbjI4Nzc6XHRcdFx0Y2FzZSAxOlxuMjg3ODpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1BBUlRJQUxfVFhfQ1NVTTtcbjI4Nzk6XHRcdFx0XHQvKiBDYW4gY2hlY2tzdW0gYW55IGNvbnRpZ3VvdXMgcmFuZ2UgKi9cbjI4ODA6XHRcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfQ1NVTTtcbjI4ODE6XHRcdFx0XHRicmVhaztcbjI4ODI6XHRcdFx0Y2FzZSAyOlxuMjg4MzpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfVFhfQ1NVTTtcbjI4ODQ6XHRcdFx0XHQvKiBDYW4gY2hlY2tzdW0gVENQL1VEUCBvdmVyIElQdjQuICovXG4yODg1Olx0XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0lQX0NTVU07XG4yODg2Olx0XHRcdFx0YnJlYWs7XG4yODg3Olx0XHRcdH1cbjI4ODg6XHRcdH1cbjI4ODk6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3hsbngscnhjc3VtXCYjMzQ7LCBcdTAwMjZ2YWx1ZSk7XG4yODkwOlx0XHRpZiAoIXJldCkge1xuMjg5MTpcdFx0XHRzd2l0Y2ggKHZhbHVlKSB7XG4yODkyOlx0XHRcdGNhc2UgMTpcbjI4OTM6XHRcdFx0XHRscC1cdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9QQVJUSUFMX1JYX0NTVU07XG4yODk0Olx0XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYQ1NVTTtcbjI4OTU6XHRcdFx0XHRicmVhaztcbjI4OTY6XHRcdFx0Y2FzZSAyOlxuMjg5NzpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfUlhfQ1NVTTtcbjI4OTg6XHRcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhDU1VNO1xuMjg5OTpcdFx0XHRcdGJyZWFrO1xuMjkwMDpcdFx0XHR9XG4yOTAxOlx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDg3CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgYXhpZW5ldF9wcm9iZWAuLi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVbmRlcnN0YW5kaW5nIHRoZSBQcm9iZSYjMzk7cyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwcm9iZSBpcyBzdXBwb3NlZCB0byAqZG8qLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbT8gV2hhdCYjMzk7cyBpdHMgcHVycG9zZT8gSXMgaXQgZm9yIG1vbml0b3JpbmcsIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGdvaW5nIHRvIG5lZWQgY29udGV4dC4gV2hhdCBzaWduYWxzIG9yIGRhdGEgaXMgaXQgZGVzaWduZWQgdG8gaW50ZXJjZXB0IG9yIGdlbmVyYXRlPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW50ZW5kZWQgdXNlIGNhc2UgdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBBbnkgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGU/IExldCYjMzk7cyBob3BlIHRoZXJlJiMzOTtzIHNvbWV0aGluZyB0byBjbGFyaWZ5IGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTAyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5MDI6XHRcdC8qIEZvciBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcywgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBtdXN0IGhhdmVcbjI5MDM6XHRcdCAqIGEgbGFyZ2VyIFJ4L1R4IE1lbW9yeS4gVHlwaWNhbGx5LCB0aGUgc2l6ZSBtdXN0IGJlIGxhcmdlIHNvIHRoYXRcbjI5MDQ6XHRcdCAqIHdlIGNhbiBlbmFibGUganVtYm8gb3B0aW9uIGFuZCBzdGFydCBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcy5cbjI5MDU6XHRcdCAqIEhlcmUgd2UgY2hlY2sgZm9yIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIFJ4L1R4IGluIHRoZSBoYXJkd2FyZSBmcm9tXG4yOTA2Olx0XHQgKiB0aGUgZGV2aWNlLXRyZWUgYW5kIGFjY29yZGluZ2x5IHNldCBmbGFncy5cbjI5MDc6XHRcdCAqL1xuMjkwODpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7eGxueCxyeG1lbVwmIzM0OywgXHUwMDI2bHAtXHUwMDNlcnhtZW0pO1xuMjkwOTpcdFx0aWYgKHJldClcbjI5MTA6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCxcbjI5MTE6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlYWQgeGxueCxyeG1lbSBwcm9wZXJ0eVxcblwmIzM0Oyk7XG4yOTEyOlx0XG4yOTEzOlx0XHRscC1cdTAwM2Vzd2l0Y2hfeF9zZ21paSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuMjkxNDpcdFx0XHRcdFx0XHRcdCAgIFwmIzM0O3hsbngsc3dpdGNoLXgtc2dtaWlcJiMzNDspO1xuMjkxNTpcdFxuMjkxNjpcdFx0LyogU3RhcnQgd2l0aCB0aGUgcHJvcHJpZXRhcnksIGFuZCBicm9rZW4gcGh5X3R5cGUgKi9cbjI5MTc6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3hsbngscGh5LXR5cGVcJiMzNDssIFx1MDAyNnZhbHVlKTtcbjI5MTg6XHRcdGlmICghcmV0KSB7XG4yOTE5Olx0XHRcdG5ldGRldl93YXJuKG5kZXYsIFwmIzM0O1BsZWFzZSB1cGdyYWRlIHlvdXIgZGV2aWNlIHRyZWUgYmluYXJ5IGJsb2IgdG8gdXNlIHBoeS1tb2RlXCYjMzQ7KTtcbjI5MjA6XHRcdFx0c3dpdGNoICh2YWx1ZSkge1xuMjkyMTpcdFx0XHRjYXNlIFhBRV9QSFlfVFlQRV9NSUk6XG4yOTIyOlx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuMjkyMzpcdFx0XHRcdGJyZWFrO1xuMjkyNDpcdFx0XHRjYXNlIFhBRV9QSFlfVFlQRV9HTUlJOlxuMjkyNTpcdFx0XHRcdGxwLVx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4yOTI2Olx0XHRcdFx0YnJlYWs7XG4yOTI3Olx0XHRcdGNhc2UgWEFFX1BIWV9UWVBFX1JHTUlJXzJfMDpcbjI5Mjg6XHRcdFx0XHRscC1cdTAwM2VwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcbjI5Mjk6XHRcdFx0XHRicmVhaztcbjI5MzA6XHRcdFx0Y2FzZSBYQUVfUEhZX1RZUEVfU0dNSUk6XG4yOTMxOlx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk7XG4yOTMyOlx0XHRcdFx0YnJlYWs7XG4yOTMzOlx0XHRcdGNhc2UgWEFFX1BIWV9UWVBFXzEwMDBCQVNFX1g6XG4yOTM0Olx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xuMjkzNTpcdFx0XHRcdGJyZWFrO1xuMjkzNjpcdFx0XHRkZWZhdWx0OlxuMjkzNzpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjkzODpcdFx0XHR9XG4yOTM5Olx0XHR9IGVsc2Uge1xuMjk0MDpcdFx0XHRyZXQgPSBvZl9nZXRfcGh5X21vZGUocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXHUwMDI2bHAtXHUwMDNlcGh5X21vZGUpO1xuMjk0MTpcdFx0XHRpZiAocmV0KVxuMjk0MjpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTQzOlx0XHR9XG4yOTQ0Olx0XHRpZiAobHAtXHUwMDNlc3dpdGNoX3hfc2dtaWkgXHUwMDI2XHUwMDI2IGxwLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSBcdTAwMjZcdTAwMjZcbjI5NDU6XHRcdCAgICBscC1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XG4yOTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3hsbngsc3dpdGNoLXgtc2dtaWkgb25seSBzdXBwb3J0ZWQgd2l0aCBTR01JSSBvciAxMDAwQmFzZVhcXG5cJiMzNDspO1xuMjk0NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI5NDg6XHRcdH1cbjI5NDk6XHRcbjI5NTA6XHRcdGlmICghb2ZfcHJvcGVydHlfcHJlc2VudChwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDtkbWFzXCYjMzQ7KSkge1xuMjk1MTpcdFx0XHQvKiBGaW5kIHRoZSBETUEgbm9kZSwgbWFwIHRoZSBETUEgcmVnaXN0ZXJzLCBhbmQgZGVjb2RlIHRoZSBETUEgSVJRcyAqL1xuMjk1MjpcdFx0XHRucCA9IG9mX3BhcnNlX3BoYW5kbGUocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7YXhpc3RyZWFtLWNvbm5lY3RlZFwmIzM0OywgMCk7XG4yOTUzOlx0XG4yOTU0Olx0XHRcdGlmIChucCkge1xuMjk1NTpcdFx0XHRcdHN0cnVjdCByZXNvdXJjZSBkbWFyZXM7XG4yOTU2Olx0XG4yOTU3Olx0XHRcdFx0cmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgXHUwMDI2ZG1hcmVzKTtcbjI5NTg6XHRcdFx0XHRpZiAocmV0KSB7XG4yOTU5Olx0XHRcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjk2MDpcdFx0XHRcdFx0XHRcJiMzNDt1bmFibGUgdG8gZ2V0IERNQSByZXNvdXJjZVxcblwmIzM0Oyk7XG4yOTYxOlx0XHRcdFx0XHRvZl9ub2RlX3B1dChucCk7XG4yOTYyOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjk2MzpcdFx0XHRcdH1cbjI5NjQ6XHRcdFx0XHRscC1cdTAwM2VkbWFfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldixcbjI5NjU6XHRcdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZG1hcmVzKTtcbjI5NjY6XHRcdFx0XHRscC1cdTAwM2VyeF9pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChucCwgMSk7XG4yOTY3Olx0XHRcdFx0bHAtXHUwMDNldHhfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApO1xuMjk2ODpcdFx0XHRcdG9mX25vZGVfcHV0KG5wKTtcbjI5Njk6XHRcdFx0XHRscC1cdTAwM2VldGhfaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCAwKTtcbjI5NzA6XHRcdFx0fSBlbHNlIHtcbjI5NzE6XHRcdFx0XHQvKiBDaGVjayBmb3IgdGhlc2UgcmVzb3VyY2VzIGRpcmVjdGx5IG9uIHRoZSBFdGhlcm5ldCBub2RlLiAqL1xuMjk3MjpcdFx0XHRcdGxwLVx1MDAzZWRtYV9yZWdzID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSwgTlVMTCk7XG4yOTczOlx0XHRcdFx0bHAtXHUwMDNlcnhfaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAxKTtcbjI5NzQ6XHRcdFx0XHRscC1cdTAwM2V0eF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuMjk3NTpcdFx0XHRcdGxwLVx1MDAzZWV0aF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDIpO1xuMjk3NjpcdFx0XHR9XG4yOTc3Olx0XHRcdGlmIChJU19FUlIobHAtXHUwMDNlZG1hX3JlZ3MpKSB7XG4yOTc4Olx0XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IG1hcCBETUEgcmVnc1xcblwmIzM0Oyk7XG4yOTc5Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlZG1hX3JlZ3MpO1xuMjk4MDpcdFx0XHR9XG4yOTgxOlx0XHRcdGlmICghbHAtXHUwMDNlcnhfaXJxIHx8ICFscC1cdTAwM2V0eF9pcnEpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBpbiB0aGUgQ29udGV4dCBvZiBhbWQ2NCBRRU1VKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBUaGF0IGBvZl9wcm9wZXJ0eV9yZWFkX3UzMmAgY2FsbCB3aXRoIHRoZSBgeGxueCxyeG1lbWAgcHJvcGVydHkgaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gSWYgYHBkZXYtJmd0O2Rldi5vZl9ub2RlYCBpcyBOVUxMLCB0aGF0IGNhbGwgc2hvdWxkIHJldHVybiBhbiBlcnJvciwgb3IgaXQgKmNvdWxkKiBjcmFzaCBkdWUgdG8gYSBudWxsIGRlcmVmZXJlbmNlLCB0aG91Z2ggdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBzdXBwb3NlZCB0byBoYW5kbGUgdGhhdCBjYXNlLiBUaGlzIGRyaXZlciYjMzk7cyBmb3IgWGlsaW54IFZpcnRleCBGUEdBcyBhbmQgWnlucS9NaWNyb0JsYXplIFNvQ3MsIHdoaWNoIG1lYW5zIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBpcyByZWxldmFudC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBJcyB0aGlzIGhhcmR3YXJlIGVtdWxhdGVkIG9uIGEgc3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXAgZm9yIHg4Nl82ND8KCkhvbGQgb24uIExldCBtZSBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBPa2F5LCBpdCBwb2ludHMgb3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN0dWZmIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLiBBbmQgdGhlbiB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4gbGlrZSB0ZWFyLWRvd24gY2FsbGJhY2tzIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnLgoKTm93LCBjb3VsZCBYaWxpbnggQVhJIEV0aGVybmV0IGV2ZW4gYmUgZW11bGF0ZWQgaW4gUUVNVT8gT3IgaXMgaXQgYW4gZW1iZWRkZWQgU29DIEZQR0EgY29yZSBvbiBNaWNyb0JsYXplL0FSTT8gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQmIzM5O3MgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaGVyZT8gQWgsIGl0JiMzOTtzIGFtZDY0LiBDYW4gdGhpcyBkcml2ZXIsIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCwgZXZlbiAqYmUqIHVzZWQgb24gYW1kNjQgaW4gUUVNVT8gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBgeGxueCxheGktZXRoZXJuZXRgIGZvciB4ODZfNjQ/CgpXYWl0LCBRRU1VICpvbmx5KiBoYXMgYHhsbnguYXhpLWV0aGVybmV0YCBmb3IgTWljcm9CbGF6ZS9BUk0sIGxpa2Ugb24gdGhvc2UgWkNVMTAyIGFuZCBQZXRhTG9naXggYm9hcmRzLiBEbyBJIGtub3cgaWYgUUVNVSBldmVuIGhhcyBgeGxueC5heGktZXRoZXJuZXRgIG1hY2hpbmUgbW9kZWxzPyBMZXQgbWUgY2hlY2sgbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgYW5kIFFFTVUuIEhleSwgYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYCBleGlzdHMgaW4gUUVNVSEgQnV0IGRvZXMgUUVNVSBlbXVsYXRlIGB4aWxpbnhfYXhpZW5ldGAgb24geDg2XzY0PwoKTm8sIG9uIHg4Nl82NCwgUUVNVSBydW5zIHdpdGggYSBgcTM1YCBvciBgcGNgIG1hY2hpbmUgKHRoZSBzdGFuZGFyZCBQQy9RMzUgYXJjaGl0ZWN0dXJlKS4gRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlcyBhcmVuJiMzOTt0IGluc3RhbnRpYXRlZCBvbiBzdGFuZGFyZCBRRU1VIHg4Nl82NCBWTXMuIHg4Nl82NCBkb2VzbiYjMzk7dCBib290IHdpdGggT3BlbiBGaXJtd2FyZSBvciBEZXZpY2UgVHJlZSB3aXRoIFhpbGlueCBGUEdBIGRldmljZXMhCgpPa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXM6IGRvZXMgc3l6a2FsbGVyIG9yIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQgKmV2ZXIqIGluc3RhbnRpYXRlIGB4aWxpbnhfYXhpZW5ldGA/IENhbiBhIHBsYXRmb3JtIGRldmljZSBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlPwoKV2FpdCwgY2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIG9yIE9GIGRldmljZXM/IE5vLiBPRiBkZXZpY2Ugbm9kZXMgY29tZSBmcm9tIHRoZSBkZXZpY2UgdHJlZSBibG9iIGF0IGJvb3QsIG9yIGZyb20gT0Ygb3ZlcmxheXMuIEJ1dCBgY29uZmlnX29mYCBpc24mIzM5O3QgZW5hYmxlZCBvbiB4ODZfNjQgdW5sZXNzIGBDT05GSUdfT0ZgIGlzIGVuYWJsZWQsIGFuZCBldmVuIHdpdGggYENPTkZJR19PRmAsIE9GIG92ZXJsYXlzIHJlcXVpcmUgcm9vdCBhbmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGJ1dCB4ODZfNjQgKmRvZXNuJiMzOTt0KiB1c2UgRGV2aWNlIFRyZWUhCgpDYW4gcGxhdGZvcm0gZGV2aWNlcyBiZSBjcmVhdGVkIHZpYSBjb25maWdmcyBvciBzeXNmcyBvciBhbnl0aGluZz8gTm8sIHRoaXMgYHhpbGlueF9heGllbmV0YCBkcml2ZXIgKnJlcXVpcmVzKjoKKiAgIEFuIGBvZl9ub2RlYCB3aXRoIGB4bG54LHJ4bWVtYCwgZmFpbGluZyBwcm9iZSBpZiB0aGF0JiMzOTtzIG1pc3NpbmcKKiAgIERNQSByZXNvdXJjZXMgb3IgYSBETUEgZW5naW5lCiogICBBIFBIWSBkZXZpY2UgLyBwaHlsaW5rCiogICBJL08gbWVtb3J5IHJlc291cmNlcy4KCk5vbmUgb2YgKnRob3NlKiBleGlzdCBvbiB4ODZfNjQgdmlydHVhbCBtYWNoaW5lcy4KCkFscmlnaHQsIGxldCYjMzk7cyBub3cgY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uczogYENPTkZJR19YSUxJTlhfRE1BYCBhbmQgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgLiBUaW1lIHRvIGdyZXAgdGhyb3VnaCBkZWZjb25maWdzIG9yIGZpbmQgd2hlcmUgdGhleSYjMzk7cmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1hJTElOWF9BWElfRU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NTM9Q09ORklHX1RJX0lDU1NHX1BSVUVUSD1tXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NTctIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NTg6Q09ORklHX1hJTElOWF9BWElfRU1BQz1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ1OS1DT05GSUdfUUNPTV9JUEE9bVxuLS1cbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDQ9Q09ORklHX1hJTElOWF9FTUFDTElURT15XG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnOjQ1OkNPTkZJR19YSUxJTlhfQVhJX0VNQUM9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZy00Ni1DT05GSUdfWElMSU5YX0xMX1RFTUFDPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMDgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gd2hlcmUgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgIGlzIGVuYWJsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHJpZ2h0IG5vdyBpdCYjMzk7cyBvbmx5IHNob3dpbmcgdXAgaW4gYGFyY2gvYXJtNjQvZGVmY29uZmlnYCBhbmQgYGFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWdgLiBIbW0sIHRoYXTigJlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjb25zcGljdW91c2x5IGFic2VudCBmcm9tIGBhcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWdgLiBOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBhbnkgY2hhbmNlIGF0IGFsbCBvZiBidWlsZGluZyBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2Agb24gYW4geDg2XzY0IHN5c3RlbT8gVGhhdCBzZWVtc+KApnVubGlrZWx5IGdpdmVuIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIGJ1dCBJIHNob3VsZCBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVmb3JlIEkgcnVsZSBhbnl0aGluZyBvdXQuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBDT05GSUdfWElMSU5YX0RNQWAgd2hpbGUgSSYjMzk7bSBhdCBpdC4gSXQgbWlnaHQgb2ZmZXIgc29tZSBjbHVlcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWElMSU5YX0RNQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZz02NzQ9Y29uZmlnIFhHRU5FX0RNQVxuLS1cbmRyaXZlcnMvZG1hL0tjb25maWctNjgyLVxuZHJpdmVycy9kbWEvS2NvbmZpZzo2ODM6Y29uZmlnIFhJTElOWF9ETUFcbmRyaXZlcnMvZG1hL0tjb25maWctNjg0LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IEFYSSBETUFTIEVuZ2luZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gRE1BIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgRE1BIGNvbmZpZ3VyYXRpb24uIFRoZSB0YXJnZXQgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBhc3BlY3Qgb2YgdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvZG1hL0tjb25maWdgLiBJJiMzOTttIHNwZWNpZmljYWxseSBhaW1pbmcgdG8gaW5zcGVjdCBhcm91bmQgbGluZSA2ODMuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIHRoYXQgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyByZWxhdGVkIHRvIERNQSYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBmbGFncyB0aGF0IGFyZSByZWxldmFudCB0byB3aGF0IEkmIzM5O20gY3VycmVudGx5IGludmVzdGlnYXRpbmcuIEkmIzM5O20gaG9waW5nIEkgd2lsbCBmaW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvZiBpbnRlcmVzdCBhdCB0aGF0IGFyZWEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgyOlx0XG4gNjgzOlx0Y29uZmlnIFhJTElOWF9ETUFcbiA2ODQ6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiA2ODU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gNjg2Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY4NzpcdFx0aGVscFxuIDY4ODpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBWRE1BIFNvZnQgSVAuXG4gNjg5Olx0XG4gNjkwOlx0XHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5MTpcdFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcbiA2OTI6XHRcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cbiA2OTM6XHRcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cbiA2OTQ6XHRcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXG4gNjk1Olx0XHQgIE1lbW9yeSBNYXBwZWQgKFMyTU0pIGZvciB0aGUgZGF0YSB0cmFuc2ZlcnMuXG4gNjk2Olx0XHQgIEFYSSBDRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5NzpcdFx0ICBiZXR3ZWVuIGEgbWVtb3J5LW1hcHBlZCBzb3VyY2UgYWRkcmVzcyBhbmQgYSBtZW1vcnktbWFwcGVkXG4gNjk4Olx0XHQgIGRlc3RpbmF0aW9uIGFkZHJlc3MuXG4gNjk5Olx0XHQgIEFYSSBETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIG9uZSBkaW1lbnNpb25hbCBkaXJlY3RcbiA3MDA6XHRcdCAgbWVtb3J5IGFjY2VzcyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdGFyZ2V0IHBlcmlwaGVyYWxzLlxuIDcwMTpcdFx0ICBBWEkgTUNETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTc5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgeDg2IEV4ZWN1dGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kISBDb3VsZCB0aGlzIGRyaXZlciwgdGhpcyAqdGhpbmcqLCBhY3R1YWxseSBiZSBidWlsdCBmb3IgeDg2PyBUaGUgcHJlc2VuY2Ugb2YgYGRlcGVuZHMgb24gSEFTX0lPTUVNYCBpcyBhIGtleSBpbmRpY2F0b3IuIEl0IG1lYW5zIHRoYXQsICp0ZWNobmljYWxseSosIGlmIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQsIHdlICpjYW4qIGNvbXBpbGUgaXQgZm9yIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEJ1dCBjb21waWxhdGlvbiBpcyBvbmx5IGhhbGYgdGhlIGJhdHRsZS4gQ2FuIGl0ICpleGVjdXRlKj8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCkxldCYjMzk7cyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJ1bnRpbWUgYmVoYXZpb3IsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBtZW1vcnkuIFRoaW5raW5nIGFib3V0IGhvdyB0aGUgZHJpdmVyIHdvdWxkIHBlcmZvcm0gb24gYW5vdGhlciBhcmNoaXRlY3R1cmUsIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBXaGVuIGlzIHRoYXQgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byBmaW5kIGl0cyB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWVtb3J5IGl0IGlzIHVzaW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGdyZXAgb24gdGhhdCBmdW5jdGlvbiB3aXRoaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F4aWVuZXRfZnJlZV90eF9jaGFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz03MTA9c3RhdGljIGludCBheGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY4OiAqIGF4aWVuZXRfZnJlZV90eF9jaGFpbiAtIENsZWFuIHVwIGEgc2VyaWVzIG9mIGxpbmtlZCBUWCBkZXNjcmlwdG9ycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY5LSAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzgyOnN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODMtXHRcdFx0XHQgaW50IG5yX2JkcywgYm9vbCBmb3JjZSwgdTMyICpzaXplcCwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTEwMDQ9c3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTAxMTpcdHBhY2tldHMgPSBheGllbmV0X2ZyZWVfdHhfY2hhaW4obHAsIGxwLVx1MDAzZXR4X2JkX2NpLCBscC1cdTAwM2V0eF9iZF9udW0sIGZhbHNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMDEyLVx0XHRcdFx0XHRcdTAwMjZzaXplLCBidWRnZXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MTA1ND1heGllbmV0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMTIyLVx0XHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjExMjM6XHRcdFx0YXhpZW5ldF9mcmVlX3R4X2NoYWluKGxwLCBvcmlnX3RhaWxfcHRyLCBpaSAmIzQzOyAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMTI0LVx0XHRcdFx0XHQgICAgICB0cnVlLCBOVUxMLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNTgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXBwbGljYWJpbGl0eSBBc3Nlc3NtZW50OiBgeGlsaW54X2F4aWVuZXRgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGZ1enppbmcgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGNvZGUgcGF0aCBpbnZvbHZpbmcgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAsIGlzIHdvcnRod2hpbGUsIGJhc2VkIG9uIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGlzIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgYnkgYGF4aWVuZXRfdHhfcG9sbGAgZHVyaW5nIE5BUEkgcG9sbGluZywgYGF4aWVuZXRfc3RhcnRfeG1pdGAgZm9yIFRYIGNsZWFudXAgb24gZXJyb3IsIGFuZCB0aGF0JiMzOTtzIGl0LiBJdCYjMzk7cyBub3QgdXNlZCBieSBgYXhpZW5ldF9kbWFfYmRfcmVsZWFzZWAsIGFzIHByZXZpb3VzbHkgdGhvdWdodC4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBmdXp6aW5nIHRyaWFnZSBjcml0ZXJpYS4gVGhlIGNvcmUgcGhpbG9zb3BoeSBpcyByZWFjaGFiaWxpdHk6IGNhbiB0aGUgY29kZSBleGVjdXRlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKFFFTVUgb3IgR0NFKSB3aXRoIGVtdWxhdGVkIGRldmljZXM/IFRoZSAqbmVnYXRpdmUqIGNyaXRlcmlhIGdpdmUgdXMgdGhlIGVzY2FwZSBjbGF1c2VzLiBXZSBjYW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzOyB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBleGVjdXRpb24gcGF0aHMgYXJlIHRoZSBrZXlzLgoKVGhpcyBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciBpcyBhbiBPRiAoRGV2aWNlIFRyZWUpIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldC4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBcyBhbmQgU29DcyBsaWtlIFp5bnEgYW5kIE1pY3JvQmxhemUuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyB0cmlja3kuIEkgbmVlZCB0byBlc3RhYmxpc2ggYSB2ZXJ5IHNpbXBsZSBmYWN0OiBjYW4gdGhlIHhpbGlueF9heGllbmV0IGRyaXZlciBiZSByZWFjaGVkIHdpdGhpbiBRRU1VL0dDRT8KCjEuICAqKkFyY2hpdGVjdHVyZToqKiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgZ29vZC4KMi4gICoqUGxhdGZvcm06KiogVGhlIGRyaXZlciBpcyBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBJUC4KMy4gICoqUUVNVToqKiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gb2YgdGhlICYjMzQ7eGxueCxheGktZXRoZXJuZXQmIzM0OyBkZXZpY2UsIG5vciBhIERldmljZSBUcmVlIHVzZWQgb24geDg2XF82NCBRRU1VLgo0LiAgKipHQ0U6KiogTm8gWGlsaW54IEFYSSBFdGhlcm5ldCBoYXJkd2FyZSBleGlzdHMgaW4gR0NFLgo1LiAgKipJbnN0YW50aWF0aW9uczoqKiBRRU1VIGRvZXNuJiMzOTt0IGluc3RhbnRpYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlIG9uIHg4NlxfNjQuCjYuICAqKkJpbmRpbmc6KiogVGhlIGRyaXZlciBiaW5kcyB2aWEgbmFtZSBvciBPRiBEVCBtYXRjaC4gSG93ZXZlciwgZXZlbiBpZiBhIHBsYXRmb3JtIGRldmljZSBuYW1lZCAmIzM0O3hpbGlueFxfYXhpZW5ldCYjMzQ7IGNvdWxkIHNvbWVob3cgKmJlKiBjcmVhdGVkIChzYXksIHZpYSBzeXNmcyBvciBhIG1vY2ssIHdoaWNoIGlzIGVzc2VudGlhbGx5IGltcG9zc2libGUgZnJvbSB1c2Vyc3BhY2Ugd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGRyaXZlcnMpLCB0aGUgZHJpdmVyJiMzOTtzIGBheGllbmV0X3Byb2JlYCByb3V0aW5lIGltbWVkaWF0ZWx5IGZhaWxzIGJlY2F1c2UgaXQgdHJpZXMgdG8gcmVhZCB0aGUgJiMzNDt4bG54LHJ4bWVtJiMzNDsgcHJvcGVydHkgZnJvbSB0aGUgZGV2aWNlIHRyZWUgbm9kZSBhbmQgdGhhdCBub2RlIGlzIGVpdGhlciBtaXNzaW5nIG9yIG1pc3NpbmcgdGhhdCBwcm9wZXJ0eSwgcmVxdWlyaW5nIGNsb2NrcywgSS9PIG1lbW9yeSByZXNvdXJjZXMsIERNQSwgYSBQSFkgY29ubmVjdGlvbiwgZXRjLiBUaGUgZHJpdmVyIGlzIGNsZWFybHkgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aG91dCB0aGUgaW50ZW5kZWQgaGFyZHdhcmUuCgpJbiBzaG9ydCwgd2l0aG91dCBhbiBhY3R1YWwgWGlsaW54IEZQR0Egb3IgYW4gZW11bGF0aW9uIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBvbiB4ODZcXzY0LCB0aGlzIGRyaXZlciBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlLCBob3dldmVyOiBJIG5lZWQgdG8gcnVsZSBvdXQgc29tZSBvdGhlciBjb2RlIHRoYXQgY2FsbHMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAgaW4gYSB2aXJ0dWFsIGRyaXZlciwgb3Igc29tZSBraW5kIG9mIFBDSSB3cmFwcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2gga2VybmVsIHNlYXJjaCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgeGlsaW54X2F4aWVuZXRgIHRoYXQgbWlnaHQgb3BlbiB1cCBhIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aC4gSG93ZXZlciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgaXMgbm90IHByYWN0aWNhbGx5IGZ1enphYmxlLiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4aWxpbnhfYXhpZW5ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0yOTg2OT1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUzoyOTg3MDpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0KlxuTUFJTlRBSU5FUlMtMjk4NzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1hJTElOWF9FTUFDTElURSkgJiM0Mzs9IHhpbGlueF9lbWFjbGl0ZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6OTp4aWxpbnhfZW1hYy1vYmpzIDo9IHhpbGlueF9heGllbmV0X21haW4ubyB4aWxpbnhfYXhpZW5ldF9tZGlvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSAmIzQzOz0geGlsaW54X2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTczMj1zdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQwOi8qIEZ1bmN0aW9uIHByb3RvdHlwZXMgdmlzaWJsZSBpbiB4aWxpbnhfYXhpZW5ldF9tZGlvLmMgZm9yIG90aGVyIGZpbGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03NDEtaW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3OiNpbmNsdWRlIFwmIzM0O3hpbGlueF9heGllbmV0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMzE6XHRcdCAubmFtZSA9IFwmIzM0O3hpbGlueF9heGllbmV0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjMyLVx0XHQgLnBtID0gXHUwMDI2YXhpZW5ldF9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MTg6I2luY2x1ZGUgXCYjMzQ7eGlsaW54X2F4aWVuZXQuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NDUKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogNDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIGNvbWUgdG8gYSBmaXJtIGNvbmNsdXNpb246IGl0JiMzOTtzICpub3QqIHdvcnRoIGZ1enppbmcsIGF0IGxlYXN0IG5vdCBpbiBvdXIgdHlwaWNhbCBRRU1VLWJhc2VkIGVudmlyb25tZW50LiBUaGUgZHJpdmVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHRoZSBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYCBhbmQgYHhpbGlueF9heGllbmV0X21kaW8uY2AgZmlsZXMsIGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUuJiMzNDsgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBYaWxpbnggQVhJIEV0aGVybmV0IElQIGRyaXZlciBkZXNpZ25lZCBmb3IgRlBHQXMgYW5kIGVtYmVkZGVkIFNvQ3MgbGlrZSBWaXJ0ZXgsIFp5bnEsIGFuZCBNaWNyb0JsYXplLgoKSXQgdXNlcyBEZXZpY2UgVHJlZSwgZXhwZWN0cyBYaWxpbnggRlBHQSBJUCwgYW5kIG5lZWRzIGRlZGljYXRlZCBETUEgY29udHJvbGxlcnMg4oCTIHRoaW5ncyB5b3UganVzdCAqZG9uJiMzOTt0KiBmaW5kIG9uIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFtZDY0IHN5c3RlbSBydW5uaW5nIGluIFFFTVUuIEl0IGZhbGxzIGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHRoZSBraW5kIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQVNJQ3Mgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGVtdWxhdGlvbiB0aGF0IHdlIHNpbXBseSBkb24mIzM5O3QgaGF2ZSBhdmFpbGFibGUuIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgc2l0dWF0aW9uIGFzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5IHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQW5kIG5vdCBvbmx5IHRoYXQsIGJ1dCB0aGlzIGRyaXZlciBjb250YWlucyBjb2RlIHBhdGhzIHNwZWNpZmljIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiBhbWQ2NC4gVGhlcmVmb3JlLCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybTogYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBmYWxzZS4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IGlzIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgIHRvIGNvbnNpZGVyLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdCBpc24mIzM5O3QgYWNjZXNzaWJsZSB0byB1cyBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3ZSYjMzk7cmUgdXNpbmcuCgpUbyBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCB0byBhZGp1c3QgdGhlIE5BUEkgcG9sbCBidWRnZXQuIEhvd2V2ZXIsIHRoYXQgY29kZSBpcyBwYXJ0IG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKS4gVGhlIHZlcnkgZmFjdCB0aGF0IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBEZXZpY2UgVHJlZSBwcm9wZXJ0aWVzLCBjbG9ja3MsIGFuZCBzcGVjaWZpYyBYaWxpbnggRE1BIGNvbnRyb2xsZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgbWVhbnMgdGhhdCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIGFtZDY0IGVudmlyb25tZW50LiBXZSBjYW5ub3QgcmVhY2ggdGhpcyBjb2RlLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEkmIzM5O2xsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTozMS41NDc4NTY2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxODkxNDMzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTozMS41NDc4NjE0NzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE1MjIyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDE0IDEyOjU5OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbkBAIC03ODgsNiArNzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxcbiBcXHRkbWFfYWRkcl90IHBoeXM7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfYmRzOyBpKyspIHtcXG4rXFx0XFx0LyogQSBOQVBJIHBvbGwgbXVzdCBub3QgcmV0dXJuIG1vcmUgdGhhbiBpdHMgYnVkZ2V0LiAgU3RvcCBvbiBhXFxuK1xcdFxcdCAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtXFx1MDAzZXNrYiBpcyBvbmx5IHNldCBvblxcbitcXHRcXHQgKiBhIHBhY2tldCdzIGxhc3QgZGVzY3JpcHRvciwgc28gbm8gcGFja2V0IGlzIGxlZnQgaGFsZi1mcmVlZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICghZm9yY2UgXFx1MDAyNlxcdTAwMjYgcGFja2V0cyBcXHUwMDNlPSBidWRnZXQpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4gXFx0XFx0Y3VyX3AgPSBcXHUwMDI2bHAtXFx1MDAzZXR4X2JkX3ZbKGZpcnN0X2JkICsgaSkgJSBscC1cXHUwMDNldHhfYmRfbnVtXTtcXG4gXFx0XFx0c3RhdHVzID0gY3VyX3AtXFx1MDAzZXN0YXR1cztcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEyOjU5OjMyLjg5MDA1NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE1Mzg0NjkyMzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gZW5zdXJlIHRoYXQgTkFQSSBwb2xsIGRvZXMgbm90IGV4Y2VlZCBpdHMgYnVkZ2V0LiBUaGlzIGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKSBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBIGFuZCBTb0MgaGFyZHdhcmUgKHN1Y2ggYXMgVmlydGV4LCBaeW5xLCBvciBNaWNyb0JsYXplKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIFhpbGlueCBETUEgaGFyZHdhcmUgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTI6NTk6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC03ODgsNiArNzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxuIFx0ZG1hX2FkZHJfdCBwaHlzO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfYmRzOyBpKyspIHtcbitcdFx0LyogQSBOQVBJIHBvbGwgbXVzdCBub3QgcmV0dXJuIG1vcmUgdGhhbiBpdHMgYnVkZ2V0LiAgU3RvcCBvbiBhXG4rXHRcdCAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtXHUwMDNlc2tiIGlzIG9ubHkgc2V0IG9uXG4rXHRcdCAqIGEgcGFja2V0J3MgbGFzdCBkZXNjcmlwdG9yLCBzbyBubyBwYWNrZXQgaXMgbGVmdCBoYWxmLWZyZWVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKCFmb3JjZSBcdTAwMjZcdTAwMjYgcGFja2V0cyBcdTAwM2U9IGJ1ZGdldClcbitcdFx0XHRicmVhaztcbitcbiBcdFx0Y3VyX3AgPSBcdTAwMjZscC1cdTAwM2V0eF9iZF92WyhmaXJzdF9iZCArIGkpICUgbHAtXHUwMDNldHhfYmRfbnVtXTtcbiBcdFx0c3RhdHVzID0gY3VyX3AtXHUwMDNlc3RhdHVzO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6MzIuODkwMDU4MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5Mzc0MTA2Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpdHNlbGYuIEkgc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGRpZmYgaW50cm9kdWNlcyBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhlIE5BUEkgcG9sbCBmcm9tIGV4Y2VlZGluZyBpdHMgYnVkZ2V0LCBhbmQgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IHN0b3AgZnJlZWluZyBkZXNjcmlwdG9ycyBvbiBhIHBhY2tldCBib3VuZGFyeS4gVGhlIGNvbW1lbnQgaXMgcXVpdGUgY2xlYXI6IGBjdXJfcC1cdTAwM2Vza2JgIGlzIG9ubHkgc2V0IG9uIHRoZSBwYWNrZXQncyBsYXN0IGRlc2NyaXB0b3IsIGVuc3VyaW5nIG5vIHBhY2tldHMgYXJlIGxlZnQgcGFydGlhbGx5IGRlYWxsb2NhdGVkLiBUaGlzIGltcGxpZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBkZXNjcmlwdG9yIGV4aGF1c3Rpb24gZHVyaW5nIE5BUEkgcG9sbGluZywgYW5kIHRoaXMgZml4IGFwcGVhcnMgdG8gYmUgZGVzaWduZWQgdG8gcHJldmVudCBpdCBmcm9tIGNhdXNpbmcgZnVydGhlciBpc3N1ZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBzY2VuYXJpbyB3aGVyZSB0aGlzIGNvZGUgd291bGQgYmUgZXhlY3V0ZWQgb3Igbm90PyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluIHRoYXQgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgYWN0aXZlIGFuZCByZWFjaGFibGUuIElzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgdG8gY29uZmlybSBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgYW55IHByZXJlcXVpc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo0Mi4yNjQxNjcwOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MzM3MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhJTElOWF9BWElfTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NDIuMzA5ODE1ODYyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEzNzM4NjkwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgaG93IHRoZSBYaWxpbnggRXRoZXJuZXQgZHJpdmVycyBhcmUgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBrbm93IHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGFsd2F5cyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgYW55IEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyBzcGVjaWZpYyB0byBYaWxpbnggaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB3aXRoaW4gdGhhdCBkaXJlY3RvcnksIEknbSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIGZpbmQgYSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCBmaWxlIGlzIHRoZSAqa2V5KiB0byB1bmRlcnN0YW5kaW5nIGhvdyBhbGwgdGhlIGRyaXZlcidzIGZlYXR1cmVzLCBvcHRpb25zLCBhbmQgZGVwZW5kZW5jaWVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEkgY2FuIGFsbW9zdCBwaWN0dXJlIGl0IG5vdywgSSBjYW4gZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgdGhlIGJ1aWxkIG9wdGlvbnMsIGFuZCB2YXJpb3VzIGZsYWdzIHdpdGhpbiB0aGF0IEtjb25maWcuIExldCdzIGhlYWQgdGhlcmUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1My42ODM2ODYzMzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImxsX3RlbWFjLmhcIixcbiAgICBcImxsX3RlbWFjX21haW4uY1wiLFxuICAgIFwibGxfdGVtYWNfbWRpby5jXCIsXG4gICAgXCJ4aWxpbnhfYXhpZW5ldC5oXCIsXG4gICAgXCJ4aWxpbnhfYXhpZW5ldF9tYWluLmNcIixcbiAgICBcInhpbGlueF9heGllbmV0X21kaW8uY1wiLFxuICAgIFwieGlsaW54X2VtYWNsaXRlLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NTMuNjgzNzQzODE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTk2MTE4Nzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqXG5cblJpZ2h0LCBsZXQncyBzZWUuLi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBYaWxpbnggRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gY2hlY2sgdGhlIHN0YW5kYXJkIGxvY2F0aW9ucy4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBhbmQgZm9sbG93cyB0aGUgc3RhbmRhcmQgZHJpdmVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIElmIEkgZG9uJ3QgZmluZCB3aGF0IEknbSBsb29raW5nIGZvciB0aGVyZSDigJMgcGVyaGFwcyB0aGUgWGlsaW54LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBzb21laG93IG1lcmdlZCB3aXRoIGEgbW9yZSBnZW5lcmljIEV0aGVybmV0IGxheWVyIOKAkyB0aGVuIEknbGwgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnYC4gVGhpcyBjb3VsZCBjb250YWluIGVpdGhlciB0aGUgYmFzZSBFdGhlcm5ldCBjb25maWd1cmF0aW9ucyBvciBwZXJoYXBzIGl0IHdvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIFhpbGlueCBkcml2ZXIncyBLY29uZmlnLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBFdGhlcm5ldCBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NTUuNjQ0OTM0MjAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTY3NTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSArPSB4aWxpbnhfZW1hY2xpdGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSArPSB4aWxpbnhfZW1hYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaD00NjI9c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo0NzE6ICogc3RydWN0IGF4aWVuZXRfbG9jYWwgLSBheGllbmV0IHByaXZhdGUgcGVyIGRldmljZSBkYXRhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcyLSAqIEBuZGV2OlxcdFBvaW50ZXIgZm9yIG5ldF9kZXZpY2UgdG8gd2hpY2ggaXQgd2lsbCBiZSBhdHRhY2hlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ4Mi0gKiBAbWlpX2Nsa19kaXY6IE1JSSBidXMgY2xvY2sgZGl2aWRlciB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4MzogKiBAcmVnc19zdGFydDogUmVzb3VyY2Ugc3RhcnQgZm9yIGF4aWVuZXQgZGV2aWNlIGFkZHJlc3Nlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4NDogKiBAcmVnczpcXHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGllbmV0X2xvY2FsIGRldmljZSBhZGRyZXNzIHNwYWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDg1LSAqIEBkbWFfcmVnczpcXHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGlkbWEgZGV2aWNlIGFkZHJlc3Mgc3BhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzMi0gKiBAb3B0aW9uczpcXHRBeGlFdGhlcm5ldCBvcHRpb24gd29yZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjUzMzogKiBAZmVhdHVyZXM6XFx0U3RvcmVzIHRoZSBleHRlbmRlZCBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIGF4aWVuZXQgaHdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC01MzQtICogQG1heF9mcm1fc2l6ZTogU3RvcmVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZyYW1lIHRoYXQgY2FuIGJlIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU0OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo1NDk6c3RydWN0IGF4aWVuZXRfbG9jYWwge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU1MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2MzI6ICogc3RydWN0IGF4aWVuZXRfb3B0aW9uIC0gVXNlZCB0byBzZXQgYXhpIGV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzMtICogQG9wdDpcXHRPcHRpb24gdG8gYmUgc2V0Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzNzpzdHJ1Y3QgYXhpZW5ldF9vcHRpb24ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzOC1cXHR1MzIgb3B0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjQzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY0NDogKiBheGllbmV0X2lvciAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHJlYWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDU6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDYtICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2lvcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1NzpzdGF0aWMgaW5saW5lIHUzMiBheGluZXRfaW9yX3JlYWRfbWNyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1OTpcXHRyZXR1cm4gYXhpZW5ldF9pb3IobHAsIFhBRV9NRElPX01DUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY2MjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Njg6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfdW5sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzU6ICogYXhpZW5ldF9pb3cgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciB3cml0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NjogKiBAbHA6ICAgICAgICAgUG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3Ny0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjgzOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2lvdyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODQtXFx0XFx0XFx0ICAgICAgIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTA6ICogYXhpZW5ldF9kbWFfb3V0MzIgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjkxOiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjkyLSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTk6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDAtXFx0XFx0XFx0XFx0ICAgICBvZmZfdCByZWcsIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MDc6ICogYXhpZW5ldF9kbWFfb3V0NjQgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA4OiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA5LSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MTU6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDY0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MTYtXFx0XFx0XFx0XFx0ICAgICBvZmZfdCByZWcsIHU2NCB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjE6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMi1cXHRcXHRcXHRcXHRcXHRkbWFfYWRkcl90IGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjQtXFx0aWYgKGxwLVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IFhBRV9GRUFUVVJFX0RNQV82NEJJVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjU6XFx0XFx0YXhpZW5ldF9kbWFfb3V0NjQobHAsIHJlZywgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3Mjc6XFx0XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzI6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMy1cXHRcXHRcXHRcXHRcXHRkbWFfYWRkcl90IGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzU6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDA6LyogRnVuY3Rpb24gcHJvdG90eXBlcyB2aXNpYmxlIGluIHhpbGlueF9heGllbmV0X21kaW8uYyBmb3Igb3RoZXIgZmlsZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDE6aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0Mjp2b2lkIGF4aWVuZXRfbWRpb190ZWFyZG93bihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzojaW5jbHVkZSBcXFwieGlsaW54X2F4aWVuZXQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OS0vKiBNdXN0IGJlIHNob3J0ZXIgdGhhbiBsZW5ndGggb2YgZXRodG9vbF9kcnZpbmZvLmRyaXZlciBmaWVsZCB0byBmaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOiNkZWZpbmUgRFJJVkVSX05BTUVcXHRcXHRcXFwieGF4aWVuZXRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MS0jZGVmaW5lIERSSVZFUl9ERVNDUklQVElPTlxcdFxcXCJYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjpzdGF0aWMgdm9pZCBheGllbmV0X3J4X3N1Ym1pdF9kZXNjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgtLyogTWF0Y2ggdGFibGUgZm9yIG9mX3BsYXRmb3JtIGJpbmRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF4aWVuZXRfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwieGxueCxheGktZXRoZXJuZXQtMS4wMC5hXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGllbmV0X29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgtLyogT3B0aW9uIHRhYmxlIGZvciBzZXR0aW5nIHVwIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBvcHRpb25zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3OTpzdGF0aWMgc3RydWN0IGF4aWVuZXRfb3B0aW9uIGF4aWVuZXRfb3B0aW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODAtXFx0LyogVHVybiBvbiBqdW1ibyBwYWNrZXQgc3VwcG9ydCBmb3IgYm90aCBSeCBhbmQgVHggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTMzOnN0YXRpYyBzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKmF4aWVuZXRfZ2V0X3J4X2Rlc2Moc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzODpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF90eF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDQ6ICogYXhpZW5ldF9kbWFfaW4zMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciByZWFkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDU6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE0Ni0gKiBAcmVnOlxcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2RtYV9pbjMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTU3OnN0YXRpYyB2b2lkIGRlc2Nfc2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGRtYV9hZGRyX3QgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF4aWRtYV9iZCAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTY1OnN0YXRpYyBkbWFfYWRkcl90IGRlc2NfZ2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNzc6ICogYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSAtIFJlbGVhc2UgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE3OC0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODAtICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbGVhc2UgdGhlIGRlc2NyaXB0b3JzIGFsbG9jYXRlZCBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTgxOiAqIGF4aWVuZXRfZG1hX2JkX2luaXQuIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UgaXMgY2FsbGVkIHdoZW4gQXhpIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODItICogZHJpdmVyIHN0b3AgYXBpIGlzIGNhbGxlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9iZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Ni1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NzpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjI2OnN0YXRpYyB1NjQgYXhpZW5ldF9kbWFfcmF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMzQ6ICogYXhpZW5ldF9jYWxjX2NyKCkgLSBDYWxjdWxhdGUgY29udHJvbCByZWdpc3RlciB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjM1LSAqIEBscDogRGV2aWNlIHByaXZhdGUgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNDQ6c3RhdGljIHUzMiBheGllbmV0X2NhbGNfY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgY291bnQsIHUzMiB1c2VjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjUzLVxcdGlmIChjb3VudCBcXHUwMDNlIDEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI1NDpcXHRcXHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI1NS1cXHRcXHR1MzIgdGltZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI2OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3MDogKiBheGllbmV0X2NvYWxlc2NlX3BhcmFtcygpIC0gRXh0cmFjdCBjb2FsZXNjZSBwYXJhbWV0ZXJzIGZyb20gdGhlIENSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzEtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3NS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3NjpzdGF0aWMgdm9pZCBheGllbmV0X2NvYWxlc2NlX3BhcmFtcyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3Ny1cXHRcXHRcXHRcXHQgICAgdTMyICpjb3VudCwgdTMyICp1c2VjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTpcXHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MC1cXHR1NjQgdGltZXIgPSBGSUVMRF9HRVQoWEFYSURNQV9ERUxBWV9NQVNLLCBjcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4NzogKiBheGllbmV0X2RtYV9zdGFydCAtIFNldCB1cCBETUEgcmVnaXN0ZXJzIGFuZCBzdGFydCBETUEgb3BlcmF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODg6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyOTA6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfc3RhcnQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjk1LVxcdGxwLVxcdTAwM2VyeF9kbWFfY3IgXFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjk2OlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwMTpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9DREVTQ19PRkZTRVQsIGxwLVxcdTAwM2VyeF9iZF9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMi1cXHRscC1cXHUwMDNlcnhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDQ6XFx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfUlhfVERFU0NfT0ZGU0VULCBscC1cXHUwMDNlcnhfYmRfcCArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDUtXFx0XFx0XFx0ICAgICAoc2l6ZW9mKCpscC1cXHUwMDNlcnhfYmRfdikgKiAobHAtXFx1MDAzZXJ4X2JkX251bSAtIDEpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMi1cXHRscC1cXHUwMDNldHhfZG1hX2NyIFxcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMzpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVxcdTAwM2V0eF9kbWFfY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTk6XFx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfVFhfQ0RFU0NfT0ZGU0VULCBscC1cXHUwMDNldHhfYmRfcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjAtXFx0bHAtXFx1MDAzZXR4X2RtYV9jciB8PSBYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVxcdTAwM2V0eF9kbWFfY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyLVxcdGxwLVxcdTAwM2V0eF9kbWFfc3RhcnRlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyODogKiBheGllbmV0X2RtYV9iZF9pbml0IC0gU2V0dXAgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3MgZm9yIEF4aSBETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyOS0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMzc6c3RhdGljIGludCBheGllbmV0X2RtYV9iZF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQwLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozNDE6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjM5NjpcXHRheGllbmV0X2RtYV9zdGFydChscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5OS1vdXQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDA6XFx0YXhpZW5ldF9kbWFfYmRfcmVsZWFzZShuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwMS1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDA1OiAqIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzIC0gV3JpdGUgdGhlIE1BQyBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDYtICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDExLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDEyOnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDEzLVxcdFxcdFxcdFxcdCAgICBjb25zdCB2b2lkICphZGRyZXNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxNTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDIyLVxcdC8qIFNldCB1cCB1bmljYXN0IE1BQyBhZGRyZXNzIGZpbHRlciBzZXQgaXRzIG1hYyBhZGRyZXNzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MjM6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcwX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNC1cXHRcXHQgICAgKG5kZXYtXFx1MDAzZWRldl9hZGRyWzBdKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNy1cXHRcXHQgICAgKG5kZXYtXFx1MDAzZWRldl9hZGRyWzNdIFxcdTAwM2NcXHUwMDNjIDI0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Mjg6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcxX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyOTpcXHRcXHQgICAgKCgoYXhpZW5ldF9pb3IobHAsIFhBRV9VQVcxX09GRlNFVCkpIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQzMC1cXHRcXHQgICAgICB+WEFFX1VBVzFfVU5JQ0FTVEFERFJfTUFTSykgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDItICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIEF4aSBFdGhlcm5ldFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDQzOiAqIGNvcmUuIEl0IGNhbGxzIHRoZSBjb3JlIHNwZWNpZmljIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzLiBUaGlzIGlzIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQ0LSAqIGZ1bmN0aW9uIHRoYXQgZ29lcyBpbnRvIG5ldF9kZXZpY2Vfb3BzIHN0cnVjdHVyZSBlbnRyeSBuZG9fc2V0X21hY19hZGRyZXNzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz00NDY9c3RhdGljIGludCBuZXRkZXZfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTA6XFx0YXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MobmRldiwgYWRkci1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTEtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1NTogKiBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdCAtIFByZXBhcmUgdGhlIG11bHRpY2FzdCB0YWJsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU2LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2NTpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2OC1cXHR1MzIgcmVnLCBhZjByZWcsIGFmMXJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2OTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3MTpcXHRyZWcgPSBheGllbmV0X2lvcihscCwgWEFFX0ZNSV9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcyLVxcdHJlZyBcXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzYtXFx0XFx0cmVnIFxcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Nzc6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00ODEtXFx0XFx0cmVnIFxcdTAwMjY9IDB4RkZGRkZGMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODI6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgzOlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgMSk7IC8qIE11bHRpY2FzdCBiaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NDpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg1OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0wX09GRlNFVCwgMSk7IC8qIGRpdHRvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODY6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTFfT0ZGU0VULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NzpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZGRV9PRkZTRVQsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDg4LVxcdFxcdGkgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MDc6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA4OlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgYWYwcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwOTpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIGFmMXJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTA6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAweGZmZmZmZmZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMTpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDB4MDAwMGZmZmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEyOlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MTMtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MTktXFx0XFx0cmVnIHw9IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjA6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTIxOlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MjItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MjUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjY6ICogYXhpZW5ldF9zZXRvcHRpb25zIC0gU2V0IGFuIEF4aSBFdGhlcm5ldCBvcHRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNy0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzMtICogdGhlc2Ugb3B0aW9ucyBpbiB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLiBUaGlzIGlzIGRvbmUgdGhyb3VnaFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM0OiAqIGF4aWVuZXRfb3B0aW9uIHN0cnVjdHVyZSAuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzY6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRvcHRpb25zKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgb3B0aW9ucylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzgtXFx0aW50IHJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzOTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MDpcXHRzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gKnRwID0gXFx1MDAyNmF4aWVuZXRfb3B0aW9uc1swXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0Mi1cXHR3aGlsZSAodHAtXFx1MDAzZW9wdCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQzOlxcdFxcdHJlZyA9ICgoYXhpZW5ldF9pb3IobHAsIHRwLVxcdTAwM2VyZWcpKSBcXHUwMDI2IH4odHAtXFx1MDAzZW1fb3IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NC1cXHRcXHRpZiAob3B0aW9ucyBcXHUwMDI2IHRwLVxcdTAwM2VvcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDUtXFx0XFx0XFx0cmVnIHw9IHRwLVxcdTAwM2VtX29yO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQ2OlxcdFxcdGF4aWVuZXRfaW93KGxwLCB0cC1cXHUwMDNlcmVnLCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ3LVxcdFxcdHRwKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU1MzpzdGF0aWMgdTY0IGF4aWVuZXRfc3RhdChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGVudW0gdGVtYWNfc3RhdCBzdGF0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTYwOlxcdGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2MS1cXHRyZXR1cm4gbHAtXFx1MDAzZWh3X3N0YXRfYmFzZVtzdGF0XSArIChjb3VudGVyIC0gbHAtXFx1MDAzZWh3X2xhc3RfY291bnRlcltzdGF0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU2NDpzdGF0aWMgdm9pZCBheGllbmV0X3N0YXRzX3VwZGF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGJvb2wgcmVzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NzAtXFx0Zm9yIChzdGF0ID0gMDsgc3RhdCBcXHUwMDNjIFNUQVRfQ09VTlQ7IHN0YXQrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTcxOlxcdFxcdHUzMiBjb3VudGVyID0gYXhpZW5ldF9pb3IobHAsIFhBRV9TVEFUU19PRkZTRVQgKyBzdGF0ICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU3OTpzdGF0aWMgdm9pZCBheGllbmV0X3JlZnJlc2hfc3RhdHMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4MTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGF4aWVuZXRfbG9jYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODItXFx0XFx0XFx0XFx0XFx0XFx0c3RhdHNfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTg0LVxcdG11dGV4X2xvY2soXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4NTpcXHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTg2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2bHAtXFx1MDAzZXN0YXRzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1OTI6c3RhdGljIGludCBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5OS1cXHRpZiAobHAtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgWEFFX0ZFQVRVUkVfU1RBVFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDA6XFx0XFx0YXhpZW5ldF9zdGF0c191cGRhdGUobHAsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MDgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDk6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBYQVhJRE1BX0NSX1JFU0VUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjEwOlxcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfZG1hX2luMzIsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjExLVxcdFxcdFxcdFxcdCEodmFsdWUgXFx1MDAyNiBYQVhJRE1BX0NSX1JFU0VUX01BU0spLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTktXFx0LyogV2FpdCBmb3IgUGh5UnN0Q21wbHQgYml0IHRvIGJlIHNldCwgaW5kaWNhdGluZyB0aGUgUEhZIHJlc2V0IGhhcyBmaW5pc2hlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjIwOlxcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfaW9yLCB2YWx1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYyMS1cXHRcXHRcXHRcXHR2YWx1ZSBcXHUwMDI2IFhBRV9JTlRfUEhZUlNUQ01QTFRfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM2LVxcdFxcdFxcdHUzMiBjb3VudGVyID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYzNzpcXHRcXHRcXHRcXHRheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUyOiAqIGF4aWVuZXRfZG1hX3N0b3AgLSBTdG9wIERNQSBvcGVyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1MzogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdG9wKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2Mi1cXHRjciA9IGxwLVxcdTAwM2VyeF9kbWFfY3IgXFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjYzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjY0LVxcdGxwLVxcdTAwM2VyeF9kbWFfc3RhcnRlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzEtXFx0Y3IgPSBscC1cXHUwMDNldHhfZG1hX2NyIFxcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3MjpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGNyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3My1cXHRscC1cXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjc4LVxcdC8qIEdpdmUgRE1BcyBhIGNoYW5jZSB0byBoYWx0IGdyYWNlZnVsbHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3OTpcXHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MC1cXHRmb3IgKGNvdW50ID0gMDsgIShzciBcXHUwMDI2IFhBWElETUFfU1JfSEFMVF9NQVNLKSBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNjIDU7ICsrY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MS1cXHRcXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjgyOlxcdFxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY4NTpcXHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ni1cXHRmb3IgKGNvdW50ID0gMDsgIShzciBcXHUwMDI2IFhBWElETUFfU1JfSEFMVF9NQVNLKSBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNjIDU7ICsrY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ny1cXHRcXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg4OlxcdFxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjkxLVxcdC8qIERvIGEgcmVzZXQgdG8gZW5zdXJlIERNQSBpcyByZWFsbHkgc3RvcHBlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkyOlxcdGF4aWVuZXRfbG9ja19taWkobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkzOlxcdF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk0OlxcdGF4aWVuZXRfdW5sb2NrX21paShscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTg6ICogYXhpZW5ldF9kZXZpY2VfcmVzZXQgLSBSZXNldCBhbmQgaW5pdGlhbGl6ZSB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk5LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMDpzdGF0aWMgaW50IGF4aWVuZXRfZGV2aWNlX3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzExLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMjpcXHR1MzIgYXhpZW5ldF9zdGF0dXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTM6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MTQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzI4LVxcdGlmICghbHAtXFx1MDAzZXVzZV9kbWFlbmdpbmUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcyOTpcXHRcXHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MzM6XFx0XFx0cmV0ID0gYXhpZW5ldF9kbWFfYmRfaW5pdChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczNC1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MTpcXHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfUkNXMV9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQyOlxcdGF4aWVuZXRfc3RhdHVzIFxcdTAwMjY9IH5YQUVfUkNXMV9SWF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQzOlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfUkNXMV9PRkZTRVQsIGF4aWVuZXRfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NTpcXHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfSVBfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NjpcXHRpZiAoYXhpZW5ldF9zdGF0dXMgXFx1MDAyNiBYQUVfSU5UX1JYUkpFQ1RfTUFTSylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NzpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0lTX09GRlNFVCwgWEFFX0lOVF9SWFJKRUNUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ4OlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfSUVfT0ZGU0VULCBscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNlIDAgP1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ5LVxcdFxcdCAgICBYQUVfSU5UX1JFQ1ZfRVJST1JfTUFTSyA6IDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzUxOlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkNDX09GRlNFVCwgWEFFX0ZDQ19GQ1JYX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTUtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTY6XFx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVxcdTAwM2VvcHRpb25zIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Ny1cXHRcXHRcXHQgICB+KFhBRV9PUFRJT05fVFhFTiB8IFhBRV9PUFRJT05fUlhFTikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU4OlxcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU5OlxcdGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzYwOlxcdGF4aWVuZXRfc2V0b3B0aW9ucyhuZGV2LCBscC1cXHUwMDNlb3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njk6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NzAtICogQGZpcnN0X2JkOlxcdEluZGV4IG9mIGZpcnN0IGRlc2NyaXB0b3IgdG8gY2xlYW4gdXBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzgyOnN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgzLVxcdFxcdFxcdFxcdCBpbnQgbnJfYmRzLCBib29sIGZvcmNlLCB1MzIgKnNpemVwLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDI6ICogYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZSAtIENoZWNrcyBpZiBhIEJEL2dyb3VwIG9mIEJEcyBhcmUgY3VycmVudGx5IGJ1c3lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg0MzogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg0NC0gKiBAbnVtX2ZyYWc6XFx0VGhlIG51bWJlciBvZiBCRHMgdG8gY2hlY2sgZm9yXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg1My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg1NDpzdGF0aWMgaW5saW5lIGludCBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg1NS1cXHRcXHRcXHRcXHRcXHQgICAgaW50IG51bV9mcmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NjgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njk6ICogYXhpZW5ldF9kbWFfdHhfY2IgLSBETUEgZW5naW5lIGNhbGxiYWNrIGZvciBUWCBjaGFubmVsLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODcwOiAqIEBkYXRhOiAgICAgICBQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3MS0gKiBAcmVzdWx0OiAgICAgZXJyb3IgcmVwb3J0aW5nIHRocm91Z2ggZG1hZW5naW5lX3Jlc3VsdC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc1OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3R4X2NiKHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBkbWFlbmdpbmVfcmVzdWx0ICpyZXN1bHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc3LVxcdHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqc2tidWZfZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc4OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzktXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4ODI6XFx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXFx1MDAzZXR4X3JpbmdfdGFpbCsrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg4My1cXHRsZW4gPSBza2J1Zl9kbWEtXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4OTc6ICogYXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZSAtIFN0YXJ0cyB0aGUgdHJhbnNtaXNzaW9uLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODk4LSAqIEBza2I6ICAgICAgICBza19idWZmIHBvaW50ZXIgdGhhdCBjb250YWlucyBkYXRhIHRvIGJlIFR4ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTkxMT1zdGF0aWMgbmV0ZGV2X3R4X3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxMjpheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkxNC1cXHRzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRtYV90eF9kZXNjID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxNTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkxNi1cXHR1MzIgYXBwX21ldGFkYXRhW0RNQV9OVU1fQVBQX1dPUkRTXSA9IHswfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTM0OlxcdHNrYnVmX2RtYSA9IGF4aWVuZXRfZ2V0X3R4X2Rlc2MobHAsIGxwLVxcdTAwM2V0eF9yaW5nX2hlYWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTM1LVxcdGlmICghc2tidWZfZG1hKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1NS43NDI5MDk4OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzY3NzM1MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgcHJvbXB0OlxuXG4qKktjb25maWcgYW5kIFhJTElOWF9BWElfRU1BQzogQSBRdWljayBDaGVjayoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IHRoaXMgXCJYSUxJTlhfQVhJX0VNQUNcIiB0aGluZy4uLiByaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGd1dCBzYXlzIGl0J3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBYaWxpbnggdG9vbGNoYWlucz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBvcHRpb24gKmFjdHVhbGx5KiBjb250cm9scyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdsbCBmb2N1cyBvbiBmaW5kaW5nIHRoZSByZWxldmFudCBkZWZpbml0aW9ucyBhbmQgY29tbWVudHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IG1vZHVsZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYWZmZWN0ZWQuIEnigJltIHRoaW5raW5nIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBzdHJpbmcgXCJYSUxJTlhfQVhJX0VNQUNcIiBhbmQgc2VlIGlmIHRoYXQgeWllbGRzIHJlc3VsdHMuIFRoZSBnb2FsIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGFzc2VzcyBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NjEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1OS41MTA2NDg5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1Njk1MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MjY6Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwLzEwMDAgQVhJIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEyOjU5OjU5LjY0NjM1MTY5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MDY3NTI0NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlcidzIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAyNS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlLCBtb3N0IGltcG9ydGFudCBzZXR0aW5ncyBvciBhbiBpbXBvcnRhbnQgY29uZGl0aW9uYWwgYmxvY2sgYmVnaW5zLCBzbyBpdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSByb290IG9mIHRoZSBjb25maWd1cmF0aW9uLiBMZXTigJlzIHNlZSB3aGF0J3MgYmVpbmcgZGVmaW5lZCB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGRyaXZlcidzIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaGFyZHdhcmUgYW5kIG90aGVyIGtlcm5lbCBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwODcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDowNi43MTM4Nzg4MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDIyOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIDEwLzEwMCBFdGhlcm5ldCBMaXRlIGZyb20gWGlsaW54LlxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgWElMSU5YX0FYSV9FTUFDXFxuICAyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxcbiAgMzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDMxOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIDEwLzEwMC8xMDAwIEV0aGVybmV0IGZyb20gWGlsaW54IGZvciB0aGVcXG4gIDM0OlxcdFxcdCAgQVhJIGJ1cyBpbnRlcmZhY2UgdXNlZCBpbiBYaWxpbnggVmlydGV4IEZQR0FzIGFuZCBTb2Mncy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIFhJTElOWF9MTF9URU1BQ1xcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCBMTCBURU1BQyAoTG9jYWxMaW5rIFRyaS1tb2RlIEV0aGVybmV0IE1BQykgZHJpdmVyXFxcIlxcbiAgMzg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDM5OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFhpbGlueCAxMC8xMDAvMTAwMCBMb2NhbExpbmsgVEVNQUNcXG4gIDQyOlxcdFxcdCAgY29yZSB1c2VkIGluIFhpbGlueCBTcGFydGFuIGFuZCBWaXJ0ZXggRlBHQXNcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0ZW5kaWYgIyBORVRfVkVORE9SX1hJTElOWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDowNi43MTM5Mzc2MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzM1MTIwMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGBYSUxJTlhfQVhJX0VNQUNgLiBTdHJhaWdodCBhd2F5LCBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJdCByZWxpZXMgb24gYEhBU19JT01FTWAgYW5kIGBYSUxJTlhfRE1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhpcyBpcyBhbiBBWEktYmFzZWQgRXRoZXJuZXQgTUFDLiBUaGUgYHNlbGVjdCBQSFlMSU5LYCBhbmQgYHNlbGVjdCBESU1MSUJgIGFsc28gaW5kaWNhdGUgaXQncyB1c2luZyB0aGUgc3RhbmRhcmQgTGludXggbmV0d29ya2luZyBzdGFjayBhbmQgbGlrZWx5IHNvbWUgWGlsaW54LXNwZWNpZmljIERNQSBsaWJyYXJpZXMuIFRoZSBoZWxwIHRleHQgY29uZmlybXMgdGhhdCB0aGlzIGRyaXZlciB0YXJnZXRzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGludGVyZmFjZSBmb3VuZCBpbiB0aGVpciBWaXJ0ZXggRlBHQXMgYW5kIFNvQ3Mg4oCTIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgdGhpbmcgYWN0dWFsbHkgZ2V0IHByb2JlZD8gSXMgaXQgYW4gb2ZfcGxhdGZvcm0gZHJpdmVyLCBhIHBsYXRmb3JtIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gTGV0J3MganVtcCBpbnRvIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgdGhlIGRyaXZlciBkZWZpbml0aW9uIGl0c2VsZiB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIG1hdGNoaW5nIHByb2Nlc3MuIFRpbWUgdG8gc2VlIGhvdyB0aGlzIHRoaW5nIGdldHMgYXR0YWNoZWQgdG8gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NDEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDoxMC4wNjUxNDIwNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTAxODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjEwLjExMTI0NzMyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozOTU2MzEzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEF4aWVuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29kZSwgYW5kIEkgbmVlZCB0byB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgcGFydCDigJMgdGhlIGBheGllbmV0X2RyaXZlcmAuIExldCdzIGFzc3VtZSBJJ3ZlIGdvdCBhIHZhZ3VlIHNlbnNlIG9mIHdoZXJlIHRoZSBwcm9ibGVtIG1pZ2h0IGJlIGFuZCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGJldHRlci4gTGluZSAzMjI2LCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBrbm93IHRoZXNlIGRyaXZlcnMgYW5kIHRoaXMgbGlicmFyeSwgYW5kIGxpbmUgbnVtYmVycyBvZnRlbiBjb3JyZXNwb25kIHRvIG1ham9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBJdCBpcyBsaWtlbHkgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZSBsaWJyYXJ5LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJndW1lbnRzLCByZXR1cm5zLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBjb250cm9sIGZsb3cgb2YgdGhlIGBheGllbmV0X2RyaXZlcmAuIExldCdzIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzE2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDA6MTQuMDY3NTYyODM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NjU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyMjAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyMjA6XFx0XFx0cmV0dXJuIDA7XFxuMzIyMTpcXHR9XFxuMzIyMjpcXHRcXG4zMjIzOlxcdHN0YXRpYyBERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoYXhpZW5ldF9wbV9vcHMsXFxuMzIyNDpcXHRcXHRcXHRcXHRcXHRheGllbmV0X3N1c3BlbmQsIGF4aWVuZXRfcmVzdW1lKTtcXG4zMjI1OlxcdFxcbjMyMjY6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XFxuMzIyNzpcXHRcXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxcbjMyMjg6XFx0XFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxcbjMyMjk6XFx0XFx0LnNodXRkb3duID0gYXhpZW5ldF9zaHV0ZG93bixcXG4zMjMwOlxcdFxcdC5kcml2ZXIgPSB7XFxuMzIzMTpcXHRcXHRcXHQgLm5hbWUgPSBcXFwieGlsaW54X2F4aWVuZXRcXFwiLFxcbjMyMzI6XFx0XFx0XFx0IC5wbSA9IFxcdTAwMjZheGllbmV0X3BtX29wcyxcXG4zMjMzOlxcdFxcdFxcdCAub2ZfbWF0Y2hfdGFibGUgPSBheGllbmV0X29mX21hdGNoLFxcbjMyMzQ6XFx0XFx0fSxcXG4zMjM1OlxcdH07XFxuMzIzNjpcXHRcXG4zMjM3OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xcbjMyMzg6XFx0XFxuMzIzOTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlhpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXFxcIik7XFxuMzI0MDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJYaWxpbnhcXFwiKTtcXG4zMjQxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDA6MTQuMDY3OTIxOTc0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3MjIxNTY5MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uICoqSW52ZXN0aWdhdGluZyBgYXhpZW5ldF9wcm9iZWAqKiBzZWVtcyBsaWtlIHRoZSBpbW1lZGlhdGUgdGFzay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBleGFjdGx5ICpkb2VzKiBgYXhpZW5ldF9wcm9iZWAgZG8/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwcm9iZSBpdCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gV2hhdCdzIHRoZSBiZXN0IHdheSB0byBkbyB0aGF0PyBUaGVuLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgbmF0dXJlLiBJcyB0aGlzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBheGllbmV0X3Byb2JlYCwgcmVzdHJpY3RlZCB0byBhbiBPcGVuIEZpcm13YXJlIChPRikgb25seSBwbGF0Zm9ybT8gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBleGFtaW5lIHRoZSBjb2RlIHJlbGF0ZWQgdG8gYGF4aWVuZXRfcHJvYmVgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24uIFNvLCBsZXQncyBkaXZlIGludG8gdGhhdCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4ODQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjMxLjI4OTQ5NDQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMjg4MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXhpZW5ldF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MjcwNT1zdGF0aWMgdm9pZCBheGllbmV0X2RtYV9lcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzkxOiAqIGF4aWVuZXRfcHJvYmUgLSBBeGkgRXRoZXJuZXQgcHJvYmUgZnVuY3Rpb24uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzkyLSAqIEBwZGV2OlxcdFBvaW50ZXIgdG8gcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4MDI6c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMjc6XFx0LnByb2JlID0gYXhpZW5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjgtXFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDozMS4zMzc1MjY2NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzYyMjQzNjkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgQXhpZU5ldCBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXhpZW5ldF9wcm9iZWAgZnVuY3Rpb24uIEkga25vdyBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkZXZpY2UsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgaXMgY3JpdGljYWwuIFRoZSBwYXRoIHNob3VsZCBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AsIHJpZ2h0PyBMZXQncyBnbyBzcGVsdW5raW5nIGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgcmVzb3VyY2UgYWxsb2NhdGlvbiwgUEhZIHNldHVwLCBhbmQgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbi4gVGhlcmUgbWlnaHQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2UgbG9naWMgYnVyaWVkIHdpdGhpbiwgdG9vLCBzbyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgbm9uLXN0YW5kYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzUyNywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjM0Ljk1OTk2NTc5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODAyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMjpcXHRzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4yODAzOlxcdHtcXG4yODA0OlxcdFxcdGludCByZXQ7XFxuMjgwNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbjI4MDY6XFx0XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwO1xcbjI4MDc6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuMjgwODpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKmV0aHJlcztcXG4yODA5OlxcdFxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4yODEwOlxcdFxcdGludCBhZGRyX3dpZHRoID0gMzI7XFxuMjgxMTpcXHRcXHR1MzIgdmFsdWU7XFxuMjgxMjpcXHRcXG4yODEzOlxcdFxcdG5kZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqbHApKTtcXG4yODE0OlxcdFxcdGlmICghbmRldilcXG4yODE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI4MTY6XFx0XFxuMjgxNzpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBuZGV2KTtcXG4yODE4OlxcdFxcbjI4MTk6XFx0XFx0U0VUX05FVERFVl9ERVYobmRldiwgXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMjgyMDpcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyA9IE5FVElGX0ZfU0c7XFxuMjgyMTpcXHRcXG4yODIyOlxcdFxcdC8qIE1UVSByYW5nZTogNjQgLSA5MDAwICovXFxuMjgyMzpcXHRcXHRuZGV2LVxcdTAwM2VtaW5fbXR1ID0gNjQ7XFxuMjgyNDpcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEFFX0pVTUJPX01UVTtcXG4yODI1OlxcdFxcbjI4MjY6XFx0XFx0bHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4yODI3OlxcdFxcdGxwLVxcdTAwM2VuZGV2ID0gbmRldjtcXG4yODI4OlxcdFxcdGxwLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI4Mjk6XFx0XFx0bHAtXFx1MDAzZW9wdGlvbnMgPSBYQUVfT1BUSU9OX0RFRkFVTFRTO1xcbjI4MzA6XFx0XFx0bHAtXFx1MDAzZXJ4X2JkX251bSA9IFJYX0JEX05VTV9ERUZBVUxUO1xcbjI4MzE6XFx0XFx0bHAtXFx1MDAzZXR4X2JkX251bSA9IFRYX0JEX05VTV9ERUZBVUxUO1xcbjI4MzI6XFx0XFxuMjgzMzpcXHRcXHR1NjRfc3RhdHNfaW5pdChcXHUwMDI2bHAtXFx1MDAzZXJ4X3N0YXRfc3luYyk7XFxuMjgzNDpcXHRcXHR1NjRfc3RhdHNfaW5pdChcXHUwMDI2bHAtXFx1MDAzZXR4X3N0YXRfc3luYyk7XFxuMjgzNTpcXHRcXG4yODM2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG4yODM3OlxcdFxcdHNlcWNvdW50X211dGV4X2luaXQoXFx1MDAyNmxwLVxcdTAwM2Vod19zdGF0c19zZXFjb3VudCwgXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG4yODM4OlxcdFxcdElOSVRfREVGRVJSQUJMRV9XT1JLKFxcdTAwMjZscC1cXHUwMDNlc3RhdHNfd29yaywgYXhpZW5ldF9yZWZyZXNoX3N0YXRzKTtcXG4yODM5OlxcdFxcbjI4NDA6XFx0XFx0bHAtXFx1MDAzZWF4aV9jbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbjI4NDE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJzX2F4aV9saXRlX2Nsa1xcXCIpO1xcbjI4NDI6XFx0XFx0aWYgKCFscC1cXHUwMDNlYXhpX2Nsaykge1xcbjI4NDM6XFx0XFx0XFx0LyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGlmIG5hbWVkIEFYSSBjbG9jayBpcyBub3QgcHJlc2VudCxcXG4yODQ0OlxcdFxcdFxcdCAqIHRyZWF0IHRoZSBmaXJzdCBjbG9jayBzcGVjaWZpZWQgYXMgdGhlIEFYSSBjbG9jay5cXG4yODQ1OlxcdFxcdFxcdCAqL1xcbjI4NDY6XFx0XFx0XFx0bHAtXFx1MDAzZWF4aV9jbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG4yODQ3OlxcdFxcdH1cXG4yODQ4OlxcdFxcdGlmIChJU19FUlIobHAtXFx1MDAzZWF4aV9jbGspKVxcbjI4NDk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUFRSX0VSUihscC1cXHUwMDNlYXhpX2NsayksXFxuMjg1MDpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJjb3VsZCBub3QgZ2V0IEFYSSBjbG9ja1xcXFxuXFxcIik7XFxuMjg1MTpcXHRcXG4yODUyOlxcdFxcdGxwLVxcdTAwM2VtaXNjX2Nsa3NbMF0uaWQgPSBcXFwiYXhpc19jbGtcXFwiO1xcbjI4NTM6XFx0XFx0bHAtXFx1MDAzZW1pc2NfY2xrc1sxXS5pZCA9IFxcXCJyZWZfY2xrXFxcIjtcXG4yODU0OlxcdFxcdGxwLVxcdTAwM2VtaXNjX2Nsa3NbMl0uaWQgPSBcXFwibWd0X2Nsa1xcXCI7XFxuMjg1NTpcXHRcXG4yODU2OlxcdFxcdHJldCA9IGRldm1fY2xrX2J1bGtfZ2V0X29wdGlvbmFsX2VuYWJsZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBYQUVfTlVNX01JU0NfQ0xPQ0tTLFxcbjI4NTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0bHAtXFx1MDAzZW1pc2NfY2xrcyk7XFxuMjg1ODpcXHRcXHRpZiAocmV0KVxcbjI4NTk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcmV0LFxcbjI4NjA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiY291bGQgbm90IGdldC9lbmFibGUgbWlzYy4gY2xvY2tzXFxcXG5cXFwiKTtcXG4yODYxOlxcdFxcbjI4NjI6XFx0XFx0LyogTWFwIGRldmljZSByZWdpc3RlcnMgKi9cXG4yODYzOlxcdFxcdGxwLVxcdTAwM2VyZWdzID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgXFx1MDAyNmV0aHJlcyk7XFxuMjg2NDpcXHRcXHRpZiAoSVNfRVJSKGxwLVxcdTAwM2VyZWdzKSlcXG4yODY1OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGxwLVxcdTAwM2VyZWdzKTtcXG4yODY2OlxcdFxcdGxwLVxcdTAwM2VyZWdzX3N0YXJ0ID0gZXRocmVzLVxcdTAwM2VzdGFydDtcXG4yODY3OlxcdFxcbjI4Njg6XFx0XFx0LyogU2V0dXAgY2hlY2tzdW0gb2ZmbG9hZCwgYnV0IGRlZmF1bHQgdG8gb2ZmIGlmIG5vdCBzcGVjaWZpZWQgKi9cXG4yODY5OlxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyA9IDA7XFxuMjg3MDpcXHRcXG4yODcxOlxcdFxcdGlmIChheGllbmV0X2lvcihscCwgWEFFX0FCSUxJVFlfT0ZGU0VUKSBcXHUwMDI2IFhBRV9BQklMSVRZX1NUQVRTKVxcbjI4NzI6XFx0XFx0XFx0bHAtXFx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1NUQVRTO1xcbjI4NzM6XFx0XFxuMjg3NDpcXHRcXHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInhsbngsdHhjc3VtXFxcIiwgXFx1MDAyNnZhbHVlKTtcXG4yODc1OlxcdFxcdGlmICghcmV0KSB7XFxuMjg3NjpcXHRcXHRcXHRzd2l0Y2ggKHZhbHVlKSB7XFxuMjg3NzpcXHRcXHRcXHRjYXNlIDE6XFxuMjg3ODpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZmVhdHVyZXMgfD0gWEFFX0ZFQVRVUkVfUEFSVElBTF9UWF9DU1VNO1xcbjI4Nzk6XFx0XFx0XFx0XFx0LyogQ2FuIGNoZWNrc3VtIGFueSBjb250aWd1b3VzIHJhbmdlICovXFxuMjg4MDpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX0NTVU07XFxuMjg4MTpcXHRcXHRcXHRcXHRicmVhaztcXG4yODgyOlxcdFxcdFxcdGNhc2UgMjpcXG4yODgzOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9GVUxMX1RYX0NTVU07XFxuMjg4NDpcXHRcXHRcXHRcXHQvKiBDYW4gY2hlY2tzdW0gVENQL1VEUCBvdmVyIElQdjQuICovXFxuMjg4NTpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0lQX0NTVU07XFxuMjg4NjpcXHRcXHRcXHRcXHRicmVhaztcXG4yODg3OlxcdFxcdFxcdH1cXG4yODg4OlxcdFxcdH1cXG4yODg5OlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwieGxueCxyeGNzdW1cXFwiLCBcXHUwMDI2dmFsdWUpO1xcbjI4OTA6XFx0XFx0aWYgKCFyZXQpIHtcXG4yODkxOlxcdFxcdFxcdHN3aXRjaCAodmFsdWUpIHtcXG4yODkyOlxcdFxcdFxcdGNhc2UgMTpcXG4yODkzOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9QQVJUSUFMX1JYX0NTVU07XFxuMjg5NDpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYQ1NVTTtcXG4yODk1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI4OTY6XFx0XFx0XFx0Y2FzZSAyOlxcbjI4OTc6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfUlhfQ1NVTTtcXG4yODk4OlxcdFxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhDU1VNO1xcbjI4OTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkwMDpcXHRcXHRcXHR9XFxuMjkwMTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjM0Ljk2MDE4Nzk2N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNjI0OTQwMTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGF4aWVuZXRfcHJvYmVgLi4uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVbmRlcnN0YW5kaW5nIHRoZSBQcm9iZSdzIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcHJvYmUgaXMgc3VwcG9zZWQgdG8gKmRvKi4gTGV0J3MgbWFrZSBzdXJlIEknbSBjbGVhciBvbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJyb2FkZXIgc3lzdGVtPyBXaGF0J3MgaXRzIHB1cnBvc2U/IElzIGl0IGZvciBtb25pdG9yaW5nLCBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSdtIGdvaW5nIHRvIG5lZWQgY29udGV4dC4gV2hhdCBzaWduYWxzIG9yIGRhdGEgaXMgaXQgZGVzaWduZWQgdG8gaW50ZXJjZXB0IG9yIGdlbmVyYXRlPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW50ZW5kZWQgdXNlIGNhc2UgdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBBbnkgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGU/IExldCdzIGhvcGUgdGhlcmUncyBzb21ldGhpbmcgdG8gY2xhcmlmeSBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0ODcsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjUxLjIwOTU5MjI3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAyLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTAyOlxcdFxcdC8qIEZvciBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcywgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBtdXN0IGhhdmVcXG4yOTAzOlxcdFxcdCAqIGEgbGFyZ2VyIFJ4L1R4IE1lbW9yeS4gVHlwaWNhbGx5LCB0aGUgc2l6ZSBtdXN0IGJlIGxhcmdlIHNvIHRoYXRcXG4yOTA0OlxcdFxcdCAqIHdlIGNhbiBlbmFibGUganVtYm8gb3B0aW9uIGFuZCBzdGFydCBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcy5cXG4yOTA1OlxcdFxcdCAqIEhlcmUgd2UgY2hlY2sgZm9yIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIFJ4L1R4IGluIHRoZSBoYXJkd2FyZSBmcm9tXFxuMjkwNjpcXHRcXHQgKiB0aGUgZGV2aWNlLXRyZWUgYW5kIGFjY29yZGluZ2x5IHNldCBmbGFncy5cXG4yOTA3OlxcdFxcdCAqL1xcbjI5MDg6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJ4bG54LHJ4bWVtXFxcIiwgXFx1MDAyNmxwLVxcdTAwM2VyeG1lbSk7XFxuMjkwOTpcXHRcXHRpZiAocmV0KVxcbjI5MTA6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcmV0LFxcbjI5MTE6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIHJlYWQgeGxueCxyeG1lbSBwcm9wZXJ0eVxcXFxuXFxcIik7XFxuMjkxMjpcXHRcXG4yOTEzOlxcdFxcdGxwLVxcdTAwM2Vzd2l0Y2hfeF9zZ21paSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSxcXG4yOTE0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJ4bG54LHN3aXRjaC14LXNnbWlpXFxcIik7XFxuMjkxNTpcXHRcXG4yOTE2OlxcdFxcdC8qIFN0YXJ0IHdpdGggdGhlIHByb3ByaWV0YXJ5LCBhbmQgYnJva2VuIHBoeV90eXBlICovXFxuMjkxNzpcXHRcXHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInhsbngscGh5LXR5cGVcXFwiLCBcXHUwMDI2dmFsdWUpO1xcbjI5MTg6XFx0XFx0aWYgKCFyZXQpIHtcXG4yOTE5OlxcdFxcdFxcdG5ldGRldl93YXJuKG5kZXYsIFxcXCJQbGVhc2UgdXBncmFkZSB5b3VyIGRldmljZSB0cmVlIGJpbmFyeSBibG9iIHRvIHVzZSBwaHktbW9kZVxcXCIpO1xcbjI5MjA6XFx0XFx0XFx0c3dpdGNoICh2YWx1ZSkge1xcbjI5MjE6XFx0XFx0XFx0Y2FzZSBYQUVfUEhZX1RZUEVfTUlJOlxcbjI5MjI6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4yOTIzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI5MjQ6XFx0XFx0XFx0Y2FzZSBYQUVfUEhZX1RZUEVfR01JSTpcXG4yOTI1OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xcbjI5MjY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkyNzpcXHRcXHRcXHRjYXNlIFhBRV9QSFlfVFlQRV9SR01JSV8yXzA6XFxuMjkyODpcXHRcXHRcXHRcXHRscC1cXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ7XFxuMjkyOTpcXHRcXHRcXHRcXHRicmVhaztcXG4yOTMwOlxcdFxcdFxcdGNhc2UgWEFFX1BIWV9UWVBFX1NHTUlJOlxcbjI5MzE6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJO1xcbjI5MzI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkzMzpcXHRcXHRcXHRjYXNlIFhBRV9QSFlfVFlQRV8xMDAwQkFTRV9YOlxcbjI5MzQ6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcXG4yOTM1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI5MzY6XFx0XFx0XFx0ZGVmYXVsdDpcXG4yOTM3OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI5Mzg6XFx0XFx0XFx0fVxcbjI5Mzk6XFx0XFx0fSBlbHNlIHtcXG4yOTQwOlxcdFxcdFxcdHJldCA9IG9mX2dldF9waHlfbW9kZShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFx1MDAyNmxwLVxcdTAwM2VwaHlfbW9kZSk7XFxuMjk0MTpcXHRcXHRcXHRpZiAocmV0KVxcbjI5NDI6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTQzOlxcdFxcdH1cXG4yOTQ0OlxcdFxcdGlmIChscC1cXHUwMDNlc3dpdGNoX3hfc2dtaWkgXFx1MDAyNlxcdTAwMjYgbHAtXFx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSBcXHUwMDI2XFx1MDAyNlxcbjI5NDU6XFx0XFx0ICAgIGxwLVxcdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XFxuMjk0NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJ4bG54LHN3aXRjaC14LXNnbWlpIG9ubHkgc3VwcG9ydGVkIHdpdGggU0dNSUkgb3IgMTAwMEJhc2VYXFxcXG5cXFwiKTtcXG4yOTQ3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI5NDg6XFx0XFx0fVxcbjI5NDk6XFx0XFxuMjk1MDpcXHRcXHRpZiAoIW9mX3Byb3BlcnR5X3ByZXNlbnQocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJkbWFzXFxcIikpIHtcXG4yOTUxOlxcdFxcdFxcdC8qIEZpbmQgdGhlIERNQSBub2RlLCBtYXAgdGhlIERNQSByZWdpc3RlcnMsIGFuZCBkZWNvZGUgdGhlIERNQSBJUlFzICovXFxuMjk1MjpcXHRcXHRcXHRucCA9IG9mX3BhcnNlX3BoYW5kbGUocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJheGlzdHJlYW0tY29ubmVjdGVkXFxcIiwgMCk7XFxuMjk1MzpcXHRcXG4yOTU0OlxcdFxcdFxcdGlmIChucCkge1xcbjI5NTU6XFx0XFx0XFx0XFx0c3RydWN0IHJlc291cmNlIGRtYXJlcztcXG4yOTU2OlxcdFxcbjI5NTc6XFx0XFx0XFx0XFx0cmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgXFx1MDAyNmRtYXJlcyk7XFxuMjk1ODpcXHRcXHRcXHRcXHRpZiAocmV0KSB7XFxuMjk1OTpcXHRcXHRcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMjk2MDpcXHRcXHRcXHRcXHRcXHRcXHRcXFwidW5hYmxlIHRvIGdldCBETUEgcmVzb3VyY2VcXFxcblxcXCIpO1xcbjI5NjE6XFx0XFx0XFx0XFx0XFx0b2Zfbm9kZV9wdXQobnApO1xcbjI5NjI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTYzOlxcdFxcdFxcdFxcdH1cXG4yOTY0OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VkbWFfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbjI5NjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2ZG1hcmVzKTtcXG4yOTY2OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VyeF9pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChucCwgMSk7XFxuMjk2NzpcXHRcXHRcXHRcXHRscC1cXHUwMDNldHhfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApO1xcbjI5Njg6XFx0XFx0XFx0XFx0b2Zfbm9kZV9wdXQobnApO1xcbjI5Njk6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZWV0aF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDApO1xcbjI5NzA6XFx0XFx0XFx0fSBlbHNlIHtcXG4yOTcxOlxcdFxcdFxcdFxcdC8qIENoZWNrIGZvciB0aGVzZSByZXNvdXJjZXMgZGlyZWN0bHkgb24gdGhlIEV0aGVybmV0IG5vZGUuICovXFxuMjk3MjpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZG1hX3JlZ3MgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxLCBOVUxMKTtcXG4yOTczOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VyeF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDEpO1xcbjI5NzQ6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXR4X2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7XFxuMjk3NTpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZXRoX2lycSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMik7XFxuMjk3NjpcXHRcXHRcXHR9XFxuMjk3NzpcXHRcXHRcXHRpZiAoSVNfRVJSKGxwLVxcdTAwM2VkbWFfcmVncykpIHtcXG4yOTc4OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXFxcblxcXCIpO1xcbjI5Nzk6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobHAtXFx1MDAzZWRtYV9yZWdzKTtcXG4yOTgwOlxcdFxcdFxcdH1cXG4yOTgxOlxcdFxcdFxcdGlmICghbHAtXFx1MDAzZXJ4X2lycSB8fCAhbHAtXFx1MDAzZXR4X2lycSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDo1MS4yMDk3NTA1NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjE5NTg4MTg4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBpbiB0aGUgQ29udGV4dCBvZiBhbWQ2NCBRRU1VKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBUaGF0IGBvZl9wcm9wZXJ0eV9yZWFkX3UzMmAgY2FsbCB3aXRoIHRoZSBgeGxueCxyeG1lbWAgcHJvcGVydHkgaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gSWYgYHBkZXYtXHUwMDNlZGV2Lm9mX25vZGVgIGlzIE5VTEwsIHRoYXQgY2FsbCBzaG91bGQgcmV0dXJuIGFuIGVycm9yLCBvciBpdCAqY291bGQqIGNyYXNoIGR1ZSB0byBhIG51bGwgZGVyZWZlcmVuY2UsIHRob3VnaCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGF0IGNhc2UuIFRoaXMgZHJpdmVyJ3MgZm9yIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFp5bnEvTWljcm9CbGF6ZSBTb0NzLCB3aGljaCBtZWFucyBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2AgaXMgcmVsZXZhbnQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBoYXJkd2FyZSBlbXVsYXRlZCBvbiBhIHN0YW5kYXJkIFFFTVUvR0NFIHNldHVwIGZvciB4ODZfNjQ/XG5cbkhvbGQgb24uIExldCBtZSBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBPa2F5LCBpdCBwb2ludHMgb3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN0dWZmIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUuIEFuZCB0aGVuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocy4uLiBsaWtlIHRlYXItZG93biBjYWxsYmFja3Mgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcuXG5cbk5vdywgY291bGQgWGlsaW54IEFYSSBFdGhlcm5ldCBldmVuIGJlIGVtdWxhdGVkIGluIFFFTVU/IE9yIGlzIGl0IGFuIGVtYmVkZGVkIFNvQyBGUEdBIGNvcmUgb24gTWljcm9CbGF6ZS9BUk0/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0J3MgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaGVyZT8gQWgsIGl0J3MgYW1kNjQuIENhbiB0aGlzIGRyaXZlciwgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgLCBldmVuICpiZSogdXNlZCBvbiBhbWQ2NCBpbiBRRU1VPyBEb2VzIFFFTVUgZXZlbiBoYXZlIGB4bG54LGF4aS1ldGhlcm5ldGAgZm9yIHg4Nl82ND9cblxuV2FpdCwgUUVNVSAqb25seSogaGFzIGB4bG54LmF4aS1ldGhlcm5ldGAgZm9yIE1pY3JvQmxhemUvQVJNLCBsaWtlIG9uIHRob3NlIFpDVTEwMiBhbmQgUGV0YUxvZ2l4IGJvYXJkcy4gRG8gSSBrbm93IGlmIFFFTVUgZXZlbiBoYXMgYHhsbnguYXhpLWV0aGVybmV0YCBtYWNoaW5lIG1vZGVscz8gTGV0IG1lIGNoZWNrIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsIGFuZCBRRU1VLiBIZXksIGBody9uZXQveGlsaW54X2F4aWVuZXQuY2AgZXhpc3RzIGluIFFFTVUhIEJ1dCBkb2VzIFFFTVUgZW11bGF0ZSBgeGlsaW54X2F4aWVuZXRgIG9uIHg4Nl82ND9cblxuTm8sIG9uIHg4Nl82NCwgUUVNVSBydW5zIHdpdGggYSBgcTM1YCBvciBgcGNgIG1hY2hpbmUgKHRoZSBzdGFuZGFyZCBQQy9RMzUgYXJjaGl0ZWN0dXJlKS4gRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlcyBhcmVuJ3QgaW5zdGFudGlhdGVkIG9uIHN0YW5kYXJkIFFFTVUgeDg2XzY0IFZNcy4geDg2XzY0IGRvZXNuJ3QgYm9vdCB3aXRoIE9wZW4gRmlybXdhcmUgb3IgRGV2aWNlIFRyZWUgd2l0aCBYaWxpbnggRlBHQSBkZXZpY2VzIVxuXG5Pa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXM6IGRvZXMgc3l6a2FsbGVyIG9yIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQgKmV2ZXIqIGluc3RhbnRpYXRlIGB4aWxpbnhfYXhpZW5ldGA/IENhbiBhIHBsYXRmb3JtIGRldmljZSBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlP1xuXG5XYWl0LCBjYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgb3IgT0YgZGV2aWNlcz8gTm8uIE9GIGRldmljZSBub2RlcyBjb21lIGZyb20gdGhlIGRldmljZSB0cmVlIGJsb2IgYXQgYm9vdCwgb3IgZnJvbSBPRiBvdmVybGF5cy4gQnV0IGBjb25maWdfb2ZgIGlzbid0IGVuYWJsZWQgb24geDg2XzY0IHVubGVzcyBgQ09ORklHX09GYCBpcyBlbmFibGVkLCBhbmQgZXZlbiB3aXRoIGBDT05GSUdfT0ZgLCBPRiBvdmVybGF5cyByZXF1aXJlIHJvb3QgYW5kIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBidXQgeDg2XzY0ICpkb2Vzbid0KiB1c2UgRGV2aWNlIFRyZWUhXG5cbkNhbiBwbGF0Zm9ybSBkZXZpY2VzIGJlIGNyZWF0ZWQgdmlhIGNvbmZpZ2ZzIG9yIHN5c2ZzIG9yIGFueXRoaW5nPyBObywgdGhpcyBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciAqcmVxdWlyZXMqOlxuKiAgIEFuIGBvZl9ub2RlYCB3aXRoIGB4bG54LHJ4bWVtYCwgZmFpbGluZyBwcm9iZSBpZiB0aGF0J3MgbWlzc2luZ1xuKiAgIERNQSByZXNvdXJjZXMgb3IgYSBETUEgZW5naW5lXG4qICAgQSBQSFkgZGV2aWNlIC8gcGh5bGlua1xuKiAgIEkvTyBtZW1vcnkgcmVzb3VyY2VzLlxuXG5Ob25lIG9mICp0aG9zZSogZXhpc3Qgb24geDg2XzY0IHZpcnR1YWwgbWFjaGluZXMuXG5cbkFscmlnaHQsIGxldCdzIG5vdyBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBgQ09ORklHX1hJTElOWF9ETUFgIGFuZCBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2AuIFRpbWUgdG8gZ3JlcCB0aHJvdWdoIGRlZmNvbmZpZ3Mgb3IgZmluZCB3aGVyZSB0aGV5J3JlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6MTMuMTY4NTcyNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzc1ODY1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfWElMSU5YX0FYSV9FTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NTM9Q09ORklHX1RJX0lDU1NHX1BSVUVUSD1tXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ1Ny0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NTg6Q09ORklHX1hJTElOWF9BWElfRU1BQz1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NTktQ09ORklHX1FDT01fSVBBPW1cXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDQ9Q09ORklHX1hJTElOWF9FTUFDTElURT15XFxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NTpDT05GSUdfWElMSU5YX0FYSV9FTUFDPXlcXG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnLTQ2LUNPTkZJR19YSUxJTlhfTExfVEVNQUM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMToxMy40NzYzMzc0NzFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjQ2NTY0ODU2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHdoZXJlIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBpcyBlbmFibGVkLCBhbmQgaXQgbG9va3MgbGlrZSByaWdodCBub3cgaXQncyBvbmx5IHNob3dpbmcgdXAgaW4gYGFyY2gvYXJtNjQvZGVmY29uZmlnYCBhbmQgYGFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWdgLiBIbW0sIHRoYXTigJlzIGludGVyZXN0aW5nLiBJdCdzIGNvbnNwaWN1b3VzbHkgYWJzZW50IGZyb20gYGFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZ2AuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGFueSBjaGFuY2UgYXQgYWxsIG9mIGJ1aWxkaW5nIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBvbiBhbiB4ODZfNjQgc3lzdGVtPyBUaGF0IHNlZW1z4oCmdW5saWtlbHkgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYnV0IEkgc2hvdWxkIGJlIGFic29sdXRlbHkgc3VyZSBiZWZvcmUgSSBydWxlIGFueXRoaW5nIG91dC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYENPTkZJR19YSUxJTlhfRE1BYCB3aGlsZSBJJ20gYXQgaXQuIEl0IG1pZ2h0IG9mZmVyIHNvbWUgY2x1ZXMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMDgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6MzguMTMyODI1NTM3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTU3NDk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9ETUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RtYS9LY29uZmlnPTY3ND1jb25maWcgWEdFTkVfRE1BXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4Mi1cXG5kcml2ZXJzL2RtYS9LY29uZmlnOjY4Mzpjb25maWcgWElMSU5YX0RNQVxcbmRyaXZlcnMvZG1hL0tjb25maWctNjg0LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggQVhJIERNQVMgRW5naW5lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMTozOC44ODg1ODM3NTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzk0MjMzNjQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBETUEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIERNQSBjb25maWd1cmF0aW9uLiBUaGUgdGFyZ2V0IGlzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgYXNwZWN0IG9mIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6ZXJvIGluIG9uIGBkcml2ZXJzL2RtYS9LY29uZmlnYC4gSSdtIHNwZWNpZmljYWxseSBhaW1pbmcgdG8gaW5zcGVjdCBhcm91bmQgbGluZSA2ODMuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBpbmRpY2F0b3IgdGhhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaXMgaGFwcGVuaW5nIHJlbGF0ZWQgdG8gRE1BJ3MgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGRlZmluZWQgdGhlcmUsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBmbGFncyB0aGF0IGFyZSByZWxldmFudCB0byB3aGF0IEknbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZy4gSSdtIGhvcGluZyBJIHdpbGwgZmluZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb2YgaW50ZXJlc3QgYXQgdGhhdCBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAxOjQyLjgzMDkyMjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kbWEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2ODIsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2ODI6XFx0XFxuIDY4MzpcXHRjb25maWcgWElMSU5YX0RNQVxcbiA2ODQ6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCBBWEkgRE1BUyBFbmdpbmVcXFwiXFxuIDY4NTpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiA2ODY6XFx0XFx0c2VsZWN0IERNQV9FTkdJTkVcXG4gNjg3OlxcdFxcdGhlbHBcXG4gNjg4OlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFhpbGlueCBBWEkgVkRNQSBTb2Z0IElQLlxcbiA2ODk6XFx0XFxuIDY5MDpcXHRcXHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xcbiA2OTE6XFx0XFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcXG4gNjkyOlxcdFxcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cXG4gNjkzOlxcdFxcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cXG4gNjk0OlxcdFxcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXFxuIDY5NTpcXHRcXHQgIE1lbW9yeSBNYXBwZWQgKFMyTU0pIGZvciB0aGUgZGF0YSB0cmFuc2ZlcnMuXFxuIDY5NjpcXHRcXHQgIEFYSSBDRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xcbiA2OTc6XFx0XFx0ICBiZXR3ZWVuIGEgbWVtb3J5LW1hcHBlZCBzb3VyY2UgYWRkcmVzcyBhbmQgYSBtZW1vcnktbWFwcGVkXFxuIDY5ODpcXHRcXHQgIGRlc3RpbmF0aW9uIGFkZHJlc3MuXFxuIDY5OTpcXHRcXHQgIEFYSSBETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIG9uZSBkaW1lbnNpb25hbCBkaXJlY3RcXG4gNzAwOlxcdFxcdCAgbWVtb3J5IGFjY2VzcyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdGFyZ2V0IHBlcmlwaGVyYWxzLlxcbiA3MDE6XFx0XFx0ICBBWEkgTUNETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAxOjQyLjgzMTAwMTAzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU1MDYyNDk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiB4ODYgRXhlY3V0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZCEgQ291bGQgdGhpcyBkcml2ZXIsIHRoaXMgKnRoaW5nKiwgYWN0dWFsbHkgYmUgYnVpbHQgZm9yIHg4Nj8gVGhlIHByZXNlbmNlIG9mIGBkZXBlbmRzIG9uIEhBU19JT01FTWAgaXMgYSBrZXkgaW5kaWNhdG9yLiBJdCBtZWFucyB0aGF0LCAqdGVjaG5pY2FsbHkqLCBpZiB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLCB3ZSAqY2FuKiBjb21waWxlIGl0IGZvciBhbiB4ODYgYXJjaGl0ZWN0dXJlLiBCdXQgY29tcGlsYXRpb24gaXMgb25seSBoYWxmIHRoZSBiYXR0bGUuIENhbiBpdCAqZXhlY3V0ZSo/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuTGV0J3MgZGl2ZSBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBydW50aW1lIGJlaGF2aW9yLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgbWVtb3J5LiBUaGlua2luZyBhYm91dCBob3cgdGhlIGRyaXZlciB3b3VsZCBwZXJmb3JtIG9uIGFub3RoZXIgYXJjaGl0ZWN0dXJlLCBgYXhpZW5ldF9mcmVlX3R4X2NoYWluYCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gV2hlbiBpcyB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5ICpjYWxsZWQqPyBJIG5lZWQgdG8gZmluZCBpdHMgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIncyBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWVtb3J5IGl0IGlzIHVzaW5nLiBMZXQncyBzdGFydCB3aXRoIGEgZ3JlcCBvbiB0aGF0IGZ1bmN0aW9uIHdpdGhpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGU6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNzksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMTo0OC4zMzcyNTM3NDNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM3NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRfZnJlZV90eF9jaGFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9NzEwPXN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjktICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc4MjpzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4My1cXHRcXHRcXHRcXHQgaW50IG5yX2JkcywgYm9vbCBmb3JjZSwgdTMyICpzaXplcCwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MTAwND1zdGF0aWMgaW50IGF4aWVuZXRfdHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMDExOlxcdHBhY2tldHMgPSBheGllbmV0X2ZyZWVfdHhfY2hhaW4obHAsIGxwLVxcdTAwM2V0eF9iZF9jaSwgbHAtXFx1MDAzZXR4X2JkX251bSwgZmFsc2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMDEyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzaXplLCBidWRnZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0xMDU0PWF4aWVuZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTEyMi1cXHRcXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMTIzOlxcdFxcdFxcdGF4aWVuZXRfZnJlZV90eF9jaGFpbihscCwgb3JpZ190YWlsX3B0ciwgaWkgKyAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTEyNC1cXHRcXHRcXHRcXHRcXHQgICAgICB0cnVlLCBOVUxMLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6NDguMzg1Mzk2OTg1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwODM3MDg3NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQXBwbGljYWJpbGl0eSBBc3Nlc3NtZW50OiBgeGlsaW54X2F4aWVuZXRgIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiBmdXp6aW5nIHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIHBhdGggaW52b2x2aW5nIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gLCBpcyB3b3J0aHdoaWxlLCBiYXNlZCBvbiB0aGUgdHJpYWdlIHBoaWxvc29waHkuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgYXhpZW5ldF9mcmVlX3R4X2NoYWluYCBpcyBjYWxsZWQuIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGF4aWVuZXRfdHhfcG9sbGAgZHVyaW5nIE5BUEkgcG9sbGluZywgYGF4aWVuZXRfc3RhcnRfeG1pdGAgZm9yIFRYIGNsZWFudXAgb24gZXJyb3IsIGFuZCB0aGF0J3MgaXQuIEl0J3Mgbm90IHVzZWQgYnkgYGF4aWVuZXRfZG1hX2JkX3JlbGVhc2VgLCBhcyBwcmV2aW91c2x5IHRob3VnaHQuXG5cbk5vdywgbGV0J3MgYXBwbHkgdGhlIGZ1enppbmcgdHJpYWdlIGNyaXRlcmlhLiBUaGUgY29yZSBwaGlsb3NvcGh5IGlzIHJlYWNoYWJpbGl0eTogY2FuIHRoZSBjb2RlIGV4ZWN1dGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAoUUVNVSBvciBHQ0UpIHdpdGggZW11bGF0ZWQgZGV2aWNlcz8gVGhlICpuZWdhdGl2ZSogY3JpdGVyaWEgZ2l2ZSB1cyB0aGUgZXNjYXBlIGNsYXVzZXMuIFdlIGNhbiByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXM7IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGV4ZWN1dGlvbiBwYXRocyBhcmUgdGhlIGtleXMuXG5cblRoaXMgYHhpbGlueF9heGllbmV0YCBkcml2ZXIgaXMgYW4gT0YgKERldmljZSBUcmVlKSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQuIEl0J3MgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBcyBhbmQgU29DcyBsaWtlIFp5bnEgYW5kIE1pY3JvQmxhemUuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyB0cmlja3kuIEkgbmVlZCB0byBlc3RhYmxpc2ggYSB2ZXJ5IHNpbXBsZSBmYWN0OiBjYW4gdGhlIHhpbGlueF9heGllbmV0IGRyaXZlciBiZSByZWFjaGVkIHdpdGhpbiBRRU1VL0dDRT9cblxuMS4gICoqQXJjaGl0ZWN0dXJlOioqIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kLlxuMi4gICoqUGxhdGZvcm06KiogVGhlIGRyaXZlciBpcyBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBJUC5cbjMuICAqKlFFTVU6KiogVGhlcmUncyBubyBlbXVsYXRpb24gb2YgdGhlIFwieGxueCxheGktZXRoZXJuZXRcIiBkZXZpY2UsIG5vciBhIERldmljZSBUcmVlIHVzZWQgb24geDg2XFxfNjQgUUVNVS5cbjQuICAqKkdDRToqKiBObyBYaWxpbnggQVhJIEV0aGVybmV0IGhhcmR3YXJlIGV4aXN0cyBpbiBHQ0UuXG41LiAgKipJbnN0YW50aWF0aW9uczoqKiBRRU1VIGRvZXNuJ3QgaW5zdGFudGlhdGUgdGhpcyBwbGF0Zm9ybSBkZXZpY2Ugb24geDg2XFxfNjQuXG42LiAgKipCaW5kaW5nOioqIFRoZSBkcml2ZXIgYmluZHMgdmlhIG5hbWUgb3IgT0YgRFQgbWF0Y2guIEhvd2V2ZXIsIGV2ZW4gaWYgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgXCJ4aWxpbnhcXF9heGllbmV0XCIgY291bGQgc29tZWhvdyAqYmUqIGNyZWF0ZWQgKHNheSwgdmlhIHN5c2ZzIG9yIGEgbW9jaywgd2hpY2ggaXMgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBmcm9tIHVzZXJzcGFjZSB3aXRob3V0IHZlcnkgc3BlY2lmaWMgZHJpdmVycyksIHRoZSBkcml2ZXIncyBgYXhpZW5ldF9wcm9iZWAgcm91dGluZSBpbW1lZGlhdGVseSBmYWlscyBiZWNhdXNlIGl0IHRyaWVzIHRvIHJlYWQgdGhlIFwieGxueCxyeG1lbVwiIHByb3BlcnR5IGZyb20gdGhlIGRldmljZSB0cmVlIG5vZGUgYW5kIHRoYXQgbm9kZSBpcyBlaXRoZXIgbWlzc2luZyBvciBtaXNzaW5nIHRoYXQgcHJvcGVydHksIHJlcXVpcmluZyBjbG9ja3MsIEkvTyBtZW1vcnkgcmVzb3VyY2VzLCBETUEsIGEgUEhZIGNvbm5lY3Rpb24sIGV0Yy4gVGhlIGRyaXZlciBpcyBjbGVhcmx5IG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGhvdXQgdGhlIGludGVuZGVkIGhhcmR3YXJlLlxuXG5JbiBzaG9ydCwgd2l0aG91dCBhbiBhY3R1YWwgWGlsaW54IEZQR0Egb3IgYW4gZW11bGF0aW9uIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBvbiB4ODZcXF82NCwgdGhpcyBkcml2ZXIgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSwgaG93ZXZlcjogSSBuZWVkIHRvIHJ1bGUgb3V0IHNvbWUgb3RoZXIgY29kZSB0aGF0IGNhbGxzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGluIGEgdmlydHVhbCBkcml2ZXIsIG9yIHNvbWUga2luZCBvZiBQQ0kgd3JhcHBlci4gSSdsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2gga2VybmVsIHNlYXJjaCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgeGlsaW54X2F4aWVuZXRgIHRoYXQgbWlnaHQgb3BlbiB1cCBhIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aC4gSG93ZXZlciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgaXMgbm90IHByYWN0aWNhbGx5IGZ1enphYmxlLiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTI1OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6NTkuMjIyNDg3MTg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ0MjU4ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhpbGlueF9heGllbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTI5ODY5PUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXFxuTUFJTlRBSU5FUlM6Mjk4NzA6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXFxuTUFJTlRBSU5FUlMtMjk4NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSArPSB4aWxpbnhfZW1hY2xpdGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSArPSB4aWxpbnhfZW1hYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaD03MzI9c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MDovKiBGdW5jdGlvbiBwcm90b3R5cGVzIHZpc2libGUgaW4geGlsaW54X2F4aWVuZXRfbWRpby5jIGZvciBvdGhlciBmaWxlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0MS1pbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDc6I2luY2x1ZGUgXFxcInhpbGlueF9heGllbmV0LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMC1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMTpcXHRcXHQgLm5hbWUgPSBcXFwieGlsaW54X2F4aWVuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMi1cXHRcXHQgLnBtID0gXFx1MDAyNmF4aWVuZXRfcG1fb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWRpby5jOjE4OiNpbmNsdWRlIFxcXCJ4aWxpbnhfYXhpZW5ldC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmMtMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAyOjAwLjg2Njc1MzEwM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1ODcwMTk4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGFuZCBJJ3ZlIGNvbWUgdG8gYSBmaXJtIGNvbmNsdXNpb246IGl0J3MgKm5vdCogd29ydGggZnV6emluZywgYXQgbGVhc3Qgbm90IGluIG91ciB0eXBpY2FsIFFFTVUtYmFzZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgaXRzZWxmLCBzcGVjaWZpY2FsbHkgdGhlIGB4aWxpbnhfYXhpZW5ldF9tYWluLmNgIGFuZCBgeGlsaW54X2F4aWVuZXRfbWRpby5jYCBmaWxlcywgaW1tZWRpYXRlbHkgc2NyZWFtcyBcInZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZS5cIiBXZSdyZSB0YWxraW5nIGFib3V0IGEgWGlsaW54IEFYSSBFdGhlcm5ldCBJUCBkcml2ZXIgZGVzaWduZWQgZm9yIEZQR0FzIGFuZCBlbWJlZGRlZCBTb0NzIGxpa2UgVmlydGV4LCBaeW5xLCBhbmQgTWljcm9CbGF6ZS5cblxuSXQgdXNlcyBEZXZpY2UgVHJlZSwgZXhwZWN0cyBYaWxpbnggRlBHQSBJUCwgYW5kIG5lZWRzIGRlZGljYXRlZCBETUEgY29udHJvbGxlcnMg4oCTIHRoaW5ncyB5b3UganVzdCAqZG9uJ3QqIGZpbmQgb24gYSBzdGFuZGFyZCB4ODZfNjQgb3IgYW1kNjQgc3lzdGVtIHJ1bm5pbmcgaW4gUUVNVS4gSXQgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgdGhlIGtpbmQgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBU0lDcyBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZW11bGF0aW9uIHRoYXQgd2Ugc2ltcGx5IGRvbid0IGhhdmUgYXZhaWxhYmxlLiBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHNpdHVhdGlvbiBhcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhleSByZXF1aXJlIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEFuZCBub3Qgb25seSB0aGF0LCBidXQgdGhpcyBkcml2ZXIgY29udGFpbnMgY29kZSBwYXRocyBzcGVjaWZpYyB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gYW1kNjQuIFRoZXJlZm9yZSwgaXQncyBhIGRlYWQgZW5kIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm06IGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFdlJ3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdCBpc24ndCBhY2Nlc3NpYmxlIHRvIHVzIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdlJ3JlIHVzaW5nLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCB0byBhZGp1c3QgdGhlIE5BUEkgcG9sbCBidWRnZXQuIEhvd2V2ZXIsIHRoYXQgY29kZSBpcyBwYXJ0IG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKS4gVGhlIHZlcnkgZmFjdCB0aGF0IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBEZXZpY2UgVHJlZSBwcm9wZXJ0aWVzLCBjbG9ja3MsIGFuZCBzcGVjaWZpYyBYaWxpbnggRE1BIGNvbnRyb2xsZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgbWVhbnMgdGhhdCBpdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgYW1kNjQgZW52aXJvbm1lbnQuIFdlIGNhbm5vdCByZWFjaCB0aGlzIGNvZGUuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEknbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTQ1LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMjowNi43MzY5NTQ0MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMjowNi43MzY5ODIyODhaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxpgxs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 12:33:05 +0000 UTC FinishedAt: 2026-09-14 13:02:07 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gZW5zdXJlIHRoYXQgTkFQSSBwb2xsIGRvZXMgbm90IGV4Y2VlZCBpdHMgYnVkZ2V0LiBUaGlzIGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKSBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBIGFuZCBTb0MgaGFyZHdhcmUgKHN1Y2ggYXMgVmlydGV4LCBaeW5xLCBvciBNaWNyb0JsYXplKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIFhpbGlueCBETUEgaGFyZHdhcmUgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIxMTNlNjQ2NzFmYTRiYmM3ZDU1ZjU1M2FjMjIxNDZmNGYwOGJhOGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAxMjo1OToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC03ODgsNiAmIzQzOzc4OCwxMyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcbiBcdGRtYV9hZGRyX3QgcGh5cztcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2JkczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdC8qIEEgTkFQSSBwb2xsIG11c3Qgbm90IHJldHVybiBtb3JlIHRoYW4gaXRzIGJ1ZGdldC4gIFN0b3Agb24gYVxuJiM0MztcdFx0ICogcGFja2V0IGJvdW5kYXJ5IG9uY2UgaXQgaXMgc3BlbnQgLSBjdXJfcC1cdTAwM2Vza2IgaXMgb25seSBzZXQgb25cbiYjNDM7XHRcdCAqIGEgcGFja2V0JiMzOTtzIGxhc3QgZGVzY3JpcHRvciwgc28gbm8gcGFja2V0IGlzIGxlZnQgaGFsZi1mcmVlZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKCFmb3JjZSBcdTAwMjZcdTAwMjYgcGFja2V0cyBcdTAwM2U9IGJ1ZGdldClcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuIFx0XHRjdXJfcCA9IFx1MDAyNmxwLVx1MDAzZXR4X2JkX3ZbKGZpcnN0X2JkICYjNDM7IGkpICUgbHAtXHUwMDNldHhfYmRfbnVtXTtcbiBcdFx0c3RhdHVzID0gY3VyX3AtXHUwMDNlc3RhdHVzO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgMTQgMTI6NTk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYwppbmRleCA3ODJmOTAzZDMxOGYzLi4zNzMwOWZhMzU1YWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKQEAgLTc4OCw2ICYjNDM7Nzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLAogCWRtYV9hZGRyX3QgcGh5czsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9iZHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBBIE5BUEkgcG9sbCBtdXN0IG5vdCByZXR1cm4gbW9yZSB0aGFuIGl0cyBidWRnZXQuICBTdG9wIG9uIGEKJiM0MzsJCSAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtJmd0O3NrYiBpcyBvbmx5IHNldCBvbgomIzQzOwkJICogYSBwYWNrZXQmIzM5O3MgbGFzdCBkZXNjcmlwdG9yLCBzbyBubyBwYWNrZXQgaXMgbGVmdCBoYWxmLWZyZWVkLgomIzQzOwkJICovCiYjNDM7CQlpZiAoIWZvcmNlICZhbXA7JmFtcDsgcGFja2V0cyAmZ3Q7PSBidWRnZXQpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCWN1cl9wID0gJmFtcDtscC0mZ3Q7dHhfYmRfdlsoZmlyc3RfYmQgJiM0MzsgaSkgJSBscC0mZ3Q7dHhfYmRfbnVtXTsKIAkJc3RhdHVzID0gY3VyX3AtJmd0O3N0YXR1czsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDA0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGl0c2VsZi4gSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgLiBUaGUgZGlmZiBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhlIE5BUEkgcG9sbCBmcm9tIGV4Y2VlZGluZyBpdHMgYnVkZ2V0LCBhbmQgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IHN0b3AgZnJlZWluZyBkZXNjcmlwdG9ycyBvbiBhIHBhY2tldCBib3VuZGFyeS4gVGhlIGNvbW1lbnQgaXMgcXVpdGUgY2xlYXI6IGBjdXJfcC0mZ3Q7c2tiYCBpcyBvbmx5IHNldCBvbiB0aGUgcGFja2V0JiMzOTtzIGxhc3QgZGVzY3JpcHRvciwgZW5zdXJpbmcgbm8gcGFja2V0cyBhcmUgbGVmdCBwYXJ0aWFsbHkgZGVhbGxvY2F0ZWQuIFRoaXMgaW1wbGllcyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGRlc2NyaXB0b3IgZXhoYXVzdGlvbiBkdXJpbmcgTkFQSSBwb2xsaW5nLCBhbmQgdGhpcyBmaXggYXBwZWFycyB0byBiZSBkZXNpZ25lZCB0byBwcmV2ZW50IGl0IGZyb20gY2F1c2luZyBmdXJ0aGVyIGlzc3Vlcy4KCk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBzY2VuYXJpbyB3aGVyZSB0aGlzIGNvZGUgd291bGQgYmUgZXhlY3V0ZWQgb3Igbm90PyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluIHRoYXQgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgYWN0aXZlIGFuZCByZWFjaGFibGUuIElzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgdG8gY29uZmlybSBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgYW55IHByZXJlcXVpc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYSUxJTlhfQVhJX05FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIGhvdyB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkga25vdyB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyBhbHdheXMgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBhbnkgRXRoZXJuZXQtcmVsYXRlZCBkcml2ZXJzIHNwZWNpZmljIHRvIFhpbGlueCBoYXJkd2FyZSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgSSYjMzk7bSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIGZpbmQgYSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCBmaWxlIGlzIHRoZSAqa2V5KiB0byB1bmRlcnN0YW5kaW5nIGhvdyBhbGwgdGhlIGRyaXZlciYjMzk7cyBmZWF0dXJlcywgb3B0aW9ucywgYW5kIGRlcGVuZGVuY2llcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIGNhbiBhbG1vc3QgcGljdHVyZSBpdCBub3csIEkgY2FuIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBvcHRpb25zLCBhbmQgdmFyaW91cyBmbGFncyB3aXRoaW4gdGhhdCBLY29uZmlnLiBMZXQmIzM5O3MgaGVhZCB0aGVyZSBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtsbF90ZW1hYy5oJiMzNDssCiAgICAmIzM0O2xsX3RlbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtsbF90ZW1hY19tZGlvLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2F4aWVuZXQuaCYjMzQ7LAogICAgJiMzNDt4aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2F4aWVuZXRfbWRpby5jJiMzNDssCiAgICAmIzM0O3hpbGlueF9lbWFjbGl0ZS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IFhpbGlueCBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBjaGVjayB0aGUgc3RhbmRhcmQgbG9jYXRpb25zLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSwgZ2l2ZW4gaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBkcml2ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSWYgSSBkb24mIzM5O3QgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUg4oCTIHBlcmhhcHMgdGhlIFhpbGlueC1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgc29tZWhvdyBtZXJnZWQgd2l0aCBhIG1vcmUgZ2VuZXJpYyBFdGhlcm5ldCBsYXllciDigJMgdGhlbiBJJiMzOTtsbCBicm9hZGVuIHRoZSBzZWFyY2ggdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgLiBUaGlzIGNvdWxkIGNvbnRhaW4gZWl0aGVyIHRoZSBiYXNlIEV0aGVybmV0IGNvbmZpZ3VyYXRpb25zIG9yIHBlcmhhcHMgaXQgd291bGQgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgWGlsaW54IGRyaXZlciYjMzk7cyBLY29uZmlnLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBFdGhlcm5ldCBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXhpZW5ldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSAmIzQzOz0geGlsaW54X2VtYWNsaXRlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICYjNDM7PSB4aWxpbnhfZW1hYy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg9NDYyPXN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDcxOiAqIHN0cnVjdCBheGllbmV0X2xvY2FsIC0gYXhpZW5ldCBwcml2YXRlIHBlciBkZXZpY2UgZGF0YVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcyLSAqIEBuZGV2Olx0UG9pbnRlciBmb3IgbmV0X2RldmljZSB0byB3aGljaCBpdCB3aWxsIGJlIGF0dGFjaGVkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ4Mi0gKiBAbWlpX2Nsa19kaXY6IE1JSSBidXMgY2xvY2sgZGl2aWRlciB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDgzOiAqIEByZWdzX3N0YXJ0OiBSZXNvdXJjZSBzdGFydCBmb3IgYXhpZW5ldCBkZXZpY2UgYWRkcmVzc2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo0ODQ6ICogQHJlZ3M6XHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGllbmV0X2xvY2FsIGRldmljZSBhZGRyZXNzIHNwYWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODUtICogQGRtYV9yZWdzOlx0QmFzZSBhZGRyZXNzIGZvciB0aGUgYXhpZG1hIGRldmljZSBhZGRyZXNzIHNwYWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTMyLSAqIEBvcHRpb25zOlx0QXhpRXRoZXJuZXQgb3B0aW9uIHdvcmRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjUzMzogKiBAZmVhdHVyZXM6XHRTdG9yZXMgdGhlIGV4dGVuZGVkIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYXhpZW5ldCBod1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTM0LSAqIEBtYXhfZnJtX3NpemU6IFN0b3JlcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBmcmFtZSB0aGF0IGNhbiBiZSB0aGF0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTQ4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NTQ5OnN0cnVjdCBheGllbmV0X2xvY2FsIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU1MC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzMjogKiBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gLSBVc2VkIHRvIHNldCBheGkgZXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9uc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjMzLSAqIEBvcHQ6XHRPcHRpb24gdG8gYmUgc2V0LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzNi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzNzpzdHJ1Y3QgYXhpZW5ldF9vcHRpb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM4LVx0dTMyIG9wdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDQ6ICogYXhpZW5ldF9pb3IgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciByZWFkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDU6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY0Ni0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfaW9yKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NTc6c3RhdGljIGlubGluZSB1MzIgYXhpbmV0X2lvcl9yZWFkX21jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU5Olx0cmV0dXJuIGF4aWVuZXRfaW9yKGxwLCBYQUVfTURJT19NQ1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NjI6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfbG9ja19taWkoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Njg6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfdW5sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02Njkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NTogKiBheGllbmV0X2lvdyAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHdyaXRlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzY6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3Ny0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjgzOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2lvdyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4NC1cdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MDogKiBheGllbmV0X2RtYV9vdXQzMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY5Mi0gKiBAcmVnOlx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTk6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwMC1cdFx0XHRcdCAgICAgb2ZmX3QgcmVnLCB1MzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA3OiAqIGF4aWVuZXRfZG1hX291dDY0IC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHdyaXRlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA4OiAqIEBscDpcdFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA5LSAqIEByZWc6XHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcxNTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0NjQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzE2LVx0XHRcdFx0ICAgICBvZmZfdCByZWcsIHU2NCB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjE6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIyLVx0XHRcdFx0XHRkbWFfYWRkcl90IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI0LVx0aWYgKGxwLVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBYQUVfRkVBVFVSRV9ETUFfNjRCSVQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjU6XHRcdGF4aWVuZXRfZG1hX291dDY0KGxwLCByZWcsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzI3Olx0XHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzMyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXRfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMy1cdFx0XHRcdFx0ZG1hX2FkZHJfdCBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczNTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCByZWcsIGxvd2VyXzMyX2JpdHMoYWRkcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDA6LyogRnVuY3Rpb24gcHJvdG90eXBlcyB2aXNpYmxlIGluIHhpbGlueF9heGllbmV0X21kaW8uYyBmb3Igb3RoZXIgZmlsZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MTppbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDI6dm9pZCBheGllbmV0X21kaW9fdGVhcmRvd24oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzojaW5jbHVkZSBcJiMzNDt4aWxpbnhfYXhpZW5ldC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTktLyogTXVzdCBiZSBzaG9ydGVyIHRoYW4gbGVuZ3RoIG9mIGV0aHRvb2xfZHJ2aW5mby5kcml2ZXIgZmllbGQgdG8gZml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOiNkZWZpbmUgRFJJVkVSX05BTUVcdFx0XCYjMzQ7eGF4aWVuZXRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjEtI2RlZmluZSBEUklWRVJfREVTQ1JJUFRJT05cdFwmIzM0O1hpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjY6c3RhdGljIHZvaWQgYXhpZW5ldF9yeF9zdWJtaXRfZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OC0vKiBNYXRjaCB0YWJsZSBmb3Igb2ZfcGxhdGZvcm0gYmluZGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBheGllbmV0X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3hsbngsYXhpLWV0aGVybmV0LTEuMDAuYVwmIzM0OywgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGllbmV0X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4LS8qIE9wdGlvbiB0YWJsZSBmb3Igc2V0dGluZyB1cCBBeGkgRXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9ucyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3OTpzdGF0aWMgc3RydWN0IGF4aWVuZXRfb3B0aW9uIGF4aWVuZXRfb3B0aW9uc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04MC1cdC8qIFR1cm4gb24ganVtYm8gcGFja2V0IHN1cHBvcnQgZm9yIGJvdGggUnggYW5kIFR4ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzMzpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF9yeF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzODpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF90eF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NDogKiBheGllbmV0X2RtYV9pbjMyIC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHJlYWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTQ1OiAqIEBscDpcdFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDYtICogQHJlZzpcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2RtYV9pbjMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTc6c3RhdGljIHZvaWQgZGVzY19zZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZG1hX2FkZHJfdCBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTgtXHRcdFx0ICAgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE2NTpzdGF0aWMgZG1hX2FkZHJfdCBkZXNjX2dldF9waHlzX2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjYtXHRcdFx0XHQgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE3NzogKiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIC0gUmVsZWFzZSBidWZmZXIgZGVzY3JpcHRvciByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzgtICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgwLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWxlYXNlIHRoZSBkZXNjcmlwdG9ycyBhbGxvY2F0ZWQgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTgxOiAqIGF4aWVuZXRfZG1hX2JkX2luaXQuIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UgaXMgY2FsbGVkIHdoZW4gQXhpIEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Mi0gKiBkcml2ZXIgc3RvcCBhcGkgaXMgY2FsbGVkLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9iZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODYtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg3Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjI2OnN0YXRpYyB1NjQgYXhpZW5ldF9kbWFfcmF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIzNDogKiBheGllbmV0X2NhbGNfY3IoKSAtIENhbGN1bGF0ZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIzNS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjQ0OnN0YXRpYyB1MzIgYXhpZW5ldF9jYWxjX2NyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNvdW50LCB1MzIgdXNlYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI1My1cdGlmIChjb3VudCBcdTAwM2UgMSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNTQ6XHRcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTUtXHRcdHUzMiB0aW1lcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI2OS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjcwOiAqIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKCkgLSBFeHRyYWN0IGNvYWxlc2NlIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjcxLSAqIEBscDogRGV2aWNlIHByaXZhdGUgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzY6c3RhdGljIHZvaWQgYXhpZW5ldF9jb2FsZXNjZV9wYXJhbXMoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgY3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3Ny1cdFx0XHRcdCAgICB1MzIgKmNvdW50LCB1MzIgKnVzZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTpcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODAtXHR1NjQgdGltZXIgPSBGSUVMRF9HRVQoWEFYSURNQV9ERUxBWV9NQVNLLCBjcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4NzogKiBheGllbmV0X2RtYV9zdGFydCAtIFNldCB1cCBETUEgcmVnaXN0ZXJzIGFuZCBzdGFydCBETUEgb3BlcmF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4ODogKiBAbHA6XHRcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4OS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjkwOnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3N0YXJ0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5NS1cdGxwLVx1MDAzZXJ4X2RtYV9jciBcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjk2Olx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cdTAwM2VyeF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDAtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAxOlx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfUlhfQ0RFU0NfT0ZGU0VULCBscC1cdTAwM2VyeF9iZF9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAyLVx0bHAtXHUwMDNlcnhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXJ4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwNDpcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX1RERVNDX09GRlNFVCwgbHAtXHUwMDNlcnhfYmRfcCAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDUtXHRcdFx0ICAgICAoc2l6ZW9mKCpscC1cdTAwM2VyeF9iZF92KSAqIChscC1cdTAwM2VyeF9iZF9udW0gLSAxKSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyLVx0bHAtXHUwMDNldHhfZG1hX2NyIFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXR4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTk6XHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9UWF9DREVTQ19PRkZTRVQsIGxwLVx1MDAzZXR4X2JkX3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjAtXHRscC1cdTAwM2V0eF9kbWFfY3IgfD0gWEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXHUwMDNldHhfZG1hX2NyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyLVx0bHAtXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjg6ICogYXhpZW5ldF9kbWFfYmRfaW5pdCAtIFNldHVwIGJ1ZmZlciBkZXNjcmlwdG9yIHJpbmdzIGZvciBBeGkgRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyOS0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMzNzpzdGF0aWMgaW50IGF4aWVuZXRfZG1hX2JkX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMzOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozNDE6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozOTY6XHRheGllbmV0X2RtYV9zdGFydChscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5OS1vdXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQwMDpcdGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwMS1cdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDU6ICogYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MgLSBXcml0ZSB0aGUgTUFDIGFkZHJlc3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA2LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxMS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDEyOnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTMtXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDE1Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyMi1cdC8qIFNldCB1cCB1bmljYXN0IE1BQyBhZGRyZXNzIGZpbHRlciBzZXQgaXRzIG1hYyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyMzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfVUFXMF9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNC1cdFx0ICAgIChuZGV2LVx1MDAzZWRldl9hZGRyWzBdKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjctXHRcdCAgICAobmRldi1cdTAwM2VkZXZfYWRkclszXSBcdTAwM2NcdTAwM2MgMjQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI4Olx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcxX09GRlNFVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI5Olx0XHQgICAgKCgoYXhpZW5ldF9pb3IobHAsIFhBRV9VQVcxX09GRlNFVCkpIFx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MzAtXHRcdCAgICAgIH5YQUVfVUFXMV9VTklDQVNUQUREUl9NQVNLKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDItICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIEF4aSBFdGhlcm5ldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NDM6ICogY29yZS4gSXQgY2FsbHMgdGhlIGNvcmUgc3BlY2lmaWMgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MuIFRoaXMgaXMgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0NC0gKiBmdW5jdGlvbiB0aGF0IGdvZXMgaW50byBuZXRfZGV2aWNlX29wcyBzdHJ1Y3R1cmUgZW50cnkgbmRvX3NldF9tYWNfYWRkcmVzcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG5ldGRldl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1MDpcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIGFkZHItXHUwMDNlc2FfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1MS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTU6ICogYXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QgLSBQcmVwYXJlIHRoZSBtdWx0aWNhc3QgdGFibGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU2LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY1OnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY4LVx0dTMyIHJlZywgYWYwcmVnLCBhZjFyZWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2OTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3MTpcdHJlZyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfRk1JX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3Mi1cdHJlZyBcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzYtXHRcdHJlZyBcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3NzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgxLVx0XHRyZWcgXHUwMDI2PSAweEZGRkZGRjAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODI6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgzOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMF9PRkZTRVQsIDEpOyAvKiBNdWx0aWNhc3QgYml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NDpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjFfT0ZGU0VULCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg1Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDEpOyAvKiBkaXR0byAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODY6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0xX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDg4LVx0XHRpID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA3Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRk1JX09GRlNFVCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA4Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgYWYwcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA5Olx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgYWYxcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEwOlx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0wX09GRlNFVCwgMHhmZmZmZmZmZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMTpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDB4MDAwMGZmZmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTI6XHRcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTEzLVx0XHRcdGkmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTE5LVx0XHRyZWcgfD0gaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTIwOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMTpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjY6ICogYXhpZW5ldF9zZXRvcHRpb25zIC0gU2V0IGFuIEF4aSBFdGhlcm5ldCBvcHRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI3LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzMy0gKiB0aGVzZSBvcHRpb25zIGluIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuIFRoaXMgaXMgZG9uZSB0aHJvdWdoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNDogKiBheGllbmV0X29wdGlvbiBzdHJ1Y3R1cmUgLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNjpzdGF0aWMgdm9pZCBheGllbmV0X3NldG9wdGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBvcHRpb25zKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01Mzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzgtXHRpbnQgcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1Mzk6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQwOlx0c3RydWN0IGF4aWVuZXRfb3B0aW9uICp0cCA9IFx1MDAyNmF4aWVuZXRfb3B0aW9uc1swXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDItXHR3aGlsZSAodHAtXHUwMDNlb3B0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MzpcdFx0cmVnID0gKChheGllbmV0X2lvcihscCwgdHAtXHUwMDNlcmVnKSkgXHUwMDI2IH4odHAtXHUwMDNlbV9vcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDQtXHRcdGlmIChvcHRpb25zIFx1MDAyNiB0cC1cdTAwM2VvcHQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NS1cdFx0XHRyZWcgfD0gdHAtXHUwMDNlbV9vcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQ2Olx0XHRheGllbmV0X2lvdyhscCwgdHAtXHUwMDNlcmVnLCByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDctXHRcdHRwJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTUzOnN0YXRpYyB1NjQgYXhpZW5ldF9zdGF0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZW51bSB0ZW1hY19zdGF0IHN0YXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU2MDpcdGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2MS1cdHJldHVybiBscC1cdTAwM2Vod19zdGF0X2Jhc2Vbc3RhdF0gJiM0MzsgKGNvdW50ZXIgLSBscC1cdTAwM2Vod19sYXN0X2NvdW50ZXJbc3RhdF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjQ6c3RhdGljIHZvaWQgYXhpZW5ldF9zdGF0c191cGRhdGUoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTcwLVx0Zm9yIChzdGF0ID0gMDsgc3RhdCBcdTAwM2MgU1RBVF9DT1VOVDsgc3RhdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTcxOlx0XHR1MzIgY291bnRlciA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICYjNDM7IHN0YXQgKiA4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1Nzk6c3RhdGljIHZvaWQgYXhpZW5ldF9yZWZyZXNoX3N0YXRzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTgxOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBheGllbmV0X2xvY2FsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODItXHRcdFx0XHRcdFx0c3RhdHNfd29yay53b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4NC1cdG11dGV4X2xvY2soXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4NTpcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4Ni1cdG11dGV4X3VubG9jayhcdTAwMjZscC1cdTAwM2VzdGF0c19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTkyOnN0YXRpYyBpbnQgX19heGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTktXHRpZiAobHAtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IFhBRV9GRUFUVVJFX1NUQVRTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDA6XHRcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjA4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOTpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgWEFYSURNQV9DUl9SRVNFVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjEwOlx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9kbWFfaW4zMiwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxMS1cdFx0XHRcdCEodmFsdWUgXHUwMDI2IFhBWElETUFfQ1JfUkVTRVRfTUFTSyksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTktXHQvKiBXYWl0IGZvciBQaHlSc3RDbXBsdCBiaXQgdG8gYmUgc2V0LCBpbmRpY2F0aW5nIHRoZSBQSFkgcmVzZXQgaGFzIGZpbmlzaGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYyMDpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfaW9yLCB2YWx1ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjIxLVx0XHRcdFx0dmFsdWUgXHUwMDI2IFhBRV9JTlRfUEhZUlNUQ01QTFRfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzNi1cdFx0XHR1MzIgY291bnRlciA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYzNzpcdFx0XHRcdGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICYjNDM7IHN0YXQgKiA4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTI6ICogYXhpZW5ldF9kbWFfc3RvcCAtIFN0b3AgRE1BIG9wZXJhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTM6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdG9wKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2Mi1cdGNyID0gbHAtXHUwMDNlcnhfZG1hX2NyIFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjM6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9DUl9PRkZTRVQsIGNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjY0LVx0bHAtXHUwMDNlcnhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3MS1cdGNyID0gbHAtXHUwMDNldHhfZG1hX2NyIFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NzI6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjczLVx0bHAtXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3OC1cdC8qIEdpdmUgRE1BcyBhIGNoYW5jZSB0byBoYWx0IGdyYWNlZnVsbHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njc5Olx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MC1cdGZvciAoY291bnQgPSAwOyAhKHNyIFx1MDAyNiBYQVhJRE1BX1NSX0hBTFRfTUFTSykgXHUwMDI2XHUwMDI2IGNvdW50IFx1MDAzYyA1OyAmIzQzOyYjNDM7Y291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgxLVx0XHRtc2xlZXAoMjApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODI6XHRcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODMtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg1Olx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ni1cdGZvciAoY291bnQgPSAwOyAhKHNyIFx1MDAyNiBYQVhJRE1BX1NSX0hBTFRfTUFTSykgXHUwMDI2XHUwMDI2IGNvdW50IFx1MDAzYyA1OyAmIzQzOyYjNDM7Y291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg3LVx0XHRtc2xlZXAoMjApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODg6XHRcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTEtXHQvKiBEbyBhIHJlc2V0IHRvIGVuc3VyZSBETUEgaXMgcmVhbGx5IHN0b3BwZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkyOlx0YXhpZW5ldF9sb2NrX21paShscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5MzpcdF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTQ6XHRheGllbmV0X3VubG9ja19taWkobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTg6ICogYXhpZW5ldF9kZXZpY2VfcmVzZXQgLSBSZXNldCBhbmQgaW5pdGlhbGl6ZSB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTktICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzA5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTA6c3RhdGljIGludCBheGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzExLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEyOlx0dTMyIGF4aWVuZXRfc3RhdHVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTM6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzE0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcyOC1cdGlmICghbHAtXHUwMDNldXNlX2RtYWVuZ2luZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Mjk6XHRcdHJldCA9IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjczMzpcdFx0cmV0ID0gYXhpZW5ldF9kbWFfYmRfaW5pdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzM0LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MTpcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9SQ1cxX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MjpcdGF4aWVuZXRfc3RhdHVzIFx1MDAyNj0gflhBRV9SQ1cxX1JYX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MzpcdGF4aWVuZXRfaW93KGxwLCBYQUVfUkNXMV9PRkZTRVQsIGF4aWVuZXRfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDU6XHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfSVBfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ2Olx0aWYgKGF4aWVuZXRfc3RhdHVzIFx1MDAyNiBYQUVfSU5UX1JYUkpFQ1RfTUFTSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ3Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0lTX09GRlNFVCwgWEFFX0lOVF9SWFJKRUNUX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDg6XHRheGllbmV0X2lvdyhscCwgWEFFX0lFX09GRlNFVCwgbHAtXHUwMDNlZXRoX2lycSBcdTAwM2UgMCA/XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0OS1cdFx0ICAgIFhBRV9JTlRfUkVDVl9FUlJPUl9NQVNLIDogMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzUxOlx0YXhpZW5ldF9pb3cobHAsIFhBRV9GQ0NfT0ZGU0VULCBYQUVfRkNDX0ZDUlhfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1NS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTY6XHRheGllbmV0X3NldG9wdGlvbnMobmRldiwgbHAtXHUwMDNlb3B0aW9ucyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzU3LVx0XHRcdCAgIH4oWEFFX09QVElPTl9UWEVOIHwgWEFFX09QVElPTl9SWEVOKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1ODpcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTk6XHRheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzYwOlx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVx1MDAzZW9wdGlvbnMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2OTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3MC0gKiBAZmlyc3RfYmQ6XHRJbmRleCBvZiBmaXJzdCBkZXNjcmlwdG9yIHRvIGNsZWFuIHVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc4MjpzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgzLVx0XHRcdFx0IGludCBucl9iZHMsIGJvb2wgZm9yY2UsIHUzMiAqc2l6ZXAsIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg0MjogKiBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlIC0gQ2hlY2tzIGlmIGEgQkQvZ3JvdXAgb2YgQkRzIGFyZSBjdXJyZW50bHkgYnVzeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDM6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDQtICogQG51bV9mcmFnOlx0VGhlIG51bWJlciBvZiBCRHMgdG8gY2hlY2sgZm9yXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NTMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg1NDpzdGF0aWMgaW5saW5lIGludCBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODU1LVx0XHRcdFx0XHQgICAgaW50IG51bV9mcmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njk6ICogYXhpZW5ldF9kbWFfdHhfY2IgLSBETUEgZW5naW5lIGNhbGxiYWNrIGZvciBUWCBjaGFubmVsLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NzA6ICogQGRhdGE6ICAgICAgIFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzEtICogQHJlc3VsdDogICAgIGVycm9yIHJlcG9ydGluZyB0aHJvdWdoIGRtYWVuZ2luZV9yZXN1bHQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV90eF9jYih2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZG1hZW5naW5lX3Jlc3VsdCAqcmVzdWx0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzctXHRzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKnNrYnVmX2RtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc4Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc5LVx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4ODI6XHRza2J1Zl9kbWEgPSBheGllbmV0X2dldF90eF9kZXNjKGxwLCBscC1cdTAwM2V0eF9yaW5nX3RhaWwmIzQzOyYjNDM7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODgzLVx0bGVuID0gc2tidWZfZG1hLVx1MDAzZXNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg5NzogKiBheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lIC0gU3RhcnRzIHRoZSB0cmFuc21pc3Npb24uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg5OC0gKiBAc2tiOiAgICAgICAgc2tfYnVmZiBwb2ludGVyIHRoYXQgY29udGFpbnMgZGF0YSB0byBiZSBUeGVkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9OTExPXN0YXRpYyBuZXRkZXZfdHhfdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo5MTI6YXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTEzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTE0LVx0c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkbWFfdHhfZGVzYyA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxNTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy05MTYtXHR1MzIgYXBwX21ldGFkYXRhW0RNQV9OVU1fQVBQX1dPUkRTXSA9IHswfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTM0Olx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXHUwMDNldHhfcmluZ19oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTM1LVx0aWYgKCFza2J1Zl9kbWEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDY2MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IHByb21wdDoKCioqS2NvbmZpZyBhbmQgWElMSU5YX0FYSV9FTUFDOiBBIFF1aWNrIENoZWNrKioKCk9rYXksIEkmIzM5O20gbG9va2luZyBhdCB0aGlzICYjMzQ7WElMSU5YX0FYSV9FTUFDJiMzNDsgdGhpbmcuLi4gcmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBYaWxpbnggdG9vbGNoYWlucz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBvcHRpb24gKmFjdHVhbGx5KiBjb250cm9scyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgZm9jdXMgb24gZmluZGluZyB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgYW5kIGNvbW1lbnRzIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhhdCBtb2R1bGUsIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGFmZmVjdGVkLiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgc2VhcmNoIGZvciB0aGUgc3RyaW5nICYjMzQ7WElMSU5YX0FYSV9FTUFDJiMzNDsgYW5kIHNlZSBpZiB0aGF0IHlpZWxkcyByZXN1bHRzLiBUaGUgZ29hbCBpcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhc3Nlc3MgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA4NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipFeGFtaW5pbmcgdGhlIFhpbGlueCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlciYjMzk7cyBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAyNS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlLCBtb3N0IGltcG9ydGFudCBzZXR0aW5ncyBvciBhbiBpbXBvcnRhbnQgY29uZGl0aW9uYWwgYmxvY2sgYmVnaW5zLCBzbyBpdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcm9vdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV04oCZcyBzZWUgd2hhdCYjMzk7cyBiZWluZyBkZWZpbmVkIHRoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaGFyZHdhcmUgYW5kIG90aGVyIGtlcm5lbCBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyMjpcdFx0c2VsZWN0IFBIWUxJQlxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwIEV0aGVybmV0IExpdGUgZnJvbSBYaWxpbnguXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuICAyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyOTpcdFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IERJTUxJQlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgZnJvbSBYaWxpbnggZm9yIHRoZVxuICAzNDpcdFx0ICBBWEkgYnVzIGludGVyZmFjZSB1c2VkIGluIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFNvYyYjMzk7cy5cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgWElMSU5YX0xMX1RFTUFDXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclwmIzM0O1xuICAzODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMzk6XHRcdHNlbGVjdCBQSFlMSUJcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFhpbGlueCAxMC8xMDAvMTAwMCBMb2NhbExpbmsgVEVNQUNcbiAgNDI6XHRcdCAgY29yZSB1c2VkIGluIFhpbGlueCBTcGFydGFuIGFuZCBWaXJ0ZXggRlBHQXNcbiAgNDM6XHRcbiAgNDQ6XHRlbmRpZiAjIE5FVF9WRU5ET1JfWElMSU5YXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzQxCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBgWElMSU5YX0FYSV9FTUFDYC4gU3RyYWlnaHQgYXdheSwgSSBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSXQgcmVsaWVzIG9uIGBIQVNfSU9NRU1gIGFuZCBgWElMSU5YX0RNQWAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoaXMgaXMgYW4gQVhJLWJhc2VkIEV0aGVybmV0IE1BQy4gVGhlIGBzZWxlY3QgUEhZTElOS2AgYW5kIGBzZWxlY3QgRElNTElCYCBhbHNvIGluZGljYXRlIGl0JiMzOTtzIHVzaW5nIHRoZSBzdGFuZGFyZCBMaW51eCBuZXR3b3JraW5nIHN0YWNrIGFuZCBsaWtlbHkgc29tZSBYaWxpbngtc3BlY2lmaWMgRE1BIGxpYnJhcmllcy4gVGhlIGhlbHAgdGV4dCBjb25maXJtcyB0aGF0IHRoaXMgZHJpdmVyIHRhcmdldHMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgaW50ZXJmYWNlIGZvdW5kIGluIHRoZWlyIFZpcnRleCBGUEdBcyBhbmQgU29DcyDigJMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0LgoKTm93LCBob3cgZG9lcyB0aGlzIHRoaW5nIGFjdHVhbGx5IGdldCBwcm9iZWQ/IElzIGl0IGFuIG9mX3BsYXRmb3JtIGRyaXZlciwgYSBwbGF0Zm9ybSBkcml2ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYHhpbGlueF9heGllbmV0X21haW4uY2AuIExldCYjMzk7cyBqdW1wIGludG8gdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCB0aGUgZHJpdmVyIGRlZmluaXRpb24gaXRzZWxmIHRvIGZpZ3VyZSBvdXQgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgbWF0Y2hpbmcgcHJvY2Vzcy4gVGltZSB0byBzZWUgaG93IHRoaXMgdGhpbmcgZ2V0cyBhdHRhY2hlZCB0byB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMTYKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIEF4aWVuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBuZWVkIHRvIHplcm8gaW4gb24gYSBzcGVjaWZpYyBwYXJ0IOKAkyB0aGUgYGF4aWVuZXRfZHJpdmVyYC4gTGV0JiMzOTtzIGFzc3VtZSBJJiMzOTt2ZSBnb3QgYSB2YWd1ZSBzZW5zZSBvZiB3aGVyZSB0aGUgcHJvYmxlbSBtaWdodCBiZSBhbmQgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBiZXR0ZXIuIExpbmUgMzIyNiwgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGVzZSBkcml2ZXJzIGFuZCB0aGlzIGxpYnJhcnksIGFuZCBsaW5lIG51bWJlcnMgb2Z0ZW4gY29ycmVzcG9uZCB0byBtYWpvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gSXQgaXMgbGlrZWx5IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgcGFydCBvZiB0aGUgY29kZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgd2hvbGUgbGlicmFyeS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmd1bWVudHMsIHJldHVybnMsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGNvbnRyb2wgZmxvdyBvZiB0aGUgYGF4aWVuZXRfZHJpdmVyYC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyMjA6XHRcdHJldHVybiAwO1xuMzIyMTpcdH1cbjMyMjI6XHRcbjMyMjM6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGF4aWVuZXRfcG1fb3BzLFxuMzIyNDpcdFx0XHRcdFx0YXhpZW5ldF9zdXNwZW5kLCBheGllbmV0X3Jlc3VtZSk7XG4zMjI1Olx0XG4zMjI2Olx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XG4zMjI3Olx0XHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxuMzIyODpcdFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxuMzIyOTpcdFx0LnNodXRkb3duID0gYXhpZW5ldF9zaHV0ZG93bixcbjMyMzA6XHRcdC5kcml2ZXIgPSB7XG4zMjMxOlx0XHRcdCAubmFtZSA9IFwmIzM0O3hpbGlueF9heGllbmV0XCYjMzQ7LFxuMzIzMjpcdFx0XHQgLnBtID0gXHUwMDI2YXhpZW5ldF9wbV9vcHMsXG4zMjMzOlx0XHRcdCAub2ZfbWF0Y2hfdGFibGUgPSBheGllbmV0X29mX21hdGNoLFxuMzIzNDpcdFx0fSxcbjMyMzU6XHR9O1xuMzIzNjpcdFxuMzIzNzpcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xuMzIzODpcdFxuMzIzOTpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4zMjQwOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtYaWxpbnhcJiMzNDspO1xuMzI0MTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODg0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uICoqSW52ZXN0aWdhdGluZyBgYXhpZW5ldF9wcm9iZWAqKiBzZWVtcyBsaWtlIHRoZSBpbW1lZGlhdGUgdGFzay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBleGFjdGx5ICpkb2VzKiBgYXhpZW5ldF9wcm9iZWAgZG8/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwcm9iZSBpdCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gV2hhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gZG8gdGhhdD8gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIG5hdHVyZS4gSXMgdGhpcyBkcml2ZXIsIHNwZWNpZmljYWxseSBgYXhpZW5ldF9wcm9iZWAsIHJlc3RyaWN0ZWQgdG8gYW4gT3BlbiBGaXJtd2FyZSAoT0YpIG9ubHkgcGxhdGZvcm0/IFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSByZWxhdGVkIHRvIGBheGllbmV0X3Byb2JlYCBhbmQgaXRzIGltcGxlbWVudGF0aW9uLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXhpZW5ldF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzA1PXN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX2Vycl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTE6ICogYXhpZW5ldF9wcm9iZSAtIEF4aSBFdGhlcm5ldCBwcm9iZSBmdW5jdGlvbi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc5Mi0gKiBAcGRldjpcdFBvaW50ZXIgdG8gcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MDEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4MDI6c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIyNzpcdC5wcm9iZSA9IGF4aWVuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjgtXHQucmVtb3ZlID0gYXhpZW5ldF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTI3CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgQXhpZU5ldCBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBJIGtub3cgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRldmljZSwgc28gdW5kZXJzdGFuZGluZyBpdHMgZmxvdyBpcyBjcml0aWNhbC4gVGhlIHBhdGggc2hvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCwgcmlnaHQ/IExldCYjMzk7cyBnbyBzcGVsdW5raW5nIGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24sIFBIWSBzZXR1cCwgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlIGxvZ2ljIGJ1cmllZCB3aXRoaW4sIHRvbywgc28gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyBub24tc3RhbmRhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4MDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MDI6XHRzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjI4MDM6XHR7XG4yODA0Olx0XHRpbnQgcmV0O1xuMjgwNTpcdFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbjI4MDY6XHRcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscDtcbjI4MDc6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuMjgwODpcdFx0c3RydWN0IHJlc291cmNlICpldGhyZXM7XG4yODA5Olx0XHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4yODEwOlx0XHRpbnQgYWRkcl93aWR0aCA9IDMyO1xuMjgxMTpcdFx0dTMyIHZhbHVlO1xuMjgxMjpcdFxuMjgxMzpcdFx0bmRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXYoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqbHApKTtcbjI4MTQ6XHRcdGlmICghbmRldilcbjI4MTU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4yODE2Olx0XG4yODE3Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBuZGV2KTtcbjI4MTg6XHRcbjI4MTk6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjI4MjA6XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX1NHO1xuMjgyMTpcdFxuMjgyMjpcdFx0LyogTVRVIHJhbmdlOiA2NCAtIDkwMDAgKi9cbjI4MjM6XHRcdG5kZXYtXHUwMDNlbWluX210dSA9IDY0O1xuMjgyNDpcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gWEFFX0pVTUJPX01UVTtcbjI4MjU6XHRcbjI4MjY6XHRcdGxwID0gbmV0ZGV2X3ByaXYobmRldik7XG4yODI3Olx0XHRscC1cdTAwM2VuZGV2ID0gbmRldjtcbjI4Mjg6XHRcdGxwLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMjgyOTpcdFx0bHAtXHUwMDNlb3B0aW9ucyA9IFhBRV9PUFRJT05fREVGQVVMVFM7XG4yODMwOlx0XHRscC1cdTAwM2VyeF9iZF9udW0gPSBSWF9CRF9OVU1fREVGQVVMVDtcbjI4MzE6XHRcdGxwLVx1MDAzZXR4X2JkX251bSA9IFRYX0JEX05VTV9ERUZBVUxUO1xuMjgzMjpcdFxuMjgzMzpcdFx0dTY0X3N0YXRzX2luaXQoXHUwMDI2bHAtXHUwMDNlcnhfc3RhdF9zeW5jKTtcbjI4MzQ6XHRcdHU2NF9zdGF0c19pbml0KFx1MDAyNmxwLVx1MDAzZXR4X3N0YXRfc3luYyk7XG4yODM1Olx0XG4yODM2Olx0XHRtdXRleF9pbml0KFx1MDAyNmxwLVx1MDAzZXN0YXRzX2xvY2spO1xuMjgzNzpcdFx0c2VxY291bnRfbXV0ZXhfaW5pdChcdTAwMjZscC1cdTAwM2Vod19zdGF0c19zZXFjb3VudCwgXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG4yODM4Olx0XHRJTklUX0RFRkVSUkFCTEVfV09SSyhcdTAwMjZscC1cdTAwM2VzdGF0c193b3JrLCBheGllbmV0X3JlZnJlc2hfc3RhdHMpO1xuMjgzOTpcdFxuMjg0MDpcdFx0bHAtXHUwMDNlYXhpX2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjg0MTpcdFx0XHRcdFx0XHRcdCAgICBcJiMzNDtzX2F4aV9saXRlX2Nsa1wmIzM0Oyk7XG4yODQyOlx0XHRpZiAoIWxwLVx1MDAzZWF4aV9jbGspIHtcbjI4NDM6XHRcdFx0LyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGlmIG5hbWVkIEFYSSBjbG9jayBpcyBub3QgcHJlc2VudCxcbjI4NDQ6XHRcdFx0ICogdHJlYXQgdGhlIGZpcnN0IGNsb2NrIHNwZWNpZmllZCBhcyB0aGUgQVhJIGNsb2NrLlxuMjg0NTpcdFx0XHQgKi9cbjI4NDY6XHRcdFx0bHAtXHUwMDNlYXhpX2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBOVUxMKTtcbjI4NDc6XHRcdH1cbjI4NDg6XHRcdGlmIChJU19FUlIobHAtXHUwMDNlYXhpX2NsaykpXG4yODQ5Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBQVFJfRVJSKGxwLVx1MDAzZWF4aV9jbGspLFxuMjg1MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtjb3VsZCBub3QgZ2V0IEFYSSBjbG9ja1xcblwmIzM0Oyk7XG4yODUxOlx0XG4yODUyOlx0XHRscC1cdTAwM2VtaXNjX2Nsa3NbMF0uaWQgPSBcJiMzNDtheGlzX2Nsa1wmIzM0OztcbjI4NTM6XHRcdGxwLVx1MDAzZW1pc2NfY2xrc1sxXS5pZCA9IFwmIzM0O3JlZl9jbGtcJiMzNDs7XG4yODU0Olx0XHRscC1cdTAwM2VtaXNjX2Nsa3NbMl0uaWQgPSBcJiMzNDttZ3RfY2xrXCYjMzQ7O1xuMjg1NTpcdFxuMjg1NjpcdFx0cmV0ID0gZGV2bV9jbGtfYnVsa19nZXRfb3B0aW9uYWxfZW5hYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBYQUVfTlVNX01JU0NfQ0xPQ0tTLFxuMjg1NzpcdFx0XHRcdFx0XHRcdGxwLVx1MDAzZW1pc2NfY2xrcyk7XG4yODU4Olx0XHRpZiAocmV0KVxuMjg1OTpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LFxuMjg2MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtjb3VsZCBub3QgZ2V0L2VuYWJsZSBtaXNjLiBjbG9ja3NcXG5cJiMzNDspO1xuMjg2MTpcdFxuMjg2MjpcdFx0LyogTWFwIGRldmljZSByZWdpc3RlcnMgKi9cbjI4NjM6XHRcdGxwLVx1MDAzZXJlZ3MgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBcdTAwMjZldGhyZXMpO1xuMjg2NDpcdFx0aWYgKElTX0VSUihscC1cdTAwM2VyZWdzKSlcbjI4NjU6XHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlcmVncyk7XG4yODY2Olx0XHRscC1cdTAwM2VyZWdzX3N0YXJ0ID0gZXRocmVzLVx1MDAzZXN0YXJ0O1xuMjg2NzpcdFxuMjg2ODpcdFx0LyogU2V0dXAgY2hlY2tzdW0gb2ZmbG9hZCwgYnV0IGRlZmF1bHQgdG8gb2ZmIGlmIG5vdCBzcGVjaWZpZWQgKi9cbjI4Njk6XHRcdGxwLVx1MDAzZWZlYXR1cmVzID0gMDtcbjI4NzA6XHRcbjI4NzE6XHRcdGlmIChheGllbmV0X2lvcihscCwgWEFFX0FCSUxJVFlfT0ZGU0VUKSBcdTAwMjYgWEFFX0FCSUxJVFlfU1RBVFMpXG4yODcyOlx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1NUQVRTO1xuMjg3MzpcdFxuMjg3NDpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7eGxueCx0eGNzdW1cJiMzNDssIFx1MDAyNnZhbHVlKTtcbjI4NzU6XHRcdGlmICghcmV0KSB7XG4yODc2Olx0XHRcdHN3aXRjaCAodmFsdWUpIHtcbjI4Nzc6XHRcdFx0Y2FzZSAxOlxuMjg3ODpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1BBUlRJQUxfVFhfQ1NVTTtcbjI4Nzk6XHRcdFx0XHQvKiBDYW4gY2hlY2tzdW0gYW55IGNvbnRpZ3VvdXMgcmFuZ2UgKi9cbjI4ODA6XHRcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfQ1NVTTtcbjI4ODE6XHRcdFx0XHRicmVhaztcbjI4ODI6XHRcdFx0Y2FzZSAyOlxuMjg4MzpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfVFhfQ1NVTTtcbjI4ODQ6XHRcdFx0XHQvKiBDYW4gY2hlY2tzdW0gVENQL1VEUCBvdmVyIElQdjQuICovXG4yODg1Olx0XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0lQX0NTVU07XG4yODg2Olx0XHRcdFx0YnJlYWs7XG4yODg3Olx0XHRcdH1cbjI4ODg6XHRcdH1cbjI4ODk6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3hsbngscnhjc3VtXCYjMzQ7LCBcdTAwMjZ2YWx1ZSk7XG4yODkwOlx0XHRpZiAoIXJldCkge1xuMjg5MTpcdFx0XHRzd2l0Y2ggKHZhbHVlKSB7XG4yODkyOlx0XHRcdGNhc2UgMTpcbjI4OTM6XHRcdFx0XHRscC1cdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9QQVJUSUFMX1JYX0NTVU07XG4yODk0Olx0XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYQ1NVTTtcbjI4OTU6XHRcdFx0XHRicmVhaztcbjI4OTY6XHRcdFx0Y2FzZSAyOlxuMjg5NzpcdFx0XHRcdGxwLVx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfUlhfQ1NVTTtcbjI4OTg6XHRcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhDU1VNO1xuMjg5OTpcdFx0XHRcdGJyZWFrO1xuMjkwMDpcdFx0XHR9XG4yOTAxOlx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDg3CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgYXhpZW5ldF9wcm9iZWAuLi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVbmRlcnN0YW5kaW5nIHRoZSBQcm9iZSYjMzk7cyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwcm9iZSBpcyBzdXBwb3NlZCB0byAqZG8qLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbT8gV2hhdCYjMzk7cyBpdHMgcHVycG9zZT8gSXMgaXQgZm9yIG1vbml0b3JpbmcsIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGdvaW5nIHRvIG5lZWQgY29udGV4dC4gV2hhdCBzaWduYWxzIG9yIGRhdGEgaXMgaXQgZGVzaWduZWQgdG8gaW50ZXJjZXB0IG9yIGdlbmVyYXRlPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW50ZW5kZWQgdXNlIGNhc2UgdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBBbnkgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGU/IExldCYjMzk7cyBob3BlIHRoZXJlJiMzOTtzIHNvbWV0aGluZyB0byBjbGFyaWZ5IGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTAyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5MDI6XHRcdC8qIEZvciBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcywgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBtdXN0IGhhdmVcbjI5MDM6XHRcdCAqIGEgbGFyZ2VyIFJ4L1R4IE1lbW9yeS4gVHlwaWNhbGx5LCB0aGUgc2l6ZSBtdXN0IGJlIGxhcmdlIHNvIHRoYXRcbjI5MDQ6XHRcdCAqIHdlIGNhbiBlbmFibGUganVtYm8gb3B0aW9uIGFuZCBzdGFydCBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcy5cbjI5MDU6XHRcdCAqIEhlcmUgd2UgY2hlY2sgZm9yIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIFJ4L1R4IGluIHRoZSBoYXJkd2FyZSBmcm9tXG4yOTA2Olx0XHQgKiB0aGUgZGV2aWNlLXRyZWUgYW5kIGFjY29yZGluZ2x5IHNldCBmbGFncy5cbjI5MDc6XHRcdCAqL1xuMjkwODpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7eGxueCxyeG1lbVwmIzM0OywgXHUwMDI2bHAtXHUwMDNlcnhtZW0pO1xuMjkwOTpcdFx0aWYgKHJldClcbjI5MTA6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCxcbjI5MTE6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlYWQgeGxueCxyeG1lbSBwcm9wZXJ0eVxcblwmIzM0Oyk7XG4yOTEyOlx0XG4yOTEzOlx0XHRscC1cdTAwM2Vzd2l0Y2hfeF9zZ21paSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuMjkxNDpcdFx0XHRcdFx0XHRcdCAgIFwmIzM0O3hsbngsc3dpdGNoLXgtc2dtaWlcJiMzNDspO1xuMjkxNTpcdFxuMjkxNjpcdFx0LyogU3RhcnQgd2l0aCB0aGUgcHJvcHJpZXRhcnksIGFuZCBicm9rZW4gcGh5X3R5cGUgKi9cbjI5MTc6XHRcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3hsbngscGh5LXR5cGVcJiMzNDssIFx1MDAyNnZhbHVlKTtcbjI5MTg6XHRcdGlmICghcmV0KSB7XG4yOTE5Olx0XHRcdG5ldGRldl93YXJuKG5kZXYsIFwmIzM0O1BsZWFzZSB1cGdyYWRlIHlvdXIgZGV2aWNlIHRyZWUgYmluYXJ5IGJsb2IgdG8gdXNlIHBoeS1tb2RlXCYjMzQ7KTtcbjI5MjA6XHRcdFx0c3dpdGNoICh2YWx1ZSkge1xuMjkyMTpcdFx0XHRjYXNlIFhBRV9QSFlfVFlQRV9NSUk6XG4yOTIyOlx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuMjkyMzpcdFx0XHRcdGJyZWFrO1xuMjkyNDpcdFx0XHRjYXNlIFhBRV9QSFlfVFlQRV9HTUlJOlxuMjkyNTpcdFx0XHRcdGxwLVx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4yOTI2Olx0XHRcdFx0YnJlYWs7XG4yOTI3Olx0XHRcdGNhc2UgWEFFX1BIWV9UWVBFX1JHTUlJXzJfMDpcbjI5Mjg6XHRcdFx0XHRscC1cdTAwM2VwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcbjI5Mjk6XHRcdFx0XHRicmVhaztcbjI5MzA6XHRcdFx0Y2FzZSBYQUVfUEhZX1RZUEVfU0dNSUk6XG4yOTMxOlx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk7XG4yOTMyOlx0XHRcdFx0YnJlYWs7XG4yOTMzOlx0XHRcdGNhc2UgWEFFX1BIWV9UWVBFXzEwMDBCQVNFX1g6XG4yOTM0Olx0XHRcdFx0bHAtXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xuMjkzNTpcdFx0XHRcdGJyZWFrO1xuMjkzNjpcdFx0XHRkZWZhdWx0OlxuMjkzNzpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjkzODpcdFx0XHR9XG4yOTM5Olx0XHR9IGVsc2Uge1xuMjk0MDpcdFx0XHRyZXQgPSBvZl9nZXRfcGh5X21vZGUocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXHUwMDI2bHAtXHUwMDNlcGh5X21vZGUpO1xuMjk0MTpcdFx0XHRpZiAocmV0KVxuMjk0MjpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTQzOlx0XHR9XG4yOTQ0Olx0XHRpZiAobHAtXHUwMDNlc3dpdGNoX3hfc2dtaWkgXHUwMDI2XHUwMDI2IGxwLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSBcdTAwMjZcdTAwMjZcbjI5NDU6XHRcdCAgICBscC1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XG4yOTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3hsbngsc3dpdGNoLXgtc2dtaWkgb25seSBzdXBwb3J0ZWQgd2l0aCBTR01JSSBvciAxMDAwQmFzZVhcXG5cJiMzNDspO1xuMjk0NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI5NDg6XHRcdH1cbjI5NDk6XHRcbjI5NTA6XHRcdGlmICghb2ZfcHJvcGVydHlfcHJlc2VudChwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDtkbWFzXCYjMzQ7KSkge1xuMjk1MTpcdFx0XHQvKiBGaW5kIHRoZSBETUEgbm9kZSwgbWFwIHRoZSBETUEgcmVnaXN0ZXJzLCBhbmQgZGVjb2RlIHRoZSBETUEgSVJRcyAqL1xuMjk1MjpcdFx0XHRucCA9IG9mX3BhcnNlX3BoYW5kbGUocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7YXhpc3RyZWFtLWNvbm5lY3RlZFwmIzM0OywgMCk7XG4yOTUzOlx0XG4yOTU0Olx0XHRcdGlmIChucCkge1xuMjk1NTpcdFx0XHRcdHN0cnVjdCByZXNvdXJjZSBkbWFyZXM7XG4yOTU2Olx0XG4yOTU3Olx0XHRcdFx0cmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgXHUwMDI2ZG1hcmVzKTtcbjI5NTg6XHRcdFx0XHRpZiAocmV0KSB7XG4yOTU5Olx0XHRcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjk2MDpcdFx0XHRcdFx0XHRcJiMzNDt1bmFibGUgdG8gZ2V0IERNQSByZXNvdXJjZVxcblwmIzM0Oyk7XG4yOTYxOlx0XHRcdFx0XHRvZl9ub2RlX3B1dChucCk7XG4yOTYyOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjk2MzpcdFx0XHRcdH1cbjI5NjQ6XHRcdFx0XHRscC1cdTAwM2VkbWFfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldixcbjI5NjU6XHRcdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZG1hcmVzKTtcbjI5NjY6XHRcdFx0XHRscC1cdTAwM2VyeF9pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChucCwgMSk7XG4yOTY3Olx0XHRcdFx0bHAtXHUwMDNldHhfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApO1xuMjk2ODpcdFx0XHRcdG9mX25vZGVfcHV0KG5wKTtcbjI5Njk6XHRcdFx0XHRscC1cdTAwM2VldGhfaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCAwKTtcbjI5NzA6XHRcdFx0fSBlbHNlIHtcbjI5NzE6XHRcdFx0XHQvKiBDaGVjayBmb3IgdGhlc2UgcmVzb3VyY2VzIGRpcmVjdGx5IG9uIHRoZSBFdGhlcm5ldCBub2RlLiAqL1xuMjk3MjpcdFx0XHRcdGxwLVx1MDAzZWRtYV9yZWdzID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSwgTlVMTCk7XG4yOTczOlx0XHRcdFx0bHAtXHUwMDNlcnhfaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAxKTtcbjI5NzQ6XHRcdFx0XHRscC1cdTAwM2V0eF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuMjk3NTpcdFx0XHRcdGxwLVx1MDAzZWV0aF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDIpO1xuMjk3NjpcdFx0XHR9XG4yOTc3Olx0XHRcdGlmIChJU19FUlIobHAtXHUwMDNlZG1hX3JlZ3MpKSB7XG4yOTc4Olx0XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IG1hcCBETUEgcmVnc1xcblwmIzM0Oyk7XG4yOTc5Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlZG1hX3JlZ3MpO1xuMjk4MDpcdFx0XHR9XG4yOTgxOlx0XHRcdGlmICghbHAtXHUwMDNlcnhfaXJxIHx8ICFscC1cdTAwM2V0eF9pcnEpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBpbiB0aGUgQ29udGV4dCBvZiBhbWQ2NCBRRU1VKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBUaGF0IGBvZl9wcm9wZXJ0eV9yZWFkX3UzMmAgY2FsbCB3aXRoIHRoZSBgeGxueCxyeG1lbWAgcHJvcGVydHkgaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gSWYgYHBkZXYtJmd0O2Rldi5vZl9ub2RlYCBpcyBOVUxMLCB0aGF0IGNhbGwgc2hvdWxkIHJldHVybiBhbiBlcnJvciwgb3IgaXQgKmNvdWxkKiBjcmFzaCBkdWUgdG8gYSBudWxsIGRlcmVmZXJlbmNlLCB0aG91Z2ggdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBzdXBwb3NlZCB0byBoYW5kbGUgdGhhdCBjYXNlLiBUaGlzIGRyaXZlciYjMzk7cyBmb3IgWGlsaW54IFZpcnRleCBGUEdBcyBhbmQgWnlucS9NaWNyb0JsYXplIFNvQ3MsIHdoaWNoIG1lYW5zIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBpcyByZWxldmFudC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBJcyB0aGlzIGhhcmR3YXJlIGVtdWxhdGVkIG9uIGEgc3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXAgZm9yIHg4Nl82ND8KCkhvbGQgb24uIExldCBtZSBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBPa2F5LCBpdCBwb2ludHMgb3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN0dWZmIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLiBBbmQgdGhlbiB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4gbGlrZSB0ZWFyLWRvd24gY2FsbGJhY2tzIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnLgoKTm93LCBjb3VsZCBYaWxpbnggQVhJIEV0aGVybmV0IGV2ZW4gYmUgZW11bGF0ZWQgaW4gUUVNVT8gT3IgaXMgaXQgYW4gZW1iZWRkZWQgU29DIEZQR0EgY29yZSBvbiBNaWNyb0JsYXplL0FSTT8gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQmIzM5O3MgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaGVyZT8gQWgsIGl0JiMzOTtzIGFtZDY0LiBDYW4gdGhpcyBkcml2ZXIsIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCwgZXZlbiAqYmUqIHVzZWQgb24gYW1kNjQgaW4gUUVNVT8gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBgeGxueCxheGktZXRoZXJuZXRgIGZvciB4ODZfNjQ/CgpXYWl0LCBRRU1VICpvbmx5KiBoYXMgYHhsbnguYXhpLWV0aGVybmV0YCBmb3IgTWljcm9CbGF6ZS9BUk0sIGxpa2Ugb24gdGhvc2UgWkNVMTAyIGFuZCBQZXRhTG9naXggYm9hcmRzLiBEbyBJIGtub3cgaWYgUUVNVSBldmVuIGhhcyBgeGxueC5heGktZXRoZXJuZXRgIG1hY2hpbmUgbW9kZWxzPyBMZXQgbWUgY2hlY2sgbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgYW5kIFFFTVUuIEhleSwgYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYCBleGlzdHMgaW4gUUVNVSEgQnV0IGRvZXMgUUVNVSBlbXVsYXRlIGB4aWxpbnhfYXhpZW5ldGAgb24geDg2XzY0PwoKTm8sIG9uIHg4Nl82NCwgUUVNVSBydW5zIHdpdGggYSBgcTM1YCBvciBgcGNgIG1hY2hpbmUgKHRoZSBzdGFuZGFyZCBQQy9RMzUgYXJjaGl0ZWN0dXJlKS4gRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlcyBhcmVuJiMzOTt0IGluc3RhbnRpYXRlZCBvbiBzdGFuZGFyZCBRRU1VIHg4Nl82NCBWTXMuIHg4Nl82NCBkb2VzbiYjMzk7dCBib290IHdpdGggT3BlbiBGaXJtd2FyZSBvciBEZXZpY2UgVHJlZSB3aXRoIFhpbGlueCBGUEdBIGRldmljZXMhCgpPa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXM6IGRvZXMgc3l6a2FsbGVyIG9yIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQgKmV2ZXIqIGluc3RhbnRpYXRlIGB4aWxpbnhfYXhpZW5ldGA/IENhbiBhIHBsYXRmb3JtIGRldmljZSBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlPwoKV2FpdCwgY2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIG9yIE9GIGRldmljZXM/IE5vLiBPRiBkZXZpY2Ugbm9kZXMgY29tZSBmcm9tIHRoZSBkZXZpY2UgdHJlZSBibG9iIGF0IGJvb3QsIG9yIGZyb20gT0Ygb3ZlcmxheXMuIEJ1dCBgY29uZmlnX29mYCBpc24mIzM5O3QgZW5hYmxlZCBvbiB4ODZfNjQgdW5sZXNzIGBDT05GSUdfT0ZgIGlzIGVuYWJsZWQsIGFuZCBldmVuIHdpdGggYENPTkZJR19PRmAsIE9GIG92ZXJsYXlzIHJlcXVpcmUgcm9vdCBhbmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGJ1dCB4ODZfNjQgKmRvZXNuJiMzOTt0KiB1c2UgRGV2aWNlIFRyZWUhCgpDYW4gcGxhdGZvcm0gZGV2aWNlcyBiZSBjcmVhdGVkIHZpYSBjb25maWdmcyBvciBzeXNmcyBvciBhbnl0aGluZz8gTm8sIHRoaXMgYHhpbGlueF9heGllbmV0YCBkcml2ZXIgKnJlcXVpcmVzKjoKKiAgIEFuIGBvZl9ub2RlYCB3aXRoIGB4bG54LHJ4bWVtYCwgZmFpbGluZyBwcm9iZSBpZiB0aGF0JiMzOTtzIG1pc3NpbmcKKiAgIERNQSByZXNvdXJjZXMgb3IgYSBETUEgZW5naW5lCiogICBBIFBIWSBkZXZpY2UgLyBwaHlsaW5rCiogICBJL08gbWVtb3J5IHJlc291cmNlcy4KCk5vbmUgb2YgKnRob3NlKiBleGlzdCBvbiB4ODZfNjQgdmlydHVhbCBtYWNoaW5lcy4KCkFscmlnaHQsIGxldCYjMzk7cyBub3cgY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uczogYENPTkZJR19YSUxJTlhfRE1BYCBhbmQgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgLiBUaW1lIHRvIGdyZXAgdGhyb3VnaCBkZWZjb25maWdzIG9yIGZpbmQgd2hlcmUgdGhleSYjMzk7cmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1hJTElOWF9BWElfRU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NTM9Q09ORklHX1RJX0lDU1NHX1BSVUVUSD1tXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NTctIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NTg6Q09ORklHX1hJTElOWF9BWElfRU1BQz1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ1OS1DT05GSUdfUUNPTV9JUEE9bVxuLS1cbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDQ9Q09ORklHX1hJTElOWF9FTUFDTElURT15XG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnOjQ1OkNPTkZJR19YSUxJTlhfQVhJX0VNQUM9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZy00Ni1DT05GSUdfWElMSU5YX0xMX1RFTUFDPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMDgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gd2hlcmUgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgIGlzIGVuYWJsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHJpZ2h0IG5vdyBpdCYjMzk7cyBvbmx5IHNob3dpbmcgdXAgaW4gYGFyY2gvYXJtNjQvZGVmY29uZmlnYCBhbmQgYGFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWdgLiBIbW0sIHRoYXTigJlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjb25zcGljdW91c2x5IGFic2VudCBmcm9tIGBhcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWdgLiBOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBhbnkgY2hhbmNlIGF0IGFsbCBvZiBidWlsZGluZyBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2Agb24gYW4geDg2XzY0IHN5c3RlbT8gVGhhdCBzZWVtc+KApnVubGlrZWx5IGdpdmVuIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIGJ1dCBJIHNob3VsZCBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVmb3JlIEkgcnVsZSBhbnl0aGluZyBvdXQuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBDT05GSUdfWElMSU5YX0RNQWAgd2hpbGUgSSYjMzk7bSBhdCBpdC4gSXQgbWlnaHQgb2ZmZXIgc29tZSBjbHVlcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWElMSU5YX0RNQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZz02NzQ9Y29uZmlnIFhHRU5FX0RNQVxuLS1cbmRyaXZlcnMvZG1hL0tjb25maWctNjgyLVxuZHJpdmVycy9kbWEvS2NvbmZpZzo2ODM6Y29uZmlnIFhJTElOWF9ETUFcbmRyaXZlcnMvZG1hL0tjb25maWctNjg0LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IEFYSSBETUFTIEVuZ2luZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gRE1BIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgRE1BIGNvbmZpZ3VyYXRpb24uIFRoZSB0YXJnZXQgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBhc3BlY3Qgb2YgdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvZG1hL0tjb25maWdgLiBJJiMzOTttIHNwZWNpZmljYWxseSBhaW1pbmcgdG8gaW5zcGVjdCBhcm91bmQgbGluZSA2ODMuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIHRoYXQgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyByZWxhdGVkIHRvIERNQSYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBmbGFncyB0aGF0IGFyZSByZWxldmFudCB0byB3aGF0IEkmIzM5O20gY3VycmVudGx5IGludmVzdGlnYXRpbmcuIEkmIzM5O20gaG9waW5nIEkgd2lsbCBmaW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvZiBpbnRlcmVzdCBhdCB0aGF0IGFyZWEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgyOlx0XG4gNjgzOlx0Y29uZmlnIFhJTElOWF9ETUFcbiA2ODQ6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiA2ODU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gNjg2Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY4NzpcdFx0aGVscFxuIDY4ODpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBWRE1BIFNvZnQgSVAuXG4gNjg5Olx0XG4gNjkwOlx0XHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5MTpcdFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcbiA2OTI6XHRcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cbiA2OTM6XHRcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cbiA2OTQ6XHRcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXG4gNjk1Olx0XHQgIE1lbW9yeSBNYXBwZWQgKFMyTU0pIGZvciB0aGUgZGF0YSB0cmFuc2ZlcnMuXG4gNjk2Olx0XHQgIEFYSSBDRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5NzpcdFx0ICBiZXR3ZWVuIGEgbWVtb3J5LW1hcHBlZCBzb3VyY2UgYWRkcmVzcyBhbmQgYSBtZW1vcnktbWFwcGVkXG4gNjk4Olx0XHQgIGRlc3RpbmF0aW9uIGFkZHJlc3MuXG4gNjk5Olx0XHQgIEFYSSBETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIG9uZSBkaW1lbnNpb25hbCBkaXJlY3RcbiA3MDA6XHRcdCAgbWVtb3J5IGFjY2VzcyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdGFyZ2V0IHBlcmlwaGVyYWxzLlxuIDcwMTpcdFx0ICBBWEkgTUNETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTc5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgeDg2IEV4ZWN1dGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kISBDb3VsZCB0aGlzIGRyaXZlciwgdGhpcyAqdGhpbmcqLCBhY3R1YWxseSBiZSBidWlsdCBmb3IgeDg2PyBUaGUgcHJlc2VuY2Ugb2YgYGRlcGVuZHMgb24gSEFTX0lPTUVNYCBpcyBhIGtleSBpbmRpY2F0b3IuIEl0IG1lYW5zIHRoYXQsICp0ZWNobmljYWxseSosIGlmIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQsIHdlICpjYW4qIGNvbXBpbGUgaXQgZm9yIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEJ1dCBjb21waWxhdGlvbiBpcyBvbmx5IGhhbGYgdGhlIGJhdHRsZS4gQ2FuIGl0ICpleGVjdXRlKj8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCkxldCYjMzk7cyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJ1bnRpbWUgYmVoYXZpb3IsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBtZW1vcnkuIFRoaW5raW5nIGFib3V0IGhvdyB0aGUgZHJpdmVyIHdvdWxkIHBlcmZvcm0gb24gYW5vdGhlciBhcmNoaXRlY3R1cmUsIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBXaGVuIGlzIHRoYXQgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byBmaW5kIGl0cyB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWVtb3J5IGl0IGlzIHVzaW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGdyZXAgb24gdGhhdCBmdW5jdGlvbiB3aXRoaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F4aWVuZXRfZnJlZV90eF9jaGFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz03MTA9c3RhdGljIGludCBheGllbmV0X2RldmljZV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY4OiAqIGF4aWVuZXRfZnJlZV90eF9jaGFpbiAtIENsZWFuIHVwIGEgc2VyaWVzIG9mIGxpbmtlZCBUWCBkZXNjcmlwdG9ycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY5LSAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzgyOnN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODMtXHRcdFx0XHQgaW50IG5yX2JkcywgYm9vbCBmb3JjZSwgdTMyICpzaXplcCwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTEwMDQ9c3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTAxMTpcdHBhY2tldHMgPSBheGllbmV0X2ZyZWVfdHhfY2hhaW4obHAsIGxwLVx1MDAzZXR4X2JkX2NpLCBscC1cdTAwM2V0eF9iZF9udW0sIGZhbHNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMDEyLVx0XHRcdFx0XHRcdTAwMjZzaXplLCBidWRnZXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MTA1ND1heGllbmV0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMTIyLVx0XHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjExMjM6XHRcdFx0YXhpZW5ldF9mcmVlX3R4X2NoYWluKGxwLCBvcmlnX3RhaWxfcHRyLCBpaSAmIzQzOyAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMTI0LVx0XHRcdFx0XHQgICAgICB0cnVlLCBOVUxMLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNTgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXBwbGljYWJpbGl0eSBBc3Nlc3NtZW50OiBgeGlsaW54X2F4aWVuZXRgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIGZ1enppbmcgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGNvZGUgcGF0aCBpbnZvbHZpbmcgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAsIGlzIHdvcnRod2hpbGUsIGJhc2VkIG9uIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGlzIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgYnkgYGF4aWVuZXRfdHhfcG9sbGAgZHVyaW5nIE5BUEkgcG9sbGluZywgYGF4aWVuZXRfc3RhcnRfeG1pdGAgZm9yIFRYIGNsZWFudXAgb24gZXJyb3IsIGFuZCB0aGF0JiMzOTtzIGl0LiBJdCYjMzk7cyBub3QgdXNlZCBieSBgYXhpZW5ldF9kbWFfYmRfcmVsZWFzZWAsIGFzIHByZXZpb3VzbHkgdGhvdWdodC4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBmdXp6aW5nIHRyaWFnZSBjcml0ZXJpYS4gVGhlIGNvcmUgcGhpbG9zb3BoeSBpcyByZWFjaGFiaWxpdHk6IGNhbiB0aGUgY29kZSBleGVjdXRlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKFFFTVUgb3IgR0NFKSB3aXRoIGVtdWxhdGVkIGRldmljZXM/IFRoZSAqbmVnYXRpdmUqIGNyaXRlcmlhIGdpdmUgdXMgdGhlIGVzY2FwZSBjbGF1c2VzLiBXZSBjYW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzOyB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBleGVjdXRpb24gcGF0aHMgYXJlIHRoZSBrZXlzLgoKVGhpcyBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciBpcyBhbiBPRiAoRGV2aWNlIFRyZWUpIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldC4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBcyBhbmQgU29DcyBsaWtlIFp5bnEgYW5kIE1pY3JvQmxhemUuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyB0cmlja3kuIEkgbmVlZCB0byBlc3RhYmxpc2ggYSB2ZXJ5IHNpbXBsZSBmYWN0OiBjYW4gdGhlIHhpbGlueF9heGllbmV0IGRyaXZlciBiZSByZWFjaGVkIHdpdGhpbiBRRU1VL0dDRT8KCjEuICAqKkFyY2hpdGVjdHVyZToqKiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgZ29vZC4KMi4gICoqUGxhdGZvcm06KiogVGhlIGRyaXZlciBpcyBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBJUC4KMy4gICoqUUVNVToqKiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gb2YgdGhlICYjMzQ7eGxueCxheGktZXRoZXJuZXQmIzM0OyBkZXZpY2UsIG5vciBhIERldmljZSBUcmVlIHVzZWQgb24geDg2XF82NCBRRU1VLgo0LiAgKipHQ0U6KiogTm8gWGlsaW54IEFYSSBFdGhlcm5ldCBoYXJkd2FyZSBleGlzdHMgaW4gR0NFLgo1LiAgKipJbnN0YW50aWF0aW9uczoqKiBRRU1VIGRvZXNuJiMzOTt0IGluc3RhbnRpYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlIG9uIHg4NlxfNjQuCjYuICAqKkJpbmRpbmc6KiogVGhlIGRyaXZlciBiaW5kcyB2aWEgbmFtZSBvciBPRiBEVCBtYXRjaC4gSG93ZXZlciwgZXZlbiBpZiBhIHBsYXRmb3JtIGRldmljZSBuYW1lZCAmIzM0O3hpbGlueFxfYXhpZW5ldCYjMzQ7IGNvdWxkIHNvbWVob3cgKmJlKiBjcmVhdGVkIChzYXksIHZpYSBzeXNmcyBvciBhIG1vY2ssIHdoaWNoIGlzIGVzc2VudGlhbGx5IGltcG9zc2libGUgZnJvbSB1c2Vyc3BhY2Ugd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGRyaXZlcnMpLCB0aGUgZHJpdmVyJiMzOTtzIGBheGllbmV0X3Byb2JlYCByb3V0aW5lIGltbWVkaWF0ZWx5IGZhaWxzIGJlY2F1c2UgaXQgdHJpZXMgdG8gcmVhZCB0aGUgJiMzNDt4bG54LHJ4bWVtJiMzNDsgcHJvcGVydHkgZnJvbSB0aGUgZGV2aWNlIHRyZWUgbm9kZSBhbmQgdGhhdCBub2RlIGlzIGVpdGhlciBtaXNzaW5nIG9yIG1pc3NpbmcgdGhhdCBwcm9wZXJ0eSwgcmVxdWlyaW5nIGNsb2NrcywgSS9PIG1lbW9yeSByZXNvdXJjZXMsIERNQSwgYSBQSFkgY29ubmVjdGlvbiwgZXRjLiBUaGUgZHJpdmVyIGlzIGNsZWFybHkgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aG91dCB0aGUgaW50ZW5kZWQgaGFyZHdhcmUuCgpJbiBzaG9ydCwgd2l0aG91dCBhbiBhY3R1YWwgWGlsaW54IEZQR0Egb3IgYW4gZW11bGF0aW9uIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBvbiB4ODZcXzY0LCB0aGlzIGRyaXZlciBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlLCBob3dldmVyOiBJIG5lZWQgdG8gcnVsZSBvdXQgc29tZSBvdGhlciBjb2RlIHRoYXQgY2FsbHMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbmAgaW4gYSB2aXJ0dWFsIGRyaXZlciwgb3Igc29tZSBraW5kIG9mIFBDSSB3cmFwcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2gga2VybmVsIHNlYXJjaCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgeGlsaW54X2F4aWVuZXRgIHRoYXQgbWlnaHQgb3BlbiB1cCBhIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aC4gSG93ZXZlciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgaXMgbm90IHByYWN0aWNhbGx5IGZ1enphYmxlLiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4aWxpbnhfYXhpZW5ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0yOTg2OT1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUzoyOTg3MDpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0KlxuTUFJTlRBSU5FUlMtMjk4NzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1hJTElOWF9FTUFDTElURSkgJiM0Mzs9IHhpbGlueF9lbWFjbGl0ZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6OTp4aWxpbnhfZW1hYy1vYmpzIDo9IHhpbGlueF9heGllbmV0X21haW4ubyB4aWxpbnhfYXhpZW5ldF9tZGlvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSAmIzQzOz0geGlsaW54X2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTczMj1zdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQwOi8qIEZ1bmN0aW9uIHByb3RvdHlwZXMgdmlzaWJsZSBpbiB4aWxpbnhfYXhpZW5ldF9tZGlvLmMgZm9yIG90aGVyIGZpbGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03NDEtaW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3OiNpbmNsdWRlIFwmIzM0O3hpbGlueF9heGllbmV0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMzE6XHRcdCAubmFtZSA9IFwmIzM0O3hpbGlueF9heGllbmV0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjMyLVx0XHQgLnBtID0gXHUwMDI2YXhpZW5ldF9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MTg6I2luY2x1ZGUgXCYjMzQ7eGlsaW54X2F4aWVuZXQuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NDUKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogNDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIGNvbWUgdG8gYSBmaXJtIGNvbmNsdXNpb246IGl0JiMzOTtzICpub3QqIHdvcnRoIGZ1enppbmcsIGF0IGxlYXN0IG5vdCBpbiBvdXIgdHlwaWNhbCBRRU1VLWJhc2VkIGVudmlyb25tZW50LiBUaGUgZHJpdmVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHRoZSBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYCBhbmQgYHhpbGlueF9heGllbmV0X21kaW8uY2AgZmlsZXMsIGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUuJiMzNDsgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBYaWxpbnggQVhJIEV0aGVybmV0IElQIGRyaXZlciBkZXNpZ25lZCBmb3IgRlBHQXMgYW5kIGVtYmVkZGVkIFNvQ3MgbGlrZSBWaXJ0ZXgsIFp5bnEsIGFuZCBNaWNyb0JsYXplLgoKSXQgdXNlcyBEZXZpY2UgVHJlZSwgZXhwZWN0cyBYaWxpbnggRlBHQSBJUCwgYW5kIG5lZWRzIGRlZGljYXRlZCBETUEgY29udHJvbGxlcnMg4oCTIHRoaW5ncyB5b3UganVzdCAqZG9uJiMzOTt0KiBmaW5kIG9uIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFtZDY0IHN5c3RlbSBydW5uaW5nIGluIFFFTVUuIEl0IGZhbGxzIGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHRoZSBraW5kIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQVNJQ3Mgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGVtdWxhdGlvbiB0aGF0IHdlIHNpbXBseSBkb24mIzM5O3QgaGF2ZSBhdmFpbGFibGUuIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgc2l0dWF0aW9uIGFzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5IHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQW5kIG5vdCBvbmx5IHRoYXQsIGJ1dCB0aGlzIGRyaXZlciBjb250YWlucyBjb2RlIHBhdGhzIHNwZWNpZmljIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiBhbWQ2NC4gVGhlcmVmb3JlLCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybTogYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBmYWxzZS4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IGlzIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgIHRvIGNvbnNpZGVyLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdCBpc24mIzM5O3QgYWNjZXNzaWJsZSB0byB1cyBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3ZSYjMzk7cmUgdXNpbmcuCgpUbyBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCB0byBhZGp1c3QgdGhlIE5BUEkgcG9sbCBidWRnZXQuIEhvd2V2ZXIsIHRoYXQgY29kZSBpcyBwYXJ0IG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKS4gVGhlIHZlcnkgZmFjdCB0aGF0IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBEZXZpY2UgVHJlZSBwcm9wZXJ0aWVzLCBjbG9ja3MsIGFuZCBzcGVjaWZpYyBYaWxpbnggRE1BIGNvbnRyb2xsZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgbWVhbnMgdGhhdCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIGFtZDY0IGVudmlyb25tZW50LiBXZSBjYW5ub3QgcmVhY2ggdGhpcyBjb2RlLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEkmIzM5O2xsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW4oKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIGVuc3VyZSB0aGF0IE5BUEkgcG9sbCBkb2VzIG5vdCBleGNlZWQgaXRzIGJ1ZGdldC4gVGhpcyBkcml2ZXIgKGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCkgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBYaWxpbnggRlBHQSBhbmQgU29DIGhhcmR3YXJlIChzdWNoIGFzIFZpcnRleCwgWnlucSwgb3IgTWljcm9CbGF6ZSkuIEl0IHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzLCBjbG9ja3MsIGFuZCBYaWxpbnggRE1BIGhhcmR3YXJlIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDEzOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTozMS41NDc4NTY2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxODkxNDMzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTozMS41NDc4NjE0NzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE1MjIyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDE0IDEyOjU5OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbkBAIC03ODgsNiArNzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxcbiBcXHRkbWFfYWRkcl90IHBoeXM7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfYmRzOyBpKyspIHtcXG4rXFx0XFx0LyogQSBOQVBJIHBvbGwgbXVzdCBub3QgcmV0dXJuIG1vcmUgdGhhbiBpdHMgYnVkZ2V0LiAgU3RvcCBvbiBhXFxuK1xcdFxcdCAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtXFx1MDAzZXNrYiBpcyBvbmx5IHNldCBvblxcbitcXHRcXHQgKiBhIHBhY2tldCdzIGxhc3QgZGVzY3JpcHRvciwgc28gbm8gcGFja2V0IGlzIGxlZnQgaGFsZi1mcmVlZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICghZm9yY2UgXFx1MDAyNlxcdTAwMjYgcGFja2V0cyBcXHUwMDNlPSBidWRnZXQpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4gXFx0XFx0Y3VyX3AgPSBcXHUwMDI2bHAtXFx1MDAzZXR4X2JkX3ZbKGZpcnN0X2JkICsgaSkgJSBscC1cXHUwMDNldHhfYmRfbnVtXTtcXG4gXFx0XFx0c3RhdHVzID0gY3VyX3AtXFx1MDAzZXN0YXR1cztcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEyOjU5OjMyLjg5MDA1NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE1Mzg0NjkyMzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gZW5zdXJlIHRoYXQgTkFQSSBwb2xsIGRvZXMgbm90IGV4Y2VlZCBpdHMgYnVkZ2V0LiBUaGlzIGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKSBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBIGFuZCBTb0MgaGFyZHdhcmUgKHN1Y2ggYXMgVmlydGV4LCBaeW5xLCBvciBNaWNyb0JsYXplKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMsIGNsb2NrcywgYW5kIFhpbGlueCBETUEgaGFyZHdhcmUgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTEzZTY0NjcxZmE0YmJjN2Q1NWY1NTNhYzIyMTQ2ZjRmMDhiYThmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTI6NTk6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggNzgyZjkwM2QzMThmMy4uMzczMDlmYTM1NWFiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC03ODgsNiArNzg4LDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxuIFx0ZG1hX2FkZHJfdCBwaHlzO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfYmRzOyBpKyspIHtcbitcdFx0LyogQSBOQVBJIHBvbGwgbXVzdCBub3QgcmV0dXJuIG1vcmUgdGhhbiBpdHMgYnVkZ2V0LiAgU3RvcCBvbiBhXG4rXHRcdCAqIHBhY2tldCBib3VuZGFyeSBvbmNlIGl0IGlzIHNwZW50IC0gY3VyX3AtXHUwMDNlc2tiIGlzIG9ubHkgc2V0IG9uXG4rXHRcdCAqIGEgcGFja2V0J3MgbGFzdCBkZXNjcmlwdG9yLCBzbyBubyBwYWNrZXQgaXMgbGVmdCBoYWxmLWZyZWVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKCFmb3JjZSBcdTAwMjZcdTAwMjYgcGFja2V0cyBcdTAwM2U9IGJ1ZGdldClcbitcdFx0XHRicmVhaztcbitcbiBcdFx0Y3VyX3AgPSBcdTAwMjZscC1cdTAwM2V0eF9iZF92WyhmaXJzdF9iZCArIGkpICUgbHAtXHUwMDNldHhfYmRfbnVtXTtcbiBcdFx0c3RhdHVzID0gY3VyX3AtXHUwMDNlc3RhdHVzO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6MzIuODkwMDU4MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5Mzc0MTA2Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpdHNlbGYuIEkgc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGRpZmYgaW50cm9kdWNlcyBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhlIE5BUEkgcG9sbCBmcm9tIGV4Y2VlZGluZyBpdHMgYnVkZ2V0LCBhbmQgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IHN0b3AgZnJlZWluZyBkZXNjcmlwdG9ycyBvbiBhIHBhY2tldCBib3VuZGFyeS4gVGhlIGNvbW1lbnQgaXMgcXVpdGUgY2xlYXI6IGBjdXJfcC1cdTAwM2Vza2JgIGlzIG9ubHkgc2V0IG9uIHRoZSBwYWNrZXQncyBsYXN0IGRlc2NyaXB0b3IsIGVuc3VyaW5nIG5vIHBhY2tldHMgYXJlIGxlZnQgcGFydGlhbGx5IGRlYWxsb2NhdGVkLiBUaGlzIGltcGxpZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBkZXNjcmlwdG9yIGV4aGF1c3Rpb24gZHVyaW5nIE5BUEkgcG9sbGluZywgYW5kIHRoaXMgZml4IGFwcGVhcnMgdG8gYmUgZGVzaWduZWQgdG8gcHJldmVudCBpdCBmcm9tIGNhdXNpbmcgZnVydGhlciBpc3N1ZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBzY2VuYXJpbyB3aGVyZSB0aGlzIGNvZGUgd291bGQgYmUgZXhlY3V0ZWQgb3Igbm90PyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluIHRoYXQgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgYWN0aXZlIGFuZCByZWFjaGFibGUuIElzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgdG8gY29uZmlybSBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgYW55IHByZXJlcXVpc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo0Mi4yNjQxNjcwOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MzM3MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhJTElOWF9BWElfTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NDIuMzA5ODE1ODYyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEzNzM4NjkwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgaG93IHRoZSBYaWxpbnggRXRoZXJuZXQgZHJpdmVycyBhcmUgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBrbm93IHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGFsd2F5cyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgYW55IEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyBzcGVjaWZpYyB0byBYaWxpbnggaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB3aXRoaW4gdGhhdCBkaXJlY3RvcnksIEknbSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIGZpbmQgYSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCBmaWxlIGlzIHRoZSAqa2V5KiB0byB1bmRlcnN0YW5kaW5nIGhvdyBhbGwgdGhlIGRyaXZlcidzIGZlYXR1cmVzLCBvcHRpb25zLCBhbmQgZGVwZW5kZW5jaWVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEkgY2FuIGFsbW9zdCBwaWN0dXJlIGl0IG5vdywgSSBjYW4gZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgdGhlIGJ1aWxkIG9wdGlvbnMsIGFuZCB2YXJpb3VzIGZsYWdzIHdpdGhpbiB0aGF0IEtjb25maWcuIExldCdzIGhlYWQgdGhlcmUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1My42ODM2ODYzMzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImxsX3RlbWFjLmhcIixcbiAgICBcImxsX3RlbWFjX21haW4uY1wiLFxuICAgIFwibGxfdGVtYWNfbWRpby5jXCIsXG4gICAgXCJ4aWxpbnhfYXhpZW5ldC5oXCIsXG4gICAgXCJ4aWxpbnhfYXhpZW5ldF9tYWluLmNcIixcbiAgICBcInhpbGlueF9heGllbmV0X21kaW8uY1wiLFxuICAgIFwieGlsaW54X2VtYWNsaXRlLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NTMuNjgzNzQzODE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTk2MTE4Nzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqXG5cblJpZ2h0LCBsZXQncyBzZWUuLi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBYaWxpbnggRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gY2hlY2sgdGhlIHN0YW5kYXJkIGxvY2F0aW9ucy4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBhbmQgZm9sbG93cyB0aGUgc3RhbmRhcmQgZHJpdmVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIElmIEkgZG9uJ3QgZmluZCB3aGF0IEknbSBsb29raW5nIGZvciB0aGVyZSDigJMgcGVyaGFwcyB0aGUgWGlsaW54LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBzb21laG93IG1lcmdlZCB3aXRoIGEgbW9yZSBnZW5lcmljIEV0aGVybmV0IGxheWVyIOKAkyB0aGVuIEknbGwgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnYC4gVGhpcyBjb3VsZCBjb250YWluIGVpdGhlciB0aGUgYmFzZSBFdGhlcm5ldCBjb25maWd1cmF0aW9ucyBvciBwZXJoYXBzIGl0IHdvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIFhpbGlueCBkcml2ZXIncyBLY29uZmlnLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBFdGhlcm5ldCBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTI6NTk6NTUuNjQ0OTM0MjAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTY3NTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSArPSB4aWxpbnhfZW1hY2xpdGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSArPSB4aWxpbnhfZW1hYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaD00NjI9c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo0NzE6ICogc3RydWN0IGF4aWVuZXRfbG9jYWwgLSBheGllbmV0IHByaXZhdGUgcGVyIGRldmljZSBkYXRhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcyLSAqIEBuZGV2OlxcdFBvaW50ZXIgZm9yIG5ldF9kZXZpY2UgdG8gd2hpY2ggaXQgd2lsbCBiZSBhdHRhY2hlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ4Mi0gKiBAbWlpX2Nsa19kaXY6IE1JSSBidXMgY2xvY2sgZGl2aWRlciB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4MzogKiBAcmVnc19zdGFydDogUmVzb3VyY2Ugc3RhcnQgZm9yIGF4aWVuZXQgZGV2aWNlIGFkZHJlc3Nlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4NDogKiBAcmVnczpcXHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGllbmV0X2xvY2FsIGRldmljZSBhZGRyZXNzIHNwYWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDg1LSAqIEBkbWFfcmVnczpcXHRCYXNlIGFkZHJlc3MgZm9yIHRoZSBheGlkbWEgZGV2aWNlIGFkZHJlc3Mgc3BhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzMi0gKiBAb3B0aW9uczpcXHRBeGlFdGhlcm5ldCBvcHRpb24gd29yZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjUzMzogKiBAZmVhdHVyZXM6XFx0U3RvcmVzIHRoZSBleHRlbmRlZCBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIGF4aWVuZXQgaHdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC01MzQtICogQG1heF9mcm1fc2l6ZTogU3RvcmVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZyYW1lIHRoYXQgY2FuIGJlIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU0OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo1NDk6c3RydWN0IGF4aWVuZXRfbG9jYWwge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU1MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2MzI6ICogc3RydWN0IGF4aWVuZXRfb3B0aW9uIC0gVXNlZCB0byBzZXQgYXhpIGV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzMtICogQG9wdDpcXHRPcHRpb24gdG8gYmUgc2V0Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzNzpzdHJ1Y3QgYXhpZW5ldF9vcHRpb24ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzOC1cXHR1MzIgb3B0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjQzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY0NDogKiBheGllbmV0X2lvciAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHJlYWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NDU6ICogQGxwOiAgICAgICAgIFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDYtICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjUxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2lvcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1NzpzdGF0aWMgaW5saW5lIHUzMiBheGluZXRfaW9yX3JlYWRfbWNyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1OTpcXHRyZXR1cm4gYXhpZW5ldF9pb3IobHAsIFhBRV9NRElPX01DUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY2MjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Njg6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfdW5sb2NrX21paShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzU6ICogYXhpZW5ldF9pb3cgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciB3cml0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NjogKiBAbHA6ICAgICAgICAgUG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY3Ny0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjgzOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2lvdyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODQtXFx0XFx0XFx0ICAgICAgIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTA6ICogYXhpZW5ldF9kbWFfb3V0MzIgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjkxOiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjkyLSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTk6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDAtXFx0XFx0XFx0XFx0ICAgICBvZmZfdCByZWcsIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MDc6ICogYXhpZW5ldF9kbWFfb3V0NjQgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzA4OiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA5LSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MTU6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDY0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MTYtXFx0XFx0XFx0XFx0ICAgICBvZmZfdCByZWcsIHU2NCB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjE6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMi1cXHRcXHRcXHRcXHRcXHRkbWFfYWRkcl90IGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjQtXFx0aWYgKGxwLVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IFhBRV9GRUFUVVJFX0RNQV82NEJJVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MjU6XFx0XFx0YXhpZW5ldF9kbWFfb3V0NjQobHAsIHJlZywgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3Mjc6XFx0XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzI6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMy1cXHRcXHRcXHRcXHRcXHRkbWFfYWRkcl90IGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzU6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDA6LyogRnVuY3Rpb24gcHJvdG90eXBlcyB2aXNpYmxlIGluIHhpbGlueF9heGllbmV0X21kaW8uYyBmb3Igb3RoZXIgZmlsZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDE6aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0Mjp2b2lkIGF4aWVuZXRfbWRpb190ZWFyZG93bihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzojaW5jbHVkZSBcXFwieGlsaW54X2F4aWVuZXQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OS0vKiBNdXN0IGJlIHNob3J0ZXIgdGhhbiBsZW5ndGggb2YgZXRodG9vbF9kcnZpbmZvLmRyaXZlciBmaWVsZCB0byBmaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOiNkZWZpbmUgRFJJVkVSX05BTUVcXHRcXHRcXFwieGF4aWVuZXRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MS0jZGVmaW5lIERSSVZFUl9ERVNDUklQVElPTlxcdFxcXCJYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjpzdGF0aWMgdm9pZCBheGllbmV0X3J4X3N1Ym1pdF9kZXNjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgtLyogTWF0Y2ggdGFibGUgZm9yIG9mX3BsYXRmb3JtIGJpbmRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF4aWVuZXRfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwieGxueCxheGktZXRoZXJuZXQtMS4wMC5hXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGllbmV0X29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgtLyogT3B0aW9uIHRhYmxlIGZvciBzZXR0aW5nIHVwIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBvcHRpb25zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3OTpzdGF0aWMgc3RydWN0IGF4aWVuZXRfb3B0aW9uIGF4aWVuZXRfb3B0aW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODAtXFx0LyogVHVybiBvbiBqdW1ibyBwYWNrZXQgc3VwcG9ydCBmb3IgYm90aCBSeCBhbmQgVHggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTMzOnN0YXRpYyBzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKmF4aWVuZXRfZ2V0X3J4X2Rlc2Moc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjEzODpzdGF0aWMgc3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpheGllbmV0X2dldF90eF9kZXNjKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgaW50IGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDQ6ICogYXhpZW5ldF9kbWFfaW4zMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciByZWFkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDU6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE0Ni0gKiBAcmVnOlxcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2RtYV9pbjMyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTU3OnN0YXRpYyB2b2lkIGRlc2Nfc2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGRtYV9hZGRyX3QgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF4aWRtYV9iZCAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTY1OnN0YXRpYyBkbWFfYWRkcl90IGRlc2NfZ2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNzYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNzc6ICogYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSAtIFJlbGVhc2UgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE3OC0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODAtICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbGVhc2UgdGhlIGRlc2NyaXB0b3JzIGFsbG9jYXRlZCBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTgxOiAqIGF4aWVuZXRfZG1hX2JkX2luaXQuIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2UgaXMgY2FsbGVkIHdoZW4gQXhpIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODItICogZHJpdmVyIHN0b3AgYXBpIGlzIGNhbGxlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9iZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Ni1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NzpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjI2OnN0YXRpYyB1NjQgYXhpZW5ldF9kbWFfcmF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMzQ6ICogYXhpZW5ldF9jYWxjX2NyKCkgLSBDYWxjdWxhdGUgY29udHJvbCByZWdpc3RlciB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjM1LSAqIEBscDogRGV2aWNlIHByaXZhdGUgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNDQ6c3RhdGljIHUzMiBheGllbmV0X2NhbGNfY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgY291bnQsIHUzMiB1c2VjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjUzLVxcdGlmIChjb3VudCBcXHUwMDNlIDEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI1NDpcXHRcXHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI1NS1cXHRcXHR1MzIgdGltZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI2OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3MDogKiBheGllbmV0X2NvYWxlc2NlX3BhcmFtcygpIC0gRXh0cmFjdCBjb2FsZXNjZSBwYXJhbWV0ZXJzIGZyb20gdGhlIENSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzEtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3NS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3NjpzdGF0aWMgdm9pZCBheGllbmV0X2NvYWxlc2NlX3BhcmFtcyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3Ny1cXHRcXHRcXHRcXHQgICAgdTMyICpjb3VudCwgdTMyICp1c2VjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3OTpcXHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4MC1cXHR1NjQgdGltZXIgPSBGSUVMRF9HRVQoWEFYSURNQV9ERUxBWV9NQVNLLCBjcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4NzogKiBheGllbmV0X2RtYV9zdGFydCAtIFNldCB1cCBETUEgcmVnaXN0ZXJzIGFuZCBzdGFydCBETUEgb3BlcmF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODg6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyOTA6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfc3RhcnQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjk1LVxcdGxwLVxcdTAwM2VyeF9kbWFfY3IgXFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjk2OlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwMTpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9DREVTQ19PRkZTRVQsIGxwLVxcdTAwM2VyeF9iZF9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMi1cXHRscC1cXHUwMDNlcnhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDQ6XFx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfUlhfVERFU0NfT0ZGU0VULCBscC1cXHUwMDNlcnhfYmRfcCArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMDUtXFx0XFx0XFx0ICAgICAoc2l6ZW9mKCpscC1cXHUwMDNlcnhfYmRfdikgKiAobHAtXFx1MDAzZXJ4X2JkX251bSAtIDEpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMi1cXHRscC1cXHUwMDNldHhfZG1hX2NyIFxcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMzpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVxcdTAwM2V0eF9kbWFfY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTk6XFx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfVFhfQ0RFU0NfT0ZGU0VULCBscC1cXHUwMDNldHhfYmRfcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjAtXFx0bHAtXFx1MDAzZXR4X2RtYV9jciB8PSBYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVxcdTAwM2V0eF9kbWFfY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyLVxcdGxwLVxcdTAwM2V0eF9kbWFfc3RhcnRlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyODogKiBheGllbmV0X2RtYV9iZF9pbml0IC0gU2V0dXAgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3MgZm9yIEF4aSBETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyOS0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMzc6c3RhdGljIGludCBheGllbmV0X2RtYV9iZF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQwLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozNDE6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjM5NjpcXHRheGllbmV0X2RtYV9zdGFydChscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5OS1vdXQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDA6XFx0YXhpZW5ldF9kbWFfYmRfcmVsZWFzZShuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwMS1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDA0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDA1OiAqIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzIC0gV3JpdGUgdGhlIE1BQyBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDYtICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDExLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDEyOnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDEzLVxcdFxcdFxcdFxcdCAgICBjb25zdCB2b2lkICphZGRyZXNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxNTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDIyLVxcdC8qIFNldCB1cCB1bmljYXN0IE1BQyBhZGRyZXNzIGZpbHRlciBzZXQgaXRzIG1hYyBhZGRyZXNzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MjM6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcwX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNC1cXHRcXHQgICAgKG5kZXYtXFx1MDAzZWRldl9hZGRyWzBdKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQyNy1cXHRcXHQgICAgKG5kZXYtXFx1MDAzZWRldl9hZGRyWzNdIFxcdTAwM2NcXHUwMDNjIDI0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Mjg6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9VQVcxX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyOTpcXHRcXHQgICAgKCgoYXhpZW5ldF9pb3IobHAsIFhBRV9VQVcxX09GRlNFVCkpIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQzMC1cXHRcXHQgICAgICB+WEFFX1VBVzFfVU5JQ0FTVEFERFJfTUFTSykgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDItICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIEF4aSBFdGhlcm5ldFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDQzOiAqIGNvcmUuIEl0IGNhbGxzIHRoZSBjb3JlIHNwZWNpZmljIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzLiBUaGlzIGlzIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQ0LSAqIGZ1bmN0aW9uIHRoYXQgZ29lcyBpbnRvIG5ldF9kZXZpY2Vfb3BzIHN0cnVjdHVyZSBlbnRyeSBuZG9fc2V0X21hY19hZGRyZXNzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz00NDY9c3RhdGljIGludCBuZXRkZXZfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTA6XFx0YXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MobmRldiwgYWRkci1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTEtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1NTogKiBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdCAtIFByZXBhcmUgdGhlIG11bHRpY2FzdCB0YWJsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU2LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2NTpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2OC1cXHR1MzIgcmVnLCBhZjByZWcsIGFmMXJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2OTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3MTpcXHRyZWcgPSBheGllbmV0X2lvcihscCwgWEFFX0ZNSV9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcyLVxcdHJlZyBcXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzYtXFx0XFx0cmVnIFxcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Nzc6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00ODEtXFx0XFx0cmVnIFxcdTAwMjY9IDB4RkZGRkZGMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODI6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgzOlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgMSk7IC8qIE11bHRpY2FzdCBiaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NDpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg1OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0wX09GRlNFVCwgMSk7IC8qIGRpdHRvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODY6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTFfT0ZGU0VULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NzpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZGRV9PRkZTRVQsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDg4LVxcdFxcdGkgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MDc6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA4OlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYwX09GRlNFVCwgYWYwcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwOTpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIGFmMXJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTA6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAweGZmZmZmZmZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMTpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDB4MDAwMGZmZmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEyOlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MTMtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MTktXFx0XFx0cmVnIHw9IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjA6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTIxOlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MjItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MjUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjY6ICogYXhpZW5ldF9zZXRvcHRpb25zIC0gU2V0IGFuIEF4aSBFdGhlcm5ldCBvcHRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNy0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzMtICogdGhlc2Ugb3B0aW9ucyBpbiB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLiBUaGlzIGlzIGRvbmUgdGhyb3VnaFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM0OiAqIGF4aWVuZXRfb3B0aW9uIHN0cnVjdHVyZSAuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzY6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRvcHRpb25zKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgb3B0aW9ucylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzgtXFx0aW50IHJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzOTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MDpcXHRzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gKnRwID0gXFx1MDAyNmF4aWVuZXRfb3B0aW9uc1swXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0Mi1cXHR3aGlsZSAodHAtXFx1MDAzZW9wdCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQzOlxcdFxcdHJlZyA9ICgoYXhpZW5ldF9pb3IobHAsIHRwLVxcdTAwM2VyZWcpKSBcXHUwMDI2IH4odHAtXFx1MDAzZW1fb3IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NC1cXHRcXHRpZiAob3B0aW9ucyBcXHUwMDI2IHRwLVxcdTAwM2VvcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDUtXFx0XFx0XFx0cmVnIHw9IHRwLVxcdTAwM2VtX29yO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQ2OlxcdFxcdGF4aWVuZXRfaW93KGxwLCB0cC1cXHUwMDNlcmVnLCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ3LVxcdFxcdHRwKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU1MzpzdGF0aWMgdTY0IGF4aWVuZXRfc3RhdChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGVudW0gdGVtYWNfc3RhdCBzdGF0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTYwOlxcdGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2MS1cXHRyZXR1cm4gbHAtXFx1MDAzZWh3X3N0YXRfYmFzZVtzdGF0XSArIChjb3VudGVyIC0gbHAtXFx1MDAzZWh3X2xhc3RfY291bnRlcltzdGF0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU2NDpzdGF0aWMgdm9pZCBheGllbmV0X3N0YXRzX3VwZGF0ZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGJvb2wgcmVzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NzAtXFx0Zm9yIChzdGF0ID0gMDsgc3RhdCBcXHUwMDNjIFNUQVRfQ09VTlQ7IHN0YXQrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTcxOlxcdFxcdHUzMiBjb3VudGVyID0gYXhpZW5ldF9pb3IobHAsIFhBRV9TVEFUU19PRkZTRVQgKyBzdGF0ICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU3OTpzdGF0aWMgdm9pZCBheGllbmV0X3JlZnJlc2hfc3RhdHMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4MTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGF4aWVuZXRfbG9jYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODItXFx0XFx0XFx0XFx0XFx0XFx0c3RhdHNfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTg0LVxcdG11dGV4X2xvY2soXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4NTpcXHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTg2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2bHAtXFx1MDAzZXN0YXRzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1OTI6c3RhdGljIGludCBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5OS1cXHRpZiAobHAtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgWEFFX0ZFQVRVUkVfU1RBVFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDA6XFx0XFx0YXhpZW5ldF9zdGF0c191cGRhdGUobHAsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MDgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDk6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBYQVhJRE1BX0NSX1JFU0VUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjEwOlxcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfZG1hX2luMzIsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjExLVxcdFxcdFxcdFxcdCEodmFsdWUgXFx1MDAyNiBYQVhJRE1BX0NSX1JFU0VUX01BU0spLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTktXFx0LyogV2FpdCBmb3IgUGh5UnN0Q21wbHQgYml0IHRvIGJlIHNldCwgaW5kaWNhdGluZyB0aGUgUEhZIHJlc2V0IGhhcyBmaW5pc2hlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjIwOlxcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfaW9yLCB2YWx1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYyMS1cXHRcXHRcXHRcXHR2YWx1ZSBcXHUwMDI2IFhBRV9JTlRfUEhZUlNUQ01QTFRfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM2LVxcdFxcdFxcdHUzMiBjb3VudGVyID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYzNzpcXHRcXHRcXHRcXHRheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUyOiAqIGF4aWVuZXRfZG1hX3N0b3AgLSBTdG9wIERNQSBvcGVyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1MzogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY1NTpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdG9wKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2Mi1cXHRjciA9IGxwLVxcdTAwM2VyeF9kbWFfY3IgXFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjYzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjY0LVxcdGxwLVxcdTAwM2VyeF9kbWFfc3RhcnRlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzEtXFx0Y3IgPSBscC1cXHUwMDNldHhfZG1hX2NyIFxcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3MjpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGNyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3My1cXHRscC1cXHUwMDNldHhfZG1hX3N0YXJ0ZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjc4LVxcdC8qIEdpdmUgRE1BcyBhIGNoYW5jZSB0byBoYWx0IGdyYWNlZnVsbHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3OTpcXHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MC1cXHRmb3IgKGNvdW50ID0gMDsgIShzciBcXHUwMDI2IFhBWElETUFfU1JfSEFMVF9NQVNLKSBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNjIDU7ICsrY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MS1cXHRcXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjgyOlxcdFxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY4NTpcXHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ni1cXHRmb3IgKGNvdW50ID0gMDsgIShzciBcXHUwMDI2IFhBWElETUFfU1JfSEFMVF9NQVNLKSBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNjIDU7ICsrY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ny1cXHRcXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg4OlxcdFxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjkxLVxcdC8qIERvIGEgcmVzZXQgdG8gZW5zdXJlIERNQSBpcyByZWFsbHkgc3RvcHBlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkyOlxcdGF4aWVuZXRfbG9ja19taWkobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjkzOlxcdF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk0OlxcdGF4aWVuZXRfdW5sb2NrX21paShscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTg6ICogYXhpZW5ldF9kZXZpY2VfcmVzZXQgLSBSZXNldCBhbmQgaW5pdGlhbGl6ZSB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk5LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMDpzdGF0aWMgaW50IGF4aWVuZXRfZGV2aWNlX3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzExLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMjpcXHR1MzIgYXhpZW5ldF9zdGF0dXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MTM6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MTQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzI4LVxcdGlmICghbHAtXFx1MDAzZXVzZV9kbWFlbmdpbmUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcyOTpcXHRcXHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MzM6XFx0XFx0cmV0ID0gYXhpZW5ldF9kbWFfYmRfaW5pdChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczNC1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0MTpcXHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfUkNXMV9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQyOlxcdGF4aWVuZXRfc3RhdHVzIFxcdTAwMjY9IH5YQUVfUkNXMV9SWF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQzOlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfUkNXMV9PRkZTRVQsIGF4aWVuZXRfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NTpcXHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfSVBfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NjpcXHRpZiAoYXhpZW5ldF9zdGF0dXMgXFx1MDAyNiBYQUVfSU5UX1JYUkpFQ1RfTUFTSylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NzpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0lTX09GRlNFVCwgWEFFX0lOVF9SWFJKRUNUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ4OlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfSUVfT0ZGU0VULCBscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNlIDAgP1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ5LVxcdFxcdCAgICBYQUVfSU5UX1JFQ1ZfRVJST1JfTUFTSyA6IDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzUxOlxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkNDX09GRlNFVCwgWEFFX0ZDQ19GQ1JYX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTUtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTY6XFx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVxcdTAwM2VvcHRpb25zIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Ny1cXHRcXHRcXHQgICB+KFhBRV9PUFRJT05fVFhFTiB8IFhBRV9PUFRJT05fUlhFTikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU4OlxcdGF4aWVuZXRfc2V0X21hY19hZGRyZXNzKG5kZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU5OlxcdGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzYwOlxcdGF4aWVuZXRfc2V0b3B0aW9ucyhuZGV2LCBscC1cXHUwMDNlb3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njk6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NzAtICogQGZpcnN0X2JkOlxcdEluZGV4IG9mIGZpcnN0IGRlc2NyaXB0b3IgdG8gY2xlYW4gdXBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzgyOnN0YXRpYyBpbnQgYXhpZW5ldF9mcmVlX3R4X2NoYWluKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGZpcnN0X2JkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgzLVxcdFxcdFxcdFxcdCBpbnQgbnJfYmRzLCBib29sIGZvcmNlLCB1MzIgKnNpemVwLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NDEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDI6ICogYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZSAtIENoZWNrcyBpZiBhIEJEL2dyb3VwIG9mIEJEcyBhcmUgY3VycmVudGx5IGJ1c3lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg0MzogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg0NC0gKiBAbnVtX2ZyYWc6XFx0VGhlIG51bWJlciBvZiBCRHMgdG8gY2hlY2sgZm9yXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg1My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg1NDpzdGF0aWMgaW5saW5lIGludCBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg1NS1cXHRcXHRcXHRcXHRcXHQgICAgaW50IG51bV9mcmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NjgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njk6ICogYXhpZW5ldF9kbWFfdHhfY2IgLSBETUEgZW5naW5lIGNhbGxiYWNrIGZvciBUWCBjaGFubmVsLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODcwOiAqIEBkYXRhOiAgICAgICBQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3MS0gKiBAcmVzdWx0OiAgICAgZXJyb3IgcmVwb3J0aW5nIHRocm91Z2ggZG1hZW5naW5lX3Jlc3VsdC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc1OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3R4X2NiKHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBkbWFlbmdpbmVfcmVzdWx0ICpyZXN1bHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc3LVxcdHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqc2tidWZfZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc4OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzktXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4ODI6XFx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXFx1MDAzZXR4X3JpbmdfdGFpbCsrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg4My1cXHRsZW4gPSBza2J1Zl9kbWEtXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4OTc6ICogYXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZSAtIFN0YXJ0cyB0aGUgdHJhbnNtaXNzaW9uLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODk4LSAqIEBza2I6ICAgICAgICBza19idWZmIHBvaW50ZXIgdGhhdCBjb250YWlucyBkYXRhIHRvIGJlIFR4ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTkxMT1zdGF0aWMgbmV0ZGV2X3R4X3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxMjpheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkxNC1cXHRzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRtYV90eF9kZXNjID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjkxNTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkxNi1cXHR1MzIgYXBwX21ldGFkYXRhW0RNQV9OVU1fQVBQX1dPUkRTXSA9IHswfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTM0OlxcdHNrYnVmX2RtYSA9IGF4aWVuZXRfZ2V0X3R4X2Rlc2MobHAsIGxwLVxcdTAwM2V0eF9yaW5nX2hlYWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTM1LVxcdGlmICghc2tidWZfZG1hKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1NS43NDI5MDk4OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzY3NzM1MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgcHJvbXB0OlxuXG4qKktjb25maWcgYW5kIFhJTElOWF9BWElfRU1BQzogQSBRdWljayBDaGVjayoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IHRoaXMgXCJYSUxJTlhfQVhJX0VNQUNcIiB0aGluZy4uLiByaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGd1dCBzYXlzIGl0J3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gZW5hYmxpbmcgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBYaWxpbnggdG9vbGNoYWlucz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBvcHRpb24gKmFjdHVhbGx5KiBjb250cm9scyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdsbCBmb2N1cyBvbiBmaW5kaW5nIHRoZSByZWxldmFudCBkZWZpbml0aW9ucyBhbmQgY29tbWVudHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IG1vZHVsZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYWZmZWN0ZWQuIEnigJltIHRoaW5raW5nIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBzdHJpbmcgXCJYSUxJTlhfQVhJX0VNQUNcIiBhbmQgc2VlIGlmIHRoYXQgeWllbGRzIHJlc3VsdHMuIFRoZSBnb2FsIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGFzc2VzcyBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NjEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMjo1OTo1OS41MTA2NDg5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1Njk1MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MjY6Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwLzEwMDAgQVhJIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEyOjU5OjU5LjY0NjM1MTY5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MDY3NTI0NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIHRoZSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlcidzIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ2AuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAyNS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlLCBtb3N0IGltcG9ydGFudCBzZXR0aW5ncyBvciBhbiBpbXBvcnRhbnQgY29uZGl0aW9uYWwgYmxvY2sgYmVnaW5zLCBzbyBpdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSByb290IG9mIHRoZSBjb25maWd1cmF0aW9uLiBMZXTigJlzIHNlZSB3aGF0J3MgYmVpbmcgZGVmaW5lZCB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGRyaXZlcidzIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgaGFyZHdhcmUgYW5kIG90aGVyIGtlcm5lbCBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwODcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDowNi43MTM4Nzg4MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDIyOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIDEwLzEwMCBFdGhlcm5ldCBMaXRlIGZyb20gWGlsaW54LlxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgWElMSU5YX0FYSV9FTUFDXFxuICAyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxcbiAgMzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDMxOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIDEwLzEwMC8xMDAwIEV0aGVybmV0IGZyb20gWGlsaW54IGZvciB0aGVcXG4gIDM0OlxcdFxcdCAgQVhJIGJ1cyBpbnRlcmZhY2UgdXNlZCBpbiBYaWxpbnggVmlydGV4IEZQR0FzIGFuZCBTb2Mncy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIFhJTElOWF9MTF9URU1BQ1xcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCBMTCBURU1BQyAoTG9jYWxMaW5rIFRyaS1tb2RlIEV0aGVybmV0IE1BQykgZHJpdmVyXFxcIlxcbiAgMzg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDM5OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFhpbGlueCAxMC8xMDAvMTAwMCBMb2NhbExpbmsgVEVNQUNcXG4gIDQyOlxcdFxcdCAgY29yZSB1c2VkIGluIFhpbGlueCBTcGFydGFuIGFuZCBWaXJ0ZXggRlBHQXNcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0ZW5kaWYgIyBORVRfVkVORE9SX1hJTElOWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDowNi43MTM5Mzc2MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzM1MTIwMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGBYSUxJTlhfQVhJX0VNQUNgLiBTdHJhaWdodCBhd2F5LCBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJdCByZWxpZXMgb24gYEhBU19JT01FTWAgYW5kIGBYSUxJTlhfRE1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhpcyBpcyBhbiBBWEktYmFzZWQgRXRoZXJuZXQgTUFDLiBUaGUgYHNlbGVjdCBQSFlMSU5LYCBhbmQgYHNlbGVjdCBESU1MSUJgIGFsc28gaW5kaWNhdGUgaXQncyB1c2luZyB0aGUgc3RhbmRhcmQgTGludXggbmV0d29ya2luZyBzdGFjayBhbmQgbGlrZWx5IHNvbWUgWGlsaW54LXNwZWNpZmljIERNQSBsaWJyYXJpZXMuIFRoZSBoZWxwIHRleHQgY29uZmlybXMgdGhhdCB0aGlzIGRyaXZlciB0YXJnZXRzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGludGVyZmFjZSBmb3VuZCBpbiB0aGVpciBWaXJ0ZXggRlBHQXMgYW5kIFNvQ3Mg4oCTIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgdGhpbmcgYWN0dWFsbHkgZ2V0IHByb2JlZD8gSXMgaXQgYW4gb2ZfcGxhdGZvcm0gZHJpdmVyLCBhIHBsYXRmb3JtIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gTGV0J3MganVtcCBpbnRvIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgdGhlIGRyaXZlciBkZWZpbml0aW9uIGl0c2VsZiB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIG1hdGNoaW5nIHByb2Nlc3MuIFRpbWUgdG8gc2VlIGhvdyB0aGlzIHRoaW5nIGdldHMgYXR0YWNoZWQgdG8gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NDEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDoxMC4wNjUxNDIwNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTAxODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjEwLjExMTI0NzMyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozOTU2MzEzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEF4aWVuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29kZSwgYW5kIEkgbmVlZCB0byB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgcGFydCDigJMgdGhlIGBheGllbmV0X2RyaXZlcmAuIExldCdzIGFzc3VtZSBJJ3ZlIGdvdCBhIHZhZ3VlIHNlbnNlIG9mIHdoZXJlIHRoZSBwcm9ibGVtIG1pZ2h0IGJlIGFuZCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGJldHRlci4gTGluZSAzMjI2LCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBrbm93IHRoZXNlIGRyaXZlcnMgYW5kIHRoaXMgbGlicmFyeSwgYW5kIGxpbmUgbnVtYmVycyBvZnRlbiBjb3JyZXNwb25kIHRvIG1ham9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBJdCBpcyBsaWtlbHkgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZSBsaWJyYXJ5LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJndW1lbnRzLCByZXR1cm5zLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBjb250cm9sIGZsb3cgb2YgdGhlIGBheGllbmV0X2RyaXZlcmAuIExldCdzIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzE2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDA6MTQuMDY3NTYyODM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NjU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyMjAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyMjA6XFx0XFx0cmV0dXJuIDA7XFxuMzIyMTpcXHR9XFxuMzIyMjpcXHRcXG4zMjIzOlxcdHN0YXRpYyBERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoYXhpZW5ldF9wbV9vcHMsXFxuMzIyNDpcXHRcXHRcXHRcXHRcXHRheGllbmV0X3N1c3BlbmQsIGF4aWVuZXRfcmVzdW1lKTtcXG4zMjI1OlxcdFxcbjMyMjY6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XFxuMzIyNzpcXHRcXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxcbjMyMjg6XFx0XFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxcbjMyMjk6XFx0XFx0LnNodXRkb3duID0gYXhpZW5ldF9zaHV0ZG93bixcXG4zMjMwOlxcdFxcdC5kcml2ZXIgPSB7XFxuMzIzMTpcXHRcXHRcXHQgLm5hbWUgPSBcXFwieGlsaW54X2F4aWVuZXRcXFwiLFxcbjMyMzI6XFx0XFx0XFx0IC5wbSA9IFxcdTAwMjZheGllbmV0X3BtX29wcyxcXG4zMjMzOlxcdFxcdFxcdCAub2ZfbWF0Y2hfdGFibGUgPSBheGllbmV0X29mX21hdGNoLFxcbjMyMzQ6XFx0XFx0fSxcXG4zMjM1OlxcdH07XFxuMzIzNjpcXHRcXG4zMjM3OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xcbjMyMzg6XFx0XFxuMzIzOTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlhpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXFxcIik7XFxuMzI0MDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJYaWxpbnhcXFwiKTtcXG4zMjQxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDA6MTQuMDY3OTIxOTc0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3MjIxNTY5MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uICoqSW52ZXN0aWdhdGluZyBgYXhpZW5ldF9wcm9iZWAqKiBzZWVtcyBsaWtlIHRoZSBpbW1lZGlhdGUgdGFzay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBleGFjdGx5ICpkb2VzKiBgYXhpZW5ldF9wcm9iZWAgZG8/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwcm9iZSBpdCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gV2hhdCdzIHRoZSBiZXN0IHdheSB0byBkbyB0aGF0PyBUaGVuLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgbmF0dXJlLiBJcyB0aGlzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBheGllbmV0X3Byb2JlYCwgcmVzdHJpY3RlZCB0byBhbiBPcGVuIEZpcm13YXJlIChPRikgb25seSBwbGF0Zm9ybT8gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBleGFtaW5lIHRoZSBjb2RlIHJlbGF0ZWQgdG8gYGF4aWVuZXRfcHJvYmVgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24uIFNvLCBsZXQncyBkaXZlIGludG8gdGhhdCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4ODQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjMxLjI4OTQ5NDQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMjg4MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXhpZW5ldF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MjcwNT1zdGF0aWMgdm9pZCBheGllbmV0X2RtYV9lcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3OTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzkxOiAqIGF4aWVuZXRfcHJvYmUgLSBBeGkgRXRoZXJuZXQgcHJvYmUgZnVuY3Rpb24uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzkyLSAqIEBwZGV2OlxcdFBvaW50ZXIgdG8gcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4MDI6c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMjc6XFx0LnByb2JlID0gYXhpZW5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjgtXFx0LnJlbW92ZSA9IGF4aWVuZXRfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDozMS4zMzc1MjY2NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzYyMjQzNjkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgQXhpZU5ldCBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXhpZW5ldF9wcm9iZWAgZnVuY3Rpb24uIEkga25vdyBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkZXZpY2UsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGZsb3cgaXMgY3JpdGljYWwuIFRoZSBwYXRoIHNob3VsZCBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AsIHJpZ2h0PyBMZXQncyBnbyBzcGVsdW5raW5nIGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgcmVzb3VyY2UgYWxsb2NhdGlvbiwgUEhZIHNldHVwLCBhbmQgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbi4gVGhlcmUgbWlnaHQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2UgbG9naWMgYnVyaWVkIHdpdGhpbiwgdG9vLCBzbyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgbm9uLXN0YW5kYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzUyNywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjM0Ljk1OTk2NTc5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODAyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMjpcXHRzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4yODAzOlxcdHtcXG4yODA0OlxcdFxcdGludCByZXQ7XFxuMjgwNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbjI4MDY6XFx0XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwO1xcbjI4MDc6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuMjgwODpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKmV0aHJlcztcXG4yODA5OlxcdFxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4yODEwOlxcdFxcdGludCBhZGRyX3dpZHRoID0gMzI7XFxuMjgxMTpcXHRcXHR1MzIgdmFsdWU7XFxuMjgxMjpcXHRcXG4yODEzOlxcdFxcdG5kZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqbHApKTtcXG4yODE0OlxcdFxcdGlmICghbmRldilcXG4yODE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI4MTY6XFx0XFxuMjgxNzpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBuZGV2KTtcXG4yODE4OlxcdFxcbjI4MTk6XFx0XFx0U0VUX05FVERFVl9ERVYobmRldiwgXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMjgyMDpcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyA9IE5FVElGX0ZfU0c7XFxuMjgyMTpcXHRcXG4yODIyOlxcdFxcdC8qIE1UVSByYW5nZTogNjQgLSA5MDAwICovXFxuMjgyMzpcXHRcXHRuZGV2LVxcdTAwM2VtaW5fbXR1ID0gNjQ7XFxuMjgyNDpcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEFFX0pVTUJPX01UVTtcXG4yODI1OlxcdFxcbjI4MjY6XFx0XFx0bHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4yODI3OlxcdFxcdGxwLVxcdTAwM2VuZGV2ID0gbmRldjtcXG4yODI4OlxcdFxcdGxwLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI4Mjk6XFx0XFx0bHAtXFx1MDAzZW9wdGlvbnMgPSBYQUVfT1BUSU9OX0RFRkFVTFRTO1xcbjI4MzA6XFx0XFx0bHAtXFx1MDAzZXJ4X2JkX251bSA9IFJYX0JEX05VTV9ERUZBVUxUO1xcbjI4MzE6XFx0XFx0bHAtXFx1MDAzZXR4X2JkX251bSA9IFRYX0JEX05VTV9ERUZBVUxUO1xcbjI4MzI6XFx0XFxuMjgzMzpcXHRcXHR1NjRfc3RhdHNfaW5pdChcXHUwMDI2bHAtXFx1MDAzZXJ4X3N0YXRfc3luYyk7XFxuMjgzNDpcXHRcXHR1NjRfc3RhdHNfaW5pdChcXHUwMDI2bHAtXFx1MDAzZXR4X3N0YXRfc3luYyk7XFxuMjgzNTpcXHRcXG4yODM2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG4yODM3OlxcdFxcdHNlcWNvdW50X211dGV4X2luaXQoXFx1MDAyNmxwLVxcdTAwM2Vod19zdGF0c19zZXFjb3VudCwgXFx1MDAyNmxwLVxcdTAwM2VzdGF0c19sb2NrKTtcXG4yODM4OlxcdFxcdElOSVRfREVGRVJSQUJMRV9XT1JLKFxcdTAwMjZscC1cXHUwMDNlc3RhdHNfd29yaywgYXhpZW5ldF9yZWZyZXNoX3N0YXRzKTtcXG4yODM5OlxcdFxcbjI4NDA6XFx0XFx0bHAtXFx1MDAzZWF4aV9jbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbjI4NDE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJzX2F4aV9saXRlX2Nsa1xcXCIpO1xcbjI4NDI6XFx0XFx0aWYgKCFscC1cXHUwMDNlYXhpX2Nsaykge1xcbjI4NDM6XFx0XFx0XFx0LyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGlmIG5hbWVkIEFYSSBjbG9jayBpcyBub3QgcHJlc2VudCxcXG4yODQ0OlxcdFxcdFxcdCAqIHRyZWF0IHRoZSBmaXJzdCBjbG9jayBzcGVjaWZpZWQgYXMgdGhlIEFYSSBjbG9jay5cXG4yODQ1OlxcdFxcdFxcdCAqL1xcbjI4NDY6XFx0XFx0XFx0bHAtXFx1MDAzZWF4aV9jbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG4yODQ3OlxcdFxcdH1cXG4yODQ4OlxcdFxcdGlmIChJU19FUlIobHAtXFx1MDAzZWF4aV9jbGspKVxcbjI4NDk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUFRSX0VSUihscC1cXHUwMDNlYXhpX2NsayksXFxuMjg1MDpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJjb3VsZCBub3QgZ2V0IEFYSSBjbG9ja1xcXFxuXFxcIik7XFxuMjg1MTpcXHRcXG4yODUyOlxcdFxcdGxwLVxcdTAwM2VtaXNjX2Nsa3NbMF0uaWQgPSBcXFwiYXhpc19jbGtcXFwiO1xcbjI4NTM6XFx0XFx0bHAtXFx1MDAzZW1pc2NfY2xrc1sxXS5pZCA9IFxcXCJyZWZfY2xrXFxcIjtcXG4yODU0OlxcdFxcdGxwLVxcdTAwM2VtaXNjX2Nsa3NbMl0uaWQgPSBcXFwibWd0X2Nsa1xcXCI7XFxuMjg1NTpcXHRcXG4yODU2OlxcdFxcdHJldCA9IGRldm1fY2xrX2J1bGtfZ2V0X29wdGlvbmFsX2VuYWJsZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBYQUVfTlVNX01JU0NfQ0xPQ0tTLFxcbjI4NTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0bHAtXFx1MDAzZW1pc2NfY2xrcyk7XFxuMjg1ODpcXHRcXHRpZiAocmV0KVxcbjI4NTk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcmV0LFxcbjI4NjA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiY291bGQgbm90IGdldC9lbmFibGUgbWlzYy4gY2xvY2tzXFxcXG5cXFwiKTtcXG4yODYxOlxcdFxcbjI4NjI6XFx0XFx0LyogTWFwIGRldmljZSByZWdpc3RlcnMgKi9cXG4yODYzOlxcdFxcdGxwLVxcdTAwM2VyZWdzID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgXFx1MDAyNmV0aHJlcyk7XFxuMjg2NDpcXHRcXHRpZiAoSVNfRVJSKGxwLVxcdTAwM2VyZWdzKSlcXG4yODY1OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGxwLVxcdTAwM2VyZWdzKTtcXG4yODY2OlxcdFxcdGxwLVxcdTAwM2VyZWdzX3N0YXJ0ID0gZXRocmVzLVxcdTAwM2VzdGFydDtcXG4yODY3OlxcdFxcbjI4Njg6XFx0XFx0LyogU2V0dXAgY2hlY2tzdW0gb2ZmbG9hZCwgYnV0IGRlZmF1bHQgdG8gb2ZmIGlmIG5vdCBzcGVjaWZpZWQgKi9cXG4yODY5OlxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyA9IDA7XFxuMjg3MDpcXHRcXG4yODcxOlxcdFxcdGlmIChheGllbmV0X2lvcihscCwgWEFFX0FCSUxJVFlfT0ZGU0VUKSBcXHUwMDI2IFhBRV9BQklMSVRZX1NUQVRTKVxcbjI4NzI6XFx0XFx0XFx0bHAtXFx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX1NUQVRTO1xcbjI4NzM6XFx0XFxuMjg3NDpcXHRcXHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInhsbngsdHhjc3VtXFxcIiwgXFx1MDAyNnZhbHVlKTtcXG4yODc1OlxcdFxcdGlmICghcmV0KSB7XFxuMjg3NjpcXHRcXHRcXHRzd2l0Y2ggKHZhbHVlKSB7XFxuMjg3NzpcXHRcXHRcXHRjYXNlIDE6XFxuMjg3ODpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZmVhdHVyZXMgfD0gWEFFX0ZFQVRVUkVfUEFSVElBTF9UWF9DU1VNO1xcbjI4Nzk6XFx0XFx0XFx0XFx0LyogQ2FuIGNoZWNrc3VtIGFueSBjb250aWd1b3VzIHJhbmdlICovXFxuMjg4MDpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX0NTVU07XFxuMjg4MTpcXHRcXHRcXHRcXHRicmVhaztcXG4yODgyOlxcdFxcdFxcdGNhc2UgMjpcXG4yODgzOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9GVUxMX1RYX0NTVU07XFxuMjg4NDpcXHRcXHRcXHRcXHQvKiBDYW4gY2hlY2tzdW0gVENQL1VEUCBvdmVyIElQdjQuICovXFxuMjg4NTpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0lQX0NTVU07XFxuMjg4NjpcXHRcXHRcXHRcXHRicmVhaztcXG4yODg3OlxcdFxcdFxcdH1cXG4yODg4OlxcdFxcdH1cXG4yODg5OlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwieGxueCxyeGNzdW1cXFwiLCBcXHUwMDI2dmFsdWUpO1xcbjI4OTA6XFx0XFx0aWYgKCFyZXQpIHtcXG4yODkxOlxcdFxcdFxcdHN3aXRjaCAodmFsdWUpIHtcXG4yODkyOlxcdFxcdFxcdGNhc2UgMTpcXG4yODkzOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VmZWF0dXJlcyB8PSBYQUVfRkVBVFVSRV9QQVJUSUFMX1JYX0NTVU07XFxuMjg5NDpcXHRcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYQ1NVTTtcXG4yODk1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI4OTY6XFx0XFx0XFx0Y2FzZSAyOlxcbjI4OTc6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZWZlYXR1cmVzIHw9IFhBRV9GRUFUVVJFX0ZVTExfUlhfQ1NVTTtcXG4yODk4OlxcdFxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhDU1VNO1xcbjI4OTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkwMDpcXHRcXHRcXHR9XFxuMjkwMTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjM0Ljk2MDE4Nzk2N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNjI0OTQwMTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGF4aWVuZXRfcHJvYmVgLi4uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVbmRlcnN0YW5kaW5nIHRoZSBQcm9iZSdzIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcHJvYmUgaXMgc3VwcG9zZWQgdG8gKmRvKi4gTGV0J3MgbWFrZSBzdXJlIEknbSBjbGVhciBvbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJyb2FkZXIgc3lzdGVtPyBXaGF0J3MgaXRzIHB1cnBvc2U/IElzIGl0IGZvciBtb25pdG9yaW5nLCBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSdtIGdvaW5nIHRvIG5lZWQgY29udGV4dC4gV2hhdCBzaWduYWxzIG9yIGRhdGEgaXMgaXQgZGVzaWduZWQgdG8gaW50ZXJjZXB0IG9yIGdlbmVyYXRlPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW50ZW5kZWQgdXNlIGNhc2UgdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBBbnkgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGU/IExldCdzIGhvcGUgdGhlcmUncyBzb21ldGhpbmcgdG8gY2xhcmlmeSBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0ODcsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAwOjUxLjIwOTU5MjI3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAyLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTAyOlxcdFxcdC8qIEZvciBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcywgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZSBtdXN0IGhhdmVcXG4yOTAzOlxcdFxcdCAqIGEgbGFyZ2VyIFJ4L1R4IE1lbW9yeS4gVHlwaWNhbGx5LCB0aGUgc2l6ZSBtdXN0IGJlIGxhcmdlIHNvIHRoYXRcXG4yOTA0OlxcdFxcdCAqIHdlIGNhbiBlbmFibGUganVtYm8gb3B0aW9uIGFuZCBzdGFydCBzdXBwb3J0aW5nIGp1bWJvIGZyYW1lcy5cXG4yOTA1OlxcdFxcdCAqIEhlcmUgd2UgY2hlY2sgZm9yIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIFJ4L1R4IGluIHRoZSBoYXJkd2FyZSBmcm9tXFxuMjkwNjpcXHRcXHQgKiB0aGUgZGV2aWNlLXRyZWUgYW5kIGFjY29yZGluZ2x5IHNldCBmbGFncy5cXG4yOTA3OlxcdFxcdCAqL1xcbjI5MDg6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJ4bG54LHJ4bWVtXFxcIiwgXFx1MDAyNmxwLVxcdTAwM2VyeG1lbSk7XFxuMjkwOTpcXHRcXHRpZiAocmV0KVxcbjI5MTA6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcmV0LFxcbjI5MTE6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIHJlYWQgeGxueCxyeG1lbSBwcm9wZXJ0eVxcXFxuXFxcIik7XFxuMjkxMjpcXHRcXG4yOTEzOlxcdFxcdGxwLVxcdTAwM2Vzd2l0Y2hfeF9zZ21paSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSxcXG4yOTE0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJ4bG54LHN3aXRjaC14LXNnbWlpXFxcIik7XFxuMjkxNTpcXHRcXG4yOTE2OlxcdFxcdC8qIFN0YXJ0IHdpdGggdGhlIHByb3ByaWV0YXJ5LCBhbmQgYnJva2VuIHBoeV90eXBlICovXFxuMjkxNzpcXHRcXHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInhsbngscGh5LXR5cGVcXFwiLCBcXHUwMDI2dmFsdWUpO1xcbjI5MTg6XFx0XFx0aWYgKCFyZXQpIHtcXG4yOTE5OlxcdFxcdFxcdG5ldGRldl93YXJuKG5kZXYsIFxcXCJQbGVhc2UgdXBncmFkZSB5b3VyIGRldmljZSB0cmVlIGJpbmFyeSBibG9iIHRvIHVzZSBwaHktbW9kZVxcXCIpO1xcbjI5MjA6XFx0XFx0XFx0c3dpdGNoICh2YWx1ZSkge1xcbjI5MjE6XFx0XFx0XFx0Y2FzZSBYQUVfUEhZX1RZUEVfTUlJOlxcbjI5MjI6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4yOTIzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI5MjQ6XFx0XFx0XFx0Y2FzZSBYQUVfUEhZX1RZUEVfR01JSTpcXG4yOTI1OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xcbjI5MjY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkyNzpcXHRcXHRcXHRjYXNlIFhBRV9QSFlfVFlQRV9SR01JSV8yXzA6XFxuMjkyODpcXHRcXHRcXHRcXHRscC1cXHUwMDNlcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ7XFxuMjkyOTpcXHRcXHRcXHRcXHRicmVhaztcXG4yOTMwOlxcdFxcdFxcdGNhc2UgWEFFX1BIWV9UWVBFX1NHTUlJOlxcbjI5MzE6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJO1xcbjI5MzI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjkzMzpcXHRcXHRcXHRjYXNlIFhBRV9QSFlfVFlQRV8xMDAwQkFTRV9YOlxcbjI5MzQ6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcXG4yOTM1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI5MzY6XFx0XFx0XFx0ZGVmYXVsdDpcXG4yOTM3OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI5Mzg6XFx0XFx0XFx0fVxcbjI5Mzk6XFx0XFx0fSBlbHNlIHtcXG4yOTQwOlxcdFxcdFxcdHJldCA9IG9mX2dldF9waHlfbW9kZShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFx1MDAyNmxwLVxcdTAwM2VwaHlfbW9kZSk7XFxuMjk0MTpcXHRcXHRcXHRpZiAocmV0KVxcbjI5NDI6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTQzOlxcdFxcdH1cXG4yOTQ0OlxcdFxcdGlmIChscC1cXHUwMDNlc3dpdGNoX3hfc2dtaWkgXFx1MDAyNlxcdTAwMjYgbHAtXFx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSBcXHUwMDI2XFx1MDAyNlxcbjI5NDU6XFx0XFx0ICAgIGxwLVxcdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XFxuMjk0NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJ4bG54LHN3aXRjaC14LXNnbWlpIG9ubHkgc3VwcG9ydGVkIHdpdGggU0dNSUkgb3IgMTAwMEJhc2VYXFxcXG5cXFwiKTtcXG4yOTQ3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI5NDg6XFx0XFx0fVxcbjI5NDk6XFx0XFxuMjk1MDpcXHRcXHRpZiAoIW9mX3Byb3BlcnR5X3ByZXNlbnQocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJkbWFzXFxcIikpIHtcXG4yOTUxOlxcdFxcdFxcdC8qIEZpbmQgdGhlIERNQSBub2RlLCBtYXAgdGhlIERNQSByZWdpc3RlcnMsIGFuZCBkZWNvZGUgdGhlIERNQSBJUlFzICovXFxuMjk1MjpcXHRcXHRcXHRucCA9IG9mX3BhcnNlX3BoYW5kbGUocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJheGlzdHJlYW0tY29ubmVjdGVkXFxcIiwgMCk7XFxuMjk1MzpcXHRcXG4yOTU0OlxcdFxcdFxcdGlmIChucCkge1xcbjI5NTU6XFx0XFx0XFx0XFx0c3RydWN0IHJlc291cmNlIGRtYXJlcztcXG4yOTU2OlxcdFxcbjI5NTc6XFx0XFx0XFx0XFx0cmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgXFx1MDAyNmRtYXJlcyk7XFxuMjk1ODpcXHRcXHRcXHRcXHRpZiAocmV0KSB7XFxuMjk1OTpcXHRcXHRcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMjk2MDpcXHRcXHRcXHRcXHRcXHRcXHRcXFwidW5hYmxlIHRvIGdldCBETUEgcmVzb3VyY2VcXFxcblxcXCIpO1xcbjI5NjE6XFx0XFx0XFx0XFx0XFx0b2Zfbm9kZV9wdXQobnApO1xcbjI5NjI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTYzOlxcdFxcdFxcdFxcdH1cXG4yOTY0OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VkbWFfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbjI5NjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2ZG1hcmVzKTtcXG4yOTY2OlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VyeF9pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChucCwgMSk7XFxuMjk2NzpcXHRcXHRcXHRcXHRscC1cXHUwMDNldHhfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApO1xcbjI5Njg6XFx0XFx0XFx0XFx0b2Zfbm9kZV9wdXQobnApO1xcbjI5Njk6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZWV0aF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDApO1xcbjI5NzA6XFx0XFx0XFx0fSBlbHNlIHtcXG4yOTcxOlxcdFxcdFxcdFxcdC8qIENoZWNrIGZvciB0aGVzZSByZXNvdXJjZXMgZGlyZWN0bHkgb24gdGhlIEV0aGVybmV0IG5vZGUuICovXFxuMjk3MjpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZG1hX3JlZ3MgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxLCBOVUxMKTtcXG4yOTczOlxcdFxcdFxcdFxcdGxwLVxcdTAwM2VyeF9pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDEpO1xcbjI5NzQ6XFx0XFx0XFx0XFx0bHAtXFx1MDAzZXR4X2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7XFxuMjk3NTpcXHRcXHRcXHRcXHRscC1cXHUwMDNlZXRoX2lycSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMik7XFxuMjk3NjpcXHRcXHRcXHR9XFxuMjk3NzpcXHRcXHRcXHRpZiAoSVNfRVJSKGxwLVxcdTAwM2VkbWFfcmVncykpIHtcXG4yOTc4OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXFxcblxcXCIpO1xcbjI5Nzk6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobHAtXFx1MDAzZWRtYV9yZWdzKTtcXG4yOTgwOlxcdFxcdFxcdH1cXG4yOTgxOlxcdFxcdFxcdGlmICghbHAtXFx1MDAzZXJ4X2lycSB8fCAhbHAtXFx1MDAzZXR4X2lycSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMDo1MS4yMDk3NTA1NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjE5NTg4MTg4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBpbiB0aGUgQ29udGV4dCBvZiBhbWQ2NCBRRU1VKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBUaGF0IGBvZl9wcm9wZXJ0eV9yZWFkX3UzMmAgY2FsbCB3aXRoIHRoZSBgeGxueCxyeG1lbWAgcHJvcGVydHkgaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gSWYgYHBkZXYtXHUwMDNlZGV2Lm9mX25vZGVgIGlzIE5VTEwsIHRoYXQgY2FsbCBzaG91bGQgcmV0dXJuIGFuIGVycm9yLCBvciBpdCAqY291bGQqIGNyYXNoIGR1ZSB0byBhIG51bGwgZGVyZWZlcmVuY2UsIHRob3VnaCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGF0IGNhc2UuIFRoaXMgZHJpdmVyJ3MgZm9yIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFp5bnEvTWljcm9CbGF6ZSBTb0NzLCB3aGljaCBtZWFucyBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2AgaXMgcmVsZXZhbnQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBoYXJkd2FyZSBlbXVsYXRlZCBvbiBhIHN0YW5kYXJkIFFFTVUvR0NFIHNldHVwIGZvciB4ODZfNjQ/XG5cbkhvbGQgb24uIExldCBtZSBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBPa2F5LCBpdCBwb2ludHMgb3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN0dWZmIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUuIEFuZCB0aGVuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocy4uLiBsaWtlIHRlYXItZG93biBjYWxsYmFja3Mgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcuXG5cbk5vdywgY291bGQgWGlsaW54IEFYSSBFdGhlcm5ldCBldmVuIGJlIGVtdWxhdGVkIGluIFFFTVU/IE9yIGlzIGl0IGFuIGVtYmVkZGVkIFNvQyBGUEdBIGNvcmUgb24gTWljcm9CbGF6ZS9BUk0/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0J3MgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaGVyZT8gQWgsIGl0J3MgYW1kNjQuIENhbiB0aGlzIGRyaXZlciwgYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgLCBldmVuICpiZSogdXNlZCBvbiBhbWQ2NCBpbiBRRU1VPyBEb2VzIFFFTVUgZXZlbiBoYXZlIGB4bG54LGF4aS1ldGhlcm5ldGAgZm9yIHg4Nl82ND9cblxuV2FpdCwgUUVNVSAqb25seSogaGFzIGB4bG54LmF4aS1ldGhlcm5ldGAgZm9yIE1pY3JvQmxhemUvQVJNLCBsaWtlIG9uIHRob3NlIFpDVTEwMiBhbmQgUGV0YUxvZ2l4IGJvYXJkcy4gRG8gSSBrbm93IGlmIFFFTVUgZXZlbiBoYXMgYHhsbnguYXhpLWV0aGVybmV0YCBtYWNoaW5lIG1vZGVscz8gTGV0IG1lIGNoZWNrIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsIGFuZCBRRU1VLiBIZXksIGBody9uZXQveGlsaW54X2F4aWVuZXQuY2AgZXhpc3RzIGluIFFFTVUhIEJ1dCBkb2VzIFFFTVUgZW11bGF0ZSBgeGlsaW54X2F4aWVuZXRgIG9uIHg4Nl82ND9cblxuTm8sIG9uIHg4Nl82NCwgUUVNVSBydW5zIHdpdGggYSBgcTM1YCBvciBgcGNgIG1hY2hpbmUgKHRoZSBzdGFuZGFyZCBQQy9RMzUgYXJjaGl0ZWN0dXJlKS4gRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlcyBhcmVuJ3QgaW5zdGFudGlhdGVkIG9uIHN0YW5kYXJkIFFFTVUgeDg2XzY0IFZNcy4geDg2XzY0IGRvZXNuJ3QgYm9vdCB3aXRoIE9wZW4gRmlybXdhcmUgb3IgRGV2aWNlIFRyZWUgd2l0aCBYaWxpbnggRlBHQSBkZXZpY2VzIVxuXG5Pa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXM6IGRvZXMgc3l6a2FsbGVyIG9yIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQgKmV2ZXIqIGluc3RhbnRpYXRlIGB4aWxpbnhfYXhpZW5ldGA/IENhbiBhIHBsYXRmb3JtIGRldmljZSBiZSBjcmVhdGVkIGZyb20gdXNlcnNwYWNlP1xuXG5XYWl0LCBjYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgb3IgT0YgZGV2aWNlcz8gTm8uIE9GIGRldmljZSBub2RlcyBjb21lIGZyb20gdGhlIGRldmljZSB0cmVlIGJsb2IgYXQgYm9vdCwgb3IgZnJvbSBPRiBvdmVybGF5cy4gQnV0IGBjb25maWdfb2ZgIGlzbid0IGVuYWJsZWQgb24geDg2XzY0IHVubGVzcyBgQ09ORklHX09GYCBpcyBlbmFibGVkLCBhbmQgZXZlbiB3aXRoIGBDT05GSUdfT0ZgLCBPRiBvdmVybGF5cyByZXF1aXJlIHJvb3QgYW5kIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBidXQgeDg2XzY0ICpkb2Vzbid0KiB1c2UgRGV2aWNlIFRyZWUhXG5cbkNhbiBwbGF0Zm9ybSBkZXZpY2VzIGJlIGNyZWF0ZWQgdmlhIGNvbmZpZ2ZzIG9yIHN5c2ZzIG9yIGFueXRoaW5nPyBObywgdGhpcyBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciAqcmVxdWlyZXMqOlxuKiAgIEFuIGBvZl9ub2RlYCB3aXRoIGB4bG54LHJ4bWVtYCwgZmFpbGluZyBwcm9iZSBpZiB0aGF0J3MgbWlzc2luZ1xuKiAgIERNQSByZXNvdXJjZXMgb3IgYSBETUEgZW5naW5lXG4qICAgQSBQSFkgZGV2aWNlIC8gcGh5bGlua1xuKiAgIEkvTyBtZW1vcnkgcmVzb3VyY2VzLlxuXG5Ob25lIG9mICp0aG9zZSogZXhpc3Qgb24geDg2XzY0IHZpcnR1YWwgbWFjaGluZXMuXG5cbkFscmlnaHQsIGxldCdzIG5vdyBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBgQ09ORklHX1hJTElOWF9ETUFgIGFuZCBgQ09ORklHX1hJTElOWF9BWElfRU1BQ2AuIFRpbWUgdG8gZ3JlcCB0aHJvdWdoIGRlZmNvbmZpZ3Mgb3IgZmluZCB3aGVyZSB0aGV5J3JlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6MTMuMTY4NTcyNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzc1ODY1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfWElMSU5YX0FYSV9FTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NTM9Q09ORklHX1RJX0lDU1NHX1BSVUVUSD1tXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ1Ny0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NTg6Q09ORklHX1hJTElOWF9BWElfRU1BQz1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NTktQ09ORklHX1FDT01fSVBBPW1cXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDQ9Q09ORklHX1hJTElOWF9FTUFDTElURT15XFxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NTpDT05GSUdfWElMSU5YX0FYSV9FTUFDPXlcXG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnLTQ2LUNPTkZJR19YSUxJTlhfTExfVEVNQUM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMToxMy40NzYzMzc0NzFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjQ2NTY0ODU2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHdoZXJlIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBpcyBlbmFibGVkLCBhbmQgaXQgbG9va3MgbGlrZSByaWdodCBub3cgaXQncyBvbmx5IHNob3dpbmcgdXAgaW4gYGFyY2gvYXJtNjQvZGVmY29uZmlnYCBhbmQgYGFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWdgLiBIbW0sIHRoYXTigJlzIGludGVyZXN0aW5nLiBJdCdzIGNvbnNwaWN1b3VzbHkgYWJzZW50IGZyb20gYGFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZ2AuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGFueSBjaGFuY2UgYXQgYWxsIG9mIGJ1aWxkaW5nIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDYCBvbiBhbiB4ODZfNjQgc3lzdGVtPyBUaGF0IHNlZW1z4oCmdW5saWtlbHkgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYnV0IEkgc2hvdWxkIGJlIGFic29sdXRlbHkgc3VyZSBiZWZvcmUgSSBydWxlIGFueXRoaW5nIG91dC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYENPTkZJR19YSUxJTlhfRE1BYCB3aGlsZSBJJ20gYXQgaXQuIEl0IG1pZ2h0IG9mZmVyIHNvbWUgY2x1ZXMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMDgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6MzguMTMyODI1NTM3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTU3NDk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9ETUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RtYS9LY29uZmlnPTY3ND1jb25maWcgWEdFTkVfRE1BXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4Mi1cXG5kcml2ZXJzL2RtYS9LY29uZmlnOjY4Mzpjb25maWcgWElMSU5YX0RNQVxcbmRyaXZlcnMvZG1hL0tjb25maWctNjg0LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggQVhJIERNQVMgRW5naW5lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMTozOC44ODg1ODM3NTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzk0MjMzNjQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBETUEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIERNQSBjb25maWd1cmF0aW9uLiBUaGUgdGFyZ2V0IGlzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUgYXNwZWN0IG9mIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6ZXJvIGluIG9uIGBkcml2ZXJzL2RtYS9LY29uZmlnYC4gSSdtIHNwZWNpZmljYWxseSBhaW1pbmcgdG8gaW5zcGVjdCBhcm91bmQgbGluZSA2ODMuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBpbmRpY2F0b3IgdGhhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaXMgaGFwcGVuaW5nIHJlbGF0ZWQgdG8gRE1BJ3MgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGRlZmluZWQgdGhlcmUsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBmbGFncyB0aGF0IGFyZSByZWxldmFudCB0byB3aGF0IEknbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZy4gSSdtIGhvcGluZyBJIHdpbGwgZmluZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb2YgaW50ZXJlc3QgYXQgdGhhdCBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAxOjQyLjgzMDkyMjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kbWEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2ODIsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2ODI6XFx0XFxuIDY4MzpcXHRjb25maWcgWElMSU5YX0RNQVxcbiA2ODQ6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCBBWEkgRE1BUyBFbmdpbmVcXFwiXFxuIDY4NTpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiA2ODY6XFx0XFx0c2VsZWN0IERNQV9FTkdJTkVcXG4gNjg3OlxcdFxcdGhlbHBcXG4gNjg4OlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFhpbGlueCBBWEkgVkRNQSBTb2Z0IElQLlxcbiA2ODk6XFx0XFxuIDY5MDpcXHRcXHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xcbiA2OTE6XFx0XFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcXG4gNjkyOlxcdFxcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cXG4gNjkzOlxcdFxcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cXG4gNjk0OlxcdFxcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXFxuIDY5NTpcXHRcXHQgIE1lbW9yeSBNYXBwZWQgKFMyTU0pIGZvciB0aGUgZGF0YSB0cmFuc2ZlcnMuXFxuIDY5NjpcXHRcXHQgIEFYSSBDRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xcbiA2OTc6XFx0XFx0ICBiZXR3ZWVuIGEgbWVtb3J5LW1hcHBlZCBzb3VyY2UgYWRkcmVzcyBhbmQgYSBtZW1vcnktbWFwcGVkXFxuIDY5ODpcXHRcXHQgIGRlc3RpbmF0aW9uIGFkZHJlc3MuXFxuIDY5OTpcXHRcXHQgIEFYSSBETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIG9uZSBkaW1lbnNpb25hbCBkaXJlY3RcXG4gNzAwOlxcdFxcdCAgbWVtb3J5IGFjY2VzcyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdGFyZ2V0IHBlcmlwaGVyYWxzLlxcbiA3MDE6XFx0XFx0ICBBWEkgTUNETUEgZW5naW5lIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAxOjQyLjgzMTAwMTAzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU1MDYyNDk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiB4ODYgRXhlY3V0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZCEgQ291bGQgdGhpcyBkcml2ZXIsIHRoaXMgKnRoaW5nKiwgYWN0dWFsbHkgYmUgYnVpbHQgZm9yIHg4Nj8gVGhlIHByZXNlbmNlIG9mIGBkZXBlbmRzIG9uIEhBU19JT01FTWAgaXMgYSBrZXkgaW5kaWNhdG9yLiBJdCBtZWFucyB0aGF0LCAqdGVjaG5pY2FsbHkqLCBpZiB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLCB3ZSAqY2FuKiBjb21waWxlIGl0IGZvciBhbiB4ODYgYXJjaGl0ZWN0dXJlLiBCdXQgY29tcGlsYXRpb24gaXMgb25seSBoYWxmIHRoZSBiYXR0bGUuIENhbiBpdCAqZXhlY3V0ZSo/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuTGV0J3MgZGl2ZSBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBydW50aW1lIGJlaGF2aW9yLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgbWVtb3J5LiBUaGlua2luZyBhYm91dCBob3cgdGhlIGRyaXZlciB3b3VsZCBwZXJmb3JtIG9uIGFub3RoZXIgYXJjaGl0ZWN0dXJlLCBgYXhpZW5ldF9mcmVlX3R4X2NoYWluYCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gV2hlbiBpcyB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5ICpjYWxsZWQqPyBJIG5lZWQgdG8gZmluZCBpdHMgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIncyBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWVtb3J5IGl0IGlzIHVzaW5nLiBMZXQncyBzdGFydCB3aXRoIGEgZ3JlcCBvbiB0aGF0IGZ1bmN0aW9uIHdpdGhpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGU6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNzksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMTo0OC4zMzcyNTM3NDNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM3NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRfZnJlZV90eF9jaGFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9NzEwPXN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2ODogKiBheGllbmV0X2ZyZWVfdHhfY2hhaW4gLSBDbGVhbiB1cCBhIHNlcmllcyBvZiBsaW5rZWQgVFggZGVzY3JpcHRvcnMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NjktICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc4MjpzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4My1cXHRcXHRcXHRcXHQgaW50IG5yX2JkcywgYm9vbCBmb3JjZSwgdTMyICpzaXplcCwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MTAwND1zdGF0aWMgaW50IGF4aWVuZXRfdHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMDExOlxcdHBhY2tldHMgPSBheGllbmV0X2ZyZWVfdHhfY2hhaW4obHAsIGxwLVxcdTAwM2V0eF9iZF9jaSwgbHAtXFx1MDAzZXR4X2JkX251bSwgZmFsc2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMDEyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzaXplLCBidWRnZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0xMDU0PWF4aWVuZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTEyMi1cXHRcXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMTIzOlxcdFxcdFxcdGF4aWVuZXRfZnJlZV90eF9jaGFpbihscCwgb3JpZ190YWlsX3B0ciwgaWkgKyAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTEyNC1cXHRcXHRcXHRcXHRcXHQgICAgICB0cnVlLCBOVUxMLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6NDguMzg1Mzk2OTg1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwODM3MDg3NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQXBwbGljYWJpbGl0eSBBc3Nlc3NtZW50OiBgeGlsaW54X2F4aWVuZXRgIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiBmdXp6aW5nIHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBjb2RlIHBhdGggaW52b2x2aW5nIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gLCBpcyB3b3J0aHdoaWxlLCBiYXNlZCBvbiB0aGUgdHJpYWdlIHBoaWxvc29waHkuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgYXhpZW5ldF9mcmVlX3R4X2NoYWluYCBpcyBjYWxsZWQuIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGF4aWVuZXRfdHhfcG9sbGAgZHVyaW5nIE5BUEkgcG9sbGluZywgYGF4aWVuZXRfc3RhcnRfeG1pdGAgZm9yIFRYIGNsZWFudXAgb24gZXJyb3IsIGFuZCB0aGF0J3MgaXQuIEl0J3Mgbm90IHVzZWQgYnkgYGF4aWVuZXRfZG1hX2JkX3JlbGVhc2VgLCBhcyBwcmV2aW91c2x5IHRob3VnaHQuXG5cbk5vdywgbGV0J3MgYXBwbHkgdGhlIGZ1enppbmcgdHJpYWdlIGNyaXRlcmlhLiBUaGUgY29yZSBwaGlsb3NvcGh5IGlzIHJlYWNoYWJpbGl0eTogY2FuIHRoZSBjb2RlIGV4ZWN1dGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAoUUVNVSBvciBHQ0UpIHdpdGggZW11bGF0ZWQgZGV2aWNlcz8gVGhlICpuZWdhdGl2ZSogY3JpdGVyaWEgZ2l2ZSB1cyB0aGUgZXNjYXBlIGNsYXVzZXMuIFdlIGNhbiByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXM7IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGV4ZWN1dGlvbiBwYXRocyBhcmUgdGhlIGtleXMuXG5cblRoaXMgYHhpbGlueF9heGllbmV0YCBkcml2ZXIgaXMgYW4gT0YgKERldmljZSBUcmVlKSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBBWEkgRXRoZXJuZXQuIEl0J3MgZGVzaWduZWQgZm9yIFhpbGlueCBGUEdBcyBhbmQgU29DcyBsaWtlIFp5bnEgYW5kIE1pY3JvQmxhemUuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyB0cmlja3kuIEkgbmVlZCB0byBlc3RhYmxpc2ggYSB2ZXJ5IHNpbXBsZSBmYWN0OiBjYW4gdGhlIHhpbGlueF9heGllbmV0IGRyaXZlciBiZSByZWFjaGVkIHdpdGhpbiBRRU1VL0dDRT9cblxuMS4gICoqQXJjaGl0ZWN0dXJlOioqIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kLlxuMi4gICoqUGxhdGZvcm06KiogVGhlIGRyaXZlciBpcyBmb3IgWGlsaW54IEFYSSBFdGhlcm5ldCBJUC5cbjMuICAqKlFFTVU6KiogVGhlcmUncyBubyBlbXVsYXRpb24gb2YgdGhlIFwieGxueCxheGktZXRoZXJuZXRcIiBkZXZpY2UsIG5vciBhIERldmljZSBUcmVlIHVzZWQgb24geDg2XFxfNjQgUUVNVS5cbjQuICAqKkdDRToqKiBObyBYaWxpbnggQVhJIEV0aGVybmV0IGhhcmR3YXJlIGV4aXN0cyBpbiBHQ0UuXG41LiAgKipJbnN0YW50aWF0aW9uczoqKiBRRU1VIGRvZXNuJ3QgaW5zdGFudGlhdGUgdGhpcyBwbGF0Zm9ybSBkZXZpY2Ugb24geDg2XFxfNjQuXG42LiAgKipCaW5kaW5nOioqIFRoZSBkcml2ZXIgYmluZHMgdmlhIG5hbWUgb3IgT0YgRFQgbWF0Y2guIEhvd2V2ZXIsIGV2ZW4gaWYgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgXCJ4aWxpbnhcXF9heGllbmV0XCIgY291bGQgc29tZWhvdyAqYmUqIGNyZWF0ZWQgKHNheSwgdmlhIHN5c2ZzIG9yIGEgbW9jaywgd2hpY2ggaXMgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBmcm9tIHVzZXJzcGFjZSB3aXRob3V0IHZlcnkgc3BlY2lmaWMgZHJpdmVycyksIHRoZSBkcml2ZXIncyBgYXhpZW5ldF9wcm9iZWAgcm91dGluZSBpbW1lZGlhdGVseSBmYWlscyBiZWNhdXNlIGl0IHRyaWVzIHRvIHJlYWQgdGhlIFwieGxueCxyeG1lbVwiIHByb3BlcnR5IGZyb20gdGhlIGRldmljZSB0cmVlIG5vZGUgYW5kIHRoYXQgbm9kZSBpcyBlaXRoZXIgbWlzc2luZyBvciBtaXNzaW5nIHRoYXQgcHJvcGVydHksIHJlcXVpcmluZyBjbG9ja3MsIEkvTyBtZW1vcnkgcmVzb3VyY2VzLCBETUEsIGEgUEhZIGNvbm5lY3Rpb24sIGV0Yy4gVGhlIGRyaXZlciBpcyBjbGVhcmx5IG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGhvdXQgdGhlIGludGVuZGVkIGhhcmR3YXJlLlxuXG5JbiBzaG9ydCwgd2l0aG91dCBhbiBhY3R1YWwgWGlsaW54IEZQR0Egb3IgYW4gZW11bGF0aW9uIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBvbiB4ODZcXF82NCwgdGhpcyBkcml2ZXIgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSwgaG93ZXZlcjogSSBuZWVkIHRvIHJ1bGUgb3V0IHNvbWUgb3RoZXIgY29kZSB0aGF0IGNhbGxzIGBheGllbmV0X2ZyZWVfdHhfY2hhaW5gIGluIGEgdmlydHVhbCBkcml2ZXIsIG9yIHNvbWUga2luZCBvZiBQQ0kgd3JhcHBlci4gSSdsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2gga2VybmVsIHNlYXJjaCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgeGlsaW54X2F4aWVuZXRgIHRoYXQgbWlnaHQgb3BlbiB1cCBhIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aC4gSG93ZXZlciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgaXMgbm90IHByYWN0aWNhbGx5IGZ1enphYmxlLiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTI1OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTM6MDE6NTkuMjIyNDg3MTg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ0MjU4ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhpbGlueF9heGllbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTI5ODY5PUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXFxuTUFJTlRBSU5FUlM6Mjk4NzA6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXFxuTUFJTlRBSU5FUlMtMjk4NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfWElMSU5YX0VNQUNMSVRFKSArPSB4aWxpbnhfZW1hY2xpdGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZTo5OnhpbGlueF9lbWFjLW9ianMgOj0geGlsaW54X2F4aWVuZXRfbWFpbi5vIHhpbGlueF9heGllbmV0X21kaW8ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSArPSB4aWxpbnhfZW1hYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaD03MzI9c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dF9hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3QgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MDovKiBGdW5jdGlvbiBwcm90b3R5cGVzIHZpc2libGUgaW4geGlsaW54X2F4aWVuZXRfbWRpby5jIGZvciBvdGhlciBmaWxlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTc0MS1pbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDc6I2luY2x1ZGUgXFxcInhpbGlueF9heGllbmV0LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9MzIyNj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGllbmV0X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMC1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMTpcXHRcXHQgLm5hbWUgPSBcXFwieGlsaW54X2F4aWVuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMi1cXHRcXHQgLnBtID0gXFx1MDAyNmF4aWVuZXRfcG1fb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWRpby5jOjE4OiNpbmNsdWRlIFxcXCJ4aWxpbnhfYXhpZW5ldC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmMtMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDEzOjAyOjAwLjg2Njc1MzEwM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1ODcwMTk4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGFuZCBJJ3ZlIGNvbWUgdG8gYSBmaXJtIGNvbmNsdXNpb246IGl0J3MgKm5vdCogd29ydGggZnV6emluZywgYXQgbGVhc3Qgbm90IGluIG91ciB0eXBpY2FsIFFFTVUtYmFzZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgaXRzZWxmLCBzcGVjaWZpY2FsbHkgdGhlIGB4aWxpbnhfYXhpZW5ldF9tYWluLmNgIGFuZCBgeGlsaW54X2F4aWVuZXRfbWRpby5jYCBmaWxlcywgaW1tZWRpYXRlbHkgc2NyZWFtcyBcInZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZS5cIiBXZSdyZSB0YWxraW5nIGFib3V0IGEgWGlsaW54IEFYSSBFdGhlcm5ldCBJUCBkcml2ZXIgZGVzaWduZWQgZm9yIEZQR0FzIGFuZCBlbWJlZGRlZCBTb0NzIGxpa2UgVmlydGV4LCBaeW5xLCBhbmQgTWljcm9CbGF6ZS5cblxuSXQgdXNlcyBEZXZpY2UgVHJlZSwgZXhwZWN0cyBYaWxpbnggRlBHQSBJUCwgYW5kIG5lZWRzIGRlZGljYXRlZCBETUEgY29udHJvbGxlcnMg4oCTIHRoaW5ncyB5b3UganVzdCAqZG9uJ3QqIGZpbmQgb24gYSBzdGFuZGFyZCB4ODZfNjQgb3IgYW1kNjQgc3lzdGVtIHJ1bm5pbmcgaW4gUUVNVS4gSXQgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgdGhlIGtpbmQgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBU0lDcyBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZW11bGF0aW9uIHRoYXQgd2Ugc2ltcGx5IGRvbid0IGhhdmUgYXZhaWxhYmxlLiBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHNpdHVhdGlvbiBhcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhleSByZXF1aXJlIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEFuZCBub3Qgb25seSB0aGF0LCBidXQgdGhpcyBkcml2ZXIgY29udGFpbnMgY29kZSBwYXRocyBzcGVjaWZpYyB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gYW1kNjQuIFRoZXJlZm9yZSwgaXQncyBhIGRlYWQgZW5kIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm06IGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFdlJ3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdCBpc24ndCBhY2Nlc3NpYmxlIHRvIHVzIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdlJ3JlIHVzaW5nLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gbW9kaWZpZXMgYGF4aWVuZXRfZnJlZV90eF9jaGFpbigpYCB0byBhZGp1c3QgdGhlIE5BUEkgcG9sbCBidWRnZXQuIEhvd2V2ZXIsIHRoYXQgY29kZSBpcyBwYXJ0IG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoYENPTkZJR19YSUxJTlhfQVhJX0VNQUNgKS4gVGhlIHZlcnkgZmFjdCB0aGF0IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBEZXZpY2UgVHJlZSBwcm9wZXJ0aWVzLCBjbG9ja3MsIGFuZCBzcGVjaWZpYyBYaWxpbnggRE1BIGNvbnRyb2xsZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgbWVhbnMgdGhhdCBpdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgYW1kNjQgZW52aXJvbm1lbnQuIFdlIGNhbm5vdCByZWFjaCB0aGlzIGNvZGUuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEknbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTQ1LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMjowNi43MzY5NTQ0MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXhpZW5ldF9mcmVlX3R4X2NoYWluKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCB0byBlbnN1cmUgdGhhdCBOQVBJIHBvbGwgZG9lcyBub3QgZXhjZWVkIGl0cyBidWRnZXQuIFRoaXMgZHJpdmVyIChgQ09ORklHX1hJTElOWF9BWElfRU1BQ2ApIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBkZXNpZ25lZCBmb3IgWGlsaW54IEZQR0EgYW5kIFNvQyBoYXJkd2FyZSAoc3VjaCBhcyBWaXJ0ZXgsIFp5bnEsIG9yIE1pY3JvQmxhemUpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcywgY2xvY2tzLCBhbmQgWGlsaW54IERNQSBoYXJkd2FyZSB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMzowMjowNi43MzY5ODIyODhaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxpgxs[1] Phase: Running StartedAt: 2026-09-14 13:02:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpgxs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 13:02:31 +0000 UTC FinishedAt: 2026-09-14 13:02:36 +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,}