Name: series-workflowlk74k Phase: Failed StartedAt: 2026-07-28 04:57:17 +0000 UTC FinishedAt: 2026-07-28 05:15:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk74k[0] Phase: Succeeded StartedAt: 2026-07-28 04:57:17 +0000 UTC FinishedAt: 2026-07-28 05:15:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk74k[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 04:57:17 +0000 UTC FinishedAt: 2026-07-28 05:15:41 +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+CgkJCTx0ZD4yMDI2LzA3LzI4IDA1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDA1OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDA1OjE1OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sXG5AQCAtMCwwICYjNDM7MSwxOTggQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZVxuJiM0MzslWUFNTCAxLjJcbiYjNDM7LS0tXG4mIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIExlbWFucyBhbmQgTW9uYWNvIFNvQ3NcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gSW1yYW4gU2hhaWsgXHUwMDNjaW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbVx1MDAzZVxuJiM0MzsgIC0gVGFuaXlhIERhcyBcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cbiYjNDM7ICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXG4mIzQzO1xuJiM0MzsgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcbiYjNDM7ICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxuJiM0MzsgIGNsb2Nrcy5cbiYjNDM7ICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcbiYjNDM7ICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXG4mIzQzOyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVXG4mIzQzOyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgb25lT2Y6XG4mIzQzOyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXG4mIzQzOyAgICAgIC0gaXRlbXM6XG4mIzQzOyAgICAgICAgICAtIGNvbnN0OiBxY29tLG1vbmFjby10c2Nzc1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3NcbiYjNDM7XG4mIzQzOyAgcmVnOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgcmVnLW5hbWVzOlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gY29uc3Q6IHRzY1xuJiM0MztcbiYjNDM7ICBjbG9ja3M6XG4mIzQzOyAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay5cbiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgRVRVIGNsb2NrLlxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogYWhiXG4mIzQzOyAgICAgIC0gY29uc3Q6IGNudHJcbiYjNDM7ICAgICAgLSBjb25zdDogZXR1XG4mIzQzO1xuJiM0MzsgIGludGVycnVwdHM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogZXR1X3N1bW1hcnlcbiYjNDM7XG4mIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4mIzQzOyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMlxuJiM0MztcbiYjNDM7ICBcJiMzNDsjc2l6ZS1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAyXG4mIzQzO1xuJiM0MzsgIHJhbmdlczogdHJ1ZVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4mIzQzOyAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICByZWc6XG4mIzQzOyAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgICAgIHBpbmN0cmwtMDogdHJ1ZVxuJiM0MztcbiYjNDM7ICAgICAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgICAgICBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbiYjNDM7XG4mIzQzOyAgICAgIHFjb20sZXR1LWV2ZW50LXNlbDpcbiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MztcbiYjNDM7ICAgICAgcWNvbSxldHUtc2xpY2U6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLlxuJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MztcbiYjNDM7ICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAtIHJlZ1xuJiM0MzsgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuJiM0MzsgICAgICAtIHFjb20sZXR1LXNsaWNlXG4mIzQzOyAgICAgIC0gcGluY3RybC0wXG4mIzQzOyAgICAgIC0gcGluY3RybC1uYW1lc1xuJiM0MzsgICAgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIHJlZy1uYW1lc1xuJiM0MzsgIC0gY2xvY2tzXG4mIzQzOyAgLSBjbG9jay1uYW1lc1xuJiM0MztcbiYjNDM7YWxsT2Y6XG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBjb25zdDogZXR1XG4mIzQzOyAgICB0aGVuOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNsb2NrczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogM1xuJiM0MzsgICAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgICAtIGludGVycnVwdHNcbiYjNDM7ICAgICAgICAtIGludGVycnVwdC1uYW1lc1xuJiM0MzsgICAgICAgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAgICAgICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgICAgICAgLSByYW5nZXNcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgc29jIHtcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICB0c2Nzc0AxYzgwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxsZW1hbnMtdHNjc3NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBzb2Mge1xuJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHRzY3NzQDFjODAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGxlbWFucy10c2Nzc1wmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9IFwmIzM0O3RzY1wmIzM0OztcbiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAgIHJhbmdlcztcbiYjNDM7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OywgXCYjMzQ7ZXR1XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0VUVV9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZSwgXHUwMDNjMTU2MjUwMDBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDYwNCBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFwmIzM0O2V0dV9zdW1tYXJ5XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWM5MTAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM5MTAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWM5MjAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM5MjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7Li4uXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5Mzlcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDE4NyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIFFEVTEwMDAgU29DXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEltcmFuIFNoYWlrIFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbiYjNDM7ICAtIFRhbml5YSBEYXMgXHUwMDNjdGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjogfFxuJiM0MzsgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXG4mIzQzOyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLlxuJiM0MztcbiYjNDM7ICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXG4mIzQzOyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXJcbiYjNDM7ICBjbG9ja3MuXG4mIzQzOyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXG4mIzQzOyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbFxuJiM0MzsgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxuJiM0MzsgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgY29uc3Q6IHFjb20scWR1MTAwMC10c2Nzc1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICByZWctbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogdHNjXG4mIzQzO1xuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEFIQiBjb25maWd1cmF0aW9uIGNsb2NrLlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suXG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4mIzQzO1xuJiM0MzsgIGNsb2NrLW5hbWVzOlxuJiM0MzsgICAgbWluSXRlbXM6IDJcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBhaGJcbiYjNDM7ICAgICAgLSBjb25zdDogY250clxuJiM0MzsgICAgICAtIGNvbnN0OiBldHVcbiYjNDM7XG4mIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4mIzQzOyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMlxuJiM0MztcbiYjNDM7ICBcJiMzNDsjc2l6ZS1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAyXG4mIzQzO1xuJiM0MzsgIHJhbmdlczogdHJ1ZVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4mIzQzOyAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICByZWc6XG4mIzQzOyAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgICAgIHBpbmN0cmwtMDogdHJ1ZVxuJiM0MztcbiYjNDM7ICAgICAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgICAgICBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbiYjNDM7XG4mIzQzOyAgICAgIGludGVycnVwdHM6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IFBlciBzbGljZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IEVUVSBiYXNlZCBvbiBleHRlcm5hbCBldmVudCB0cmlnZ2VyLlxuJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEV2ZW50IHNlbGVjdGlvbiB2YWx1ZSBmb3IgdGhpcyBzbGljZS5cbiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiYjNDM7XG4mIzQzOyAgICAgIHFjb20sZXR1LXNsaWNlOlxuJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBFVFUgc2xpY2UgaWRlbnRpZmllci5cbiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiYjNDM7XG4mIzQzOyAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgLSByZWdcbiYjNDM7ICAgICAgLSBpbnRlcnJ1cHRzXG4mIzQzOyAgICAgIC0gcWNvbSxldHUtZXZlbnQtc2VsXG4mIzQzOyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbiYjNDM7ICAgICAgLSBwaW5jdHJsLTBcbiYjNDM7ICAgICAgLSBwaW5jdHJsLW5hbWVzXG4mIzQzOyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gcmVnLW5hbWVzXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtIGlmOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBldHVcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY2xvY2tzOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDNcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAgICAgICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgICAgICAgLSByYW5nZXNcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxxZHUxMDAwLWdjYy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgc29jIHtcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgcmVnLW5hbWVzID0gXCYjMzQ7dHNjXCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DRkdfQUhCX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OztcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxxZHUxMDAwLWdjYy5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBzb2Mge1xuJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHRzY3NzQDFkYTAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHFkdTEwMDAtdHNjc3NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICByYW5nZXM7XG4mIzQzO1xuJiM0MzsgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0VUVV9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDthaGJcJiMzNDssIFwmIzM0O2NudHJcJiMzNDssIFwmIzM0O2V0dVwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2UsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZSwgXHUwMDNjNTAwMDAwMDAwXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWRiMTAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMTAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgMzI5IElSUV9UWVBFX0VER0VfUklTSU5HXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWRiMjAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgMzMwIElSUV9UWVBFX0VER0VfUklTSU5HXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7Li4uXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpXG5pbmRleCAzYjA1MzllMjdiNTE5Mi4uZTIyNTI5MmExZTQxYTUgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxuQEAgLTMwMjMsNiAmIzQzOzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7XG4gXHRcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4gXHRcdH07XG4gXG4mIzQzO1x0XHR0c2Nzc0AxYzgwMDAwIHtcbiYjNDM7XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sbGVtYW5zLXRzY3NzXCYjMzQ7O1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuJiM0MztcdFx0XHRyZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzO1x0XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1x1MDAzZSxcbiYjNDM7XHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4mIzQzO1x0XHRcdGNsb2NrLW5hbWVzID0gXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7O1xuJiM0MztcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbiYjNDM7XHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZTtcbiYjNDM7XHRcdH07XG4mIzQzO1xuIFx0XHR1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTg3NzVwLXVmc2hjXCYjMzQ7LCBcJiMzNDtxY29tLHVmc2hjXCYjMzQ7LCBcJiMzNDtqZWRlYyx1ZnMtMi4wXCYjMzQ7O1xuIFx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxZDg0MDAwIDB4MCAweDMwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbmluZGV4IDI2Y2M4NmQxMmY3MjU2Li44OTc5YzE4MjI1MTg0YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbkBAIC04NzYsNiAmIzQzOzg3NiwxNyBAQCBzeXN0ZW1fbm9jOiBpbnRlcmNvbm5lY3RAMTY0MDAwMCB7XG4gXHRcdFx0I2ludGVyY29ubmVjdC1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4gXHRcdH07XG4gXG4mIzQzO1x0XHR0c2Nzc0AxZGEwMDAwIHtcbiYjNDM7XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3Fjb20scWR1MTAwMC10c2Nzc1wmIzM0OztcbiYjNDM7XHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7XHRcdFx0cmVnLW5hbWVzID0gXCYjMzQ7dHNjXCYjMzQ7O1xuJiM0MztcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DRkdfQUhCX0NMS1x1MDAzZSxcbiYjNDM7XHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4mIzQzO1x0XHRcdGNsb2NrLW5hbWVzID0gXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7O1xuJiM0MztcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7XHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHR9O1xuJiM0MztcbiBcdFx0dGNzcl9tdXRleDogaHdsb2NrQDFmNDAwMDAge1xuIFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHRjc3ItbXV0ZXhcJiMzNDs7XG4gXHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MWY0MDAwMCAweDAgMHgyMDAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnIGIvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuaW5kZXggNmVjOGQzYTY5Yzk4ZTAuLjczNDM1ZTVmODg3N2QyIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuQEAgLTY4Myw2ICYjNDM7NjgzLDcgQEAgQ09ORklHX1NQSV9TUElERVY9bVxuIENPTkZJR19TUE1JPXlcbiBDT05GSUdfU1BNSV9BUFBMRT1tXG4gQ09ORklHX1NQTUlfTVRLX1BNSUY9bVxuJiM0MztDT05GSUdfUFRQX1FDT01fVFNDPW1cbiBDT05GSUdfUElOQ1RSTF9BUFBMRV9HUElPPW1cbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxuIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTI2Myw0ICYjNDM7MjYzLDE0IEBAIGNvbmZpZyBQVFBfTkVUQ19WNF9USU1FUlxuIFx0ICBzeW5jaHJvbml6YXRpb24uIEl0IGFsc28gc3VwcG9ydHMgcGVyaW9kaWMgb3V0cHV0IHNpZ25hbCAoZS5nLiBQUFMpXG4gXHQgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy5cbiBcbiYjNDM7Y29uZmlnIFBUUF9RQ09NX1RTQ1xuJiM0MztcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFRTQyBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXJcbiYjNDM7XHQgIFN1YnN5c3RlbSAoVFNDU1MpIGFzIGEgUFRQIGNsb2NrLlxuJiM0MztcbiYjNDM7XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiYjNDM7XHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cbiYjNDM7XG4gZW5kbWVudVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL01ha2VmaWxlIGIvZHJpdmVycy9wdHAvTWFrZWZpbGVcbmluZGV4IGJkYzQ3ZTI4NGYxNGU3Li5mZjAyOTMyM2U5OGY1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxuQEAgLTIyLDMgJiM0MzsyMiw0IEBAIG9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19PQ1ApXHQmIzQzOz0gcHRwX29jcC5vXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVx0XHQmIzQzOz0gcHRwX2RmbF90b2Qub1xuIG9iai0kKENPTkZJR19QVFBfUzM5MClcdFx0XHQmIzQzOz0gcHRwX3MzOTAub1xuIG9iai0kKENPTkZJR19QVFBfTkVUQ19WNF9USU1FUilcdFx0JiM0Mzs9IHB0cF9uZXRjLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BUUF9RQ09NX1RTQylcdFx0JiM0Mzs9IHB0cF9xY29tX3RzYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmMgYi9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iMjkyNDgxNTAzODhmM1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcbkBAIC0wLDAgJiM0MzsxLDQxMyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4mIzQzOy8qXG4mIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJPTExPVkVSX1ZBTFx0XHRcdFx0OTk5OTk5OTk5XG4mIzQzOyNkZWZpbmUgTlNFQ19TSElGVFx0XHRcdFx0MzJcbiYjNDM7I2RlZmluZSBQVUxTRV9XSURUSF9NQVNLXHRcdFx0R0VOTUFTSyg3LCA2KVxuJiM0MzsjZGVmaW5lIERSSUZUX01BWF9SRVNcdFx0XHRcdDB4MUZGRkZcbiYjNDM7I2RlZmluZSBEUklGVF9KVU1QX1NXQUxMT1dcdFx0XHRCSVQoMzEpXG4mIzQzOyNkZWZpbmUgRFJJRlRfUEVSSU9EX01BU0tcdFx0XHRHRU5NQVNLKDI4LCAxMilcbiYjNDM7I2RlZmluZSBEUklGVF9TVUJQRVJJT0RfTUFTS1x0XHRcdEdFTk1BU0soMTEsIDApXG4mIzQzOyNkZWZpbmUgRFJJRlRfSU5URVJWQUxfVVNcdFx0XHQxMFxuJiM0MzsjZGVmaW5lIERSSUZUX01JTl9USU1FT1VUX1VTXHRcdFx0NTAwMFxuJiM0MztcbiYjNDM7I2RlZmluZSBEUklGVF9USU1FT1VUX1VTKHBlcmlvZCwgc3VicGVyaW9kLCBjbnRyX3JlcylcdFx0XHRcXFxuJiM0MztcdG1heF90KHU2NCwgZGl2X3U2NCgodTY0KShwZXJpb2QpICogKHN1YnBlcmlvZCkgKiAoY250cl9yZXMpLCBOU0VDX1BFUl9VU0VDKSwgXFxcbiYjNDM7XHQgICAgICBEUklGVF9NSU5fVElNRU9VVF9VUylcbiYjNDM7XG4mIzQzO3N0cnVjdCBxY29tX3RzY19yZWdzIHtcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjcjtcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjdl9sbztcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjdl9oaTtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9pbmNyX3ZhbDtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9kdXJhdGlvbjtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9jbWQ7XG4mIzQzO1x0dTMyIHJvbGxvdmVyX3ZhbDtcbiYjNDM7XHR1MzIgb2Zmc2V0X2xvO1xuJiM0MztcdHUzMiBvZmZzZXRfaGk7XG4mIzQzO1x0dTMyIHJlYWRfY250Y3ZfbG87XG4mIzQzO1x0dTMyIHJlYWRfY250Y3ZfaGk7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogc3RydWN0IHFjb21fdHNjX3NvY19kYXRhIC0gU29DIHNwZWNpZmljIFRTQyBoYXJkd2FyZSBjYXBhYmlsaXRpZXNcbiYjNDM7ICpcbiYjNDM7ICogQHJvbGxvdmVyOiBpbmRpY2F0ZXMgdGhlIGNvdW50ZXIgdXNlcyBzZWMvbnNlYyBzcGxpdFxuJiM0MzsgKiBAb2Zmc2V0X2NvcnJlY3Rpb246IGhhcmR3YXJlIHN1cHBvcnRzIG9uZS1zaG90IG9mZnNldCBjb3JyZWN0aW9uXG4mIzQzOyAqIEBwdWxzZV93aWR0aDogdmFsaWQgcHVsc2Ugd2lkdGggaW4gY3ljbGVzIGZvciBkcmlmdCBjb3JyZWN0aW9uXG4mIzQzOyAqIEBjbnRyX3JlczogVFNDIGNvdW50ZXIgcmVzb2x1dGlvbiBpbiBuc2VjXG4mIzQzOyAqIEByZWdfbGF5b3V0OiByZWdpc3RlciBsYXlvdXQgZm9yIHRoaXMgU29DL3ZlcnNpb25cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBxY29tX3RzY19zb2NfZGF0YSB7XG4mIzQzO1x0Ym9vbCByb2xsb3ZlcjtcbiYjNDM7XHRib29sIG9mZnNldF9jb3JyZWN0aW9uO1xuJiM0MztcdGludCBwdWxzZV93aWR0aDtcbiYjNDM7XHRpbnQgY250cl9yZXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ19sYXlvdXQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcWNvbV90c2Mge1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiYjNDM7XHR2b2lkIF9faW9tZW0gKmJhc2U7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XG4mIzQzO1x0c3RydWN0IGNsayAqYWhiX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICpjbnRyX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICpldHVfY2xrO1xuJiM0MztcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbiYjNDM7XHRzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX2luZm87XG4mIzQzO1x0LyogTXV0ZXggdG8gcHJvdGVjdCBvcGVyYXRpb25zIGZyb20gYmVpbmcgaW50ZXJydXB0ZWQgKi9cbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHFjb21fdHNjX2lzX2VuYWJsZWQoc3RydWN0IHFjb21fdHNjICp0c2MpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKSBcdTAwMjYgQklUKDApO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3JlYWRfdGltZShzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtXHUwMDNlc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4mIzQzO1x0dTMyIGhpLCBsbztcbiYjNDM7XG4mIzQzO1x0aWYgKCFxY29tX3RzY19pc19lbmFibGVkKHRzYykpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aGkgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlcmVhZF9jbnRjdl9oaSk7XG4mIzQzO1x0bG8gPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlcmVhZF9jbnRjdl9sbyk7XG4mIzQzO1xuJiM0MztcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4mIzQzO1x0XHR0cy1cdTAwM2V0dl9zZWMgPSBoaTtcbiYjNDM7XHRcdHRzLVx1MDAzZXR2X25zZWMgPSBsbztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0dTY0IG5zID0gKCh1NjQpaGkgXHUwMDNjXHUwMDNjIE5TRUNfU0hJRlQpIHwgbG87XG4mIzQzO1xuJiM0MztcdFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgcWNvbV90c2Nfc3BsaXRfdHMoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzLCB1MzIgKmhpLCB1MzIgKmxvKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHRzYy1cdTAwM2Vzb2MtXHUwMDNlcm9sbG92ZXIpIHtcbiYjNDM7XHRcdCpoaSA9IHRzLnR2X3NlYztcbiYjNDM7XHRcdCpsbyA9IHRzLnR2X25zZWM7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHU2NCBucyA9IHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2dHMpO1xuJiM0MztcbiYjNDM7XHRcdCpsbyA9IGxvd2VyXzMyX2JpdHMobnMpO1xuJiM0MztcdFx0KmhpID0gdXBwZXJfMzJfYml0cyhucyk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCB0cylcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuJiM0MztcdHUzMiByZWd2YWwsIGhpLCBsbztcbiYjNDM7XG4mIzQzO1x0cWNvbV90c2Nfc3BsaXRfdHModHNjLCB0cywgXHUwMDI2aGksIFx1MDAyNmxvKTtcbiYjNDM7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQobG8sIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9sbyk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9oaSk7XG4mIzQzO1xuJiM0MztcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbiYjNDM7XHRyZWd2YWwgfD0gQklUKDApO1xuJiM0MztcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX29mZnNldChzdHJ1Y3QgcWNvbV90c2MgKnRzYywgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgdHMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XG4mIzQzO1x0dTMyIHJlZ3ZhbCwgaGksIGxvO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZW9mZnNldF9jb3JyZWN0aW9uKSB7XG4mIzQzO1x0XHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcdTAwMjZoaSwgXHUwMDI2bG8pO1xuJiM0MztcbiYjNDM7XHRcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZW9mZnNldF9sbyk7XG4mIzQzO1x0XHR3cml0ZWxfcmVsYXhlZChoaSwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VvZmZzZXRfaGkpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBObyBoYXJkd2FyZSBvZmZzZXQgY29ycmVjdGlvbiBzdXBwb3J0OiBkaXNhYmxlIGFuZCByZWxvYWQgdGhlXG4mIzQzO1x0ICogY291bnRlciB3aXRoIHRoZSBjb3JyZWN0ZWQgdGltZSwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIGhhcmR3YXJlXG4mIzQzO1x0ICogZGVzaWduIHRlYW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gcWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcdHJlZ3ZhbCBcdTAwMjY9IH5CSVQoMCk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIodHNjLCB0aW1lc3BlYzY0X2FkZCh0b2QsIHRzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV90c2Nfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XG4mIzQzO1x0dTMyIHJlZ3ZhbDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkge1xuJiM0MztcdFx0cWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbiYjNDM7XHRcdHJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCB0aW1lc3BlYzY0X3N1YigqdHMsIHRvZCkpO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBDb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgVFNDIGNvdW50ZXIgKi9cbiYjNDM7XHRyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4mIzQzO1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoUFVMU0VfV0lEVEhfTUFTSywgdHNjLVx1MDAzZXNvYy1cdTAwM2VwdWxzZV93aWR0aCk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcbiYjNDM7XHRpZiAodHNjLVx1MDAzZXNvYy1cdTAwM2Vyb2xsb3ZlcilcbiYjNDM7XHRcdHdyaXRlbF9yZWxheGVkKFJPTExPVkVSX1ZBTCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vyb2xsb3Zlcl92YWwpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsICp0cyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCBuc190b190aW1lc3BlYzY0KGRlbHRhKSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBsb25nIHNjYWxlZF9wcG0pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy1cdTAwM2Vzb2M7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSBzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHNjYWxlZF9wcG0pO1xuJiM0MztcdHU2NCBwZXJpb2QsIGluY3ZhbCA9IDA7XG4mIzQzO1x0dTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBwYiBcdTAwM2MgMCkge1xuJiM0MztcdFx0cHBiID0gLXBwYjtcbiYjNDM7XHRcdHJlZ3ZhbCBcdTAwMjY9IH5EUklGVF9KVU1QX1NXQUxMT1c7XG4mIzQzO1xuJiM0MztcdFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cdTAwM2VjbnRyX3Jlcyk7XG4mIzQzO1x0XHRpZiAocGVyaW9kIFx1MDAzZT0gRFJJRlRfTUFYX1JFUylcbiYjNDM7XHRcdFx0cGVyaW9kID0gRFJJRlRfTUFYX1JFUztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmVndmFsIHw9IERSSUZUX0pVTVBfU1dBTExPVztcbiYjNDM7XG4mIzQzO1x0XHRwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLVx1MDAzZWNudHJfcmVzKTtcbiYjNDM7XHRcdGlmIChwZXJpb2QgXHUwMDNlPSBEUklGVF9NQVhfUkVTKSB7XG4mIzQzO1x0XHRcdHBlcmlvZCA9IERSSUZUX01BWF9SRVM7XG4mIzQzO1x0XHRcdGluY3ZhbCA9IHNvYy1cdTAwM2VjbnRyX3JlcyAqIDI7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHBwYiBcdTAwM2Mgc29jLVx1MDAzZWNudHJfcmVzKSB7XG4mIzQzO1x0XHRcdGluY3ZhbCA9IHNvYy1cdTAwM2VjbnRyX3JlcyAmIzQzOyBwcGI7XG4mIzQzO1x0XHRcdHBlcmlvZCA9IDE7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRpbmN2YWwgPSBzb2MtXHUwMDNlY250cl9yZXMgKiAyO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3VicGVyaW9kID0gc29jLVx1MDAzZXB1bHNlX3dpZHRoICogMjtcbiYjNDM7XHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9TVUJQRVJJT0RfTUFTSywgc3VicGVyaW9kKTtcbiYjNDM7XHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9QRVJJT0RfTUFTSywgcGVyaW9kKTtcbiYjNDM7XG4mIzQzO1x0LyogVXBkYXRlIGp1bXAvc3dhbGxvdywgcGVyaW9kLCBzdWJwZXJpb2QgKi9cbiYjNDM7XHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7XG4mIzQzO1xuJiM0MztcdHdyaXRlbF9yZWxheGVkKGluY3ZhbCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcbiYjNDM7XG4mIzQzO1x0LyogVHJpZ2dlciB0aGUgZHJpZnQgY29ycmVjdGlvbiAqL1xuJiM0MztcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XG4mIzQzO1x0cmVndmFsIHw9IEJJVCgwKTtcbiYjNDM7XHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQsIHJlZ3ZhbCxcbiYjNDM7XHRcdFx0XHQgICEocmVndmFsIFx1MDAyNiBCSVQoMSkpLCBEUklGVF9JTlRFUlZBTF9VUyxcbiYjNDM7XHRcdFx0XHQgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy1cdTAwM2VjbnRyX3JlcykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNjYWxlZF9wcG0gPT0gMClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBxY29tX3B0cF9pbmZvID0ge1xuJiM0MztcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuJiM0MztcdC5uYW1lXHRcdD0gXCYjMzQ7UFRQX1FDT01fVFNDXCYjMzQ7LFxuJiM0MztcdC5tYXhfYWRqXHQ9IDk5OTk5OTksXG4mIzQzO1x0LmFkamZpbmVcdD0gcWNvbV90c2NfYWRqZmluZSxcbiYjNDM7XHQuYWRqdGltZVx0PSBxY29tX3RzY19hZGp0aW1lLFxuJiM0MztcdC5nZXR0aW1lNjQgICAgICA9IHFjb21fdHNjX2dldHRpbWUsXG4mIzQzO1x0LnNldHRpbWU2NCAgICAgID0gcWNvbV90c2Nfc2V0dGltZSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyBxY29tX3RzY19sYXlvdXQgPSB7XG4mIzQzO1x0LmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCxcbiYjNDM7XHQuY29udHJvbF9jbnRjdl9sbyAgICAgICAgID0gMHg4LFxuJiM0MztcdC5jb250cm9sX2NudGN2X2hpICAgICAgICAgPSAweGMsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfZHVyYXRpb24gICA9IDB4MzAsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfY21kICAgICAgICA9IDB4MzQsXG4mIzQzO1x0LnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsXG4mIzQzO1x0Lm9mZnNldF9sbyAgICAgICAgICAgICAgICA9IDB4NTAsXG4mIzQzO1x0Lm9mZnNldF9oaSAgICAgICAgICAgICAgICA9IDB4NTQsXG4mIzQzO1x0LnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCxcbiYjNDM7XHQucmVhZF9jbnRjdl9oaSAgICAgICAgICAgID0gMHgxMDA0LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSBxY29tX3RzY19sZW1hbnMgPSB7XG4mIzQzO1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4mIzQzO1x0LnJvbGxvdmVyXHRcdD0gZmFsc2UsXG4mIzQzO1x0Lm9mZnNldF9jb3JyZWN0aW9uXHQ9IGZhbHNlLFxuJiM0MztcdC5wdWxzZV93aWR0aFx0XHQ9IDIsXG4mIzQzO1x0LmNudHJfcmVzXHRcdD0gNjQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhIHFjb21fdHNjX3FkdTEwMDAgPSB7XG4mIzQzO1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4mIzQzO1x0LnJvbGxvdmVyXHRcdD0gdHJ1ZSxcbiYjNDM7XHQub2Zmc2V0X2NvcnJlY3Rpb25cdD0gdHJ1ZSxcbiYjNDM7XHQucHVsc2Vfd2lkdGhcdFx0PSAzLFxuJiM0MztcdC5jbnRyX3Jlc1x0XHQ9IDIsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGxlbWFucy10c2Nzc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZxY29tX3RzY19sZW1hbnMgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcbiYjNDM7XHR7IH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV90c2Nfb2ZfbWF0Y2gpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcWNvbV9wdHBfdHNjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRzYyBcdTAwMjZcdTAwMjYgdHNjLVx1MDAzZXB0cCkge1xuJiM0MztcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIodHNjLVx1MDAzZXB0cCk7XG4mIzQzO1x0XHR0c2MtXHUwMDNlcHRwID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9wdHBfdHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYztcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcbiYjNDM7XHRzdHJ1Y3QgcmVzb3VyY2UgKnJfbWVtO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKCFzb2MpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0dHNjID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnRzYyksIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghdHNjKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHR0c2MtXHUwMDNlc29jID0gc29jO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX211dGV4X2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cl9tZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCBcJiMzNDt0c2NcJiMzNDspO1xuJiM0MztcdGlmICghcl9tZW0pIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O25vIElPIHJlc291cmNlIGRlZmluZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTlhJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2ViYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByX21lbSk7XG4mIzQzO1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYmFzZSkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYmFzZSk7XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2FoYlwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYWhiX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYWhiX2Nsayk7XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VjbnRyX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtjbnRyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VjbnRyX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlY250cl9jbGspO1xuJiM0MztcbiYjNDM7XHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cbiYjNDM7XHR0c2MtXHUwMDNlZXR1X2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtldHVcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIodHNjLVx1MDAzZWV0dV9jbGspKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIodHNjLVx1MDAzZWV0dV9jbGspO1xuJiM0MztcbiYjNDM7XHR0c2MtXHUwMDNlcHRwX2luZm8gPSBxY29tX3B0cF9pbmZvO1xuJiM0MztcbiYjNDM7XHR0c2MtXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnRzYy1cdTAwM2VwdHBfaW5mbywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChJU19FUlIodHNjLVx1MDAzZXB0cCkpIHtcbiYjNDM7XHRcdHJldCA9IFBUUl9FUlIodHNjLVx1MDAzZXB0cCk7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcHRwIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9wdHBfdHNjX2RyaXZlciA9IHtcbiYjNDM7XHQucHJvYmUgID0gcWNvbV9wdHBfdHNjX3Byb2JlLFxuJiM0MztcdC5yZW1vdmUgPSBxY29tX3B0cF90c2NfcmVtb3ZlLFxuJiM0MztcdC5kcml2ZXIgPSB7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3Fjb21fcHRwX3RzY1wmIzM0OyxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fdHNjX29mX21hdGNoLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UFRQIFFDT00gVFNDIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDU6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDA1OjE1OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbApAQCAtMCwwICYjNDM7MSwxOTggQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gTGVtYW5zIGFuZCBNb25hY28gU29DcwomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBJbXJhbiBTaGFpayAmbHQ7aW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbSZndDsKJiM0MzsgIC0gVGFuaXlhIERhcyAmbHQ7dGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBRdWFsY29tbSBUU0NTUyBpcyBhIHRpbWUgc3luY2hyb25pemF0aW9uIHN1YnN5c3RlbSBjb21wb3NlZCBvZiB0d28gbWFpbgomIzQzOyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLgomIzQzOwomIzQzOyAgVGhlIFRTQyBibG9jayBpcyBhIHRpbWVzdGFtcCBnZW5lcmF0b3IgdGhhdCBtYWludGFpbnMgYSBydW5uaW5nIGNvdW50ZXIgdXNlZAomIzQzOyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXIKJiM0MzsgIGNsb2Nrcy4KJiM0MzsgIFRoZSBFVFUgYmxvY2sgaXMgb3B0aW9uYWwgYW5kIGNhcHR1cmVzIFRTQyB0aW1lc3RhbXBzIGZvciBleHRlcm5hbAomIzQzOyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbAomIzQzOyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVCiYjNDM7ICBjbG9jayBhbG9uZyB3aXRoIHRoZSBzdW1tYXJ5IGludGVycnVwdCBhbmQgc2xpY2Ugc3Vibm9kZXMuCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIG9uZU9mOgomIzQzOyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzCiYjNDM7ICAgICAgLSBpdGVtczoKJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxtb25hY28tdHNjc3MKJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3MKJiM0MzsKJiM0MzsgIHJlZzoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHJlZy1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogdHNjCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay4KJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEVUVSBjbG9jay4KJiM0MzsKJiM0MzsgIGNsb2NrLW5hbWVzOgomIzQzOyAgICBtaW5JdGVtczogMgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBhaGIKJiM0MzsgICAgICAtIGNvbnN0OiBjbnRyCiYjNDM7ICAgICAgLSBjb25zdDogZXR1CiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGV0dV9zdW1tYXJ5CiYjNDM7CiYjNDM7ICBhc3NpZ25lZC1jbG9ja3M6IHRydWUKJiM0MzsgIGFzc2lnbmVkLWNsb2NrLXJhdGVzOiB0cnVlCiYjNDM7CiYjNDM7ICAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAyCiYjNDM7CiYjNDM7ICAmIzM0OyNzaXplLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAyCiYjNDM7CiYjNDM7ICByYW5nZXM6IHRydWUKJiM0MzsKJiM0MztwYXR0ZXJuUHJvcGVydGllczoKJiM0MzsgICYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JCYjMzQ7OgomIzQzOyAgICB0eXBlOiBvYmplY3QKJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uCiYjNDM7ICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgcmVnOgomIzQzOyAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgICAgICBwaW5jdHJsLTA6IHRydWUKJiM0MzsKJiM0MzsgICAgICBwaW5jdHJsLW5hbWVzOgomIzQzOyAgICAgICAgaXRlbXM6CiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHQKJiM0MzsKJiM0MzsgICAgICBxY29tLGV0dS1ldmVudC1zZWw6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLgomIzQzOyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiYjNDM7CiYjNDM7ICAgICAgcWNvbSxldHUtc2xpY2U6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuCiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsKJiM0MzsgICAgcmVxdWlyZWQ6CiYjNDM7ICAgICAgLSByZWcKJiM0MzsgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbAomIzQzOyAgICAgIC0gcWNvbSxldHUtc2xpY2UKJiM0MzsgICAgICAtIHBpbmN0cmwtMAomIzQzOyAgICAgIC0gcGluY3RybC1uYW1lcwomIzQzOyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBjbG9ja3MKJiM0MzsgIC0gY2xvY2stbmFtZXMKJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOgomIzQzOyAgICAgICAgICBjb250YWluczoKJiM0MzsgICAgICAgICAgICBjb25zdDogZXR1CiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNsb2NrczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDMKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMwomIzQzOyAgICAgIHJlcXVpcmVkOgomIzQzOyAgICAgICAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAgICAgICAtIGludGVycnVwdC1uYW1lcwomIzQzOyAgICAgICAgLSAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDsKJiM0MzsgICAgICAgIC0gJiMzNDsjc2l6ZS1jZWxscyYjMzQ7CiYjNDM7ICAgICAgICAtIHJhbmdlcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oJmd0OwomIzQzOwomIzQzOyAgICBzb2MgewomIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICNzaXplLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOwomIzQzOyAgICAgIHRzY3NzQDFjODAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxsZW1hbnMtdHNjc3MmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwJmd0OzsKJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0FIQl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEsmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2FoYiYjMzQ7LCAmIzM0O2NudHImIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzE1NjI1MDAwJmd0OzsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9jbG9jay9xY29tLHNhODc3NXAtZ2NjLmgmZ3Q7CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHNvYyB7CiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7CiYjNDM7ICAgICAgdHNjc3NAMWM4MDAwMCB7CiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtxY29tLGxlbWFucy10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICByYW5nZXM7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0FIQl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDssICYjMzQ7ZXR1JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0VUVV9DTEsmZ3Q7OwomIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSAmbHQ7MTU2MjUwMDAmZ3Q7LCAmbHQ7MTU2MjUwMDAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgaW50ZXJydXB0cyA9ICZsdDtHSUNfU1BJIDYwNCBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9ICYjMzQ7ZXR1X3N1bW1hcnkmIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxYzkxMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzkxMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIwJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxYzkyMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzkyMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIxJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwomIzQzOy4uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjM5Mzg3NjE0ZWY4OTM5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbApAQCAtMCwwICYjNDM7MSwxODcgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIFFEVTEwMDAgU29DCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIEltcmFuIFNoYWlrICZsdDtpbXJhbi5zaGFpa0Bvc3MucXVhbGNvbW0uY29tJmd0OwomIzQzOyAgLSBUYW5peWEgRGFzICZsdDt0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluCiYjNDM7ICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuCiYjNDM7CiYjNDM7ICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkCiYjNDM7ICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlcgomIzQzOyAgY2xvY2tzLgomIzQzOyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsCiYjNDM7ICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsCiYjNDM7ICBldmVudCBzZWxlY3Rvci4gU3VwcG9ydCBmb3IgdGhlIEVUVSBibG9jayByZXF1aXJlcyB0aGUgYWRkaXRpb25hbCBFVFUKJiM0MzsgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLgomIzQzOwomIzQzO3Byb3BlcnRpZXM6CiYjNDM7ICBjb21wYXRpYmxlOgomIzQzOyAgICBjb25zdDogcWNvbSxxZHUxMDAwLXRzY3NzCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IHRzYwomIzQzOwomIzQzOyAgY2xvY2tzOgomIzQzOyAgICBtaW5JdGVtczogMgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgbWluSXRlbXM6IDIKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogYWhiCiYjNDM7ICAgICAgLSBjb25zdDogY250cgomIzQzOyAgICAgIC0gY29uc3Q6IGV0dQomIzQzOwomIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlCiYjNDM7ICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZQomIzQzOwomIzQzOyAgJiMzNDsjYWRkcmVzcy1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMgomIzQzOwomIzQzOyAgJiMzNDsjc2l6ZS1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMgomIzQzOwomIzQzOyAgcmFuZ2VzOiB0cnVlCiYjNDM7CiYjNDM7cGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAmIzM0O15ldHUtc2xpY2VAWzAtOWEtZl0mIzQzOyQmIzM0OzoKJiM0MzsgICAgdHlwZTogb2JqZWN0CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBFVFUgc2xpY2UgY29uZmlndXJhdGlvbgomIzQzOyAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgIHJlZzoKJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAgICAgcGluY3RybC0wOiB0cnVlCiYjNDM7CiYjNDM7ICAgICAgcGluY3RybC1uYW1lczoKJiM0MzsgICAgICAgIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGNvbnN0OiBkZWZhdWx0CiYjNDM7CiYjNDM7ICAgICAgaW50ZXJydXB0czoKJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBQZXIgc2xpY2UgaW50ZXJydXB0IGdlbmVyYXRlZCBieSBFVFUgYmFzZWQgb24gZXh0ZXJuYWwgZXZlbnQgdHJpZ2dlci4KJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAgICAgcWNvbSxldHUtZXZlbnQtc2VsOgomIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEV2ZW50IHNlbGVjdGlvbiB2YWx1ZSBmb3IgdGhpcyBzbGljZS4KJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMgomIzQzOwomIzQzOyAgICAgIHFjb20sZXR1LXNsaWNlOgomIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLgomIzQzOyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7ICAgICAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAgICAgLSBxY29tLGV0dS1ldmVudC1zZWwKJiM0MzsgICAgICAtIHFjb20sZXR1LXNsaWNlCiYjNDM7ICAgICAgLSBwaW5jdHJsLTAKJiM0MzsgICAgICAtIHBpbmN0cmwtbmFtZXMKJiM0MzsgICAgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSByZWctbmFtZXMKJiM0MzsgIC0gY2xvY2tzCiYjNDM7ICAtIGNsb2NrLW5hbWVzCiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtIGlmOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjbG9jay1uYW1lczoKJiM0MzsgICAgICAgICAgY29udGFpbnM6CiYjNDM7ICAgICAgICAgICAgY29uc3Q6IGV0dQomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjbG9ja3M6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzCiYjNDM7ICAgICAgICBjbG9jay1uYW1lczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDMKJiM0MzsgICAgICByZXF1aXJlZDoKJiM0MzsgICAgICAgIC0gJiMzNDsjYWRkcmVzcy1jZWxscyYjMzQ7CiYjNDM7ICAgICAgICAtICYjMzQ7I3NpemUtY2VsbHMmIzM0OwomIzQzOyAgICAgICAgLSByYW5nZXMKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaCZndDsKJiM0MzsKJiM0MzsgICAgc29jIHsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsKJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDX0NGR19BSEJfQ0xLJmd0OywKJiM0MzsgICAgICAgICAgICAgICAgICZsdDsmYW1wO2djYyBHQ0NfVFNDX0NOVFJfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDs7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDs7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9ICZsdDs1MDAwMDAwMDAmZ3Q7OwomIzQzOyAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaCZndDsKJiM0MzsKJiM0MzsgICAgc29jIHsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsKJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICByYW5nZXM7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DRkdfQUhCX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDssICYjMzQ7ZXR1JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzUwMDAwMDAwMCZndDssICZsdDs1MDAwMDAwMDAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXR1LXNsaWNlQDFkYjEwMDAgewomIzQzOyAgICAgICAgICByZWcgPSAmbHQ7MHgwIDB4MDFkYjEwMDAgMHgwIDB4MTAwMCZndDs7CiYjNDM7ICAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7R0lDX1NQSSAzMjkgSVJRX1RZUEVfRURHRV9SSVNJTkcmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIwJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxZGIyMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGIyMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBpbnRlcnJ1cHRzID0gJmx0O0dJQ19TUEkgMzMwIElSUV9UWVBFX0VER0VfUklTSU5HJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gJmx0OyZhbXA7Y2NpX3RpbWVyMSZndDs7CiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgICAgfTsKJiM0MzsgICAgfTsKJiM0MzsuLi4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaQppbmRleCAzYjA1MzllMjdiNTE5Mi4uZTIyNTI5MmExZTQxYTUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2kKQEAgLTMwMjMsNiAmIzQzOzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7CiAJCQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiAJCX07CiAKJiM0MzsJCXRzY3NzQDFjODAwMDAgewomIzQzOwkJCWNvbXBhdGlibGUgPSAmIzM0O3Fjb20sbGVtYW5zLXRzY3NzJiMzNDs7CiYjNDM7CQkJcmVnID0gJmx0OzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOwkJCXJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CQkJY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19BSEJfQ0xLJmd0OywKJiM0MzsJCQkJICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsJCQljbG9jay1uYW1lcyA9ICYjMzQ7YWhiJiMzNDssICYjMzQ7Y250ciYjMzQ7OwomIzQzOwkJCWFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsJCQlhc3NpZ25lZC1jbG9jay1yYXRlcyA9ICZsdDsxNTYyNTAwMCZndDs7CiYjNDM7CQl9OwomIzQzOwogCQl1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHsKIAkJCWNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4Nzc1cC11ZnNoYyYjMzQ7LCAmIzM0O3Fjb20sdWZzaGMmIzM0OywgJiMzNDtqZWRlYyx1ZnMtMi4wJiMzNDs7CiAJCQlyZWcgPSAmbHQ7MHgwIDB4MDFkODQwMDAgMHgwIDB4MzAwMCZndDs7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWR1MTAwMC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaQppbmRleCAyNmNjODZkMTJmNzI1Ni4uODk3OWMxODIyNTE4NGEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2kKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaQpAQCAtODc2LDYgJiM0Mzs4NzYsMTcgQEAgc3lzdGVtX25vYzogaW50ZXJjb25uZWN0QDE2NDAwMDAgewogCQkJI2ludGVyY29ubmVjdC1jZWxscyA9ICZsdDsyJmd0OzsKIAkJfTsKIAomIzQzOwkJdHNjc3NAMWRhMDAwMCB7CiYjNDM7CQkJY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzJiMzNDs7CiYjNDM7CQkJcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOwkJCXJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CQkJY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ0ZHX0FIQl9DTEsmZ3Q7LAomIzQzOwkJCQkgJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ05UUl9DTEsmZ3Q7OwomIzQzOwkJCWNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDs7CiYjNDM7CQkJYXNzaWduZWQtY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ05UUl9DTEsmZ3Q7OwomIzQzOwkJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzUwMDAwMDAwMCZndDs7CiYjNDM7CQl9OwomIzQzOwogCQl0Y3NyX211dGV4OiBod2xvY2tAMWY0MDAwMCB7CiAJCQljb21wYXRpYmxlID0gJiMzNDtxY29tLHRjc3ItbXV0ZXgmIzM0OzsKIAkJCXJlZyA9ICZsdDsweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwJmd0OzsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWcgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnCmluZGV4IDZlYzhkM2E2OWM5OGUwLi43MzQzNWU1Zjg4NzdkMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnCkBAIC02ODMsNiAmIzQzOzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW0KIENPTkZJR19TUE1JPXkKIENPTkZJR19TUE1JX0FQUExFPW0KIENPTkZJR19TUE1JX01US19QTUlGPW0KJiM0MztDT05GSUdfUFRQX1FDT01fVFNDPW0KIENPTkZJR19QSU5DVFJMX0FQUExFX0dQSU89bQogQ09ORklHX1BJTkNUUkxfREE5MDYyPW0KIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnCmluZGV4IGI5MzY0MGNhMDhiNzI4Li5kM2NlYjFlZTAxYTUwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC0yNjMsNCAmIzQzOzI2MywxNCBAQCBjb25maWcgUFRQX05FVENfVjRfVElNRVIKIAkgIHN5bmNocm9uaXphdGlvbi4gSXQgYWxzbyBzdXBwb3J0cyBwZXJpb2RpYyBvdXRwdXQgc2lnbmFsIChlLmcuIFBQUykKIAkgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy4KIAomIzQzO2NvbmZpZyBQVFBfUUNPTV9UU0MKJiM0MzsJdHJpc3RhdGUgJiMzNDtRdWFsY29tbSBUU0MgYXMgUFRQIGNsb2NrJiMzNDsKJiM0MzsJZGVwZW5kcyBvbiBDT01NT05fQ0xLICZhbXA7JmFtcDsgUFRQXzE1ODhfQ0xPQ0sKJiM0MzsJaGVscAomIzQzOwkgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyCiYjNDM7CSAgU3Vic3lzdGVtIChUU0NTUykgYXMgYSBQVFAgY2xvY2suCiYjNDM7CiYjNDM7CSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQomIzQzOwkgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy4KJiM0MzsKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL01ha2VmaWxlIGIvZHJpdmVycy9wdHAvTWFrZWZpbGUKaW5kZXggYmRjNDdlMjg0ZjE0ZTcuLmZmMDI5MzIzZTk4ZjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3B0cC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZQpAQCAtMjIsMyAmIzQzOzIyLDQgQEAgb2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUCkJJiM0Mzs9IHB0cF9vY3Aubwogb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKQkJJiM0Mzs9IHB0cF9kZmxfdG9kLm8KIG9iai0kKENPTkZJR19QVFBfUzM5MCkJCQkmIzQzOz0gcHRwX3MzOTAubwogb2JqLSQoQ09ORklHX1BUUF9ORVRDX1Y0X1RJTUVSKQkJJiM0Mzs9IHB0cF9uZXRjLm8KJiM0MztvYmotJChDT05GSUdfUFRQX1FDT01fVFNDKQkJJiM0Mzs9IHB0cF9xY29tX3RzYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuYyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iMjkyNDgxNTAzODhmMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jCkBAIC0wLDAgJiM0MzsxLDQxMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKJiM0MzsvKgomIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLgomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIFJPTExPVkVSX1ZBTAkJCQk5OTk5OTk5OTkKJiM0MzsjZGVmaW5lIE5TRUNfU0hJRlQJCQkJMzIKJiM0MzsjZGVmaW5lIFBVTFNFX1dJRFRIX01BU0sJCQlHRU5NQVNLKDcsIDYpCiYjNDM7I2RlZmluZSBEUklGVF9NQVhfUkVTCQkJCTB4MUZGRkYKJiM0MzsjZGVmaW5lIERSSUZUX0pVTVBfU1dBTExPVwkJCUJJVCgzMSkKJiM0MzsjZGVmaW5lIERSSUZUX1BFUklPRF9NQVNLCQkJR0VOTUFTSygyOCwgMTIpCiYjNDM7I2RlZmluZSBEUklGVF9TVUJQRVJJT0RfTUFTSwkJCUdFTk1BU0soMTEsIDApCiYjNDM7I2RlZmluZSBEUklGVF9JTlRFUlZBTF9VUwkJCTEwCiYjNDM7I2RlZmluZSBEUklGVF9NSU5fVElNRU9VVF9VUwkJCTUwMDAKJiM0MzsKJiM0MzsjZGVmaW5lIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIGNudHJfcmVzKQkJCVwKJiM0MzsJbWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcCiYjNDM7CSAgICAgIERSSUZUX01JTl9USU1FT1VUX1VTKQomIzQzOwomIzQzO3N0cnVjdCBxY29tX3RzY19yZWdzIHsKJiM0MzsJdTMyIGNvbnRyb2xfY250Y3I7CiYjNDM7CXUzMiBjb250cm9sX2NudGN2X2xvOwomIzQzOwl1MzIgY29udHJvbF9jbnRjdl9oaTsKJiM0MzsJdTMyIGRyaWZ0X2NvcnJlY3RfaW5jcl92YWw7CiYjNDM7CXUzMiBkcmlmdF9jb3JyZWN0X2R1cmF0aW9uOwomIzQzOwl1MzIgZHJpZnRfY29ycmVjdF9jbWQ7CiYjNDM7CXUzMiByb2xsb3Zlcl92YWw7CiYjNDM7CXUzMiBvZmZzZXRfbG87CiYjNDM7CXUzMiBvZmZzZXRfaGk7CiYjNDM7CXUzMiByZWFkX2NudGN2X2xvOwomIzQzOwl1MzIgcmVhZF9jbnRjdl9oaTsKJiM0Mzt9OwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAtIFNvQyBzcGVjaWZpYyBUU0MgaGFyZHdhcmUgY2FwYWJpbGl0aWVzCiYjNDM7ICoKJiM0MzsgKiBAcm9sbG92ZXI6IGluZGljYXRlcyB0aGUgY291bnRlciB1c2VzIHNlYy9uc2VjIHNwbGl0CiYjNDM7ICogQG9mZnNldF9jb3JyZWN0aW9uOiBoYXJkd2FyZSBzdXBwb3J0cyBvbmUtc2hvdCBvZmZzZXQgY29ycmVjdGlvbgomIzQzOyAqIEBwdWxzZV93aWR0aDogdmFsaWQgcHVsc2Ugd2lkdGggaW4gY3ljbGVzIGZvciBkcmlmdCBjb3JyZWN0aW9uCiYjNDM7ICogQGNudHJfcmVzOiBUU0MgY291bnRlciByZXNvbHV0aW9uIGluIG5zZWMKJiM0MzsgKiBAcmVnX2xheW91dDogcmVnaXN0ZXIgbGF5b3V0IGZvciB0aGlzIFNvQy92ZXJzaW9uCiYjNDM7ICovCiYjNDM7c3RydWN0IHFjb21fdHNjX3NvY19kYXRhIHsKJiM0MzsJYm9vbCByb2xsb3ZlcjsKJiM0MzsJYm9vbCBvZmZzZXRfY29ycmVjdGlvbjsKJiM0MzsJaW50IHB1bHNlX3dpZHRoOwomIzQzOwlpbnQgY250cl9yZXM7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdfbGF5b3V0OwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IHFjb21fdHNjIHsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2OwomIzQzOwl2b2lkIF9faW9tZW0gKmJhc2U7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jOwomIzQzOwlzdHJ1Y3QgY2xrICphaGJfY2xrOwomIzQzOwlzdHJ1Y3QgY2xrICpjbnRyX2NsazsKJiM0MzsJc3RydWN0IGNsayAqZXR1X2NsazsKJiM0MzsJc3RydWN0IHB0cF9jbG9jayAqcHRwOwomIzQzOwlzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX2luZm87CiYjNDM7CS8qIE11dGV4IHRvIHByb3RlY3Qgb3BlcmF0aW9ucyBmcm9tIGJlaW5nIGludGVycnVwdGVkICovCiYjNDM7CXN0cnVjdCBtdXRleCBsb2NrOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgcWNvbV90c2NfaXNfZW5hYmxlZChzdHJ1Y3QgcWNvbV90c2MgKnRzYykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLSZndDtzb2MtJmd0O3JlZ19sYXlvdXQ7CiYjNDM7CiYjNDM7CXJldHVybiByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKSAmYW1wOyBCSVQoMCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcWNvbV90c2NfcmVhZF90aW1lKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy0mZ3Q7c29jLSZndDtyZWdfbGF5b3V0OwomIzQzOwl1MzIgaGksIGxvOwomIzQzOwomIzQzOwlpZiAoIXFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwloaSA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JlYWRfY250Y3ZfaGkpOwomIzQzOwlsbyA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JlYWRfY250Y3ZfbG8pOwomIzQzOwomIzQzOwlpZiAodHNjLSZndDtzb2MtJmd0O3JvbGxvdmVyKSB7CiYjNDM7CQl0cy0mZ3Q7dHZfc2VjID0gaGk7CiYjNDM7CQl0cy0mZ3Q7dHZfbnNlYyA9IGxvOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTY0IG5zID0gKCh1NjQpaGkgJmx0OyZsdDsgTlNFQ19TSElGVCkgfCBsbzsKJiM0MzsKJiM0MzsJCSp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0c2MtJmd0O2xvY2spOwomIzQzOwlyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCB0cyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBxY29tX3RzY19zcGxpdF90cyhzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgdHMsIHUzMiAqaGksIHUzMiAqbG8pCiYjNDM7ewomIzQzOwlpZiAodHNjLSZndDtzb2MtJmd0O3JvbGxvdmVyKSB7CiYjNDM7CQkqaGkgPSB0cy50dl9zZWM7CiYjNDM7CQkqbG8gPSB0cy50dl9uc2VjOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTY0IG5zID0gdGltZXNwZWM2NF90b19ucygmYW1wO3RzKTsKJiM0MzsKJiM0MzsJCSpsbyA9IGxvd2VyXzMyX2JpdHMobnMpOwomIzQzOwkJKmhpID0gdXBwZXJfMzJfYml0cyhucyk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY191cGRhdGVfY291bnRlcihzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgdHMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy0mZ3Q7c29jLSZndDtyZWdfbGF5b3V0OwomIzQzOwl1MzIgcmVndmFsLCBoaSwgbG87CiYjNDM7CiYjNDM7CXFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsICZhbXA7aGksICZhbXA7bG8pOwomIzQzOwomIzQzOwl3cml0ZWxfcmVsYXhlZChsbywgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3ZfbG8pOwomIzQzOwl3cml0ZWxfcmVsYXhlZChoaSwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3ZfaGkpOwomIzQzOwomIzQzOwlyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsJcmVndmFsIHw9IEJJVCgwKTsKJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7Y29udHJvbF9jbnRjcik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQoc3RydWN0IHFjb21fdHNjICp0c2MsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHRzKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtJmd0O3NvYy0mZ3Q7cmVnX2xheW91dDsKJiM0MzsJc3RydWN0IHRpbWVzcGVjNjQgdG9kOwomIzQzOwl1MzIgcmVndmFsLCBoaSwgbG87CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICh0c2MtJmd0O3NvYy0mZ3Q7b2Zmc2V0X2NvcnJlY3Rpb24pIHsKJiM0MzsJCXFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsICZhbXA7aGksICZhbXA7bG8pOwomIzQzOwomIzQzOwkJd3JpdGVsX3JlbGF4ZWQobG8sIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtvZmZzZXRfbG8pOwomIzQzOwkJd3JpdGVsX3JlbGF4ZWQoaGksIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtvZmZzZXRfaGkpOwomIzQzOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZQomIzQzOwkgKiBjb3VudGVyIHdpdGggdGhlIGNvcnJlY3RlZCB0aW1lLCBhcyByZWNvbW1lbmRlZCBieSB0aGUgaGFyZHdhcmUKJiM0MzsJICogZGVzaWduIHRlYW0uCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCAmYW1wO3RvZCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsJcmVndmFsICZhbXA7PSB+QklUKDApOwomIzQzOwl3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgdGltZXNwZWM2NF9hZGQodG9kLCB0cykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLSZndDtzb2MtJmd0O3JlZ19sYXlvdXQ7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYzY0IHRvZDsKJiM0MzsJdTMyIHJlZ3ZhbDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChxY29tX3RzY19pc19lbmFibGVkKHRzYykpIHsKJiM0MzsJCXFjb21fdHNjX3JlYWRfdGltZSh0c2MsICZhbXA7dG9kKTsKJiM0MzsJCXJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCB0aW1lc3BlYzY0X3N1YigqdHMsIHRvZCkpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogQ29uZmlndXJlIGFuZCBlbmFibGUgdGhlIFRTQyBjb3VudGVyICovCiYjNDM7CXJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3IpOwomIzQzOwlyZWd2YWwgfD0gRklFTERfUFJFUChQVUxTRV9XSURUSF9NQVNLLCB0c2MtJmd0O3NvYy0mZ3Q7cHVsc2Vfd2lkdGgpOwomIzQzOwl3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsKJiM0MzsJaWYgKHRzYy0mZ3Q7c29jLSZndDtyb2xsb3ZlcikKJiM0MzsJCXdyaXRlbF9yZWxheGVkKFJPTExPVkVSX1ZBTCwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JvbGxvdmVyX3ZhbCk7CiYjNDM7CiYjNDM7CXJldCA9IHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgKnRzKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJcmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIG5zX3RvX3RpbWVzcGVjNjQoZGVsdGEpKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBsb25nIHNjYWxlZF9wcG0pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy0mZ3Q7c29jOwomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHNvYy0mZ3Q7cmVnX2xheW91dDsKJiM0MzsJbG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYihzY2FsZWRfcHBtKTsKJiM0MzsJdTY0IHBlcmlvZCwgaW5jdmFsID0gMDsKJiM0MzsJdTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDsKJiM0MzsKJiM0MzsJaWYgKHBwYiAmbHQ7IDApIHsKJiM0MzsJCXBwYiA9IC1wcGI7CiYjNDM7CQlyZWd2YWwgJmFtcDs9IH5EUklGVF9KVU1QX1NXQUxMT1c7CiYjNDM7CiYjNDM7CQlwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLSZndDtjbnRyX3Jlcyk7CiYjNDM7CQlpZiAocGVyaW9kICZndDs9IERSSUZUX01BWF9SRVMpCiYjNDM7CQkJcGVyaW9kID0gRFJJRlRfTUFYX1JFUzsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJlZ3ZhbCB8PSBEUklGVF9KVU1QX1NXQUxMT1c7CiYjNDM7CiYjNDM7CQlwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLSZndDtjbnRyX3Jlcyk7CiYjNDM7CQlpZiAocGVyaW9kICZndDs9IERSSUZUX01BWF9SRVMpIHsKJiM0MzsJCQlwZXJpb2QgPSBEUklGVF9NQVhfUkVTOwomIzQzOwkJCWluY3ZhbCA9IHNvYy0mZ3Q7Y250cl9yZXMgKiAyOwomIzQzOwkJfSBlbHNlIGlmIChwcGIgJmx0OyBzb2MtJmd0O2NudHJfcmVzKSB7CiYjNDM7CQkJaW5jdmFsID0gc29jLSZndDtjbnRyX3JlcyAmIzQzOyBwcGI7CiYjNDM7CQkJcGVyaW9kID0gMTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaW5jdmFsID0gc29jLSZndDtjbnRyX3JlcyAqIDI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3VicGVyaW9kID0gc29jLSZndDtwdWxzZV93aWR0aCAqIDI7CiYjNDM7CXJlZ3ZhbCB8PSBGSUVMRF9QUkVQKERSSUZUX1NVQlBFUklPRF9NQVNLLCBzdWJwZXJpb2QpOwomIzQzOwlyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9QRVJJT0RfTUFTSywgcGVyaW9kKTsKJiM0MzsKJiM0MzsJLyogVXBkYXRlIGp1bXAvc3dhbGxvdywgcGVyaW9kLCBzdWJwZXJpb2QgKi8KJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7ZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7CiYjNDM7CiYjNDM7CXdyaXRlbF9yZWxheGVkKGluY3ZhbCwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2RyaWZ0X2NvcnJlY3RfaW5jcl92YWwpOwomIzQzOwomIzQzOwkvKiBUcmlnZ2VyIHRoZSBkcmlmdCBjb3JyZWN0aW9uICovCiYjNDM7CXJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2RyaWZ0X2NvcnJlY3RfY21kKTsKJiM0MzsJcmVndmFsIHw9IEJJVCgwKTsKJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7ZHJpZnRfY29ycmVjdF9jbWQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLAomIzQzOwkJCQkgICEocmVndmFsICZhbXA7IEJJVCgxKSksIERSSUZUX0lOVEVSVkFMX1VTLAomIzQzOwkJCQkgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy0mZ3Q7Y250cl9yZXMpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoc2NhbGVkX3BwbSA9PSAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0c2MtJmd0O2xvY2spOwomIzQzOwlyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcWNvbV9wdHBfaW5mbyA9IHsKJiM0MzsJLm93bmVyCQk9IFRISVNfTU9EVUxFLAomIzQzOwkubmFtZQkJPSAmIzM0O1BUUF9RQ09NX1RTQyYjMzQ7LAomIzQzOwkubWF4X2Fkagk9IDk5OTk5OTksCiYjNDM7CS5hZGpmaW5lCT0gcWNvbV90c2NfYWRqZmluZSwKJiM0MzsJLmFkanRpbWUJPSBxY29tX3RzY19hZGp0aW1lLAomIzQzOwkuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLAomIzQzOwkuc2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19zZXR0aW1lLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzIHFjb21fdHNjX2xheW91dCA9IHsKJiM0MzsJLmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCwKJiM0MzsJLmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCwKJiM0MzsJLmNvbnRyb2xfY250Y3ZfaGkgICAgICAgICA9IDB4YywKJiM0MzsJLmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsCiYjNDM7CS5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLAomIzQzOwkuZHJpZnRfY29ycmVjdF9jbWQgICAgICAgID0gMHgzNCwKJiM0MzsJLnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsCiYjNDM7CS5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLAomIzQzOwkub2Zmc2V0X2hpICAgICAgICAgICAgICAgID0gMHg1NCwKJiM0MzsJLnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCwKJiM0MzsJLnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0gewomIzQzOwkucmVnX2xheW91dAkJPSAmYW1wO3Fjb21fdHNjX2xheW91dCwKJiM0MzsJLnJvbGxvdmVyCQk9IGZhbHNlLAomIzQzOwkub2Zmc2V0X2NvcnJlY3Rpb24JPSBmYWxzZSwKJiM0MzsJLnB1bHNlX3dpZHRoCQk9IDIsCiYjNDM7CS5jbnRyX3JlcwkJPSA2NCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfcWR1MTAwMCA9IHsKJiM0MzsJLnJlZ19sYXlvdXQJCT0gJmFtcDtxY29tX3RzY19sYXlvdXQsCiYjNDM7CS5yb2xsb3ZlcgkJPSB0cnVlLAomIzQzOwkub2Zmc2V0X2NvcnJlY3Rpb24JPSB0cnVlLAomIzQzOwkucHVsc2Vfd2lkdGgJCT0gMywKJiM0MzsJLmNudHJfcmVzCQk9IDIsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLGxlbWFucy10c2NzcyYjMzQ7LCAuZGF0YSA9ICZhbXA7cWNvbV90c2NfbGVtYW5zIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7LCAuZGF0YSA9ICZhbXA7cWNvbV90c2NfcWR1MTAwMCB9LAomIzQzOwl7IH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fdHNjX29mX21hdGNoKTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBxY29tX3B0cF90c2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwomIzQzOwomIzQzOwlpZiAodHNjICZhbXA7JmFtcDsgdHNjLSZndDtwdHApIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKHRzYy0mZ3Q7cHRwKTsKJiM0MzsJCXRzYy0mZ3Q7cHRwID0gTlVMTDsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fcHRwX3RzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjOwomIzQzOwlzdHJ1Y3QgcmVzb3VyY2UgKnJfbWVtOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAoIXNvYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl0c2MgPSBkZXZtX2t6YWxsb2MoJmFtcDtwZGV2LSZndDtkZXYsIHNpemVvZigqdHNjKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdHNjKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXRzYy0mZ3Q7ZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXRzYy0mZ3Q7c29jID0gc29jOwomIzQzOwomIzQzOwlyZXQgPSBkZXZtX211dGV4X2luaXQoJmFtcDtwZGV2LSZndDtkZXYsICZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJfbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgJiMzNDt0c2MmIzM0Oyk7CiYjNDM7CWlmICghcl9tZW0pIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7bm8gSU8gcmVzb3VyY2UgZGVmaW5lZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FTlhJTzsKJiM0MzsJfQomIzQzOwomIzQzOwl0c2MtJmd0O2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJmFtcDtwZGV2LSZndDtkZXYsIHJfbWVtKTsKJiM0MzsJaWYgKElTX0VSUih0c2MtJmd0O2Jhc2UpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIodHNjLSZndDtiYXNlKTsKJiM0MzsKJiM0MzsJdHNjLSZndDthaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7YWhiJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHRzYy0mZ3Q7YWhiX2NsaykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih0c2MtJmd0O2FoYl9jbGspOwomIzQzOwomIzQzOwl0c2MtJmd0O2NudHJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Y250ciYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUih0c2MtJmd0O2NudHJfY2xrKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHRzYy0mZ3Q7Y250cl9jbGspOwomIzQzOwomIzQzOwkvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi8KJiM0MzsJdHNjLSZndDtldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7ZXR1JiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHRzYy0mZ3Q7ZXR1X2NsaykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih0c2MtJmd0O2V0dV9jbGspOwomIzQzOwomIzQzOwl0c2MtJmd0O3B0cF9pbmZvID0gcWNvbV9wdHBfaW5mbzsKJiM0MzsKJiM0MzsJdHNjLSZndDtwdHAgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoJmFtcDt0c2MtJmd0O3B0cF9pbmZvLCAmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CWlmIChJU19FUlIodHNjLSZndDtwdHApKSB7CiYjNDM7CQlyZXQgPSBQVFJfRVJSKHRzYy0mZ3Q7cHRwKTsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHB0cCBjbG9ja1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9wdHBfdHNjX2RyaXZlciA9IHsKJiM0MzsJLnByb2JlICA9IHFjb21fcHRwX3RzY19wcm9iZSwKJiM0MzsJLnJlbW92ZSA9IHFjb21fcHRwX3RzY19yZW1vdmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cWNvbV9wdHBfdHNjJiMzNDssCiYjNDM7CQkub2ZfbWF0Y2hfdGFibGUgPSBxY29tX3RzY19vZl9tYXRjaCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UFRQIFFDT00gVFNDIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDU6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzIKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMTcyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgTmV3IFBUUCBDbG9jayBEcml2ZXIqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhlIHBhdGNoIGFkZHMgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHVwZGF0ZXMgZGV2aWNlIHRyZWVzIGZvciBzcGVjaWZpYyBRdWFsY29tbSBwbGF0Zm9ybXMgKGxlbWFucyBhbmQgcWR1MTAwMCksIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBwcm92aWRlcyB0aGUgYHB0cF9xY29tX3RzYy5jYCBkcml2ZXIuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgcmVnaXN0ZXJlZCBhcyAmIzM0O3Fjb21fcHRwX3RzYyYjMzQ7LCBhbmQgc2VlbXMgdG8gYmUgcHJvdmlkaW5nIHRoZSBzdGFuZGFyZCBQVFAgY2xvY2sgaW50ZXJmYWNlIOKAkyByZWdpc3RlciwgZ2V0L3NldCB0aW1lIGZ1bmN0aW9ucywgYWxsIGFjY2Vzc2libGUgdmlhIGlvY3RscyBhbmQgc3lzZnMuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgKmJpbmRzKiB0byBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGlkZW50aWZpZWQgYnkgZGV2aWNlIHRyZWUgYmluZGluZ3M6IGBxY29tLGxlbWFucy10c2Nzc2AgYW5kIGBxY29tLHFkdTEwMDAtdHNjc3NgLiBJbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IgZm9yIHRoaXMgKnNwZWNpZmljKiBoYXJkd2FyZSwgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyB3b24mIzM5O3QgYmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIHJlZ2lzdGVycyB0aGUgUFRQIGNsb2NrLCB3b24mIzM5O3QgYmUgY2FsbGVkLgoKT2YgY291cnNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgY3JlYXRlIHRoZXNlIHBsYXRmb3JtIGRldmljZXMsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBzeXpfZGV2cmVzYCBvciBieSBtb2RpZnlpbmcgdGhlIGRldmljZSB0cmVlIG9yIHV0aWxpemluZyBhIHBzZXVkby1kZXZpY2UuIEJ1dCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBvZnRlbiBmYWlsIGlmIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChhbmQgbWVtb3J5IHJlZ2lvbnMpIGlzbiYjMzk7dCBhY3R1YWxseSB0aGVyZSBvciBlbXVsYXRlZC4gVGhpcyBkcml2ZXIgdXNlcyBNTUlPIG9wZXJhdGlvbnMgKHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gbWVtb3J5IHVzaW5nIGByZWFkbF9yZWxheGVkYCwgYHdyaXRlbF9yZWxheGVkYCBhbmQgdGhlIGxpa2UsIGFjY2Vzc2luZyBgdHNjLSZndDtiYXNlYCksIHNvIGluIHRoZSBhYnNlbmNlIG9mIHJlYWwgaGFyZHdhcmUgb3IgYSBzdWZmaWNpZW50bHkgZGV0YWlsZWQgZW11bGF0b3IsIHRoZXNlIHJlYWRzL3dyaXRlcyB3aWxsIGZhaWwuCgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIG1hcCBtZW1vcnkgcmVnaW9ucyBmb3IgTU1JTy4gU28sIGxldCYjMzk7cyBsb29rIGZvciBzcGVjaWZpYyByZXN0cmljdGlvbnMuIFRoZSBndWlkZWxpbmVzIHN0YXRlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBpbnZvbHZlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2FuJiMzOTt0IGJlIGVtdWxhdGVkLCBvciwgbW9yZSBnZW5lcmFsbHksIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIFF1YWxjb21tIFNvQyYjMzk7cyBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0uIEl0ICpkZWZpbml0ZWx5KiB1c2VzIE1NSU8gKGBkZXZtX2lvcmVtYXBfcmVzb3VyY2VgKSwgYW5kIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UsIG1hcHBpbmcgbWVtb3J5IGZvciB0aG9zZSBNTUlPIHJlZ2lvbnMuIElzIGl0IHdvcnRoIGZ1enppbmc/IEdlbmVyYWxseSwgU29DLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBhcmUgcmVsYXRpdmVseSBpc29sYXRlZCDigJMgbWVhbmluZyB0aGV5IGp1c3QgZG8gTU1JTyByZWFkcy93cml0ZXMgd2l0aG91dCBjb21wbGV4IGludGVyYWN0aW9uIHdpdGggbmV0d29yayBvciBibG9jayBzdWJzeXN0ZW1zIOKAkyAqbWlnaHQqIGJlIGZ1enphYmxlIGlmIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgdGhlIGRyaXZlci4KCkJ1dCB0aGVyZSBhcmUgc29tZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBjbG9ja3MuIFRoZSBkcml2ZXIgcmVsaWVzIG9uIGdldHRpbmcgY2xvY2tzIHZpYSBgZGV2bV9jbGtfZ2V0X2VuYWJsZWRgIOKAkyBzcGVjaWZpY2FsbHkgY2xvY2tzIG5hbWVkICYjMzQ7YWhiJiMzNDsgYW5kICYjMzQ7Y250ciYjMzQ7LiBUaGVzZSBjbG9ja3MgYXJlIHZlcnkgbGlrZWx5IFNvQy1zcGVjaWZpYywgYW5kIGluIGEgZ2VuZXJpYyBRRU1VIHZpcnR1YWwgbWFjaGluZSAobGlrZSB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUgZm9yIGFhcmNoNjQpLCB0aGVzZSBjbG9ja3MgKndvbiYjMzk7dCogZXhpc3QuIFRodXMsIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAgd291bGQgcmV0dXJuIGFuIGVycm9yIGxpa2UgYC1FTk9FTlRgLCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdvdWxkIGZhaWwsIG1ha2luZyB0aGUgZHJpdmVyIHVucmVhY2hhYmxlLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBjYW4gd2UgYnlwYXNzIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAsIG9yIGFyZSB0aGVyZSBkdW1teSBjbG9ja3MgYXZhaWxhYmxlPyBHaXZlbiB0aGUgcmVsaWFuY2Ugb24gYENPTkZJR19DT01NT05fQ0xLYCwgYSBzdWNjZXNzZnVsIGBjbGtfZ2V0YCByZXF1aXJlcyB0aGUgY2xvY2sgdG8gYmUgcHJlc2VudCwgYW5kIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHN5emthbGxlciBwcm92aWRlcyBhbiBlbXVsYXRvciBmb3IgdGhlc2UgY2xvY2tzIG9yIHRoYXQgd2UmIzM5O3JlIHJ1bm5pbmcgYSBRRU1VIGltYWdlIGVtdWxhdGluZyAqdGhpcyogc3BlY2lmaWMgU29DLiBTaW5jZSB0aGlzIGRyaXZlciBpcyB0aWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIGNsb2NrcywgYW5kIHdlJiMzOTtyZSBsaWtlbHkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB0aGlzIGRyaXZlciBpcyBub3QgcmVhY2hhYmxlLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uOiBhIFNvQy1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIGNsb2NrcywgcmVndWxhdG9ycywgYW5kIE1NSU8gbGF5b3V0cyBub3QgcHJlc2VudCBpbiBnZW5lcmljIFZNcy4KCkNvdWxkIHN5emthbGxlciBtb2NrIHRoZSBjbG9ja3M/IE5vdCBnZW5lcmFsbHkuIEl0IGZvY3VzZXMgb24ga2VybmVsIGludGVyZmFjZXMsIG5vdCBlbXVsYXRpbmcgaGFyZHdhcmUgZGV0YWlscyBsaWtlIHNwZWNpZmljIGNsb2Nrcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgZHJpdmVyIGNvZGUuCgpgYGBjCgl0c2MtJmd0O2FoYl9jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZCgmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDthaGImIzM0Oyk7CglpZiAoSVNfRVJSKHRzYy0mZ3Q7YWhiX2NsaykpCgkJcmV0dXJuIFBUUl9FUlIodHNjLSZndDthaGJfY2xrKTsKYGBgCgpUaGUgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIHRoZSBjbG9jazsgaWYgdGhlCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OykgYW5kIE1NSU8gcmVzb3VyY2VzIHRvIHByb2JlIHN1Y2Nlc3NmdWxseS4gVGhlc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjExNjEwMDgwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTk4MjM5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjExNjExNTUxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwODI4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAwNToxNTowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWxcXG5AQCAtMCwwICsxLDE5OCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gTGVtYW5zIGFuZCBNb25hY28gU29Dc1xcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBJbXJhbiBTaGFpayBcXHUwMDNjaW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbVxcdTAwM2VcXG4rICAtIFRhbml5YSBEYXMgXFx1MDAzY3Rhbml5YS5kYXNAb3NzLnF1YWxjb21tLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cXG4rICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXFxuK1xcbisgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcXG4rICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxcbisgIGNsb2Nrcy5cXG4rICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcXG4rICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXFxuKyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVXFxuKyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgb25lT2Y6XFxuKyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXFxuKyAgICAgIC0gaXRlbXM6XFxuKyAgICAgICAgICAtIGNvbnN0OiBxY29tLG1vbmFjby10c2Nzc1xcbisgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3NcXG4rXFxuKyAgcmVnOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgcmVnLW5hbWVzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gY29uc3Q6IHRzY1xcbitcXG4rICBjbG9ja3M6XFxuKyAgICBtaW5JdGVtczogMlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay5cXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgRVRVIGNsb2NrLlxcbitcXG4rICBjbG9jay1uYW1lczpcXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogYWhiXFxuKyAgICAgIC0gY29uc3Q6IGNudHJcXG4rICAgICAgLSBjb25zdDogZXR1XFxuK1xcbisgIGludGVycnVwdHM6XFxuKyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogZXR1X3N1bW1hcnlcXG4rXFxuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXFxuKyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcXG4rXFxuKyAgXFxcIiNhZGRyZXNzLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAyXFxuK1xcbisgIFxcXCIjc2l6ZS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMlxcbitcXG4rICByYW5nZXM6IHRydWVcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJeZXR1LXNsaWNlQFswLTlhLWZdKyRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGNvbmZpZ3VyYXRpb25cXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtYXhJdGVtczogMVxcbitcXG4rICAgICAgcGluY3RybC0wOiB0cnVlXFxuK1xcbisgICAgICBwaW5jdHJsLW5hbWVzOlxcbisgICAgICAgIGl0ZW1zOlxcbisgICAgICAgICAgLSBjb25zdDogZGVmYXVsdFxcbitcXG4rICAgICAgcWNvbSxldHUtZXZlbnQtc2VsOlxcbisgICAgICAgIGRlc2NyaXB0aW9uOiBFdmVudCBzZWxlY3Rpb24gdmFsdWUgZm9yIHRoaXMgc2xpY2UuXFxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuK1xcbisgICAgICBxY29tLGV0dS1zbGljZTpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXFxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuK1xcbisgICAgcmVxdWlyZWQ6XFxuKyAgICAgIC0gcmVnXFxuKyAgICAgIC0gcWNvbSxldHUtZXZlbnQtc2VsXFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcXG4rICAgICAgLSBwaW5jdHJsLTBcXG4rICAgICAgLSBwaW5jdHJsLW5hbWVzXFxuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZ1xcbisgIC0gcmVnLW5hbWVzXFxuKyAgLSBjbG9ja3NcXG4rICAtIGNsb2NrLW5hbWVzXFxuK1xcbithbGxPZjpcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgY29udGFpbnM6XFxuKyAgICAgICAgICAgIGNvbnN0OiBldHVcXG4rICAgIHRoZW46XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY2xvY2tzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgICBjbG9jay1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXFxuKyAgICAgIHJlcXVpcmVkOlxcbisgICAgICAgIC0gaW50ZXJydXB0c1xcbisgICAgICAgIC0gaW50ZXJydXB0LW5hbWVzXFxuKyAgICAgICAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgICAgICAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgICAgICAgLSByYW5nZXNcXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20sc2E4Nzc1cC1nY2MuaFxcdTAwM2VcXG4rXFxuKyAgICBzb2Mge1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcbisgICAgICB0c2Nzc0AxYzgwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20sbGVtYW5zLXRzY3NzXFxcIjtcXG4rICAgICAgICByZWcgPSBcXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuKyAgICAgICAgcmVnLW5hbWVzID0gXFxcInRzY1xcXCI7XFxuK1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuK1xcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcXHUwMDNlO1xcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXFx1MDAzYzE1NjI1MDAwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuK1xcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20sc2E4Nzc1cC1nY2MuaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgc29jIHtcXG4rICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXG4rICAgICAgdHNjc3NAMWM4MDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJxY29tLGxlbWFucy10c2Nzc1xcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcXHUwMDNlO1xcbisgICAgICAgIHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgIHJhbmdlcztcXG4rXFxuKyAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19FVFVfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIsIFxcXCJldHVcXFwiO1xcbitcXG4rICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlLCBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlO1xcbitcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzY0dJQ19TUEkgNjA0IElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJldHVfc3VtbWFyeVxcXCI7XFxuK1xcbisgICAgICAgIGV0dS1zbGljZUAxYzkxMDAwIHtcXG4rICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWM5MTAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2NpX3RpbWVyMFxcdTAwM2U7XFxuKyAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgZXR1LXNsaWNlQDFjOTIwMDAge1xcbisgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxYzkyMDAwIDB4MCAweDEwMDBcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZjY2lfdGltZXIxXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICB9O1xcbisgICAgICB9O1xcbisgICAgfTtcXG4rLi4uXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20scWR1MTAwMC10c2Nzcy55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5MzlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbFxcbkBAIC0wLDAgKzEsMTg3IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2VcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gUURVMTAwMCBTb0NcXG4rXFxuK21haW50YWluZXJzOlxcbisgIC0gSW1yYW4gU2hhaWsgXFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cXHUwMDNlXFxuKyAgLSBUYW5peWEgRGFzIFxcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXFxuKyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLlxcbitcXG4rICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXFxuKyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXJcXG4rICBjbG9ja3MuXFxuKyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXFxuKyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbFxcbisgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxcbisgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHFjb20scWR1MTAwMC10c2Nzc1xcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICByZWctbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogdHNjXFxuK1xcbisgIGNsb2NrczpcXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEFIQiBjb25maWd1cmF0aW9uIGNsb2NrLlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suXFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXFxuK1xcbisgIGNsb2NrLW5hbWVzOlxcbisgICAgbWluSXRlbXM6IDJcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBhaGJcXG4rICAgICAgLSBjb25zdDogY250clxcbisgICAgICAtIGNvbnN0OiBldHVcXG4rXFxuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXFxuKyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcXG4rXFxuKyAgXFxcIiNhZGRyZXNzLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAyXFxuK1xcbisgIFxcXCIjc2l6ZS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMlxcbitcXG4rICByYW5nZXM6IHRydWVcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJeZXR1LXNsaWNlQFswLTlhLWZdKyRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGNvbmZpZ3VyYXRpb25cXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtYXhJdGVtczogMVxcbitcXG4rICAgICAgcGluY3RybC0wOiB0cnVlXFxuK1xcbisgICAgICBwaW5jdHJsLW5hbWVzOlxcbisgICAgICAgIGl0ZW1zOlxcbisgICAgICAgICAgLSBjb25zdDogZGVmYXVsdFxcbitcXG4rICAgICAgaW50ZXJydXB0czpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogUGVyIHNsaWNlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgRVRVIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IHRyaWdnZXIuXFxuKyAgICAgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgICAgIHFjb20sZXR1LWV2ZW50LXNlbDpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxcbisgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbitcXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XFxuKyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLlxcbisgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbitcXG4rICAgIHJlcXVpcmVkOlxcbisgICAgICAtIHJlZ1xcbisgICAgICAtIGludGVycnVwdHNcXG4rICAgICAgLSBxY29tLGV0dS1ldmVudC1zZWxcXG4rICAgICAgLSBxY29tLGV0dS1zbGljZVxcbisgICAgICAtIHBpbmN0cmwtMFxcbisgICAgICAtIHBpbmN0cmwtbmFtZXNcXG4rICAgIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSByZWctbmFtZXNcXG4rICAtIGNsb2Nrc1xcbisgIC0gY2xvY2stbmFtZXNcXG4rXFxuK2FsbE9mOlxcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY2xvY2stbmFtZXM6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGV0dVxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICBjbG9ja3M6XFxuKyAgICAgICAgICBtaW5JdGVtczogM1xcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgcmVxdWlyZWQ6XFxuKyAgICAgICAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgICAgICAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgICAgICAgLSByYW5nZXNcXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFxcdTAwM2VcXG4rXFxuKyAgICBzb2Mge1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcbisgICAgICB0c2Nzc0AxZGEwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20scWR1MTAwMC10c2Nzc1xcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDBcXHUwMDNlO1xcbisgICAgICAgIHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjNTAwMDAwMDAwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuK1xcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgc29jIHtcXG4rICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXG4rICAgICAgdHNjc3NAMWRhMDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJxY29tLHFkdTEwMDAtdHNjc3NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXFx1MDAzZTtcXG4rICAgICAgICByZWctbmFtZXMgPSBcXFwidHNjXFxcIjtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICByYW5nZXM7XFxuK1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ0ZHX0FIQl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiLCBcXFwiZXR1XFxcIjtcXG4rXFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1xcdTAwM2UsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19FVFVfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFxcdTAwM2M1MDAwMDAwMDBcXHUwMDNlLCBcXHUwMDNjNTAwMDAwMDAwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgZXR1LXNsaWNlQDFkYjEwMDAge1xcbisgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxZGIxMDAwIDB4MCAweDEwMDBcXHUwMDNlO1xcbisgICAgICAgICAgaW50ZXJydXB0cyA9IFxcdTAwM2NHSUNfU1BJIDMyOSBJUlFfVFlQRV9FREdFX1JJU0lOR1xcdTAwM2U7XFxuKyAgICAgICAgICBwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmNjaV90aW1lcjBcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4rICAgICAgICAgIHFjb20sZXR1LWV2ZW50LXNlbCA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgIH07XFxuK1xcbisgICAgICAgIGV0dS1zbGljZUAxZGIyMDAwIHtcXG4rICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG4rICAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjR0lDX1NQSSAzMzAgSVJRX1RZUEVfRURHRV9SSVNJTkdcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZjY2lfdGltZXIxXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICB9O1xcbisgICAgICB9O1xcbisgICAgfTtcXG4rLi4uXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxcbmluZGV4IDNiMDUzOWUyN2I1MTkyLi5lMjI1MjkyYTFlNDFhNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcXG5AQCAtMzAyMyw2ICszMDIzLDE3IEBAIHBjaWUxX3BoeTogcGh5QDFjMTQwMDAge1xcbiBcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbiBcXHRcXHR9O1xcbiBcXG4rXFx0XFx0dHNjc3NAMWM4MDAwMCB7XFxuK1xcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicWNvbSxsZW1hbnMtdHNjc3NcXFwiO1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXHRcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1xcdTAwM2UsXFxuK1xcdFxcdFxcdFxcdCBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rXFx0XFx0XFx0Y2xvY2stbmFtZXMgPSBcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiO1xcbitcXHRcXHRcXHRhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rXFx0XFx0XFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlO1xcbitcXHRcXHR9O1xcbitcXG4gXFx0XFx0dWZzX21lbV9oYzogdWZzaGNAMWQ4NDAwMCB7XFxuIFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicWNvbSxzYTg3NzVwLXVmc2hjXFxcIiwgXFxcInFjb20sdWZzaGNcXFwiLCBcXFwiamVkZWMsdWZzLTIuMFxcXCI7XFxuIFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHgwMWQ4NDAwMCAweDAgMHgzMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcXG5pbmRleCAyNmNjODZkMTJmNzI1Ni4uODk3OWMxODIyNTE4NGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaVxcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcXG5AQCAtODc2LDYgKzg3NiwxNyBAQCBzeXN0ZW1fbm9jOiBpbnRlcmNvbm5lY3RAMTY0MDAwMCB7XFxuIFxcdFxcdFxcdCNpbnRlcmNvbm5lY3QtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuIFxcdFxcdH07XFxuIFxcbitcXHRcXHR0c2Nzc0AxZGEwMDAwIHtcXG4rXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJxY29tLHFkdTEwMDAtdHNjc3NcXFwiO1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXHRcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXFx1MDAzZSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlO1xcbitcXHRcXHRcXHRjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuK1xcdFxcdFxcdGFzc2lnbmVkLWNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlO1xcbitcXHRcXHRcXHRhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFxcdTAwM2M1MDAwMDAwMDBcXHUwMDNlO1xcbitcXHRcXHR9O1xcbitcXG4gXFx0XFx0dGNzcl9tdXRleDogaHdsb2NrQDFmNDAwMDAge1xcbiBcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInFjb20sdGNzci1tdXRleFxcXCI7XFxuIFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZyBiL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWdcXG5pbmRleCA2ZWM4ZDNhNjljOThlMC4uNzM0MzVlNWY4ODc3ZDIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xcbisrKyBiL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWdcXG5AQCAtNjgzLDYgKzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW1cXG4gQ09ORklHX1NQTUk9eVxcbiBDT05GSUdfU1BNSV9BUFBMRT1tXFxuIENPTkZJR19TUE1JX01US19QTUlGPW1cXG4rQ09ORklHX1BUUF9RQ09NX1RTQz1tXFxuIENPTkZJR19QSU5DVFJMX0FQUExFX0dQSU89bVxcbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxcbiBDT05GSUdfUElOQ1RSTF9NQVg3NzYyMD15XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuQEAgLTI2Myw0ICsyNjMsMTQgQEAgY29uZmlnIFBUUF9ORVRDX1Y0X1RJTUVSXFxuIFxcdCAgc3luY2hyb25pemF0aW9uLiBJdCBhbHNvIHN1cHBvcnRzIHBlcmlvZGljIG91dHB1dCBzaWduYWwgKGUuZy4gUFBTKVxcbiBcXHQgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy5cXG4gXFxuK2NvbmZpZyBQVFBfUUNPTV9UU0NcXG4rXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRTQyBhcyBQVFAgY2xvY2tcXFwiXFxuK1xcdGRlcGVuZHMgb24gQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXJcXG4rXFx0ICBTdWJzeXN0ZW0gKFRTQ1NTKSBhcyBhIFBUUCBjbG9jay5cXG4rXFxuK1xcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbitcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cXG4rXFxuIGVuZG1lbnVcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvTWFrZWZpbGUgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxcbmluZGV4IGJkYzQ3ZTI4NGYxNGU3Li5mZjAyOTMyM2U5OGY1ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvcHRwL01ha2VmaWxlXFxuQEAgLTIyLDMgKzIyLDQgQEAgb2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUClcXHQrPSBwdHBfb2NwLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVxcdFxcdCs9IHB0cF9kZmxfdG9kLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9TMzkwKVxcdFxcdFxcdCs9IHB0cF9zMzkwLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9ORVRDX1Y0X1RJTUVSKVxcdFxcdCs9IHB0cF9uZXRjLm9cXG4rb2JqLSQoQ09ORklHX1BUUF9RQ09NX1RTQylcXHRcXHQrPSBwdHBfcWNvbV90c2Mub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuYyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjI5MjQ4MTUwMzg4ZjNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcXG5AQCAtMCwwICsxLDQxMyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuKy8qXFxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgUk9MTE9WRVJfVkFMXFx0XFx0XFx0XFx0OTk5OTk5OTk5XFxuKyNkZWZpbmUgTlNFQ19TSElGVFxcdFxcdFxcdFxcdDMyXFxuKyNkZWZpbmUgUFVMU0VfV0lEVEhfTUFTS1xcdFxcdFxcdEdFTk1BU0soNywgNilcXG4rI2RlZmluZSBEUklGVF9NQVhfUkVTXFx0XFx0XFx0XFx0MHgxRkZGRlxcbisjZGVmaW5lIERSSUZUX0pVTVBfU1dBTExPV1xcdFxcdFxcdEJJVCgzMSlcXG4rI2RlZmluZSBEUklGVF9QRVJJT0RfTUFTS1xcdFxcdFxcdEdFTk1BU0soMjgsIDEyKVxcbisjZGVmaW5lIERSSUZUX1NVQlBFUklPRF9NQVNLXFx0XFx0XFx0R0VOTUFTSygxMSwgMClcXG4rI2RlZmluZSBEUklGVF9JTlRFUlZBTF9VU1xcdFxcdFxcdDEwXFxuKyNkZWZpbmUgRFJJRlRfTUlOX1RJTUVPVVRfVVNcXHRcXHRcXHQ1MDAwXFxuK1xcbisjZGVmaW5lIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIGNudHJfcmVzKVxcdFxcdFxcdFxcXFxcXG4rXFx0bWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcXFxcXFxuK1xcdCAgICAgIERSSUZUX01JTl9USU1FT1VUX1VTKVxcbitcXG4rc3RydWN0IHFjb21fdHNjX3JlZ3Mge1xcbitcXHR1MzIgY29udHJvbF9jbnRjcjtcXG4rXFx0dTMyIGNvbnRyb2xfY250Y3ZfbG87XFxuK1xcdHUzMiBjb250cm9sX2NudGN2X2hpO1xcbitcXHR1MzIgZHJpZnRfY29ycmVjdF9pbmNyX3ZhbDtcXG4rXFx0dTMyIGRyaWZ0X2NvcnJlY3RfZHVyYXRpb247XFxuK1xcdHUzMiBkcmlmdF9jb3JyZWN0X2NtZDtcXG4rXFx0dTMyIHJvbGxvdmVyX3ZhbDtcXG4rXFx0dTMyIG9mZnNldF9sbztcXG4rXFx0dTMyIG9mZnNldF9oaTtcXG4rXFx0dTMyIHJlYWRfY250Y3ZfbG87XFxuK1xcdHUzMiByZWFkX2NudGN2X2hpO1xcbit9O1xcbitcXG4rLyoqXFxuKyAqIHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAtIFNvQyBzcGVjaWZpYyBUU0MgaGFyZHdhcmUgY2FwYWJpbGl0aWVzXFxuKyAqXFxuKyAqIEByb2xsb3ZlcjogaW5kaWNhdGVzIHRoZSBjb3VudGVyIHVzZXMgc2VjL25zZWMgc3BsaXRcXG4rICogQG9mZnNldF9jb3JyZWN0aW9uOiBoYXJkd2FyZSBzdXBwb3J0cyBvbmUtc2hvdCBvZmZzZXQgY29ycmVjdGlvblxcbisgKiBAcHVsc2Vfd2lkdGg6IHZhbGlkIHB1bHNlIHdpZHRoIGluIGN5Y2xlcyBmb3IgZHJpZnQgY29ycmVjdGlvblxcbisgKiBAY250cl9yZXM6IFRTQyBjb3VudGVyIHJlc29sdXRpb24gaW4gbnNlY1xcbisgKiBAcmVnX2xheW91dDogcmVnaXN0ZXIgbGF5b3V0IGZvciB0aGlzIFNvQy92ZXJzaW9uXFxuKyAqL1xcbitzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEge1xcbitcXHRib29sIHJvbGxvdmVyO1xcbitcXHRib29sIG9mZnNldF9jb3JyZWN0aW9uO1xcbitcXHRpbnQgcHVsc2Vfd2lkdGg7XFxuK1xcdGludCBjbnRyX3JlcztcXG4rXFx0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ19sYXlvdXQ7XFxuK307XFxuK1xcbitzdHJ1Y3QgcWNvbV90c2Mge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuK1xcdHZvaWQgX19pb21lbSAqYmFzZTtcXG4rXFx0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XFxuK1xcdHN0cnVjdCBjbGsgKmFoYl9jbGs7XFxuK1xcdHN0cnVjdCBjbGsgKmNudHJfY2xrO1xcbitcXHRzdHJ1Y3QgY2xrICpldHVfY2xrO1xcbitcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHA7XFxuK1xcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBwdHBfaW5mbztcXG4rXFx0LyogTXV0ZXggdG8gcHJvdGVjdCBvcGVyYXRpb25zIGZyb20gYmVpbmcgaW50ZXJydXB0ZWQgKi9cXG4rXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuK307XFxuK1xcbitzdGF0aWMgYm9vbCBxY29tX3RzY19pc19lbmFibGVkKHN0cnVjdCBxY29tX3RzYyAqdHNjKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcbitcXHRyZXR1cm4gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKSBcXHUwMDI2IEJJVCgwKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX3RzY19yZWFkX3RpbWUoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cXHUwMDNlc29jLVxcdTAwM2VyZWdfbGF5b3V0O1xcbitcXHR1MzIgaGksIGxvO1xcbitcXG4rXFx0aWYgKCFxY29tX3RzY19pc19lbmFibGVkKHRzYykpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aGkgPSByZWFkbF9yZWxheGVkKHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZXJlYWRfY250Y3ZfaGkpO1xcbitcXHRsbyA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlcmVhZF9jbnRjdl9sbyk7XFxuK1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKSB7XFxuK1xcdFxcdHRzLVxcdTAwM2V0dl9zZWMgPSBoaTtcXG4rXFx0XFx0dHMtXFx1MDAzZXR2X25zZWMgPSBsbztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTY0IG5zID0gKCh1NjQpaGkgXFx1MDAzY1xcdTAwM2MgTlNFQ19TSElGVCkgfCBsbztcXG4rXFxuK1xcdFxcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIHFjb21fdHNjX3NwbGl0X3RzKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCB0cywgdTMyICpoaSwgdTMyICpsbylcXG4re1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKSB7XFxuK1xcdFxcdCpoaSA9IHRzLnR2X3NlYztcXG4rXFx0XFx0KmxvID0gdHMudHZfbnNlYztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTY0IG5zID0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2dHMpO1xcbitcXG4rXFx0XFx0KmxvID0gbG93ZXJfMzJfYml0cyhucyk7XFxuK1xcdFxcdCpoaSA9IHVwcGVyXzMyX2JpdHMobnMpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcdHUzMiByZWd2YWwsIGhpLCBsbztcXG4rXFxuK1xcdHFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsIFxcdTAwMjZoaSwgXFx1MDAyNmxvKTtcXG4rXFxuK1xcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGN2X2xvKTtcXG4rXFx0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWNvbnRyb2xfY250Y3ZfaGkpO1xcbitcXG4rXFx0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKTtcXG4rXFx0cmVndmFsIHw9IEJJVCgwKTtcXG4rXFx0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQoc3RydWN0IHFjb21fdHNjICp0c2MsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYzY0IHRvZDtcXG4rXFx0dTMyIHJlZ3ZhbCwgaGksIGxvO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHRzYy1cXHUwMDNlc29jLVxcdTAwM2VvZmZzZXRfY29ycmVjdGlvbikge1xcbitcXHRcXHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcXHUwMDI2aGksIFxcdTAwMjZsbyk7XFxuK1xcbitcXHRcXHR3cml0ZWxfcmVsYXhlZChsbywgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlb2Zmc2V0X2xvKTtcXG4rXFx0XFx0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZW9mZnNldF9oaSk7XFxuK1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0LypcXG4rXFx0ICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZVxcbitcXHQgKiBjb3VudGVyIHdpdGggdGhlIGNvcnJlY3RlZCB0aW1lLCBhcyByZWNvbW1lbmRlZCBieSB0aGUgaGFyZHdhcmVcXG4rXFx0ICogZGVzaWduIHRlYW0uXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCBcXHUwMDI2dG9kKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcdHJlZ3ZhbCBcXHUwMDI2PSB+QklUKDApO1xcbitcXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWNvbnRyb2xfY250Y3IpO1xcbitcXG4rXFx0cmV0dXJuIHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgdGltZXNwZWM2NF9hZGQodG9kLCB0cykpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cXHUwMDNlc29jLVxcdTAwM2VyZWdfbGF5b3V0O1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XFxuK1xcdHUzMiByZWd2YWw7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKHFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkge1xcbitcXHRcXHRxY29tX3RzY19yZWFkX3RpbWUodHNjLCBcXHUwMDI2dG9kKTtcXG4rXFx0XFx0cmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIHRpbWVzcGVjNjRfc3ViKCp0cywgdG9kKSk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0LyogQ29uZmlndXJlIGFuZCBlbmFibGUgdGhlIFRTQyBjb3VudGVyICovXFxuK1xcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcdHJlZ3ZhbCB8PSBGSUVMRF9QUkVQKFBVTFNFX1dJRFRIX01BU0ssIHRzYy1cXHUwMDNlc29jLVxcdTAwM2VwdWxzZV93aWR0aCk7XFxuK1xcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKVxcbitcXHRcXHR3cml0ZWxfcmVsYXhlZChST0xMT1ZFUl9WQUwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZXJvbGxvdmVyX3ZhbCk7XFxuK1xcbitcXHRyZXQgPSBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsICp0cyk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV90c2NfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbit7XFxuK1xcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXHRyZXQgPSBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHRzYywgbnNfdG9fdGltZXNwZWM2NChkZWx0YSkpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX2RyaWZ0X2NvcnJlY3Rpb24oc3RydWN0IHFjb21fdHNjICp0c2MsIGxvbmcgc2NhbGVkX3BwbSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy1cXHUwMDNlc29jO1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHNvYy1cXHUwMDNlcmVnX2xheW91dDtcXG4rXFx0bG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYihzY2FsZWRfcHBtKTtcXG4rXFx0dTY0IHBlcmlvZCwgaW5jdmFsID0gMDtcXG4rXFx0dTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDtcXG4rXFxuK1xcdGlmIChwcGIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdHBwYiA9IC1wcGI7XFxuK1xcdFxcdHJlZ3ZhbCBcXHUwMDI2PSB+RFJJRlRfSlVNUF9TV0FMTE9XO1xcbitcXG4rXFx0XFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cXHUwMDNlY250cl9yZXMpO1xcbitcXHRcXHRpZiAocGVyaW9kIFxcdTAwM2U9IERSSUZUX01BWF9SRVMpXFxuK1xcdFxcdFxcdHBlcmlvZCA9IERSSUZUX01BWF9SRVM7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJlZ3ZhbCB8PSBEUklGVF9KVU1QX1NXQUxMT1c7XFxuK1xcbitcXHRcXHRwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLVxcdTAwM2VjbnRyX3Jlcyk7XFxuK1xcdFxcdGlmIChwZXJpb2QgXFx1MDAzZT0gRFJJRlRfTUFYX1JFUykge1xcbitcXHRcXHRcXHRwZXJpb2QgPSBEUklGVF9NQVhfUkVTO1xcbitcXHRcXHRcXHRpbmN2YWwgPSBzb2MtXFx1MDAzZWNudHJfcmVzICogMjtcXG4rXFx0XFx0fSBlbHNlIGlmIChwcGIgXFx1MDAzYyBzb2MtXFx1MDAzZWNudHJfcmVzKSB7XFxuK1xcdFxcdFxcdGluY3ZhbCA9IHNvYy1cXHUwMDNlY250cl9yZXMgKyBwcGI7XFxuK1xcdFxcdFxcdHBlcmlvZCA9IDE7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGluY3ZhbCA9IHNvYy1cXHUwMDNlY250cl9yZXMgKiAyO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHN1YnBlcmlvZCA9IHNvYy1cXHUwMDNlcHVsc2Vfd2lkdGggKiAyO1xcbitcXHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9TVUJQRVJJT0RfTUFTSywgc3VicGVyaW9kKTtcXG4rXFx0cmVndmFsIHw9IEZJRUxEX1BSRVAoRFJJRlRfUEVSSU9EX01BU0ssIHBlcmlvZCk7XFxuK1xcbitcXHQvKiBVcGRhdGUganVtcC9zd2FsbG93LCBwZXJpb2QsIHN1YnBlcmlvZCAqL1xcbitcXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWRyaWZ0X2NvcnJlY3RfZHVyYXRpb24pO1xcbitcXG4rXFx0d3JpdGVsX3JlbGF4ZWQoaW5jdmFsLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcXG4rXFxuK1xcdC8qIFRyaWdnZXIgdGhlIGRyaWZ0IGNvcnJlY3Rpb24gKi9cXG4rXFx0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XFxuK1xcdHJlZ3ZhbCB8PSBCSVQoMCk7XFxuK1xcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQpO1xcbitcXG4rXFx0cmV0dXJuIHJlYWRsX3BvbGxfdGltZW91dCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLFxcbitcXHRcXHRcXHRcXHQgICEocmVndmFsIFxcdTAwMjYgQklUKDEpKSwgRFJJRlRfSU5URVJWQUxfVVMsXFxuK1xcdFxcdFxcdFxcdCAgRFJJRlRfVElNRU9VVF9VUyhwZXJpb2QsIHN1YnBlcmlvZCwgc29jLVxcdTAwM2VjbnRyX3JlcykpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHNjYWxlZF9wcG0gPT0gMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcWNvbV9wdHBfaW5mbyA9IHtcXG4rXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4rXFx0Lm5hbWVcXHRcXHQ9IFxcXCJQVFBfUUNPTV9UU0NcXFwiLFxcbitcXHQubWF4X2FkalxcdD0gOTk5OTk5OSxcXG4rXFx0LmFkamZpbmVcXHQ9IHFjb21fdHNjX2FkamZpbmUsXFxuK1xcdC5hZGp0aW1lXFx0PSBxY29tX3RzY19hZGp0aW1lLFxcbitcXHQuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLFxcbitcXHQuc2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19zZXR0aW1lLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzIHFjb21fdHNjX2xheW91dCA9IHtcXG4rXFx0LmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCxcXG4rXFx0LmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCxcXG4rXFx0LmNvbnRyb2xfY250Y3ZfaGkgICAgICAgICA9IDB4YyxcXG4rXFx0LmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsXFxuK1xcdC5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLFxcbitcXHQuZHJpZnRfY29ycmVjdF9jbWQgICAgICAgID0gMHgzNCxcXG4rXFx0LnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsXFxuK1xcdC5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLFxcbitcXHQub2Zmc2V0X2hpICAgICAgICAgICAgICAgID0gMHg1NCxcXG4rXFx0LnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCxcXG4rXFx0LnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0ge1xcbitcXHQucmVnX2xheW91dFxcdFxcdD0gXFx1MDAyNnFjb21fdHNjX2xheW91dCxcXG4rXFx0LnJvbGxvdmVyXFx0XFx0PSBmYWxzZSxcXG4rXFx0Lm9mZnNldF9jb3JyZWN0aW9uXFx0PSBmYWxzZSxcXG4rXFx0LnB1bHNlX3dpZHRoXFx0XFx0PSAyLFxcbitcXHQuY250cl9yZXNcXHRcXHQ9IDY0LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSBxY29tX3RzY19xZHUxMDAwID0ge1xcbitcXHQucmVnX2xheW91dFxcdFxcdD0gXFx1MDAyNnFjb21fdHNjX2xheW91dCxcXG4rXFx0LnJvbGxvdmVyXFx0XFx0PSB0cnVlLFxcbitcXHQub2Zmc2V0X2NvcnJlY3Rpb25cXHQ9IHRydWUsXFxuK1xcdC5wdWxzZV93aWR0aFxcdFxcdD0gMyxcXG4rXFx0LmNudHJfcmVzXFx0XFx0PSAyLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV90c2Nfb2ZfbWF0Y2hbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGxlbWFucy10c2Nzc1xcXCIsIC5kYXRhID0gXFx1MDAyNnFjb21fdHNjX2xlbWFucyB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20scWR1MTAwMC10c2Nzc1xcXCIsIC5kYXRhID0gXFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcXG4rXFx0eyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fdHNjX29mX21hdGNoKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHFjb21fcHRwX3RzY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXG4rXFx0aWYgKHRzYyBcXHUwMDI2XFx1MDAyNiB0c2MtXFx1MDAzZXB0cCkge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3Rlcih0c2MtXFx1MDAzZXB0cCk7XFxuK1xcdFxcdHRzYy1cXHUwMDNlcHRwID0gTlVMTDtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fcHRwX3RzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jO1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcXG4rXFx0c3RydWN0IHJlc291cmNlICpyX21lbTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKCFzb2MpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0dHNjID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqdHNjKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdHNjKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHRzYy1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0dHNjLVxcdTAwM2Vzb2MgPSBzb2M7XFxuK1xcbitcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyX21lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sIFxcXCJ0c2NcXFwiKTtcXG4rXFx0aWYgKCFyX21lbSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJubyBJTyByZXNvdXJjZSBkZWZpbmVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0fVxcbitcXG4rXFx0dHNjLVxcdTAwM2ViYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJfbWVtKTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZWJhc2UpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih0c2MtXFx1MDAzZWJhc2UpO1xcbitcXG4rXFx0dHNjLVxcdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImFoYlxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHRzYy1cXHUwMDNlYWhiX2NsaykpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHRzYy1cXHUwMDNlYWhiX2Nsayk7XFxuK1xcbitcXHR0c2MtXFx1MDAzZWNudHJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNudHJcXFwiKTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZWNudHJfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIodHNjLVxcdTAwM2VjbnRyX2Nsayk7XFxuK1xcbitcXHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cXG4rXFx0dHNjLVxcdTAwM2VldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImV0dVxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHRzYy1cXHUwMDNlZXR1X2NsaykpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHRzYy1cXHUwMDNlZXR1X2Nsayk7XFxuK1xcbitcXHR0c2MtXFx1MDAzZXB0cF9pbmZvID0gcWNvbV9wdHBfaW5mbztcXG4rXFxuK1xcdHRzYy1cXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZ0c2MtXFx1MDAzZXB0cF9pbmZvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZXB0cCkpIHtcXG4rXFx0XFx0cmV0ID0gUFRSX0VSUih0c2MtXFx1MDAzZXB0cCk7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwdHAgY2xvY2tcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fcHRwX3RzY19kcml2ZXIgPSB7XFxuK1xcdC5wcm9iZSAgPSBxY29tX3B0cF90c2NfcHJvYmUsXFxuK1xcdC5yZW1vdmUgPSBxY29tX3B0cF90c2NfcmVtb3ZlLFxcbitcXHQuZHJpdmVyID0ge1xcbitcXHRcXHQubmFtZSA9IFxcXCJxY29tX3B0cF90c2NcXFwiLFxcbitcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBxY29tX3RzY19vZl9tYXRjaCxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX3B0cF90c2NfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUFRQIFFDT00gVFNDIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjY2NzY3NTUzMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNjQ2NjU3NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRlNGY5ODMyYWFlMzA4MmE5NjFkMGM4NGRjZTY1NDdmN2EwY2IzNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAwNToxNTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sXG5AQCAtMCwwICsxLDE5OCBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2VcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKSBvbiBRdWFsY29tbSBMZW1hbnMgYW5kIE1vbmFjbyBTb0NzXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEltcmFuIFNoYWlrIFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbisgIC0gVGFuaXlhIERhcyBcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cbisgIGJsb2NrcyAtIHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgKFRTQykgYW5kIHRoZSBFdmVudCBUaW1lc3RhbXAgVW5pdCAoRVRVKS5cbitcbisgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcbisgIGZvciBzeXN0ZW0gdGltZWtlZXBpbmcsIGFuZCBpcyBmdW5jdGlvbmFsIHdpdGgganVzdCB0aGUgQUhCIGFuZCBjb3VudGVyXG4rICBjbG9ja3MuXG4rICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcbisgIGhhcmR3YXJlIGV2ZW50cywgZWFjaCBFVFUgc2xpY2UgYmluZGluZyBhIHNsaWNlIGlkZW50aWZpZXIgdG8gYW4gZXh0ZXJuYWxcbisgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxuKyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBvbmVPZjpcbisgICAgICAtIGNvbnN0OiBxY29tLGxlbWFucy10c2Nzc1xuKyAgICAgIC0gaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IHFjb20sbW9uYWNvLXRzY3NzXG4rICAgICAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IHRzY1xuK1xuKyAgY2xvY2tzOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBpdGVtczpcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgbWluSXRlbXM6IDJcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogYWhiXG4rICAgICAgLSBjb25zdDogY250clxuKyAgICAgIC0gY29uc3Q6IGV0dVxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgZGVzY3JpcHRpb246IFN1bW1hcnkgaW50ZXJydXB0IHJhaXNlZCBiYXNlZCBvbiBleHRlcm5hbCBldmVudCBmb3IgYW55IG9mIHRoZSBFVFUgc2xpY2VzLlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBldHVfc3VtbWFyeVxuK1xuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4rICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZVxuK1xuKyAgXCIjYWRkcmVzcy1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgXCIjc2l6ZS1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgcmFuZ2VzOiB0cnVlXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5ldHUtc2xpY2VAWzAtOWEtZl0rJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4rICAgIHByb3BlcnRpZXM6XG4rICAgICAgcmVnOlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBwaW5jdHJsLTA6IHRydWVcbitcbisgICAgICBwaW5jdHJsLW5hbWVzOlxuKyAgICAgICAgaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbitcbisgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXG4rXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXG4rICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbisgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbisgICAgICAtIHBpbmN0cmwtMFxuKyAgICAgIC0gcGluY3RybC1uYW1lc1xuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithbGxPZjpcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBjb25zdDogZXR1XG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrczpcbisgICAgICAgICAgbWluSXRlbXM6IDNcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBpbnRlcnJ1cHRzXG4rICAgICAgICAtIGludGVycnVwdC1uYW1lc1xuKyAgICAgICAgLSBcIiNhZGRyZXNzLWNlbGxzXCJcbisgICAgICAgIC0gXCIjc2l6ZS1jZWxsc1wiXG4rICAgICAgICAtIHJhbmdlc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9xY29tLHNhODc3NXAtZ2NjLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFjODAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxsZW1hbnMtdHNjc3NcIjtcbisgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4rICAgICAgICByZWctbmFtZXMgPSBcInRzY1wiO1xuK1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYWhiXCIsIFwiY250clwiO1xuK1xuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuKyAgICAgIH07XG4rICAgIH07XG4rXG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaFx1MDAzZVxuK1xuKyAgICBzb2Mge1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rXG4rICAgICAgdHNjc3NAMWM4MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJxY29tLGxlbWFucy10c2Nzc1wiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbisgICAgICAgIHJlZy1uYW1lcyA9IFwidHNjXCI7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICByYW5nZXM7XG4rXG4rICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcdTAwM2UsXG4rICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbisgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGNsb2NrLW5hbWVzID0gXCJhaGJcIiwgXCJjbnRyXCIsIFwiZXR1XCI7XG4rXG4rICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXHUwMDNjMTU2MjUwMDBcdTAwM2UsIFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuK1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgNjA0IElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcImV0dV9zdW1tYXJ5XCI7XG4rXG4rICAgICAgICBldHUtc2xpY2VAMWM5MTAwMCB7XG4rICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxYzkxMDAwIDB4MCAweDEwMDBcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNjaV90aW1lcjBcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgfTtcbitcbisgICAgICAgIGV0dS1zbGljZUAxYzkyMDAwIHtcbisgICAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjOTIwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcdTAwM2MyXHUwMDNlO1xuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICAgIH07XG4rICAgIH07XG4rLi4uXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5Mzlcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbkBAIC0wLDAgKzEsMTg3IEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcHRwL3Fjb20scWR1MTAwMC10c2Nzcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKSBvbiBRdWFsY29tbSBRRFUxMDAwIFNvQ1xuK1xuK21haW50YWluZXJzOlxuKyAgLSBJbXJhbiBTaGFpayBcdTAwM2NpbXJhbi5zaGFpa0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4rICAtIFRhbml5YSBEYXMgXHUwMDNjdGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXG4rICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXG4rXG4rICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXG4rICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxuKyAgY2xvY2tzLlxuKyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXG4rICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXG4rICBldmVudCBzZWxlY3Rvci4gU3VwcG9ydCBmb3IgdGhlIEVUVSBibG9jayByZXF1aXJlcyB0aGUgYWRkaXRpb25hbCBFVFVcbisgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcWNvbSxxZHUxMDAwLXRzY3NzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IHRzY1xuK1xuKyAgY2xvY2tzOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBpdGVtczpcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgbWluSXRlbXM6IDJcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogYWhiXG4rICAgICAgLSBjb25zdDogY250clxuKyAgICAgIC0gY29uc3Q6IGV0dVxuK1xuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4rICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZVxuK1xuKyAgXCIjYWRkcmVzcy1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgXCIjc2l6ZS1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgcmFuZ2VzOiB0cnVlXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5ldHUtc2xpY2VAWzAtOWEtZl0rJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4rICAgIHByb3BlcnRpZXM6XG4rICAgICAgcmVnOlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBwaW5jdHJsLTA6IHRydWVcbitcbisgICAgICBwaW5jdHJsLW5hbWVzOlxuKyAgICAgICAgaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbitcbisgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgZGVzY3JpcHRpb246IFBlciBzbGljZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IEVUVSBiYXNlZCBvbiBleHRlcm5hbCBldmVudCB0cmlnZ2VyLlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXG4rXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXG4rICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbisgICAgICAtIGludGVycnVwdHNcbisgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbisgICAgICAtIHBpbmN0cmwtMFxuKyAgICAgIC0gcGluY3RybC1uYW1lc1xuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithbGxPZjpcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBjb25zdDogZXR1XG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrczpcbisgICAgICAgICAgbWluSXRlbXM6IDNcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBcIiNhZGRyZXNzLWNlbGxzXCJcbisgICAgICAgIC0gXCIjc2l6ZS1jZWxsc1wiXG4rICAgICAgICAtIHJhbmdlc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9xY29tLHFkdTEwMDAtZ2NjLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFkYTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJ0c2NcIjtcbitcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYWhiXCIsIFwiY250clwiO1xuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZTtcbisgICAgICB9O1xuKyAgICB9O1xuK1xuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFx1MDAzZVxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFkYTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJ0c2NcIjtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgIHJhbmdlcztcbitcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2UsXG4rICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19FVFVfQ0xLXHUwMDNlO1xuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcImFoYlwiLCBcImNudHJcIiwgXCJldHVcIjtcbitcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXHUwMDNjNTAwMDAwMDAwXHUwMDNlLCBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4rXG4rICAgICAgICBldHUtc2xpY2VAMWRiMTAwMCB7XG4rICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxZGIxMDAwIDB4MCAweDEwMDBcdTAwM2U7XG4rICAgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDMyOSBJUlFfVFlQRV9FREdFX1JJU0lOR1x1MDAzZTtcbisgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICB9O1xuK1xuKyAgICAgICAgZXR1LXNsaWNlQDFkYjIwMDAge1xuKyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuKyAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjR0lDX1NQSSAzMzAgSVJRX1RZUEVfRURHRV9SSVNJTkdcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNjaV90aW1lcjFcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcdTAwM2MyXHUwMDNlO1xuKyAgICAgICAgfTtcbisgICAgICB9O1xuKyAgICB9O1xuKy4uLlxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxuaW5kZXggM2IwNTM5ZTI3YjUxOTIuLmUyMjUyOTJhMWU0MWE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcbkBAIC0zMDIzLDYgKzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7XG4gXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuIFx0XHR9O1xuIFxuK1x0XHR0c2Nzc0AxYzgwMDAwIHtcbitcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLGxlbWFucy10c2Nzc1wiO1xuK1x0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4rXHRcdFx0cmVnLW5hbWVzID0gXCJ0c2NcIjtcbitcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcdTAwM2UsXG4rXHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rXHRcdFx0Y2xvY2stbmFtZXMgPSBcImFoYlwiLCBcImNudHJcIjtcbitcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbitcdFx0XHRhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuK1x0XHR9O1xuK1xuIFx0XHR1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLHNhODc3NXAtdWZzaGNcIiwgXCJxY29tLHVmc2hjXCIsIFwiamVkZWMsdWZzLTIuMFwiO1xuIFx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxZDg0MDAwIDB4MCAweDMwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbmluZGV4IDI2Y2M4NmQxMmY3MjU2Li44OTc5YzE4MjI1MTg0YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbkBAIC04NzYsNiArODc2LDE3IEBAIHN5c3RlbV9ub2M6IGludGVyY29ubmVjdEAxNjQwMDAwIHtcbiBcdFx0XHQjaW50ZXJjb25uZWN0LWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0fTtcbiBcbitcdFx0dHNjc3NAMWRhMDAwMCB7XG4rXHRcdFx0Y29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rXHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbitcdFx0XHRyZWctbmFtZXMgPSBcInRzY1wiO1xuK1x0XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuK1x0XHRcdFx0IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlO1xuK1x0XHRcdGNsb2NrLW5hbWVzID0gXCJhaGJcIiwgXCJjbnRyXCI7XG4rXHRcdFx0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rXHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4rXHRcdH07XG4rXG4gXHRcdHRjc3JfbXV0ZXg6IGh3bG9ja0AxZjQwMDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLHRjc3ItbXV0ZXhcIjtcbiBcdFx0XHRyZWcgPSBcdTAwM2MweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwXHUwMDNlO1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWcgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG5pbmRleCA2ZWM4ZDNhNjljOThlMC4uNzM0MzVlNWY4ODc3ZDIgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG4rKysgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG5AQCAtNjgzLDYgKzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW1cbiBDT05GSUdfU1BNST15XG4gQ09ORklHX1NQTUlfQVBQTEU9bVxuIENPTkZJR19TUE1JX01US19QTUlGPW1cbitDT05GSUdfUFRQX1FDT01fVFNDPW1cbiBDT05GSUdfUElOQ1RSTF9BUFBMRV9HUElPPW1cbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxuIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTI2Myw0ICsyNjMsMTQgQEAgY29uZmlnIFBUUF9ORVRDX1Y0X1RJTUVSXG4gXHQgIHN5bmNocm9uaXphdGlvbi4gSXQgYWxzbyBzdXBwb3J0cyBwZXJpb2RpYyBvdXRwdXQgc2lnbmFsIChlLmcuIFBQUylcbiBcdCAgYW5kIGV4dGVybmFsIHRyaWdnZXIgdGltZXN0YW1waW5nLlxuIFxuK2NvbmZpZyBQVFBfUUNPTV9UU0NcbitcdHRyaXN0YXRlIFwiUXVhbGNvbW0gVFNDIGFzIFBUUCBjbG9ja1wiXG4rXHRkZXBlbmRzIG9uIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4rXHRoZWxwXG4rXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyXG4rXHQgIFN1YnN5c3RlbSAoVFNDU1MpIGFzIGEgUFRQIGNsb2NrLlxuK1xuK1x0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4rXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cbitcbiBlbmRtZW51XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvTWFrZWZpbGUgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxuaW5kZXggYmRjNDdlMjg0ZjE0ZTcuLmZmMDI5MzIzZTk4ZjVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvcHRwL01ha2VmaWxlXG5AQCAtMjIsMyArMjIsNCBAQCBvYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT0NQKVx0Kz0gcHRwX29jcC5vXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVx0XHQrPSBwdHBfZGZsX3RvZC5vXG4gb2JqLSQoQ09ORklHX1BUUF9TMzkwKVx0XHRcdCs9IHB0cF9zMzkwLm9cbiBvYmotJChDT05GSUdfUFRQX05FVENfVjRfVElNRVIpXHRcdCs9IHB0cF9uZXRjLm9cbitvYmotJChDT05GSUdfUFRQX1FDT01fVFNDKVx0XHQrPSBwdHBfcWNvbV90c2Mub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jIGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjI5MjQ4MTUwMzg4ZjNcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jXG5AQCAtMCwwICsxLDQxMyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbisvKlxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4rXG4rI2RlZmluZSBST0xMT1ZFUl9WQUxcdFx0XHRcdDk5OTk5OTk5OVxuKyNkZWZpbmUgTlNFQ19TSElGVFx0XHRcdFx0MzJcbisjZGVmaW5lIFBVTFNFX1dJRFRIX01BU0tcdFx0XHRHRU5NQVNLKDcsIDYpXG4rI2RlZmluZSBEUklGVF9NQVhfUkVTXHRcdFx0XHQweDFGRkZGXG4rI2RlZmluZSBEUklGVF9KVU1QX1NXQUxMT1dcdFx0XHRCSVQoMzEpXG4rI2RlZmluZSBEUklGVF9QRVJJT0RfTUFTS1x0XHRcdEdFTk1BU0soMjgsIDEyKVxuKyNkZWZpbmUgRFJJRlRfU1VCUEVSSU9EX01BU0tcdFx0XHRHRU5NQVNLKDExLCAwKVxuKyNkZWZpbmUgRFJJRlRfSU5URVJWQUxfVVNcdFx0XHQxMFxuKyNkZWZpbmUgRFJJRlRfTUlOX1RJTUVPVVRfVVNcdFx0XHQ1MDAwXG4rXG4rI2RlZmluZSBEUklGVF9USU1FT1VUX1VTKHBlcmlvZCwgc3VicGVyaW9kLCBjbnRyX3JlcylcdFx0XHRcXFxuK1x0bWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcXFxuK1x0ICAgICAgRFJJRlRfTUlOX1RJTUVPVVRfVVMpXG4rXG4rc3RydWN0IHFjb21fdHNjX3JlZ3Mge1xuK1x0dTMyIGNvbnRyb2xfY250Y3I7XG4rXHR1MzIgY29udHJvbF9jbnRjdl9sbztcbitcdHUzMiBjb250cm9sX2NudGN2X2hpO1xuK1x0dTMyIGRyaWZ0X2NvcnJlY3RfaW5jcl92YWw7XG4rXHR1MzIgZHJpZnRfY29ycmVjdF9kdXJhdGlvbjtcbitcdHUzMiBkcmlmdF9jb3JyZWN0X2NtZDtcbitcdHUzMiByb2xsb3Zlcl92YWw7XG4rXHR1MzIgb2Zmc2V0X2xvO1xuK1x0dTMyIG9mZnNldF9oaTtcbitcdHUzMiByZWFkX2NudGN2X2xvO1xuK1x0dTMyIHJlYWRfY250Y3ZfaGk7XG4rfTtcbitcbisvKipcbisgKiBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgLSBTb0Mgc3BlY2lmaWMgVFNDIGhhcmR3YXJlIGNhcGFiaWxpdGllc1xuKyAqXG4rICogQHJvbGxvdmVyOiBpbmRpY2F0ZXMgdGhlIGNvdW50ZXIgdXNlcyBzZWMvbnNlYyBzcGxpdFxuKyAqIEBvZmZzZXRfY29ycmVjdGlvbjogaGFyZHdhcmUgc3VwcG9ydHMgb25lLXNob3Qgb2Zmc2V0IGNvcnJlY3Rpb25cbisgKiBAcHVsc2Vfd2lkdGg6IHZhbGlkIHB1bHNlIHdpZHRoIGluIGN5Y2xlcyBmb3IgZHJpZnQgY29ycmVjdGlvblxuKyAqIEBjbnRyX3JlczogVFNDIGNvdW50ZXIgcmVzb2x1dGlvbiBpbiBuc2VjXG4rICogQHJlZ19sYXlvdXQ6IHJlZ2lzdGVyIGxheW91dCBmb3IgdGhpcyBTb0MvdmVyc2lvblxuKyAqL1xuK3N0cnVjdCBxY29tX3RzY19zb2NfZGF0YSB7XG4rXHRib29sIHJvbGxvdmVyO1xuK1x0Ym9vbCBvZmZzZXRfY29ycmVjdGlvbjtcbitcdGludCBwdWxzZV93aWR0aDtcbitcdGludCBjbnRyX3JlcztcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdfbGF5b3V0O1xuK307XG4rXG4rc3RydWN0IHFjb21fdHNjIHtcbitcdHN0cnVjdCBkZXZpY2UgKmRldjtcbitcdHZvaWQgX19pb21lbSAqYmFzZTtcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jO1xuK1x0c3RydWN0IGNsayAqYWhiX2NsaztcbitcdHN0cnVjdCBjbGsgKmNudHJfY2xrO1xuK1x0c3RydWN0IGNsayAqZXR1X2NsaztcbitcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbitcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBwdHBfaW5mbztcbitcdC8qIE11dGV4IHRvIHByb3RlY3Qgb3BlcmF0aW9ucyBmcm9tIGJlaW5nIGludGVycnVwdGVkICovXG4rXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbit9O1xuK1xuK3N0YXRpYyBib29sIHFjb21fdHNjX2lzX2VuYWJsZWQoc3RydWN0IHFjb21fdHNjICp0c2MpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtXHUwMDNlc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4rXG4rXHRyZXR1cm4gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcikgXHUwMDI2IEJJVCgwKTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19yZWFkX3RpbWUoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbitcdHUzMiBoaSwgbG87XG4rXG4rXHRpZiAoIXFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRoaSA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZXJlYWRfY250Y3ZfaGkpO1xuK1x0bG8gPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VyZWFkX2NudGN2X2xvKTtcbitcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4rXHRcdHRzLVx1MDAzZXR2X3NlYyA9IGhpO1xuK1x0XHR0cy1cdTAwM2V0dl9uc2VjID0gbG87XG4rXHR9IGVsc2Uge1xuK1x0XHR1NjQgbnMgPSAoKHU2NCloaSBcdTAwM2NcdTAwM2MgTlNFQ19TSElGVCkgfCBsbztcbitcbitcdFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4re1xuK1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbitcdGludCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgcWNvbV90c2Nfc3BsaXRfdHMoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzLCB1MzIgKmhpLCB1MzIgKmxvKVxuK3tcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4rXHRcdCpoaSA9IHRzLnR2X3NlYztcbitcdFx0KmxvID0gdHMudHZfbnNlYztcbitcdH0gZWxzZSB7XG4rXHRcdHU2NCBucyA9IHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2dHMpO1xuK1xuK1x0XHQqbG8gPSBsb3dlcl8zMl9iaXRzKG5zKTtcbitcdFx0KmhpID0gdXBwZXJfMzJfYml0cyhucyk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuK1x0dTMyIHJlZ3ZhbCwgaGksIGxvO1xuK1xuK1x0cWNvbV90c2Nfc3BsaXRfdHModHNjLCB0cywgXHUwMDI2aGksIFx1MDAyNmxvKTtcbitcbitcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9sbyk7XG4rXHR3cml0ZWxfcmVsYXhlZChoaSwgdHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3ZfaGkpO1xuK1xuK1x0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4rXHRyZWd2YWwgfD0gQklUKDApO1xuK1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHN0cnVjdCBxY29tX3RzYyAqdHNjLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCB0cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbitcdHN0cnVjdCB0aW1lc3BlYzY0IHRvZDtcbitcdHUzMiByZWd2YWwsIGhpLCBsbztcbitcdGludCByZXQ7XG4rXG4rXHRpZiAodHNjLVx1MDAzZXNvYy1cdTAwM2VvZmZzZXRfY29ycmVjdGlvbikge1xuK1x0XHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcdTAwMjZoaSwgXHUwMDI2bG8pO1xuK1xuK1x0XHR3cml0ZWxfcmVsYXhlZChsbywgdHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZW9mZnNldF9sbyk7XG4rXHRcdHdyaXRlbF9yZWxheGVkKGhpLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlb2Zmc2V0X2hpKTtcbitcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHQvKlxuK1x0ICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZVxuK1x0ICogY291bnRlciB3aXRoIHRoZSBjb3JyZWN0ZWQgdGltZSwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIGhhcmR3YXJlXG4rXHQgKiBkZXNpZ24gdGVhbS5cbitcdCAqL1xuK1x0cmV0ID0gcWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcdHJlZ3ZhbCBcdTAwMjY9IH5CSVQoMCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcbitcdHJldHVybiBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsIHRpbWVzcGVjNjRfYWRkKHRvZCwgdHMpKTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4re1xuK1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuK1x0c3RydWN0IHRpbWVzcGVjNjQgdG9kO1xuK1x0dTMyIHJlZ3ZhbDtcbitcdGludCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChxY29tX3RzY19pc19lbmFibGVkKHRzYykpIHtcbitcdFx0cWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbitcdFx0cmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIHRpbWVzcGVjNjRfc3ViKCp0cywgdG9kKSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHQvKiBDb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgVFNDIGNvdW50ZXIgKi9cbitcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuK1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoUFVMU0VfV0lEVEhfTUFTSywgdHNjLVx1MDAzZXNvYy1cdTAwM2VwdWxzZV93aWR0aCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKVxuK1x0XHR3cml0ZWxfcmVsYXhlZChST0xMT1ZFUl9WQUwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vyb2xsb3Zlcl92YWwpO1xuK1xuK1x0cmV0ID0gcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIodHNjLCAqdHMpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuK3tcbitcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRyZXQgPSBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHRzYywgbnNfdG9fdGltZXNwZWM2NChkZWx0YSkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfZHJpZnRfY29ycmVjdGlvbihzdHJ1Y3QgcWNvbV90c2MgKnRzYywgbG9uZyBzY2FsZWRfcHBtKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jID0gdHNjLVx1MDAzZXNvYztcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4rXHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHNjYWxlZF9wcG0pO1xuK1x0dTY0IHBlcmlvZCwgaW5jdmFsID0gMDtcbitcdHUzMiByZWd2YWwgPSAwLCBzdWJwZXJpb2Q7XG4rXG4rXHRpZiAocHBiIFx1MDAzYyAwKSB7XG4rXHRcdHBwYiA9IC1wcGI7XG4rXHRcdHJlZ3ZhbCBcdTAwMjY9IH5EUklGVF9KVU1QX1NXQUxMT1c7XG4rXG4rXHRcdHBlcmlvZCA9IGRpdl91NjQocHBiLCBzb2MtXHUwMDNlY250cl9yZXMpO1xuK1x0XHRpZiAocGVyaW9kIFx1MDAzZT0gRFJJRlRfTUFYX1JFUylcbitcdFx0XHRwZXJpb2QgPSBEUklGVF9NQVhfUkVTO1xuK1x0fSBlbHNlIHtcbitcdFx0cmVndmFsIHw9IERSSUZUX0pVTVBfU1dBTExPVztcbitcbitcdFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cdTAwM2VjbnRyX3Jlcyk7XG4rXHRcdGlmIChwZXJpb2QgXHUwMDNlPSBEUklGVF9NQVhfUkVTKSB7XG4rXHRcdFx0cGVyaW9kID0gRFJJRlRfTUFYX1JFUztcbitcdFx0XHRpbmN2YWwgPSBzb2MtXHUwMDNlY250cl9yZXMgKiAyO1xuK1x0XHR9IGVsc2UgaWYgKHBwYiBcdTAwM2Mgc29jLVx1MDAzZWNudHJfcmVzKSB7XG4rXHRcdFx0aW5jdmFsID0gc29jLVx1MDAzZWNudHJfcmVzICsgcHBiO1xuK1x0XHRcdHBlcmlvZCA9IDE7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aW5jdmFsID0gc29jLVx1MDAzZWNudHJfcmVzICogMjtcbitcdFx0fVxuK1x0fVxuK1xuK1x0c3VicGVyaW9kID0gc29jLVx1MDAzZXB1bHNlX3dpZHRoICogMjtcbitcdHJlZ3ZhbCB8PSBGSUVMRF9QUkVQKERSSUZUX1NVQlBFUklPRF9NQVNLLCBzdWJwZXJpb2QpO1xuK1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoRFJJRlRfUEVSSU9EX01BU0ssIHBlcmlvZCk7XG4rXG4rXHQvKiBVcGRhdGUganVtcC9zd2FsbG93LCBwZXJpb2QsIHN1YnBlcmlvZCAqL1xuK1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7XG4rXG4rXHR3cml0ZWxfcmVsYXhlZChpbmN2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcbitcbitcdC8qIFRyaWdnZXIgdGhlIGRyaWZ0IGNvcnJlY3Rpb24gKi9cbitcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWRyaWZ0X2NvcnJlY3RfY21kKTtcbitcdHJlZ3ZhbCB8PSBCSVQoMCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XG4rXG4rXHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLFxuK1x0XHRcdFx0ICAhKHJlZ3ZhbCBcdTAwMjYgQklUKDEpKSwgRFJJRlRfSU5URVJWQUxfVVMsXG4rXHRcdFx0XHQgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy1cdTAwM2VjbnRyX3JlcykpO1xuK31cbitcbitzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbit7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChzY2FsZWRfcHBtID09IDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBxY29tX3B0cF9pbmZvID0ge1xuK1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4rXHQubmFtZVx0XHQ9IFwiUFRQX1FDT01fVFNDXCIsXG4rXHQubWF4X2Fkalx0PSA5OTk5OTk5LFxuK1x0LmFkamZpbmVcdD0gcWNvbV90c2NfYWRqZmluZSxcbitcdC5hZGp0aW1lXHQ9IHFjb21fdHNjX2FkanRpbWUsXG4rXHQuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLFxuK1x0LnNldHRpbWU2NCAgICAgID0gcWNvbV90c2Nfc2V0dGltZSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyBxY29tX3RzY19sYXlvdXQgPSB7XG4rXHQuY29udHJvbF9jbnRjciAgICAgICAgICAgID0gMHgwLFxuK1x0LmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCxcbitcdC5jb250cm9sX2NudGN2X2hpICAgICAgICAgPSAweGMsXG4rXHQuZHJpZnRfY29ycmVjdF9pbmNyX3ZhbCAgID0gMHgyYyxcbitcdC5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLFxuK1x0LmRyaWZ0X2NvcnJlY3RfY21kICAgICAgICA9IDB4MzQsXG4rXHQucm9sbG92ZXJfdmFsICAgICAgICAgICAgID0gMHgzYyxcbitcdC5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLFxuK1x0Lm9mZnNldF9oaSAgICAgICAgICAgICAgICA9IDB4NTQsXG4rXHQucmVhZF9jbnRjdl9sbyAgICAgICAgICAgID0gMHgxMDAwLFxuK1x0LnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0ge1xuK1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4rXHQucm9sbG92ZXJcdFx0PSBmYWxzZSxcbitcdC5vZmZzZXRfY29ycmVjdGlvblx0PSBmYWxzZSxcbitcdC5wdWxzZV93aWR0aFx0XHQ9IDIsXG4rXHQuY250cl9yZXNcdFx0PSA2NCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfcWR1MTAwMCA9IHtcbitcdC5yZWdfbGF5b3V0XHRcdD0gXHUwMDI2cWNvbV90c2NfbGF5b3V0LFxuK1x0LnJvbGxvdmVyXHRcdD0gdHJ1ZSxcbitcdC5vZmZzZXRfY29ycmVjdGlvblx0PSB0cnVlLFxuK1x0LnB1bHNlX3dpZHRoXHRcdD0gMyxcbitcdC5jbnRyX3Jlc1x0XHQ9IDIsXG4rfTtcbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxsZW1hbnMtdHNjc3NcIiwgLmRhdGEgPSBcdTAwMjZxY29tX3RzY19sZW1hbnMgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20scWR1MTAwMC10c2Nzc1wiLCAuZGF0YSA9IFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcbitcdHsgfVxuK307XG4rTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV90c2Nfb2ZfbWF0Y2gpO1xuK1xuK3N0YXRpYyB2b2lkIHFjb21fcHRwX3RzY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbit7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuK1xuK1x0aWYgKHRzYyBcdTAwMjZcdTAwMjYgdHNjLVx1MDAzZXB0cCkge1xuK1x0XHRwdHBfY2xvY2tfdW5yZWdpc3Rlcih0c2MtXHUwMDNlcHRwKTtcbitcdFx0dHNjLVx1MDAzZXB0cCA9IE5VTEw7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV9wdHBfdHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcbitcdHN0cnVjdCByZXNvdXJjZSAqcl9tZW07XG4rXHRpbnQgcmV0O1xuK1xuK1x0c29jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmICghc29jKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHRzYyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCp0c2MpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghdHNjKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHRzYy1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHRzYy1cdTAwM2Vzb2MgPSBzb2M7XG4rXG4rXHRyZXQgPSBkZXZtX211dGV4X2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyX21lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sIFwidHNjXCIpO1xuK1x0aWYgKCFyX21lbSkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIm5vIElPIHJlc291cmNlIGRlZmluZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU5YSU87XG4rXHR9XG4rXG4rXHR0c2MtXHUwMDNlYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcl9tZW0pO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYmFzZSkpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2ViYXNlKTtcbitcbitcdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiYWhiXCIpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYWhiX2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VhaGJfY2xrKTtcbitcbitcdHRzYy1cdTAwM2VjbnRyX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcImNudHJcIik7XG4rXHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VjbnRyX2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VjbnRyX2Nsayk7XG4rXG4rXHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cbitcdHRzYy1cdTAwM2VldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiZXR1XCIpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlZXR1X2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VldHVfY2xrKTtcbitcbitcdHRzYy1cdTAwM2VwdHBfaW5mbyA9IHFjb21fcHRwX2luZm87XG4rXG4rXHR0c2MtXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnRzYy1cdTAwM2VwdHBfaW5mbywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlcHRwKSkge1xuK1x0XHRyZXQgPSBQVFJfRVJSKHRzYy1cdTAwM2VwdHApO1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwdHAgY2xvY2tcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fcHRwX3RzY19kcml2ZXIgPSB7XG4rXHQucHJvYmUgID0gcWNvbV9wdHBfdHNjX3Byb2JlLFxuK1x0LnJlbW92ZSA9IHFjb21fcHRwX3RzY19yZW1vdmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicWNvbV9wdHBfdHNjXCIsXG4rXHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fdHNjX29mX21hdGNoLFxuK1x0fSxcbit9O1xuK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7XG4rXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiUFRQIFFDT00gVFNDIGRyaXZlclwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjY2NzY3Njc0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNjQ2NjMwOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgYSBOZXcgUFRQIENsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhlIHBhdGNoIGFkZHMgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHVwZGF0ZXMgZGV2aWNlIHRyZWVzIGZvciBzcGVjaWZpYyBRdWFsY29tbSBwbGF0Zm9ybXMgKGxlbWFucyBhbmQgcWR1MTAwMCksIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBwcm92aWRlcyB0aGUgYHB0cF9xY29tX3RzYy5jYCBkcml2ZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJlZ2lzdGVyZWQgYXMgXCJxY29tX3B0cF90c2NcIiwgYW5kIHNlZW1zIHRvIGJlIHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgUFRQIGNsb2NrIGludGVyZmFjZSDigJMgcmVnaXN0ZXIsIGdldC9zZXQgdGltZSBmdW5jdGlvbnMsIGFsbCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMgYW5kIHN5c2ZzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyICpiaW5kcyogdG8gc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBpZGVudGlmaWVkIGJ5IGRldmljZSB0cmVlIGJpbmRpbmdzOiBgcWNvbSxsZW1hbnMtdHNjc3NgIGFuZCBgcWNvbSxxZHUxMDAwLXRzY3NzYC4gSW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0b3IgZm9yIHRoaXMgKnNwZWNpZmljKiBoYXJkd2FyZSwgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyB3b24ndCBiZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBwcm9iZSBmdW5jdGlvbiwgd2hpY2ggcmVnaXN0ZXJzIHRoZSBQVFAgY2xvY2ssIHdvbid0IGJlIGNhbGxlZC5cblxuT2YgY291cnNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgY3JlYXRlIHRoZXNlIHBsYXRmb3JtIGRldmljZXMsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBzeXpfZGV2cmVzYCBvciBieSBtb2RpZnlpbmcgdGhlIGRldmljZSB0cmVlIG9yIHV0aWxpemluZyBhIHBzZXVkby1kZXZpY2UuIEJ1dCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBvZnRlbiBmYWlsIGlmIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChhbmQgbWVtb3J5IHJlZ2lvbnMpIGlzbid0IGFjdHVhbGx5IHRoZXJlIG9yIGVtdWxhdGVkLiBUaGlzIGRyaXZlciB1c2VzIE1NSU8gb3BlcmF0aW9ucyAocmVhZGluZyBhbmQgd3JpdGluZyB0byBtZW1vcnkgdXNpbmcgYHJlYWRsX3JlbGF4ZWRgLCBgd3JpdGVsX3JlbGF4ZWRgIGFuZCB0aGUgbGlrZSwgYWNjZXNzaW5nIGB0c2MtXHUwMDNlYmFzZWApLCBzbyBpbiB0aGUgYWJzZW5jZSBvZiByZWFsIGhhcmR3YXJlIG9yIGEgc3VmZmljaWVudGx5IGRldGFpbGVkIGVtdWxhdG9yLCB0aGVzZSByZWFkcy93cml0ZXMgd2lsbCBmYWlsLlxuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIG1hcCBtZW1vcnkgcmVnaW9ucyBmb3IgTU1JTy4gU28sIGxldCdzIGxvb2sgZm9yIHNwZWNpZmljIHJlc3RyaWN0aW9ucy4gVGhlIGd1aWRlbGluZXMgc3RhdGUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGludm9sdmVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBvciBTbWFydE5JQyBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW4ndCBiZSBlbXVsYXRlZCwgb3IsIG1vcmUgZ2VuZXJhbGx5LCBpZiB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cblRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIFF1YWxjb21tIFNvQydzIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbS4gSXQgKmRlZmluaXRlbHkqIHVzZXMgTU1JTyAoYGRldm1faW9yZW1hcF9yZXNvdXJjZWApLCBhbmQgc3l6a2FsbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSwgbWFwcGluZyBtZW1vcnkgZm9yIHRob3NlIE1NSU8gcmVnaW9ucy4gSXMgaXQgd29ydGggZnV6emluZz8gR2VuZXJhbGx5LCBTb0Mtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGFyZSByZWxhdGl2ZWx5IGlzb2xhdGVkIOKAkyBtZWFuaW5nIHRoZXkganVzdCBkbyBNTUlPIHJlYWRzL3dyaXRlcyB3aXRob3V0IGNvbXBsZXggaW50ZXJhY3Rpb24gd2l0aCBuZXR3b3JrIG9yIGJsb2NrIHN1YnN5c3RlbXMg4oCTICptaWdodCogYmUgZnV6emFibGUgaWYgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSB0aGUgZHJpdmVyLlxuXG5CdXQgdGhlcmUgYXJlIHNvbWUgZGVwZW5kZW5jaWVzLCBwYXJ0aWN1bGFybHkgY2xvY2tzLiBUaGUgZHJpdmVyIHJlbGllcyBvbiBnZXR0aW5nIGNsb2NrcyB2aWEgYGRldm1fY2xrX2dldF9lbmFibGVkYCDigJMgc3BlY2lmaWNhbGx5IGNsb2NrcyBuYW1lZCBcImFoYlwiIGFuZCBcImNudHJcIi4gVGhlc2UgY2xvY2tzIGFyZSB2ZXJ5IGxpa2VseSBTb0Mtc3BlY2lmaWMsIGFuZCBpbiBhIGdlbmVyaWMgUUVNVSB2aXJ0dWFsIG1hY2hpbmUgKGxpa2UgdGhlIHN0YW5kYXJkIGB2aXJ0YCBtYWNoaW5lIGZvciBhYXJjaDY0KSwgdGhlc2UgY2xvY2tzICp3b24ndCogZXhpc3QuIFRodXMsIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAgd291bGQgcmV0dXJuIGFuIGVycm9yIGxpa2UgYC1FTk9FTlRgLCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdvdWxkIGZhaWwsIG1ha2luZyB0aGUgZHJpdmVyIHVucmVhY2hhYmxlLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBieXBhc3MgYGRldm1fY2xrX2dldF9lbmFibGVkYCwgb3IgYXJlIHRoZXJlIGR1bW15IGNsb2NrcyBhdmFpbGFibGU/IEdpdmVuIHRoZSByZWxpYW5jZSBvbiBgQ09ORklHX0NPTU1PTl9DTEtgLCBhIHN1Y2Nlc3NmdWwgYGNsa19nZXRgIHJlcXVpcmVzIHRoZSBjbG9jayB0byBiZSBwcmVzZW50LCBhbmQgaXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCBzeXprYWxsZXIgcHJvdmlkZXMgYW4gZW11bGF0b3IgZm9yIHRoZXNlIGNsb2NrcyBvciB0aGF0IHdlJ3JlIHJ1bm5pbmcgYSBRRU1VIGltYWdlIGVtdWxhdGluZyAqdGhpcyogc3BlY2lmaWMgU29DLiBTaW5jZSB0aGlzIGRyaXZlciBpcyB0aWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIGNsb2NrcywgYW5kIHdlJ3JlIGxpa2VseSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIG5vdCByZWFjaGFibGUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uOiBhIFNvQy1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIGNsb2NrcywgcmVndWxhdG9ycywgYW5kIE1NSU8gbGF5b3V0cyBub3QgcHJlc2VudCBpbiBnZW5lcmljIFZNcy5cblxuQ291bGQgc3l6a2FsbGVyIG1vY2sgdGhlIGNsb2Nrcz8gTm90IGdlbmVyYWxseS4gSXQgZm9jdXNlcyBvbiBrZXJuZWwgaW50ZXJmYWNlcywgbm90IGVtdWxhdGluZyBoYXJkd2FyZSBkZXRhaWxzIGxpa2Ugc3BlY2lmaWMgY2xvY2tzLiBJZiB0aGUgcHJvYmUgZmFpbHMsIHRoZSBkcml2ZXIgaXMgdW5yZWFjaGFibGUuIExldCdzIGxvb2sgYXQgdGhlIGRyaXZlciBjb2RlLlxuXG5gYGBjXG5cdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiYWhiXCIpO1xuXHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VhaGJfY2xrKSlcblx0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYWhiX2Nsayk7XG5gYGBcblxuVGhlIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGZvciB0aGUgY2xvY2s7IGlmIHRoZVxuXG4iLCJJbnB1dFRva2VucyI6MTIyMzIsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjI5LjMxNDMxMDQ3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgY2xvY2tzIChcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiKSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowlk74k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 04:57:17 +0000 UTC FinishedAt: 2026-07-28 05:15: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+CgkJCTx0ZD4yMDI2LzA3LzI4IDA1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDA1OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDA1OjE1OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sXG5AQCAtMCwwICYjNDM7MSwxOTggQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZVxuJiM0MzslWUFNTCAxLjJcbiYjNDM7LS0tXG4mIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIExlbWFucyBhbmQgTW9uYWNvIFNvQ3NcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gSW1yYW4gU2hhaWsgXHUwMDNjaW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbVx1MDAzZVxuJiM0MzsgIC0gVGFuaXlhIERhcyBcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cbiYjNDM7ICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXG4mIzQzO1xuJiM0MzsgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcbiYjNDM7ICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxuJiM0MzsgIGNsb2Nrcy5cbiYjNDM7ICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcbiYjNDM7ICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXG4mIzQzOyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVXG4mIzQzOyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgb25lT2Y6XG4mIzQzOyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXG4mIzQzOyAgICAgIC0gaXRlbXM6XG4mIzQzOyAgICAgICAgICAtIGNvbnN0OiBxY29tLG1vbmFjby10c2Nzc1xuJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3NcbiYjNDM7XG4mIzQzOyAgcmVnOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgcmVnLW5hbWVzOlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gY29uc3Q6IHRzY1xuJiM0MztcbiYjNDM7ICBjbG9ja3M6XG4mIzQzOyAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay5cbiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgRVRVIGNsb2NrLlxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogYWhiXG4mIzQzOyAgICAgIC0gY29uc3Q6IGNudHJcbiYjNDM7ICAgICAgLSBjb25zdDogZXR1XG4mIzQzO1xuJiM0MzsgIGludGVycnVwdHM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogZXR1X3N1bW1hcnlcbiYjNDM7XG4mIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4mIzQzOyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMlxuJiM0MztcbiYjNDM7ICBcJiMzNDsjc2l6ZS1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAyXG4mIzQzO1xuJiM0MzsgIHJhbmdlczogdHJ1ZVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4mIzQzOyAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICByZWc6XG4mIzQzOyAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgICAgIHBpbmN0cmwtMDogdHJ1ZVxuJiM0MztcbiYjNDM7ICAgICAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgICAgICBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbiYjNDM7XG4mIzQzOyAgICAgIHFjb20sZXR1LWV2ZW50LXNlbDpcbiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MztcbiYjNDM7ICAgICAgcWNvbSxldHUtc2xpY2U6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLlxuJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MztcbiYjNDM7ICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAtIHJlZ1xuJiM0MzsgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuJiM0MzsgICAgICAtIHFjb20sZXR1LXNsaWNlXG4mIzQzOyAgICAgIC0gcGluY3RybC0wXG4mIzQzOyAgICAgIC0gcGluY3RybC1uYW1lc1xuJiM0MzsgICAgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIHJlZy1uYW1lc1xuJiM0MzsgIC0gY2xvY2tzXG4mIzQzOyAgLSBjbG9jay1uYW1lc1xuJiM0MztcbiYjNDM7YWxsT2Y6XG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBjb25zdDogZXR1XG4mIzQzOyAgICB0aGVuOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNsb2NrczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogM1xuJiM0MzsgICAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgICAtIGludGVycnVwdHNcbiYjNDM7ICAgICAgICAtIGludGVycnVwdC1uYW1lc1xuJiM0MzsgICAgICAgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAgICAgICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgICAgICAgLSByYW5nZXNcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgc29jIHtcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICB0c2Nzc0AxYzgwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxsZW1hbnMtdHNjc3NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBzb2Mge1xuJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHRzY3NzQDFjODAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGxlbWFucy10c2Nzc1wmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9IFwmIzM0O3RzY1wmIzM0OztcbiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAgIHJhbmdlcztcbiYjNDM7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OywgXCYjMzQ7ZXR1XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0VUVV9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZSwgXHUwMDNjMTU2MjUwMDBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDYwNCBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFwmIzM0O2V0dV9zdW1tYXJ5XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWM5MTAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM5MTAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWM5MjAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWM5MjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7Li4uXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5Mzlcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDE4NyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIFFEVTEwMDAgU29DXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEltcmFuIFNoYWlrIFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbiYjNDM7ICAtIFRhbml5YSBEYXMgXHUwMDNjdGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjogfFxuJiM0MzsgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXG4mIzQzOyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLlxuJiM0MztcbiYjNDM7ICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXG4mIzQzOyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXJcbiYjNDM7ICBjbG9ja3MuXG4mIzQzOyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXG4mIzQzOyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbFxuJiM0MzsgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxuJiM0MzsgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgY29uc3Q6IHFjb20scWR1MTAwMC10c2Nzc1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICByZWctbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogdHNjXG4mIzQzO1xuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEFIQiBjb25maWd1cmF0aW9uIGNsb2NrLlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suXG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4mIzQzO1xuJiM0MzsgIGNsb2NrLW5hbWVzOlxuJiM0MzsgICAgbWluSXRlbXM6IDJcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBhaGJcbiYjNDM7ICAgICAgLSBjb25zdDogY250clxuJiM0MzsgICAgICAtIGNvbnN0OiBldHVcbiYjNDM7XG4mIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4mIzQzOyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMlxuJiM0MztcbiYjNDM7ICBcJiMzNDsjc2l6ZS1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAyXG4mIzQzO1xuJiM0MzsgIHJhbmdlczogdHJ1ZVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4mIzQzOyAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICByZWc6XG4mIzQzOyAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgICAgIHBpbmN0cmwtMDogdHJ1ZVxuJiM0MztcbiYjNDM7ICAgICAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgICAgICBpdGVtczpcbiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbiYjNDM7XG4mIzQzOyAgICAgIGludGVycnVwdHM6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IFBlciBzbGljZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IEVUVSBiYXNlZCBvbiBleHRlcm5hbCBldmVudCB0cmlnZ2VyLlxuJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEV2ZW50IHNlbGVjdGlvbiB2YWx1ZSBmb3IgdGhpcyBzbGljZS5cbiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiYjNDM7XG4mIzQzOyAgICAgIHFjb20sZXR1LXNsaWNlOlxuJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBFVFUgc2xpY2UgaWRlbnRpZmllci5cbiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiYjNDM7XG4mIzQzOyAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgLSByZWdcbiYjNDM7ICAgICAgLSBpbnRlcnJ1cHRzXG4mIzQzOyAgICAgIC0gcWNvbSxldHUtZXZlbnQtc2VsXG4mIzQzOyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbiYjNDM7ICAgICAgLSBwaW5jdHJsLTBcbiYjNDM7ICAgICAgLSBwaW5jdHJsLW5hbWVzXG4mIzQzOyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gcmVnLW5hbWVzXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtIGlmOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBldHVcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY2xvY2tzOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDNcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAgICAgICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgICAgICAgLSByYW5nZXNcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxxZHUxMDAwLWdjYy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgc29jIHtcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgcmVnLW5hbWVzID0gXCYjMzQ7dHNjXCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DRkdfQUhCX0NMS1x1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OztcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxxZHUxMDAwLWdjYy5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBzb2Mge1xuJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHRzY3NzQDFkYTAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHFkdTEwMDAtdHNjc3NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICByYW5nZXM7XG4mIzQzO1xuJiM0MzsgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0VUVV9DTEtcdTAwM2U7XG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDthaGJcJiMzNDssIFwmIzM0O2NudHJcJiMzNDssIFwmIzM0O2V0dVwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2UsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1x1MDAzZTtcbiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZSwgXHUwMDNjNTAwMDAwMDAwXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWRiMTAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMTAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgMzI5IElSUV9UWVBFX0VER0VfUklTSU5HXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICBldHUtc2xpY2VAMWRiMjAwMCB7XG4mIzQzOyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgMzMwIElSUV9UWVBFX0VER0VfUklTSU5HXHUwMDNlO1xuJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7Li4uXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpXG5pbmRleCAzYjA1MzllMjdiNTE5Mi4uZTIyNTI5MmExZTQxYTUgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxuQEAgLTMwMjMsNiAmIzQzOzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7XG4gXHRcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4gXHRcdH07XG4gXG4mIzQzO1x0XHR0c2Nzc0AxYzgwMDAwIHtcbiYjNDM7XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sbGVtYW5zLXRzY3NzXCYjMzQ7O1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuJiM0MztcdFx0XHRyZWctbmFtZXMgPSBcJiMzNDt0c2NcJiMzNDs7XG4mIzQzO1x0XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1x1MDAzZSxcbiYjNDM7XHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4mIzQzO1x0XHRcdGNsb2NrLW5hbWVzID0gXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7O1xuJiM0MztcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbiYjNDM7XHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2MxNTYyNTAwMFx1MDAzZTtcbiYjNDM7XHRcdH07XG4mIzQzO1xuIFx0XHR1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTg3NzVwLXVmc2hjXCYjMzQ7LCBcJiMzNDtxY29tLHVmc2hjXCYjMzQ7LCBcJiMzNDtqZWRlYyx1ZnMtMi4wXCYjMzQ7O1xuIFx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxZDg0MDAwIDB4MCAweDMwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbmluZGV4IDI2Y2M4NmQxMmY3MjU2Li44OTc5YzE4MjI1MTg0YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbkBAIC04NzYsNiAmIzQzOzg3NiwxNyBAQCBzeXN0ZW1fbm9jOiBpbnRlcmNvbm5lY3RAMTY0MDAwMCB7XG4gXHRcdFx0I2ludGVyY29ubmVjdC1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4gXHRcdH07XG4gXG4mIzQzO1x0XHR0c2Nzc0AxZGEwMDAwIHtcbiYjNDM7XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3Fjb20scWR1MTAwMC10c2Nzc1wmIzM0OztcbiYjNDM7XHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbiYjNDM7XHRcdFx0cmVnLW5hbWVzID0gXCYjMzQ7dHNjXCYjMzQ7O1xuJiM0MztcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DRkdfQUhCX0NMS1x1MDAzZSxcbiYjNDM7XHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4mIzQzO1x0XHRcdGNsb2NrLW5hbWVzID0gXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7O1xuJiM0MztcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1x1MDAzZTtcbiYjNDM7XHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHR9O1xuJiM0MztcbiBcdFx0dGNzcl9tdXRleDogaHdsb2NrQDFmNDAwMDAge1xuIFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHRjc3ItbXV0ZXhcJiMzNDs7XG4gXHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MWY0MDAwMCAweDAgMHgyMDAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnIGIvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuaW5kZXggNmVjOGQzYTY5Yzk4ZTAuLjczNDM1ZTVmODg3N2QyIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xuQEAgLTY4Myw2ICYjNDM7NjgzLDcgQEAgQ09ORklHX1NQSV9TUElERVY9bVxuIENPTkZJR19TUE1JPXlcbiBDT05GSUdfU1BNSV9BUFBMRT1tXG4gQ09ORklHX1NQTUlfTVRLX1BNSUY9bVxuJiM0MztDT05GSUdfUFRQX1FDT01fVFNDPW1cbiBDT05GSUdfUElOQ1RSTF9BUFBMRV9HUElPPW1cbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxuIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTI2Myw0ICYjNDM7MjYzLDE0IEBAIGNvbmZpZyBQVFBfTkVUQ19WNF9USU1FUlxuIFx0ICBzeW5jaHJvbml6YXRpb24uIEl0IGFsc28gc3VwcG9ydHMgcGVyaW9kaWMgb3V0cHV0IHNpZ25hbCAoZS5nLiBQUFMpXG4gXHQgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy5cbiBcbiYjNDM7Y29uZmlnIFBUUF9RQ09NX1RTQ1xuJiM0MztcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFRTQyBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXJcbiYjNDM7XHQgIFN1YnN5c3RlbSAoVFNDU1MpIGFzIGEgUFRQIGNsb2NrLlxuJiM0MztcbiYjNDM7XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiYjNDM7XHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cbiYjNDM7XG4gZW5kbWVudVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL01ha2VmaWxlIGIvZHJpdmVycy9wdHAvTWFrZWZpbGVcbmluZGV4IGJkYzQ3ZTI4NGYxNGU3Li5mZjAyOTMyM2U5OGY1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxuQEAgLTIyLDMgJiM0MzsyMiw0IEBAIG9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19PQ1ApXHQmIzQzOz0gcHRwX29jcC5vXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVx0XHQmIzQzOz0gcHRwX2RmbF90b2Qub1xuIG9iai0kKENPTkZJR19QVFBfUzM5MClcdFx0XHQmIzQzOz0gcHRwX3MzOTAub1xuIG9iai0kKENPTkZJR19QVFBfTkVUQ19WNF9USU1FUilcdFx0JiM0Mzs9IHB0cF9uZXRjLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BUUF9RQ09NX1RTQylcdFx0JiM0Mzs9IHB0cF9xY29tX3RzYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmMgYi9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iMjkyNDgxNTAzODhmM1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcbkBAIC0wLDAgJiM0MzsxLDQxMyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4mIzQzOy8qXG4mIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJPTExPVkVSX1ZBTFx0XHRcdFx0OTk5OTk5OTk5XG4mIzQzOyNkZWZpbmUgTlNFQ19TSElGVFx0XHRcdFx0MzJcbiYjNDM7I2RlZmluZSBQVUxTRV9XSURUSF9NQVNLXHRcdFx0R0VOTUFTSyg3LCA2KVxuJiM0MzsjZGVmaW5lIERSSUZUX01BWF9SRVNcdFx0XHRcdDB4MUZGRkZcbiYjNDM7I2RlZmluZSBEUklGVF9KVU1QX1NXQUxMT1dcdFx0XHRCSVQoMzEpXG4mIzQzOyNkZWZpbmUgRFJJRlRfUEVSSU9EX01BU0tcdFx0XHRHRU5NQVNLKDI4LCAxMilcbiYjNDM7I2RlZmluZSBEUklGVF9TVUJQRVJJT0RfTUFTS1x0XHRcdEdFTk1BU0soMTEsIDApXG4mIzQzOyNkZWZpbmUgRFJJRlRfSU5URVJWQUxfVVNcdFx0XHQxMFxuJiM0MzsjZGVmaW5lIERSSUZUX01JTl9USU1FT1VUX1VTXHRcdFx0NTAwMFxuJiM0MztcbiYjNDM7I2RlZmluZSBEUklGVF9USU1FT1VUX1VTKHBlcmlvZCwgc3VicGVyaW9kLCBjbnRyX3JlcylcdFx0XHRcXFxuJiM0MztcdG1heF90KHU2NCwgZGl2X3U2NCgodTY0KShwZXJpb2QpICogKHN1YnBlcmlvZCkgKiAoY250cl9yZXMpLCBOU0VDX1BFUl9VU0VDKSwgXFxcbiYjNDM7XHQgICAgICBEUklGVF9NSU5fVElNRU9VVF9VUylcbiYjNDM7XG4mIzQzO3N0cnVjdCBxY29tX3RzY19yZWdzIHtcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjcjtcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjdl9sbztcbiYjNDM7XHR1MzIgY29udHJvbF9jbnRjdl9oaTtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9pbmNyX3ZhbDtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9kdXJhdGlvbjtcbiYjNDM7XHR1MzIgZHJpZnRfY29ycmVjdF9jbWQ7XG4mIzQzO1x0dTMyIHJvbGxvdmVyX3ZhbDtcbiYjNDM7XHR1MzIgb2Zmc2V0X2xvO1xuJiM0MztcdHUzMiBvZmZzZXRfaGk7XG4mIzQzO1x0dTMyIHJlYWRfY250Y3ZfbG87XG4mIzQzO1x0dTMyIHJlYWRfY250Y3ZfaGk7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogc3RydWN0IHFjb21fdHNjX3NvY19kYXRhIC0gU29DIHNwZWNpZmljIFRTQyBoYXJkd2FyZSBjYXBhYmlsaXRpZXNcbiYjNDM7ICpcbiYjNDM7ICogQHJvbGxvdmVyOiBpbmRpY2F0ZXMgdGhlIGNvdW50ZXIgdXNlcyBzZWMvbnNlYyBzcGxpdFxuJiM0MzsgKiBAb2Zmc2V0X2NvcnJlY3Rpb246IGhhcmR3YXJlIHN1cHBvcnRzIG9uZS1zaG90IG9mZnNldCBjb3JyZWN0aW9uXG4mIzQzOyAqIEBwdWxzZV93aWR0aDogdmFsaWQgcHVsc2Ugd2lkdGggaW4gY3ljbGVzIGZvciBkcmlmdCBjb3JyZWN0aW9uXG4mIzQzOyAqIEBjbnRyX3JlczogVFNDIGNvdW50ZXIgcmVzb2x1dGlvbiBpbiBuc2VjXG4mIzQzOyAqIEByZWdfbGF5b3V0OiByZWdpc3RlciBsYXlvdXQgZm9yIHRoaXMgU29DL3ZlcnNpb25cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBxY29tX3RzY19zb2NfZGF0YSB7XG4mIzQzO1x0Ym9vbCByb2xsb3ZlcjtcbiYjNDM7XHRib29sIG9mZnNldF9jb3JyZWN0aW9uO1xuJiM0MztcdGludCBwdWxzZV93aWR0aDtcbiYjNDM7XHRpbnQgY250cl9yZXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ19sYXlvdXQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcWNvbV90c2Mge1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiYjNDM7XHR2b2lkIF9faW9tZW0gKmJhc2U7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XG4mIzQzO1x0c3RydWN0IGNsayAqYWhiX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICpjbnRyX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICpldHVfY2xrO1xuJiM0MztcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbiYjNDM7XHRzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX2luZm87XG4mIzQzO1x0LyogTXV0ZXggdG8gcHJvdGVjdCBvcGVyYXRpb25zIGZyb20gYmVpbmcgaW50ZXJydXB0ZWQgKi9cbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHFjb21fdHNjX2lzX2VuYWJsZWQoc3RydWN0IHFjb21fdHNjICp0c2MpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKSBcdTAwMjYgQklUKDApO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3JlYWRfdGltZShzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtXHUwMDNlc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4mIzQzO1x0dTMyIGhpLCBsbztcbiYjNDM7XG4mIzQzO1x0aWYgKCFxY29tX3RzY19pc19lbmFibGVkKHRzYykpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aGkgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlcmVhZF9jbnRjdl9oaSk7XG4mIzQzO1x0bG8gPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlcmVhZF9jbnRjdl9sbyk7XG4mIzQzO1xuJiM0MztcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4mIzQzO1x0XHR0cy1cdTAwM2V0dl9zZWMgPSBoaTtcbiYjNDM7XHRcdHRzLVx1MDAzZXR2X25zZWMgPSBsbztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0dTY0IG5zID0gKCh1NjQpaGkgXHUwMDNjXHUwMDNjIE5TRUNfU0hJRlQpIHwgbG87XG4mIzQzO1xuJiM0MztcdFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgcWNvbV90c2Nfc3BsaXRfdHMoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzLCB1MzIgKmhpLCB1MzIgKmxvKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHRzYy1cdTAwM2Vzb2MtXHUwMDNlcm9sbG92ZXIpIHtcbiYjNDM7XHRcdCpoaSA9IHRzLnR2X3NlYztcbiYjNDM7XHRcdCpsbyA9IHRzLnR2X25zZWM7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHU2NCBucyA9IHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2dHMpO1xuJiM0MztcbiYjNDM7XHRcdCpsbyA9IGxvd2VyXzMyX2JpdHMobnMpO1xuJiM0MztcdFx0KmhpID0gdXBwZXJfMzJfYml0cyhucyk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCB0cylcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuJiM0MztcdHUzMiByZWd2YWwsIGhpLCBsbztcbiYjNDM7XG4mIzQzO1x0cWNvbV90c2Nfc3BsaXRfdHModHNjLCB0cywgXHUwMDI2aGksIFx1MDAyNmxvKTtcbiYjNDM7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQobG8sIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9sbyk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9oaSk7XG4mIzQzO1xuJiM0MztcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbiYjNDM7XHRyZWd2YWwgfD0gQklUKDApO1xuJiM0MztcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX29mZnNldChzdHJ1Y3QgcWNvbV90c2MgKnRzYywgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgdHMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XG4mIzQzO1x0dTMyIHJlZ3ZhbCwgaGksIGxvO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZW9mZnNldF9jb3JyZWN0aW9uKSB7XG4mIzQzO1x0XHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcdTAwMjZoaSwgXHUwMDI2bG8pO1xuJiM0MztcbiYjNDM7XHRcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZW9mZnNldF9sbyk7XG4mIzQzO1x0XHR3cml0ZWxfcmVsYXhlZChoaSwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VvZmZzZXRfaGkpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBObyBoYXJkd2FyZSBvZmZzZXQgY29ycmVjdGlvbiBzdXBwb3J0OiBkaXNhYmxlIGFuZCByZWxvYWQgdGhlXG4mIzQzO1x0ICogY291bnRlciB3aXRoIHRoZSBjb3JyZWN0ZWQgdGltZSwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIGhhcmR3YXJlXG4mIzQzO1x0ICogZGVzaWduIHRlYW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gcWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcdHJlZ3ZhbCBcdTAwMjY9IH5CSVQoMCk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIodHNjLCB0aW1lc3BlYzY0X2FkZCh0b2QsIHRzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV90c2Nfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XG4mIzQzO1x0dTMyIHJlZ3ZhbDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkge1xuJiM0MztcdFx0cWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbiYjNDM7XHRcdHJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCB0aW1lc3BlYzY0X3N1YigqdHMsIHRvZCkpO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBDb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgVFNDIGNvdW50ZXIgKi9cbiYjNDM7XHRyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4mIzQzO1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoUFVMU0VfV0lEVEhfTUFTSywgdHNjLVx1MDAzZXNvYy1cdTAwM2VwdWxzZV93aWR0aCk7XG4mIzQzO1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSAmIzQzOyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuJiM0MztcbiYjNDM7XHRpZiAodHNjLVx1MDAzZXNvYy1cdTAwM2Vyb2xsb3ZlcilcbiYjNDM7XHRcdHdyaXRlbF9yZWxheGVkKFJPTExPVkVSX1ZBTCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2Vyb2xsb3Zlcl92YWwpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsICp0cyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCBuc190b190aW1lc3BlYzY0KGRlbHRhKSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBsb25nIHNjYWxlZF9wcG0pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy1cdTAwM2Vzb2M7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSBzb2MtXHUwMDNlcmVnX2xheW91dDtcbiYjNDM7XHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHNjYWxlZF9wcG0pO1xuJiM0MztcdHU2NCBwZXJpb2QsIGluY3ZhbCA9IDA7XG4mIzQzO1x0dTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBwYiBcdTAwM2MgMCkge1xuJiM0MztcdFx0cHBiID0gLXBwYjtcbiYjNDM7XHRcdHJlZ3ZhbCBcdTAwMjY9IH5EUklGVF9KVU1QX1NXQUxMT1c7XG4mIzQzO1xuJiM0MztcdFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cdTAwM2VjbnRyX3Jlcyk7XG4mIzQzO1x0XHRpZiAocGVyaW9kIFx1MDAzZT0gRFJJRlRfTUFYX1JFUylcbiYjNDM7XHRcdFx0cGVyaW9kID0gRFJJRlRfTUFYX1JFUztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmVndmFsIHw9IERSSUZUX0pVTVBfU1dBTExPVztcbiYjNDM7XG4mIzQzO1x0XHRwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLVx1MDAzZWNudHJfcmVzKTtcbiYjNDM7XHRcdGlmIChwZXJpb2QgXHUwMDNlPSBEUklGVF9NQVhfUkVTKSB7XG4mIzQzO1x0XHRcdHBlcmlvZCA9IERSSUZUX01BWF9SRVM7XG4mIzQzO1x0XHRcdGluY3ZhbCA9IHNvYy1cdTAwM2VjbnRyX3JlcyAqIDI7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHBwYiBcdTAwM2Mgc29jLVx1MDAzZWNudHJfcmVzKSB7XG4mIzQzO1x0XHRcdGluY3ZhbCA9IHNvYy1cdTAwM2VjbnRyX3JlcyAmIzQzOyBwcGI7XG4mIzQzO1x0XHRcdHBlcmlvZCA9IDE7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRpbmN2YWwgPSBzb2MtXHUwMDNlY250cl9yZXMgKiAyO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3VicGVyaW9kID0gc29jLVx1MDAzZXB1bHNlX3dpZHRoICogMjtcbiYjNDM7XHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9TVUJQRVJJT0RfTUFTSywgc3VicGVyaW9kKTtcbiYjNDM7XHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9QRVJJT0RfTUFTSywgcGVyaW9kKTtcbiYjNDM7XG4mIzQzO1x0LyogVXBkYXRlIGp1bXAvc3dhbGxvdywgcGVyaW9kLCBzdWJwZXJpb2QgKi9cbiYjNDM7XHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7XG4mIzQzO1xuJiM0MztcdHdyaXRlbF9yZWxheGVkKGluY3ZhbCwgdHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcbiYjNDM7XG4mIzQzO1x0LyogVHJpZ2dlciB0aGUgZHJpZnQgY29ycmVjdGlvbiAqL1xuJiM0MztcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgJiM0MzsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XG4mIzQzO1x0cmVndmFsIHw9IEJJVCgwKTtcbiYjNDM7XHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy1cdTAwM2ViYXNlICYjNDM7IHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQsIHJlZ3ZhbCxcbiYjNDM7XHRcdFx0XHQgICEocmVndmFsIFx1MDAyNiBCSVQoMSkpLCBEUklGVF9JTlRFUlZBTF9VUyxcbiYjNDM7XHRcdFx0XHQgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy1cdTAwM2VjbnRyX3JlcykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNjYWxlZF9wcG0gPT0gMClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBxY29tX3B0cF9pbmZvID0ge1xuJiM0MztcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuJiM0MztcdC5uYW1lXHRcdD0gXCYjMzQ7UFRQX1FDT01fVFNDXCYjMzQ7LFxuJiM0MztcdC5tYXhfYWRqXHQ9IDk5OTk5OTksXG4mIzQzO1x0LmFkamZpbmVcdD0gcWNvbV90c2NfYWRqZmluZSxcbiYjNDM7XHQuYWRqdGltZVx0PSBxY29tX3RzY19hZGp0aW1lLFxuJiM0MztcdC5nZXR0aW1lNjQgICAgICA9IHFjb21fdHNjX2dldHRpbWUsXG4mIzQzO1x0LnNldHRpbWU2NCAgICAgID0gcWNvbV90c2Nfc2V0dGltZSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyBxY29tX3RzY19sYXlvdXQgPSB7XG4mIzQzO1x0LmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCxcbiYjNDM7XHQuY29udHJvbF9jbnRjdl9sbyAgICAgICAgID0gMHg4LFxuJiM0MztcdC5jb250cm9sX2NudGN2X2hpICAgICAgICAgPSAweGMsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfZHVyYXRpb24gICA9IDB4MzAsXG4mIzQzO1x0LmRyaWZ0X2NvcnJlY3RfY21kICAgICAgICA9IDB4MzQsXG4mIzQzO1x0LnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsXG4mIzQzO1x0Lm9mZnNldF9sbyAgICAgICAgICAgICAgICA9IDB4NTAsXG4mIzQzO1x0Lm9mZnNldF9oaSAgICAgICAgICAgICAgICA9IDB4NTQsXG4mIzQzO1x0LnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCxcbiYjNDM7XHQucmVhZF9jbnRjdl9oaSAgICAgICAgICAgID0gMHgxMDA0LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSBxY29tX3RzY19sZW1hbnMgPSB7XG4mIzQzO1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4mIzQzO1x0LnJvbGxvdmVyXHRcdD0gZmFsc2UsXG4mIzQzO1x0Lm9mZnNldF9jb3JyZWN0aW9uXHQ9IGZhbHNlLFxuJiM0MztcdC5wdWxzZV93aWR0aFx0XHQ9IDIsXG4mIzQzO1x0LmNudHJfcmVzXHRcdD0gNjQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhIHFjb21fdHNjX3FkdTEwMDAgPSB7XG4mIzQzO1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4mIzQzO1x0LnJvbGxvdmVyXHRcdD0gdHJ1ZSxcbiYjNDM7XHQub2Zmc2V0X2NvcnJlY3Rpb25cdD0gdHJ1ZSxcbiYjNDM7XHQucHVsc2Vfd2lkdGhcdFx0PSAzLFxuJiM0MztcdC5jbnRyX3Jlc1x0XHQ9IDIsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGxlbWFucy10c2Nzc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZxY29tX3RzY19sZW1hbnMgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcbiYjNDM7XHR7IH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV90c2Nfb2ZfbWF0Y2gpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcWNvbV9wdHBfdHNjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRzYyBcdTAwMjZcdTAwMjYgdHNjLVx1MDAzZXB0cCkge1xuJiM0MztcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIodHNjLVx1MDAzZXB0cCk7XG4mIzQzO1x0XHR0c2MtXHUwMDNlcHRwID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9wdHBfdHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYztcbiYjNDM7XHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcbiYjNDM7XHRzdHJ1Y3QgcmVzb3VyY2UgKnJfbWVtO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKCFzb2MpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0dHNjID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnRzYyksIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghdHNjKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHR0c2MtXHUwMDNlc29jID0gc29jO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX211dGV4X2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cl9tZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCBcJiMzNDt0c2NcJiMzNDspO1xuJiM0MztcdGlmICghcl9tZW0pIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O25vIElPIHJlc291cmNlIGRlZmluZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTlhJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2ViYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByX21lbSk7XG4mIzQzO1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYmFzZSkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYmFzZSk7XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2FoYlwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYWhiX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYWhiX2Nsayk7XG4mIzQzO1xuJiM0MztcdHRzYy1cdTAwM2VjbnRyX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtjbnRyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VjbnRyX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlY250cl9jbGspO1xuJiM0MztcbiYjNDM7XHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cbiYjNDM7XHR0c2MtXHUwMDNlZXR1X2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtldHVcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIodHNjLVx1MDAzZWV0dV9jbGspKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIodHNjLVx1MDAzZWV0dV9jbGspO1xuJiM0MztcbiYjNDM7XHR0c2MtXHUwMDNlcHRwX2luZm8gPSBxY29tX3B0cF9pbmZvO1xuJiM0MztcbiYjNDM7XHR0c2MtXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnRzYy1cdTAwM2VwdHBfaW5mbywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChJU19FUlIodHNjLVx1MDAzZXB0cCkpIHtcbiYjNDM7XHRcdHJldCA9IFBUUl9FUlIodHNjLVx1MDAzZXB0cCk7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcHRwIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9wdHBfdHNjX2RyaXZlciA9IHtcbiYjNDM7XHQucHJvYmUgID0gcWNvbV9wdHBfdHNjX3Byb2JlLFxuJiM0MztcdC5yZW1vdmUgPSBxY29tX3B0cF90c2NfcmVtb3ZlLFxuJiM0MztcdC5kcml2ZXIgPSB7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3Fjb21fcHRwX3RzY1wmIzM0OyxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fdHNjX29mX21hdGNoLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UFRQIFFDT00gVFNDIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDU6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDA1OjE1OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbApAQCAtMCwwICYjNDM7MSwxOTggQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gTGVtYW5zIGFuZCBNb25hY28gU29DcwomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBJbXJhbiBTaGFpayAmbHQ7aW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbSZndDsKJiM0MzsgIC0gVGFuaXlhIERhcyAmbHQ7dGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBRdWFsY29tbSBUU0NTUyBpcyBhIHRpbWUgc3luY2hyb25pemF0aW9uIHN1YnN5c3RlbSBjb21wb3NlZCBvZiB0d28gbWFpbgomIzQzOyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLgomIzQzOwomIzQzOyAgVGhlIFRTQyBibG9jayBpcyBhIHRpbWVzdGFtcCBnZW5lcmF0b3IgdGhhdCBtYWludGFpbnMgYSBydW5uaW5nIGNvdW50ZXIgdXNlZAomIzQzOyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXIKJiM0MzsgIGNsb2Nrcy4KJiM0MzsgIFRoZSBFVFUgYmxvY2sgaXMgb3B0aW9uYWwgYW5kIGNhcHR1cmVzIFRTQyB0aW1lc3RhbXBzIGZvciBleHRlcm5hbAomIzQzOyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbAomIzQzOyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVCiYjNDM7ICBjbG9jayBhbG9uZyB3aXRoIHRoZSBzdW1tYXJ5IGludGVycnVwdCBhbmQgc2xpY2Ugc3Vibm9kZXMuCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIG9uZU9mOgomIzQzOyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzCiYjNDM7ICAgICAgLSBpdGVtczoKJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxtb25hY28tdHNjc3MKJiM0MzsgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3MKJiM0MzsKJiM0MzsgIHJlZzoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHJlZy1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogdHNjCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay4KJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEVUVSBjbG9jay4KJiM0MzsKJiM0MzsgIGNsb2NrLW5hbWVzOgomIzQzOyAgICBtaW5JdGVtczogMgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBhaGIKJiM0MzsgICAgICAtIGNvbnN0OiBjbnRyCiYjNDM7ICAgICAgLSBjb25zdDogZXR1CiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGV0dV9zdW1tYXJ5CiYjNDM7CiYjNDM7ICBhc3NpZ25lZC1jbG9ja3M6IHRydWUKJiM0MzsgIGFzc2lnbmVkLWNsb2NrLXJhdGVzOiB0cnVlCiYjNDM7CiYjNDM7ICAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAyCiYjNDM7CiYjNDM7ICAmIzM0OyNzaXplLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAyCiYjNDM7CiYjNDM7ICByYW5nZXM6IHRydWUKJiM0MzsKJiM0MztwYXR0ZXJuUHJvcGVydGllczoKJiM0MzsgICYjMzQ7XmV0dS1zbGljZUBbMC05YS1mXSYjNDM7JCYjMzQ7OgomIzQzOyAgICB0eXBlOiBvYmplY3QKJiM0MzsgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uCiYjNDM7ICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgcmVnOgomIzQzOyAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgICAgICBwaW5jdHJsLTA6IHRydWUKJiM0MzsKJiM0MzsgICAgICBwaW5jdHJsLW5hbWVzOgomIzQzOyAgICAgICAgaXRlbXM6CiYjNDM7ICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHQKJiM0MzsKJiM0MzsgICAgICBxY29tLGV0dS1ldmVudC1zZWw6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLgomIzQzOyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiYjNDM7CiYjNDM7ICAgICAgcWNvbSxldHUtc2xpY2U6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuCiYjNDM7ICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsKJiM0MzsgICAgcmVxdWlyZWQ6CiYjNDM7ICAgICAgLSByZWcKJiM0MzsgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbAomIzQzOyAgICAgIC0gcWNvbSxldHUtc2xpY2UKJiM0MzsgICAgICAtIHBpbmN0cmwtMAomIzQzOyAgICAgIC0gcGluY3RybC1uYW1lcwomIzQzOyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBjbG9ja3MKJiM0MzsgIC0gY2xvY2stbmFtZXMKJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOgomIzQzOyAgICAgICAgICBjb250YWluczoKJiM0MzsgICAgICAgICAgICBjb25zdDogZXR1CiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNsb2NrczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDMKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMwomIzQzOyAgICAgIHJlcXVpcmVkOgomIzQzOyAgICAgICAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAgICAgICAtIGludGVycnVwdC1uYW1lcwomIzQzOyAgICAgICAgLSAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDsKJiM0MzsgICAgICAgIC0gJiMzNDsjc2l6ZS1jZWxscyYjMzQ7CiYjNDM7ICAgICAgICAtIHJhbmdlcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oJmd0OwomIzQzOwomIzQzOyAgICBzb2MgewomIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICNzaXplLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOwomIzQzOyAgICAgIHRzY3NzQDFjODAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxsZW1hbnMtdHNjc3MmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDAgMHgwMWM4MDAwMCAweDAgMHgyMDAwJmd0OzsKJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0FIQl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEsmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2FoYiYjMzQ7LCAmIzM0O2NudHImIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzE1NjI1MDAwJmd0OzsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9jbG9jay9xY29tLHNhODc3NXAtZ2NjLmgmZ3Q7CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHNvYyB7CiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7CiYjNDM7ICAgICAgdHNjc3NAMWM4MDAwMCB7CiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtxY29tLGxlbWFucy10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICByYW5nZXM7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0FIQl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEsmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAgJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDssICYjMzQ7ZXR1JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ1NTX0VUVV9DTEsmZ3Q7OwomIzQzOyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSAmbHQ7MTU2MjUwMDAmZ3Q7LCAmbHQ7MTU2MjUwMDAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgaW50ZXJydXB0cyA9ICZsdDtHSUNfU1BJIDYwNCBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9ICYjMzQ7ZXR1X3N1bW1hcnkmIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxYzkxMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzkxMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIwJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxYzkyMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxYzkyMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIxJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwomIzQzOy4uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjM5Mzg3NjE0ZWY4OTM5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbApAQCAtMCwwICYjNDM7MSwxODcgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpIG9uIFF1YWxjb21tIFFEVTEwMDAgU29DCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIEltcmFuIFNoYWlrICZsdDtpbXJhbi5zaGFpa0Bvc3MucXVhbGNvbW0uY29tJmd0OwomIzQzOyAgLSBUYW5peWEgRGFzICZsdDt0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluCiYjNDM7ICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuCiYjNDM7CiYjNDM7ICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkCiYjNDM7ICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlcgomIzQzOyAgY2xvY2tzLgomIzQzOyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsCiYjNDM7ICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsCiYjNDM7ICBldmVudCBzZWxlY3Rvci4gU3VwcG9ydCBmb3IgdGhlIEVUVSBibG9jayByZXF1aXJlcyB0aGUgYWRkaXRpb25hbCBFVFUKJiM0MzsgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLgomIzQzOwomIzQzO3Byb3BlcnRpZXM6CiYjNDM7ICBjb21wYXRpYmxlOgomIzQzOyAgICBjb25zdDogcWNvbSxxZHUxMDAwLXRzY3NzCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IHRzYwomIzQzOwomIzQzOyAgY2xvY2tzOgomIzQzOyAgICBtaW5JdGVtczogMgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgbWluSXRlbXM6IDIKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogYWhiCiYjNDM7ICAgICAgLSBjb25zdDogY250cgomIzQzOyAgICAgIC0gY29uc3Q6IGV0dQomIzQzOwomIzQzOyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlCiYjNDM7ICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZQomIzQzOwomIzQzOyAgJiMzNDsjYWRkcmVzcy1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMgomIzQzOwomIzQzOyAgJiMzNDsjc2l6ZS1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMgomIzQzOwomIzQzOyAgcmFuZ2VzOiB0cnVlCiYjNDM7CiYjNDM7cGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAmIzM0O15ldHUtc2xpY2VAWzAtOWEtZl0mIzQzOyQmIzM0OzoKJiM0MzsgICAgdHlwZTogb2JqZWN0CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBFVFUgc2xpY2UgY29uZmlndXJhdGlvbgomIzQzOyAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgIHJlZzoKJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAgICAgcGluY3RybC0wOiB0cnVlCiYjNDM7CiYjNDM7ICAgICAgcGluY3RybC1uYW1lczoKJiM0MzsgICAgICAgIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGNvbnN0OiBkZWZhdWx0CiYjNDM7CiYjNDM7ICAgICAgaW50ZXJydXB0czoKJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBQZXIgc2xpY2UgaW50ZXJydXB0IGdlbmVyYXRlZCBieSBFVFUgYmFzZWQgb24gZXh0ZXJuYWwgZXZlbnQgdHJpZ2dlci4KJiM0MzsgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAgICAgcWNvbSxldHUtZXZlbnQtc2VsOgomIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEV2ZW50IHNlbGVjdGlvbiB2YWx1ZSBmb3IgdGhpcyBzbGljZS4KJiM0MzsgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMgomIzQzOwomIzQzOyAgICAgIHFjb20sZXR1LXNsaWNlOgomIzQzOyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLgomIzQzOyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7ICAgICAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAgICAgLSBxY29tLGV0dS1ldmVudC1zZWwKJiM0MzsgICAgICAtIHFjb20sZXR1LXNsaWNlCiYjNDM7ICAgICAgLSBwaW5jdHJsLTAKJiM0MzsgICAgICAtIHBpbmN0cmwtbmFtZXMKJiM0MzsgICAgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSByZWctbmFtZXMKJiM0MzsgIC0gY2xvY2tzCiYjNDM7ICAtIGNsb2NrLW5hbWVzCiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtIGlmOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjbG9jay1uYW1lczoKJiM0MzsgICAgICAgICAgY29udGFpbnM6CiYjNDM7ICAgICAgICAgICAgY29uc3Q6IGV0dQomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjbG9ja3M6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzCiYjNDM7ICAgICAgICBjbG9jay1uYW1lczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDMKJiM0MzsgICAgICByZXF1aXJlZDoKJiM0MzsgICAgICAgIC0gJiMzNDsjYWRkcmVzcy1jZWxscyYjMzQ7CiYjNDM7ICAgICAgICAtICYjMzQ7I3NpemUtY2VsbHMmIzM0OwomIzQzOyAgICAgICAgLSByYW5nZXMKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaCZndDsKJiM0MzsKJiM0MzsgICAgc29jIHsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsKJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDX0NGR19BSEJfQ0xLJmd0OywKJiM0MzsgICAgICAgICAgICAgICAgICZsdDsmYW1wO2djYyBHQ0NfVFNDX0NOVFJfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDs7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDs7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9ICZsdDs1MDAwMDAwMDAmZ3Q7OwomIzQzOyAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaCZndDsKJiM0MzsKJiM0MzsgICAgc29jIHsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDsyJmd0OzsKJiM0MzsKJiM0MzsgICAgICB0c2Nzc0AxZGEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDt0c2MmIzM0OzsKJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MiZndDs7CiYjNDM7ICAgICAgICByYW5nZXM7CiYjNDM7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DRkdfQUhCX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDssICYjMzQ7ZXR1JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19DTlRSX0NMSyZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7JmFtcDtnY2MgR0NDX1RTQ19FVFVfQ0xLJmd0OzsKJiM0MzsgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzUwMDAwMDAwMCZndDssICZsdDs1MDAwMDAwMDAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXR1LXNsaWNlQDFkYjEwMDAgewomIzQzOyAgICAgICAgICByZWcgPSAmbHQ7MHgwIDB4MDFkYjEwMDAgMHgwIDB4MTAwMCZndDs7CiYjNDM7ICAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7R0lDX1NQSSAzMjkgSVJRX1RZUEVfRURHRV9SSVNJTkcmZ3Q7OwomIzQzOyAgICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjY2lfdGltZXIwJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgfTsKJiM0MzsKJiM0MzsgICAgICAgIGV0dS1zbGljZUAxZGIyMDAwIHsKJiM0MzsgICAgICAgICAgcmVnID0gJmx0OzB4MCAweDAxZGIyMDAwIDB4MCAweDEwMDAmZ3Q7OwomIzQzOyAgICAgICAgICBpbnRlcnJ1cHRzID0gJmx0O0dJQ19TUEkgMzMwIElSUV9UWVBFX0VER0VfUklTSU5HJmd0OzsKJiM0MzsgICAgICAgICAgcGluY3RybC0wID0gJmx0OyZhbXA7Y2NpX3RpbWVyMSZndDs7CiYjNDM7ICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgICAgfTsKJiM0MzsgICAgfTsKJiM0MzsuLi4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaQppbmRleCAzYjA1MzllMjdiNTE5Mi4uZTIyNTI5MmExZTQxYTUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2kKQEAgLTMwMjMsNiAmIzQzOzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7CiAJCQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiAJCX07CiAKJiM0MzsJCXRzY3NzQDFjODAwMDAgewomIzQzOwkJCWNvbXBhdGlibGUgPSAmIzM0O3Fjb20sbGVtYW5zLXRzY3NzJiMzNDs7CiYjNDM7CQkJcmVnID0gJmx0OzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOwkJCXJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CQkJY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NTU19BSEJfQ0xLJmd0OywKJiM0MzsJCQkJICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsJCQljbG9jay1uYW1lcyA9ICYjMzQ7YWhiJiMzNDssICYjMzQ7Y250ciYjMzQ7OwomIzQzOwkJCWFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2djYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLJmd0OzsKJiM0MzsJCQlhc3NpZ25lZC1jbG9jay1yYXRlcyA9ICZsdDsxNTYyNTAwMCZndDs7CiYjNDM7CQl9OwomIzQzOwogCQl1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHsKIAkJCWNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4Nzc1cC11ZnNoYyYjMzQ7LCAmIzM0O3Fjb20sdWZzaGMmIzM0OywgJiMzNDtqZWRlYyx1ZnMtMi4wJiMzNDs7CiAJCQlyZWcgPSAmbHQ7MHgwIDB4MDFkODQwMDAgMHgwIDB4MzAwMCZndDs7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWR1MTAwMC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaQppbmRleCAyNmNjODZkMTJmNzI1Ni4uODk3OWMxODIyNTE4NGEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2kKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaQpAQCAtODc2LDYgJiM0Mzs4NzYsMTcgQEAgc3lzdGVtX25vYzogaW50ZXJjb25uZWN0QDE2NDAwMDAgewogCQkJI2ludGVyY29ubmVjdC1jZWxscyA9ICZsdDsyJmd0OzsKIAkJfTsKIAomIzQzOwkJdHNjc3NAMWRhMDAwMCB7CiYjNDM7CQkJY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxxZHUxMDAwLXRzY3NzJiMzNDs7CiYjNDM7CQkJcmVnID0gJmx0OzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDAmZ3Q7OwomIzQzOwkJCXJlZy1uYW1lcyA9ICYjMzQ7dHNjJiMzNDs7CiYjNDM7CQkJY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ0ZHX0FIQl9DTEsmZ3Q7LAomIzQzOwkJCQkgJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ05UUl9DTEsmZ3Q7OwomIzQzOwkJCWNsb2NrLW5hbWVzID0gJiMzNDthaGImIzM0OywgJiMzNDtjbnRyJiMzNDs7CiYjNDM7CQkJYXNzaWduZWQtY2xvY2tzID0gJmx0OyZhbXA7Z2NjIEdDQ19UU0NfQ05UUl9DTEsmZ3Q7OwomIzQzOwkJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0gJmx0OzUwMDAwMDAwMCZndDs7CiYjNDM7CQl9OwomIzQzOwogCQl0Y3NyX211dGV4OiBod2xvY2tAMWY0MDAwMCB7CiAJCQljb21wYXRpYmxlID0gJiMzNDtxY29tLHRjc3ItbXV0ZXgmIzM0OzsKIAkJCXJlZyA9ICZsdDsweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwJmd0OzsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWcgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnCmluZGV4IDZlYzhkM2E2OWM5OGUwLi43MzQzNWU1Zjg4NzdkMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnCkBAIC02ODMsNiAmIzQzOzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW0KIENPTkZJR19TUE1JPXkKIENPTkZJR19TUE1JX0FQUExFPW0KIENPTkZJR19TUE1JX01US19QTUlGPW0KJiM0MztDT05GSUdfUFRQX1FDT01fVFNDPW0KIENPTkZJR19QSU5DVFJMX0FQUExFX0dQSU89bQogQ09ORklHX1BJTkNUUkxfREE5MDYyPW0KIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnCmluZGV4IGI5MzY0MGNhMDhiNzI4Li5kM2NlYjFlZTAxYTUwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC0yNjMsNCAmIzQzOzI2MywxNCBAQCBjb25maWcgUFRQX05FVENfVjRfVElNRVIKIAkgIHN5bmNocm9uaXphdGlvbi4gSXQgYWxzbyBzdXBwb3J0cyBwZXJpb2RpYyBvdXRwdXQgc2lnbmFsIChlLmcuIFBQUykKIAkgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy4KIAomIzQzO2NvbmZpZyBQVFBfUUNPTV9UU0MKJiM0MzsJdHJpc3RhdGUgJiMzNDtRdWFsY29tbSBUU0MgYXMgUFRQIGNsb2NrJiMzNDsKJiM0MzsJZGVwZW5kcyBvbiBDT01NT05fQ0xLICZhbXA7JmFtcDsgUFRQXzE1ODhfQ0xPQ0sKJiM0MzsJaGVscAomIzQzOwkgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyCiYjNDM7CSAgU3Vic3lzdGVtIChUU0NTUykgYXMgYSBQVFAgY2xvY2suCiYjNDM7CiYjNDM7CSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQomIzQzOwkgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy4KJiM0MzsKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL01ha2VmaWxlIGIvZHJpdmVycy9wdHAvTWFrZWZpbGUKaW5kZXggYmRjNDdlMjg0ZjE0ZTcuLmZmMDI5MzIzZTk4ZjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3B0cC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZQpAQCAtMjIsMyAmIzQzOzIyLDQgQEAgb2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUCkJJiM0Mzs9IHB0cF9vY3Aubwogb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKQkJJiM0Mzs9IHB0cF9kZmxfdG9kLm8KIG9iai0kKENPTkZJR19QVFBfUzM5MCkJCQkmIzQzOz0gcHRwX3MzOTAubwogb2JqLSQoQ09ORklHX1BUUF9ORVRDX1Y0X1RJTUVSKQkJJiM0Mzs9IHB0cF9uZXRjLm8KJiM0MztvYmotJChDT05GSUdfUFRQX1FDT01fVFNDKQkJJiM0Mzs9IHB0cF9xY29tX3RzYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuYyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iMjkyNDgxNTAzODhmMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jCkBAIC0wLDAgJiM0MzsxLDQxMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKJiM0MzsvKgomIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLgomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIFJPTExPVkVSX1ZBTAkJCQk5OTk5OTk5OTkKJiM0MzsjZGVmaW5lIE5TRUNfU0hJRlQJCQkJMzIKJiM0MzsjZGVmaW5lIFBVTFNFX1dJRFRIX01BU0sJCQlHRU5NQVNLKDcsIDYpCiYjNDM7I2RlZmluZSBEUklGVF9NQVhfUkVTCQkJCTB4MUZGRkYKJiM0MzsjZGVmaW5lIERSSUZUX0pVTVBfU1dBTExPVwkJCUJJVCgzMSkKJiM0MzsjZGVmaW5lIERSSUZUX1BFUklPRF9NQVNLCQkJR0VOTUFTSygyOCwgMTIpCiYjNDM7I2RlZmluZSBEUklGVF9TVUJQRVJJT0RfTUFTSwkJCUdFTk1BU0soMTEsIDApCiYjNDM7I2RlZmluZSBEUklGVF9JTlRFUlZBTF9VUwkJCTEwCiYjNDM7I2RlZmluZSBEUklGVF9NSU5fVElNRU9VVF9VUwkJCTUwMDAKJiM0MzsKJiM0MzsjZGVmaW5lIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIGNudHJfcmVzKQkJCVwKJiM0MzsJbWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcCiYjNDM7CSAgICAgIERSSUZUX01JTl9USU1FT1VUX1VTKQomIzQzOwomIzQzO3N0cnVjdCBxY29tX3RzY19yZWdzIHsKJiM0MzsJdTMyIGNvbnRyb2xfY250Y3I7CiYjNDM7CXUzMiBjb250cm9sX2NudGN2X2xvOwomIzQzOwl1MzIgY29udHJvbF9jbnRjdl9oaTsKJiM0MzsJdTMyIGRyaWZ0X2NvcnJlY3RfaW5jcl92YWw7CiYjNDM7CXUzMiBkcmlmdF9jb3JyZWN0X2R1cmF0aW9uOwomIzQzOwl1MzIgZHJpZnRfY29ycmVjdF9jbWQ7CiYjNDM7CXUzMiByb2xsb3Zlcl92YWw7CiYjNDM7CXUzMiBvZmZzZXRfbG87CiYjNDM7CXUzMiBvZmZzZXRfaGk7CiYjNDM7CXUzMiByZWFkX2NudGN2X2xvOwomIzQzOwl1MzIgcmVhZF9jbnRjdl9oaTsKJiM0Mzt9OwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAtIFNvQyBzcGVjaWZpYyBUU0MgaGFyZHdhcmUgY2FwYWJpbGl0aWVzCiYjNDM7ICoKJiM0MzsgKiBAcm9sbG92ZXI6IGluZGljYXRlcyB0aGUgY291bnRlciB1c2VzIHNlYy9uc2VjIHNwbGl0CiYjNDM7ICogQG9mZnNldF9jb3JyZWN0aW9uOiBoYXJkd2FyZSBzdXBwb3J0cyBvbmUtc2hvdCBvZmZzZXQgY29ycmVjdGlvbgomIzQzOyAqIEBwdWxzZV93aWR0aDogdmFsaWQgcHVsc2Ugd2lkdGggaW4gY3ljbGVzIGZvciBkcmlmdCBjb3JyZWN0aW9uCiYjNDM7ICogQGNudHJfcmVzOiBUU0MgY291bnRlciByZXNvbHV0aW9uIGluIG5zZWMKJiM0MzsgKiBAcmVnX2xheW91dDogcmVnaXN0ZXIgbGF5b3V0IGZvciB0aGlzIFNvQy92ZXJzaW9uCiYjNDM7ICovCiYjNDM7c3RydWN0IHFjb21fdHNjX3NvY19kYXRhIHsKJiM0MzsJYm9vbCByb2xsb3ZlcjsKJiM0MzsJYm9vbCBvZmZzZXRfY29ycmVjdGlvbjsKJiM0MzsJaW50IHB1bHNlX3dpZHRoOwomIzQzOwlpbnQgY250cl9yZXM7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdfbGF5b3V0OwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IHFjb21fdHNjIHsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2OwomIzQzOwl2b2lkIF9faW9tZW0gKmJhc2U7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jOwomIzQzOwlzdHJ1Y3QgY2xrICphaGJfY2xrOwomIzQzOwlzdHJ1Y3QgY2xrICpjbnRyX2NsazsKJiM0MzsJc3RydWN0IGNsayAqZXR1X2NsazsKJiM0MzsJc3RydWN0IHB0cF9jbG9jayAqcHRwOwomIzQzOwlzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX2luZm87CiYjNDM7CS8qIE11dGV4IHRvIHByb3RlY3Qgb3BlcmF0aW9ucyBmcm9tIGJlaW5nIGludGVycnVwdGVkICovCiYjNDM7CXN0cnVjdCBtdXRleCBsb2NrOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgcWNvbV90c2NfaXNfZW5hYmxlZChzdHJ1Y3QgcWNvbV90c2MgKnRzYykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLSZndDtzb2MtJmd0O3JlZ19sYXlvdXQ7CiYjNDM7CiYjNDM7CXJldHVybiByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKSAmYW1wOyBCSVQoMCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcWNvbV90c2NfcmVhZF90aW1lKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy0mZ3Q7c29jLSZndDtyZWdfbGF5b3V0OwomIzQzOwl1MzIgaGksIGxvOwomIzQzOwomIzQzOwlpZiAoIXFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwloaSA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JlYWRfY250Y3ZfaGkpOwomIzQzOwlsbyA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JlYWRfY250Y3ZfbG8pOwomIzQzOwomIzQzOwlpZiAodHNjLSZndDtzb2MtJmd0O3JvbGxvdmVyKSB7CiYjNDM7CQl0cy0mZ3Q7dHZfc2VjID0gaGk7CiYjNDM7CQl0cy0mZ3Q7dHZfbnNlYyA9IGxvOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTY0IG5zID0gKCh1NjQpaGkgJmx0OyZsdDsgTlNFQ19TSElGVCkgfCBsbzsKJiM0MzsKJiM0MzsJCSp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0c2MtJmd0O2xvY2spOwomIzQzOwlyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCB0cyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBxY29tX3RzY19zcGxpdF90cyhzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgdHMsIHUzMiAqaGksIHUzMiAqbG8pCiYjNDM7ewomIzQzOwlpZiAodHNjLSZndDtzb2MtJmd0O3JvbGxvdmVyKSB7CiYjNDM7CQkqaGkgPSB0cy50dl9zZWM7CiYjNDM7CQkqbG8gPSB0cy50dl9uc2VjOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTY0IG5zID0gdGltZXNwZWM2NF90b19ucygmYW1wO3RzKTsKJiM0MzsKJiM0MzsJCSpsbyA9IGxvd2VyXzMyX2JpdHMobnMpOwomIzQzOwkJKmhpID0gdXBwZXJfMzJfYml0cyhucyk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY191cGRhdGVfY291bnRlcihzdHJ1Y3QgcWNvbV90c2MgKnRzYywgc3RydWN0IHRpbWVzcGVjNjQgdHMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy0mZ3Q7c29jLSZndDtyZWdfbGF5b3V0OwomIzQzOwl1MzIgcmVndmFsLCBoaSwgbG87CiYjNDM7CiYjNDM7CXFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsICZhbXA7aGksICZhbXA7bG8pOwomIzQzOwomIzQzOwl3cml0ZWxfcmVsYXhlZChsbywgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3ZfbG8pOwomIzQzOwl3cml0ZWxfcmVsYXhlZChoaSwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3ZfaGkpOwomIzQzOwomIzQzOwlyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsJcmVndmFsIHw9IEJJVCgwKTsKJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7Y29udHJvbF9jbnRjcik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQoc3RydWN0IHFjb21fdHNjICp0c2MsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHRzKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtJmd0O3NvYy0mZ3Q7cmVnX2xheW91dDsKJiM0MzsJc3RydWN0IHRpbWVzcGVjNjQgdG9kOwomIzQzOwl1MzIgcmVndmFsLCBoaSwgbG87CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICh0c2MtJmd0O3NvYy0mZ3Q7b2Zmc2V0X2NvcnJlY3Rpb24pIHsKJiM0MzsJCXFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsICZhbXA7aGksICZhbXA7bG8pOwomIzQzOwomIzQzOwkJd3JpdGVsX3JlbGF4ZWQobG8sIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtvZmZzZXRfbG8pOwomIzQzOwkJd3JpdGVsX3JlbGF4ZWQoaGksIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtvZmZzZXRfaGkpOwomIzQzOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZQomIzQzOwkgKiBjb3VudGVyIHdpdGggdGhlIGNvcnJlY3RlZCB0aW1lLCBhcyByZWNvbW1lbmRlZCBieSB0aGUgaGFyZHdhcmUKJiM0MzsJICogZGVzaWduIHRlYW0uCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCAmYW1wO3RvZCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsJcmVndmFsICZhbXA7PSB+QklUKDApOwomIzQzOwl3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgdGltZXNwZWM2NF9hZGQodG9kLCB0cykpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fdHNjX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7CiYjNDM7CWNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLSZndDtzb2MtJmd0O3JlZ19sYXlvdXQ7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYzY0IHRvZDsKJiM0MzsJdTMyIHJlZ3ZhbDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChxY29tX3RzY19pc19lbmFibGVkKHRzYykpIHsKJiM0MzsJCXFjb21fdHNjX3JlYWRfdGltZSh0c2MsICZhbXA7dG9kKTsKJiM0MzsJCXJldCA9IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQodHNjLCB0aW1lc3BlYzY0X3N1YigqdHMsIHRvZCkpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogQ29uZmlndXJlIGFuZCBlbmFibGUgdGhlIFRTQyBjb3VudGVyICovCiYjNDM7CXJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2NvbnRyb2xfY250Y3IpOwomIzQzOwlyZWd2YWwgfD0gRklFTERfUFJFUChQVUxTRV9XSURUSF9NQVNLLCB0c2MtJmd0O3NvYy0mZ3Q7cHVsc2Vfd2lkdGgpOwomIzQzOwl3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtjb250cm9sX2NudGNyKTsKJiM0MzsKJiM0MzsJaWYgKHRzYy0mZ3Q7c29jLSZndDtyb2xsb3ZlcikKJiM0MzsJCXdyaXRlbF9yZWxheGVkKFJPTExPVkVSX1ZBTCwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O3JvbGxvdmVyX3ZhbCk7CiYjNDM7CiYjNDM7CXJldCA9IHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgKnRzKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJcmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIG5zX3RvX3RpbWVzcGVjNjQoZGVsdGEpKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBsb25nIHNjYWxlZF9wcG0pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy0mZ3Q7c29jOwomIzQzOwljb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHNvYy0mZ3Q7cmVnX2xheW91dDsKJiM0MzsJbG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYihzY2FsZWRfcHBtKTsKJiM0MzsJdTY0IHBlcmlvZCwgaW5jdmFsID0gMDsKJiM0MzsJdTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDsKJiM0MzsKJiM0MzsJaWYgKHBwYiAmbHQ7IDApIHsKJiM0MzsJCXBwYiA9IC1wcGI7CiYjNDM7CQlyZWd2YWwgJmFtcDs9IH5EUklGVF9KVU1QX1NXQUxMT1c7CiYjNDM7CiYjNDM7CQlwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLSZndDtjbnRyX3Jlcyk7CiYjNDM7CQlpZiAocGVyaW9kICZndDs9IERSSUZUX01BWF9SRVMpCiYjNDM7CQkJcGVyaW9kID0gRFJJRlRfTUFYX1JFUzsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJlZ3ZhbCB8PSBEUklGVF9KVU1QX1NXQUxMT1c7CiYjNDM7CiYjNDM7CQlwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLSZndDtjbnRyX3Jlcyk7CiYjNDM7CQlpZiAocGVyaW9kICZndDs9IERSSUZUX01BWF9SRVMpIHsKJiM0MzsJCQlwZXJpb2QgPSBEUklGVF9NQVhfUkVTOwomIzQzOwkJCWluY3ZhbCA9IHNvYy0mZ3Q7Y250cl9yZXMgKiAyOwomIzQzOwkJfSBlbHNlIGlmIChwcGIgJmx0OyBzb2MtJmd0O2NudHJfcmVzKSB7CiYjNDM7CQkJaW5jdmFsID0gc29jLSZndDtjbnRyX3JlcyAmIzQzOyBwcGI7CiYjNDM7CQkJcGVyaW9kID0gMTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaW5jdmFsID0gc29jLSZndDtjbnRyX3JlcyAqIDI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3VicGVyaW9kID0gc29jLSZndDtwdWxzZV93aWR0aCAqIDI7CiYjNDM7CXJlZ3ZhbCB8PSBGSUVMRF9QUkVQKERSSUZUX1NVQlBFUklPRF9NQVNLLCBzdWJwZXJpb2QpOwomIzQzOwlyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9QRVJJT0RfTUFTSywgcGVyaW9kKTsKJiM0MzsKJiM0MzsJLyogVXBkYXRlIGp1bXAvc3dhbGxvdywgcGVyaW9kLCBzdWJwZXJpb2QgKi8KJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7ZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7CiYjNDM7CiYjNDM7CXdyaXRlbF9yZWxheGVkKGluY3ZhbCwgdHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2RyaWZ0X2NvcnJlY3RfaW5jcl92YWwpOwomIzQzOwomIzQzOwkvKiBUcmlnZ2VyIHRoZSBkcmlmdCBjb3JyZWN0aW9uICovCiYjNDM7CXJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLSZndDtiYXNlICYjNDM7IHJlZ3MtJmd0O2RyaWZ0X2NvcnJlY3RfY21kKTsKJiM0MzsJcmVndmFsIHw9IEJJVCgwKTsKJiM0MzsJd3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtJmd0O2Jhc2UgJiM0MzsgcmVncy0mZ3Q7ZHJpZnRfY29ycmVjdF9jbWQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy0mZ3Q7YmFzZSAmIzQzOyByZWdzLSZndDtkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLAomIzQzOwkJCQkgICEocmVndmFsICZhbXA7IEJJVCgxKSksIERSSUZUX0lOVEVSVkFMX1VTLAomIzQzOwkJCQkgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy0mZ3Q7Y250cl9yZXMpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX3RzY19hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoc2NhbGVkX3BwbSA9PSAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0c2MtJmd0O2xvY2spOwomIzQzOwlyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RzYy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcWNvbV9wdHBfaW5mbyA9IHsKJiM0MzsJLm93bmVyCQk9IFRISVNfTU9EVUxFLAomIzQzOwkubmFtZQkJPSAmIzM0O1BUUF9RQ09NX1RTQyYjMzQ7LAomIzQzOwkubWF4X2Fkagk9IDk5OTk5OTksCiYjNDM7CS5hZGpmaW5lCT0gcWNvbV90c2NfYWRqZmluZSwKJiM0MzsJLmFkanRpbWUJPSBxY29tX3RzY19hZGp0aW1lLAomIzQzOwkuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLAomIzQzOwkuc2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19zZXR0aW1lLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzIHFjb21fdHNjX2xheW91dCA9IHsKJiM0MzsJLmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCwKJiM0MzsJLmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCwKJiM0MzsJLmNvbnRyb2xfY250Y3ZfaGkgICAgICAgICA9IDB4YywKJiM0MzsJLmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsCiYjNDM7CS5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLAomIzQzOwkuZHJpZnRfY29ycmVjdF9jbWQgICAgICAgID0gMHgzNCwKJiM0MzsJLnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsCiYjNDM7CS5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLAomIzQzOwkub2Zmc2V0X2hpICAgICAgICAgICAgICAgID0gMHg1NCwKJiM0MzsJLnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCwKJiM0MzsJLnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0gewomIzQzOwkucmVnX2xheW91dAkJPSAmYW1wO3Fjb21fdHNjX2xheW91dCwKJiM0MzsJLnJvbGxvdmVyCQk9IGZhbHNlLAomIzQzOwkub2Zmc2V0X2NvcnJlY3Rpb24JPSBmYWxzZSwKJiM0MzsJLnB1bHNlX3dpZHRoCQk9IDIsCiYjNDM7CS5jbnRyX3JlcwkJPSA2NCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfcWR1MTAwMCA9IHsKJiM0MzsJLnJlZ19sYXlvdXQJCT0gJmFtcDtxY29tX3RzY19sYXlvdXQsCiYjNDM7CS5yb2xsb3ZlcgkJPSB0cnVlLAomIzQzOwkub2Zmc2V0X2NvcnJlY3Rpb24JPSB0cnVlLAomIzQzOwkucHVsc2Vfd2lkdGgJCT0gMywKJiM0MzsJLmNudHJfcmVzCQk9IDIsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLGxlbWFucy10c2NzcyYjMzQ7LCAuZGF0YSA9ICZhbXA7cWNvbV90c2NfbGVtYW5zIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20scWR1MTAwMC10c2NzcyYjMzQ7LCAuZGF0YSA9ICZhbXA7cWNvbV90c2NfcWR1MTAwMCB9LAomIzQzOwl7IH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fdHNjX29mX21hdGNoKTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBxY29tX3B0cF90c2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwomIzQzOwomIzQzOwlpZiAodHNjICZhbXA7JmFtcDsgdHNjLSZndDtwdHApIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKHRzYy0mZ3Q7cHRwKTsKJiM0MzsJCXRzYy0mZ3Q7cHRwID0gTlVMTDsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHFjb21fcHRwX3RzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7CiYjNDM7CXN0cnVjdCBxY29tX3RzYyAqdHNjOwomIzQzOwlzdHJ1Y3QgcmVzb3VyY2UgKnJfbWVtOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAoIXNvYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl0c2MgPSBkZXZtX2t6YWxsb2MoJmFtcDtwZGV2LSZndDtkZXYsIHNpemVvZigqdHNjKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdHNjKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXRzYy0mZ3Q7ZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXRzYy0mZ3Q7c29jID0gc29jOwomIzQzOwomIzQzOwlyZXQgPSBkZXZtX211dGV4X2luaXQoJmFtcDtwZGV2LSZndDtkZXYsICZhbXA7dHNjLSZndDtsb2NrKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJfbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgJiMzNDt0c2MmIzM0Oyk7CiYjNDM7CWlmICghcl9tZW0pIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7bm8gSU8gcmVzb3VyY2UgZGVmaW5lZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FTlhJTzsKJiM0MzsJfQomIzQzOwomIzQzOwl0c2MtJmd0O2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJmFtcDtwZGV2LSZndDtkZXYsIHJfbWVtKTsKJiM0MzsJaWYgKElTX0VSUih0c2MtJmd0O2Jhc2UpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIodHNjLSZndDtiYXNlKTsKJiM0MzsKJiM0MzsJdHNjLSZndDthaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7YWhiJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHRzYy0mZ3Q7YWhiX2NsaykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih0c2MtJmd0O2FoYl9jbGspOwomIzQzOwomIzQzOwl0c2MtJmd0O2NudHJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Y250ciYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUih0c2MtJmd0O2NudHJfY2xrKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHRzYy0mZ3Q7Y250cl9jbGspOwomIzQzOwomIzQzOwkvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi8KJiM0MzsJdHNjLSZndDtldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7ZXR1JiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHRzYy0mZ3Q7ZXR1X2NsaykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih0c2MtJmd0O2V0dV9jbGspOwomIzQzOwomIzQzOwl0c2MtJmd0O3B0cF9pbmZvID0gcWNvbV9wdHBfaW5mbzsKJiM0MzsKJiM0MzsJdHNjLSZndDtwdHAgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoJmFtcDt0c2MtJmd0O3B0cF9pbmZvLCAmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CWlmIChJU19FUlIodHNjLSZndDtwdHApKSB7CiYjNDM7CQlyZXQgPSBQVFJfRVJSKHRzYy0mZ3Q7cHRwKTsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHB0cCBjbG9ja1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9wdHBfdHNjX2RyaXZlciA9IHsKJiM0MzsJLnByb2JlICA9IHFjb21fcHRwX3RzY19wcm9iZSwKJiM0MzsJLnJlbW92ZSA9IHFjb21fcHRwX3RzY19yZW1vdmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cWNvbV9wdHBfdHNjJiMzNDssCiYjNDM7CQkub2ZfbWF0Y2hfdGFibGUgPSBxY29tX3RzY19vZl9tYXRjaCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UFRQIFFDT00gVFNDIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDU6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzIKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMTcyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgTmV3IFBUUCBDbG9jayBEcml2ZXIqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhlIHBhdGNoIGFkZHMgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHVwZGF0ZXMgZGV2aWNlIHRyZWVzIGZvciBzcGVjaWZpYyBRdWFsY29tbSBwbGF0Zm9ybXMgKGxlbWFucyBhbmQgcWR1MTAwMCksIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBwcm92aWRlcyB0aGUgYHB0cF9xY29tX3RzYy5jYCBkcml2ZXIuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgcmVnaXN0ZXJlZCBhcyAmIzM0O3Fjb21fcHRwX3RzYyYjMzQ7LCBhbmQgc2VlbXMgdG8gYmUgcHJvdmlkaW5nIHRoZSBzdGFuZGFyZCBQVFAgY2xvY2sgaW50ZXJmYWNlIOKAkyByZWdpc3RlciwgZ2V0L3NldCB0aW1lIGZ1bmN0aW9ucywgYWxsIGFjY2Vzc2libGUgdmlhIGlvY3RscyBhbmQgc3lzZnMuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgKmJpbmRzKiB0byBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGlkZW50aWZpZWQgYnkgZGV2aWNlIHRyZWUgYmluZGluZ3M6IGBxY29tLGxlbWFucy10c2Nzc2AgYW5kIGBxY29tLHFkdTEwMDAtdHNjc3NgLiBJbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IgZm9yIHRoaXMgKnNwZWNpZmljKiBoYXJkd2FyZSwgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyB3b24mIzM5O3QgYmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIHJlZ2lzdGVycyB0aGUgUFRQIGNsb2NrLCB3b24mIzM5O3QgYmUgY2FsbGVkLgoKT2YgY291cnNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgY3JlYXRlIHRoZXNlIHBsYXRmb3JtIGRldmljZXMsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBzeXpfZGV2cmVzYCBvciBieSBtb2RpZnlpbmcgdGhlIGRldmljZSB0cmVlIG9yIHV0aWxpemluZyBhIHBzZXVkby1kZXZpY2UuIEJ1dCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBvZnRlbiBmYWlsIGlmIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChhbmQgbWVtb3J5IHJlZ2lvbnMpIGlzbiYjMzk7dCBhY3R1YWxseSB0aGVyZSBvciBlbXVsYXRlZC4gVGhpcyBkcml2ZXIgdXNlcyBNTUlPIG9wZXJhdGlvbnMgKHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gbWVtb3J5IHVzaW5nIGByZWFkbF9yZWxheGVkYCwgYHdyaXRlbF9yZWxheGVkYCBhbmQgdGhlIGxpa2UsIGFjY2Vzc2luZyBgdHNjLSZndDtiYXNlYCksIHNvIGluIHRoZSBhYnNlbmNlIG9mIHJlYWwgaGFyZHdhcmUgb3IgYSBzdWZmaWNpZW50bHkgZGV0YWlsZWQgZW11bGF0b3IsIHRoZXNlIHJlYWRzL3dyaXRlcyB3aWxsIGZhaWwuCgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIG1hcCBtZW1vcnkgcmVnaW9ucyBmb3IgTU1JTy4gU28sIGxldCYjMzk7cyBsb29rIGZvciBzcGVjaWZpYyByZXN0cmljdGlvbnMuIFRoZSBndWlkZWxpbmVzIHN0YXRlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBpbnZvbHZlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2FuJiMzOTt0IGJlIGVtdWxhdGVkLCBvciwgbW9yZSBnZW5lcmFsbHksIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIFF1YWxjb21tIFNvQyYjMzk7cyBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0uIEl0ICpkZWZpbml0ZWx5KiB1c2VzIE1NSU8gKGBkZXZtX2lvcmVtYXBfcmVzb3VyY2VgKSwgYW5kIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UsIG1hcHBpbmcgbWVtb3J5IGZvciB0aG9zZSBNTUlPIHJlZ2lvbnMuIElzIGl0IHdvcnRoIGZ1enppbmc/IEdlbmVyYWxseSwgU29DLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBhcmUgcmVsYXRpdmVseSBpc29sYXRlZCDigJMgbWVhbmluZyB0aGV5IGp1c3QgZG8gTU1JTyByZWFkcy93cml0ZXMgd2l0aG91dCBjb21wbGV4IGludGVyYWN0aW9uIHdpdGggbmV0d29yayBvciBibG9jayBzdWJzeXN0ZW1zIOKAkyAqbWlnaHQqIGJlIGZ1enphYmxlIGlmIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgdGhlIGRyaXZlci4KCkJ1dCB0aGVyZSBhcmUgc29tZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBjbG9ja3MuIFRoZSBkcml2ZXIgcmVsaWVzIG9uIGdldHRpbmcgY2xvY2tzIHZpYSBgZGV2bV9jbGtfZ2V0X2VuYWJsZWRgIOKAkyBzcGVjaWZpY2FsbHkgY2xvY2tzIG5hbWVkICYjMzQ7YWhiJiMzNDsgYW5kICYjMzQ7Y250ciYjMzQ7LiBUaGVzZSBjbG9ja3MgYXJlIHZlcnkgbGlrZWx5IFNvQy1zcGVjaWZpYywgYW5kIGluIGEgZ2VuZXJpYyBRRU1VIHZpcnR1YWwgbWFjaGluZSAobGlrZSB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUgZm9yIGFhcmNoNjQpLCB0aGVzZSBjbG9ja3MgKndvbiYjMzk7dCogZXhpc3QuIFRodXMsIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAgd291bGQgcmV0dXJuIGFuIGVycm9yIGxpa2UgYC1FTk9FTlRgLCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdvdWxkIGZhaWwsIG1ha2luZyB0aGUgZHJpdmVyIHVucmVhY2hhYmxlLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBjYW4gd2UgYnlwYXNzIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAsIG9yIGFyZSB0aGVyZSBkdW1teSBjbG9ja3MgYXZhaWxhYmxlPyBHaXZlbiB0aGUgcmVsaWFuY2Ugb24gYENPTkZJR19DT01NT05fQ0xLYCwgYSBzdWNjZXNzZnVsIGBjbGtfZ2V0YCByZXF1aXJlcyB0aGUgY2xvY2sgdG8gYmUgcHJlc2VudCwgYW5kIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHN5emthbGxlciBwcm92aWRlcyBhbiBlbXVsYXRvciBmb3IgdGhlc2UgY2xvY2tzIG9yIHRoYXQgd2UmIzM5O3JlIHJ1bm5pbmcgYSBRRU1VIGltYWdlIGVtdWxhdGluZyAqdGhpcyogc3BlY2lmaWMgU29DLiBTaW5jZSB0aGlzIGRyaXZlciBpcyB0aWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIGNsb2NrcywgYW5kIHdlJiMzOTtyZSBsaWtlbHkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB0aGlzIGRyaXZlciBpcyBub3QgcmVhY2hhYmxlLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uOiBhIFNvQy1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIGNsb2NrcywgcmVndWxhdG9ycywgYW5kIE1NSU8gbGF5b3V0cyBub3QgcHJlc2VudCBpbiBnZW5lcmljIFZNcy4KCkNvdWxkIHN5emthbGxlciBtb2NrIHRoZSBjbG9ja3M/IE5vdCBnZW5lcmFsbHkuIEl0IGZvY3VzZXMgb24ga2VybmVsIGludGVyZmFjZXMsIG5vdCBlbXVsYXRpbmcgaGFyZHdhcmUgZGV0YWlscyBsaWtlIHNwZWNpZmljIGNsb2Nrcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgZHJpdmVyIGNvZGUuCgpgYGBjCgl0c2MtJmd0O2FoYl9jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZCgmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDthaGImIzM0Oyk7CglpZiAoSVNfRVJSKHRzYy0mZ3Q7YWhiX2NsaykpCgkJcmV0dXJuIFBUUl9FUlIodHNjLSZndDthaGJfY2xrKTsKYGBgCgpUaGUgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIHRoZSBjbG9jazsgaWYgdGhlCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgUFRQIGNsb2NrIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbSAoVFNDU1MpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGNsb2NrcyAoXCYjMzQ7YWhiXCYjMzQ7LCBcJiMzNDtjbnRyXCYjMzQ7KSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFwmIzM0O2FoYlwmIzM0OywgXCYjMzQ7Y250clwmIzM0OykgYW5kIE1NSU8gcmVzb3VyY2VzIHRvIHByb2JlIHN1Y2Nlc3NmdWxseS4gVGhlc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjExNjEwMDgwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTk4MjM5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjExNjExNTUxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwODI4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGU0Zjk4MzJhYWUzMDgyYTk2MWQwYzg0ZGNlNjU0N2Y3YTBjYjM1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAwNToxNTowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20sbGVtYW5zLXRzY3NzLnlhbWxcXG5AQCAtMCwwICsxLDE5OCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gTGVtYW5zIGFuZCBNb25hY28gU29Dc1xcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBJbXJhbiBTaGFpayBcXHUwMDNjaW1yYW4uc2hhaWtAb3NzLnF1YWxjb21tLmNvbVxcdTAwM2VcXG4rICAtIFRhbml5YSBEYXMgXFx1MDAzY3Rhbml5YS5kYXNAb3NzLnF1YWxjb21tLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cXG4rICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXFxuK1xcbisgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcXG4rICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxcbisgIGNsb2Nrcy5cXG4rICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcXG4rICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXFxuKyAgZXZlbnQgc2VsZWN0b3IuIFN1cHBvcnQgZm9yIHRoZSBFVFUgYmxvY2sgcmVxdWlyZXMgdGhlIGFkZGl0aW9uYWwgRVRVXFxuKyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgb25lT2Y6XFxuKyAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXFxuKyAgICAgIC0gaXRlbXM6XFxuKyAgICAgICAgICAtIGNvbnN0OiBxY29tLG1vbmFjby10c2Nzc1xcbisgICAgICAgICAgLSBjb25zdDogcWNvbSxsZW1hbnMtdHNjc3NcXG4rXFxuKyAgcmVnOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgcmVnLW5hbWVzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gY29uc3Q6IHRzY1xcbitcXG4rICBjbG9ja3M6XFxuKyAgICBtaW5JdGVtczogMlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBBSEIgY29uZmlndXJhdGlvbiBjbG9jay5cXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgRVRVIGNsb2NrLlxcbitcXG4rICBjbG9jay1uYW1lczpcXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogYWhiXFxuKyAgICAgIC0gY29uc3Q6IGNudHJcXG4rICAgICAgLSBjb25zdDogZXR1XFxuK1xcbisgIGludGVycnVwdHM6XFxuKyAgICBkZXNjcmlwdGlvbjogU3VtbWFyeSBpbnRlcnJ1cHQgcmFpc2VkIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IGZvciBhbnkgb2YgdGhlIEVUVSBzbGljZXMuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogZXR1X3N1bW1hcnlcXG4rXFxuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXFxuKyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcXG4rXFxuKyAgXFxcIiNhZGRyZXNzLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAyXFxuK1xcbisgIFxcXCIjc2l6ZS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMlxcbitcXG4rICByYW5nZXM6IHRydWVcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJeZXR1LXNsaWNlQFswLTlhLWZdKyRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGNvbmZpZ3VyYXRpb25cXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtYXhJdGVtczogMVxcbitcXG4rICAgICAgcGluY3RybC0wOiB0cnVlXFxuK1xcbisgICAgICBwaW5jdHJsLW5hbWVzOlxcbisgICAgICAgIGl0ZW1zOlxcbisgICAgICAgICAgLSBjb25zdDogZGVmYXVsdFxcbitcXG4rICAgICAgcWNvbSxldHUtZXZlbnQtc2VsOlxcbisgICAgICAgIGRlc2NyaXB0aW9uOiBFdmVudCBzZWxlY3Rpb24gdmFsdWUgZm9yIHRoaXMgc2xpY2UuXFxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuK1xcbisgICAgICBxY29tLGV0dS1zbGljZTpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXFxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuK1xcbisgICAgcmVxdWlyZWQ6XFxuKyAgICAgIC0gcmVnXFxuKyAgICAgIC0gcWNvbSxldHUtZXZlbnQtc2VsXFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcXG4rICAgICAgLSBwaW5jdHJsLTBcXG4rICAgICAgLSBwaW5jdHJsLW5hbWVzXFxuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZ1xcbisgIC0gcmVnLW5hbWVzXFxuKyAgLSBjbG9ja3NcXG4rICAtIGNsb2NrLW5hbWVzXFxuK1xcbithbGxPZjpcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgY29udGFpbnM6XFxuKyAgICAgICAgICAgIGNvbnN0OiBldHVcXG4rICAgIHRoZW46XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY2xvY2tzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgICBjbG9jay1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXFxuKyAgICAgIHJlcXVpcmVkOlxcbisgICAgICAgIC0gaW50ZXJydXB0c1xcbisgICAgICAgIC0gaW50ZXJydXB0LW5hbWVzXFxuKyAgICAgICAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgICAgICAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgICAgICAgLSByYW5nZXNcXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20sc2E4Nzc1cC1nY2MuaFxcdTAwM2VcXG4rXFxuKyAgICBzb2Mge1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcbisgICAgICB0c2Nzc0AxYzgwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20sbGVtYW5zLXRzY3NzXFxcIjtcXG4rICAgICAgICByZWcgPSBcXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuKyAgICAgICAgcmVnLW5hbWVzID0gXFxcInRzY1xcXCI7XFxuK1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuK1xcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcXHUwMDNlO1xcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXFx1MDAzYzE1NjI1MDAwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuK1xcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20sc2E4Nzc1cC1nY2MuaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgc29jIHtcXG4rICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXG4rICAgICAgdHNjc3NAMWM4MDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJxY29tLGxlbWFucy10c2Nzc1xcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcXHUwMDNlO1xcbisgICAgICAgIHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgIHJhbmdlcztcXG4rXFxuKyAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NTU19FVFVfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIsIFxcXCJldHVcXFwiO1xcbitcXG4rICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlLCBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlO1xcbitcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzY0dJQ19TUEkgNjA0IElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJldHVfc3VtbWFyeVxcXCI7XFxuK1xcbisgICAgICAgIGV0dS1zbGljZUAxYzkxMDAwIHtcXG4rICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWM5MTAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2NpX3RpbWVyMFxcdTAwM2U7XFxuKyAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgZXR1LXNsaWNlQDFjOTIwMDAge1xcbisgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxYzkyMDAwIDB4MCAweDEwMDBcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZjY2lfdGltZXIxXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICB9O1xcbisgICAgICB9O1xcbisgICAgfTtcXG4rLi4uXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHRwL3Fjb20scWR1MTAwMC10c2Nzcy55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5MzlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbFxcbkBAIC0wLDAgKzEsMTg3IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2VcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykgb24gUXVhbGNvbW0gUURVMTAwMCBTb0NcXG4rXFxuK21haW50YWluZXJzOlxcbisgIC0gSW1yYW4gU2hhaWsgXFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cXHUwMDNlXFxuKyAgLSBUYW5peWEgRGFzIFxcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXFxuKyAgYmxvY2tzIC0gdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBhbmQgdGhlIEV2ZW50IFRpbWVzdGFtcCBVbml0IChFVFUpLlxcbitcXG4rICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXFxuKyAgZm9yIHN5c3RlbSB0aW1la2VlcGluZywgYW5kIGlzIGZ1bmN0aW9uYWwgd2l0aCBqdXN0IHRoZSBBSEIgYW5kIGNvdW50ZXJcXG4rICBjbG9ja3MuXFxuKyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXFxuKyAgaGFyZHdhcmUgZXZlbnRzLCBlYWNoIEVUVSBzbGljZSBiaW5kaW5nIGEgc2xpY2UgaWRlbnRpZmllciB0byBhbiBleHRlcm5hbFxcbisgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxcbisgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHFjb20scWR1MTAwMC10c2Nzc1xcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICByZWctbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogdHNjXFxuK1xcbisgIGNsb2NrczpcXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIEFIQiBjb25maWd1cmF0aW9uIGNsb2NrLlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgZ2xvYmFsIGNvdW50ZXIgY2xvY2suXFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXFxuK1xcbisgIGNsb2NrLW5hbWVzOlxcbisgICAgbWluSXRlbXM6IDJcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBhaGJcXG4rICAgICAgLSBjb25zdDogY250clxcbisgICAgICAtIGNvbnN0OiBldHVcXG4rXFxuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXFxuKyAgYXNzaWduZWQtY2xvY2stcmF0ZXM6IHRydWVcXG4rXFxuKyAgXFxcIiNhZGRyZXNzLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAyXFxuK1xcbisgIFxcXCIjc2l6ZS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMlxcbitcXG4rICByYW5nZXM6IHRydWVcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJeZXR1LXNsaWNlQFswLTlhLWZdKyRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGNvbmZpZ3VyYXRpb25cXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtYXhJdGVtczogMVxcbitcXG4rICAgICAgcGluY3RybC0wOiB0cnVlXFxuK1xcbisgICAgICBwaW5jdHJsLW5hbWVzOlxcbisgICAgICAgIGl0ZW1zOlxcbisgICAgICAgICAgLSBjb25zdDogZGVmYXVsdFxcbitcXG4rICAgICAgaW50ZXJydXB0czpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogUGVyIHNsaWNlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgRVRVIGJhc2VkIG9uIGV4dGVybmFsIGV2ZW50IHRyaWdnZXIuXFxuKyAgICAgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgICAgIHFjb20sZXR1LWV2ZW50LXNlbDpcXG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxcbisgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbitcXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XFxuKyAgICAgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBpZGVudGlmaWVyLlxcbisgICAgICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbitcXG4rICAgIHJlcXVpcmVkOlxcbisgICAgICAtIHJlZ1xcbisgICAgICAtIGludGVycnVwdHNcXG4rICAgICAgLSBxY29tLGV0dS1ldmVudC1zZWxcXG4rICAgICAgLSBxY29tLGV0dS1zbGljZVxcbisgICAgICAtIHBpbmN0cmwtMFxcbisgICAgICAtIHBpbmN0cmwtbmFtZXNcXG4rICAgIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSByZWctbmFtZXNcXG4rICAtIGNsb2Nrc1xcbisgIC0gY2xvY2stbmFtZXNcXG4rXFxuK2FsbE9mOlxcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY2xvY2stbmFtZXM6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGV0dVxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICBjbG9ja3M6XFxuKyAgICAgICAgICBtaW5JdGVtczogM1xcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgcmVxdWlyZWQ6XFxuKyAgICAgICAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgICAgICAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgICAgICAgLSByYW5nZXNcXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFxcdTAwM2VcXG4rXFxuKyAgICBzb2Mge1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcbisgICAgICB0c2Nzc0AxZGEwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20scWR1MTAwMC10c2Nzc1xcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxZGEwMDAwIDB4MCAweDIwMDBcXHUwMDNlO1xcbisgICAgICAgIHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjNTAwMDAwMDAwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuK1xcbisgIC0gfFxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgc29jIHtcXG4rICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXG4rICAgICAgdHNjc3NAMWRhMDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJxY29tLHFkdTEwMDAtdHNjc3NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXFx1MDAzZTtcXG4rICAgICAgICByZWctbmFtZXMgPSBcXFwidHNjXFxcIjtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICByYW5nZXM7XFxuK1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ0ZHX0FIQl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlLFxcbisgICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1xcdTAwM2U7XFxuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiLCBcXFwiZXR1XFxcIjtcXG4rXFxuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19DTlRSX0NMS1xcdTAwM2UsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAzY1xcdTAwMjZnY2MgR0NDX1RTQ19FVFVfQ0xLXFx1MDAzZTtcXG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFxcdTAwM2M1MDAwMDAwMDBcXHUwMDNlLCBcXHUwMDNjNTAwMDAwMDAwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgZXR1LXNsaWNlQDFkYjEwMDAge1xcbisgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MCAweDAxZGIxMDAwIDB4MCAweDEwMDBcXHUwMDNlO1xcbisgICAgICAgICAgaW50ZXJydXB0cyA9IFxcdTAwM2NHSUNfU1BJIDMyOSBJUlFfVFlQRV9FREdFX1JJU0lOR1xcdTAwM2U7XFxuKyAgICAgICAgICBwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmNjaV90aW1lcjBcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4rICAgICAgICAgIHFjb20sZXR1LWV2ZW50LXNlbCA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgIHFjb20sZXR1LXNsaWNlID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgIH07XFxuK1xcbisgICAgICAgIGV0dS1zbGljZUAxZGIyMDAwIHtcXG4rICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG4rICAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjR0lDX1NQSSAzMzAgSVJRX1RZUEVfRURHRV9SSVNJTkdcXHUwMDNlO1xcbisgICAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZjY2lfdGltZXIxXFx1MDAzZTtcXG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICB9O1xcbisgICAgICB9O1xcbisgICAgfTtcXG4rLi4uXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxcbmluZGV4IDNiMDUzOWUyN2I1MTkyLi5lMjI1MjkyYTFlNDFhNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcXG5AQCAtMzAyMyw2ICszMDIzLDE3IEBAIHBjaWUxX3BoeTogcGh5QDFjMTQwMDAge1xcbiBcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbiBcXHRcXHR9O1xcbiBcXG4rXFx0XFx0dHNjc3NAMWM4MDAwMCB7XFxuK1xcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicWNvbSxsZW1hbnMtdHNjc3NcXFwiO1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXHRcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfQUhCX0NMS1xcdTAwM2UsXFxuK1xcdFxcdFxcdFxcdCBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rXFx0XFx0XFx0Y2xvY2stbmFtZXMgPSBcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiO1xcbitcXHRcXHRcXHRhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDU1NfR0xPQkFMX0NOVFJfQ0xLXFx1MDAzZTtcXG4rXFx0XFx0XFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcXHUwMDNjMTU2MjUwMDBcXHUwMDNlO1xcbitcXHRcXHR9O1xcbitcXG4gXFx0XFx0dWZzX21lbV9oYzogdWZzaGNAMWQ4NDAwMCB7XFxuIFxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicWNvbSxzYTg3NzVwLXVmc2hjXFxcIiwgXFxcInFjb20sdWZzaGNcXFwiLCBcXFwiamVkZWMsdWZzLTIuMFxcXCI7XFxuIFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHgwMWQ4NDAwMCAweDAgMHgzMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcXG5pbmRleCAyNmNjODZkMTJmNzI1Ni4uODk3OWMxODIyNTE4NGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaVxcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcXG5AQCAtODc2LDYgKzg3NiwxNyBAQCBzeXN0ZW1fbm9jOiBpbnRlcmNvbm5lY3RAMTY0MDAwMCB7XFxuIFxcdFxcdFxcdCNpbnRlcmNvbm5lY3QtY2VsbHMgPSBcXHUwMDNjMlxcdTAwM2U7XFxuIFxcdFxcdH07XFxuIFxcbitcXHRcXHR0c2Nzc0AxZGEwMDAwIHtcXG4rXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJxY29tLHFkdTEwMDAtdHNjc3NcXFwiO1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHJlZy1uYW1lcyA9IFxcXCJ0c2NcXFwiO1xcbitcXHRcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXFx1MDAzZSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlO1xcbitcXHRcXHRcXHRjbG9jay1uYW1lcyA9IFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCI7XFxuK1xcdFxcdFxcdGFzc2lnbmVkLWNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcXHUwMDNlO1xcbitcXHRcXHRcXHRhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFxcdTAwM2M1MDAwMDAwMDBcXHUwMDNlO1xcbitcXHRcXHR9O1xcbitcXG4gXFx0XFx0dGNzcl9tdXRleDogaHdsb2NrQDFmNDAwMDAge1xcbiBcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcInFjb20sdGNzci1tdXRleFxcXCI7XFxuIFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZyBiL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWdcXG5pbmRleCA2ZWM4ZDNhNjljOThlMC4uNzM0MzVlNWY4ODc3ZDIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZ1xcbisrKyBiL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWdcXG5AQCAtNjgzLDYgKzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW1cXG4gQ09ORklHX1NQTUk9eVxcbiBDT05GSUdfU1BNSV9BUFBMRT1tXFxuIENPTkZJR19TUE1JX01US19QTUlGPW1cXG4rQ09ORklHX1BUUF9RQ09NX1RTQz1tXFxuIENPTkZJR19QSU5DVFJMX0FQUExFX0dQSU89bVxcbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxcbiBDT05GSUdfUElOQ1RSTF9NQVg3NzYyMD15XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuQEAgLTI2Myw0ICsyNjMsMTQgQEAgY29uZmlnIFBUUF9ORVRDX1Y0X1RJTUVSXFxuIFxcdCAgc3luY2hyb25pemF0aW9uLiBJdCBhbHNvIHN1cHBvcnRzIHBlcmlvZGljIG91dHB1dCBzaWduYWwgKGUuZy4gUFBTKVxcbiBcXHQgIGFuZCBleHRlcm5hbCB0cmlnZ2VyIHRpbWVzdGFtcGluZy5cXG4gXFxuK2NvbmZpZyBQVFBfUUNPTV9UU0NcXG4rXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRTQyBhcyBQVFAgY2xvY2tcXFwiXFxuK1xcdGRlcGVuZHMgb24gQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXJcXG4rXFx0ICBTdWJzeXN0ZW0gKFRTQ1NTKSBhcyBhIFBUUCBjbG9jay5cXG4rXFxuK1xcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbitcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cXG4rXFxuIGVuZG1lbnVcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvTWFrZWZpbGUgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxcbmluZGV4IGJkYzQ3ZTI4NGYxNGU3Li5mZjAyOTMyM2U5OGY1ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvcHRwL01ha2VmaWxlXFxuQEAgLTIyLDMgKzIyLDQgQEAgb2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUClcXHQrPSBwdHBfb2NwLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVxcdFxcdCs9IHB0cF9kZmxfdG9kLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9TMzkwKVxcdFxcdFxcdCs9IHB0cF9zMzkwLm9cXG4gb2JqLSQoQ09ORklHX1BUUF9ORVRDX1Y0X1RJTUVSKVxcdFxcdCs9IHB0cF9uZXRjLm9cXG4rb2JqLSQoQ09ORklHX1BUUF9RQ09NX1RTQylcXHRcXHQrPSBwdHBfcWNvbV90c2Mub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfcWNvbV90c2MuYyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjI5MjQ4MTUwMzg4ZjNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcXG5AQCAtMCwwICsxLDQxMyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuKy8qXFxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgUk9MTE9WRVJfVkFMXFx0XFx0XFx0XFx0OTk5OTk5OTk5XFxuKyNkZWZpbmUgTlNFQ19TSElGVFxcdFxcdFxcdFxcdDMyXFxuKyNkZWZpbmUgUFVMU0VfV0lEVEhfTUFTS1xcdFxcdFxcdEdFTk1BU0soNywgNilcXG4rI2RlZmluZSBEUklGVF9NQVhfUkVTXFx0XFx0XFx0XFx0MHgxRkZGRlxcbisjZGVmaW5lIERSSUZUX0pVTVBfU1dBTExPV1xcdFxcdFxcdEJJVCgzMSlcXG4rI2RlZmluZSBEUklGVF9QRVJJT0RfTUFTS1xcdFxcdFxcdEdFTk1BU0soMjgsIDEyKVxcbisjZGVmaW5lIERSSUZUX1NVQlBFUklPRF9NQVNLXFx0XFx0XFx0R0VOTUFTSygxMSwgMClcXG4rI2RlZmluZSBEUklGVF9JTlRFUlZBTF9VU1xcdFxcdFxcdDEwXFxuKyNkZWZpbmUgRFJJRlRfTUlOX1RJTUVPVVRfVVNcXHRcXHRcXHQ1MDAwXFxuK1xcbisjZGVmaW5lIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIGNudHJfcmVzKVxcdFxcdFxcdFxcXFxcXG4rXFx0bWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcXFxcXFxuK1xcdCAgICAgIERSSUZUX01JTl9USU1FT1VUX1VTKVxcbitcXG4rc3RydWN0IHFjb21fdHNjX3JlZ3Mge1xcbitcXHR1MzIgY29udHJvbF9jbnRjcjtcXG4rXFx0dTMyIGNvbnRyb2xfY250Y3ZfbG87XFxuK1xcdHUzMiBjb250cm9sX2NudGN2X2hpO1xcbitcXHR1MzIgZHJpZnRfY29ycmVjdF9pbmNyX3ZhbDtcXG4rXFx0dTMyIGRyaWZ0X2NvcnJlY3RfZHVyYXRpb247XFxuK1xcdHUzMiBkcmlmdF9jb3JyZWN0X2NtZDtcXG4rXFx0dTMyIHJvbGxvdmVyX3ZhbDtcXG4rXFx0dTMyIG9mZnNldF9sbztcXG4rXFx0dTMyIG9mZnNldF9oaTtcXG4rXFx0dTMyIHJlYWRfY250Y3ZfbG87XFxuK1xcdHUzMiByZWFkX2NudGN2X2hpO1xcbit9O1xcbitcXG4rLyoqXFxuKyAqIHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAtIFNvQyBzcGVjaWZpYyBUU0MgaGFyZHdhcmUgY2FwYWJpbGl0aWVzXFxuKyAqXFxuKyAqIEByb2xsb3ZlcjogaW5kaWNhdGVzIHRoZSBjb3VudGVyIHVzZXMgc2VjL25zZWMgc3BsaXRcXG4rICogQG9mZnNldF9jb3JyZWN0aW9uOiBoYXJkd2FyZSBzdXBwb3J0cyBvbmUtc2hvdCBvZmZzZXQgY29ycmVjdGlvblxcbisgKiBAcHVsc2Vfd2lkdGg6IHZhbGlkIHB1bHNlIHdpZHRoIGluIGN5Y2xlcyBmb3IgZHJpZnQgY29ycmVjdGlvblxcbisgKiBAY250cl9yZXM6IFRTQyBjb3VudGVyIHJlc29sdXRpb24gaW4gbnNlY1xcbisgKiBAcmVnX2xheW91dDogcmVnaXN0ZXIgbGF5b3V0IGZvciB0aGlzIFNvQy92ZXJzaW9uXFxuKyAqL1xcbitzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEge1xcbitcXHRib29sIHJvbGxvdmVyO1xcbitcXHRib29sIG9mZnNldF9jb3JyZWN0aW9uO1xcbitcXHRpbnQgcHVsc2Vfd2lkdGg7XFxuK1xcdGludCBjbnRyX3JlcztcXG4rXFx0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ19sYXlvdXQ7XFxuK307XFxuK1xcbitzdHJ1Y3QgcWNvbV90c2Mge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuK1xcdHZvaWQgX19pb21lbSAqYmFzZTtcXG4rXFx0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XFxuK1xcdHN0cnVjdCBjbGsgKmFoYl9jbGs7XFxuK1xcdHN0cnVjdCBjbGsgKmNudHJfY2xrO1xcbitcXHRzdHJ1Y3QgY2xrICpldHVfY2xrO1xcbitcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHA7XFxuK1xcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBwdHBfaW5mbztcXG4rXFx0LyogTXV0ZXggdG8gcHJvdGVjdCBvcGVyYXRpb25zIGZyb20gYmVpbmcgaW50ZXJydXB0ZWQgKi9cXG4rXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuK307XFxuK1xcbitzdGF0aWMgYm9vbCBxY29tX3RzY19pc19lbmFibGVkKHN0cnVjdCBxY29tX3RzYyAqdHNjKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcbitcXHRyZXR1cm4gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKSBcXHUwMDI2IEJJVCgwKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX3RzY19yZWFkX3RpbWUoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cXHUwMDNlc29jLVxcdTAwM2VyZWdfbGF5b3V0O1xcbitcXHR1MzIgaGksIGxvO1xcbitcXG4rXFx0aWYgKCFxY29tX3RzY19pc19lbmFibGVkKHRzYykpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aGkgPSByZWFkbF9yZWxheGVkKHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZXJlYWRfY250Y3ZfaGkpO1xcbitcXHRsbyA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlcmVhZF9jbnRjdl9sbyk7XFxuK1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKSB7XFxuK1xcdFxcdHRzLVxcdTAwM2V0dl9zZWMgPSBoaTtcXG4rXFx0XFx0dHMtXFx1MDAzZXR2X25zZWMgPSBsbztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTY0IG5zID0gKCh1NjQpaGkgXFx1MDAzY1xcdTAwM2MgTlNFQ19TSElGVCkgfCBsbztcXG4rXFxuK1xcdFxcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIHFjb21fdHNjX3NwbGl0X3RzKHN0cnVjdCBxY29tX3RzYyAqdHNjLCBzdHJ1Y3QgdGltZXNwZWM2NCB0cywgdTMyICpoaSwgdTMyICpsbylcXG4re1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKSB7XFxuK1xcdFxcdCpoaSA9IHRzLnR2X3NlYztcXG4rXFx0XFx0KmxvID0gdHMudHZfbnNlYztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTY0IG5zID0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2dHMpO1xcbitcXG4rXFx0XFx0KmxvID0gbG93ZXJfMzJfYml0cyhucyk7XFxuK1xcdFxcdCpoaSA9IHVwcGVyXzMyX2JpdHMobnMpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcdHUzMiByZWd2YWwsIGhpLCBsbztcXG4rXFxuK1xcdHFjb21fdHNjX3NwbGl0X3RzKHRzYywgdHMsIFxcdTAwMjZoaSwgXFx1MDAyNmxvKTtcXG4rXFxuK1xcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGN2X2xvKTtcXG4rXFx0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWNvbnRyb2xfY250Y3ZfaGkpO1xcbitcXG4rXFx0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKTtcXG4rXFx0cmVndmFsIHw9IEJJVCgwKTtcXG4rXFx0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2Vjb250cm9sX2NudGNyKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX3VwZGF0ZV9vZmZzZXQoc3RydWN0IHFjb21fdHNjICp0c2MsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJlZ19sYXlvdXQ7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYzY0IHRvZDtcXG4rXFx0dTMyIHJlZ3ZhbCwgaGksIGxvO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHRzYy1cXHUwMDNlc29jLVxcdTAwM2VvZmZzZXRfY29ycmVjdGlvbikge1xcbitcXHRcXHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcXHUwMDI2aGksIFxcdTAwMjZsbyk7XFxuK1xcbitcXHRcXHR3cml0ZWxfcmVsYXhlZChsbywgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlb2Zmc2V0X2xvKTtcXG4rXFx0XFx0d3JpdGVsX3JlbGF4ZWQoaGksIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZW9mZnNldF9oaSk7XFxuK1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0LypcXG4rXFx0ICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZVxcbitcXHQgKiBjb3VudGVyIHdpdGggdGhlIGNvcnJlY3RlZCB0aW1lLCBhcyByZWNvbW1lbmRlZCBieSB0aGUgaGFyZHdhcmVcXG4rXFx0ICogZGVzaWduIHRlYW0uXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBxY29tX3RzY19yZWFkX3RpbWUodHNjLCBcXHUwMDI2dG9kKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcdHJlZ3ZhbCBcXHUwMDI2PSB+QklUKDApO1xcbitcXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWNvbnRyb2xfY250Y3IpO1xcbitcXG4rXFx0cmV0dXJuIHFjb21fdHNjX3VwZGF0ZV9jb3VudGVyKHRzYywgdGltZXNwZWM2NF9hZGQodG9kLCB0cykpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cXHUwMDNlc29jLVxcdTAwM2VyZWdfbGF5b3V0O1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCB0b2Q7XFxuK1xcdHUzMiByZWd2YWw7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKHFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSkge1xcbitcXHRcXHRxY29tX3RzY19yZWFkX3RpbWUodHNjLCBcXHUwMDI2dG9kKTtcXG4rXFx0XFx0cmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIHRpbWVzcGVjNjRfc3ViKCp0cywgdG9kKSk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0LyogQ29uZmlndXJlIGFuZCBlbmFibGUgdGhlIFRTQyBjb3VudGVyICovXFxuK1xcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcdHJlZ3ZhbCB8PSBGSUVMRF9QUkVQKFBVTFNFX1dJRFRIX01BU0ssIHRzYy1cXHUwMDNlc29jLVxcdTAwM2VwdWxzZV93aWR0aCk7XFxuK1xcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlY29udHJvbF9jbnRjcik7XFxuK1xcbitcXHRpZiAodHNjLVxcdTAwM2Vzb2MtXFx1MDAzZXJvbGxvdmVyKVxcbitcXHRcXHR3cml0ZWxfcmVsYXhlZChST0xMT1ZFUl9WQUwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZXJvbGxvdmVyX3ZhbCk7XFxuK1xcbitcXHRyZXQgPSBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsICp0cyk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV90c2NfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbit7XFxuK1xcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXHRyZXQgPSBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHRzYywgbnNfdG9fdGltZXNwZWM2NChkZWx0YSkpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX2RyaWZ0X2NvcnJlY3Rpb24oc3RydWN0IHFjb21fdHNjICp0c2MsIGxvbmcgc2NhbGVkX3BwbSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgKnNvYyA9IHRzYy1cXHUwMDNlc29jO1xcbitcXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHNvYy1cXHUwMDNlcmVnX2xheW91dDtcXG4rXFx0bG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYihzY2FsZWRfcHBtKTtcXG4rXFx0dTY0IHBlcmlvZCwgaW5jdmFsID0gMDtcXG4rXFx0dTMyIHJlZ3ZhbCA9IDAsIHN1YnBlcmlvZDtcXG4rXFxuK1xcdGlmIChwcGIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdHBwYiA9IC1wcGI7XFxuK1xcdFxcdHJlZ3ZhbCBcXHUwMDI2PSB+RFJJRlRfSlVNUF9TV0FMTE9XO1xcbitcXG4rXFx0XFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cXHUwMDNlY250cl9yZXMpO1xcbitcXHRcXHRpZiAocGVyaW9kIFxcdTAwM2U9IERSSUZUX01BWF9SRVMpXFxuK1xcdFxcdFxcdHBlcmlvZCA9IERSSUZUX01BWF9SRVM7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJlZ3ZhbCB8PSBEUklGVF9KVU1QX1NXQUxMT1c7XFxuK1xcbitcXHRcXHRwZXJpb2QgPSBkaXZfdTY0KHBwYiwgc29jLVxcdTAwM2VjbnRyX3Jlcyk7XFxuK1xcdFxcdGlmIChwZXJpb2QgXFx1MDAzZT0gRFJJRlRfTUFYX1JFUykge1xcbitcXHRcXHRcXHRwZXJpb2QgPSBEUklGVF9NQVhfUkVTO1xcbitcXHRcXHRcXHRpbmN2YWwgPSBzb2MtXFx1MDAzZWNudHJfcmVzICogMjtcXG4rXFx0XFx0fSBlbHNlIGlmIChwcGIgXFx1MDAzYyBzb2MtXFx1MDAzZWNudHJfcmVzKSB7XFxuK1xcdFxcdFxcdGluY3ZhbCA9IHNvYy1cXHUwMDNlY250cl9yZXMgKyBwcGI7XFxuK1xcdFxcdFxcdHBlcmlvZCA9IDE7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGluY3ZhbCA9IHNvYy1cXHUwMDNlY250cl9yZXMgKiAyO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHN1YnBlcmlvZCA9IHNvYy1cXHUwMDNlcHVsc2Vfd2lkdGggKiAyO1xcbitcXHRyZWd2YWwgfD0gRklFTERfUFJFUChEUklGVF9TVUJQRVJJT0RfTUFTSywgc3VicGVyaW9kKTtcXG4rXFx0cmVndmFsIHw9IEZJRUxEX1BSRVAoRFJJRlRfUEVSSU9EX01BU0ssIHBlcmlvZCk7XFxuK1xcbitcXHQvKiBVcGRhdGUganVtcC9zd2FsbG93LCBwZXJpb2QsIHN1YnBlcmlvZCAqL1xcbitcXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cXHUwMDNlYmFzZSArIHJlZ3MtXFx1MDAzZWRyaWZ0X2NvcnJlY3RfZHVyYXRpb24pO1xcbitcXG4rXFx0d3JpdGVsX3JlbGF4ZWQoaW5jdmFsLCB0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcXG4rXFxuK1xcdC8qIFRyaWdnZXIgdGhlIGRyaWZ0IGNvcnJlY3Rpb24gKi9cXG4rXFx0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XFxuK1xcdHJlZ3ZhbCB8PSBCSVQoMCk7XFxuK1xcdHdyaXRlbF9yZWxheGVkKHJlZ3ZhbCwgdHNjLVxcdTAwM2ViYXNlICsgcmVncy1cXHUwMDNlZHJpZnRfY29ycmVjdF9jbWQpO1xcbitcXG4rXFx0cmV0dXJuIHJlYWRsX3BvbGxfdGltZW91dCh0c2MtXFx1MDAzZWJhc2UgKyByZWdzLVxcdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLFxcbitcXHRcXHRcXHRcXHQgICEocmVndmFsIFxcdTAwMjYgQklUKDEpKSwgRFJJRlRfSU5URVJWQUxfVVMsXFxuK1xcdFxcdFxcdFxcdCAgRFJJRlRfVElNRU9VVF9VUyhwZXJpb2QsIHN1YnBlcmlvZCwgc29jLVxcdTAwM2VjbnRyX3JlcykpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHNjYWxlZF9wcG0gPT0gMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0c2MtXFx1MDAzZWxvY2spO1xcbitcXHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dHNjLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcWNvbV9wdHBfaW5mbyA9IHtcXG4rXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4rXFx0Lm5hbWVcXHRcXHQ9IFxcXCJQVFBfUUNPTV9UU0NcXFwiLFxcbitcXHQubWF4X2FkalxcdD0gOTk5OTk5OSxcXG4rXFx0LmFkamZpbmVcXHQ9IHFjb21fdHNjX2FkamZpbmUsXFxuK1xcdC5hZGp0aW1lXFx0PSBxY29tX3RzY19hZGp0aW1lLFxcbitcXHQuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLFxcbitcXHQuc2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19zZXR0aW1lLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzIHFjb21fdHNjX2xheW91dCA9IHtcXG4rXFx0LmNvbnRyb2xfY250Y3IgICAgICAgICAgICA9IDB4MCxcXG4rXFx0LmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCxcXG4rXFx0LmNvbnRyb2xfY250Y3ZfaGkgICAgICAgICA9IDB4YyxcXG4rXFx0LmRyaWZ0X2NvcnJlY3RfaW5jcl92YWwgICA9IDB4MmMsXFxuK1xcdC5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLFxcbitcXHQuZHJpZnRfY29ycmVjdF9jbWQgICAgICAgID0gMHgzNCxcXG4rXFx0LnJvbGxvdmVyX3ZhbCAgICAgICAgICAgICA9IDB4M2MsXFxuK1xcdC5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLFxcbitcXHQub2Zmc2V0X2hpICAgICAgICAgICAgICAgID0gMHg1NCxcXG4rXFx0LnJlYWRfY250Y3ZfbG8gICAgICAgICAgICA9IDB4MTAwMCxcXG4rXFx0LnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0ge1xcbitcXHQucmVnX2xheW91dFxcdFxcdD0gXFx1MDAyNnFjb21fdHNjX2xheW91dCxcXG4rXFx0LnJvbGxvdmVyXFx0XFx0PSBmYWxzZSxcXG4rXFx0Lm9mZnNldF9jb3JyZWN0aW9uXFx0PSBmYWxzZSxcXG4rXFx0LnB1bHNlX3dpZHRoXFx0XFx0PSAyLFxcbitcXHQuY250cl9yZXNcXHRcXHQ9IDY0LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSBxY29tX3RzY19xZHUxMDAwID0ge1xcbitcXHQucmVnX2xheW91dFxcdFxcdD0gXFx1MDAyNnFjb21fdHNjX2xheW91dCxcXG4rXFx0LnJvbGxvdmVyXFx0XFx0PSB0cnVlLFxcbitcXHQub2Zmc2V0X2NvcnJlY3Rpb25cXHQ9IHRydWUsXFxuK1xcdC5wdWxzZV93aWR0aFxcdFxcdD0gMyxcXG4rXFx0LmNudHJfcmVzXFx0XFx0PSAyLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV90c2Nfb2ZfbWF0Y2hbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGxlbWFucy10c2Nzc1xcXCIsIC5kYXRhID0gXFx1MDAyNnFjb21fdHNjX2xlbWFucyB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20scWR1MTAwMC10c2Nzc1xcXCIsIC5kYXRhID0gXFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcXG4rXFx0eyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fdHNjX29mX21hdGNoKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHFjb21fcHRwX3RzY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXG4rXFx0aWYgKHRzYyBcXHUwMDI2XFx1MDAyNiB0c2MtXFx1MDAzZXB0cCkge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3Rlcih0c2MtXFx1MDAzZXB0cCk7XFxuK1xcdFxcdHRzYy1cXHUwMDNlcHRwID0gTlVMTDtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fcHRwX3RzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jO1xcbitcXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcXG4rXFx0c3RydWN0IHJlc291cmNlICpyX21lbTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKCFzb2MpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0dHNjID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqdHNjKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdHNjKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHRzYy1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0dHNjLVxcdTAwM2Vzb2MgPSBzb2M7XFxuK1xcbitcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFx1MDAyNnRzYy1cXHUwMDNlbG9jayk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyX21lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sIFxcXCJ0c2NcXFwiKTtcXG4rXFx0aWYgKCFyX21lbSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJubyBJTyByZXNvdXJjZSBkZWZpbmVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0fVxcbitcXG4rXFx0dHNjLVxcdTAwM2ViYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJfbWVtKTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZWJhc2UpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih0c2MtXFx1MDAzZWJhc2UpO1xcbitcXG4rXFx0dHNjLVxcdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImFoYlxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHRzYy1cXHUwMDNlYWhiX2NsaykpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHRzYy1cXHUwMDNlYWhiX2Nsayk7XFxuK1xcbitcXHR0c2MtXFx1MDAzZWNudHJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNudHJcXFwiKTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZWNudHJfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIodHNjLVxcdTAwM2VjbnRyX2Nsayk7XFxuK1xcbitcXHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cXG4rXFx0dHNjLVxcdTAwM2VldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImV0dVxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHRzYy1cXHUwMDNlZXR1X2NsaykpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKHRzYy1cXHUwMDNlZXR1X2Nsayk7XFxuK1xcbitcXHR0c2MtXFx1MDAzZXB0cF9pbmZvID0gcWNvbV9wdHBfaW5mbztcXG4rXFxuK1xcdHRzYy1cXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZ0c2MtXFx1MDAzZXB0cF9pbmZvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKElTX0VSUih0c2MtXFx1MDAzZXB0cCkpIHtcXG4rXFx0XFx0cmV0ID0gUFRSX0VSUih0c2MtXFx1MDAzZXB0cCk7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwdHAgY2xvY2tcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fcHRwX3RzY19kcml2ZXIgPSB7XFxuK1xcdC5wcm9iZSAgPSBxY29tX3B0cF90c2NfcHJvYmUsXFxuK1xcdC5yZW1vdmUgPSBxY29tX3B0cF90c2NfcmVtb3ZlLFxcbitcXHQuZHJpdmVyID0ge1xcbitcXHRcXHQubmFtZSA9IFxcXCJxY29tX3B0cF90c2NcXFwiLFxcbitcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBxY29tX3RzY19vZl9tYXRjaCxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX3B0cF90c2NfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUFRQIFFDT00gVFNDIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjY2NzY3NTUzMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNjQ2NjU3NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRlNGY5ODMyYWFlMzA4MmE5NjFkMGM4NGRjZTY1NDdmN2EwY2IzNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAwNToxNTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxsZW1hbnMtdHNjc3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40Y2JlNGIwMGZmN2RjYVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sXG5AQCAtMCwwICsxLDE5OCBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2VcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3B0cC9xY29tLGxlbWFucy10c2Nzcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKSBvbiBRdWFsY29tbSBMZW1hbnMgYW5kIE1vbmFjbyBTb0NzXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEltcmFuIFNoYWlrIFx1MDAzY2ltcmFuLnNoYWlrQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbisgIC0gVGFuaXlhIERhcyBcdTAwM2N0YW5peWEuZGFzQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgUXVhbGNvbW0gVFNDU1MgaXMgYSB0aW1lIHN5bmNocm9uaXphdGlvbiBzdWJzeXN0ZW0gY29tcG9zZWQgb2YgdHdvIG1haW5cbisgIGJsb2NrcyAtIHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgKFRTQykgYW5kIHRoZSBFdmVudCBUaW1lc3RhbXAgVW5pdCAoRVRVKS5cbitcbisgIFRoZSBUU0MgYmxvY2sgaXMgYSB0aW1lc3RhbXAgZ2VuZXJhdG9yIHRoYXQgbWFpbnRhaW5zIGEgcnVubmluZyBjb3VudGVyIHVzZWRcbisgIGZvciBzeXN0ZW0gdGltZWtlZXBpbmcsIGFuZCBpcyBmdW5jdGlvbmFsIHdpdGgganVzdCB0aGUgQUhCIGFuZCBjb3VudGVyXG4rICBjbG9ja3MuXG4rICBUaGUgRVRVIGJsb2NrIGlzIG9wdGlvbmFsIGFuZCBjYXB0dXJlcyBUU0MgdGltZXN0YW1wcyBmb3IgZXh0ZXJuYWxcbisgIGhhcmR3YXJlIGV2ZW50cywgZWFjaCBFVFUgc2xpY2UgYmluZGluZyBhIHNsaWNlIGlkZW50aWZpZXIgdG8gYW4gZXh0ZXJuYWxcbisgIGV2ZW50IHNlbGVjdG9yLiBTdXBwb3J0IGZvciB0aGUgRVRVIGJsb2NrIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIEVUVVxuKyAgY2xvY2sgYWxvbmcgd2l0aCB0aGUgc3VtbWFyeSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBvbmVPZjpcbisgICAgICAtIGNvbnN0OiBxY29tLGxlbWFucy10c2Nzc1xuKyAgICAgIC0gaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IHFjb20sbW9uYWNvLXRzY3NzXG4rICAgICAgICAgIC0gY29uc3Q6IHFjb20sbGVtYW5zLXRzY3NzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IHRzY1xuK1xuKyAgY2xvY2tzOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBpdGVtczpcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgbWluSXRlbXM6IDJcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogYWhiXG4rICAgICAgLSBjb25zdDogY250clxuKyAgICAgIC0gY29uc3Q6IGV0dVxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgZGVzY3JpcHRpb246IFN1bW1hcnkgaW50ZXJydXB0IHJhaXNlZCBiYXNlZCBvbiBleHRlcm5hbCBldmVudCBmb3IgYW55IG9mIHRoZSBFVFUgc2xpY2VzLlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBldHVfc3VtbWFyeVxuK1xuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4rICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZVxuK1xuKyAgXCIjYWRkcmVzcy1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgXCIjc2l6ZS1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgcmFuZ2VzOiB0cnVlXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5ldHUtc2xpY2VAWzAtOWEtZl0rJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4rICAgIHByb3BlcnRpZXM6XG4rICAgICAgcmVnOlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBwaW5jdHJsLTA6IHRydWVcbitcbisgICAgICBwaW5jdHJsLW5hbWVzOlxuKyAgICAgICAgaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbitcbisgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXG4rXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXG4rICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbisgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbisgICAgICAtIHBpbmN0cmwtMFxuKyAgICAgIC0gcGluY3RybC1uYW1lc1xuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithbGxPZjpcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBjb25zdDogZXR1XG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrczpcbisgICAgICAgICAgbWluSXRlbXM6IDNcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBpbnRlcnJ1cHRzXG4rICAgICAgICAtIGludGVycnVwdC1uYW1lc1xuKyAgICAgICAgLSBcIiNhZGRyZXNzLWNlbGxzXCJcbisgICAgICAgIC0gXCIjc2l6ZS1jZWxsc1wiXG4rICAgICAgICAtIHJhbmdlc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9xY29tLHNhODc3NXAtZ2NjLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFjODAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxsZW1hbnMtdHNjc3NcIjtcbisgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4rICAgICAgICByZWctbmFtZXMgPSBcInRzY1wiO1xuK1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYWhiXCIsIFwiY250clwiO1xuK1xuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuKyAgICAgIH07XG4rICAgIH07XG4rXG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcWNvbSxzYTg3NzVwLWdjYy5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaFx1MDAzZVxuK1xuKyAgICBzb2Mge1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rXG4rICAgICAgdHNjc3NAMWM4MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJxY29tLGxlbWFucy10c2Nzc1wiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjODAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbisgICAgICAgIHJlZy1uYW1lcyA9IFwidHNjXCI7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICByYW5nZXM7XG4rXG4rICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcdTAwM2UsXG4rICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbisgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGNsb2NrLW5hbWVzID0gXCJhaGJcIiwgXCJjbnRyXCIsIFwiZXR1XCI7XG4rXG4rICAgICAgICBhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDU1NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXHUwMDNjMTU2MjUwMDBcdTAwM2UsIFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuK1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzY0dJQ19TUEkgNjA0IElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcImV0dV9zdW1tYXJ5XCI7XG4rXG4rICAgICAgICBldHUtc2xpY2VAMWM5MTAwMCB7XG4rICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxYzkxMDAwIDB4MCAweDEwMDBcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNjaV90aW1lcjBcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgfTtcbitcbisgICAgICAgIGV0dS1zbGljZUAxYzkyMDAwIHtcbisgICAgICAgICAgcmVnID0gXHUwMDNjMHgwIDB4MDFjOTIwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMVx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcdTAwM2MyXHUwMDNlO1xuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICAgIH07XG4rICAgIH07XG4rLi4uXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9xY29tLHFkdTEwMDAtdHNjc3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzkzODc2MTRlZjg5Mzlcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wdHAvcWNvbSxxZHUxMDAwLXRzY3NzLnlhbWxcbkBAIC0wLDAgKzEsMTg3IEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcHRwL3Fjb20scWR1MTAwMC10c2Nzcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKSBvbiBRdWFsY29tbSBRRFUxMDAwIFNvQ1xuK1xuK21haW50YWluZXJzOlxuKyAgLSBJbXJhbiBTaGFpayBcdTAwM2NpbXJhbi5zaGFpa0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4rICAtIFRhbml5YSBEYXMgXHUwMDNjdGFuaXlhLmRhc0Bvc3MucXVhbGNvbW0uY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFF1YWxjb21tIFRTQ1NTIGlzIGEgdGltZSBzeW5jaHJvbml6YXRpb24gc3Vic3lzdGVtIGNvbXBvc2VkIG9mIHR3byBtYWluXG4rICBibG9ja3MgLSB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIGFuZCB0aGUgRXZlbnQgVGltZXN0YW1wIFVuaXQgKEVUVSkuXG4rXG4rICBUaGUgVFNDIGJsb2NrIGlzIGEgdGltZXN0YW1wIGdlbmVyYXRvciB0aGF0IG1haW50YWlucyBhIHJ1bm5pbmcgY291bnRlciB1c2VkXG4rICBmb3Igc3lzdGVtIHRpbWVrZWVwaW5nLCBhbmQgaXMgZnVuY3Rpb25hbCB3aXRoIGp1c3QgdGhlIEFIQiBhbmQgY291bnRlclxuKyAgY2xvY2tzLlxuKyAgVGhlIEVUVSBibG9jayBpcyBvcHRpb25hbCBhbmQgY2FwdHVyZXMgVFNDIHRpbWVzdGFtcHMgZm9yIGV4dGVybmFsXG4rICBoYXJkd2FyZSBldmVudHMsIGVhY2ggRVRVIHNsaWNlIGJpbmRpbmcgYSBzbGljZSBpZGVudGlmaWVyIHRvIGFuIGV4dGVybmFsXG4rICBldmVudCBzZWxlY3Rvci4gU3VwcG9ydCBmb3IgdGhlIEVUVSBibG9jayByZXF1aXJlcyB0aGUgYWRkaXRpb25hbCBFVFVcbisgIGNsb2NrIGFsb25nIHdpdGggdGhlIHBlciBzbGljZSBpbnRlcnJ1cHQgYW5kIHNsaWNlIHN1Ym5vZGVzLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcWNvbSxxZHUxMDAwLXRzY3NzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IHRzY1xuK1xuKyAgY2xvY2tzOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBpdGVtczpcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUU0MgQUhCIGNvbmZpZ3VyYXRpb24gY2xvY2suXG4rICAgICAgLSBkZXNjcmlwdGlvbjogVFNDIGdsb2JhbCBjb3VudGVyIGNsb2NrLlxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRTQyBFVFUgY2xvY2suXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgbWluSXRlbXM6IDJcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogYWhiXG4rICAgICAgLSBjb25zdDogY250clxuKyAgICAgIC0gY29uc3Q6IGV0dVxuK1xuKyAgYXNzaWduZWQtY2xvY2tzOiB0cnVlXG4rICBhc3NpZ25lZC1jbG9jay1yYXRlczogdHJ1ZVxuK1xuKyAgXCIjYWRkcmVzcy1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgXCIjc2l6ZS1jZWxsc1wiOlxuKyAgICBjb25zdDogMlxuK1xuKyAgcmFuZ2VzOiB0cnVlXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5ldHUtc2xpY2VAWzAtOWEtZl0rJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IEVUVSBzbGljZSBjb25maWd1cmF0aW9uXG4rICAgIHByb3BlcnRpZXM6XG4rICAgICAgcmVnOlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBwaW5jdHJsLTA6IHRydWVcbitcbisgICAgICBwaW5jdHJsLW5hbWVzOlxuKyAgICAgICAgaXRlbXM6XG4rICAgICAgICAgIC0gY29uc3Q6IGRlZmF1bHRcbitcbisgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgZGVzY3JpcHRpb246IFBlciBzbGljZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IEVUVSBiYXNlZCBvbiBleHRlcm5hbCBldmVudCB0cmlnZ2VyLlxuKyAgICAgICAgbWF4SXRlbXM6IDFcbitcbisgICAgICBxY29tLGV0dS1ldmVudC1zZWw6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRXZlbnQgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIHNsaWNlLlxuKyAgICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXG4rXG4rICAgICAgcWNvbSxldHUtc2xpY2U6XG4rICAgICAgICBkZXNjcmlwdGlvbjogRVRVIHNsaWNlIGlkZW50aWZpZXIuXG4rICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbisgICAgICAtIGludGVycnVwdHNcbisgICAgICAtIHFjb20sZXR1LWV2ZW50LXNlbFxuKyAgICAgIC0gcWNvbSxldHUtc2xpY2VcbisgICAgICAtIHBpbmN0cmwtMFxuKyAgICAgIC0gcGluY3RybC1uYW1lc1xuKyAgICB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithbGxPZjpcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBjb25zdDogZXR1XG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNsb2NrczpcbisgICAgICAgICAgbWluSXRlbXM6IDNcbisgICAgICAgIGNsb2NrLW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBcIiNhZGRyZXNzLWNlbGxzXCJcbisgICAgICAgIC0gXCIjc2l6ZS1jZWxsc1wiXG4rICAgICAgICAtIHJhbmdlc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9xY29tLHFkdTEwMDAtZ2NjLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFkYTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJ0c2NcIjtcbitcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYWhiXCIsIFwiY250clwiO1xuKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rICAgICAgICBhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzUwMDAwMDAwMFx1MDAzZTtcbisgICAgICB9O1xuKyAgICB9O1xuK1xuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3Fjb20scWR1MTAwMC1nY2MuaFx1MDAzZVxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbitcbisgICAgc29jIHtcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuK1xuKyAgICAgIHRzY3NzQDFkYTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRhMDAwMCAweDAgMHgyMDAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJ0c2NcIjtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgIHJhbmdlcztcbitcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2UsXG4rICAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ19FVFVfQ0xLXHUwMDNlO1xuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcImFoYlwiLCBcImNudHJcIiwgXCJldHVcIjtcbitcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfRVRVX0NMS1x1MDAzZTtcbisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gXHUwMDNjNTAwMDAwMDAwXHUwMDNlLCBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4rXG4rICAgICAgICBldHUtc2xpY2VAMWRiMTAwMCB7XG4rICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MCAweDAxZGIxMDAwIDB4MCAweDEwMDBcdTAwM2U7XG4rICAgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDMyOSBJUlFfVFlQRV9FREdFX1JJU0lOR1x1MDAzZTtcbisgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2NpX3RpbWVyMFx1MDAzZTtcbisgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICBxY29tLGV0dS1ldmVudC1zZWwgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICBxY29tLGV0dS1zbGljZSA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICB9O1xuK1xuKyAgICAgICAgZXR1LXNsaWNlQDFkYjIwMDAge1xuKyAgICAgICAgICByZWcgPSBcdTAwM2MweDAgMHgwMWRiMjAwMCAweDAgMHgxMDAwXHUwMDNlO1xuKyAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjR0lDX1NQSSAzMzAgSVJRX1RZUEVfRURHRV9SSVNJTkdcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNjaV90aW1lcjFcdTAwM2U7XG4rICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbisgICAgICAgICAgcWNvbSxldHUtZXZlbnQtc2VsID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgICAgcWNvbSxldHUtc2xpY2UgPSBcdTAwM2MyXHUwMDNlO1xuKyAgICAgICAgfTtcbisgICAgICB9O1xuKyAgICB9O1xuKy4uLlxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9sZW1hbnMuZHRzaVxuaW5kZXggM2IwNTM5ZTI3YjUxOTIuLmUyMjUyOTJhMWU0MWE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL2xlbWFucy5kdHNpXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbGVtYW5zLmR0c2lcbkBAIC0zMDIzLDYgKzMwMjMsMTcgQEAgcGNpZTFfcGh5OiBwaHlAMWMxNDAwMCB7XG4gXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuIFx0XHR9O1xuIFxuK1x0XHR0c2Nzc0AxYzgwMDAwIHtcbitcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLGxlbWFucy10c2Nzc1wiO1xuK1x0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxYzgwMDAwIDB4MCAweDIwMDBcdTAwM2U7XG4rXHRcdFx0cmVnLW5hbWVzID0gXCJ0c2NcIjtcbitcdFx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0FIQl9DTEtcdTAwM2UsXG4rXHRcdFx0XHQgXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NTU19HTE9CQUxfQ05UUl9DTEtcdTAwM2U7XG4rXHRcdFx0Y2xvY2stbmFtZXMgPSBcImFoYlwiLCBcImNudHJcIjtcbitcdFx0XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZnY2MgR0NDX1RTQ1NTX0dMT0JBTF9DTlRSX0NMS1x1MDAzZTtcbitcdFx0XHRhc3NpZ25lZC1jbG9jay1yYXRlcyA9IFx1MDAzYzE1NjI1MDAwXHUwMDNlO1xuK1x0XHR9O1xuK1xuIFx0XHR1ZnNfbWVtX2hjOiB1ZnNoY0AxZDg0MDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLHNhODc3NXAtdWZzaGNcIiwgXCJxY29tLHVmc2hjXCIsIFwiamVkZWMsdWZzLTIuMFwiO1xuIFx0XHRcdHJlZyA9IFx1MDAzYzB4MCAweDAxZDg0MDAwIDB4MCAweDMwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FkdTEwMDAuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbmluZGV4IDI2Y2M4NmQxMmY3MjU2Li44OTc5YzE4MjI1MTg0YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xZHUxMDAwLmR0c2lcbkBAIC04NzYsNiArODc2LDE3IEBAIHN5c3RlbV9ub2M6IGludGVyY29ubmVjdEAxNjQwMDAwIHtcbiBcdFx0XHQjaW50ZXJjb25uZWN0LWNlbGxzID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0fTtcbiBcbitcdFx0dHNjc3NAMWRhMDAwMCB7XG4rXHRcdFx0Y29tcGF0aWJsZSA9IFwicWNvbSxxZHUxMDAwLXRzY3NzXCI7XG4rXHRcdFx0cmVnID0gXHUwMDNjMHgwIDB4MDFkYTAwMDAgMHgwIDB4MjAwMFx1MDAzZTtcbitcdFx0XHRyZWctbmFtZXMgPSBcInRzY1wiO1xuK1x0XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NGR19BSEJfQ0xLXHUwMDNlLFxuK1x0XHRcdFx0IFx1MDAzY1x1MDAyNmdjYyBHQ0NfVFNDX0NOVFJfQ0xLXHUwMDNlO1xuK1x0XHRcdGNsb2NrLW5hbWVzID0gXCJhaGJcIiwgXCJjbnRyXCI7XG4rXHRcdFx0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Z2NjIEdDQ19UU0NfQ05UUl9DTEtcdTAwM2U7XG4rXHRcdFx0YXNzaWduZWQtY2xvY2stcmF0ZXMgPSBcdTAwM2M1MDAwMDAwMDBcdTAwM2U7XG4rXHRcdH07XG4rXG4gXHRcdHRjc3JfbXV0ZXg6IGh3bG9ja0AxZjQwMDAwIHtcbiBcdFx0XHRjb21wYXRpYmxlID0gXCJxY29tLHRjc3ItbXV0ZXhcIjtcbiBcdFx0XHRyZWcgPSBcdTAwM2MweDAgMHgxZjQwMDAwIDB4MCAweDIwMDAwXHUwMDNlO1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWcgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG5pbmRleCA2ZWM4ZDNhNjljOThlMC4uNzM0MzVlNWY4ODc3ZDIgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG4rKysgYi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnXG5AQCAtNjgzLDYgKzY4Myw3IEBAIENPTkZJR19TUElfU1BJREVWPW1cbiBDT05GSUdfU1BNST15XG4gQ09ORklHX1NQTUlfQVBQTEU9bVxuIENPTkZJR19TUE1JX01US19QTUlGPW1cbitDT05GSUdfUFRQX1FDT01fVFNDPW1cbiBDT05GSUdfUElOQ1RSTF9BUFBMRV9HUElPPW1cbiBDT05GSUdfUElOQ1RSTF9EQTkwNjI9bVxuIENPTkZJR19QSU5DVFJMX01BWDc3NjIwPXlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3MjguLmQzY2ViMWVlMDFhNTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTI2Myw0ICsyNjMsMTQgQEAgY29uZmlnIFBUUF9ORVRDX1Y0X1RJTUVSXG4gXHQgIHN5bmNocm9uaXphdGlvbi4gSXQgYWxzbyBzdXBwb3J0cyBwZXJpb2RpYyBvdXRwdXQgc2lnbmFsIChlLmcuIFBQUylcbiBcdCAgYW5kIGV4dGVybmFsIHRyaWdnZXIgdGltZXN0YW1waW5nLlxuIFxuK2NvbmZpZyBQVFBfUUNPTV9UU0NcbitcdHRyaXN0YXRlIFwiUXVhbGNvbW0gVFNDIGFzIFBUUCBjbG9ja1wiXG4rXHRkZXBlbmRzIG9uIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4rXHRoZWxwXG4rXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIFF1YWxjb21tIFRpbWVzdGFtcCBDb3VudGVyXG4rXHQgIFN1YnN5c3RlbSAoVFNDU1MpIGFzIGEgUFRQIGNsb2NrLlxuK1xuK1x0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4rXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9xY29tX3RzYy5cbitcbiBlbmRtZW51XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvTWFrZWZpbGUgYi9kcml2ZXJzL3B0cC9NYWtlZmlsZVxuaW5kZXggYmRjNDdlMjg0ZjE0ZTcuLmZmMDI5MzIzZTk4ZjVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvcHRwL01ha2VmaWxlXG5AQCAtMjIsMyArMjIsNCBAQCBvYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT0NQKVx0Kz0gcHRwX29jcC5vXG4gb2JqLSQoQ09ORklHX1BUUF9ERkxfVE9EKVx0XHQrPSBwdHBfZGZsX3RvZC5vXG4gb2JqLSQoQ09ORklHX1BUUF9TMzkwKVx0XHRcdCs9IHB0cF9zMzkwLm9cbiBvYmotJChDT05GSUdfUFRQX05FVENfVjRfVElNRVIpXHRcdCs9IHB0cF9uZXRjLm9cbitvYmotJChDT05GSUdfUFRQX1FDT01fVFNDKVx0XHQrPSBwdHBfcWNvbV90c2Mub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jIGIvZHJpdmVycy9wdHAvcHRwX3Fjb21fdHNjLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjI5MjQ4MTUwMzg4ZjNcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvcHRwL3B0cF9xY29tX3RzYy5jXG5AQCAtMCwwICsxLDQxMyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbisvKlxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4rXG4rI2RlZmluZSBST0xMT1ZFUl9WQUxcdFx0XHRcdDk5OTk5OTk5OVxuKyNkZWZpbmUgTlNFQ19TSElGVFx0XHRcdFx0MzJcbisjZGVmaW5lIFBVTFNFX1dJRFRIX01BU0tcdFx0XHRHRU5NQVNLKDcsIDYpXG4rI2RlZmluZSBEUklGVF9NQVhfUkVTXHRcdFx0XHQweDFGRkZGXG4rI2RlZmluZSBEUklGVF9KVU1QX1NXQUxMT1dcdFx0XHRCSVQoMzEpXG4rI2RlZmluZSBEUklGVF9QRVJJT0RfTUFTS1x0XHRcdEdFTk1BU0soMjgsIDEyKVxuKyNkZWZpbmUgRFJJRlRfU1VCUEVSSU9EX01BU0tcdFx0XHRHRU5NQVNLKDExLCAwKVxuKyNkZWZpbmUgRFJJRlRfSU5URVJWQUxfVVNcdFx0XHQxMFxuKyNkZWZpbmUgRFJJRlRfTUlOX1RJTUVPVVRfVVNcdFx0XHQ1MDAwXG4rXG4rI2RlZmluZSBEUklGVF9USU1FT1VUX1VTKHBlcmlvZCwgc3VicGVyaW9kLCBjbnRyX3JlcylcdFx0XHRcXFxuK1x0bWF4X3QodTY0LCBkaXZfdTY0KCh1NjQpKHBlcmlvZCkgKiAoc3VicGVyaW9kKSAqIChjbnRyX3JlcyksIE5TRUNfUEVSX1VTRUMpLCBcXFxuK1x0ICAgICAgRFJJRlRfTUlOX1RJTUVPVVRfVVMpXG4rXG4rc3RydWN0IHFjb21fdHNjX3JlZ3Mge1xuK1x0dTMyIGNvbnRyb2xfY250Y3I7XG4rXHR1MzIgY29udHJvbF9jbnRjdl9sbztcbitcdHUzMiBjb250cm9sX2NudGN2X2hpO1xuK1x0dTMyIGRyaWZ0X2NvcnJlY3RfaW5jcl92YWw7XG4rXHR1MzIgZHJpZnRfY29ycmVjdF9kdXJhdGlvbjtcbitcdHUzMiBkcmlmdF9jb3JyZWN0X2NtZDtcbitcdHUzMiByb2xsb3Zlcl92YWw7XG4rXHR1MzIgb2Zmc2V0X2xvO1xuK1x0dTMyIG9mZnNldF9oaTtcbitcdHUzMiByZWFkX2NudGN2X2xvO1xuK1x0dTMyIHJlYWRfY250Y3ZfaGk7XG4rfTtcbitcbisvKipcbisgKiBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgLSBTb0Mgc3BlY2lmaWMgVFNDIGhhcmR3YXJlIGNhcGFiaWxpdGllc1xuKyAqXG4rICogQHJvbGxvdmVyOiBpbmRpY2F0ZXMgdGhlIGNvdW50ZXIgdXNlcyBzZWMvbnNlYyBzcGxpdFxuKyAqIEBvZmZzZXRfY29ycmVjdGlvbjogaGFyZHdhcmUgc3VwcG9ydHMgb25lLXNob3Qgb2Zmc2V0IGNvcnJlY3Rpb25cbisgKiBAcHVsc2Vfd2lkdGg6IHZhbGlkIHB1bHNlIHdpZHRoIGluIGN5Y2xlcyBmb3IgZHJpZnQgY29ycmVjdGlvblxuKyAqIEBjbnRyX3JlczogVFNDIGNvdW50ZXIgcmVzb2x1dGlvbiBpbiBuc2VjXG4rICogQHJlZ19sYXlvdXQ6IHJlZ2lzdGVyIGxheW91dCBmb3IgdGhpcyBTb0MvdmVyc2lvblxuKyAqL1xuK3N0cnVjdCBxY29tX3RzY19zb2NfZGF0YSB7XG4rXHRib29sIHJvbGxvdmVyO1xuK1x0Ym9vbCBvZmZzZXRfY29ycmVjdGlvbjtcbitcdGludCBwdWxzZV93aWR0aDtcbitcdGludCBjbnRyX3JlcztcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdfbGF5b3V0O1xuK307XG4rXG4rc3RydWN0IHFjb21fdHNjIHtcbitcdHN0cnVjdCBkZXZpY2UgKmRldjtcbitcdHZvaWQgX19pb21lbSAqYmFzZTtcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jO1xuK1x0c3RydWN0IGNsayAqYWhiX2NsaztcbitcdHN0cnVjdCBjbGsgKmNudHJfY2xrO1xuK1x0c3RydWN0IGNsayAqZXR1X2NsaztcbitcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbitcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBwdHBfaW5mbztcbitcdC8qIE11dGV4IHRvIHByb3RlY3Qgb3BlcmF0aW9ucyBmcm9tIGJlaW5nIGludGVycnVwdGVkICovXG4rXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbit9O1xuK1xuK3N0YXRpYyBib29sIHFjb21fdHNjX2lzX2VuYWJsZWQoc3RydWN0IHFjb21fdHNjICp0c2MpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3JlZ3MgKnJlZ3MgPSB0c2MtXHUwMDNlc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4rXG4rXHRyZXR1cm4gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcikgXHUwMDI2IEJJVCgwKTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19yZWFkX3RpbWUoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbitcdHUzMiBoaSwgbG87XG4rXG4rXHRpZiAoIXFjb21fdHNjX2lzX2VuYWJsZWQodHNjKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRoaSA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZXJlYWRfY250Y3ZfaGkpO1xuK1x0bG8gPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VyZWFkX2NudGN2X2xvKTtcbitcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4rXHRcdHRzLVx1MDAzZXR2X3NlYyA9IGhpO1xuK1x0XHR0cy1cdTAwM2V0dl9uc2VjID0gbG87XG4rXHR9IGVsc2Uge1xuK1x0XHR1NjQgbnMgPSAoKHU2NCloaSBcdTAwM2NcdTAwM2MgTlNFQ19TSElGVCkgfCBsbztcbitcbitcdFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4re1xuK1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbitcdGludCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcdHJldCA9IHFjb21fdHNjX3JlYWRfdGltZSh0c2MsIHRzKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgcWNvbV90c2Nfc3BsaXRfdHMoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzLCB1MzIgKmhpLCB1MzIgKmxvKVxuK3tcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKSB7XG4rXHRcdCpoaSA9IHRzLnR2X3NlYztcbitcdFx0KmxvID0gdHMudHZfbnNlYztcbitcdH0gZWxzZSB7XG4rXHRcdHU2NCBucyA9IHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2dHMpO1xuK1xuK1x0XHQqbG8gPSBsb3dlcl8zMl9iaXRzKG5zKTtcbitcdFx0KmhpID0gdXBwZXJfMzJfYml0cyhucyk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIoc3RydWN0IHFjb21fdHNjICp0c2MsIHN0cnVjdCB0aW1lc3BlYzY0IHRzKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuK1x0dTMyIHJlZ3ZhbCwgaGksIGxvO1xuK1xuK1x0cWNvbV90c2Nfc3BsaXRfdHModHNjLCB0cywgXHUwMDI2aGksIFx1MDAyNmxvKTtcbitcbitcdHdyaXRlbF9yZWxheGVkKGxvLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjdl9sbyk7XG4rXHR3cml0ZWxfcmVsYXhlZChoaSwgdHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3ZfaGkpO1xuK1xuK1x0cmVndmFsID0gcmVhZGxfcmVsYXhlZCh0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4rXHRyZWd2YWwgfD0gQklUKDApO1xuK1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlY29udHJvbF9jbnRjcik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHN0cnVjdCBxY29tX3RzYyAqdHNjLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCB0cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyAqcmVncyA9IHRzYy1cdTAwM2Vzb2MtXHUwMDNlcmVnX2xheW91dDtcbitcdHN0cnVjdCB0aW1lc3BlYzY0IHRvZDtcbitcdHUzMiByZWd2YWwsIGhpLCBsbztcbitcdGludCByZXQ7XG4rXG4rXHRpZiAodHNjLVx1MDAzZXNvYy1cdTAwM2VvZmZzZXRfY29ycmVjdGlvbikge1xuK1x0XHRxY29tX3RzY19zcGxpdF90cyh0c2MsIHRzLCBcdTAwMjZoaSwgXHUwMDI2bG8pO1xuK1xuK1x0XHR3cml0ZWxfcmVsYXhlZChsbywgdHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZW9mZnNldF9sbyk7XG4rXHRcdHdyaXRlbF9yZWxheGVkKGhpLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlb2Zmc2V0X2hpKTtcbitcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHQvKlxuK1x0ICogTm8gaGFyZHdhcmUgb2Zmc2V0IGNvcnJlY3Rpb24gc3VwcG9ydDogZGlzYWJsZSBhbmQgcmVsb2FkIHRoZVxuK1x0ICogY291bnRlciB3aXRoIHRoZSBjb3JyZWN0ZWQgdGltZSwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIGhhcmR3YXJlXG4rXHQgKiBkZXNpZ24gdGVhbS5cbitcdCAqL1xuK1x0cmV0ID0gcWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZWd2YWwgPSByZWFkbF9yZWxheGVkKHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcdHJlZ3ZhbCBcdTAwMjY9IH5CSVQoMCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcbitcdHJldHVybiBxY29tX3RzY191cGRhdGVfY291bnRlcih0c2MsIHRpbWVzcGVjNjRfYWRkKHRvZCwgdHMpKTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX3RzY19zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4re1xuK1x0c3RydWN0IHFjb21fdHNjICp0c2MgPSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgcWNvbV90c2MsIHB0cF9pbmZvKTtcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gdHNjLVx1MDAzZXNvYy1cdTAwM2VyZWdfbGF5b3V0O1xuK1x0c3RydWN0IHRpbWVzcGVjNjQgdG9kO1xuK1x0dTMyIHJlZ3ZhbDtcbitcdGludCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChxY29tX3RzY19pc19lbmFibGVkKHRzYykpIHtcbitcdFx0cWNvbV90c2NfcmVhZF90aW1lKHRzYywgXHUwMDI2dG9kKTtcbitcdFx0cmV0ID0gcWNvbV90c2NfdXBkYXRlX29mZnNldCh0c2MsIHRpbWVzcGVjNjRfc3ViKCp0cywgdG9kKSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHQvKiBDb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgVFNDIGNvdW50ZXIgKi9cbitcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWNvbnRyb2xfY250Y3IpO1xuK1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoUFVMU0VfV0lEVEhfTUFTSywgdHNjLVx1MDAzZXNvYy1cdTAwM2VwdWxzZV93aWR0aCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vjb250cm9sX2NudGNyKTtcbitcbitcdGlmICh0c2MtXHUwMDNlc29jLVx1MDAzZXJvbGxvdmVyKVxuK1x0XHR3cml0ZWxfcmVsYXhlZChST0xMT1ZFUl9WQUwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2Vyb2xsb3Zlcl92YWwpO1xuK1xuK1x0cmV0ID0gcWNvbV90c2NfdXBkYXRlX2NvdW50ZXIodHNjLCAqdHMpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuK3tcbitcdHN0cnVjdCBxY29tX3RzYyAqdHNjID0gY29udGFpbmVyX29mKHB0cCwgc3RydWN0IHFjb21fdHNjLCBwdHBfaW5mbyk7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRyZXQgPSBxY29tX3RzY191cGRhdGVfb2Zmc2V0KHRzYywgbnNfdG9fdGltZXNwZWM2NChkZWx0YSkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV90c2NfZHJpZnRfY29ycmVjdGlvbihzdHJ1Y3QgcWNvbV90c2MgKnRzYywgbG9uZyBzY2FsZWRfcHBtKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19zb2NfZGF0YSAqc29jID0gdHNjLVx1MDAzZXNvYztcbitcdGNvbnN0IHN0cnVjdCBxY29tX3RzY19yZWdzICpyZWdzID0gc29jLVx1MDAzZXJlZ19sYXlvdXQ7XG4rXHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHNjYWxlZF9wcG0pO1xuK1x0dTY0IHBlcmlvZCwgaW5jdmFsID0gMDtcbitcdHUzMiByZWd2YWwgPSAwLCBzdWJwZXJpb2Q7XG4rXG4rXHRpZiAocHBiIFx1MDAzYyAwKSB7XG4rXHRcdHBwYiA9IC1wcGI7XG4rXHRcdHJlZ3ZhbCBcdTAwMjY9IH5EUklGVF9KVU1QX1NXQUxMT1c7XG4rXG4rXHRcdHBlcmlvZCA9IGRpdl91NjQocHBiLCBzb2MtXHUwMDNlY250cl9yZXMpO1xuK1x0XHRpZiAocGVyaW9kIFx1MDAzZT0gRFJJRlRfTUFYX1JFUylcbitcdFx0XHRwZXJpb2QgPSBEUklGVF9NQVhfUkVTO1xuK1x0fSBlbHNlIHtcbitcdFx0cmVndmFsIHw9IERSSUZUX0pVTVBfU1dBTExPVztcbitcbitcdFx0cGVyaW9kID0gZGl2X3U2NChwcGIsIHNvYy1cdTAwM2VjbnRyX3Jlcyk7XG4rXHRcdGlmIChwZXJpb2QgXHUwMDNlPSBEUklGVF9NQVhfUkVTKSB7XG4rXHRcdFx0cGVyaW9kID0gRFJJRlRfTUFYX1JFUztcbitcdFx0XHRpbmN2YWwgPSBzb2MtXHUwMDNlY250cl9yZXMgKiAyO1xuK1x0XHR9IGVsc2UgaWYgKHBwYiBcdTAwM2Mgc29jLVx1MDAzZWNudHJfcmVzKSB7XG4rXHRcdFx0aW5jdmFsID0gc29jLVx1MDAzZWNudHJfcmVzICsgcHBiO1xuK1x0XHRcdHBlcmlvZCA9IDE7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aW5jdmFsID0gc29jLVx1MDAzZWNudHJfcmVzICogMjtcbitcdFx0fVxuK1x0fVxuK1xuK1x0c3VicGVyaW9kID0gc29jLVx1MDAzZXB1bHNlX3dpZHRoICogMjtcbitcdHJlZ3ZhbCB8PSBGSUVMRF9QUkVQKERSSUZUX1NVQlBFUklPRF9NQVNLLCBzdWJwZXJpb2QpO1xuK1x0cmVndmFsIHw9IEZJRUxEX1BSRVAoRFJJRlRfUEVSSU9EX01BU0ssIHBlcmlvZCk7XG4rXG4rXHQvKiBVcGRhdGUganVtcC9zd2FsbG93LCBwZXJpb2QsIHN1YnBlcmlvZCAqL1xuK1x0d3JpdGVsX3JlbGF4ZWQocmVndmFsLCB0c2MtXHUwMDNlYmFzZSArIHJlZ3MtXHUwMDNlZHJpZnRfY29ycmVjdF9kdXJhdGlvbik7XG4rXG4rXHR3cml0ZWxfcmVsYXhlZChpbmN2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2luY3JfdmFsKTtcbitcbitcdC8qIFRyaWdnZXIgdGhlIGRyaWZ0IGNvcnJlY3Rpb24gKi9cbitcdHJlZ3ZhbCA9IHJlYWRsX3JlbGF4ZWQodHNjLVx1MDAzZWJhc2UgKyByZWdzLVx1MDAzZWRyaWZ0X2NvcnJlY3RfY21kKTtcbitcdHJlZ3ZhbCB8PSBCSVQoMCk7XG4rXHR3cml0ZWxfcmVsYXhlZChyZWd2YWwsIHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCk7XG4rXG4rXHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KHRzYy1cdTAwM2ViYXNlICsgcmVncy1cdTAwM2VkcmlmdF9jb3JyZWN0X2NtZCwgcmVndmFsLFxuK1x0XHRcdFx0ICAhKHJlZ3ZhbCBcdTAwMjYgQklUKDEpKSwgRFJJRlRfSU5URVJWQUxfVVMsXG4rXHRcdFx0XHQgIERSSUZUX1RJTUVPVVRfVVMocGVyaW9kLCBzdWJwZXJpb2QsIHNvYy1cdTAwM2VjbnRyX3JlcykpO1xuK31cbitcbitzdGF0aWMgaW50IHFjb21fdHNjX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbit7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBxY29tX3RzYywgcHRwX2luZm8pO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChzY2FsZWRfcHBtID09IDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ0c2MtXHUwMDNlbG9jayk7XG4rXHRyZXQgPSBxY29tX3RzY19kcmlmdF9jb3JyZWN0aW9uKHRzYywgc2NhbGVkX3BwbSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2dHNjLVx1MDAzZWxvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBxY29tX3B0cF9pbmZvID0ge1xuK1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4rXHQubmFtZVx0XHQ9IFwiUFRQX1FDT01fVFNDXCIsXG4rXHQubWF4X2Fkalx0PSA5OTk5OTk5LFxuK1x0LmFkamZpbmVcdD0gcWNvbV90c2NfYWRqZmluZSxcbitcdC5hZGp0aW1lXHQ9IHFjb21fdHNjX2FkanRpbWUsXG4rXHQuZ2V0dGltZTY0ICAgICAgPSBxY29tX3RzY19nZXR0aW1lLFxuK1x0LnNldHRpbWU2NCAgICAgID0gcWNvbV90c2Nfc2V0dGltZSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2NfcmVncyBxY29tX3RzY19sYXlvdXQgPSB7XG4rXHQuY29udHJvbF9jbnRjciAgICAgICAgICAgID0gMHgwLFxuK1x0LmNvbnRyb2xfY250Y3ZfbG8gICAgICAgICA9IDB4OCxcbitcdC5jb250cm9sX2NudGN2X2hpICAgICAgICAgPSAweGMsXG4rXHQuZHJpZnRfY29ycmVjdF9pbmNyX3ZhbCAgID0gMHgyYyxcbitcdC5kcmlmdF9jb3JyZWN0X2R1cmF0aW9uICAgPSAweDMwLFxuK1x0LmRyaWZ0X2NvcnJlY3RfY21kICAgICAgICA9IDB4MzQsXG4rXHQucm9sbG92ZXJfdmFsICAgICAgICAgICAgID0gMHgzYyxcbitcdC5vZmZzZXRfbG8gICAgICAgICAgICAgICAgPSAweDUwLFxuK1x0Lm9mZnNldF9oaSAgICAgICAgICAgICAgICA9IDB4NTQsXG4rXHQucmVhZF9jbnRjdl9sbyAgICAgICAgICAgID0gMHgxMDAwLFxuK1x0LnJlYWRfY250Y3ZfaGkgICAgICAgICAgICA9IDB4MTAwNCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfbGVtYW5zID0ge1xuK1x0LnJlZ19sYXlvdXRcdFx0PSBcdTAwMjZxY29tX3RzY19sYXlvdXQsXG4rXHQucm9sbG92ZXJcdFx0PSBmYWxzZSxcbitcdC5vZmZzZXRfY29ycmVjdGlvblx0PSBmYWxzZSxcbitcdC5wdWxzZV93aWR0aFx0XHQ9IDIsXG4rXHQuY250cl9yZXNcdFx0PSA2NCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcWNvbV90c2Nfc29jX2RhdGEgcWNvbV90c2NfcWR1MTAwMCA9IHtcbitcdC5yZWdfbGF5b3V0XHRcdD0gXHUwMDI2cWNvbV90c2NfbGF5b3V0LFxuK1x0LnJvbGxvdmVyXHRcdD0gdHJ1ZSxcbitcdC5vZmZzZXRfY29ycmVjdGlvblx0PSB0cnVlLFxuK1x0LnB1bHNlX3dpZHRoXHRcdD0gMyxcbitcdC5jbnRyX3Jlc1x0XHQ9IDIsXG4rfTtcbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX3RzY19vZl9tYXRjaFtdID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxsZW1hbnMtdHNjc3NcIiwgLmRhdGEgPSBcdTAwMjZxY29tX3RzY19sZW1hbnMgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20scWR1MTAwMC10c2Nzc1wiLCAuZGF0YSA9IFx1MDAyNnFjb21fdHNjX3FkdTEwMDAgfSxcbitcdHsgfVxuK307XG4rTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV90c2Nfb2ZfbWF0Y2gpO1xuK1xuK3N0YXRpYyB2b2lkIHFjb21fcHRwX3RzY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbit7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuK1xuK1x0aWYgKHRzYyBcdTAwMjZcdTAwMjYgdHNjLVx1MDAzZXB0cCkge1xuK1x0XHRwdHBfY2xvY2tfdW5yZWdpc3Rlcih0c2MtXHUwMDNlcHRwKTtcbitcdFx0dHNjLVx1MDAzZXB0cCA9IE5VTEw7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV9wdHBfdHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0Y29uc3Qgc3RydWN0IHFjb21fdHNjX3NvY19kYXRhICpzb2M7XG4rXHRzdHJ1Y3QgcWNvbV90c2MgKnRzYztcbitcdHN0cnVjdCByZXNvdXJjZSAqcl9tZW07XG4rXHRpbnQgcmV0O1xuK1xuK1x0c29jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmICghc29jKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHRzYyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCp0c2MpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghdHNjKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHRzYy1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHRzYy1cdTAwM2Vzb2MgPSBzb2M7XG4rXG4rXHRyZXQgPSBkZXZtX211dGV4X2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNnRzYy1cdTAwM2Vsb2NrKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyX21lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sIFwidHNjXCIpO1xuK1x0aWYgKCFyX21lbSkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIm5vIElPIHJlc291cmNlIGRlZmluZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU5YSU87XG4rXHR9XG4rXG4rXHR0c2MtXHUwMDNlYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcl9tZW0pO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYmFzZSkpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2ViYXNlKTtcbitcbitcdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiYWhiXCIpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlYWhiX2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VhaGJfY2xrKTtcbitcbitcdHRzYy1cdTAwM2VjbnRyX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcImNudHJcIik7XG4rXHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VjbnRyX2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VjbnRyX2Nsayk7XG4rXG4rXHQvKiBFVFUgY2xvY2sgaXMgb3B0aW9uYWwsIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgRVRVIGJsb2NrIGlzIHVzZWQgKi9cbitcdHRzYy1cdTAwM2VldHVfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiZXR1XCIpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlZXR1X2NsaykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHRzYy1cdTAwM2VldHVfY2xrKTtcbitcbitcdHRzYy1cdTAwM2VwdHBfaW5mbyA9IHFjb21fcHRwX2luZm87XG4rXG4rXHR0c2MtXHUwMDNlcHRwID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnRzYy1cdTAwM2VwdHBfaW5mbywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKElTX0VSUih0c2MtXHUwMDNlcHRwKSkge1xuK1x0XHRyZXQgPSBQVFJfRVJSKHRzYy1cdTAwM2VwdHApO1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwdHAgY2xvY2tcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0c2MpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fcHRwX3RzY19kcml2ZXIgPSB7XG4rXHQucHJvYmUgID0gcWNvbV9wdHBfdHNjX3Byb2JlLFxuK1x0LnJlbW92ZSA9IHFjb21fcHRwX3RzY19yZW1vdmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicWNvbV9wdHBfdHNjXCIsXG4rXHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fdHNjX29mX21hdGNoLFxuK1x0fSxcbit9O1xuK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9wdHBfdHNjX2RyaXZlcik7XG4rXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiUFRQIFFDT00gVFNDIGRyaXZlclwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjA4LjY2NzY3Njc0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNjQ2NjMwOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgYSBOZXcgUFRQIENsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhlIHBhdGNoIGFkZHMgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHVwZGF0ZXMgZGV2aWNlIHRyZWVzIGZvciBzcGVjaWZpYyBRdWFsY29tbSBwbGF0Zm9ybXMgKGxlbWFucyBhbmQgcWR1MTAwMCksIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBwcm92aWRlcyB0aGUgYHB0cF9xY29tX3RzYy5jYCBkcml2ZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJlZ2lzdGVyZWQgYXMgXCJxY29tX3B0cF90c2NcIiwgYW5kIHNlZW1zIHRvIGJlIHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgUFRQIGNsb2NrIGludGVyZmFjZSDigJMgcmVnaXN0ZXIsIGdldC9zZXQgdGltZSBmdW5jdGlvbnMsIGFsbCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMgYW5kIHN5c2ZzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyICpiaW5kcyogdG8gc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBpZGVudGlmaWVkIGJ5IGRldmljZSB0cmVlIGJpbmRpbmdzOiBgcWNvbSxsZW1hbnMtdHNjc3NgIGFuZCBgcWNvbSxxZHUxMDAwLXRzY3NzYC4gSW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0b3IgZm9yIHRoaXMgKnNwZWNpZmljKiBoYXJkd2FyZSwgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyB3b24ndCBiZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBwcm9iZSBmdW5jdGlvbiwgd2hpY2ggcmVnaXN0ZXJzIHRoZSBQVFAgY2xvY2ssIHdvbid0IGJlIGNhbGxlZC5cblxuT2YgY291cnNlLCBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgY3JlYXRlIHRoZXNlIHBsYXRmb3JtIGRldmljZXMsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBzeXpfZGV2cmVzYCBvciBieSBtb2RpZnlpbmcgdGhlIGRldmljZSB0cmVlIG9yIHV0aWxpemluZyBhIHBzZXVkby1kZXZpY2UuIEJ1dCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBvZnRlbiBmYWlsIGlmIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChhbmQgbWVtb3J5IHJlZ2lvbnMpIGlzbid0IGFjdHVhbGx5IHRoZXJlIG9yIGVtdWxhdGVkLiBUaGlzIGRyaXZlciB1c2VzIE1NSU8gb3BlcmF0aW9ucyAocmVhZGluZyBhbmQgd3JpdGluZyB0byBtZW1vcnkgdXNpbmcgYHJlYWRsX3JlbGF4ZWRgLCBgd3JpdGVsX3JlbGF4ZWRgIGFuZCB0aGUgbGlrZSwgYWNjZXNzaW5nIGB0c2MtXHUwMDNlYmFzZWApLCBzbyBpbiB0aGUgYWJzZW5jZSBvZiByZWFsIGhhcmR3YXJlIG9yIGEgc3VmZmljaWVudGx5IGRldGFpbGVkIGVtdWxhdG9yLCB0aGVzZSByZWFkcy93cml0ZXMgd2lsbCBmYWlsLlxuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIG1hcCBtZW1vcnkgcmVnaW9ucyBmb3IgTU1JTy4gU28sIGxldCdzIGxvb2sgZm9yIHNwZWNpZmljIHJlc3RyaWN0aW9ucy4gVGhlIGd1aWRlbGluZXMgc3RhdGUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGludm9sdmVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBvciBTbWFydE5JQyBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBjYW4ndCBiZSBlbXVsYXRlZCwgb3IsIG1vcmUgZ2VuZXJhbGx5LCBpZiB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cblRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIFF1YWxjb21tIFNvQydzIFRpbWVzdGFtcCBDb3VudGVyIFN1YnN5c3RlbS4gSXQgKmRlZmluaXRlbHkqIHVzZXMgTU1JTyAoYGRldm1faW9yZW1hcF9yZXNvdXJjZWApLCBhbmQgc3l6a2FsbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSwgbWFwcGluZyBtZW1vcnkgZm9yIHRob3NlIE1NSU8gcmVnaW9ucy4gSXMgaXQgd29ydGggZnV6emluZz8gR2VuZXJhbGx5LCBTb0Mtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGFyZSByZWxhdGl2ZWx5IGlzb2xhdGVkIOKAkyBtZWFuaW5nIHRoZXkganVzdCBkbyBNTUlPIHJlYWRzL3dyaXRlcyB3aXRob3V0IGNvbXBsZXggaW50ZXJhY3Rpb24gd2l0aCBuZXR3b3JrIG9yIGJsb2NrIHN1YnN5c3RlbXMg4oCTICptaWdodCogYmUgZnV6emFibGUgaWYgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSB0aGUgZHJpdmVyLlxuXG5CdXQgdGhlcmUgYXJlIHNvbWUgZGVwZW5kZW5jaWVzLCBwYXJ0aWN1bGFybHkgY2xvY2tzLiBUaGUgZHJpdmVyIHJlbGllcyBvbiBnZXR0aW5nIGNsb2NrcyB2aWEgYGRldm1fY2xrX2dldF9lbmFibGVkYCDigJMgc3BlY2lmaWNhbGx5IGNsb2NrcyBuYW1lZCBcImFoYlwiIGFuZCBcImNudHJcIi4gVGhlc2UgY2xvY2tzIGFyZSB2ZXJ5IGxpa2VseSBTb0Mtc3BlY2lmaWMsIGFuZCBpbiBhIGdlbmVyaWMgUUVNVSB2aXJ0dWFsIG1hY2hpbmUgKGxpa2UgdGhlIHN0YW5kYXJkIGB2aXJ0YCBtYWNoaW5lIGZvciBhYXJjaDY0KSwgdGhlc2UgY2xvY2tzICp3b24ndCogZXhpc3QuIFRodXMsIGBkZXZtX2Nsa19nZXRfZW5hYmxlZGAgd291bGQgcmV0dXJuIGFuIGVycm9yIGxpa2UgYC1FTk9FTlRgLCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdvdWxkIGZhaWwsIG1ha2luZyB0aGUgZHJpdmVyIHVucmVhY2hhYmxlLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBieXBhc3MgYGRldm1fY2xrX2dldF9lbmFibGVkYCwgb3IgYXJlIHRoZXJlIGR1bW15IGNsb2NrcyBhdmFpbGFibGU/IEdpdmVuIHRoZSByZWxpYW5jZSBvbiBgQ09ORklHX0NPTU1PTl9DTEtgLCBhIHN1Y2Nlc3NmdWwgYGNsa19nZXRgIHJlcXVpcmVzIHRoZSBjbG9jayB0byBiZSBwcmVzZW50LCBhbmQgaXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCBzeXprYWxsZXIgcHJvdmlkZXMgYW4gZW11bGF0b3IgZm9yIHRoZXNlIGNsb2NrcyBvciB0aGF0IHdlJ3JlIHJ1bm5pbmcgYSBRRU1VIGltYWdlIGVtdWxhdGluZyAqdGhpcyogc3BlY2lmaWMgU29DLiBTaW5jZSB0aGlzIGRyaXZlciBpcyB0aWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIGNsb2NrcywgYW5kIHdlJ3JlIGxpa2VseSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIG5vdCByZWFjaGFibGUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uOiBhIFNvQy1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgcmVxdWlyaW5nIHNwZWNpZmljIGNsb2NrcywgcmVndWxhdG9ycywgYW5kIE1NSU8gbGF5b3V0cyBub3QgcHJlc2VudCBpbiBnZW5lcmljIFZNcy5cblxuQ291bGQgc3l6a2FsbGVyIG1vY2sgdGhlIGNsb2Nrcz8gTm90IGdlbmVyYWxseS4gSXQgZm9jdXNlcyBvbiBrZXJuZWwgaW50ZXJmYWNlcywgbm90IGVtdWxhdGluZyBoYXJkd2FyZSBkZXRhaWxzIGxpa2Ugc3BlY2lmaWMgY2xvY2tzLiBJZiB0aGUgcHJvYmUgZmFpbHMsIHRoZSBkcml2ZXIgaXMgdW5yZWFjaGFibGUuIExldCdzIGxvb2sgYXQgdGhlIGRyaXZlciBjb2RlLlxuXG5gYGBjXG5cdHRzYy1cdTAwM2VhaGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiYWhiXCIpO1xuXHRpZiAoSVNfRVJSKHRzYy1cdTAwM2VhaGJfY2xrKSlcblx0XHRyZXR1cm4gUFRSX0VSUih0c2MtXHUwMDNlYWhiX2Nsayk7XG5gYGBcblxuVGhlIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGZvciB0aGUgY2xvY2s7IGlmIHRoZVxuXG4iLCJJbnB1dFRva2VucyI6MTIyMzIsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDA1OjE1OjI5LjMxNDMxMDQ3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQVFAgY2xvY2sgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gVGltZXN0YW1wIENvdW50ZXIgU3Vic3lzdGVtIChUU0NTUykuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgY2xvY2tzIChcXFwiYWhiXFxcIiwgXFxcImNudHJcXFwiKSBhbmQgTU1JTyByZXNvdXJjZXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGVzZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBUUCBjbG9jayBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBUaW1lc3RhbXAgQ291bnRlciBTdWJzeXN0ZW0gKFRTQ1NTKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBjbG9ja3MgKFxcXCJhaGJcXFwiLCBcXFwiY250clxcXCIpIGFuZCBNTUlPIHJlc291cmNlcyB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIFRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowlk74k[1] Phase: Running StartedAt: 2026-07-28 05:15:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk74k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-28 05:15:41 +0000 UTC FinishedAt: 2026-07-28 05:15:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}