Name: series-workflowllhdv Phase: Failed StartedAt: 2026-07-22 23:13:43 +0000 UTC FinishedAt: 2026-07-22 23:37:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllhdv[0] Phase: Succeeded StartedAt: 2026-07-22 23:13:43 +0000 UTC FinishedAt: 2026-07-22 23:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllhdv[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 23:13:43 +0000 UTC FinishedAt: 2026-07-22 23:37:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIzOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMzozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA1Y2ZhN2Q4Nzk1YTM2MmI1NzUyNjBhZWZhM2IwMjgwZDhiMzMxMDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMzozNzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuYyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG5pbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbkBAIC0xMDQ5NSw3ICYjNDM7MTA0OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBydGw4MTUyX2RyaXZlcl9pbml0KHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnJ0bDgxNTJfY2Znc2VsZWN0b3JfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuQEAgLTE0NywxNSAmIzQzOzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7XG4gICogX191bHBpX3JlZ2lzdGVyX2RyaXZlciAtIHJlZ2lzdGVyIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzXG4gICogQGRydjogZHJpdmVyIGJlaW5nIHJlZ2lzdGVyZWRcbiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFXG4mIzQzOyAqIEBtb2RfbmFtZTogZW5kcyB1cCBiZWluZyBLQlVJTERfTU9ETkFNRVxuICAqXG4gICogUmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzLlxuICAqL1xuLWludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpXG4mIzQzO2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGlmICghZHJ2LVx1MDAzZXByb2JlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGRydi1cdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XG4mIzQzO1x0ZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZSA9IG1vZF9uYW1lO1xuIFx0ZHJ2LVx1MDAzZWRyaXZlci5idXMgPSBcdTAwMjZ1bHBpX2J1cztcbiBcbiBcdHJldHVybiBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHJ2LVx1MDAzZWRyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbmluZGV4IGY2MzAwNDQxNzA1OGU2Li5hYjgwOWNiNmRhMjY5YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbkBAIC05ODAsOSAmIzQzOzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gfVxuIFxuIC8qKlxuLSAqIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyIC0gcmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXJcbiYjNDM7ICogX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4gICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXJcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cbiYjNDM7ICogQG1vZF9uYW1lOiBtb2R1bGUgbmFtZSBzdHJpbmdcbiAgKlxuICAqIFJlZ2lzdGVycyBhIFVTQiBkZXZpY2UgZHJpdmVyIHdpdGggdGhlIFVTQiBjb3JlLiAgVGhlIGxpc3Qgb2ZcbiAgKiB1bmF0dGFjaGVkIGRldmljZXMgd2lsbCBiZSByZXNjYW5uZWQgd2hlbmV2ZXIgYSBuZXcgZHJpdmVyIGlzXG5AQCAtOTkwLDggJiM0Mzs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gICpcbiAgKiBSZXR1cm46IEEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlIGFuZCAwIG9uIHN1Y2Nlc3MuXG4gICovXG4taW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXG4tXHRcdHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuJiM0MztpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuJiM0MztcdFx0c3RydWN0IG1vZHVsZSAqb3duZXIsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGludCByZXR2YWwgPSAwO1xuIFxuQEAgLTEwMDMsNiAmIzQzOzEwMDQsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5wcm9iZSA9IHVzYl9wcm9iZV9kZXZpY2U7XG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9kZXZpY2U7XG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbiYjNDM7XHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXHUwMDNlZGV2X2dyb3VwcztcbiBcbiBcdHJldHZhbCA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIpO1xuQEAgLTEwMjMsNyAmIzQzOzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcbiBcbiBcdHJldHVybiByZXR2YWw7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKTtcbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7XG4gXG4gLyoqXG4gICogdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHVucmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xuaW5kZXggZGYxNjZjYWZlMTA2MTkuLjI1NTlhMTgwZmRlZWM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xuQEAgLTEyNDEsNyAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxuIFx0cmV0dmFsID0gdXNiX2h1Yl9pbml0KCk7XG4gXHRpZiAocmV0dmFsKVxuIFx0XHRnb3RvIGh1Yl9pbml0X2ZhaWxlZDtcbi1cdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuJiM0MztcdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlcik7XG4gXHRpZiAoIXJldHZhbClcbiBcdFx0Z290byBvdXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jIGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jXG5pbmRleCBhZjI2NmUxOWYyZmRjYi4uMDJhZGVjMjhkOWU2OTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xuQEAgLTI0NSw3ICYjNDM7MjQ1LDcgQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciBtZmlfZmNfZHJpdmVyID0ge1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IG1maV9mY19kcml2ZXJfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZtZmlfZmNfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm1maV9mY19kcml2ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbmluZGV4IDExNTA4ZWQ0ZGYyNTE2Li5jNjA0MDYyNDA0MTYyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbkBAIC03MDYsNyAmIzQzOzcwNiw3IEBAIHN0YXRpYyBpbnQgX19pbml0IG9uYm9hcmRfZGV2X2luaXQodm9pZClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2b25ib2FyZF9kZXZfdXNiZGV2X2RyaXZlciwgVEhJU19NT0RVTEUpO1xuJiM0MztcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm9uYm9hcmRfZGV2X3VzYmRldl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jXG5pbmRleCBlODRiMTM0YTMzODEzMy4uNTg3ZDNiMDZlZThkMmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcbkBAIC0zODMsMTIgJiM0MzszODMsMTQgQEAgdm9pZCB0eXBlY19hbHRtb2RlX3B1dF9wbHVnKHN0cnVjdCB0eXBlY19hbHRtb2RlICpwbHVnKVxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xuIFxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBjaGFyICptb2RfbmFtZSlcbiB7XG4gXHRpZiAoIWRydi1cdTAwM2Vwcm9iZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRkcnYtXHUwMDNlZHJpdmVyLm93bmVyID0gbW9kdWxlO1xuJiM0MztcdGRydi1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2dHlwZWNfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcbkBAIC0zNzEsNyAmIzQzOzM3MSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHVzYmlwX2hvc3RfaW5pdCh2b2lkKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbi1cdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnN0dWJfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2c3R1Yl9kcml2ZXIpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7dXNiX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbiBcdFx0Z290byBlcnJfdXNiX3JlZ2lzdGVyO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaCBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxuaW5kZXggYzY2OGQ5YzhkODc2OTAuLmM4OTkxOTdlMGFhOGM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VscGkvZHJpdmVyLmhcbkBAIC01MSw4ICYjNDM7NTEsOCBAQCBzdHJ1Y3QgdWxwaV9kcml2ZXIge1xuIC8qXG4gICogdXNlIGEgbWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEVcbiAgKi9cbi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxuLWludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpO1xuJiM0MzsjZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbiYjNDM7aW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpO1xuIHZvaWQgdWxwaV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydik7XG4gXG4gI2RlZmluZSBtb2R1bGVfdWxwaV9kcml2ZXIoX191bHBpX2RyaXZlcikgXFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaFxuaW5kZXggMWRhNGFkMTYxMGJjYTAuLjY1MDdjMjE3YmNhNzlmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91c2IuaFxuQEAgLTEzNjgsOCAmIzQzOzEzNjgsMTAgQEAgZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXIoc3RydWN0IHVzYl9kcml2ZXIgKik7XG4gXHRtb2R1bGVfZHJpdmVyKF9fdXNiX2RyaXZlciwgdXNiX3JlZ2lzdGVyLCBcXFxuIFx0XHQgICAgICAgdXNiX2RlcmVnaXN0ZXIpXG4gXG4tZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKixcbi1cdFx0XHRzdHJ1Y3QgbW9kdWxlICopO1xuJiM0MzsjZGVmaW5lIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKG5ld191ZHJpdmVyKSBcXFxuJiM0MztcdF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbiYjNDM7ZXh0ZXJuIGludCBfX3VzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7XG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XG4gXG4gZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxuaW5kZXggZWYyMWVhZDU1MWJlNDUuLjkyMzA5YjU2OWMzYTA1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcbkBAIC0yMjcsOSAmIzQzOzIyNyw5IEBAIHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciB7XG4gICogaGFuZGxlIGFsbCBTVklEIHNwZWNpZmljIGNvbW11bmljYXRpb24uXG4gICovXG4gI2RlZmluZSB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYpIFxcXG4tXHRcdF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSlcbiYjNDM7XHRcdF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpXG4gaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsXG4tXHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gLyoqXG4gICogdHlwZWNfYWx0bW9kZV91bnJlZ2lzdGVyX2RyaXZlciAtIHVucmVnaXN0ZXJzIGEgVVNCIFR5cGUtQyBhbHRlcm5hdGUgbW9kZVxuICAqIFx0XHRcdFx0ICAgICBkZXZpY2UgZHJpdmVyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjM6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDVjZmE3ZDg3OTVhMzYyYjU3NTI2MGFlZmEzYjAyODBkOGIzMzEwMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDIzOjM3OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwppbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCkBAIC0xMDQ5NSw3ICYjNDM7MTA0OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBydGw4MTUyX2RyaXZlcl9pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlcik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuYyBiL2RyaXZlcnMvdXNiL2NvbW1vbi91bHBpLmMKaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvbW1vbi91bHBpLmMKQEAgLTE0NywxNSAmIzQzOzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7CiAgKiBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXMKICAqIEBkcnY6IGRyaXZlciBiZWluZyByZWdpc3RlcmVkCiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFCiYjNDM7ICogQG1vZF9uYW1lOiBlbmRzIHVwIGJlaW5nIEtCVUlMRF9NT0ROQU1FCiAgKgogICogUmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzLgogICovCi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKQomIzQzO2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKQogewogCWlmICghZHJ2LSZndDtwcm9iZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkcnYtJmd0O2RyaXZlci5vd25lciA9IG1vZHVsZTsKJiM0MzsJZHJ2LSZndDtkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTsKIAlkcnYtJmd0O2RyaXZlci5idXMgPSAmYW1wO3VscGlfYnVzOwogCiAJcmV0dXJuIGRyaXZlcl9yZWdpc3RlcigmYW1wO2Rydi0mZ3Q7ZHJpdmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCmluZGV4IGY2MzAwNDQxNzA1OGU2Li5hYjgwOWNiNmRhMjY5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCkBAIC05ODAsOSAmIzQzOzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiB9CiAKIC8qKgotICogdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlcgomIzQzOyAqIF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlcgogICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXIKICAqIEBvd25lcjogbW9kdWxlIG93bmVyIG9mIHRoaXMgZHJpdmVyLgomIzQzOyAqIEBtb2RfbmFtZTogbW9kdWxlIG5hbWUgc3RyaW5nCiAgKgogICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZgogICogdW5hdHRhY2hlZCBkZXZpY2VzIHdpbGwgYmUgcmVzY2FubmVkIHdoZW5ldmVyIGEgbmV3IGRyaXZlciBpcwpAQCAtOTkwLDggJiM0Mzs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiAgKgogICogUmV0dXJuOiBBIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzLgogICovCi1pbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKLQkJc3RydWN0IG1vZHVsZSAqb3duZXIpCiYjNDM7aW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKJiM0MzsJCXN0cnVjdCBtb2R1bGUgKm93bmVyLCBjb25zdCBjaGFyICptb2RfbmFtZSkKIHsKIAlpbnQgcmV0dmFsID0gMDsKIApAQCAtMTAwMyw2ICYjNDM7MTAwNCw3IEBAIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLAogCW5ld191ZHJpdmVyLSZndDtkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlOwogCW5ld191ZHJpdmVyLSZndDtkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9kZXZpY2U7CiAJbmV3X3Vkcml2ZXItJmd0O2RyaXZlci5vd25lciA9IG93bmVyOwomIzQzOwluZXdfdWRyaXZlci0mZ3Q7ZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7CiAJbmV3X3Vkcml2ZXItJmd0O2RyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItJmd0O2Rldl9ncm91cHM7CiAKIAlyZXR2YWwgPSBkcml2ZXJfcmVnaXN0ZXIoJmFtcDtuZXdfdWRyaXZlci0mZ3Q7ZHJpdmVyKTsKQEAgLTEwMjMsNyAmIzQzOzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKIAogCXJldHVybiByZXR2YWw7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTCh1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7CiAKIC8qKgogICogdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHVucmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmMgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jCmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jCkBAIC0xMjQxLDcgJiM0MzsxMjQxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZCkKIAlyZXR2YWwgPSB1c2JfaHViX2luaXQoKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGh1Yl9pbml0X2ZhaWxlZDsKLQlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO3VzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpOwomIzQzOwlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO3VzYl9nZW5lcmljX2RyaXZlcik7CiAJaWYgKCFyZXR2YWwpCiAJCWdvdG8gb3V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMKaW5kZXggYWYyNjZlMTlmMmZkY2IuLjAyYWRlYzI4ZDllNjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jCkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHsKIAogc3RhdGljIGludCBfX2luaXQgbWZpX2ZjX2RyaXZlcl9pbml0KHZvaWQpCiB7Ci0JcmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpOwomIzQzOwlyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDttZmlfZmNfZHJpdmVyKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IG1maV9mY19kcml2ZXJfZXhpdCh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMKaW5kZXggMTE1MDhlZDRkZjI1MTYuLmM2MDQwNjI0MDQxNjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMKQEAgLTcwNiw3ICYjNDM7NzA2LDcgQEAgc3RhdGljIGludCBfX2luaXQgb25ib2FyZF9kZXZfaW5pdCh2b2lkKQogewogCWludCByZXQ7CiAKLQlyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO29uYm9hcmRfZGV2X3VzYmRldl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jCmluZGV4IGU4NGIxMzRhMzM4MTMzLi41ODdkM2IwNmVlOGQyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMKQEAgLTM4MywxMiAmIzQzOzM4MywxNCBAQCB2b2lkIHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcoc3RydWN0IHR5cGVjX2FsdG1vZGUgKnBsdWcpCiBFWFBPUlRfU1lNQk9MX0dQTCh0eXBlY19hbHRtb2RlX3B1dF9wbHVnKTsKIAogaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsCi0JCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSkKJiM0MzsJCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwKJiM0MzsJCQkJICAgIGNvbnN0IGNoYXIgKm1vZF9uYW1lKQogewogCWlmICghZHJ2LSZndDtwcm9iZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkcnYtJmd0O2RyaXZlci5vd25lciA9IG1vZHVsZTsKJiM0MzsJZHJ2LSZndDtkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTsKIAlkcnYtJmd0O2RyaXZlci5idXMgPSAmYW1wO3R5cGVjX2J1czsKIAogCXJldHVybiBkcml2ZXJfcmVnaXN0ZXIoJmFtcDtkcnYtJmd0O2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jCmluZGV4IDc5MTEwYTY5ZDY5N2MxLi4wMTQ1MmY3YmRhYmJkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmMKQEAgLTM3MSw3ICYjNDM7MzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAotCXJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtzdHViX2RyaXZlcik7CiAJaWYgKHJldCkgewogCQlwcl9lcnIoJiMzNDt1c2JfcmVnaXN0ZXIgZmFpbGVkICVkXG4mIzM0OywgcmV0KTsKIAkJZ290byBlcnJfdXNiX3JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oCmluZGV4IGM2NjhkOWM4ZDg3NjkwLi5jODk5MTk3ZTBhYThjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaApAQCAtNTEsOCAmIzQzOzUxLDggQEAgc3RydWN0IHVscGlfZHJpdmVyIHsKIC8qCiAgKiB1c2UgYSBtYWNybyB0byBhdm9pZCBpbmNsdWRlIGNoYWluaW5nIHRvIGdldCBUSElTX01PRFVMRQogICovCi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKQotaW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7CiYjNDM7I2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpCiYjNDM7aW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpOwogdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTsKIAogI2RlZmluZSBtb2R1bGVfdWxwaV9kcml2ZXIoX191bHBpX2RyaXZlcikgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmgKaW5kZXggMWRhNGFkMTYxMGJjYTAuLjY1MDdjMjE3YmNhNzlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiLmgKQEAgLTEzNjgsOCAmIzQzOzEzNjgsMTAgQEAgZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXIoc3RydWN0IHVzYl9kcml2ZXIgKik7CiAJbW9kdWxlX2RyaXZlcihfX3VzYl9kcml2ZXIsIHVzYl9yZWdpc3RlciwgXAogCQkgICAgICAgdXNiX2RlcmVnaXN0ZXIpCiAKLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosCi0JCQlzdHJ1Y3QgbW9kdWxlICopOwomIzQzOyNkZWZpbmUgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIpIFwKJiM0MzsJX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKQomIzQzO2V4dGVybiBpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKiwKJiM0MzsJCQlzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdm9pZCB1c2JfZGVyZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqKTsKIAogZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oIGIvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oCmluZGV4IGVmMjFlYWQ1NTFiZTQ1Li45MjMwOWI1NjljM2EwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaApAQCAtMjI3LDkgJiM0MzsyMjcsOSBAQCBzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgewogICogaGFuZGxlIGFsbCBTVklEIHNwZWNpZmljIGNvbW11bmljYXRpb24uCiAgKi8KICNkZWZpbmUgdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2KSBcCi0JCV9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSkKJiM0MzsJCV9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpCiBpbnQgX190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgKmRydiwKLQkJCQkgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTsKJiM0MzsJCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpOwogLyoqCiAgKiB0eXBlY19hbHRtb2RlX3VucmVnaXN0ZXJfZHJpdmVyIC0gdW5yZWdpc3RlcnMgYSBVU0IgVHlwZS1DIGFsdGVybmF0ZSBtb2RlCiAgKiAJCQkJICAgICBkZXZpY2UgZHJpdmVyCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjEKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogVVNCL1VMUEkvVHlwZS1DIERyaXZlciBSZWdpc3RyYXRpb24gUmVmYWN0b3IqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyB0aGUgVVNCLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGEgcmVmYWN0b3IsIHNwZWNpZmljYWxseSBhZGRpbmcgYEtCVUlMRF9NT0ROQU1FYCB0byB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBjYWxscywgYXNzaWduaW5nIGl0IHRvIGBkcnYtJmd0O2RyaXZlci5tb2RfbmFtZWAuIFRoZSBnb2FsIGlzIHRvIHN0YW5kYXJkaXplIG1vZHVsZSBuYW1lIGhhbmRsaW5nLCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBkcml2ZXIgc3Vic3lzdGVtcyB3b3JrLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgbmV3ICpmdXp6YWJsZSogY29kZSBwYXRocy4gVGhlIGNoYW5nZXMgc2VlbSBwdXJlbHkgc3RydWN0dXJhbC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYW4gQVBJIGFkanVzdG1lbnQg4oCTIHBhc3NpbmcgYEtCVUlMRF9NT0ROQU1FYCB0byBgZHJpdmVyX3JlZ2lzdGVyYCB0aHJvdWdoIGBkcnYtJmd0O2RyaXZlci5tb2RfbmFtZWAuIEl0IGFwcGVhcnMgdGhpcyBtb2RpZmllcyBhIHN0cmluZyBmaWVsZCBpbiBgc3RydWN0IGRldmljZV9kcml2ZXJgLiBJIGNvbmZpcm1lZCB0aGF0IGBzdHJ1Y3QgZGV2aWNlX2RyaXZlcmAgKmRvZXMqIGNvbnRhaW4gYG1vZF9uYW1lYCwgYXMgZXhwZWN0ZWQuCgpUaGlzIGxvb2tzIGxpa2UgYSBib2lsZXJwbGF0ZSByZWR1Y3Rpb24sIG9yIHBlcmhhcHMgYW4gaW1wcm92ZW1lbnQgaW4gbW9kdWxlIG5hbWUgdHJhY2tpbmcuIEl0JiMzOTtzIG5vdCBhZGRpbmcgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZnV6emVkLiBJdCBpcyBqdXN0IHBvcHVsYXRpbmcgYSBzdHJpbmcgcG9pbnRlci4gU28sIGJhc2VkIG9uIG15IGluaXRpYWwgYW5hbHlzaXMsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGJlIHN1cmUuIEFscmlnaHQsIEkmIzM5O20gc2VlaW5nIHRoYXQgYHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyYCwgYHVscGlfcmVnaXN0ZXJfZHJpdmVyYCwgYW5kIGB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcmAgYXJlIG5vdyBtYWNyb3MgdGhhdCBjYWxsIGludGVybmFsIGZ1bmN0aW9ucyB3aXRoIGBUSElTX01PRFVMRWAgYW5kIGBLQlVJTERfTU9ETkFNRWAuIEFueSBkcml2ZXJzIHVzaW5nIHRoZSBvbGQgZnVuY3Rpb25zIGFyZSBub3cgdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBtYWNyb3Mgd2l0aG91dCBgVEhJU19NT0RVTEVgLiBJdCYjMzk7cyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UsIG5vIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGhlcmUgdG8gdGVzdC4KClRoZXJlZm9yZSwgYWZ0ZXIgdGhpcyByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjM6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UgdGhhdCB1cGRhdGVzIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zIChVU0IgZGV2aWNlLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUpIHRvIGF1dG9tYXRpY2FsbHkgcGFzcyBLQlVJTERfTU9ETkFNRSBhbmQgYXNzaWduIGl0IHRvIHRoZSBkcml2ZXImIzM5O3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA0LjQzNjY4OTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxODU3MzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCBBUEkgY2hhbmdlIHRoYXQgdXBkYXRlcyBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyAoVVNCIGRldmljZSwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlKSB0byBhdXRvbWF0aWNhbGx5IHBhc3MgS0JVSUxEX01PRE5BTUUgYW5kIGFzc2lnbiBpdCB0byB0aGUgZHJpdmVyJ3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA0LjQzNjY5NTYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDM5NTE4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNWNmYTdkODc5NWEzNjJiNTc1MjYwYWVmYTNiMDI4MGQ4YjMzMTAwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDIzOjM3OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG5pbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xcbkBAIC0xMDQ5NSw3ICsxMDQ5NSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJ0bDgxNTJfZHJpdmVyX2luaXQodm9pZClcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnJ0bDgxNTJfY2Znc2VsZWN0b3JfZHJpdmVyLCBUSElTX01PRFVMRSk7XFxuK1xcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlcik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xcbmluZGV4IDdlNDM0MjllOTk2ZTdhLi5kZWM0YmFjYTFjNTNkMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jXFxuKysrIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xcbkBAIC0xNDcsMTUgKzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7XFxuICAqIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGRyaXZlciB3aXRoIHRoZSBVTFBJIGJ1c1xcbiAgKiBAZHJ2OiBkcml2ZXIgYmVpbmcgcmVnaXN0ZXJlZFxcbiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFXFxuKyAqIEBtb2RfbmFtZTogZW5kcyB1cCBiZWluZyBLQlVJTERfTU9ETkFNRVxcbiAgKlxcbiAgKiBSZWdpc3RlcnMgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXMuXFxuICAqL1xcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxcbitpbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSlcXG4ge1xcbiBcXHRpZiAoIWRydi1cXHUwMDNlcHJvYmUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XFxuK1xcdGRydi1cXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XFxuIFxcdGRydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZ1bHBpX2J1cztcXG4gXFxuIFxcdHJldHVybiBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRydi1cXHUwMDNlZHJpdmVyKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYWI4MDljYjZkYTI2OWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5AQCAtOTgwLDkgKzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXFxuKyAqIF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlclxcbiAgKiBAbmV3X3Vkcml2ZXI6IFVTQiBvcGVyYXRpb25zIGZvciB0aGUgZGV2aWNlIGRyaXZlclxcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cXG4rICogQG1vZF9uYW1lOiBtb2R1bGUgbmFtZSBzdHJpbmdcXG4gICpcXG4gICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZlxcbiAgKiB1bmF0dGFjaGVkIGRldmljZXMgd2lsbCBiZSByZXNjYW5uZWQgd2hlbmV2ZXIgYSBuZXcgZHJpdmVyIGlzXFxuQEAgLTk5MCw4ICs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuICAqXFxuICAqIFJldHVybjogQSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUgYW5kIDAgb24gc3VjY2Vzcy5cXG4gICovXFxuLWludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxcbi1cXHRcXHRzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4raW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcXG4rXFx0XFx0c3RydWN0IG1vZHVsZSAqb3duZXIsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxcbiB7XFxuIFxcdGludCByZXR2YWwgPSAwO1xcbiBcXG5AQCAtMTAwMyw2ICsxMDA0LDcgQEAgaW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXFxuIFxcdG5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlO1xcbiBcXHRuZXdfdWRyaXZlci1cXHUwMDNlZHJpdmVyLnJlbW92ZSA9IHVzYl91bmJpbmRfZGV2aWNlO1xcbiBcXHRuZXdfdWRyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuK1xcdG5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcXG4gXFx0bmV3X3Vkcml2ZXItXFx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXFx1MDAzZWRldl9ncm91cHM7XFxuIFxcbiBcXHRyZXR2YWwgPSBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbkBAIC0xMDIzLDcgKzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcXG4gXFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwodXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xcbitFWFBPUlRfU1lNQk9MX0dQTChfX3VzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKTtcXG4gXFxuIC8qKlxcbiAgKiB1c2JfZGVyZWdpc3Rlcl9kZXZpY2VfZHJpdmVyIC0gdW5yZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlclxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xcbmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jXFxuKysrIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xcbkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxcbiBcXHRyZXR2YWwgPSB1c2JfaHViX2luaXQoKTtcXG4gXFx0aWYgKHJldHZhbClcXG4gXFx0XFx0Z290byBodWJfaW5pdF9mYWlsZWQ7XFxuLVxcdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZ1c2JfZ2VuZXJpY19kcml2ZXIsIFRISVNfTU9EVUxFKTtcXG4rXFx0cmV0dmFsID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlcik7XFxuIFxcdGlmICghcmV0dmFsKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuYyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xcbmluZGV4IGFmMjY2ZTE5ZjJmZGNiLi4wMmFkZWMyOGQ5ZTY5MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcXG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgX19pbml0IG1maV9mY19kcml2ZXJfaW5pdCh2b2lkKVxcbiB7XFxuLVxcdHJldHVybiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcXHUwMDI2bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpO1xcbitcXHRyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNm1maV9mY19kcml2ZXIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMgYi9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jXFxuaW5kZXggMTE1MDhlZDRkZjI1MTYuLmM2MDQwNjI0MDQxNjJlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jXFxuQEAgLTcwNiw3ICs3MDYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBvbmJvYXJkX2Rldl9pbml0KHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyLCBUSElTX01PRFVMRSk7XFxuK1xcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jIGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcXG5pbmRleCBlODRiMTM0YTMzODEzMy4uNTg3ZDNiMDZlZThkMmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xcbkBAIC0zODMsMTIgKzM4MywxNCBAQCB2b2lkIHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcoc3RydWN0IHR5cGVjX2FsdG1vZGUgKnBsdWcpXFxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xcbiBcXG4gaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsXFxuLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICptb2RfbmFtZSlcXG4ge1xcbiBcXHRpZiAoIWRydi1cXHUwMDNlcHJvYmUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XFxuK1xcdGRydi1cXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XFxuIFxcdGRydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZ0eXBlY19idXM7XFxuIFxcbiBcXHRyZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkcnYtXFx1MDAzZWRyaXZlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jIGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xcbkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcXHUwMDI2c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTtcXG4rXFx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnN0dWJfZHJpdmVyKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRwcl9lcnIoXFxcInVzYl9yZWdpc3RlciBmYWlsZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuIFxcdFxcdGdvdG8gZXJyX3VzYl9yZWdpc3RlcjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXFxuaW5kZXggYzY2OGQ5YzhkODc2OTAuLmM4OTkxOTdlMGFhOGM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxcbkBAIC01MSw4ICs1MSw4IEBAIHN0cnVjdCB1bHBpX2RyaXZlciB7XFxuIC8qXFxuICAqIHVzZSBhIG1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFXFxuICAqL1xcbi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcXG4rI2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpXFxuK2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKTtcXG4gdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTtcXG4gXFxuICNkZWZpbmUgbW9kdWxlX3VscGlfZHJpdmVyKF9fdWxwaV9kcml2ZXIpIFxcXFxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNjUwN2MyMTdiY2E3OWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5AQCAtMTM2OCw4ICsxMzY4LDEwIEBAIGV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyKHN0cnVjdCB1c2JfZHJpdmVyICopO1xcbiBcXHRtb2R1bGVfZHJpdmVyKF9fdXNiX2RyaXZlciwgdXNiX3JlZ2lzdGVyLCBcXFxcXFxuIFxcdFxcdCAgICAgICB1c2JfZGVyZWdpc3RlcilcXG4gXFxuLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXFxuLVxcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKik7XFxuKyNkZWZpbmUgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIpIFxcXFxcXG4rXFx0X191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxcbitleHRlcm4gaW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXFxuK1xcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKiwgY29uc3QgY2hhciAqKTtcXG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XFxuIFxcbiBleHRlcm4gaW50IHVzYl9yZWdpc3Rlcl9kZXYoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxcbmluZGV4IGVmMjFlYWQ1NTFiZTQ1Li45MjMwOWI1NjljM2EwNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcXG5AQCAtMjI3LDkgKzIyNyw5IEBAIHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciB7XFxuICAqIGhhbmRsZSBhbGwgU1ZJRCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uLlxcbiAgKi9cXG4gI2RlZmluZSB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYpIFxcXFxcXG4tXFx0XFx0X190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxcbitcXHRcXHRfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydiwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxcbiBpbnQgX190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgKmRydixcXG4tXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7XFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKTtcXG4gLyoqXFxuICAqIHR5cGVjX2FsdG1vZGVfdW5yZWdpc3Rlcl9kcml2ZXIgLSB1bnJlZ2lzdGVycyBhIFVTQiBUeXBlLUMgYWx0ZXJuYXRlIG1vZGVcXG4gICogXFx0XFx0XFx0XFx0ICAgICBkZXZpY2UgZHJpdmVyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA1LjA4MTQxNTc4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgxNzM4Mzk0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlcidzIG1vZF9uYW1lIGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA1Y2ZhN2Q4Nzk1YTM2MmI1NzUyNjBhZWZhM2IwMjgwZDhiMzMxMDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMzozNzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li43M2I5YjJhZjFlZDIyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTEwNDk1LDcgKzEwNDk1LDcgQEAgc3RhdGljIGludCBfX2luaXQgcnRsODE1Ml9kcml2ZXJfaW5pdCh2b2lkKVxuIHtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuKysrIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuQEAgLTE0NywxNSArMTQ3LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgdWxwaV9kZXZfdHlwZSA9IHtcbiAgKiBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXNcbiAgKiBAZHJ2OiBkcml2ZXIgYmVpbmcgcmVnaXN0ZXJlZFxuICAqIEBtb2R1bGU6IGVuZHMgdXAgYmVpbmcgVEhJU19NT0RVTEVcbisgKiBAbW9kX25hbWU6IGVuZHMgdXAgYmVpbmcgS0JVSUxEX01PRE5BTUVcbiAgKlxuICAqIFJlZ2lzdGVycyBhIGRyaXZlciB3aXRoIHRoZSBVTFBJIGJ1cy5cbiAgKi9cbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxuK2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGlmICghZHJ2LVx1MDAzZXByb2JlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGRydi1cdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XG4rXHRkcnYtXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XG4gXHRkcnYtXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNnVscGlfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmFiODA5Y2I2ZGEyNjlhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuKysrIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuQEAgLTk4MCw5ICs5ODAsMTAgQEAgYm9vbCBpc191c2JfZGV2aWNlX2RyaXZlcihjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIH1cbiBcbiAvKipcbi0gKiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4rICogX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4gICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXJcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cbisgKiBAbW9kX25hbWU6IG1vZHVsZSBuYW1lIHN0cmluZ1xuICAqXG4gICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZlxuICAqIHVuYXR0YWNoZWQgZGV2aWNlcyB3aWxsIGJlIHJlc2Nhbm5lZCB3aGVuZXZlciBhIG5ldyBkcml2ZXIgaXNcbkBAIC05OTAsOCArOTkxLDggQEAgYm9vbCBpc191c2JfZGV2aWNlX2RyaXZlcihjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuICAqXG4gICogUmV0dXJuOiBBIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzLlxuICAqL1xuLWludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuLVx0XHRzdHJ1Y3QgbW9kdWxlICpvd25lcilcbitpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuK1x0XHRzdHJ1Y3QgbW9kdWxlICpvd25lciwgY29uc3QgY2hhciAqbW9kX25hbWUpXG4ge1xuIFx0aW50IHJldHZhbCA9IDA7XG4gXG5AQCAtMTAwMyw2ICsxMDA0LDcgQEAgaW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlO1xuIFx0bmV3X3Vkcml2ZXItXHUwMDNlZHJpdmVyLnJlbW92ZSA9IHVzYl91bmJpbmRfZGV2aWNlO1xuIFx0bmV3X3Vkcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG4rXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXHUwMDNlZGV2X2dyb3VwcztcbiBcbiBcdHJldHZhbCA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIpO1xuQEAgLTEwMjMsNyArMTAyNSw3IEBAIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuIFxuIFx0cmV0dXJuIHJldHZhbDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xuK0VYUE9SVF9TWU1CT0xfR1BMKF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xuIFxuIC8qKlxuICAqIHVzYl9kZXJlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSB1bnJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS91c2IuYyBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxuIFx0cmV0dmFsID0gdXNiX2h1Yl9pbml0KCk7XG4gXHRpZiAocmV0dmFsKVxuIFx0XHRnb3RvIGh1Yl9pbml0X2ZhaWxlZDtcbi1cdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0dmFsID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2dXNiX2dlbmVyaWNfZHJpdmVyKTtcbiBcdGlmICghcmV0dmFsKVxuIFx0XHRnb3RvIG91dDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcbmluZGV4IGFmMjY2ZTE5ZjJmZGNiLi4wMmFkZWMyOGQ5ZTY5MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xuKysrIGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jXG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBtZmlfZmNfZHJpdmVyX2luaXQodm9pZClcbiB7XG4tXHRyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm1maV9mY19kcml2ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbmluZGV4IDExNTA4ZWQ0ZGYyNTE2Li5jNjA0MDYyNDA0MTYyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbisrKyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbkBAIC03MDYsNyArNzA2LDcgQEAgc3RhdGljIGludCBfX2luaXQgb25ib2FyZF9kZXZfaW5pdCh2b2lkKVxuIHtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4rXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xuaW5kZXggZTg0YjEzNGEzMzgxMzMuLjU4N2QzYjA2ZWU4ZDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jXG5AQCAtMzgzLDEyICszODMsMTQgQEAgdm9pZCB0eXBlY19hbHRtb2RlX3B1dF9wbHVnKHN0cnVjdCB0eXBlY19hbHRtb2RlICpwbHVnKVxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xuIFxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsXG4rXHRcdFx0XHQgICAgY29uc3QgY2hhciAqbW9kX25hbWUpXG4ge1xuIFx0aWYgKCFkcnYtXHUwMDNlcHJvYmUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0ZHJ2LVx1MDAzZWRyaXZlci5vd25lciA9IG1vZHVsZTtcbitcdGRydi1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2dHlwZWNfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xuKysrIGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcbkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFxuLVx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTtcbitcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnN0dWJfZHJpdmVyKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0cHJfZXJyKFwidXNiX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwiLCByZXQpO1xuIFx0XHRnb3RvIGVycl91c2JfcmVnaXN0ZXI7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXG5pbmRleCBjNjY4ZDljOGQ4NzY5MC4uYzg5OTE5N2UwYWE4YzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VscGkvZHJpdmVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxuQEAgLTUxLDggKzUxLDggQEAgc3RydWN0IHVscGlfZHJpdmVyIHtcbiAvKlxuICAqIHVzZSBhIG1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFXG4gICovXG4tI2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSlcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcbisjZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbitpbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTtcbiBcbiAjZGVmaW5lIG1vZHVsZV91bHBpX2RyaXZlcihfX3VscGlfZHJpdmVyKSBcXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNjUwN2MyMTdiY2E3OWYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5AQCAtMTM2OCw4ICsxMzY4LDEwIEBAIGV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyKHN0cnVjdCB1c2JfZHJpdmVyICopO1xuIFx0bW9kdWxlX2RyaXZlcihfX3VzYl9kcml2ZXIsIHVzYl9yZWdpc3RlciwgXFxcbiBcdFx0ICAgICAgIHVzYl9kZXJlZ2lzdGVyKVxuIFxuLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXG4tXHRcdFx0c3RydWN0IG1vZHVsZSAqKTtcbisjZGVmaW5lIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKG5ld191ZHJpdmVyKSBcXFxuK1x0X191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxuK2V4dGVybiBpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKixcbitcdFx0XHRzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7XG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XG4gXG4gZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxuaW5kZXggZWYyMWVhZDU1MWJlNDUuLjkyMzA5YjU2OWMzYTA1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcbkBAIC0yMjcsOSArMjI3LDkgQEAgc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyIHtcbiAgKiBoYW5kbGUgYWxsIFNWSUQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbi5cbiAgKi9cbiAjZGVmaW5lIHR5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydikgXFxcbi1cdFx0X190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxuK1x0XHRfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydiwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7XG4rXHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gLyoqXG4gICogdHlwZWNfYWx0bW9kZV91bnJlZ2lzdGVyX2RyaXZlciAtIHVucmVnaXN0ZXJzIGEgVVNCIFR5cGUtQyBhbHRlcm5hdGUgbW9kZVxuICAqIFx0XHRcdFx0ICAgICBkZXZpY2UgZHJpdmVyXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMzozNzowNS4wODE0MTc2NTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTczNzc2MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IFVTQi9VTFBJL1R5cGUtQyBEcml2ZXIgUmVnaXN0cmF0aW9uIFJlZmFjdG9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgdGhlIFVTQiwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBhIHJlZmFjdG9yLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGBLQlVJTERfTU9ETkFNRWAgdG8gdGhlIGRyaXZlciByZWdpc3RyYXRpb24gY2FsbHMsIGFzc2lnbmluZyBpdCB0byBgZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZWAuIFRoZSBnb2FsIGlzIHRvIHN0YW5kYXJkaXplIG1vZHVsZSBuYW1lIGhhbmRsaW5nLCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBkcml2ZXIgc3Vic3lzdGVtcyB3b3JrLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSBuZXcgKmZ1enphYmxlKiBjb2RlIHBhdGhzLiBUaGUgY2hhbmdlcyBzZWVtIHB1cmVseSBzdHJ1Y3R1cmFsLiBXZSdyZSB0YWxraW5nIGFib3V0IGFuIEFQSSBhZGp1c3RtZW50IOKAkyBwYXNzaW5nIGBLQlVJTERfTU9ETkFNRWAgdG8gYGRyaXZlcl9yZWdpc3RlcmAgdGhyb3VnaCBgZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZWAuIEl0IGFwcGVhcnMgdGhpcyBtb2RpZmllcyBhIHN0cmluZyBmaWVsZCBpbiBgc3RydWN0IGRldmljZV9kcml2ZXJgLiBJIGNvbmZpcm1lZCB0aGF0IGBzdHJ1Y3QgZGV2aWNlX2RyaXZlcmAgKmRvZXMqIGNvbnRhaW4gYG1vZF9uYW1lYCwgYXMgZXhwZWN0ZWQuXG5cblRoaXMgbG9va3MgbGlrZSBhIGJvaWxlcnBsYXRlIHJlZHVjdGlvbiwgb3IgcGVyaGFwcyBhbiBpbXByb3ZlbWVudCBpbiBtb2R1bGUgbmFtZSB0cmFja2luZy4gSXQncyBub3QgYWRkaW5nIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZ1enplZC4gSXQgaXMganVzdCBwb3B1bGF0aW5nIGEgc3RyaW5nIHBvaW50ZXIuIFNvLCBiYXNlZCBvbiBteSBpbml0aWFsIGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSSB3YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSdtIHNlZWluZyB0aGF0IGB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcmAsIGB1bHBpX3JlZ2lzdGVyX2RyaXZlcmAsIGFuZCBgdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXJgIGFyZSBub3cgbWFjcm9zIHRoYXQgY2FsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aCBgVEhJU19NT0RVTEVgIGFuZCBgS0JVSUxEX01PRE5BTUVgLiBBbnkgZHJpdmVycyB1c2luZyB0aGUgb2xkIGZ1bmN0aW9ucyBhcmUgbm93IHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgbWFjcm9zIHdpdGhvdXQgYFRISVNfTU9EVUxFYC4gSXQncyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UsIG5vIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGhlcmUgdG8gdGVzdC5cblxuVGhlcmVmb3JlLCBhZnRlciB0aGlzIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODIxLCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjM6Mzc6MTMuMjU1MTk2NjI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UgdGhhdCB1cGRhdGVzIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zIChVU0IgZGV2aWNlLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUpIHRvIGF1dG9tYXRpY2FsbHkgcGFzcyBLQlVJTERfTU9ETkFNRSBhbmQgYXNzaWduIGl0IHRvIHRoZSBkcml2ZXIncyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCBBUEkgY2hhbmdlIHRoYXQgdXBkYXRlcyBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyAoVVNCIGRldmljZSwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlKSB0byBhdXRvbWF0aWNhbGx5IHBhc3MgS0JVSUxEX01PRE5BTUUgYW5kIGFzc2lnbiBpdCB0byB0aGUgZHJpdmVyJ3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowllhdv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 23:13:43 +0000 UTC FinishedAt: 2026-07-22 23:37:14 +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+CgkJCTx0ZD4yMDI2LzA3LzIyIDIzOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMzozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA1Y2ZhN2Q4Nzk1YTM2MmI1NzUyNjBhZWZhM2IwMjgwZDhiMzMxMDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMzozNzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuYyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG5pbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbkBAIC0xMDQ5NSw3ICYjNDM7MTA0OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBydGw4MTUyX2RyaXZlcl9pbml0KHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnJ0bDgxNTJfY2Znc2VsZWN0b3JfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuQEAgLTE0NywxNSAmIzQzOzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7XG4gICogX191bHBpX3JlZ2lzdGVyX2RyaXZlciAtIHJlZ2lzdGVyIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzXG4gICogQGRydjogZHJpdmVyIGJlaW5nIHJlZ2lzdGVyZWRcbiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFXG4mIzQzOyAqIEBtb2RfbmFtZTogZW5kcyB1cCBiZWluZyBLQlVJTERfTU9ETkFNRVxuICAqXG4gICogUmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzLlxuICAqL1xuLWludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpXG4mIzQzO2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGlmICghZHJ2LVx1MDAzZXByb2JlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGRydi1cdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XG4mIzQzO1x0ZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZSA9IG1vZF9uYW1lO1xuIFx0ZHJ2LVx1MDAzZWRyaXZlci5idXMgPSBcdTAwMjZ1bHBpX2J1cztcbiBcbiBcdHJldHVybiBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHJ2LVx1MDAzZWRyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbmluZGV4IGY2MzAwNDQxNzA1OGU2Li5hYjgwOWNiNmRhMjY5YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcbkBAIC05ODAsOSAmIzQzOzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gfVxuIFxuIC8qKlxuLSAqIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyIC0gcmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXJcbiYjNDM7ICogX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4gICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXJcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cbiYjNDM7ICogQG1vZF9uYW1lOiBtb2R1bGUgbmFtZSBzdHJpbmdcbiAgKlxuICAqIFJlZ2lzdGVycyBhIFVTQiBkZXZpY2UgZHJpdmVyIHdpdGggdGhlIFVTQiBjb3JlLiAgVGhlIGxpc3Qgb2ZcbiAgKiB1bmF0dGFjaGVkIGRldmljZXMgd2lsbCBiZSByZXNjYW5uZWQgd2hlbmV2ZXIgYSBuZXcgZHJpdmVyIGlzXG5AQCAtOTkwLDggJiM0Mzs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gICpcbiAgKiBSZXR1cm46IEEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlIGFuZCAwIG9uIHN1Y2Nlc3MuXG4gICovXG4taW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXG4tXHRcdHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuJiM0MztpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuJiM0MztcdFx0c3RydWN0IG1vZHVsZSAqb3duZXIsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGludCByZXR2YWwgPSAwO1xuIFxuQEAgLTEwMDMsNiAmIzQzOzEwMDQsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5wcm9iZSA9IHVzYl9wcm9iZV9kZXZpY2U7XG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9kZXZpY2U7XG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbiYjNDM7XHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXHUwMDNlZGV2X2dyb3VwcztcbiBcbiBcdHJldHZhbCA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIpO1xuQEAgLTEwMjMsNyAmIzQzOzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcbiBcbiBcdHJldHVybiByZXR2YWw7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKTtcbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7XG4gXG4gLyoqXG4gICogdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHVucmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xuaW5kZXggZGYxNjZjYWZlMTA2MTkuLjI1NTlhMTgwZmRlZWM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xuQEAgLTEyNDEsNyAmIzQzOzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxuIFx0cmV0dmFsID0gdXNiX2h1Yl9pbml0KCk7XG4gXHRpZiAocmV0dmFsKVxuIFx0XHRnb3RvIGh1Yl9pbml0X2ZhaWxlZDtcbi1cdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuJiM0MztcdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlcik7XG4gXHRpZiAoIXJldHZhbClcbiBcdFx0Z290byBvdXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jIGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jXG5pbmRleCBhZjI2NmUxOWYyZmRjYi4uMDJhZGVjMjhkOWU2OTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xuQEAgLTI0NSw3ICYjNDM7MjQ1LDcgQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciBtZmlfZmNfZHJpdmVyID0ge1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IG1maV9mY19kcml2ZXJfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZtZmlfZmNfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm1maV9mY19kcml2ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbmluZGV4IDExNTA4ZWQ0ZGYyNTE2Li5jNjA0MDYyNDA0MTYyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbkBAIC03MDYsNyAmIzQzOzcwNiw3IEBAIHN0YXRpYyBpbnQgX19pbml0IG9uYm9hcmRfZGV2X2luaXQodm9pZClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2b25ib2FyZF9kZXZfdXNiZGV2X2RyaXZlciwgVEhJU19NT0RVTEUpO1xuJiM0MztcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm9uYm9hcmRfZGV2X3VzYmRldl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jXG5pbmRleCBlODRiMTM0YTMzODEzMy4uNTg3ZDNiMDZlZThkMmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcbkBAIC0zODMsMTIgJiM0MzszODMsMTQgQEAgdm9pZCB0eXBlY19hbHRtb2RlX3B1dF9wbHVnKHN0cnVjdCB0eXBlY19hbHRtb2RlICpwbHVnKVxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xuIFxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBjaGFyICptb2RfbmFtZSlcbiB7XG4gXHRpZiAoIWRydi1cdTAwM2Vwcm9iZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRkcnYtXHUwMDNlZHJpdmVyLm93bmVyID0gbW9kdWxlO1xuJiM0MztcdGRydi1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2dHlwZWNfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcbkBAIC0zNzEsNyAmIzQzOzM3MSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHVzYmlwX2hvc3RfaW5pdCh2b2lkKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbi1cdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnN0dWJfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4mIzQzO1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2c3R1Yl9kcml2ZXIpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7dXNiX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbiBcdFx0Z290byBlcnJfdXNiX3JlZ2lzdGVyO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaCBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxuaW5kZXggYzY2OGQ5YzhkODc2OTAuLmM4OTkxOTdlMGFhOGM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VscGkvZHJpdmVyLmhcbkBAIC01MSw4ICYjNDM7NTEsOCBAQCBzdHJ1Y3QgdWxwaV9kcml2ZXIge1xuIC8qXG4gICogdXNlIGEgbWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEVcbiAgKi9cbi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxuLWludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpO1xuJiM0MzsjZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbiYjNDM7aW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpO1xuIHZvaWQgdWxwaV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydik7XG4gXG4gI2RlZmluZSBtb2R1bGVfdWxwaV9kcml2ZXIoX191bHBpX2RyaXZlcikgXFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaFxuaW5kZXggMWRhNGFkMTYxMGJjYTAuLjY1MDdjMjE3YmNhNzlmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91c2IuaFxuQEAgLTEzNjgsOCAmIzQzOzEzNjgsMTAgQEAgZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXIoc3RydWN0IHVzYl9kcml2ZXIgKik7XG4gXHRtb2R1bGVfZHJpdmVyKF9fdXNiX2RyaXZlciwgdXNiX3JlZ2lzdGVyLCBcXFxuIFx0XHQgICAgICAgdXNiX2RlcmVnaXN0ZXIpXG4gXG4tZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKixcbi1cdFx0XHRzdHJ1Y3QgbW9kdWxlICopO1xuJiM0MzsjZGVmaW5lIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKG5ld191ZHJpdmVyKSBcXFxuJiM0MztcdF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbiYjNDM7ZXh0ZXJuIGludCBfX3VzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7XG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XG4gXG4gZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxuaW5kZXggZWYyMWVhZDU1MWJlNDUuLjkyMzA5YjU2OWMzYTA1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcbkBAIC0yMjcsOSAmIzQzOzIyNyw5IEBAIHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciB7XG4gICogaGFuZGxlIGFsbCBTVklEIHNwZWNpZmljIGNvbW11bmljYXRpb24uXG4gICovXG4gI2RlZmluZSB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYpIFxcXG4tXHRcdF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSlcbiYjNDM7XHRcdF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpXG4gaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsXG4tXHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gLyoqXG4gICogdHlwZWNfYWx0bW9kZV91bnJlZ2lzdGVyX2RyaXZlciAtIHVucmVnaXN0ZXJzIGEgVVNCIFR5cGUtQyBhbHRlcm5hdGUgbW9kZVxuICAqIFx0XHRcdFx0ICAgICBkZXZpY2UgZHJpdmVyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjM6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDVjZmE3ZDg3OTVhMzYyYjU3NTI2MGFlZmEzYjAyODBkOGIzMzEwMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDIzOjM3OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwppbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCkBAIC0xMDQ5NSw3ICYjNDM7MTA0OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBydGw4MTUyX2RyaXZlcl9pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlcik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuYyBiL2RyaXZlcnMvdXNiL2NvbW1vbi91bHBpLmMKaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvbW1vbi91bHBpLmMKQEAgLTE0NywxNSAmIzQzOzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7CiAgKiBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXMKICAqIEBkcnY6IGRyaXZlciBiZWluZyByZWdpc3RlcmVkCiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFCiYjNDM7ICogQG1vZF9uYW1lOiBlbmRzIHVwIGJlaW5nIEtCVUlMRF9NT0ROQU1FCiAgKgogICogUmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIFVMUEkgYnVzLgogICovCi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKQomIzQzO2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKQogewogCWlmICghZHJ2LSZndDtwcm9iZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkcnYtJmd0O2RyaXZlci5vd25lciA9IG1vZHVsZTsKJiM0MzsJZHJ2LSZndDtkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTsKIAlkcnYtJmd0O2RyaXZlci5idXMgPSAmYW1wO3VscGlfYnVzOwogCiAJcmV0dXJuIGRyaXZlcl9yZWdpc3RlcigmYW1wO2Rydi0mZ3Q7ZHJpdmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCmluZGV4IGY2MzAwNDQxNzA1OGU2Li5hYjgwOWNiNmRhMjY5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCkBAIC05ODAsOSAmIzQzOzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiB9CiAKIC8qKgotICogdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlcgomIzQzOyAqIF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlcgogICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXIKICAqIEBvd25lcjogbW9kdWxlIG93bmVyIG9mIHRoaXMgZHJpdmVyLgomIzQzOyAqIEBtb2RfbmFtZTogbW9kdWxlIG5hbWUgc3RyaW5nCiAgKgogICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZgogICogdW5hdHRhY2hlZCBkZXZpY2VzIHdpbGwgYmUgcmVzY2FubmVkIHdoZW5ldmVyIGEgbmV3IGRyaXZlciBpcwpAQCAtOTkwLDggJiM0Mzs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiAgKgogICogUmV0dXJuOiBBIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzLgogICovCi1pbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKLQkJc3RydWN0IG1vZHVsZSAqb3duZXIpCiYjNDM7aW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKJiM0MzsJCXN0cnVjdCBtb2R1bGUgKm93bmVyLCBjb25zdCBjaGFyICptb2RfbmFtZSkKIHsKIAlpbnQgcmV0dmFsID0gMDsKIApAQCAtMTAwMyw2ICYjNDM7MTAwNCw3IEBAIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLAogCW5ld191ZHJpdmVyLSZndDtkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlOwogCW5ld191ZHJpdmVyLSZndDtkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9kZXZpY2U7CiAJbmV3X3Vkcml2ZXItJmd0O2RyaXZlci5vd25lciA9IG93bmVyOwomIzQzOwluZXdfdWRyaXZlci0mZ3Q7ZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7CiAJbmV3X3Vkcml2ZXItJmd0O2RyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItJmd0O2Rldl9ncm91cHM7CiAKIAlyZXR2YWwgPSBkcml2ZXJfcmVnaXN0ZXIoJmFtcDtuZXdfdWRyaXZlci0mZ3Q7ZHJpdmVyKTsKQEAgLTEwMjMsNyAmIzQzOzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlciwKIAogCXJldHVybiByZXR2YWw7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTCh1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcik7CiAKIC8qKgogICogdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHVucmVnaXN0ZXIgYSBVU0IgZGV2aWNlIChub3QgaW50ZXJmYWNlKSBkcml2ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmMgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jCmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jCkBAIC0xMjQxLDcgJiM0MzsxMjQxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZCkKIAlyZXR2YWwgPSB1c2JfaHViX2luaXQoKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGh1Yl9pbml0X2ZhaWxlZDsKLQlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO3VzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpOwomIzQzOwlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO3VzYl9nZW5lcmljX2RyaXZlcik7CiAJaWYgKCFyZXR2YWwpCiAJCWdvdG8gb3V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMKaW5kZXggYWYyNjZlMTlmMmZkY2IuLjAyYWRlYzI4ZDllNjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jCkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHsKIAogc3RhdGljIGludCBfX2luaXQgbWZpX2ZjX2RyaXZlcl9pbml0KHZvaWQpCiB7Ci0JcmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpOwomIzQzOwlyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDttZmlfZmNfZHJpdmVyKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IG1maV9mY19kcml2ZXJfZXhpdCh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMKaW5kZXggMTE1MDhlZDRkZjI1MTYuLmM2MDQwNjI0MDQxNjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMKQEAgLTcwNiw3ICYjNDM7NzA2LDcgQEAgc3RhdGljIGludCBfX2luaXQgb25ib2FyZF9kZXZfaW5pdCh2b2lkKQogewogCWludCByZXQ7CiAKLQlyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcigmYW1wO29uYm9hcmRfZGV2X3VzYmRldl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9idXMuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jCmluZGV4IGU4NGIxMzRhMzM4MTMzLi41ODdkM2IwNmVlOGQyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMKQEAgLTM4MywxMiAmIzQzOzM4MywxNCBAQCB2b2lkIHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcoc3RydWN0IHR5cGVjX2FsdG1vZGUgKnBsdWcpCiBFWFBPUlRfU1lNQk9MX0dQTCh0eXBlY19hbHRtb2RlX3B1dF9wbHVnKTsKIAogaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsCi0JCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSkKJiM0MzsJCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwKJiM0MzsJCQkJICAgIGNvbnN0IGNoYXIgKm1vZF9uYW1lKQogewogCWlmICghZHJ2LSZndDtwcm9iZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkcnYtJmd0O2RyaXZlci5vd25lciA9IG1vZHVsZTsKJiM0MzsJZHJ2LSZndDtkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTsKIAlkcnYtJmd0O2RyaXZlci5idXMgPSAmYW1wO3R5cGVjX2J1czsKIAogCXJldHVybiBkcml2ZXJfcmVnaXN0ZXIoJmFtcDtkcnYtJmd0O2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jCmluZGV4IDc5MTEwYTY5ZDY5N2MxLi4wMTQ1MmY3YmRhYmJkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmMKQEAgLTM3MSw3ICYjNDM7MzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAotCXJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKCZhbXA7c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTsKJiM0MzsJcmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoJmFtcDtzdHViX2RyaXZlcik7CiAJaWYgKHJldCkgewogCQlwcl9lcnIoJiMzNDt1c2JfcmVnaXN0ZXIgZmFpbGVkICVkXG4mIzM0OywgcmV0KTsKIAkJZ290byBlcnJfdXNiX3JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oCmluZGV4IGM2NjhkOWM4ZDg3NjkwLi5jODk5MTk3ZTBhYThjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaApAQCAtNTEsOCAmIzQzOzUxLDggQEAgc3RydWN0IHVscGlfZHJpdmVyIHsKIC8qCiAgKiB1c2UgYSBtYWNybyB0byBhdm9pZCBpbmNsdWRlIGNoYWluaW5nIHRvIGdldCBUSElTX01PRFVMRQogICovCi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKQotaW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7CiYjNDM7I2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpCiYjNDM7aW50IF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVscGlfZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpOwogdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTsKIAogI2RlZmluZSBtb2R1bGVfdWxwaV9kcml2ZXIoX191bHBpX2RyaXZlcikgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmgKaW5kZXggMWRhNGFkMTYxMGJjYTAuLjY1MDdjMjE3YmNhNzlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiLmgKQEAgLTEzNjgsOCAmIzQzOzEzNjgsMTAgQEAgZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXIoc3RydWN0IHVzYl9kcml2ZXIgKik7CiAJbW9kdWxlX2RyaXZlcihfX3VzYl9kcml2ZXIsIHVzYl9yZWdpc3RlciwgXAogCQkgICAgICAgdXNiX2RlcmVnaXN0ZXIpCiAKLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosCi0JCQlzdHJ1Y3QgbW9kdWxlICopOwomIzQzOyNkZWZpbmUgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIpIFwKJiM0MzsJX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKQomIzQzO2V4dGVybiBpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKiwKJiM0MzsJCQlzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdm9pZCB1c2JfZGVyZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqKTsKIAogZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oIGIvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oCmluZGV4IGVmMjFlYWQ1NTFiZTQ1Li45MjMwOWI1NjljM2EwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaApAQCAtMjI3LDkgJiM0MzsyMjcsOSBAQCBzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgewogICogaGFuZGxlIGFsbCBTVklEIHNwZWNpZmljIGNvbW11bmljYXRpb24uCiAgKi8KICNkZWZpbmUgdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2KSBcCi0JCV9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSkKJiM0MzsJCV9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpCiBpbnQgX190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgKmRydiwKLQkJCQkgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTsKJiM0MzsJCQkJICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqbW9kX25hbWUpOwogLyoqCiAgKiB0eXBlY19hbHRtb2RlX3VucmVnaXN0ZXJfZHJpdmVyIC0gdW5yZWdpc3RlcnMgYSBVU0IgVHlwZS1DIGFsdGVybmF0ZSBtb2RlCiAgKiAJCQkJICAgICBkZXZpY2UgZHJpdmVyCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjEKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogVVNCL1VMUEkvVHlwZS1DIERyaXZlciBSZWdpc3RyYXRpb24gUmVmYWN0b3IqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyB0aGUgVVNCLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGEgcmVmYWN0b3IsIHNwZWNpZmljYWxseSBhZGRpbmcgYEtCVUlMRF9NT0ROQU1FYCB0byB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBjYWxscywgYXNzaWduaW5nIGl0IHRvIGBkcnYtJmd0O2RyaXZlci5tb2RfbmFtZWAuIFRoZSBnb2FsIGlzIHRvIHN0YW5kYXJkaXplIG1vZHVsZSBuYW1lIGhhbmRsaW5nLCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBkcml2ZXIgc3Vic3lzdGVtcyB3b3JrLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgbmV3ICpmdXp6YWJsZSogY29kZSBwYXRocy4gVGhlIGNoYW5nZXMgc2VlbSBwdXJlbHkgc3RydWN0dXJhbC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYW4gQVBJIGFkanVzdG1lbnQg4oCTIHBhc3NpbmcgYEtCVUlMRF9NT0ROQU1FYCB0byBgZHJpdmVyX3JlZ2lzdGVyYCB0aHJvdWdoIGBkcnYtJmd0O2RyaXZlci5tb2RfbmFtZWAuIEl0IGFwcGVhcnMgdGhpcyBtb2RpZmllcyBhIHN0cmluZyBmaWVsZCBpbiBgc3RydWN0IGRldmljZV9kcml2ZXJgLiBJIGNvbmZpcm1lZCB0aGF0IGBzdHJ1Y3QgZGV2aWNlX2RyaXZlcmAgKmRvZXMqIGNvbnRhaW4gYG1vZF9uYW1lYCwgYXMgZXhwZWN0ZWQuCgpUaGlzIGxvb2tzIGxpa2UgYSBib2lsZXJwbGF0ZSByZWR1Y3Rpb24sIG9yIHBlcmhhcHMgYW4gaW1wcm92ZW1lbnQgaW4gbW9kdWxlIG5hbWUgdHJhY2tpbmcuIEl0JiMzOTtzIG5vdCBhZGRpbmcgYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZnV6emVkLiBJdCBpcyBqdXN0IHBvcHVsYXRpbmcgYSBzdHJpbmcgcG9pbnRlci4gU28sIGJhc2VkIG9uIG15IGluaXRpYWwgYW5hbHlzaXMsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGJlIHN1cmUuIEFscmlnaHQsIEkmIzM5O20gc2VlaW5nIHRoYXQgYHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyYCwgYHVscGlfcmVnaXN0ZXJfZHJpdmVyYCwgYW5kIGB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcmAgYXJlIG5vdyBtYWNyb3MgdGhhdCBjYWxsIGludGVybmFsIGZ1bmN0aW9ucyB3aXRoIGBUSElTX01PRFVMRWAgYW5kIGBLQlVJTERfTU9ETkFNRWAuIEFueSBkcml2ZXJzIHVzaW5nIHRoZSBvbGQgZnVuY3Rpb25zIGFyZSBub3cgdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBtYWNyb3Mgd2l0aG91dCBgVEhJU19NT0RVTEVgLiBJdCYjMzk7cyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UsIG5vIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGhlcmUgdG8gdGVzdC4KClRoZXJlZm9yZSwgYWZ0ZXIgdGhpcyByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjM6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UgdGhhdCB1cGRhdGVzIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zIChVU0IgZGV2aWNlLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUpIHRvIGF1dG9tYXRpY2FsbHkgcGFzcyBLQlVJTERfTU9ETkFNRSBhbmQgYXNzaWduIGl0IHRvIHRoZSBkcml2ZXImIzM5O3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlciYjMzk7cyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA0LjQzNjY4OTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxODU3MzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCBBUEkgY2hhbmdlIHRoYXQgdXBkYXRlcyBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyAoVVNCIGRldmljZSwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlKSB0byBhdXRvbWF0aWNhbGx5IHBhc3MgS0JVSUxEX01PRE5BTUUgYW5kIGFzc2lnbiBpdCB0byB0aGUgZHJpdmVyJ3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA0LjQzNjY5NTYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDM5NTE4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNWNmYTdkODc5NWEzNjJiNTc1MjYwYWVmYTNiMDI4MGQ4YjMzMTAwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDIzOjM3OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG5pbmRleCBmNjE2ODY0MzMwMzFjNy4uNzNiOWIyYWYxZWQyMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xcbkBAIC0xMDQ5NSw3ICsxMDQ5NSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJ0bDgxNTJfZHJpdmVyX2luaXQodm9pZClcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnJ0bDgxNTJfY2Znc2VsZWN0b3JfZHJpdmVyLCBUSElTX01PRFVMRSk7XFxuK1xcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlcik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xcbmluZGV4IDdlNDM0MjllOTk2ZTdhLi5kZWM0YmFjYTFjNTNkMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jXFxuKysrIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xcbkBAIC0xNDcsMTUgKzE0NywxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHVscGlfZGV2X3R5cGUgPSB7XFxuICAqIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGRyaXZlciB3aXRoIHRoZSBVTFBJIGJ1c1xcbiAgKiBAZHJ2OiBkcml2ZXIgYmVpbmcgcmVnaXN0ZXJlZFxcbiAgKiBAbW9kdWxlOiBlbmRzIHVwIGJlaW5nIFRISVNfTU9EVUxFXFxuKyAqIEBtb2RfbmFtZTogZW5kcyB1cCBiZWluZyBLQlVJTERfTU9ETkFNRVxcbiAgKlxcbiAgKiBSZWdpc3RlcnMgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXMuXFxuICAqL1xcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxcbitpbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSlcXG4ge1xcbiBcXHRpZiAoIWRydi1cXHUwMDNlcHJvYmUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XFxuK1xcdGRydi1cXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XFxuIFxcdGRydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZ1bHBpX2J1cztcXG4gXFxuIFxcdHJldHVybiBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRydi1cXHUwMDNlZHJpdmVyKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYWI4MDljYjZkYTI2OWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5AQCAtOTgwLDkgKzk4MCwxMCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXFxuKyAqIF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSByZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlclxcbiAgKiBAbmV3X3Vkcml2ZXI6IFVTQiBvcGVyYXRpb25zIGZvciB0aGUgZGV2aWNlIGRyaXZlclxcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cXG4rICogQG1vZF9uYW1lOiBtb2R1bGUgbmFtZSBzdHJpbmdcXG4gICpcXG4gICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZlxcbiAgKiB1bmF0dGFjaGVkIGRldmljZXMgd2lsbCBiZSByZXNjYW5uZWQgd2hlbmV2ZXIgYSBuZXcgZHJpdmVyIGlzXFxuQEAgLTk5MCw4ICs5OTEsOCBAQCBib29sIGlzX3VzYl9kZXZpY2VfZHJpdmVyKGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuICAqXFxuICAqIFJldHVybjogQSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUgYW5kIDAgb24gc3VjY2Vzcy5cXG4gICovXFxuLWludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxcbi1cXHRcXHRzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4raW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcXG4rXFx0XFx0c3RydWN0IG1vZHVsZSAqb3duZXIsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxcbiB7XFxuIFxcdGludCByZXR2YWwgPSAwO1xcbiBcXG5AQCAtMTAwMyw2ICsxMDA0LDcgQEAgaW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXFxuIFxcdG5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlO1xcbiBcXHRuZXdfdWRyaXZlci1cXHUwMDNlZHJpdmVyLnJlbW92ZSA9IHVzYl91bmJpbmRfZGV2aWNlO1xcbiBcXHRuZXdfdWRyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuK1xcdG5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcXG4gXFx0bmV3X3Vkcml2ZXItXFx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXFx1MDAzZWRldl9ncm91cHM7XFxuIFxcbiBcXHRyZXR2YWwgPSBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm5ld191ZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbkBAIC0xMDIzLDcgKzEwMjUsNyBAQCBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICpuZXdfdWRyaXZlcixcXG4gXFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwodXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xcbitFWFBPUlRfU1lNQk9MX0dQTChfX3VzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKTtcXG4gXFxuIC8qKlxcbiAgKiB1c2JfZGVyZWdpc3Rlcl9kZXZpY2VfZHJpdmVyIC0gdW5yZWdpc3RlciBhIFVTQiBkZXZpY2UgKG5vdCBpbnRlcmZhY2UpIGRyaXZlclxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xcbmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jXFxuKysrIGIvZHJpdmVycy91c2IvY29yZS91c2IuY1xcbkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxcbiBcXHRyZXR2YWwgPSB1c2JfaHViX2luaXQoKTtcXG4gXFx0aWYgKHJldHZhbClcXG4gXFx0XFx0Z290byBodWJfaW5pdF9mYWlsZWQ7XFxuLVxcdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZ1c2JfZ2VuZXJpY19kcml2ZXIsIFRISVNfTU9EVUxFKTtcXG4rXFx0cmV0dmFsID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlcik7XFxuIFxcdGlmICghcmV0dmFsKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuYyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xcbmluZGV4IGFmMjY2ZTE5ZjJmZGNiLi4wMmFkZWMyOGQ5ZTY5MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcXG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgX19pbml0IG1maV9mY19kcml2ZXJfaW5pdCh2b2lkKVxcbiB7XFxuLVxcdHJldHVybiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcXHUwMDI2bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpO1xcbitcXHRyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNm1maV9mY19kcml2ZXIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmMgYi9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jXFxuaW5kZXggMTE1MDhlZDRkZjI1MTYuLmM2MDQwNjI0MDQxNjJlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jXFxuQEAgLTcwNiw3ICs3MDYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBvbmJvYXJkX2Rldl9pbml0KHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyLCBUSElTX01PRFVMRSk7XFxuK1xcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFxcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jIGIvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcXG5pbmRleCBlODRiMTM0YTMzODEzMy4uNTg3ZDNiMDZlZThkMmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xcbkBAIC0zODMsMTIgKzM4MywxNCBAQCB2b2lkIHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcoc3RydWN0IHR5cGVjX2FsdG1vZGUgKnBsdWcpXFxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xcbiBcXG4gaW50IF9fdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyICpkcnYsXFxuLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUpXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICptb2RfbmFtZSlcXG4ge1xcbiBcXHRpZiAoIWRydi1cXHUwMDNlcHJvYmUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XFxuK1xcdGRydi1cXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XFxuIFxcdGRydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZ0eXBlY19idXM7XFxuIFxcbiBcXHRyZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkcnYtXFx1MDAzZWRyaXZlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jIGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xcbkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcXHUwMDI2c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTtcXG4rXFx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXFx1MDAyNnN0dWJfZHJpdmVyKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRwcl9lcnIoXFxcInVzYl9yZWdpc3RlciBmYWlsZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuIFxcdFxcdGdvdG8gZXJyX3VzYl9yZWdpc3RlcjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXFxuaW5kZXggYzY2OGQ5YzhkODc2OTAuLmM4OTkxOTdlMGFhOGM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxcbkBAIC01MSw4ICs1MSw4IEBAIHN0cnVjdCB1bHBpX2RyaXZlciB7XFxuIC8qXFxuICAqIHVzZSBhIG1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFXFxuICAqL1xcbi0jZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcXG4rI2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSwgS0JVSUxEX01PRE5BTUUpXFxuK2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKTtcXG4gdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTtcXG4gXFxuICNkZWZpbmUgbW9kdWxlX3VscGlfZHJpdmVyKF9fdWxwaV9kcml2ZXIpIFxcXFxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNjUwN2MyMTdiY2E3OWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5AQCAtMTM2OCw4ICsxMzY4LDEwIEBAIGV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyKHN0cnVjdCB1c2JfZHJpdmVyICopO1xcbiBcXHRtb2R1bGVfZHJpdmVyKF9fdXNiX2RyaXZlciwgdXNiX3JlZ2lzdGVyLCBcXFxcXFxuIFxcdFxcdCAgICAgICB1c2JfZGVyZWdpc3RlcilcXG4gXFxuLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXFxuLVxcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKik7XFxuKyNkZWZpbmUgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIobmV3X3Vkcml2ZXIpIFxcXFxcXG4rXFx0X191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxcbitleHRlcm4gaW50IF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXFxuK1xcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKiwgY29uc3QgY2hhciAqKTtcXG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XFxuIFxcbiBleHRlcm4gaW50IHVzYl9yZWdpc3Rlcl9kZXYoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxcbmluZGV4IGVmMjFlYWQ1NTFiZTQ1Li45MjMwOWI1NjljM2EwNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcXG5AQCAtMjI3LDkgKzIyNyw5IEBAIHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciB7XFxuICAqIGhhbmRsZSBhbGwgU1ZJRCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uLlxcbiAgKi9cXG4gI2RlZmluZSB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYpIFxcXFxcXG4tXFx0XFx0X190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxcbitcXHRcXHRfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydiwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxcbiBpbnQgX190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kcml2ZXIgKmRydixcXG4tXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7XFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKTtcXG4gLyoqXFxuICAqIHR5cGVjX2FsdG1vZGVfdW5yZWdpc3Rlcl9kcml2ZXIgLSB1bnJlZ2lzdGVycyBhIFVTQiBUeXBlLUMgYWx0ZXJuYXRlIG1vZGVcXG4gICogXFx0XFx0XFx0XFx0ICAgICBkZXZpY2UgZHJpdmVyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIzOjM3OjA1LjA4MTQxNTc4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgxNzM4Mzk0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgQVBJIGNoYW5nZSB0aGF0IHVwZGF0ZXMgZHJpdmVyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgKFVTQiBkZXZpY2UsIFVMUEksIGFuZCBUeXBlLUMgYWx0bW9kZSkgdG8gYXV0b21hdGljYWxseSBwYXNzIEtCVUlMRF9NT0ROQU1FIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGRyaXZlcidzIG1vZF9uYW1lIGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA1Y2ZhN2Q4Nzk1YTM2MmI1NzUyNjBhZWZhM2IwMjgwZDhiMzMxMDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMzozNzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li43M2I5YjJhZjFlZDIyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTEwNDk1LDcgKzEwNDk1LDcgQEAgc3RhdGljIGludCBfX2luaXQgcnRsODE1Ml9kcml2ZXJfaW5pdCh2b2lkKVxuIHtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZydGw4MTUyX2NmZ3NlbGVjdG9yX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2cnRsODE1Ml9jZmdzZWxlY3Rvcl9kcml2ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb21tb24vdWxwaS5jIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuaW5kZXggN2U0MzQyOWU5OTZlN2EuLmRlYzRiYWNhMWM1M2QyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuKysrIGIvZHJpdmVycy91c2IvY29tbW9uL3VscGkuY1xuQEAgLTE0NywxNSArMTQ3LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgdWxwaV9kZXZfdHlwZSA9IHtcbiAgKiBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCB0aGUgVUxQSSBidXNcbiAgKiBAZHJ2OiBkcml2ZXIgYmVpbmcgcmVnaXN0ZXJlZFxuICAqIEBtb2R1bGU6IGVuZHMgdXAgYmVpbmcgVEhJU19NT0RVTEVcbisgKiBAbW9kX25hbWU6IGVuZHMgdXAgYmVpbmcgS0JVSUxEX01PRE5BTUVcbiAgKlxuICAqIFJlZ2lzdGVycyBhIGRyaXZlciB3aXRoIHRoZSBVTFBJIGJ1cy5cbiAgKi9cbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxuK2ludCBfX3VscGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKm1vZF9uYW1lKVxuIHtcbiBcdGlmICghZHJ2LVx1MDAzZXByb2JlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGRydi1cdTAwM2Vkcml2ZXIub3duZXIgPSBtb2R1bGU7XG4rXHRkcnYtXHUwMDNlZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7XG4gXHRkcnYtXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNnVscGlfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmFiODA5Y2I2ZGEyNjlhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuKysrIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuQEAgLTk4MCw5ICs5ODAsMTAgQEAgYm9vbCBpc191c2JfZGV2aWNlX2RyaXZlcihjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIH1cbiBcbiAvKipcbi0gKiB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4rICogX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlciAtIHJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG4gICogQG5ld191ZHJpdmVyOiBVU0Igb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZSBkcml2ZXJcbiAgKiBAb3duZXI6IG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci5cbisgKiBAbW9kX25hbWU6IG1vZHVsZSBuYW1lIHN0cmluZ1xuICAqXG4gICogUmVnaXN0ZXJzIGEgVVNCIGRldmljZSBkcml2ZXIgd2l0aCB0aGUgVVNCIGNvcmUuICBUaGUgbGlzdCBvZlxuICAqIHVuYXR0YWNoZWQgZGV2aWNlcyB3aWxsIGJlIHJlc2Nhbm5lZCB3aGVuZXZlciBhIG5ldyBkcml2ZXIgaXNcbkBAIC05OTAsOCArOTkxLDggQEAgYm9vbCBpc191c2JfZGV2aWNlX2RyaXZlcihjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuICAqXG4gICogUmV0dXJuOiBBIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzLlxuICAqL1xuLWludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuLVx0XHRzdHJ1Y3QgbW9kdWxlICpvd25lcilcbitpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuK1x0XHRzdHJ1Y3QgbW9kdWxlICpvd25lciwgY29uc3QgY2hhciAqbW9kX25hbWUpXG4ge1xuIFx0aW50IHJldHZhbCA9IDA7XG4gXG5AQCAtMTAwMyw2ICsxMDA0LDcgQEAgaW50IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKHN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciAqbmV3X3Vkcml2ZXIsXG4gXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfZGV2aWNlO1xuIFx0bmV3X3Vkcml2ZXItXHUwMDNlZHJpdmVyLnJlbW92ZSA9IHVzYl91bmJpbmRfZGV2aWNlO1xuIFx0bmV3X3Vkcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG4rXHRuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdG5ld191ZHJpdmVyLVx1MDAzZWRyaXZlci5kZXZfZ3JvdXBzID0gbmV3X3Vkcml2ZXItXHUwMDNlZGV2X2dyb3VwcztcbiBcbiBcdHJldHZhbCA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuZXdfdWRyaXZlci1cdTAwM2Vkcml2ZXIpO1xuQEAgLTEwMjMsNyArMTAyNSw3IEBAIGludCB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKm5ld191ZHJpdmVyLFxuIFxuIFx0cmV0dXJuIHJldHZhbDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xuK0VYUE9SVF9TWU1CT0xfR1BMKF9fdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIpO1xuIFxuIC8qKlxuICAqIHVzYl9kZXJlZ2lzdGVyX2RldmljZV9kcml2ZXIgLSB1bnJlZ2lzdGVyIGEgVVNCIGRldmljZSAobm90IGludGVyZmFjZSkgZHJpdmVyXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS91c2IuYyBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbmluZGV4IGRmMTY2Y2FmZTEwNjE5Li4yNTU5YTE4MGZkZWVjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmNcbkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxuIFx0cmV0dmFsID0gdXNiX2h1Yl9pbml0KCk7XG4gXHRpZiAocmV0dmFsKVxuIFx0XHRnb3RvIGh1Yl9pbml0X2ZhaWxlZDtcbi1cdHJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnVzYl9nZW5lcmljX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0dmFsID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2dXNiX2dlbmVyaWNfZHJpdmVyKTtcbiBcdGlmICghcmV0dmFsKVxuIFx0XHRnb3RvIG91dDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmMgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlLW1maS1mYXN0Y2hhcmdlLmNcbmluZGV4IGFmMjY2ZTE5ZjJmZGNiLi4wMmFkZWMyOGQ5ZTY5MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZpLWZhc3RjaGFyZ2UuY1xuKysrIGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZS1tZmktZmFzdGNoYXJnZS5jXG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgbWZpX2ZjX2RyaXZlciA9IHtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBtZmlfZmNfZHJpdmVyX2luaXQodm9pZClcbiB7XG4tXHRyZXR1cm4gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2bWZpX2ZjX2RyaXZlciwgVEhJU19NT0RVTEUpO1xuK1x0cmV0dXJuIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNm1maV9mY19kcml2ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBfX2V4aXQgbWZpX2ZjX2RyaXZlcl9leGl0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9kZXYuYyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbmluZGV4IDExNTA4ZWQ0ZGYyNTE2Li5jNjA0MDYyNDA0MTYyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbisrKyBiL2RyaXZlcnMvdXNiL21pc2Mvb25ib2FyZF91c2JfZGV2LmNcbkBAIC03MDYsNyArNzA2LDcgQEAgc3RhdGljIGludCBfX2luaXQgb25ib2FyZF9kZXZfaW5pdCh2b2lkKVxuIHtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyLCBUSElTX01PRFVMRSk7XG4rXHRyZXQgPSB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihcdTAwMjZvbmJvYXJkX2Rldl91c2JkZXZfZHJpdmVyKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9idXMuY1xuaW5kZXggZTg0YjEzNGEzMzgxMzMuLjU4N2QzYjA2ZWU4ZDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYnVzLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL2J1cy5jXG5AQCAtMzgzLDEyICszODMsMTQgQEAgdm9pZCB0eXBlY19hbHRtb2RlX3B1dF9wbHVnKHN0cnVjdCB0eXBlY19hbHRtb2RlICpwbHVnKVxuIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX2FsdG1vZGVfcHV0X3BsdWcpO1xuIFxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsXG4rXHRcdFx0XHQgICAgY29uc3QgY2hhciAqbW9kX25hbWUpXG4ge1xuIFx0aWYgKCFkcnYtXHUwMDNlcHJvYmUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0ZHJ2LVx1MDAzZWRyaXZlci5vd25lciA9IG1vZHVsZTtcbitcdGRydi1cdTAwM2Vkcml2ZXIubW9kX25hbWUgPSBtb2RfbmFtZTtcbiBcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2dHlwZWNfYnVzO1xuIFxuIFx0cmV0dXJuIGRyaXZlcl9yZWdpc3RlcihcdTAwMjZkcnYtXHUwMDNlZHJpdmVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvdXNiL3VzYmlwL3N0dWJfbWFpbi5jXG5pbmRleCA3OTExMGE2OWQ2OTdjMS4uMDE0NTJmN2JkYWJiZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi91c2JpcC9zdHViX21haW4uY1xuKysrIGIvZHJpdmVycy91c2IvdXNiaXAvc3R1Yl9tYWluLmNcbkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdXNiaXBfaG9zdF9pbml0KHZvaWQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFxuLVx0cmV0ID0gdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoXHUwMDI2c3R1Yl9kcml2ZXIsIFRISVNfTU9EVUxFKTtcbitcdHJldCA9IHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKFx1MDAyNnN0dWJfZHJpdmVyKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0cHJfZXJyKFwidXNiX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwiLCByZXQpO1xuIFx0XHRnb3RvIGVycl91c2JfcmVnaXN0ZXI7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oIGIvaW5jbHVkZS9saW51eC91bHBpL2RyaXZlci5oXG5pbmRleCBjNjY4ZDljOGQ4NzY5MC4uYzg5OTE5N2UwYWE4YzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VscGkvZHJpdmVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvdWxwaS9kcml2ZXIuaFxuQEAgLTUxLDggKzUxLDggQEAgc3RydWN0IHVscGlfZHJpdmVyIHtcbiAvKlxuICAqIHVzZSBhIG1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFXG4gICovXG4tI2RlZmluZSB1bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYpIF9fdWxwaV9yZWdpc3Rlcl9kcml2ZXIoZHJ2LCBUSElTX01PRFVMRSlcbi1pbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKTtcbisjZGVmaW5lIHVscGlfcmVnaXN0ZXJfZHJpdmVyKGRydikgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFLCBLQlVJTERfTU9ETkFNRSlcbitpbnQgX191bHBpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdWxwaV9kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gdm9pZCB1bHBpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1bHBpX2RyaXZlciAqZHJ2KTtcbiBcbiAjZGVmaW5lIG1vZHVsZV91bHBpX2RyaXZlcihfX3VscGlfZHJpdmVyKSBcXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNjUwN2MyMTdiY2E3OWYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5AQCAtMTM2OCw4ICsxMzY4LDEwIEBAIGV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyKHN0cnVjdCB1c2JfZHJpdmVyICopO1xuIFx0bW9kdWxlX2RyaXZlcihfX3VzYl9kcml2ZXIsIHVzYl9yZWdpc3RlciwgXFxcbiBcdFx0ICAgICAgIHVzYl9kZXJlZ2lzdGVyKVxuIFxuLWV4dGVybiBpbnQgdXNiX3JlZ2lzdGVyX2RldmljZV9kcml2ZXIoc3RydWN0IHVzYl9kZXZpY2VfZHJpdmVyICosXG4tXHRcdFx0c3RydWN0IG1vZHVsZSAqKTtcbisjZGVmaW5lIHVzYl9yZWdpc3Rlcl9kZXZpY2VfZHJpdmVyKG5ld191ZHJpdmVyKSBcXFxuK1x0X191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihuZXdfdWRyaXZlciwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxuK2V4dGVybiBpbnQgX191c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKixcbitcdFx0XHRzdHJ1Y3QgbW9kdWxlICosIGNvbnN0IGNoYXIgKik7XG4gZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcihzdHJ1Y3QgdXNiX2RldmljZV9kcml2ZXIgKik7XG4gXG4gZXh0ZXJuIGludCB1c2JfcmVnaXN0ZXJfZGV2KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjX2FsdG1vZGUuaFxuaW5kZXggZWYyMWVhZDU1MWJlNDUuLjkyMzA5YjU2OWMzYTA1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmhcbkBAIC0yMjcsOSArMjI3LDkgQEAgc3RydWN0IHR5cGVjX2FsdG1vZGVfZHJpdmVyIHtcbiAgKiBoYW5kbGUgYWxsIFNWSUQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbi5cbiAgKi9cbiAjZGVmaW5lIHR5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydikgXFxcbi1cdFx0X190eXBlY19hbHRtb2RlX3JlZ2lzdGVyX2RyaXZlcihkcnYsIFRISVNfTU9EVUxFKVxuK1x0XHRfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKGRydiwgVEhJU19NT0RVTEUsIEtCVUlMRF9NT0ROQU1FKVxuIGludCBfX3R5cGVjX2FsdG1vZGVfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0eXBlY19hbHRtb2RlX2RyaXZlciAqZHJ2LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSk7XG4rXHRcdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLCBjb25zdCBjaGFyICptb2RfbmFtZSk7XG4gLyoqXG4gICogdHlwZWNfYWx0bW9kZV91bnJlZ2lzdGVyX2RyaXZlciAtIHVucmVnaXN0ZXJzIGEgVVNCIFR5cGUtQyBhbHRlcm5hdGUgbW9kZVxuICAqIFx0XHRcdFx0ICAgICBkZXZpY2UgZHJpdmVyXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMzozNzowNS4wODE0MTc2NTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTczNzc2MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IFVTQi9VTFBJL1R5cGUtQyBEcml2ZXIgUmVnaXN0cmF0aW9uIFJlZmFjdG9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgdGhlIFVTQiwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBhIHJlZmFjdG9yLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGBLQlVJTERfTU9ETkFNRWAgdG8gdGhlIGRyaXZlciByZWdpc3RyYXRpb24gY2FsbHMsIGFzc2lnbmluZyBpdCB0byBgZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZWAuIFRoZSBnb2FsIGlzIHRvIHN0YW5kYXJkaXplIG1vZHVsZSBuYW1lIGhhbmRsaW5nLCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBkcml2ZXIgc3Vic3lzdGVtcyB3b3JrLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSBuZXcgKmZ1enphYmxlKiBjb2RlIHBhdGhzLiBUaGUgY2hhbmdlcyBzZWVtIHB1cmVseSBzdHJ1Y3R1cmFsLiBXZSdyZSB0YWxraW5nIGFib3V0IGFuIEFQSSBhZGp1c3RtZW50IOKAkyBwYXNzaW5nIGBLQlVJTERfTU9ETkFNRWAgdG8gYGRyaXZlcl9yZWdpc3RlcmAgdGhyb3VnaCBgZHJ2LVx1MDAzZWRyaXZlci5tb2RfbmFtZWAuIEl0IGFwcGVhcnMgdGhpcyBtb2RpZmllcyBhIHN0cmluZyBmaWVsZCBpbiBgc3RydWN0IGRldmljZV9kcml2ZXJgLiBJIGNvbmZpcm1lZCB0aGF0IGBzdHJ1Y3QgZGV2aWNlX2RyaXZlcmAgKmRvZXMqIGNvbnRhaW4gYG1vZF9uYW1lYCwgYXMgZXhwZWN0ZWQuXG5cblRoaXMgbG9va3MgbGlrZSBhIGJvaWxlcnBsYXRlIHJlZHVjdGlvbiwgb3IgcGVyaGFwcyBhbiBpbXByb3ZlbWVudCBpbiBtb2R1bGUgbmFtZSB0cmFja2luZy4gSXQncyBub3QgYWRkaW5nIGFueSBuZXcgZXhlY3V0YWJsZSBsb2dpYyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZ1enplZC4gSXQgaXMganVzdCBwb3B1bGF0aW5nIGEgc3RyaW5nIHBvaW50ZXIuIFNvLCBiYXNlZCBvbiBteSBpbml0aWFsIGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSSB3YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSdtIHNlZWluZyB0aGF0IGB1c2JfcmVnaXN0ZXJfZGV2aWNlX2RyaXZlcmAsIGB1bHBpX3JlZ2lzdGVyX2RyaXZlcmAsIGFuZCBgdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9kcml2ZXJgIGFyZSBub3cgbWFjcm9zIHRoYXQgY2FsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aCBgVEhJU19NT0RVTEVgIGFuZCBgS0JVSUxEX01PRE5BTUVgLiBBbnkgZHJpdmVycyB1c2luZyB0aGUgb2xkIGZ1bmN0aW9ucyBhcmUgbm93IHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgbWFjcm9zIHdpdGhvdXQgYFRISVNfTU9EVUxFYC4gSXQncyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UsIG5vIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGhlcmUgdG8gdGVzdC5cblxuVGhlcmVmb3JlLCBhZnRlciB0aGlzIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODIxLCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjM6Mzc6MTMuMjU1MTk2NjI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIEFQSSBjaGFuZ2UgdGhhdCB1cGRhdGVzIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zIChVU0IgZGV2aWNlLCBVTFBJLCBhbmQgVHlwZS1DIGFsdG1vZGUpIHRvIGF1dG9tYXRpY2FsbHkgcGFzcyBLQlVJTERfTU9ETkFNRSBhbmQgYXNzaWduIGl0IHRvIHRoZSBkcml2ZXIncyBtb2RfbmFtZSBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCBBUEkgY2hhbmdlIHRoYXQgdXBkYXRlcyBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyAoVVNCIGRldmljZSwgVUxQSSwgYW5kIFR5cGUtQyBhbHRtb2RlKSB0byBhdXRvbWF0aWNhbGx5IHBhc3MgS0JVSUxEX01PRE5BTUUgYW5kIGFzc2lnbiBpdCB0byB0aGUgZHJpdmVyJ3MgbW9kX25hbWUgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowllhdv[1] Phase: Running StartedAt: 2026-07-22 23:37:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllhdv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-22 23:37:24 +0000 UTC FinishedAt: 2026-07-22 23:37:31 +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,}