Name: series-workflownqhvg Phase: Failed StartedAt: 2026-09-10 12:42:45 +0000 UTC FinishedAt: 2026-09-10 13:35:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflownqhvg[0] Phase: Succeeded StartedAt: 2026-09-10 12:42:45 +0000 UTC FinishedAt: 2026-09-10 13:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflownqhvg[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 12:42:45 +0000 UTC FinishedAt: 2026-09-10 13:35:46 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyMmVjNWM2MGE2NzM3YzQ0MGY5YWE5MjgxNjA1MjNhY2I5NzJhN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5pbmRleCAzMjNhNjY5ZmE5ODIzLi5mZWM0MmY0NjM3OGFjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEAgc2VsZWN0OlxuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW44aS12M3MtZW1hY1xuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuJiM0MzsgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuICAgcmVxdWlyZWQ6XG4gICAgIC0gY29tcGF0aWJsZVxuIFxuQEAgLTQ0LDI1ICYjNDM7NDUsMzggQEAgcHJvcGVydGllczpcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXG4mIzQzOyAgICAgIC0gaXRlbXM6XG4mIzQzOyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuJiM0MzsgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG4tICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICBtaW5JdGVtczogMVxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBHbHVlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzXG4gXG4gICBpbnRlcnJ1cHRzOlxuLSAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiA0XG4gXG4gICBpbnRlcnJ1cHQtbmFtZXM6XG4tICAgIGNvbnN0OiBtYWNpcnFcbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogbWFjaXJxXG4mIzQzOyAgICAgIC0gY29uc3Q6IGV0aF9scGlcbiYjNDM7ICAgICAgLSBjb25zdDogdHgtcXVldWUtMFxuJiM0MzsgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXG4gXG4gICBjbG9ja3M6XG4gICAgIG1pbkl0ZW1zOiAxXG4tICAgIG1heEl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogM1xuIFxuICAgY2xvY2stbmFtZXM6XG4gICAgIG1pbkl0ZW1zOiAxXG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuICAgICAgIC0gY29uc3Q6IG1idXNcbiYjNDM7ICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuICAgcGh5LXN1cHBseTpcbiAgICAgZGVzY3JpcHRpb246IFBIWSByZWd1bGF0b3JcbkBAIC04Nyw3ICYjNDM7MTAxLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHJlc2V0LW5hbWVzXG4gICAtIHBoeS1oYW5kbGVcbiAgIC0gcGh5LW1vZGVcbi0gIC0gc3lzY29uXG4gXG4gYWxsT2Y6XG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbkBAIC0yMTksMzYgJiM0MzsyMzIsOTQgQEAgYWxsT2Y6XG4gICAgICAgcHJvcGVydGllczpcbiAgICAgICAgIGNvbXBhdGlibGU6XG4gICAgICAgICAgIGNvbnRhaW5zOlxuLSAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcbiYjNDM7ICAgICAgICAgICAgICAtIGFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXG4gICAgIHRoZW46XG4gICAgICAgcHJvcGVydGllczpcbi0gICAgICAgIGNsb2Nrczpcbi0gICAgICAgICAgbWluSXRlbXM6IDJcbi0gICAgICAgIGNsb2NrLW5hbWVzOlxuLSAgICAgICAgICBtaW5JdGVtczogMlxuICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4gICAgICAgICAgIGRlZmF1bHQ6IDBcbiAgICAgICAgICAgbWluaW11bTogMFxuLSAgICAgICAgICBtYXhpbXVtOiA3MDBcbiAgICAgICAgICAgbXVsdGlwbGVPZjogMTAwXG4gICAgICAgICAgIGRlc2NyaXB0aW9uOlxuLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cbiYjNDM7ICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4gICAgICAgICAgIGRlZmF1bHQ6IDBcbiAgICAgICAgICAgbWluaW11bTogMFxuICAgICAgICAgICBtYXhpbXVtOiAzMTAwXG4gICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMFxuICAgICAgICAgICBkZXNjcmlwdGlvbjpcbi0gICAgICAgICAgICBFeHRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuXG4tICAgICAgcmVxdWlyZWQ6XG4tICAgICAgICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFJYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICBlbHNlOlxuICAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgcmVnOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2tzOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2stbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4gICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuJiM0MzsgICAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgICAtIHN5c2NvblxuJiM0MztcbiYjNDM7ICAtIGlmOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNvbXBhdGlibGU6XG4mIzQzOyAgICAgICAgICBjb250YWluczpcbiYjNDM7ICAgICAgICAgICAgY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4mIzQzOyAgICB0aGVuOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIHJlZzpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgaW50ZXJydXB0czpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBjbG9ja3M6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDJcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMlxuJiM0MzsgICAgICAgIHJlc2V0czpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgICAgICAgbWF4aW11bTogNzAwXG4mIzQzOyAgICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAgIC0gcG93ZXItZG9tYWluc1xuJiM0MzsgICAgICAgIC0gc3lzY29uXG4mIzQzO1xuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgcmVnOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDJcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDRcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogNFxuJiM0MzsgICAgICAgIGNsb2NrczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogM1xuJiM0MzsgICAgICAgIHJlc2V0czpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgICAgICAgbWF4aW11bTogMzEwMFxuJiM0MzsgICAgICAgIHN5c2NvbjogZmFsc2VcbiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuIFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbkBAIC00MTIsNCAmIzQzOzQ4MywzMyBAQCBleGFtcGxlczpcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgfTtcbiAgICAgfTtcbiYjNDM7XG4mIzQzOyAgLSB8XG4mIzQzOyAgICBldGhlcm5ldEA0NTEwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3NucHMsZHdtYWMtNS4yMFwmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDA0NTEwMDAwIDB4ODAwMFx1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICBcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgNThcdTAwM2UsIFx1MDAzY1x1MDAyNmNjdSA1OVx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDYwXHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7LCBcJiMzNDttYnVzXCYjMzQ7LCBcJiMzNDtwdHBfcmVmXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNmNjdSAzMFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDMxXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlc2V0LW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7LCBcJiMzNDthaGJcJiMzNDs7XG4mIzQzOyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzAgMTc1IDRcdTAwM2UsIFx1MDAzYzAgMTc5IDRcdTAwM2UsIFx1MDAzYzAgMTc2IDRcdTAwM2UsIFx1MDAzYzAgMTc3IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gXCYjMzQ7bWFjaXJxXCYjMzQ7LCBcJiMzNDtldGhfbHBpXCYjMzQ7LCBcJiMzNDt0eC1xdWV1ZS0wXCYjMzQ7LCBcJiMzNDtyeC1xdWV1ZS0wXCYjMzQ7O1xuJiM0MzsgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnJnbWlpMV9waW5zXHUwMDNlO1xuJiM0MzsgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZleHRfcmdtaWlfcGh5XzJcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbiYjNDM7ICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuJiM0MztcbiYjNDM7ICAgICAgICBtZGlvIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3NucHMsZHdtYWMtbWRpb1wmIzM0OztcbiYjNDM7ICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBleHRfcmdtaWlfcGh5XzI6IGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIH07XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4gLi4uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xuaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xuQEAgLTEwLDIxICYjNDM7MTAsMjIgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZXNldC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RtbWFjLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG4gXG4tI2RlZmluZSBTWVNDT05fUkVHXHRcdDB4MzRcbi1cbiAvKiBSTUlJIHNwZWNpZmljIGJpdHMgKi9cbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXHRcdEJJVCgxMykgLyogMTogZW5hYmxlIFJNSUkgKG92ZXJyaWRlcyBFUElUKSAqL1xuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xuQEAgLTM3LDE3ICYjNDM7MzgsOTkgQEBcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0VYVF9HTUlJXHQweDFcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0lOVF9HTUlJXHQweDJcbiBcbi1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4mIzQzO3N0cnVjdCBzdW41NWlfZ21hY19kYXRhIHtcbiYjNDM7XHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuJiM0MztcdHVuc2lnbmVkIGludCBmbGFncztcbiYjNDM7XHR1MzIgZXR4ZGNfZXh0X21hc2s7XG4mIzQzO1x0dTMyIG9mZnNldDtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW41NWlfZ21hYzIwMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWdtYXAgKm1hcCA9XG4mIzQzO1x0XHRzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3N5c2NvblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIobWFwKSlcbiYjNDM7XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFBUUl9FUlIobWFwKSwgXCYjMzQ7VW5hYmxlIHRvIG1hcCBzeXNjb25cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWFwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgc3VuNjBpX2E3MzNfcmVnbWFwX2NmZyA9IHtcbiYjNDM7XHQucmVnX2JpdHMgPSAzMixcbiYjNDM7XHQudmFsX2JpdHMgPSAzMixcbiYjNDM7XHQucmVnX3N0cmlkZSA9IDQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdW42MGlfZ21hYzIxMF9yZXNldF9hc3NlcnQodm9pZCAqZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBkZXYtXHUwMDNlb2Zfbm9kZTtcbiYjNDM7XHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0cmVzZXRfY29udHJvbF9hc3NlcnQocnN0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCByZWdtYXAgKnN1bjYwaV9nbWFjMjEwX2dldF9yZWdtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiYjNDM7XHRcdFx0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSk7XG4mIzQzO1x0aWYgKElTX0VSUihiYXNlKSkge1xuJiM0MztcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoYmFzZSksIFwmIzM0O3VuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfQ0FTVChiYXNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghcGxhdC1cdTAwM2VzdG1tYWNfcnN0IHx8ICFwbGF0LVx1MDAzZXN0bW1hY19haGJfcnN0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bWlzc2luZyByZXF1aXJlZCByZXNldCBjb250cm9sc1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFyZSBpbnNpZGUgdGhlIGNvbnRyb2xsZXJcbiYjNDM7XHQgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW1cbiYjNDM7XHQgKiBhbmQgc2hvdWxkIG5vdCBiZSBkb25lIGFnYWluIGJ5IHN0bW1hYyBvciB0aGUgY29uZmlndXJhdGlvbiB3aWxsXG4mIzQzO1x0ICogYmUgbG9zdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSByZXNldF9jb250cm9sX2Fzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0cmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBzdW42MGlfZ21hYzIxMF9yZXNldF9hc3NlcnQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHBsYXQtXHUwMDNlc3RtbWFjX3JzdCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4mIzQzO1xuJiM0MztcdHBsYXQtXHUwMDNlc3RtbWFjX3JzdCA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIGJhc2UsIFx1MDAyNnN1bjYwaV9hNzMzX3JlZ21hcF9jZmcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuJiM0MztcdFx0XHRcdGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGxvX2JpdHMgPSBod2VpZ2h0MzIoU1lTQ09OX0VUWERDX01BU0spO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHR1MzIgdmFsLCByZWcgPSAwO1xuJiM0MztcdHUzMiBtYXhfZGVsYXk7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShub2RlLCBcJiMzNDtzeXNjb25cJiMzNDspO1xuJiM0MztcdG1heF9kZWxheSA9ICgxVSBcdTAwM2NcdTAwM2MgKGxvX2JpdHMgJiM0MzsgaHdlaWdodDMyKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2spKSkgLSAxO1xuJiM0MztcbiYjNDM7XHRyZWdtYXAgPSBkYXRhLVx1MDAzZWdldF9yZWdtYXAocGRldiwgcGxhdCk7XG4gXHRpZiAoSVNfRVJSKHJlZ21hcCkpXG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihyZWdtYXApLCBcJiMzNDtVbmFibGUgdG8gbWFwIHN5c2NvblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihyZWdtYXApO1xuIFxuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wc1wmIzM0OywgXHUwMDI2dmFsKSkge1xuIFx0XHRpZiAodmFsICUgMTAwKVxuQEAgLTU1LDEyICYjNDM7MTM4LDE1IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCAgICAgXCYjMzQ7dHgtZGVsYXkgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDEwMHBzXFxuXCYjMzQ7KTtcbiBcdFx0dmFsIC89IDEwMDtcbiBcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O3NldCB0eC1kZWxheSB0byAleFxcblwmIzM0OywgdmFsKTtcbi1cdFx0aWYgKCFGSUVMRF9GSVQoU1lTQ09OX0VUWERDX01BU0ssIHZhbCkpXG4mIzQzO1x0XHRpZiAodmFsIFx1MDAzZSBtYXhfZGVsYXkpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFx0XHQgICAgIFwmIzM0O1RYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzIFx1MDAzZSAlbHUwMHBzKVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpO1xuJiM0MztcdFx0XHRcdFx0ICAgICBcJiMzNDtUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyBcdTAwM2UgJXUwMHBzKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xuIFxuLVx0XHRyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTtcbiYjNDM7XHRcdHJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpO1xuJiM0MztcdFx0aWYgKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2spXG4mIzQzO1x0XHRcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2ssXG4mIzQzO1x0XHRcdFx0XHQgIHZhbCBcdTAwM2VcdTAwM2UgbG9fYml0cyk7XG4gXHR9XG4gXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZ2YWwpKSB7XG5AQCAtOTUsMjEgJiM0MzsxODEsMjkgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgcGh5X21vZGVzKHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSkpO1xuIFx0fVxuIFxuLVx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfd3JpdGUocmVnbWFwLCBkYXRhLVx1MDAzZW9mZnNldCwgcmVnKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxuXCYjMzQ7KTtcbiBcbiYjNDM7XHRwbGF0LVx1MDAzZWZsYWdzIHw9IGRhdGEtXHUwMDNlZmxhZ3M7XG4mIzQzO1x0cGxhdC1cdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuJiM0MztcdGlmICghZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xMTgsMTEgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGxhdF9kYXQpO1xuIFxuLVx0LyogQlNQIGRpc2FibGVzIGl0ICovXG4tXHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcbi1cdHBsYXRfZGF0LVx1MDAzZWhvc3RfZG1hX3dpZHRoID0gMzI7XG4tXG4tXHRyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKGRldiwgcGxhdF9kYXQpO1xuJiM0MztcdHJldCA9IHN1bjU1aV9nbWFjMjAwX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTM4LDggJiM0MzsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgPSB7XG4mIzQzO1x0LmdldF9yZWdtYXAgPSBzdW41NWlfZ21hYzIwMF9nZXRfcmVnbWFwLFxuJiM0MztcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxuJiM0MztcdC5vZmZzZXQgPSAweDM0LFxuJiM0MztcdC5ldHhkY19leHRfbWFzayA9IDAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgc3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhID0ge1xuJiM0MztcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcbiYjNDM7XHQuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxuJiM0MztcdFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxuJiM0MztcdFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxuJiM0MztcdC5vZmZzZXQgPSAweDAsXG4mIzQzO1x0LmV0eGRjX2V4dF9tYXNrID0gR0VOTUFTSygxNywgMTYpLFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW41NWlfZ21hYzIwMF9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCYjMzQ7IH0sXG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCYjMzQ7LFxuJiM0MztcdCAgLmRhdGEgPSBcdTAwMjZzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcJiMzNDssXG4mIzQzO1x0ICAuZGF0YSA9IFx1MDAyNnN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSB9LFxuIFx0eyB9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyMmVjNWM2MGE2NzM3YzQ0MGY5YWE5MjgxNjA1MjNhY2I5NzJhN2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKaW5kZXggMzIzYTY2OWZhOTgyMy4uZmVjNDJmNDYzNzhhYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKQEAgLTIyLDYgJiM0MzsyMiw3IEBAIHNlbGVjdDoKICAgICAgICAgICAtIGFsbHdpbm5lcixzdW44aS12M3MtZW1hYwogICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hYwogICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAKJiM0MzsgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAogICByZXF1aXJlZDoKICAgICAtIGNvbXBhdGlibGUKIApAQCAtNDQsMjUgJiM0Mzs0NSwzOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBpdGVtczoKICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAogICAgICAgICAgIC0gY29uc3Q6IHNucHMsZHdtYWMtNC4yMGEKJiM0MzsgICAgICAtIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAomIzQzOyAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjAKIAogICByZWc6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogTUFDIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogR2x1ZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycwogCiAgIGludGVycnVwdHM6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDQKIAogICBpbnRlcnJ1cHQtbmFtZXM6Ci0gICAgY29uc3Q6IG1hY2lycQomIzQzOyAgICBtaW5JdGVtczogMQomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBtYWNpcnEKJiM0MzsgICAgICAtIGNvbnN0OiBldGhfbHBpCiYjNDM7ICAgICAgLSBjb25zdDogdHgtcXVldWUtMAomIzQzOyAgICAgIC0gY29uc3Q6IHJ4LXF1ZXVlLTAKIAogICBjbG9ja3M6CiAgICAgbWluSXRlbXM6IDEKLSAgICBtYXhJdGVtczogMgomIzQzOyAgICBtYXhJdGVtczogMwogCiAgIGNsb2NrLW5hbWVzOgogICAgIG1pbkl0ZW1zOiAxCiAgICAgaXRlbXM6CiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGgKICAgICAgIC0gY29uc3Q6IG1idXMKJiM0MzsgICAgICAtIGNvbnN0OiBwdHBfcmVmCiAKICAgcGh5LXN1cHBseToKICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvcgpAQCAtODcsNyAmIzQzOzEwMSw2IEBAIHJlcXVpcmVkOgogICAtIHJlc2V0LW5hbWVzCiAgIC0gcGh5LWhhbmRsZQogICAtIHBoeS1tb2RlCi0gIC0gc3lzY29uCiAKIGFsbE9mOgogICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCMKQEAgLTIxOSwzNiAmIzQzOzIzMiw5NCBAQCBhbGxPZjoKICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgIGNvbXBhdGlibGU6CiAgICAgICAgICAgY29udGFpbnM6Ci0gICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAKJiM0MzsgICAgICAgICAgICBlbnVtOgomIzQzOyAgICAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAomIzQzOyAgICAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAogICAgIHRoZW46CiAgICAgICBwcm9wZXJ0aWVzOgotICAgICAgICBjbG9ja3M6Ci0gICAgICAgICAgbWluSXRlbXM6IDIKLSAgICAgICAgY2xvY2stbmFtZXM6Ci0gICAgICAgICAgbWluSXRlbXM6IDIKICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6CiAgICAgICAgICAgZGVmYXVsdDogMAogICAgICAgICAgIG1pbmltdW06IDAKLSAgICAgICAgICBtYXhpbXVtOiA3MDAKICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDAKICAgICAgICAgICBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy4KJiM0MzsgICAgICAgICAgICBJbnRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuCiAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzOgogICAgICAgICAgIGRlZmF1bHQ6IDAKICAgICAgICAgICBtaW5pbXVtOiAwCiAgICAgICAgICAgbWF4aW11bTogMzEwMAogICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMAogICAgICAgICAgIGRlc2NyaXB0aW9uOgotICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLgotICAgICAgcmVxdWlyZWQ6Ci0gICAgICAgIC0gcG93ZXItZG9tYWlucwomIzQzOyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBSWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy4KICAgICBlbHNlOgogICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIHJlZzoKJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgICAgIGludGVycnVwdHM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiAgICAgICAgIGNsb2NrczoKICAgICAgICAgICBtYXhJdGVtczogMQogICAgICAgICBjbG9jay1uYW1lczoKICAgICAgICAgICBtYXhJdGVtczogMQogICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZQomIzQzOyAgICAgIHJlcXVpcmVkOgomIzQzOyAgICAgICAgLSBzeXNjb24KJiM0MzsKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICByZWc6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMQomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMQomIzQzOyAgICAgICAgY2xvY2tzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMgomIzQzOyAgICAgICAgY2xvY2stbmFtZXM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAyCiYjNDM7ICAgICAgICByZXNldHM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICByZXNldC1uYW1lczoKJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICAgICAgICBtYXhpbXVtOiA3MDAKJiM0MzsgICAgICByZXF1aXJlZDoKJiM0MzsgICAgICAgIC0gcG93ZXItZG9tYWlucwomIzQzOyAgICAgICAgLSBzeXNjb24KJiM0MzsKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICByZWc6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogNAomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogNAomIzQzOyAgICAgICAgY2xvY2tzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMwomIzQzOyAgICAgICAgY2xvY2stbmFtZXM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzCiYjNDM7ICAgICAgICByZXNldHM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICByZXNldC1uYW1lczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDIKJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICAgICAgICBtYXhpbXVtOiAzMTAwCiYjNDM7ICAgICAgICBzeXNjb246IGZhbHNlCiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZQogCiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiAKQEAgLTQxMiw0ICYjNDM7NDgzLDMzIEBAIGV4YW1wbGVzOgogICAgICAgICAgICAgfTsKICAgICAgICAgfTsKICAgICB9OwomIzQzOwomIzQzOyAgLSB8CiYjNDM7ICAgIGV0aGVybmV0QDQ1MTAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgICAgICAmIzM0O3NucHMsZHdtYWMtNS4yMCYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MDQ1MTAwMDAgMHg4MDAwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDA0NTE4MDAwIDB4MTAwMCZndDs7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtjY3UgNTgmZ3Q7LCAmbHQ7JmFtcDtjY3UgNTkmZ3Q7LCAmbHQ7JmFtcDtjY3UgNjAmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O21idXMmIzM0OywgJiMzNDtwdHBfcmVmJiMzNDs7CiYjNDM7ICAgICAgICByZXNldHMgPSAmbHQ7JmFtcDtjY3UgMzAmZ3Q7LCAmbHQ7JmFtcDtjY3UgMzEmZ3Q7OwomIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O2FoYiYjMzQ7OwomIzQzOyAgICAgICAgaW50ZXJydXB0cyA9ICZsdDswIDE3NSA0Jmd0OywgJmx0OzAgMTc5IDQmZ3Q7LCAmbHQ7MCAxNzYgNCZndDssICZsdDswIDE3NyA0Jmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9ICYjMzQ7bWFjaXJxJiMzNDssICYjMzQ7ZXRoX2xwaSYjMzQ7LCAmIzM0O3R4LXF1ZXVlLTAmIzM0OywgJiMzNDtyeC1xdWV1ZS0wJiMzNDs7CiYjNDM7ICAgICAgICBwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7ICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtyZ21paTFfcGlucyZndDs7CiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gJmx0OyZhbXA7ZXh0X3JnbWlpX3BoeV8yJmd0OzsKJiM0MzsgICAgICAgIHBoeS1tb2RlID0gJiMzNDtyZ21paS1pZCYjMzQ7OwomIzQzOyAgICAgICAgc25wcyxmaXhlZC1idXJzdDsKJiM0MzsKJiM0MzsgICAgICAgIG1kaW8gewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3NucHMsZHdtYWMtbWRpbyYjMzQ7OwomIzQzOyAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGV4dF9yZ21paV9waHlfMjogZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgICAgICByZWcgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgICAgfTsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiAuLi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKQEAgLTEwLDIxICYjNDM7MTAsMjIgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ21hcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZXNldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N0bW1hYy5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7c3RtbWFjX3BsYXRmb3JtLmgmIzM0OwogCi0jZGVmaW5lIFNZU0NPTl9SRUcJCTB4MzQKLQogLyogUk1JSSBzcGVjaWZpYyBiaXRzICovCiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOCQlCSVQoMTMpIC8qIDE6IGVuYWJsZSBSTUlJIChvdmVycmlkZXMgRVBJVCkgKi8KIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqLwpAQCAtMzcsMTcgJiM0MzszOCw5OSBAQAogI2RlZmluZSBTWVNDT05fRVRDU19FWFRfR01JSQkweDEKICNkZWZpbmUgU1lTQ09OX0VUQ1NfSU5UX0dNSUkJMHgyCiAKLXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsCi0JCQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpCiYjNDM7c3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgewomIzQzOwlzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiYjNDM7CQkJCSAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTsKJiM0MzsJdW5zaWduZWQgaW50IGZsYWdzOwomIzQzOwl1MzIgZXR4ZGNfZXh0X21hc2s7CiYjNDM7CXUzMiBvZmZzZXQ7CiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAomIzQzOwkJCQkJCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCByZWdtYXAgKm1hcCA9CiYjNDM7CQlzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKHBkZXYtJmd0O2Rldi5vZl9ub2RlLCAmIzM0O3N5c2NvbiYjMzQ7KTsKJiM0MzsKJiM0MzsJaWYgKElTX0VSUihtYXApKQomIzQzOwkJZGV2X2Vycl9wcm9iZSgmYW1wO3BkZXYtJmd0O2RldiwgUFRSX0VSUihtYXApLCAmIzM0O1VuYWJsZSB0byBtYXAgc3lzY29uXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiBtYXA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW42MGlfYTczM19yZWdtYXBfY2ZnID0gewomIzQzOwkucmVnX2JpdHMgPSAzMiwKJiM0MzsJLnZhbF9iaXRzID0gMzIsCiYjNDM7CS5yZWdfc3RyaWRlID0gNCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCh2b2lkICpkYXRhKQogewotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0mZ3Q7b2Zfbm9kZTsKJiM0MzsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdCA9IGRhdGE7CiYjNDM7CiYjNDM7CXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHJzdCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiYjNDM7CQkJCQkJc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXZvaWQgX19pb21lbSAqYmFzZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxKTsKJiM0MzsJaWYgKElTX0VSUihiYXNlKSkgewomIzQzOwkJZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoYmFzZSksICYjMzQ7dW5hYmxlIHRvIGdldCBnbHVlIG1lbW9yeSByZWdpb25cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBFUlJfQ0FTVChiYXNlKTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXBsYXQtJmd0O3N0bW1hY19yc3QgfHwgIXBsYXQtJmd0O3N0bW1hY19haGJfcnN0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDttaXNzaW5nIHJlcXVpcmVkIHJlc2V0IGNvbnRyb2xzXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlcgomIzQzOwkgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW0KJiM0MzsJICogYW5kIHNob3VsZCBub3QgYmUgZG9uZSBhZ2FpbiBieSBzdG1tYWMgb3IgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbAomIzQzOwkgKiBiZSBsb3N0LgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gcmVzZXRfY29udHJvbF9hc3NlcnQocGxhdC0mZ3Q7c3RtbWFjX3JzdCk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwbGF0LSZndDtzdG1tYWNfcnN0KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgJiMzNDtkZXZpY2UgcmVzZXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUihyZXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCwKJiM0MzsJCQkJICAgICAgIHBsYXQtJmd0O3N0bW1hY19yc3QpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKJiM0MzsKJiM0MzsJcGxhdC0mZ3Q7c3RtbWFjX3JzdCA9IE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oJmFtcDtwZGV2LSZndDtkZXYsIGJhc2UsICZhbXA7c3VuNjBpX2E3MzNfcmVnbWFwX2NmZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKJiM0MzsJCQkJc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LAomIzQzOwkJCQljb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBsb19iaXRzID0gaHdlaWdodDMyKFNZU0NPTl9FVFhEQ19NQVNLKTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi0mZ3Q7ZGV2Lm9mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKIAl1MzIgdmFsLCByZWcgPSAwOwomIzQzOwl1MzIgbWF4X2RlbGF5OwogCWludCByZXQ7CiAKLQlyZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5vZGUsICYjMzQ7c3lzY29uJiMzNDspOwomIzQzOwltYXhfZGVsYXkgPSAoMVUgJmx0OyZsdDsgKGxvX2JpdHMgJiM0MzsgaHdlaWdodDMyKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrKSkpIC0gMTsKJiM0MzsKJiM0MzsJcmVnbWFwID0gZGF0YS0mZ3Q7Z2V0X3JlZ21hcChwZGV2LCBwbGF0KTsKIAlpZiAoSVNfRVJSKHJlZ21hcCkpCi0JCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihyZWdtYXApLCAmIzM0O1VuYWJsZSB0byBtYXAgc3lzY29uXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gUFRSX0VSUihyZWdtYXApOwogCiAJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3R4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7dmFsKSkgewogCQlpZiAodmFsICUgMTAwKQpAQCAtNTUsMTIgJiM0MzsxMzgsMTUgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkJICAgICAmIzM0O3R4LWRlbGF5IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDBwc1xuJiMzNDspOwogCQl2YWwgLz0gMTAwOwogCQlkZXZfZGJnKGRldiwgJiMzNDtzZXQgdHgtZGVsYXkgdG8gJXhcbiYjMzQ7LCB2YWwpOwotCQlpZiAoIUZJRUxEX0ZJVChTWVNDT05fRVRYRENfTUFTSywgdmFsKSkKJiM0MzsJCWlmICh2YWwgJmd0OyBtYXhfZGVsYXkpCiAJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FSU5WQUwsCi0JCQkJCSAgICAgJiMzNDtUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyAmZ3Q7ICVsdTAwcHMpXG4mIzM0OywKLQkJCQkJICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpOwomIzQzOwkJCQkJICAgICAmIzM0O1RYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzICZndDsgJXUwMHBzKVxuJiMzNDssCiYjNDM7CQkJCQkgICAgIHZhbCwgbWF4X2RlbGF5KTsKIAotCQlyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTsKJiM0MzsJCXJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpOwomIzQzOwkJaWYgKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrKQomIzQzOwkJCXJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrLAomIzQzOwkJCQkJICB2YWwgJmd0OyZndDsgbG9fYml0cyk7CiAJfQogCiAJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7dmFsKSkgewpAQCAtOTUsMjEgJiM0MzsxODEsMjkgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkgICAgIHBoeV9tb2RlcyhwbGF0LSZndDtwaHlfaW50ZXJmYWNlKSk7CiAJfQogCi0JcmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS0mZ3Q7b2Zmc2V0LCByZWcpOwogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgJiMzNDtGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXG4mIzM0Oyk7CiAKJiM0MzsJcGxhdC0mZ3Q7ZmxhZ3MgfD0gZGF0YS0mZ3Q7ZmxhZ3M7CiYjNDM7CXBsYXQtJmd0O2hvc3RfZG1hX3dpZHRoID0gMzI7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0OwomIzQzOwljb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTsKIAlzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCXN0cnVjdCBjbGsgKmNsazsKIAlpbnQgcmV0OwogCiYjNDM7CWRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKJiM0MzsJaWYgKCFkYXRhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgJmFtcDtzdG1tYWNfcmVzKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTE4LDExICYjNDM7MjEyLDcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChJU19FUlIocGxhdF9kYXQpKQogCQlyZXR1cm4gUFRSX0VSUihwbGF0X2RhdCk7CiAKLQkvKiBCU1AgZGlzYWJsZXMgaXQgKi8KLQlwbGF0X2RhdC0mZ3Q7ZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7Ci0JcGxhdF9kYXQtJmd0O2hvc3RfZG1hX3dpZHRoID0gMzI7Ci0KLQlyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKGRldiwgcGxhdF9kYXQpOwomIzQzOwlyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTM4LDggJiM0MzsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgJmFtcDtzdG1tYWNfcmVzKTsKIH0KIAomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgPSB7CiYjNDM7CS5nZXRfcmVnbWFwID0gc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcCwKJiM0MzsJLmZsYWdzID0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUsCiYjNDM7CS5vZmZzZXQgPSAweDM0LAomIzQzOwkuZXR4ZGNfZXh0X21hc2sgPSAwLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSA9IHsKJiM0MzsJLmdldF9yZWdtYXAgPSBzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwLAomIzQzOwkuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfAomIzQzOwkJICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfAomIzQzOwkJICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLAomIzQzOwkub2Zmc2V0ID0gMHgwLAomIzQzOwkuZXR4ZGNfZXh0X21hc2sgPSBHRU5NQVNLKDE3LCAxNiksCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7Ci0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAmIzM0OyB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gJmFtcDtzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0OywKJiM0MzsJICAuZGF0YSA9ICZhbXA7c3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhIH0sCiAJeyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFwcGx5aW5nIG91ciBzdGFuZGFyZCBndWlkZWxpbmVzLCBvZiBjb3Vyc2UuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBwYXRjaCB0b3VjaGVzIHR3byBmaWxlczogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jYC4gVGhlIFlBTUwgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCBkZXZpY2UgdHJlZSBiaW5kaW5ncywgc28gd2UmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBsYXRlci4KCk15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHRoYXQgQyBmaWxlLCBgZHdtYWMtc3VuNTVpLmNgLiBIbW0sIHJpZ2h0LCBpdCYjMzk7cyBhbiBBbGx3aW5uZXIgU29DIGV0aGVybmV0IGdsdWUgZHJpdmVyLiBJdCYjMzk7cyBhbiBzdG1tYWMgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBbGx3aW5uZXIgc3VuNTVpIGFuZCBzdW42MGkgQVJNIFNvQ3MuIE9rYXksIHRoYXQgZ2l2ZXMgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgY29uZmlndXJlZC4gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJcyBpdCBhIG1vZHVsZT8gV2hhdCBidWlsZCBvcHRpb25zIGRvIHdlIGhhdmUgdG8gd29yayB3aXRoIHdoZW4gYXR0ZW1wdGluZyBmdXp6aW5nPyBUaGlzIHdpbGwgYWxsIGluZm9ybSBob3cgd2UgYXBwcm9hY2ggaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgaG93IHdlIGNhbiBiZXN0IHRhcmdldCB0aGUgY29kZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19TVU41NUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yODg9Y29uZmlnIERXTUFDX1NVTjhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMDpjb25maWcgRFdNQUNfU1VONTVJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwMS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVx0JiM0Mzs9IGR3bWFjLXN1bjhpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19EV01BQ19TVU41NUkpXHQmIzQzOz0gZHdtYWMtc3VuNTVpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19EV01BQ19USEVBRClcdCYjNDM7PSBkd21hYy10aGVhZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGZyYW1lZCBhcyBhIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIERXTUFDX1NVTjU1SSBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmb3IgYERXTUFDX1NVTjU1SWAuIE15IGd1dCB0ZWxscyBtZSB0aGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXImIzM5O3MgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQgYW5kIGV4cG9zZWQgYXQgY29tcGlsZSB0aW1lLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgb24gdGhlIFN1bjU1aSBwbGF0Zm9ybS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkNoaXAtc3BlY2lmaWMgZGVmaW5lczoqKiBJIGJldCB0aGVyZSBhcmUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgU3VuNTVpIFNvQyB2YXJpYW50LiBUaGlzIGxpa2VseSBnb3Zlcm5zIHJlZ2lzdGVyIG9mZnNldHMsIGNsb2NrIGNvbmZpZ3VyYXRpb25zLCBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLgoqICAgKipGZWF0dXJlIGZsYWdzOioqIEFyZSB0aGVyZSBhbnkgb3B0aW9ucyB0byBlbmFibGUgb3IgZGlzYWJsZSBzcGVjaWZpYyBNQUMgZmVhdHVyZXM/IFRoaW5ncyBsaWtlIGNoZWNrc3VtIG9mZmxvYWRpbmcsIFZMQU4gc3VwcG9ydCwgRE1BIHNldHRpbmdzIOKAkyB0aGVzZSBhcmUgYWxsIGZhaXIgZ2FtZS4gSSB3aWxsIGJlIG9uIHRoZSBsb29rb3V0IGZvciB3YXlzIHRvIHRvZ2dsZSBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdGllcy4KKiAgICoqRGVwZW5kZW5jeSBjaGVja3M6KiogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBLY29uZmlnIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgRFdNQUNfU1VONTVJYCBiZWNvbWVzIGF2YWlsYWJsZS4gVGhpcyB3aWxsIHNob3cgdGhlIGludGVyZGVwZW5kZW5jaWVzIHdpdGggb3RoZXIgaGFyZHdhcmUgY29tcG9uZW50cyBhbmQgZHJpdmVycy4KKiAgICoqSGVscCB0ZXh0OioqIEkgaG9wZSB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGFuZCBkZXRhaWxlZC4gR29vZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHdlbGwtZG9jdW1lbnRlZCwgZXhwbGFpbmluZyB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIGl0cyBpbXBhY3QuIFRoaXMgd2lsbCBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyB0aW1lLgoqICAgKipEZWZhdWx0IHZhbHVlczoqKiBJdCB3aWxsIGJlIGdvb2QgdG8gc2VlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGFzIGl0IGdpdmVzIGFuIGltbWVkaWF0ZSBzZW5zZSBvZiB0aGUgaW50ZW5kZWQgdXNlIGNhc2UuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIG5ldyBjaGFuZ2VzIGFuZCBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHByb3BlciB3b3JraW5nIG9yZGVyLgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCByZWFkaW5nIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyB3ZSBjYW4gdW5jb3Zlci4gVGltZSB0byBiZWNvbWUgb25lIHdpdGggdGhlIGBLY29uZmlnYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjk1Olx0XG4gMjk2Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjk3Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuIDI5ODpcdFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjk5Olx0XG4gMzAwOlx0Y29uZmlnIERXTUFDX1NVTjU1SVxuIDMwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbiAzMDI6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDMwMzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDMwNDpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDMwNTpcdFx0aGVscFxuIDMwNjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTUyMy9UNTI3IEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMzA5Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcbiAzMTA6XHRcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMxMTpcdFxuIDMxMjpcdGNvbmZpZyBEV01BQ19USEVBRFxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTk1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoYWJpbGl0eSBBbmFseXNpczogTXkgVGhvdWdodHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyByZWFjaGFiaWxpdHkgcXVlc3Rpb24gdXNpbmcgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IG91dGxpbmVkIGluIFNlY3Rpb25zIDEgYW5kIDIuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHNvIGxldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIGZvciB0aGluZ3MgdGhhdCBtaWdodCAqbm90KiBiZSByZWFjaGFibGUuCgpGaXJzdCwgd2UgbmVlZCB0byBlbGltaW5hdGUgbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgd2hpY2ggaXMgYSBnaXZlbiwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpbmdzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGhpcyBpbnN0YW50bHkgYnJpbmdzIHRvIG1pbmQgdGhvc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJJiMzOTttIHRoaW5raW5nIG9mOgoKKiAgIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5IG5lZWQgdGhvc2UgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGxpc3QgcmVtaW5kcyBtZSwgZm9yIGV4YW1wbGUsIG9mIHRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCiogICBQbGF0Zm9ybSBkcml2ZXJzIGZvciBzcGVjaWZpYyBBUk0vdmVuZG9yIFNvQ3MgYXJlIGFsc28gaW4gdGhlIHVucmVhY2hhYmxlIGNhdGVnb3J5LiBUaGluZ3MgbGlrZSBBbGx3aW5uZXIvU3VueGkgU29DIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMgc3RpY2sgb3V0LiBUaGVzZSBhcmUgcGxhdGZvcm0gZGV2aWNlcyBzcGVjaWZpYyB0byB0aG9zZSBTb0NzLCBhbmQsIHNwZWNpZmljYWxseSBmb3IgYEFSQ0hfU1VOWElgLCBgc3VuNTVpYCwgYW5kIGBzdW42MGlgLCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIHNwZWNpZmljIERUIGJvYXJkIGNvbmZpZ3Mgb24gQVJNIFNvQ3MuIEluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHN5emthbGxlciBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uIFRoYXQgcGxhdGZvcm0gZGV2aWNlL2RyaXZlciBjYW4mIzM5O3QgYmUgcHJvYmVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRob3NlIE9GIGRldmljZSB0cmVlIG5vZGVzIGxpa2UgYGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwYCBvciBgYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBgIG9uIFN1bnhpIFNvQ3MsIGFuZCB3ZSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBpbiB0aGlzIHNldHVwLgoKV2FpdCwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgKmFueSogcG9zc2liaWxpdHkgb2YgdmlydHVhbCBidXMgb3IgdXNlcnNwYWNlIHJlYWNoYWJpbGl0eSBmb3Igc29tZXRoaW5nIGxpa2UgYGR3bWFjLXN1bjU1aWAgb24gYW1kNjQuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpYCwgYW5kIGl0IGhhcyB0aGF0IE9GIG1hdGNoIHRhYmxlLCBgc3VuNTVpX2dtYWMyMDBfbWF0Y2hgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUsIGluIGBkd21hYy1zdW41NWkuY2AsIGFuZCBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSBvciBpbmRpcmVjdCBhY2Nlc3MgSSBtaWdodCBiZSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFx0LmZsYWdzID0gKFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFIHxcbiAyNDE6XHRcdFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxuIDI0MjpcdFx0XHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCksXG4gMjQzOlx0XHQub2Zmc2V0ID0gMHgwLFxuIDI0NDpcdFx0LmV0eGRjX2V4dF9tYXNrID0gR0VOTUFTSygxNywgMTYpLFxuIDI0NTpcdH07XG4gMjQ2Olx0XG4gMjQ3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuNTVpX2dtYWMyMDBfbWF0Y2hbXSA9IHtcbiAyNDg6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwmIzM0OyxcbiAyNDk6XHRcdCAgLmRhdGEgPSBcdTAwMjZzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSxcbiAyNTA6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFwmIzM0OyxcbiAyNTE6XHRcdCAgLmRhdGEgPSBcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcbiAyNTI6XHRcdHsgfVxuIDI1MzpcdH07XG4gMjU0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuIDI1NTpcdFxuIDI1NjpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbiAyNTc6XHRcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcbiAyNTg6XHRcdC5kcml2ZXIgPSB7XG4gMjU5Olx0XHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O2R3bWFjLXN1bjU1aVwmIzM0OyxcbiAyNjA6XHRcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbiAyNjE6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gc3VuNTVpX2dtYWMyMDBfbWF0Y2gsXG4gMjYyOlx0XHR9LFxuIDI2MzpcdH07XG4gMjY0Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpO1xuIDI2NTpcdFxuIDI2NjpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7Q2hlbi1ZdSBUc2FpIFx1MDAzY3dlbnNAY3NpZS5vcmdcdTAwM2VcJiMzNDspO1xuIDI2NzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3BlY2lmaWMgZ2x1ZSBsYXllclwmIzM0Oyk7XG4gMjY4Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY5OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA1NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFRhcmdldCBDb2RlIGFuZCBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29kZSBjaGFuZ2UgaXNuJiMzOTt0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyBhbiBBbGx3aW5uZXIgc3VueGkgU29DIHBsYXRmb3JtIGRyaXZlci4gVGhlIGNvZGUmIzM5O3MgbG9va2luZyBmb3IgdGhvc2Ugc3BlY2lmaWMgT0YgY29tcGF0aWJsZSBzdHJpbmdzOiBgJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMCYjMzQ7YCBhbmQgYCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0O2AsIHBsdXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgaGFyZHdhcmUgcmVzb3VyY2VzLiBZZXAsIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuIENsb2NrcywgcmVzZXRzLCBNTUlPLCB0aGUgd29ya3MuCgpTZWNvbmQsIEkgc2VlIHRoaXMgb25seSBydW5zIG9uIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIFNvQ3MuIEFuZCBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSDigJMgdGhpcyBpcyBBUk0vQVJNNjQuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBgQVJDSF9TVU5YSWAgaXNuJiMzOTt0IGV2ZW4gZW5hYmxlZCBvbiBhbWQ2NCwgbWVhbmluZyB0aGUgY29tcGlsZXIgY2FuIG9ubHkgKmNvbXBpbGUqIHRoZSBjb2RlLCBub3QgYWN0dWFsbHkgcnVuIGFuZCBwcm9iZSBpdC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIHdvbiYjMzk7dCBiZSBhbnkgb2YgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyBwcm9iZWQgaW4gbXkgc3RhbmRhcmQgeDg2XzY0IG9yIGFtZDY0IHZpcnR1YWwgbWFjaGluZXMgbGlrZSBRRU1VIG9yIEdDRS4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhvc2UgZGV0YWlscyByZWFsIHF1aWNrLiBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGJvdGggdGhlIGRvY3VtZW50YXRpb24gKGRldmljZXRyZWUgYmluZGluZ3MpIGFuZCB0aGUgYGR3bWFjLXN1bjU1aS5jYCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgZm9yIEFsbHdpbm5lciBzdW54aSBTb0MgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgaXMgZGVwZW5kZW50IG9uIHRoZSBTb0MmIzM5O3MgZGV2aWNlIHRyZWUgYW5kIHJlcXVpcmVzIGRpcmVjdCBhY2Nlc3MgdG8gbWVtb3J5LW1hcHBlZCBoYXJkd2FyZSByZWdpc3RlcnMsIHJlc2V0cywgYW5kIGNsb2Nrcy4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIG9uIG15IGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgdGVzdCBlbnZpcm9ubWVudHMuCgpPa2F5LCBzbyB0aGUgdmVyZGljdDogKipXb3J0aEZ1enppbmcgc2hvdWxkIGJlIGZhbHNlLioqCgpOb3cgdG8gcHJlcGFyZSB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYDoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKgoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKiogKGFuIGVtcHR5IGFycmF5KSBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZW5hYmxlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChhbm90aGVyIGVtcHR5IGFycmF5KSBzaW5jZSB3ZSYjMzk7cmUgbm90IGZvY3VzaW5nIG9uIGFueSBwYXJ0aWN1bGFyIHBhcnQgb2YgdGhpcyBjb2RlLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBkZXZpY2V0cmVlIGJpbmRpbmdzIGFuZCB0aGUgYGR3bWFjLXN1bjU1aWAgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgQVJNIFNvQ3Mgd2l0aCB0aGUgZGV2aWNlcyBkZWZpbmVkIGJ5IHRoZSBjb21wYXRpYmxlIHN0cmluZ3MgKGBzdW41NWktYTUyMy1nbWFjMjAwYCwgYHN1bjYwaS1hNzMzLWdtYWMyMTBgKS4gVGhlIGNvZGUgaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIHJlcXVpcmVzIGEgZGV2aWNlIHRyZWUvcGh5c2ljYWwgU29DIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDoxNy41ODgxMDU2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcxMDg3MjM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjE3LjU4ODExMDQ5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMDc0MjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTIyZWM1YzYwYTY3MzdjNDQwZjlhYTkyODE2MDUyM2FjYjk3MmE3ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXFxuaW5kZXggMzIzYTY2OWZhOTgyMy4uZmVjNDJmNDYzNzhhYyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXFxuQEAgLTIyLDYgKzIyLDcgQEAgc2VsZWN0OlxcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcXG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hY1xcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxcbisgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbiAgIHJlcXVpcmVkOlxcbiAgICAgLSBjb21wYXRpYmxlXFxuIFxcbkBAIC00NCwyNSArNDUsMzggQEAgcHJvcGVydGllczpcXG4gICAgICAgLSBpdGVtczpcXG4gICAgICAgICAgIC0gY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXFxuKyAgICAgIC0gaXRlbXM6XFxuKyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbisgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXFxuIFxcbiAgIHJlZzpcXG4tICAgIG1heEl0ZW1zOiAxXFxuKyAgICBtaW5JdGVtczogMVxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xcbisgICAgICAtIGRlc2NyaXB0aW9uOiBHbHVlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzXFxuIFxcbiAgIGludGVycnVwdHM6XFxuLSAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rICAgIG1heEl0ZW1zOiA0XFxuIFxcbiAgIGludGVycnVwdC1uYW1lczpcXG4tICAgIGNvbnN0OiBtYWNpcnFcXG4rICAgIG1pbkl0ZW1zOiAxXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogbWFjaXJxXFxuKyAgICAgIC0gY29uc3Q6IGV0aF9scGlcXG4rICAgICAgLSBjb25zdDogdHgtcXVldWUtMFxcbisgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXFxuIFxcbiAgIGNsb2NrczpcXG4gICAgIG1pbkl0ZW1zOiAxXFxuLSAgICBtYXhJdGVtczogMlxcbisgICAgbWF4SXRlbXM6IDNcXG4gXFxuICAgY2xvY2stbmFtZXM6XFxuICAgICBtaW5JdGVtczogMVxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbiAgICAgICAtIGNvbnN0OiBtYnVzXFxuKyAgICAgIC0gY29uc3Q6IHB0cF9yZWZcXG4gXFxuICAgcGh5LXN1cHBseTpcXG4gICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yXFxuQEAgLTg3LDcgKzEwMSw2IEBAIHJlcXVpcmVkOlxcbiAgIC0gcmVzZXQtbmFtZXNcXG4gICAtIHBoeS1oYW5kbGVcXG4gICAtIHBoeS1tb2RlXFxuLSAgLSBzeXNjb25cXG4gXFxuIGFsbE9mOlxcbiAgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xcbkBAIC0yMTksMzYgKzIzMiw5NCBAQCBhbGxPZjpcXG4gICAgICAgcHJvcGVydGllczpcXG4gICAgICAgICBjb21wYXRpYmxlOlxcbiAgICAgICAgICAgY29udGFpbnM6XFxuLSAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxcbisgICAgICAgICAgICBlbnVtOlxcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXG4rICAgICAgICAgICAgICAtIGFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxuICAgICB0aGVuOlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbi0gICAgICAgIGNsb2NrczpcXG4tICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuLSAgICAgICAgY2xvY2stbmFtZXM6XFxuLSAgICAgICAgICBtaW5JdGVtczogMlxcbiAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbiAgICAgICAgICAgZGVmYXVsdDogMFxcbiAgICAgICAgICAgbWluaW11bTogMFxcbi0gICAgICAgICAgbWF4aW11bTogNzAwXFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcXG4gICAgICAgICAgIGRlc2NyaXB0aW9uOlxcbi0gICAgICAgICAgICBFeHRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuXFxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4gICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wczpcXG4gICAgICAgICAgIGRlZmF1bHQ6IDBcXG4gICAgICAgICAgIG1pbmltdW06IDBcXG4gICAgICAgICAgIG1heGltdW06IDMxMDBcXG4gICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMFxcbiAgICAgICAgICAgZGVzY3JpcHRpb246XFxuLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4tICAgICAgcmVxdWlyZWQ6XFxuLSAgICAgICAgLSBwb3dlci1kb21haW5zXFxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBSWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4gICAgIGVsc2U6XFxuICAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcmVnOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICAgICAgICBtYXhJdGVtczogMVxcbiAgICAgICAgIGNsb2NrczpcXG4gICAgICAgICAgIG1heEl0ZW1zOiAxXFxuICAgICAgICAgY2xvY2stbmFtZXM6XFxuICAgICAgICAgICBtYXhJdGVtczogMVxcbiAgICAgICAgIHBvd2VyLWRvbWFpbnM6IGZhbHNlXFxuKyAgICAgIHJlcXVpcmVkOlxcbisgICAgICAgIC0gc3lzY29uXFxuK1xcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY29tcGF0aWJsZTpcXG4rICAgICAgICAgIGNvbnRhaW5zOlxcbisgICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXG4rICAgIHRoZW46XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcmVnOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICAgICAgICBtYXhJdGVtczogMVxcbisgICAgICAgIGNsb2NrczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuKyAgICAgICAgICBtYXhJdGVtczogMlxcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDJcXG4rICAgICAgICAgIG1heEl0ZW1zOiAyXFxuKyAgICAgICAgcmVzZXRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICByZXNldC1uYW1lczpcXG4rICAgICAgICAgIG1heEl0ZW1zOiAxXFxuKyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuKyAgICAgICAgICBtYXhpbXVtOiA3MDBcXG4rICAgICAgcmVxdWlyZWQ6XFxuKyAgICAgICAgLSBwb3dlci1kb21haW5zXFxuKyAgICAgICAgLSBzeXNjb25cXG4rXFxuKyAgLSBpZjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICBjb21wYXRpYmxlOlxcbisgICAgICAgICAgY29udGFpbnM6XFxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICByZWc6XFxuKyAgICAgICAgICBtaW5JdGVtczogMlxcbisgICAgICAgIGludGVycnVwdHM6XFxuKyAgICAgICAgICBtaW5JdGVtczogNFxcbisgICAgICAgIGludGVycnVwdC1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiA0XFxuKyAgICAgICAgY2xvY2tzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgICBjbG9jay1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXFxuKyAgICAgICAgcmVzZXRzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDJcXG4rICAgICAgICByZXNldC1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuKyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuKyAgICAgICAgICBtYXhpbXVtOiAzMTAwXFxuKyAgICAgICAgc3lzY29uOiBmYWxzZVxcbisgICAgICAgIHBvd2VyLWRvbWFpbnM6IGZhbHNlXFxuIFxcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuIFxcbkBAIC00MTIsNCArNDgzLDMzIEBAIGV4YW1wbGVzOlxcbiAgICAgICAgICAgICB9O1xcbiAgICAgICAgIH07XFxuICAgICB9O1xcbitcXG4rICAtIHxcXG4rICAgIGV0aGVybmV0QDQ1MTAwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcXFwiLFxcbisgICAgICAgICAgICAgICAgICAgICBcXFwic25wcyxkd21hYy01LjIwXFxcIjtcXG4rICAgICAgICByZWcgPSBcXHUwMDNjMHgwNDUxMDAwMCAweDgwMDBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFxcdTAwM2U7XFxuKyAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgNThcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmNjdSA1OVxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y2N1IDYwXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiLCBcXFwibWJ1c1xcXCIsIFxcXCJwdHBfcmVmXFxcIjtcXG4rICAgICAgICByZXNldHMgPSBcXHUwMDNjXFx1MDAyNmNjdSAzMFxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y2N1IDMxXFx1MDAzZTtcXG4rICAgICAgICByZXNldC1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiLCBcXFwiYWhiXFxcIjtcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzAgMTc1IDRcXHUwMDNlLCBcXHUwMDNjMCAxNzkgNFxcdTAwM2UsIFxcdTAwM2MwIDE3NiA0XFx1MDAzZSwgXFx1MDAzYzAgMTc3IDRcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiLCBcXFwiZXRoX2xwaVxcXCIsIFxcXCJ0eC1xdWV1ZS0wXFxcIiwgXFxcInJ4LXF1ZXVlLTBcXFwiO1xcbisgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZyZ21paTFfcGluc1xcdTAwM2U7XFxuKyAgICAgICAgcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2ZXh0X3JnbWlpX3BoeV8yXFx1MDAzZTtcXG4rICAgICAgICBwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuKyAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcXG4rXFxuKyAgICAgICAgbWRpbyB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy1tZGlvXFxcIjtcXG4rICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgZXh0X3JnbWlpX3BoeV8yOiBldGhlcm5ldC1waHlAMSB7XFxuKyAgICAgICAgICAgICAgICByZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgIH07XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuIC4uLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXFxuaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXFxuQEAgLTEwLDIxICsxMCwyMiBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZXNldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RtbWFjLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG4gXFxuLSNkZWZpbmUgU1lTQ09OX1JFR1xcdFxcdDB4MzRcXG4tXFxuIC8qIFJNSUkgc3BlY2lmaWMgYml0cyAqL1xcbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXFx0XFx0QklUKDEzKSAvKiAxOiBlbmFibGUgUk1JSSAob3ZlcnJpZGVzIEVQSVQpICovXFxuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xcbkBAIC0zNywxNyArMzgsOTkgQEBcXG4gI2RlZmluZSBTWVNDT05fRVRDU19FWFRfR01JSVxcdDB4MVxcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0lOVF9HTUlJXFx0MHgyXFxuIFxcbi1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4rc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEge1xcbitcXHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4rXFx0dW5zaWduZWQgaW50IGZsYWdzO1xcbitcXHR1MzIgZXR4ZGNfZXh0X21hc2s7XFxuK1xcdHUzMiBvZmZzZXQ7XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuK3tcXG4rXFx0c3RydWN0IHJlZ21hcCAqbWFwID1cXG4rXFx0XFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInN5c2NvblxcXCIpO1xcbitcXG4rXFx0aWYgKElTX0VSUihtYXApKVxcbitcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFBUUl9FUlIobWFwKSwgXFxcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHJldHVybiBtYXA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW42MGlfYTczM19yZWdtYXBfY2ZnID0ge1xcbitcXHQucmVnX2JpdHMgPSAzMixcXG4rXFx0LnZhbF9iaXRzID0gMzIsXFxuK1xcdC5yZWdfc3RyaWRlID0gNCxcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCh2b2lkICpkYXRhKVxcbiB7XFxuLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi1cXHUwMDNlb2Zfbm9kZTtcXG4rXFx0c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdCA9IGRhdGE7XFxuK1xcbitcXHRyZXNldF9jb250cm9sX2Fzc2VydChyc3QpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0dm9pZCBfX2lvbWVtICpiYXNlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxKTtcXG4rXFx0aWYgKElTX0VSUihiYXNlKSkge1xcbitcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihiYXNlKSwgXFxcInVuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9DQVNUKGJhc2UpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIXBsYXQtXFx1MDAzZXN0bW1hY19yc3QgfHwgIXBsYXQtXFx1MDAzZXN0bW1hY19haGJfcnN0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwibWlzc2luZyByZXF1aXJlZCByZXNldCBjb250cm9sc1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlclxcbitcXHQgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW1cXG4rXFx0ICogYW5kIHNob3VsZCBub3QgYmUgZG9uZSBhZ2FpbiBieSBzdG1tYWMgb3IgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbFxcbitcXHQgKiBiZSBsb3N0LlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gcmVzZXRfY29udHJvbF9hc3NlcnQocGxhdC1cXHUwMDNlc3RtbWFjX3JzdCk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KHBsYXQtXFx1MDAzZXN0bW1hY19yc3QpO1xcbitcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZGV2aWNlIHJlc2V0IGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHBsYXQtXFx1MDAzZXN0bW1hY19yc3QpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbitcXG4rXFx0cGxhdC1cXHUwMDNlc3RtbWFjX3JzdCA9IE5VTEw7XFxuK1xcbitcXHRyZXR1cm4gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGJhc2UsIFxcdTAwMjZzdW42MGlfYTczM19yZWdtYXBfY2ZnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuK1xcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhICpkYXRhKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBsb19iaXRzID0gaHdlaWdodDMyKFNZU0NPTl9FVFhEQ19NQVNLKTtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi1cXHUwMDNlZGV2Lm9mX25vZGU7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0dTMyIHZhbCwgcmVnID0gMDtcXG4rXFx0dTMyIG1heF9kZWxheTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobm9kZSwgXFxcInN5c2NvblxcXCIpO1xcbitcXHRtYXhfZGVsYXkgPSAoMVUgXFx1MDAzY1xcdTAwM2MgKGxvX2JpdHMgKyBod2VpZ2h0MzIoZGF0YS1cXHUwMDNlZXR4ZGNfZXh0X21hc2spKSkgLSAxO1xcbitcXG4rXFx0cmVnbWFwID0gZGF0YS1cXHUwMDNlZ2V0X3JlZ21hcChwZGV2LCBwbGF0KTtcXG4gXFx0aWYgKElTX0VSUihyZWdtYXApKVxcbi1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocmVnbWFwKSwgXFxcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocmVnbWFwKTtcXG4gXFxuIFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInR4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0aWYgKHZhbCAlIDEwMClcXG5AQCAtNTUsMTIgKzEzOCwxNSBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJ0eC1kZWxheSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTAwcHNcXFxcblxcXCIpO1xcbiBcXHRcXHR2YWwgLz0gMTAwO1xcbiBcXHRcXHRkZXZfZGJnKGRldiwgXFxcInNldCB0eC1kZWxheSB0byAleFxcXFxuXFxcIiwgdmFsKTtcXG4tXFx0XFx0aWYgKCFGSUVMRF9GSVQoU1lTQ09OX0VUWERDX01BU0ssIHZhbCkpXFxuK1xcdFxcdGlmICh2YWwgXFx1MDAzZSBtYXhfZGVsYXkpXFxuIFxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiVFggY2xvY2sgZGVsYXkgZXhjZWVkcyBtYXhpbXVtICgldTAwcHMgXFx1MDAzZSAlbHUwMHBzKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyBcXHUwMDNlICV1MDBwcylcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xcbiBcXG4tXFx0XFx0cmVnIHw9IEZJRUxEX1BSRVAoU1lTQ09OX0VUWERDX01BU0ssIHZhbCk7XFxuK1xcdFxcdHJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpO1xcbitcXHRcXHRpZiAoZGF0YS1cXHUwMDNlZXR4ZGNfZXh0X21hc2spXFxuK1xcdFxcdFxcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXFx1MDAzZWV0eGRjX2V4dF9tYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgIHZhbCBcXHUwMDNlXFx1MDAzZSBsb19iaXRzKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwicngtaW50ZXJuYWwtZGVsYXktcHNcXFwiLCBcXHUwMDI2dmFsKSkge1xcbkBAIC05NSwyMSArMTgxLDI5IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgcGh5X21vZGVzKHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UpKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS1cXHUwMDNlb2Zmc2V0LCByZWcpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFxcXCJGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxcXG5cXFwiKTtcXG4gXFxuK1xcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IGRhdGEtXFx1MDAzZWZsYWdzO1xcbitcXHRwbGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbitcXHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTtcXG4gXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbitcXHRpZiAoIWRhdGEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xMTgsMTEgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBsYXRfZGF0KTtcXG4gXFxuLVxcdC8qIEJTUCBkaXNhYmxlcyBpdCAqL1xcbi1cXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XFxuLVxcdHBsYXRfZGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xcbi1cXG4tXFx0cmV0ID0gc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihkZXYsIHBsYXRfZGF0KTtcXG4rXFx0cmV0ID0gc3VuNTVpX2dtYWMyMDBfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMTM4LDggKzIyOCwyNyBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiB9XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgc3VuNTVpX2E1MjNfZ21hYzIwMF9kYXRhID0ge1xcbitcXHQuZ2V0X3JlZ21hcCA9IHN1bjU1aV9nbWFjMjAwX2dldF9yZWdtYXAsXFxuK1xcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxcbitcXHQub2Zmc2V0ID0gMHgzNCxcXG4rXFx0LmV0eGRjX2V4dF9tYXNrID0gMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgPSB7XFxuK1xcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcXG4rXFx0LmZsYWdzID0gKFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFIHxcXG4rXFx0XFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxcbitcXHRcXHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCksXFxuK1xcdC5vZmZzZXQgPSAweDAsXFxuK1xcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcXG4rfTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXFwiIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXFwiLFxcbitcXHQgIC5kYXRhID0gXFx1MDAyNnN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxcIixcXG4rXFx0ICAuZGF0YSA9IFxcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcXG4gXFx0eyB9XFxuIH07XFxuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjU1aV9nbWFjMjAwX21hdGNoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6MTguMDkwODA3NjQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NDIwODE1NjUzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMjJlYzVjNjBhNjczN2M0NDBmOWFhOTI4MTYwNTIzYWNiOTcyYTdlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTM6MzQ6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5pbmRleCAzMjNhNjY5ZmE5ODIzLi5mZWM0MmY0NjM3OGFjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5AQCAtMjIsNiArMjIsNyBAQCBzZWxlY3Q6XG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjhpLXYzcy1lbWFjXG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hY1xuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4rICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiAgIHJlcXVpcmVkOlxuICAgICAtIGNvbXBhdGlibGVcbiBcbkBAIC00NCwyNSArNDUsMzggQEAgcHJvcGVydGllczpcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXG4rICAgICAgLSBpdGVtczpcbisgICAgICAgICAgLSBjb25zdDogYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbisgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xuKyAgICAgIC0gZGVzY3JpcHRpb246IEdsdWUgY29uZmlndXJhdGlvbiByZWdpc3RlcnNcbiBcbiAgIGludGVycnVwdHM6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiA0XG4gXG4gICBpbnRlcnJ1cHQtbmFtZXM6XG4tICAgIGNvbnN0OiBtYWNpcnFcbisgICAgbWluSXRlbXM6IDFcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogbWFjaXJxXG4rICAgICAgLSBjb25zdDogZXRoX2xwaVxuKyAgICAgIC0gY29uc3Q6IHR4LXF1ZXVlLTBcbisgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXG4gXG4gICBjbG9ja3M6XG4gICAgIG1pbkl0ZW1zOiAxXG4tICAgIG1heEl0ZW1zOiAyXG4rICAgIG1heEl0ZW1zOiAzXG4gXG4gICBjbG9jay1uYW1lczpcbiAgICAgbWluSXRlbXM6IDFcbiAgICAgaXRlbXM6XG4gICAgICAgLSBjb25zdDogc3RtbWFjZXRoXG4gICAgICAgLSBjb25zdDogbWJ1c1xuKyAgICAgIC0gY29uc3Q6IHB0cF9yZWZcbiBcbiAgIHBoeS1zdXBwbHk6XG4gICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yXG5AQCAtODcsNyArMTAxLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHJlc2V0LW5hbWVzXG4gICAtIHBoeS1oYW5kbGVcbiAgIC0gcGh5LW1vZGVcbi0gIC0gc3lzY29uXG4gXG4gYWxsT2Y6XG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbkBAIC0yMTksMzYgKzIzMiw5NCBAQCBhbGxPZjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICAgY29tcGF0aWJsZTpcbiAgICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgICAgY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4rICAgICAgICAgICAgZW51bTpcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiAgICAgdGhlbjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgY2xvY2tzOlxuLSAgICAgICAgICBtaW5JdGVtczogMlxuLSAgICAgICAgY2xvY2stbmFtZXM6XG4tICAgICAgICAgIG1pbkl0ZW1zOiAyXG4gICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbiAgICAgICAgICAgZGVmYXVsdDogMFxuICAgICAgICAgICBtaW5pbXVtOiAwXG4tICAgICAgICAgIG1heGltdW06IDcwMFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcbiAgICAgICAgICAgZGVzY3JpcHRpb246XG4tICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cbiAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuICAgICAgICAgICBkZWZhdWx0OiAwXG4gICAgICAgICAgIG1pbmltdW06IDBcbiAgICAgICAgICAgbWF4aW11bTogMzEwMFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcbiAgICAgICAgICAgZGVzY3JpcHRpb246XG4tICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuLSAgICAgIHJlcXVpcmVkOlxuLSAgICAgICAgLSBwb3dlci1kb21haW5zXG4rICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFJYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICBlbHNlOlxuICAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2tzOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2stbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4gICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBzeXNjb25cbitcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgY2xvY2tzOlxuKyAgICAgICAgICBtaW5JdGVtczogMlxuKyAgICAgICAgICBtYXhJdGVtczogMlxuKyAgICAgICAgY2xvY2stbmFtZXM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICAgIG1heEl0ZW1zOiAyXG4rICAgICAgICByZXNldHM6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICByZXNldC1uYW1lczpcbisgICAgICAgICAgbWF4SXRlbXM6IDFcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtYXhpbXVtOiA3MDBcbisgICAgICByZXF1aXJlZDpcbisgICAgICAgIC0gcG93ZXItZG9tYWluc1xuKyAgICAgICAgLSBzeXNjb25cbitcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtaW5JdGVtczogNFxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogNFxuKyAgICAgICAgY2xvY2tzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgICAgY2xvY2stbmFtZXM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXG4rICAgICAgICByZXNldHM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICByZXNldC1uYW1lczpcbisgICAgICAgICAgbWluSXRlbXM6IDJcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtYXhpbXVtOiAzMTAwXG4rICAgICAgICBzeXNjb246IGZhbHNlXG4rICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuIFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbkBAIC00MTIsNCArNDgzLDMzIEBAIGV4YW1wbGVzOlxuICAgICAgICAgICAgIH07XG4gICAgICAgICB9O1xuICAgICB9O1xuK1xuKyAgLSB8XG4rICAgIGV0aGVybmV0QDQ1MTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcIixcbisgICAgICAgICAgICAgICAgICAgICBcInNucHMsZHdtYWMtNS4yMFwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwNDUxMDAwMCAweDgwMDBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFx1MDAzZTtcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNjdSA1OFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDU5XHUwMDNlLCBcdTAwM2NcdTAwMjZjY3UgNjBcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwic3RtbWFjZXRoXCIsIFwibWJ1c1wiLCBcInB0cF9yZWZcIjtcbisgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNmNjdSAzMFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDMxXHUwMDNlO1xuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcInN0bW1hY2V0aFwiLCBcImFoYlwiO1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzAgMTc1IDRcdTAwM2UsIFx1MDAzYzAgMTc5IDRcdTAwM2UsIFx1MDAzYzAgMTc2IDRcdTAwM2UsIFx1MDAzYzAgMTc3IDRcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiLCBcImV0aF9scGlcIiwgXCJ0eC1xdWV1ZS0wXCIsIFwicngtcXVldWUtMFwiO1xuKyAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2cmdtaWkxX3BpbnNcdTAwM2U7XG4rICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXh0X3JnbWlpX3BoeV8yXHUwMDNlO1xuKyAgICAgICAgcGh5LW1vZGUgPSBcInJnbWlpLWlkXCI7XG4rICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuK1xuKyAgICAgICAgbWRpbyB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic25wcyxkd21hYy1tZGlvXCI7XG4rICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgICAgICBleHRfcmdtaWlfcGh5XzI6IGV0aGVybmV0LXBoeUAxIHtcbisgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICB9O1xuKyAgICAgICAgfTtcbisgICAgfTtcbiAuLi5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG5pbmRleCA4NjJkZjE3M2Q5NjNmLi4zZDQzNGE1MmZiMDJkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG5AQCAtMTAsMjEgKzEwLDIyIEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVzZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0bW1hYy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG4gXG4tI2RlZmluZSBTWVNDT05fUkVHXHRcdDB4MzRcbi1cbiAvKiBSTUlJIHNwZWNpZmljIGJpdHMgKi9cbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXHRcdEJJVCgxMykgLyogMTogZW5hYmxlIFJNSUkgKG92ZXJyaWRlcyBFUElUKSAqL1xuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xuQEAgLTM3LDE3ICszOCw5OSBAQFxuICNkZWZpbmUgU1lTQ09OX0VUQ1NfRVhUX0dNSUlcdDB4MVxuICNkZWZpbmUgU1lTQ09OX0VUQ1NfSU5UX0dNSUlcdDB4MlxuIFxuLXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbitzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSB7XG4rXHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4rXHR1bnNpZ25lZCBpbnQgZmxhZ3M7XG4rXHR1MzIgZXR4ZGNfZXh0X21hc2s7XG4rXHR1MzIgb2Zmc2V0O1xuK307XG4rXG4rc3RhdGljIHN0cnVjdCByZWdtYXAgKnN1bjU1aV9nbWFjMjAwX2dldF9yZWdtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbitcdFx0XHRcdFx0XHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4re1xuK1x0c3RydWN0IHJlZ21hcCAqbWFwID1cbitcdFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcInN5c2NvblwiKTtcbitcbitcdGlmIChJU19FUlIobWFwKSlcbitcdFx0ZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgUFRSX0VSUihtYXApLCBcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxuXCIpO1xuK1xuK1x0cmV0dXJuIG1hcDtcbit9XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHN1bjYwaV9hNzMzX3JlZ21hcF9jZmcgPSB7XG4rXHQucmVnX2JpdHMgPSAzMixcbitcdC52YWxfYml0cyA9IDMyLFxuK1x0LnJlZ19zdHJpZGUgPSA0LFxuK307XG4rXG4rc3RhdGljIHZvaWQgc3VuNjBpX2dtYWMyMTBfcmVzZXRfYXNzZXJ0KHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gZGV2LVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0ID0gZGF0YTtcbitcbitcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHJzdCk7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuK1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuK1x0aW50IHJldDtcbitcbitcdGJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSk7XG4rXHRpZiAoSVNfRVJSKGJhc2UpKSB7XG4rXHRcdGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGJhc2UpLCBcInVuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX0NBU1QoYmFzZSk7XG4rXHR9XG4rXG4rXHRpZiAoIXBsYXQtXHUwMDNlc3RtbWFjX3JzdCB8fCAhcGxhdC1cdTAwM2VzdG1tYWNfYWhiX3JzdCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJtaXNzaW5nIHJlcXVpcmVkIHJlc2V0IGNvbnRyb2xzXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlclxuK1x0ICogcmVzZXQgZG9tYWluLCBzbyB0aGUgcmVzZXQgbXVzdCBoYXBwZW4gYmVmb3JlIGFueSB3cml0ZSB0byB0aGVtXG4rXHQgKiBhbmQgc2hvdWxkIG5vdCBiZSBkb25lIGFnYWluIGJ5IHN0bW1hYyBvciB0aGUgY29uZmlndXJhdGlvbiB3aWxsXG4rXHQgKiBiZSBsb3N0LlxuK1x0ICovXG4rXHRyZXQgPSByZXNldF9jb250cm9sX2Fzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuK1x0aWYgKCFyZXQpXG4rXHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocGxhdC1cdTAwM2VzdG1tYWNfcnN0KTtcbitcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCJkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1x0fVxuK1xuK1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgc3VuNjBpX2dtYWMyMTBfcmVzZXRfYXNzZXJ0LFxuK1x0XHRcdFx0ICAgICAgIHBsYXQtXHUwMDNlc3RtbWFjX3JzdCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1xuK1x0cGxhdC1cdTAwM2VzdG1tYWNfcnN0ID0gTlVMTDtcbitcbitcdHJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIGJhc2UsIFx1MDAyNnN1bjYwaV9hNzMzX3JlZ21hcF9jZmcpO1xuK31cbitcbitzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4rXHRcdFx0XHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgbG9fYml0cyA9IGh3ZWlnaHQzMihTWVNDT05fRVRYRENfTUFTSyk7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBwZGV2LVx1MDAzZWRldi5vZl9ub2RlO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHR1MzIgdmFsLCByZWcgPSAwO1xuK1x0dTMyIG1heF9kZWxheTtcbiBcdGludCByZXQ7XG4gXG4tXHRyZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5vZGUsIFwic3lzY29uXCIpO1xuK1x0bWF4X2RlbGF5ID0gKDFVIFx1MDAzY1x1MDAzYyAobG9fYml0cyArIGh3ZWlnaHQzMihkYXRhLVx1MDAzZWV0eGRjX2V4dF9tYXNrKSkpIC0gMTtcbitcbitcdHJlZ21hcCA9IGRhdGEtXHUwMDNlZ2V0X3JlZ21hcChwZGV2LCBwbGF0KTtcbiBcdGlmIChJU19FUlIocmVnbWFwKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHJlZ21hcCksIFwiVW5hYmxlIHRvIG1hcCBzeXNjb25cXG5cIik7XG4rXHRcdHJldHVybiBQVFJfRVJSKHJlZ21hcCk7XG4gXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwidHgtaW50ZXJuYWwtZGVsYXktcHNcIiwgXHUwMDI2dmFsKSkge1xuIFx0XHRpZiAodmFsICUgMTAwKVxuQEAgLTU1LDEyICsxMzgsMTUgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0ICAgICBcInR4LWRlbGF5IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDBwc1xcblwiKTtcbiBcdFx0dmFsIC89IDEwMDtcbiBcdFx0ZGV2X2RiZyhkZXYsIFwic2V0IHR4LWRlbGF5IHRvICV4XFxuXCIsIHZhbCk7XG4tXHRcdGlmICghRklFTERfRklUKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpKVxuK1x0XHRpZiAodmFsIFx1MDAzZSBtYXhfZGVsYXkpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFx0XHQgICAgIFwiVFggY2xvY2sgZGVsYXkgZXhjZWVkcyBtYXhpbXVtICgldTAwcHMgXHUwMDNlICVsdTAwcHMpXFxuXCIsXG4tXHRcdFx0XHRcdCAgICAgdmFsLCBGSUVMRF9NQVgoU1lTQ09OX0VUWERDX01BU0spKTtcbitcdFx0XHRcdFx0ICAgICBcIlRYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzIFx1MDAzZSAldTAwcHMpXFxuXCIsXG4rXHRcdFx0XHRcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xuIFxuLVx0XHRyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTtcbitcdFx0cmVnIHw9IGZpZWxkX3ByZXAoU1lTQ09OX0VUWERDX01BU0ssIHZhbCk7XG4rXHRcdGlmIChkYXRhLVx1MDAzZWV0eGRjX2V4dF9tYXNrKVxuK1x0XHRcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2ssXG4rXHRcdFx0XHRcdCAgdmFsIFx1MDAzZVx1MDAzZSBsb19iaXRzKTtcbiBcdH1cbiBcbiBcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCJyeC1pbnRlcm5hbC1kZWxheS1wc1wiLCBcdTAwMjZ2YWwpKSB7XG5AQCAtOTUsMjEgKzE4MSwyOSBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICBwaHlfbW9kZXMocGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlKSk7XG4gXHR9XG4gXG4tXHRyZXQgPSByZWdtYXBfd3JpdGUocmVnbWFwLCBTWVNDT05fUkVHLCByZWcpO1xuK1x0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS1cdTAwM2VvZmZzZXQsIHJlZyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCJGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxuXCIpO1xuIFxuK1x0cGxhdC1cdTAwM2VmbGFncyB8PSBkYXRhLVx1MDAzZWZsYWdzO1xuK1x0cGxhdC1cdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuK1x0Y29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgKmRhdGE7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG4gXHRpbnQgcmV0O1xuIFxuK1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuK1x0aWYgKCFkYXRhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xMTgsMTEgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChJU19FUlIocGxhdF9kYXQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdCk7XG4gXG4tXHQvKiBCU1AgZGlzYWJsZXMgaXQgKi9cbi1cdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFO1xuLVx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSAzMjtcbi1cbi1cdHJldCA9IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oZGV2LCBwbGF0X2RhdCk7XG4rXHRyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTEzOCw4ICsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSA9IHtcbitcdC5nZXRfcmVnbWFwID0gc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcCxcbitcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxuK1x0Lm9mZnNldCA9IDB4MzQsXG4rXHQuZXR4ZGNfZXh0X21hc2sgPSAwLFxuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSA9IHtcbitcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcbitcdC5mbGFncyA9IChTVE1NQUNfRkxBR19TUEhfRElTQUJMRSB8XG4rXHRcdCAgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOIHxcbitcdFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxuK1x0Lm9mZnNldCA9IDB4MCxcbitcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XG4tXHR7IC5jb21wYXRpYmxlID0gXCJhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwiIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwiLFxuK1x0ICAuZGF0YSA9IFx1MDAyNnN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcIixcbitcdCAgLmRhdGEgPSBcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcbiBcdHsgfVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6MTguMDkwODA5Mzc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI1OTc2OTYyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0J3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgYXBwbHlpbmcgb3VyIHN0YW5kYXJkIGd1aWRlbGluZXMsIG9mIGNvdXJzZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBiZWluZyBjaGFuZ2VkLiBUaGUgcGF0Y2ggdG91Y2hlcyB0d28gZmlsZXM6IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY2AuIFRoZSBZQU1MIGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggZGV2aWNlIHRyZWUgYmluZGluZ3MsIHNvIHdlJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBsYXRlci5cblxuTXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhhdCBDIGZpbGUsIGBkd21hYy1zdW41NWkuY2AuIEhtbSwgcmlnaHQsIGl0J3MgYW4gQWxsd2lubmVyIFNvQyBldGhlcm5ldCBnbHVlIGRyaXZlci4gSXQncyBhbiBzdG1tYWMgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBbGx3aW5uZXIgc3VuNTVpIGFuZCBzdW42MGkgQVJNIFNvQ3MuIE9rYXksIHRoYXQgZ2l2ZXMgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgY29uZmlndXJlZC4gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJcyBpdCBhIG1vZHVsZT8gV2hhdCBidWlsZCBvcHRpb25zIGRvIHdlIGhhdmUgdG8gd29yayB3aXRoIHdoZW4gYXR0ZW1wdGluZyBmdXp6aW5nPyBUaGlzIHdpbGwgYWxsIGluZm9ybSBob3cgd2UgYXBwcm9hY2ggaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgaG93IHdlIGNhbiBiZXN0IHRhcmdldCB0aGUgY29kZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjMwLjY4ODUwNzY5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU4ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19TVU41NUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDA6Y29uZmlnIERXTUFDX1NVTjU1SVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAxLVxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19EV01BQ19TVU44SSlcXHQrPSBkd21hYy1zdW44aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcXHQrPSBkd21hYy1zdW41NWkub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19EV01BQ19USEVBRClcXHQrPSBkd21hYy10aGVhZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjMwLjczMzEwMDcxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3ODgzOTk3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBmcmFtZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERXTUFDX1NVTjU1SSBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZvciBgRFdNQUNfU1VONTVJYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlcidzIGZlYXR1cmVzIGFyZSBjb25maWd1cmVkIGFuZCBleHBvc2VkIGF0IGNvbXBpbGUgdGltZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgb24gdGhlIFN1bjU1aSBwbGF0Zm9ybS4gTGV0J3Mgc2VlLi4uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNoaXAtc3BlY2lmaWMgZGVmaW5lczoqKiBJIGJldCB0aGVyZSBhcmUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgU3VuNTVpIFNvQyB2YXJpYW50LiBUaGlzIGxpa2VseSBnb3Zlcm5zIHJlZ2lzdGVyIG9mZnNldHMsIGNsb2NrIGNvbmZpZ3VyYXRpb25zLCBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLlxuKiAgICoqRmVhdHVyZSBmbGFnczoqKiBBcmUgdGhlcmUgYW55IG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgTUFDIGZlYXR1cmVzPyBUaGluZ3MgbGlrZSBjaGVja3N1bSBvZmZsb2FkaW5nLCBWTEFOIHN1cHBvcnQsIERNQSBzZXR0aW5ncyDigJMgdGhlc2UgYXJlIGFsbCBmYWlyIGdhbWUuIEkgd2lsbCBiZSBvbiB0aGUgbG9va291dCBmb3Igd2F5cyB0byB0b2dnbGUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuXG4qICAgKipEZXBlbmRlbmN5IGNoZWNrczoqKiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBEV01BQ19TVU41NUlgIGJlY29tZXMgYXZhaWxhYmxlLiBUaGlzIHdpbGwgc2hvdyB0aGUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBvdGhlciBoYXJkd2FyZSBjb21wb25lbnRzIGFuZCBkcml2ZXJzLlxuKiAgICoqSGVscCB0ZXh0OioqIEkgaG9wZSB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGFuZCBkZXRhaWxlZC4gR29vZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHdlbGwtZG9jdW1lbnRlZCwgZXhwbGFpbmluZyB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIGl0cyBpbXBhY3QuIFRoaXMgd2lsbCBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyB0aW1lLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogSXQgd2lsbCBiZSBnb29kIHRvIHNlZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBhcyBpdCBnaXZlcyBhbiBpbW1lZGlhdGUgc2Vuc2Ugb2YgdGhlIGludGVuZGVkIHVzZSBjYXNlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiBuZXcgY2hhbmdlcyBhbmQgZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBwcm9wZXIgd29ya2luZyBvcmRlci5cblxuUmlnaHQsIGxldCdzIHN0YXJ0IHJlYWRpbmcgYW5kIHNlZSB3aGF0IGluc2lnaHRzIHdlIGNhbiB1bmNvdmVyLiBUaW1lIHRvIGJlY29tZSBvbmUgd2l0aCB0aGUgYEtjb25maWdgLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDozMy41MjE1MDg4NTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDozMy41MjE1ODUzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDI0MzMwNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoYWJpbGl0eSBBbmFseXNpczogTXkgVGhvdWdodHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uIHVzaW5nIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBvdXRsaW5lZCBpbiBTZWN0aW9ucyAxIGFuZCAyLiBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBsZXQncyBjaGVjayB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIGZvciB0aGluZ3MgdGhhdCBtaWdodCAqbm90KiBiZSByZWFjaGFibGUuXG5cbkZpcnN0LCB3ZSBuZWVkIHRvIGVsaW1pbmF0ZSBub24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCB3aGljaCBpcyBhIGdpdmVuLCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoaW5ncyB0aGF0IGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIFRoaXMgaW5zdGFudGx5IGJyaW5ncyB0byBtaW5kIHRob3NlIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSdtIHRoaW5raW5nIG9mOlxuXG4qICAgVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoZXkgbmVlZCB0aG9zZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBsaXN0IHJlbWluZHMgbWUsIGZvciBleGFtcGxlLCBvZiB0aGluZ3MgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLlxuKiAgIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIEFSTS92ZW5kb3IgU29DcyBhcmUgYWxzbyBpbiB0aGUgdW5yZWFjaGFibGUgY2F0ZWdvcnkuIFRoaW5ncyBsaWtlIEFsbHdpbm5lci9TdW54aSBTb0MgR01BQyBldGhlcm5ldCBjb250cm9sbGVycyBzdGljayBvdXQuIFRoZXNlIGFyZSBwbGF0Zm9ybSBkZXZpY2VzIHNwZWNpZmljIHRvIHRob3NlIFNvQ3MsIGFuZCwgc3BlY2lmaWNhbGx5IGZvciBgQVJDSF9TVU5YSWAsIGBzdW41NWlgLCBhbmQgYHN1bjYwaWAsIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgYm9hcmQgY29uZmlncyBvbiBBUk0gU29Dcy4gSW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0Ugc3l6a2FsbGVyIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aGVyZSdzIG5vIHdheSB0byBpbnN0YW50aWF0ZSB0aGVtLiBUaGF0IHBsYXRmb3JtIGRldmljZS9kcml2ZXIgY2FuJ3QgYmUgcHJvYmVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRob3NlIE9GIGRldmljZSB0cmVlIG5vZGVzIGxpa2UgYGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwYCBvciBgYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBgIG9uIFN1bnhpIFNvQ3MsIGFuZCB3ZSBkb24ndCBoYXZlIHRob3NlIGluIHRoaXMgc2V0dXAuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzICphbnkqIHBvc3NpYmlsaXR5IG9mIHZpcnR1YWwgYnVzIG9yIHVzZXJzcGFjZSByZWFjaGFiaWxpdHkgZm9yIHNvbWV0aGluZyBsaWtlIGBkd21hYy1zdW41NWlgIG9uIGFtZDY0LiBMZXQncyBzZWUuLi4gaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcilgLCBhbmQgaXQgaGFzIHRoYXQgT0YgbWF0Y2ggdGFibGUsIGBzdW41NWlfZ21hYzIwMF9tYXRjaGAuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSwgaW4gYGR3bWFjLXN1bjU1aS5jYCwgYW5kIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdHJpY2tlcnkgb3IgaW5kaXJlY3QgYWNjZXNzIEkgbWlnaHQgYmUgbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE5NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjM3LjU0NTkxOTA1OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHRcXHQuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxcbiAyNDE6XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxcbiAyNDI6XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxcbiAyNDM6XFx0XFx0Lm9mZnNldCA9IDB4MCxcXG4gMjQ0OlxcdFxcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcXG4gMjQ1OlxcdH07XFxuIDI0NjpcXHRcXG4gMjQ3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuIDI0ODpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXFxcIixcXG4gMjQ5OlxcdFxcdCAgLmRhdGEgPSBcXHUwMDI2c3VuNTVpX2E1MjNfZ21hYzIwMF9kYXRhIH0sXFxuIDI1MDpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxcIixcXG4gMjUxOlxcdFxcdCAgLmRhdGEgPSBcXHUwMDI2c3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhIH0sXFxuIDI1MjpcXHRcXHR7IH1cXG4gMjUzOlxcdH07XFxuIDI1NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcXG4gMjU3OlxcdFxcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcXG4gMjU4OlxcdFxcdC5kcml2ZXIgPSB7XFxuIDI1OTpcXHRcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZHdtYWMtc3VuNTVpXFxcIixcXG4gMjYwOlxcdFxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuIDI2MTpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBzdW41NWlfZ21hYzIwMF9tYXRjaCxcXG4gMjYyOlxcdFxcdH0sXFxuIDI2MzpcXHR9O1xcbiAyNjQ6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpO1xcbiAyNjU6XFx0XFxuIDI2NjpcXHRNT0RVTEVfQVVUSE9SKFxcXCJDaGVuLVl1IFRzYWkgXFx1MDAzY3dlbnNAY3NpZS5vcmdcXHUwMDNlXFxcIik7XFxuIDI2NzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzcGVjaWZpYyBnbHVlIGxheWVyXFxcIik7XFxuIDI2ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjM3LjU0NTk5NDYxOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzUyOTIzMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBUYXJnZXQgQ29kZSBhbmQgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGNoYW5nZSBpc24ndCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyBhbiBBbGx3aW5uZXIgc3VueGkgU29DIHBsYXRmb3JtIGRyaXZlci4gVGhlIGNvZGUncyBsb29raW5nIGZvciB0aG9zZSBzcGVjaWZpYyBPRiBjb21wYXRpYmxlIHN0cmluZ3M6IGBcImFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCJgIGFuZCBgXCJhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFwiYCwgcGx1cyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCBoYXJkd2FyZSByZXNvdXJjZXMuIFllcCwgdGhhdCdzIHdoYXQgSSB0aG91Z2h0LiBDbG9ja3MsIHJlc2V0cywgTU1JTywgdGhlIHdvcmtzLlxuXG5TZWNvbmQsIEkgc2VlIHRoaXMgb25seSBydW5zIG9uIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIFNvQ3MuIEFuZCBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSDigJMgdGhpcyBpcyBBUk0vQVJNNjQuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBgQVJDSF9TVU5YSWAgaXNuJ3QgZXZlbiBlbmFibGVkIG9uIGFtZDY0LCBtZWFuaW5nIHRoZSBjb21waWxlciBjYW4gb25seSAqY29tcGlsZSogdGhlIGNvZGUsIG5vdCBhY3R1YWxseSBydW4gYW5kIHByb2JlIGl0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlcmUgd29uJ3QgYmUgYW55IG9mIHRoZXNlIHBsYXRmb3JtIGRldmljZXMgcHJvYmVkIGluIG15IHN0YW5kYXJkIHg4Nl82NCBvciBhbWQ2NCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkxldCBtZSBkb3VibGUgY2hlY2sgdGhvc2UgZGV0YWlscyByZWFsIHF1aWNrLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYm90aCB0aGUgZG9jdW1lbnRhdGlvbiAoZGV2aWNldHJlZSBiaW5kaW5ncykgYW5kIHRoZSBgZHdtYWMtc3VuNTVpLmNgIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBnbHVlIGRyaXZlciBmb3IgQWxsd2lubmVyIHN1bnhpIFNvQyBldGhlcm5ldCBjb250cm9sbGVycy4gVGhpcyBpcyBkZXBlbmRlbnQgb24gdGhlIFNvQydzIGRldmljZSB0cmVlIGFuZCByZXF1aXJlcyBkaXJlY3QgYWNjZXNzIHRvIG1lbW9yeS1tYXBwZWQgaGFyZHdhcmUgcmVnaXN0ZXJzLCByZXNldHMsIGFuZCBjbG9ja3MuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBvbiBteSBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIHRlc3QgZW52aXJvbm1lbnRzLlxuXG5Pa2F5LCBzbyB0aGUgdmVyZGljdDogKipXb3J0aEZ1enppbmcgc2hvdWxkIGJlIGZhbHNlLioqXG5cbk5vdyB0byBwcmVwYXJlIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKipcbiogICAqKkVuYWJsZUNvbmZpZ3M6IFxcWyBdKiogKGFuIGVtcHR5IGFycmF5KSBiZWNhdXNlIHRoZXJlJ3Mgbm90aGluZyB0byBlbmFibGUgb24gdGhpcyBhcmNoaXRlY3R1cmVcbiogICAqKkZvY3VzU3ltYm9sczogXFxbIF0qKiAoYW5vdGhlciBlbXB0eSBhcnJheSkgc2luY2Ugd2UncmUgbm90IGZvY3VzaW5nIG9uIGFueSBwYXJ0aWN1bGFyIHBhcnQgb2YgdGhpcyBjb2RlLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgZGV2aWNldHJlZSBiaW5kaW5ncyBhbmQgdGhlIGBkd21hYy1zdW41NWlgIHBsYXRmb3JtIGdsdWUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEFSTSBTb0NzIHdpdGggdGhlIGRldmljZXMgZGVmaW5lZCBieSB0aGUgY29tcGF0aWJsZSBzdHJpbmdzIChgc3VuNTVpLWE1MjMtZ21hYzIwMGAsIGBzdW42MGktYTczMy1nbWFjMjEwYCkuIFRoZSBjb2RlIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCByZXF1aXJlcyBhIGRldmljZSB0cmVlL3BoeXNpY2FsIFNvQyB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNToxMi4yOTg5MjAyMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRldmljZXRyZWUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEdNQUMgZXRoZXJuZXQgZ2x1ZSBkcml2ZXIgKGR3bWFjLXN1bjU1aS5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBBUk0vQWxsd2lubmVyIFNvQyBoYXJkd2FyZSAoc3VuNTVpLWE1MjMgYW5kIHN1bjYwaS1hNzMzKSB2aWEgRGV2aWNlVHJlZSBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBhbWQ2NCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRldmljZXRyZWUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEdNQUMgZXRoZXJuZXQgZ2x1ZSBkcml2ZXIgKGR3bWFjLXN1bjU1aS5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBBUk0vQWxsd2lubmVyIFNvQyBoYXJkd2FyZSAoc3VuNTVpLWE1MjMgYW5kIHN1bjYwaS1hNzMzKSB2aWEgRGV2aWNlVHJlZSBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBhbWQ2NCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNToxMi4yOTg5NjYwMDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownqhvg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 12:42:45 +0000 UTC FinishedAt: 2026-09-10 13:35: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+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyMmVjNWM2MGE2NzM3YzQ0MGY5YWE5MjgxNjA1MjNhY2I5NzJhN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5pbmRleCAzMjNhNjY5ZmE5ODIzLi5mZWM0MmY0NjM3OGFjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEAgc2VsZWN0OlxuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW44aS12M3MtZW1hY1xuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuJiM0MzsgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuICAgcmVxdWlyZWQ6XG4gICAgIC0gY29tcGF0aWJsZVxuIFxuQEAgLTQ0LDI1ICYjNDM7NDUsMzggQEAgcHJvcGVydGllczpcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXG4mIzQzOyAgICAgIC0gaXRlbXM6XG4mIzQzOyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuJiM0MzsgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG4tICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICBtaW5JdGVtczogMVxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBHbHVlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzXG4gXG4gICBpbnRlcnJ1cHRzOlxuLSAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiA0XG4gXG4gICBpbnRlcnJ1cHQtbmFtZXM6XG4tICAgIGNvbnN0OiBtYWNpcnFcbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogbWFjaXJxXG4mIzQzOyAgICAgIC0gY29uc3Q6IGV0aF9scGlcbiYjNDM7ICAgICAgLSBjb25zdDogdHgtcXVldWUtMFxuJiM0MzsgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXG4gXG4gICBjbG9ja3M6XG4gICAgIG1pbkl0ZW1zOiAxXG4tICAgIG1heEl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogM1xuIFxuICAgY2xvY2stbmFtZXM6XG4gICAgIG1pbkl0ZW1zOiAxXG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuICAgICAgIC0gY29uc3Q6IG1idXNcbiYjNDM7ICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuICAgcGh5LXN1cHBseTpcbiAgICAgZGVzY3JpcHRpb246IFBIWSByZWd1bGF0b3JcbkBAIC04Nyw3ICYjNDM7MTAxLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHJlc2V0LW5hbWVzXG4gICAtIHBoeS1oYW5kbGVcbiAgIC0gcGh5LW1vZGVcbi0gIC0gc3lzY29uXG4gXG4gYWxsT2Y6XG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbkBAIC0yMTksMzYgJiM0MzsyMzIsOTQgQEAgYWxsT2Y6XG4gICAgICAgcHJvcGVydGllczpcbiAgICAgICAgIGNvbXBhdGlibGU6XG4gICAgICAgICAgIGNvbnRhaW5zOlxuLSAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcbiYjNDM7ICAgICAgICAgICAgICAtIGFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXG4gICAgIHRoZW46XG4gICAgICAgcHJvcGVydGllczpcbi0gICAgICAgIGNsb2Nrczpcbi0gICAgICAgICAgbWluSXRlbXM6IDJcbi0gICAgICAgIGNsb2NrLW5hbWVzOlxuLSAgICAgICAgICBtaW5JdGVtczogMlxuICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4gICAgICAgICAgIGRlZmF1bHQ6IDBcbiAgICAgICAgICAgbWluaW11bTogMFxuLSAgICAgICAgICBtYXhpbXVtOiA3MDBcbiAgICAgICAgICAgbXVsdGlwbGVPZjogMTAwXG4gICAgICAgICAgIGRlc2NyaXB0aW9uOlxuLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cbiYjNDM7ICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4gICAgICAgICAgIGRlZmF1bHQ6IDBcbiAgICAgICAgICAgbWluaW11bTogMFxuICAgICAgICAgICBtYXhpbXVtOiAzMTAwXG4gICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMFxuICAgICAgICAgICBkZXNjcmlwdGlvbjpcbi0gICAgICAgICAgICBFeHRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuXG4tICAgICAgcmVxdWlyZWQ6XG4tICAgICAgICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFJYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICBlbHNlOlxuICAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgcmVnOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2tzOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2stbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4gICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuJiM0MzsgICAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgICAtIHN5c2NvblxuJiM0MztcbiYjNDM7ICAtIGlmOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIGNvbXBhdGlibGU6XG4mIzQzOyAgICAgICAgICBjb250YWluczpcbiYjNDM7ICAgICAgICAgICAgY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4mIzQzOyAgICB0aGVuOlxuJiM0MzsgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgIHJlZzpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgaW50ZXJydXB0czpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgICAgICBjbG9ja3M6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDJcbiYjNDM7ICAgICAgICBjbG9jay1uYW1lczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMlxuJiM0MzsgICAgICAgIHJlc2V0czpcbiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgICAgICAgbWF4aW11bTogNzAwXG4mIzQzOyAgICAgIHJlcXVpcmVkOlxuJiM0MzsgICAgICAgIC0gcG93ZXItZG9tYWluc1xuJiM0MzsgICAgICAgIC0gc3lzY29uXG4mIzQzO1xuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgcmVnOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDJcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOlxuJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDRcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogNFxuJiM0MzsgICAgICAgIGNsb2NrczpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzXG4mIzQzOyAgICAgICAgY2xvY2stbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogM1xuJiM0MzsgICAgICAgIHJlc2V0czpcbiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXM6XG4mIzQzOyAgICAgICAgICBtaW5JdGVtczogMlxuJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgICAgICAgbWF4aW11bTogMzEwMFxuJiM0MzsgICAgICAgIHN5c2NvbjogZmFsc2VcbiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuIFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbkBAIC00MTIsNCAmIzQzOzQ4MywzMyBAQCBleGFtcGxlczpcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgfTtcbiAgICAgfTtcbiYjNDM7XG4mIzQzOyAgLSB8XG4mIzQzOyAgICBldGhlcm5ldEA0NTEwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3NucHMsZHdtYWMtNS4yMFwmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDA0NTEwMDAwIDB4ODAwMFx1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICBcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgNThcdTAwM2UsIFx1MDAzY1x1MDAyNmNjdSA1OVx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDYwXHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7LCBcJiMzNDttYnVzXCYjMzQ7LCBcJiMzNDtwdHBfcmVmXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNmNjdSAzMFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDMxXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlc2V0LW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7LCBcJiMzNDthaGJcJiMzNDs7XG4mIzQzOyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzAgMTc1IDRcdTAwM2UsIFx1MDAzYzAgMTc5IDRcdTAwM2UsIFx1MDAzYzAgMTc2IDRcdTAwM2UsIFx1MDAzYzAgMTc3IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gXCYjMzQ7bWFjaXJxXCYjMzQ7LCBcJiMzNDtldGhfbHBpXCYjMzQ7LCBcJiMzNDt0eC1xdWV1ZS0wXCYjMzQ7LCBcJiMzNDtyeC1xdWV1ZS0wXCYjMzQ7O1xuJiM0MzsgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuJiM0MzsgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNnJnbWlpMV9waW5zXHUwMDNlO1xuJiM0MzsgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZleHRfcmdtaWlfcGh5XzJcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbiYjNDM7ICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuJiM0MztcbiYjNDM7ICAgICAgICBtZGlvIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3NucHMsZHdtYWMtbWRpb1wmIzM0OztcbiYjNDM7ICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBleHRfcmdtaWlfcGh5XzI6IGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIH07XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4gLi4uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xuaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xuQEAgLTEwLDIxICYjNDM7MTAsMjIgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZXNldC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RtbWFjLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG4gXG4tI2RlZmluZSBTWVNDT05fUkVHXHRcdDB4MzRcbi1cbiAvKiBSTUlJIHNwZWNpZmljIGJpdHMgKi9cbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXHRcdEJJVCgxMykgLyogMTogZW5hYmxlIFJNSUkgKG92ZXJyaWRlcyBFUElUKSAqL1xuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xuQEAgLTM3LDE3ICYjNDM7MzgsOTkgQEBcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0VYVF9HTUlJXHQweDFcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0lOVF9HTUlJXHQweDJcbiBcbi1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4mIzQzO3N0cnVjdCBzdW41NWlfZ21hY19kYXRhIHtcbiYjNDM7XHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuJiM0MztcdHVuc2lnbmVkIGludCBmbGFncztcbiYjNDM7XHR1MzIgZXR4ZGNfZXh0X21hc2s7XG4mIzQzO1x0dTMyIG9mZnNldDtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW41NWlfZ21hYzIwMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWdtYXAgKm1hcCA9XG4mIzQzO1x0XHRzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O3N5c2NvblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIobWFwKSlcbiYjNDM7XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFBUUl9FUlIobWFwKSwgXCYjMzQ7VW5hYmxlIHRvIG1hcCBzeXNjb25cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWFwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgc3VuNjBpX2E3MzNfcmVnbWFwX2NmZyA9IHtcbiYjNDM7XHQucmVnX2JpdHMgPSAzMixcbiYjNDM7XHQudmFsX2JpdHMgPSAzMixcbiYjNDM7XHQucmVnX3N0cmlkZSA9IDQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdW42MGlfZ21hYzIxMF9yZXNldF9hc3NlcnQodm9pZCAqZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBkZXYtXHUwMDNlb2Zfbm9kZTtcbiYjNDM7XHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0cmVzZXRfY29udHJvbF9hc3NlcnQocnN0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCByZWdtYXAgKnN1bjYwaV9nbWFjMjEwX2dldF9yZWdtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiYjNDM7XHRcdFx0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSk7XG4mIzQzO1x0aWYgKElTX0VSUihiYXNlKSkge1xuJiM0MztcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoYmFzZSksIFwmIzM0O3VuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfQ0FTVChiYXNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghcGxhdC1cdTAwM2VzdG1tYWNfcnN0IHx8ICFwbGF0LVx1MDAzZXN0bW1hY19haGJfcnN0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bWlzc2luZyByZXF1aXJlZCByZXNldCBjb250cm9sc1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFyZSBpbnNpZGUgdGhlIGNvbnRyb2xsZXJcbiYjNDM7XHQgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW1cbiYjNDM7XHQgKiBhbmQgc2hvdWxkIG5vdCBiZSBkb25lIGFnYWluIGJ5IHN0bW1hYyBvciB0aGUgY29uZmlndXJhdGlvbiB3aWxsXG4mIzQzO1x0ICogYmUgbG9zdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSByZXNldF9jb250cm9sX2Fzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0cmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBzdW42MGlfZ21hYzIxMF9yZXNldF9hc3NlcnQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHBsYXQtXHUwMDNlc3RtbWFjX3JzdCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4mIzQzO1xuJiM0MztcdHBsYXQtXHUwMDNlc3RtbWFjX3JzdCA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIGJhc2UsIFx1MDAyNnN1bjYwaV9hNzMzX3JlZ21hcF9jZmcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4mIzQzO1x0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuJiM0MztcdFx0XHRcdGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGxvX2JpdHMgPSBod2VpZ2h0MzIoU1lTQ09OX0VUWERDX01BU0spO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHR1MzIgdmFsLCByZWcgPSAwO1xuJiM0MztcdHUzMiBtYXhfZGVsYXk7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShub2RlLCBcJiMzNDtzeXNjb25cJiMzNDspO1xuJiM0MztcdG1heF9kZWxheSA9ICgxVSBcdTAwM2NcdTAwM2MgKGxvX2JpdHMgJiM0MzsgaHdlaWdodDMyKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2spKSkgLSAxO1xuJiM0MztcbiYjNDM7XHRyZWdtYXAgPSBkYXRhLVx1MDAzZWdldF9yZWdtYXAocGRldiwgcGxhdCk7XG4gXHRpZiAoSVNfRVJSKHJlZ21hcCkpXG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihyZWdtYXApLCBcJiMzNDtVbmFibGUgdG8gbWFwIHN5c2NvblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihyZWdtYXApO1xuIFxuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wc1wmIzM0OywgXHUwMDI2dmFsKSkge1xuIFx0XHRpZiAodmFsICUgMTAwKVxuQEAgLTU1LDEyICYjNDM7MTM4LDE1IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCAgICAgXCYjMzQ7dHgtZGVsYXkgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDEwMHBzXFxuXCYjMzQ7KTtcbiBcdFx0dmFsIC89IDEwMDtcbiBcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O3NldCB0eC1kZWxheSB0byAleFxcblwmIzM0OywgdmFsKTtcbi1cdFx0aWYgKCFGSUVMRF9GSVQoU1lTQ09OX0VUWERDX01BU0ssIHZhbCkpXG4mIzQzO1x0XHRpZiAodmFsIFx1MDAzZSBtYXhfZGVsYXkpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFx0XHQgICAgIFwmIzM0O1RYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzIFx1MDAzZSAlbHUwMHBzKVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpO1xuJiM0MztcdFx0XHRcdFx0ICAgICBcJiMzNDtUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyBcdTAwM2UgJXUwMHBzKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xuIFxuLVx0XHRyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTtcbiYjNDM7XHRcdHJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpO1xuJiM0MztcdFx0aWYgKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2spXG4mIzQzO1x0XHRcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2ssXG4mIzQzO1x0XHRcdFx0XHQgIHZhbCBcdTAwM2VcdTAwM2UgbG9fYml0cyk7XG4gXHR9XG4gXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZ2YWwpKSB7XG5AQCAtOTUsMjEgJiM0MzsxODEsMjkgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgcGh5X21vZGVzKHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSkpO1xuIFx0fVxuIFxuLVx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfd3JpdGUocmVnbWFwLCBkYXRhLVx1MDAzZW9mZnNldCwgcmVnKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxuXCYjMzQ7KTtcbiBcbiYjNDM7XHRwbGF0LVx1MDAzZWZsYWdzIHw9IGRhdGEtXHUwMDNlZmxhZ3M7XG4mIzQzO1x0cGxhdC1cdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuJiM0MztcdGlmICghZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xMTgsMTEgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGxhdF9kYXQpO1xuIFxuLVx0LyogQlNQIGRpc2FibGVzIGl0ICovXG4tXHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcbi1cdHBsYXRfZGF0LVx1MDAzZWhvc3RfZG1hX3dpZHRoID0gMzI7XG4tXG4tXHRyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKGRldiwgcGxhdF9kYXQpO1xuJiM0MztcdHJldCA9IHN1bjU1aV9nbWFjMjAwX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTM4LDggJiM0MzsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgPSB7XG4mIzQzO1x0LmdldF9yZWdtYXAgPSBzdW41NWlfZ21hYzIwMF9nZXRfcmVnbWFwLFxuJiM0MztcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxuJiM0MztcdC5vZmZzZXQgPSAweDM0LFxuJiM0MztcdC5ldHhkY19leHRfbWFzayA9IDAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgc3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhID0ge1xuJiM0MztcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcbiYjNDM7XHQuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxuJiM0MztcdFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxuJiM0MztcdFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxuJiM0MztcdC5vZmZzZXQgPSAweDAsXG4mIzQzO1x0LmV0eGRjX2V4dF9tYXNrID0gR0VOTUFTSygxNywgMTYpLFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW41NWlfZ21hYzIwMF9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCYjMzQ7IH0sXG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCYjMzQ7LFxuJiM0MztcdCAgLmRhdGEgPSBcdTAwMjZzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcJiMzNDssXG4mIzQzO1x0ICAuZGF0YSA9IFx1MDAyNnN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSB9LFxuIFx0eyB9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyMmVjNWM2MGE2NzM3YzQ0MGY5YWE5MjgxNjA1MjNhY2I5NzJhN2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKaW5kZXggMzIzYTY2OWZhOTgyMy4uZmVjNDJmNDYzNzhhYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwKQEAgLTIyLDYgJiM0MzsyMiw3IEBAIHNlbGVjdDoKICAgICAgICAgICAtIGFsbHdpbm5lcixzdW44aS12M3MtZW1hYwogICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hYwogICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAKJiM0MzsgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAogICByZXF1aXJlZDoKICAgICAtIGNvbXBhdGlibGUKIApAQCAtNDQsMjUgJiM0Mzs0NSwzOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBpdGVtczoKICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAogICAgICAgICAgIC0gY29uc3Q6IHNucHMsZHdtYWMtNC4yMGEKJiM0MzsgICAgICAtIGl0ZW1zOgomIzQzOyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAomIzQzOyAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjAKIAogICByZWc6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogTUFDIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCiYjNDM7ICAgICAgLSBkZXNjcmlwdGlvbjogR2x1ZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycwogCiAgIGludGVycnVwdHM6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDQKIAogICBpbnRlcnJ1cHQtbmFtZXM6Ci0gICAgY29uc3Q6IG1hY2lycQomIzQzOyAgICBtaW5JdGVtczogMQomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBtYWNpcnEKJiM0MzsgICAgICAtIGNvbnN0OiBldGhfbHBpCiYjNDM7ICAgICAgLSBjb25zdDogdHgtcXVldWUtMAomIzQzOyAgICAgIC0gY29uc3Q6IHJ4LXF1ZXVlLTAKIAogICBjbG9ja3M6CiAgICAgbWluSXRlbXM6IDEKLSAgICBtYXhJdGVtczogMgomIzQzOyAgICBtYXhJdGVtczogMwogCiAgIGNsb2NrLW5hbWVzOgogICAgIG1pbkl0ZW1zOiAxCiAgICAgaXRlbXM6CiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGgKICAgICAgIC0gY29uc3Q6IG1idXMKJiM0MzsgICAgICAtIGNvbnN0OiBwdHBfcmVmCiAKICAgcGh5LXN1cHBseToKICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvcgpAQCAtODcsNyAmIzQzOzEwMSw2IEBAIHJlcXVpcmVkOgogICAtIHJlc2V0LW5hbWVzCiAgIC0gcGh5LWhhbmRsZQogICAtIHBoeS1tb2RlCi0gIC0gc3lzY29uCiAKIGFsbE9mOgogICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCMKQEAgLTIxOSwzNiAmIzQzOzIzMiw5NCBAQCBhbGxPZjoKICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgIGNvbXBhdGlibGU6CiAgICAgICAgICAgY29udGFpbnM6Ci0gICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAKJiM0MzsgICAgICAgICAgICBlbnVtOgomIzQzOyAgICAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAomIzQzOyAgICAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAogICAgIHRoZW46CiAgICAgICBwcm9wZXJ0aWVzOgotICAgICAgICBjbG9ja3M6Ci0gICAgICAgICAgbWluSXRlbXM6IDIKLSAgICAgICAgY2xvY2stbmFtZXM6Ci0gICAgICAgICAgbWluSXRlbXM6IDIKICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6CiAgICAgICAgICAgZGVmYXVsdDogMAogICAgICAgICAgIG1pbmltdW06IDAKLSAgICAgICAgICBtYXhpbXVtOiA3MDAKICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDAKICAgICAgICAgICBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy4KJiM0MzsgICAgICAgICAgICBJbnRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuCiAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzOgogICAgICAgICAgIGRlZmF1bHQ6IDAKICAgICAgICAgICBtaW5pbXVtOiAwCiAgICAgICAgICAgbWF4aW11bTogMzEwMAogICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMAogICAgICAgICAgIGRlc2NyaXB0aW9uOgotICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLgotICAgICAgcmVxdWlyZWQ6Ci0gICAgICAgIC0gcG93ZXItZG9tYWlucwomIzQzOyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBSWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy4KICAgICBlbHNlOgogICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIHJlZzoKJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgICAgIGludGVycnVwdHM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiAgICAgICAgIGNsb2NrczoKICAgICAgICAgICBtYXhJdGVtczogMQogICAgICAgICBjbG9jay1uYW1lczoKICAgICAgICAgICBtYXhJdGVtczogMQogICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZQomIzQzOyAgICAgIHJlcXVpcmVkOgomIzQzOyAgICAgICAgLSBzeXNjb24KJiM0MzsKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMAomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICByZWc6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMQomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMQomIzQzOyAgICAgICAgY2xvY2tzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMgomIzQzOyAgICAgICAgICBtYXhJdGVtczogMgomIzQzOyAgICAgICAgY2xvY2stbmFtZXM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAyCiYjNDM7ICAgICAgICByZXNldHM6CiYjNDM7ICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICByZXNldC1uYW1lczoKJiM0MzsgICAgICAgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICAgICAgICBtYXhpbXVtOiA3MDAKJiM0MzsgICAgICByZXF1aXJlZDoKJiM0MzsgICAgICAgIC0gcG93ZXItZG9tYWlucwomIzQzOyAgICAgICAgLSBzeXNjb24KJiM0MzsKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMAomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICByZWc6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogNAomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogNAomIzQzOyAgICAgICAgY2xvY2tzOgomIzQzOyAgICAgICAgICBtaW5JdGVtczogMwomIzQzOyAgICAgICAgY2xvY2stbmFtZXM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAzCiYjNDM7ICAgICAgICByZXNldHM6CiYjNDM7ICAgICAgICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgICAgICByZXNldC1uYW1lczoKJiM0MzsgICAgICAgICAgbWluSXRlbXM6IDIKJiM0MzsgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICAgICAgICBtYXhpbXVtOiAzMTAwCiYjNDM7ICAgICAgICBzeXNjb246IGZhbHNlCiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZQogCiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiAKQEAgLTQxMiw0ICYjNDM7NDgzLDMzIEBAIGV4YW1wbGVzOgogICAgICAgICAgICAgfTsKICAgICAgICAgfTsKICAgICB9OwomIzQzOwomIzQzOyAgLSB8CiYjNDM7ICAgIGV0aGVybmV0QDQ1MTAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgICAgICAmIzM0O3NucHMsZHdtYWMtNS4yMCYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MDQ1MTAwMDAgMHg4MDAwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDA0NTE4MDAwIDB4MTAwMCZndDs7CiYjNDM7ICAgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtjY3UgNTgmZ3Q7LCAmbHQ7JmFtcDtjY3UgNTkmZ3Q7LCAmbHQ7JmFtcDtjY3UgNjAmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O21idXMmIzM0OywgJiMzNDtwdHBfcmVmJiMzNDs7CiYjNDM7ICAgICAgICByZXNldHMgPSAmbHQ7JmFtcDtjY3UgMzAmZ3Q7LCAmbHQ7JmFtcDtjY3UgMzEmZ3Q7OwomIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O2FoYiYjMzQ7OwomIzQzOyAgICAgICAgaW50ZXJydXB0cyA9ICZsdDswIDE3NSA0Jmd0OywgJmx0OzAgMTc5IDQmZ3Q7LCAmbHQ7MCAxNzYgNCZndDssICZsdDswIDE3NyA0Jmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9ICYjMzQ7bWFjaXJxJiMzNDssICYjMzQ7ZXRoX2xwaSYjMzQ7LCAmIzM0O3R4LXF1ZXVlLTAmIzM0OywgJiMzNDtyeC1xdWV1ZS0wJiMzNDs7CiYjNDM7ICAgICAgICBwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7ICAgICAgICBwaW5jdHJsLTAgPSAmbHQ7JmFtcDtyZ21paTFfcGlucyZndDs7CiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gJmx0OyZhbXA7ZXh0X3JnbWlpX3BoeV8yJmd0OzsKJiM0MzsgICAgICAgIHBoeS1tb2RlID0gJiMzNDtyZ21paS1pZCYjMzQ7OwomIzQzOyAgICAgICAgc25wcyxmaXhlZC1idXJzdDsKJiM0MzsKJiM0MzsgICAgICAgIG1kaW8gewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3NucHMsZHdtYWMtbWRpbyYjMzQ7OwomIzQzOyAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGV4dF9yZ21paV9waHlfMjogZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgICAgICByZWcgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgICAgfTsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiAuLi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMKQEAgLTEwLDIxICYjNDM7MTAsMjIgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYml0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ21hcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZXNldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N0bW1hYy5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7c3RtbWFjX3BsYXRmb3JtLmgmIzM0OwogCi0jZGVmaW5lIFNZU0NPTl9SRUcJCTB4MzQKLQogLyogUk1JSSBzcGVjaWZpYyBiaXRzICovCiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOCQlCSVQoMTMpIC8qIDE6IGVuYWJsZSBSTUlJIChvdmVycmlkZXMgRVBJVCkgKi8KIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqLwpAQCAtMzcsMTcgJiM0MzszOCw5OSBAQAogI2RlZmluZSBTWVNDT05fRVRDU19FWFRfR01JSQkweDEKICNkZWZpbmUgU1lTQ09OX0VUQ1NfSU5UX0dNSUkJMHgyCiAKLXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsCi0JCQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpCiYjNDM7c3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgewomIzQzOwlzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiYjNDM7CQkJCSAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTsKJiM0MzsJdW5zaWduZWQgaW50IGZsYWdzOwomIzQzOwl1MzIgZXR4ZGNfZXh0X21hc2s7CiYjNDM7CXUzMiBvZmZzZXQ7CiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAomIzQzOwkJCQkJCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCByZWdtYXAgKm1hcCA9CiYjNDM7CQlzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKHBkZXYtJmd0O2Rldi5vZl9ub2RlLCAmIzM0O3N5c2NvbiYjMzQ7KTsKJiM0MzsKJiM0MzsJaWYgKElTX0VSUihtYXApKQomIzQzOwkJZGV2X2Vycl9wcm9iZSgmYW1wO3BkZXYtJmd0O2RldiwgUFRSX0VSUihtYXApLCAmIzM0O1VuYWJsZSB0byBtYXAgc3lzY29uXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiBtYXA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW42MGlfYTczM19yZWdtYXBfY2ZnID0gewomIzQzOwkucmVnX2JpdHMgPSAzMiwKJiM0MzsJLnZhbF9iaXRzID0gMzIsCiYjNDM7CS5yZWdfc3RyaWRlID0gNCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCh2b2lkICpkYXRhKQogewotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0mZ3Q7b2Zfbm9kZTsKJiM0MzsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdCA9IGRhdGE7CiYjNDM7CiYjNDM7CXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHJzdCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiYjNDM7CQkJCQkJc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXZvaWQgX19pb21lbSAqYmFzZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxKTsKJiM0MzsJaWYgKElTX0VSUihiYXNlKSkgewomIzQzOwkJZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoYmFzZSksICYjMzQ7dW5hYmxlIHRvIGdldCBnbHVlIG1lbW9yeSByZWdpb25cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBFUlJfQ0FTVChiYXNlKTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXBsYXQtJmd0O3N0bW1hY19yc3QgfHwgIXBsYXQtJmd0O3N0bW1hY19haGJfcnN0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDttaXNzaW5nIHJlcXVpcmVkIHJlc2V0IGNvbnRyb2xzXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlcgomIzQzOwkgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW0KJiM0MzsJICogYW5kIHNob3VsZCBub3QgYmUgZG9uZSBhZ2FpbiBieSBzdG1tYWMgb3IgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbAomIzQzOwkgKiBiZSBsb3N0LgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gcmVzZXRfY29udHJvbF9hc3NlcnQocGxhdC0mZ3Q7c3RtbWFjX3JzdCk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwbGF0LSZndDtzdG1tYWNfcnN0KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgJiMzNDtkZXZpY2UgcmVzZXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUihyZXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCwKJiM0MzsJCQkJICAgICAgIHBsYXQtJmd0O3N0bW1hY19yc3QpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKJiM0MzsKJiM0MzsJcGxhdC0mZ3Q7c3RtbWFjX3JzdCA9IE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oJmFtcDtwZGV2LSZndDtkZXYsIGJhc2UsICZhbXA7c3VuNjBpX2E3MzNfcmVnbWFwX2NmZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKJiM0MzsJCQkJc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LAomIzQzOwkJCQljb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBsb19iaXRzID0gaHdlaWdodDMyKFNZU0NPTl9FVFhEQ19NQVNLKTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi0mZ3Q7ZGV2Lm9mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKIAl1MzIgdmFsLCByZWcgPSAwOwomIzQzOwl1MzIgbWF4X2RlbGF5OwogCWludCByZXQ7CiAKLQlyZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5vZGUsICYjMzQ7c3lzY29uJiMzNDspOwomIzQzOwltYXhfZGVsYXkgPSAoMVUgJmx0OyZsdDsgKGxvX2JpdHMgJiM0MzsgaHdlaWdodDMyKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrKSkpIC0gMTsKJiM0MzsKJiM0MzsJcmVnbWFwID0gZGF0YS0mZ3Q7Z2V0X3JlZ21hcChwZGV2LCBwbGF0KTsKIAlpZiAoSVNfRVJSKHJlZ21hcCkpCi0JCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihyZWdtYXApLCAmIzM0O1VuYWJsZSB0byBtYXAgc3lzY29uXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gUFRSX0VSUihyZWdtYXApOwogCiAJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3R4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7dmFsKSkgewogCQlpZiAodmFsICUgMTAwKQpAQCAtNTUsMTIgJiM0MzsxMzgsMTUgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkJICAgICAmIzM0O3R4LWRlbGF5IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDBwc1xuJiMzNDspOwogCQl2YWwgLz0gMTAwOwogCQlkZXZfZGJnKGRldiwgJiMzNDtzZXQgdHgtZGVsYXkgdG8gJXhcbiYjMzQ7LCB2YWwpOwotCQlpZiAoIUZJRUxEX0ZJVChTWVNDT05fRVRYRENfTUFTSywgdmFsKSkKJiM0MzsJCWlmICh2YWwgJmd0OyBtYXhfZGVsYXkpCiAJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FSU5WQUwsCi0JCQkJCSAgICAgJiMzNDtUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyAmZ3Q7ICVsdTAwcHMpXG4mIzM0OywKLQkJCQkJICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpOwomIzQzOwkJCQkJICAgICAmIzM0O1RYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzICZndDsgJXUwMHBzKVxuJiMzNDssCiYjNDM7CQkJCQkgICAgIHZhbCwgbWF4X2RlbGF5KTsKIAotCQlyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTsKJiM0MzsJCXJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpOwomIzQzOwkJaWYgKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrKQomIzQzOwkJCXJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtJmd0O2V0eGRjX2V4dF9tYXNrLAomIzQzOwkJCQkJICB2YWwgJmd0OyZndDsgbG9fYml0cyk7CiAJfQogCiAJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7dmFsKSkgewpAQCAtOTUsMjEgJiM0MzsxODEsMjkgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkgICAgIHBoeV9tb2RlcyhwbGF0LSZndDtwaHlfaW50ZXJmYWNlKSk7CiAJfQogCi0JcmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS0mZ3Q7b2Zmc2V0LCByZWcpOwogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgJiMzNDtGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXG4mIzM0Oyk7CiAKJiM0MzsJcGxhdC0mZ3Q7ZmxhZ3MgfD0gZGF0YS0mZ3Q7ZmxhZ3M7CiYjNDM7CXBsYXQtJmd0O2hvc3RfZG1hX3dpZHRoID0gMzI7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0OwomIzQzOwljb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTsKIAlzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCXN0cnVjdCBjbGsgKmNsazsKIAlpbnQgcmV0OwogCiYjNDM7CWRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKJiM0MzsJaWYgKCFkYXRhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgJmFtcDtzdG1tYWNfcmVzKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTE4LDExICYjNDM7MjEyLDcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChJU19FUlIocGxhdF9kYXQpKQogCQlyZXR1cm4gUFRSX0VSUihwbGF0X2RhdCk7CiAKLQkvKiBCU1AgZGlzYWJsZXMgaXQgKi8KLQlwbGF0X2RhdC0mZ3Q7ZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7Ci0JcGxhdF9kYXQtJmd0O2hvc3RfZG1hX3dpZHRoID0gMzI7Ci0KLQlyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKGRldiwgcGxhdF9kYXQpOwomIzQzOwlyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTM4LDggJiM0MzsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgJmFtcDtzdG1tYWNfcmVzKTsKIH0KIAomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgPSB7CiYjNDM7CS5nZXRfcmVnbWFwID0gc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcCwKJiM0MzsJLmZsYWdzID0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUsCiYjNDM7CS5vZmZzZXQgPSAweDM0LAomIzQzOwkuZXR4ZGNfZXh0X21hc2sgPSAwLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSA9IHsKJiM0MzsJLmdldF9yZWdtYXAgPSBzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwLAomIzQzOwkuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfAomIzQzOwkJICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfAomIzQzOwkJICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLAomIzQzOwkub2Zmc2V0ID0gMHgwLAomIzQzOwkuZXR4ZGNfZXh0X21hc2sgPSBHRU5NQVNLKDE3LCAxNiksCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7Ci0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDAmIzM0OyB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gJmFtcDtzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0OywKJiM0MzsJICAuZGF0YSA9ICZhbXA7c3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhIH0sCiAJeyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFwcGx5aW5nIG91ciBzdGFuZGFyZCBndWlkZWxpbmVzLCBvZiBjb3Vyc2UuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBwYXRjaCB0b3VjaGVzIHR3byBmaWxlczogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jYC4gVGhlIFlBTUwgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCBkZXZpY2UgdHJlZSBiaW5kaW5ncywgc28gd2UmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBsYXRlci4KCk15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHRoYXQgQyBmaWxlLCBgZHdtYWMtc3VuNTVpLmNgLiBIbW0sIHJpZ2h0LCBpdCYjMzk7cyBhbiBBbGx3aW5uZXIgU29DIGV0aGVybmV0IGdsdWUgZHJpdmVyLiBJdCYjMzk7cyBhbiBzdG1tYWMgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBbGx3aW5uZXIgc3VuNTVpIGFuZCBzdW42MGkgQVJNIFNvQ3MuIE9rYXksIHRoYXQgZ2l2ZXMgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgY29uZmlndXJlZC4gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJcyBpdCBhIG1vZHVsZT8gV2hhdCBidWlsZCBvcHRpb25zIGRvIHdlIGhhdmUgdG8gd29yayB3aXRoIHdoZW4gYXR0ZW1wdGluZyBmdXp6aW5nPyBUaGlzIHdpbGwgYWxsIGluZm9ybSBob3cgd2UgYXBwcm9hY2ggaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgaG93IHdlIGNhbiBiZXN0IHRhcmdldCB0aGUgY29kZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19TVU41NUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yODg9Y29uZmlnIERXTUFDX1NVTjhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMDpjb25maWcgRFdNQUNfU1VONTVJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwMS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVx0JiM0Mzs9IGR3bWFjLXN1bjhpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19EV01BQ19TVU41NUkpXHQmIzQzOz0gZHdtYWMtc3VuNTVpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19EV01BQ19USEVBRClcdCYjNDM7PSBkd21hYy10aGVhZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGZyYW1lZCBhcyBhIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIERXTUFDX1NVTjU1SSBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmb3IgYERXTUFDX1NVTjU1SWAuIE15IGd1dCB0ZWxscyBtZSB0aGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXImIzM5O3MgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQgYW5kIGV4cG9zZWQgYXQgY29tcGlsZSB0aW1lLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgb24gdGhlIFN1bjU1aSBwbGF0Zm9ybS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkNoaXAtc3BlY2lmaWMgZGVmaW5lczoqKiBJIGJldCB0aGVyZSBhcmUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgU3VuNTVpIFNvQyB2YXJpYW50LiBUaGlzIGxpa2VseSBnb3Zlcm5zIHJlZ2lzdGVyIG9mZnNldHMsIGNsb2NrIGNvbmZpZ3VyYXRpb25zLCBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLgoqICAgKipGZWF0dXJlIGZsYWdzOioqIEFyZSB0aGVyZSBhbnkgb3B0aW9ucyB0byBlbmFibGUgb3IgZGlzYWJsZSBzcGVjaWZpYyBNQUMgZmVhdHVyZXM/IFRoaW5ncyBsaWtlIGNoZWNrc3VtIG9mZmxvYWRpbmcsIFZMQU4gc3VwcG9ydCwgRE1BIHNldHRpbmdzIOKAkyB0aGVzZSBhcmUgYWxsIGZhaXIgZ2FtZS4gSSB3aWxsIGJlIG9uIHRoZSBsb29rb3V0IGZvciB3YXlzIHRvIHRvZ2dsZSBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdGllcy4KKiAgICoqRGVwZW5kZW5jeSBjaGVja3M6KiogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBLY29uZmlnIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgRFdNQUNfU1VONTVJYCBiZWNvbWVzIGF2YWlsYWJsZS4gVGhpcyB3aWxsIHNob3cgdGhlIGludGVyZGVwZW5kZW5jaWVzIHdpdGggb3RoZXIgaGFyZHdhcmUgY29tcG9uZW50cyBhbmQgZHJpdmVycy4KKiAgICoqSGVscCB0ZXh0OioqIEkgaG9wZSB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGFuZCBkZXRhaWxlZC4gR29vZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHdlbGwtZG9jdW1lbnRlZCwgZXhwbGFpbmluZyB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIGl0cyBpbXBhY3QuIFRoaXMgd2lsbCBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyB0aW1lLgoqICAgKipEZWZhdWx0IHZhbHVlczoqKiBJdCB3aWxsIGJlIGdvb2QgdG8gc2VlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGFzIGl0IGdpdmVzIGFuIGltbWVkaWF0ZSBzZW5zZSBvZiB0aGUgaW50ZW5kZWQgdXNlIGNhc2UuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIG5ldyBjaGFuZ2VzIGFuZCBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHByb3BlciB3b3JraW5nIG9yZGVyLgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCByZWFkaW5nIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyB3ZSBjYW4gdW5jb3Zlci4gVGltZSB0byBiZWNvbWUgb25lIHdpdGggdGhlIGBLY29uZmlnYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjk1Olx0XG4gMjk2Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjk3Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuIDI5ODpcdFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjk5Olx0XG4gMzAwOlx0Y29uZmlnIERXTUFDX1NVTjU1SVxuIDMwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbiAzMDI6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDMwMzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDMwNDpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDMwNTpcdFx0aGVscFxuIDMwNjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTUyMy9UNTI3IEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMzA5Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcbiAzMTA6XHRcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMxMTpcdFxuIDMxMjpcdGNvbmZpZyBEV01BQ19USEVBRFxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTk1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoYWJpbGl0eSBBbmFseXNpczogTXkgVGhvdWdodHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyByZWFjaGFiaWxpdHkgcXVlc3Rpb24gdXNpbmcgdGhlIHRyaWFnZSBwaGlsb3NvcGh5IG91dGxpbmVkIGluIFNlY3Rpb25zIDEgYW5kIDIuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHNvIGxldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIGZvciB0aGluZ3MgdGhhdCBtaWdodCAqbm90KiBiZSByZWFjaGFibGUuCgpGaXJzdCwgd2UgbmVlZCB0byBlbGltaW5hdGUgbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgd2hpY2ggaXMgYSBnaXZlbiwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpbmdzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGhpcyBpbnN0YW50bHkgYnJpbmdzIHRvIG1pbmQgdGhvc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJJiMzOTttIHRoaW5raW5nIG9mOgoKKiAgIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5IG5lZWQgdGhvc2UgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGxpc3QgcmVtaW5kcyBtZSwgZm9yIGV4YW1wbGUsIG9mIHRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCiogICBQbGF0Zm9ybSBkcml2ZXJzIGZvciBzcGVjaWZpYyBBUk0vdmVuZG9yIFNvQ3MgYXJlIGFsc28gaW4gdGhlIHVucmVhY2hhYmxlIGNhdGVnb3J5LiBUaGluZ3MgbGlrZSBBbGx3aW5uZXIvU3VueGkgU29DIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMgc3RpY2sgb3V0LiBUaGVzZSBhcmUgcGxhdGZvcm0gZGV2aWNlcyBzcGVjaWZpYyB0byB0aG9zZSBTb0NzLCBhbmQsIHNwZWNpZmljYWxseSBmb3IgYEFSQ0hfU1VOWElgLCBgc3VuNTVpYCwgYW5kIGBzdW42MGlgLCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIHNwZWNpZmljIERUIGJvYXJkIGNvbmZpZ3Mgb24gQVJNIFNvQ3MuIEluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHN5emthbGxlciBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uIFRoYXQgcGxhdGZvcm0gZGV2aWNlL2RyaXZlciBjYW4mIzM5O3QgYmUgcHJvYmVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRob3NlIE9GIGRldmljZSB0cmVlIG5vZGVzIGxpa2UgYGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwYCBvciBgYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBgIG9uIFN1bnhpIFNvQ3MsIGFuZCB3ZSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBpbiB0aGlzIHNldHVwLgoKV2FpdCwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgKmFueSogcG9zc2liaWxpdHkgb2YgdmlydHVhbCBidXMgb3IgdXNlcnNwYWNlIHJlYWNoYWJpbGl0eSBmb3Igc29tZXRoaW5nIGxpa2UgYGR3bWFjLXN1bjU1aWAgb24gYW1kNjQuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpYCwgYW5kIGl0IGhhcyB0aGF0IE9GIG1hdGNoIHRhYmxlLCBgc3VuNTVpX2dtYWMyMDBfbWF0Y2hgLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUsIGluIGBkd21hYy1zdW41NWkuY2AsIGFuZCBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSBvciBpbmRpcmVjdCBhY2Nlc3MgSSBtaWdodCBiZSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFx0LmZsYWdzID0gKFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFIHxcbiAyNDE6XHRcdFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxuIDI0MjpcdFx0XHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCksXG4gMjQzOlx0XHQub2Zmc2V0ID0gMHgwLFxuIDI0NDpcdFx0LmV0eGRjX2V4dF9tYXNrID0gR0VOTUFTSygxNywgMTYpLFxuIDI0NTpcdH07XG4gMjQ2Olx0XG4gMjQ3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuNTVpX2dtYWMyMDBfbWF0Y2hbXSA9IHtcbiAyNDg6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwmIzM0OyxcbiAyNDk6XHRcdCAgLmRhdGEgPSBcdTAwMjZzdW41NWlfYTUyM19nbWFjMjAwX2RhdGEgfSxcbiAyNTA6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFwmIzM0OyxcbiAyNTE6XHRcdCAgLmRhdGEgPSBcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcbiAyNTI6XHRcdHsgfVxuIDI1MzpcdH07XG4gMjU0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuIDI1NTpcdFxuIDI1NjpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbiAyNTc6XHRcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcbiAyNTg6XHRcdC5kcml2ZXIgPSB7XG4gMjU5Olx0XHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O2R3bWFjLXN1bjU1aVwmIzM0OyxcbiAyNjA6XHRcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbiAyNjE6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gc3VuNTVpX2dtYWMyMDBfbWF0Y2gsXG4gMjYyOlx0XHR9LFxuIDI2MzpcdH07XG4gMjY0Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpO1xuIDI2NTpcdFxuIDI2NjpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7Q2hlbi1ZdSBUc2FpIFx1MDAzY3dlbnNAY3NpZS5vcmdcdTAwM2VcJiMzNDspO1xuIDI2NzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3BlY2lmaWMgZ2x1ZSBsYXllclwmIzM0Oyk7XG4gMjY4Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY5OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA1NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFRhcmdldCBDb2RlIGFuZCBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29kZSBjaGFuZ2UgaXNuJiMzOTt0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyBhbiBBbGx3aW5uZXIgc3VueGkgU29DIHBsYXRmb3JtIGRyaXZlci4gVGhlIGNvZGUmIzM5O3MgbG9va2luZyBmb3IgdGhvc2Ugc3BlY2lmaWMgT0YgY29tcGF0aWJsZSBzdHJpbmdzOiBgJiMzNDthbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMCYjMzQ7YCBhbmQgYCYjMzQ7YWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTAmIzM0O2AsIHBsdXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgaGFyZHdhcmUgcmVzb3VyY2VzLiBZZXAsIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuIENsb2NrcywgcmVzZXRzLCBNTUlPLCB0aGUgd29ya3MuCgpTZWNvbmQsIEkgc2VlIHRoaXMgb25seSBydW5zIG9uIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIFNvQ3MuIEFuZCBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSDigJMgdGhpcyBpcyBBUk0vQVJNNjQuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBgQVJDSF9TVU5YSWAgaXNuJiMzOTt0IGV2ZW4gZW5hYmxlZCBvbiBhbWQ2NCwgbWVhbmluZyB0aGUgY29tcGlsZXIgY2FuIG9ubHkgKmNvbXBpbGUqIHRoZSBjb2RlLCBub3QgYWN0dWFsbHkgcnVuIGFuZCBwcm9iZSBpdC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIHdvbiYjMzk7dCBiZSBhbnkgb2YgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyBwcm9iZWQgaW4gbXkgc3RhbmRhcmQgeDg2XzY0IG9yIGFtZDY0IHZpcnR1YWwgbWFjaGluZXMgbGlrZSBRRU1VIG9yIEdDRS4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhvc2UgZGV0YWlscyByZWFsIHF1aWNrLiBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGJvdGggdGhlIGRvY3VtZW50YXRpb24gKGRldmljZXRyZWUgYmluZGluZ3MpIGFuZCB0aGUgYGR3bWFjLXN1bjU1aS5jYCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgZm9yIEFsbHdpbm5lciBzdW54aSBTb0MgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgaXMgZGVwZW5kZW50IG9uIHRoZSBTb0MmIzM5O3MgZGV2aWNlIHRyZWUgYW5kIHJlcXVpcmVzIGRpcmVjdCBhY2Nlc3MgdG8gbWVtb3J5LW1hcHBlZCBoYXJkd2FyZSByZWdpc3RlcnMsIHJlc2V0cywgYW5kIGNsb2Nrcy4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIG9uIG15IGFtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgdGVzdCBlbnZpcm9ubWVudHMuCgpPa2F5LCBzbyB0aGUgdmVyZGljdDogKipXb3J0aEZ1enppbmcgc2hvdWxkIGJlIGZhbHNlLioqCgpOb3cgdG8gcHJlcGFyZSB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYDoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKgoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKiogKGFuIGVtcHR5IGFycmF5KSBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZW5hYmxlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChhbm90aGVyIGVtcHR5IGFycmF5KSBzaW5jZSB3ZSYjMzk7cmUgbm90IGZvY3VzaW5nIG9uIGFueSBwYXJ0aWN1bGFyIHBhcnQgb2YgdGhpcyBjb2RlLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBkZXZpY2V0cmVlIGJpbmRpbmdzIGFuZCB0aGUgYGR3bWFjLXN1bjU1aWAgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgQVJNIFNvQ3Mgd2l0aCB0aGUgZGV2aWNlcyBkZWZpbmVkIGJ5IHRoZSBjb21wYXRpYmxlIHN0cmluZ3MgKGBzdW41NWktYTUyMy1nbWFjMjAwYCwgYHN1bjYwaS1hNzMzLWdtYWMyMTBgKS4gVGhlIGNvZGUgaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIHJlcXVpcmVzIGEgZGV2aWNlIHRyZWUvcGh5c2ljYWwgU29DIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDoxNy41ODgxMDU2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcxMDg3MjM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgZGV2aWNldHJlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgQWxsd2lubmVyIHN1bjU1aS9zdW42MGkgR01BQyBldGhlcm5ldCBnbHVlIGRyaXZlciAoZHdtYWMtc3VuNTVpLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIEFSTS9BbGx3aW5uZXIgU29DIGhhcmR3YXJlIChzdW41NWktYTUyMyBhbmQgc3VuNjBpLWE3MzMpIHZpYSBEZXZpY2VUcmVlIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGFtZDY0IFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjE3LjU4ODExMDQ5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMDc0MjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTIyZWM1YzYwYTY3MzdjNDQwZjlhYTkyODE2MDUyM2FjYjk3MmE3ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMzozNDoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXFxuaW5kZXggMzIzYTY2OWZhOTgyMy4uZmVjNDJmNDYzNzhhYyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXFxuQEAgLTIyLDYgKzIyLDcgQEAgc2VsZWN0OlxcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcXG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hY1xcbiAgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxcbisgICAgICAgICAgLSBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbiAgIHJlcXVpcmVkOlxcbiAgICAgLSBjb21wYXRpYmxlXFxuIFxcbkBAIC00NCwyNSArNDUsMzggQEAgcHJvcGVydGllczpcXG4gICAgICAgLSBpdGVtczpcXG4gICAgICAgICAgIC0gY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXFxuKyAgICAgIC0gaXRlbXM6XFxuKyAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbisgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXFxuIFxcbiAgIHJlZzpcXG4tICAgIG1heEl0ZW1zOiAxXFxuKyAgICBtaW5JdGVtczogMVxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xcbisgICAgICAtIGRlc2NyaXB0aW9uOiBHbHVlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzXFxuIFxcbiAgIGludGVycnVwdHM6XFxuLSAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rICAgIG1heEl0ZW1zOiA0XFxuIFxcbiAgIGludGVycnVwdC1uYW1lczpcXG4tICAgIGNvbnN0OiBtYWNpcnFcXG4rICAgIG1pbkl0ZW1zOiAxXFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogbWFjaXJxXFxuKyAgICAgIC0gY29uc3Q6IGV0aF9scGlcXG4rICAgICAgLSBjb25zdDogdHgtcXVldWUtMFxcbisgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXFxuIFxcbiAgIGNsb2NrczpcXG4gICAgIG1pbkl0ZW1zOiAxXFxuLSAgICBtYXhJdGVtczogMlxcbisgICAgbWF4SXRlbXM6IDNcXG4gXFxuICAgY2xvY2stbmFtZXM6XFxuICAgICBtaW5JdGVtczogMVxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbiAgICAgICAtIGNvbnN0OiBtYnVzXFxuKyAgICAgIC0gY29uc3Q6IHB0cF9yZWZcXG4gXFxuICAgcGh5LXN1cHBseTpcXG4gICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yXFxuQEAgLTg3LDcgKzEwMSw2IEBAIHJlcXVpcmVkOlxcbiAgIC0gcmVzZXQtbmFtZXNcXG4gICAtIHBoeS1oYW5kbGVcXG4gICAtIHBoeS1tb2RlXFxuLSAgLSBzeXNjb25cXG4gXFxuIGFsbE9mOlxcbiAgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xcbkBAIC0yMTksMzYgKzIzMiw5NCBAQCBhbGxPZjpcXG4gICAgICAgcHJvcGVydGllczpcXG4gICAgICAgICBjb21wYXRpYmxlOlxcbiAgICAgICAgICAgY29udGFpbnM6XFxuLSAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxcbisgICAgICAgICAgICBlbnVtOlxcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXG4rICAgICAgICAgICAgICAtIGFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxuICAgICB0aGVuOlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbi0gICAgICAgIGNsb2NrczpcXG4tICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuLSAgICAgICAgY2xvY2stbmFtZXM6XFxuLSAgICAgICAgICBtaW5JdGVtczogMlxcbiAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbiAgICAgICAgICAgZGVmYXVsdDogMFxcbiAgICAgICAgICAgbWluaW11bTogMFxcbi0gICAgICAgICAgbWF4aW11bTogNzAwXFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcXG4gICAgICAgICAgIGRlc2NyaXB0aW9uOlxcbi0gICAgICAgICAgICBFeHRlcm5hbCBSR01JSSBQSFkgVFggY2xvY2sgZGVsYXkgY2hhaW4gdmFsdWUgaW4gcHMuXFxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4gICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wczpcXG4gICAgICAgICAgIGRlZmF1bHQ6IDBcXG4gICAgICAgICAgIG1pbmltdW06IDBcXG4gICAgICAgICAgIG1heGltdW06IDMxMDBcXG4gICAgICAgICAgIG11bHRpcGxlT2Y6IDEwMFxcbiAgICAgICAgICAgZGVzY3JpcHRpb246XFxuLSAgICAgICAgICAgIEV4dGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4tICAgICAgcmVxdWlyZWQ6XFxuLSAgICAgICAgLSBwb3dlci1kb21haW5zXFxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBSWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cXG4gICAgIGVsc2U6XFxuICAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcmVnOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICAgICAgICBtYXhJdGVtczogMVxcbiAgICAgICAgIGNsb2NrczpcXG4gICAgICAgICAgIG1heEl0ZW1zOiAxXFxuICAgICAgICAgY2xvY2stbmFtZXM6XFxuICAgICAgICAgICBtYXhJdGVtczogMVxcbiAgICAgICAgIHBvd2VyLWRvbWFpbnM6IGZhbHNlXFxuKyAgICAgIHJlcXVpcmVkOlxcbisgICAgICAgIC0gc3lzY29uXFxuK1xcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY29tcGF0aWJsZTpcXG4rICAgICAgICAgIGNvbnRhaW5zOlxcbisgICAgICAgICAgICBjb25zdDogYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXG4rICAgIHRoZW46XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcmVnOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXM6XFxuKyAgICAgICAgICBtYXhJdGVtczogMVxcbisgICAgICAgIGNsb2NrczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuKyAgICAgICAgICBtYXhJdGVtczogMlxcbisgICAgICAgIGNsb2NrLW5hbWVzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDJcXG4rICAgICAgICAgIG1heEl0ZW1zOiAyXFxuKyAgICAgICAgcmVzZXRzOlxcbisgICAgICAgICAgbWF4SXRlbXM6IDFcXG4rICAgICAgICByZXNldC1uYW1lczpcXG4rICAgICAgICAgIG1heEl0ZW1zOiAxXFxuKyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuKyAgICAgICAgICBtYXhpbXVtOiA3MDBcXG4rICAgICAgcmVxdWlyZWQ6XFxuKyAgICAgICAgLSBwb3dlci1kb21haW5zXFxuKyAgICAgICAgLSBzeXNjb25cXG4rXFxuKyAgLSBpZjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICBjb21wYXRpYmxlOlxcbisgICAgICAgICAgY29udGFpbnM6XFxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICByZWc6XFxuKyAgICAgICAgICBtaW5JdGVtczogMlxcbisgICAgICAgIGludGVycnVwdHM6XFxuKyAgICAgICAgICBtaW5JdGVtczogNFxcbisgICAgICAgIGludGVycnVwdC1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiA0XFxuKyAgICAgICAgY2xvY2tzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDNcXG4rICAgICAgICBjbG9jay1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXFxuKyAgICAgICAgcmVzZXRzOlxcbisgICAgICAgICAgbWluSXRlbXM6IDJcXG4rICAgICAgICByZXNldC1uYW1lczpcXG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXFxuKyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuKyAgICAgICAgICBtYXhpbXVtOiAzMTAwXFxuKyAgICAgICAgc3lzY29uOiBmYWxzZVxcbisgICAgICAgIHBvd2VyLWRvbWFpbnM6IGZhbHNlXFxuIFxcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuIFxcbkBAIC00MTIsNCArNDgzLDMzIEBAIGV4YW1wbGVzOlxcbiAgICAgICAgICAgICB9O1xcbiAgICAgICAgIH07XFxuICAgICB9O1xcbitcXG4rICAtIHxcXG4rICAgIGV0aGVybmV0QDQ1MTAwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcXFwiLFxcbisgICAgICAgICAgICAgICAgICAgICBcXFwic25wcyxkd21hYy01LjIwXFxcIjtcXG4rICAgICAgICByZWcgPSBcXHUwMDNjMHgwNDUxMDAwMCAweDgwMDBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFxcdTAwM2U7XFxuKyAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgNThcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmNjdSA1OVxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y2N1IDYwXFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiLCBcXFwibWJ1c1xcXCIsIFxcXCJwdHBfcmVmXFxcIjtcXG4rICAgICAgICByZXNldHMgPSBcXHUwMDNjXFx1MDAyNmNjdSAzMFxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y2N1IDMxXFx1MDAzZTtcXG4rICAgICAgICByZXNldC1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiLCBcXFwiYWhiXFxcIjtcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzAgMTc1IDRcXHUwMDNlLCBcXHUwMDNjMCAxNzkgNFxcdTAwM2UsIFxcdTAwM2MwIDE3NiA0XFx1MDAzZSwgXFx1MDAzYzAgMTc3IDRcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiLCBcXFwiZXRoX2xwaVxcXCIsIFxcXCJ0eC1xdWV1ZS0wXFxcIiwgXFxcInJ4LXF1ZXVlLTBcXFwiO1xcbisgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuKyAgICAgICAgcGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZyZ21paTFfcGluc1xcdTAwM2U7XFxuKyAgICAgICAgcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2ZXh0X3JnbWlpX3BoeV8yXFx1MDAzZTtcXG4rICAgICAgICBwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuKyAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcXG4rXFxuKyAgICAgICAgbWRpbyB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy1tZGlvXFxcIjtcXG4rICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgZXh0X3JnbWlpX3BoeV8yOiBldGhlcm5ldC1waHlAMSB7XFxuKyAgICAgICAgICAgICAgICByZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgIH07XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuIC4uLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXFxuaW5kZXggODYyZGYxNzNkOTYzZi4uM2Q0MzRhNTJmYjAyZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXFxuQEAgLTEwLDIxICsxMCwyMiBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZXNldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RtbWFjLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG4gXFxuLSNkZWZpbmUgU1lTQ09OX1JFR1xcdFxcdDB4MzRcXG4tXFxuIC8qIFJNSUkgc3BlY2lmaWMgYml0cyAqL1xcbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXFx0XFx0QklUKDEzKSAvKiAxOiBlbmFibGUgUk1JSSAob3ZlcnJpZGVzIEVQSVQpICovXFxuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xcbkBAIC0zNywxNyArMzgsOTkgQEBcXG4gI2RlZmluZSBTWVNDT05fRVRDU19FWFRfR01JSVxcdDB4MVxcbiAjZGVmaW5lIFNZU0NPTl9FVENTX0lOVF9HTUlJXFx0MHgyXFxuIFxcbi1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4rc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEge1xcbitcXHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4rXFx0dW5zaWduZWQgaW50IGZsYWdzO1xcbitcXHR1MzIgZXR4ZGNfZXh0X21hc2s7XFxuK1xcdHUzMiBvZmZzZXQ7XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuK3tcXG4rXFx0c3RydWN0IHJlZ21hcCAqbWFwID1cXG4rXFx0XFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcInN5c2NvblxcXCIpO1xcbitcXG4rXFx0aWYgKElTX0VSUihtYXApKVxcbitcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFBUUl9FUlIobWFwKSwgXFxcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHJldHVybiBtYXA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW42MGlfYTczM19yZWdtYXBfY2ZnID0ge1xcbitcXHQucmVnX2JpdHMgPSAzMixcXG4rXFx0LnZhbF9iaXRzID0gMzIsXFxuK1xcdC5yZWdfc3RyaWRlID0gNCxcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCh2b2lkICpkYXRhKVxcbiB7XFxuLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi1cXHUwMDNlb2Zfbm9kZTtcXG4rXFx0c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdCA9IGRhdGE7XFxuK1xcbitcXHRyZXNldF9jb250cm9sX2Fzc2VydChyc3QpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHJlZ21hcCAqc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0dm9pZCBfX2lvbWVtICpiYXNlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxKTtcXG4rXFx0aWYgKElTX0VSUihiYXNlKSkge1xcbitcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihiYXNlKSwgXFxcInVuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9DQVNUKGJhc2UpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIXBsYXQtXFx1MDAzZXN0bW1hY19yc3QgfHwgIXBsYXQtXFx1MDAzZXN0bW1hY19haGJfcnN0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwibWlzc2luZyByZXF1aXJlZCByZXNldCBjb250cm9sc1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlclxcbitcXHQgKiByZXNldCBkb21haW4sIHNvIHRoZSByZXNldCBtdXN0IGhhcHBlbiBiZWZvcmUgYW55IHdyaXRlIHRvIHRoZW1cXG4rXFx0ICogYW5kIHNob3VsZCBub3QgYmUgZG9uZSBhZ2FpbiBieSBzdG1tYWMgb3IgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbFxcbitcXHQgKiBiZSBsb3N0LlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gcmVzZXRfY29udHJvbF9hc3NlcnQocGxhdC1cXHUwMDNlc3RtbWFjX3JzdCk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KHBsYXQtXFx1MDAzZXN0bW1hY19yc3QpO1xcbitcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZGV2aWNlIHJlc2V0IGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHN1bjYwaV9nbWFjMjEwX3Jlc2V0X2Fzc2VydCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHBsYXQtXFx1MDAzZXN0bW1hY19yc3QpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbitcXG4rXFx0cGxhdC1cXHUwMDNlc3RtbWFjX3JzdCA9IE5VTEw7XFxuK1xcbitcXHRyZXR1cm4gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGJhc2UsIFxcdTAwMjZzdW42MGlfYTczM19yZWdtYXBfY2ZnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuK1xcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhICpkYXRhKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBsb19iaXRzID0gaHdlaWdodDMyKFNZU0NPTl9FVFhEQ19NQVNLKTtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi1cXHUwMDNlZGV2Lm9mX25vZGU7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0dTMyIHZhbCwgcmVnID0gMDtcXG4rXFx0dTMyIG1heF9kZWxheTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobm9kZSwgXFxcInN5c2NvblxcXCIpO1xcbitcXHRtYXhfZGVsYXkgPSAoMVUgXFx1MDAzY1xcdTAwM2MgKGxvX2JpdHMgKyBod2VpZ2h0MzIoZGF0YS1cXHUwMDNlZXR4ZGNfZXh0X21hc2spKSkgLSAxO1xcbitcXG4rXFx0cmVnbWFwID0gZGF0YS1cXHUwMDNlZ2V0X3JlZ21hcChwZGV2LCBwbGF0KTtcXG4gXFx0aWYgKElTX0VSUihyZWdtYXApKVxcbi1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocmVnbWFwKSwgXFxcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocmVnbWFwKTtcXG4gXFxuIFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInR4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0aWYgKHZhbCAlIDEwMClcXG5AQCAtNTUsMTIgKzEzOCwxNSBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJ0eC1kZWxheSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTAwcHNcXFxcblxcXCIpO1xcbiBcXHRcXHR2YWwgLz0gMTAwO1xcbiBcXHRcXHRkZXZfZGJnKGRldiwgXFxcInNldCB0eC1kZWxheSB0byAleFxcXFxuXFxcIiwgdmFsKTtcXG4tXFx0XFx0aWYgKCFGSUVMRF9GSVQoU1lTQ09OX0VUWERDX01BU0ssIHZhbCkpXFxuK1xcdFxcdGlmICh2YWwgXFx1MDAzZSBtYXhfZGVsYXkpXFxuIFxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiVFggY2xvY2sgZGVsYXkgZXhjZWVkcyBtYXhpbXVtICgldTAwcHMgXFx1MDAzZSAlbHUwMHBzKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB2YWwsIEZJRUxEX01BWChTWVNDT05fRVRYRENfTUFTSykpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJUWCBjbG9jayBkZWxheSBleGNlZWRzIG1heGltdW0gKCV1MDBwcyBcXHUwMDNlICV1MDBwcylcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xcbiBcXG4tXFx0XFx0cmVnIHw9IEZJRUxEX1BSRVAoU1lTQ09OX0VUWERDX01BU0ssIHZhbCk7XFxuK1xcdFxcdHJlZyB8PSBmaWVsZF9wcmVwKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpO1xcbitcXHRcXHRpZiAoZGF0YS1cXHUwMDNlZXR4ZGNfZXh0X21hc2spXFxuK1xcdFxcdFxcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXFx1MDAzZWV0eGRjX2V4dF9tYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgIHZhbCBcXHUwMDNlXFx1MDAzZSBsb19iaXRzKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwicngtaW50ZXJuYWwtZGVsYXktcHNcXFwiLCBcXHUwMDI2dmFsKSkge1xcbkBAIC05NSwyMSArMTgxLDI5IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgcGh5X21vZGVzKHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UpKTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1lTQ09OX1JFRywgcmVnKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS1cXHUwMDNlb2Zmc2V0LCByZWcpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFxcXCJGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxcXG5cXFwiKTtcXG4gXFxuK1xcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IGRhdGEtXFx1MDAzZWZsYWdzO1xcbitcXHRwbGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbitcXHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YTtcXG4gXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbitcXHRpZiAoIWRhdGEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xMTgsMTEgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBsYXRfZGF0KTtcXG4gXFxuLVxcdC8qIEJTUCBkaXNhYmxlcyBpdCAqL1xcbi1cXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XFxuLVxcdHBsYXRfZGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xcbi1cXG4tXFx0cmV0ID0gc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihkZXYsIHBsYXRfZGF0KTtcXG4rXFx0cmV0ID0gc3VuNTVpX2dtYWMyMDBfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMTM4LDggKzIyOCwyNyBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiB9XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgc3VuNTVpX2E1MjNfZ21hYzIwMF9kYXRhID0ge1xcbitcXHQuZ2V0X3JlZ21hcCA9IHN1bjU1aV9nbWFjMjAwX2dldF9yZWdtYXAsXFxuK1xcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxcbitcXHQub2Zmc2V0ID0gMHgzNCxcXG4rXFx0LmV0eGRjX2V4dF9tYXNrID0gMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSBzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgPSB7XFxuK1xcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcXG4rXFx0LmZsYWdzID0gKFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFIHxcXG4rXFx0XFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxcbitcXHRcXHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCksXFxuK1xcdC5vZmZzZXQgPSAweDAsXFxuK1xcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcXG4rfTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXFwiIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcXFwiLFxcbitcXHQgIC5kYXRhID0gXFx1MDAyNnN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxcIixcXG4rXFx0ICAuZGF0YSA9IFxcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcXG4gXFx0eyB9XFxuIH07XFxuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjU1aV9nbWFjMjAwX21hdGNoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6MTguMDkwODA3NjQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NDIwODE1NjUzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkZXZpY2V0cmVlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBBbGx3aW5uZXIgc3VuNTVpL3N1bjYwaSBHTUFDIGV0aGVybmV0IGdsdWUgZHJpdmVyIChkd21hYy1zdW41NWkuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgQVJNL0FsbHdpbm5lciBTb0MgaGFyZHdhcmUgKHN1bjU1aS1hNTIzIGFuZCBzdW42MGktYTczMykgdmlhIERldmljZVRyZWUgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgYW1kNjQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMjJlYzVjNjBhNjczN2M0NDBmOWFhOTI4MTYwNTIzYWNiOTcyYTdlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTM6MzQ6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5pbmRleCAzMjNhNjY5ZmE5ODIzLi5mZWM0MmY0NjM3OGFjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sXG5AQCAtMjIsNiArMjIsNyBAQCBzZWxlY3Q6XG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjhpLXYzcy1lbWFjXG4gICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjUwaS1hNjQtZW1hY1xuICAgICAgICAgICAtIGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4rICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiAgIHJlcXVpcmVkOlxuICAgICAtIGNvbXBhdGlibGVcbiBcbkBAIC00NCwyNSArNDUsMzggQEAgcHJvcGVydGllczpcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuICAgICAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTQuMjBhXG4rICAgICAgLSBpdGVtczpcbisgICAgICAgICAgLSBjb25zdDogYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbisgICAgICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gZGVzY3JpcHRpb246IE1BQyBjb250cm9sbGVyIHJlZ2lzdGVyc1xuKyAgICAgIC0gZGVzY3JpcHRpb246IEdsdWUgY29uZmlndXJhdGlvbiByZWdpc3RlcnNcbiBcbiAgIGludGVycnVwdHM6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiA0XG4gXG4gICBpbnRlcnJ1cHQtbmFtZXM6XG4tICAgIGNvbnN0OiBtYWNpcnFcbisgICAgbWluSXRlbXM6IDFcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogbWFjaXJxXG4rICAgICAgLSBjb25zdDogZXRoX2xwaVxuKyAgICAgIC0gY29uc3Q6IHR4LXF1ZXVlLTBcbisgICAgICAtIGNvbnN0OiByeC1xdWV1ZS0wXG4gXG4gICBjbG9ja3M6XG4gICAgIG1pbkl0ZW1zOiAxXG4tICAgIG1heEl0ZW1zOiAyXG4rICAgIG1heEl0ZW1zOiAzXG4gXG4gICBjbG9jay1uYW1lczpcbiAgICAgbWluSXRlbXM6IDFcbiAgICAgaXRlbXM6XG4gICAgICAgLSBjb25zdDogc3RtbWFjZXRoXG4gICAgICAgLSBjb25zdDogbWJ1c1xuKyAgICAgIC0gY29uc3Q6IHB0cF9yZWZcbiBcbiAgIHBoeS1zdXBwbHk6XG4gICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yXG5AQCAtODcsNyArMTAxLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHJlc2V0LW5hbWVzXG4gICAtIHBoeS1oYW5kbGVcbiAgIC0gcGh5LW1vZGVcbi0gIC0gc3lzY29uXG4gXG4gYWxsT2Y6XG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbkBAIC0yMTksMzYgKzIzMiw5NCBAQCBhbGxPZjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICAgY29tcGF0aWJsZTpcbiAgICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgICAgY29uc3Q6IGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXG4rICAgICAgICAgICAgZW51bTpcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjU1aS1hNTIzLWdtYWMyMDBcbisgICAgICAgICAgICAgIC0gYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcbiAgICAgdGhlbjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgY2xvY2tzOlxuLSAgICAgICAgICBtaW5JdGVtczogMlxuLSAgICAgICAgY2xvY2stbmFtZXM6XG4tICAgICAgICAgIG1pbkl0ZW1zOiAyXG4gICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbiAgICAgICAgICAgZGVmYXVsdDogMFxuICAgICAgICAgICBtaW5pbXVtOiAwXG4tICAgICAgICAgIG1heGltdW06IDcwMFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcbiAgICAgICAgICAgZGVzY3JpcHRpb246XG4tICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuKyAgICAgICAgICAgIEludGVybmFsIFJHTUlJIFBIWSBUWCBjbG9jayBkZWxheSBjaGFpbiB2YWx1ZSBpbiBwcy5cbiAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuICAgICAgICAgICBkZWZhdWx0OiAwXG4gICAgICAgICAgIG1pbmltdW06IDBcbiAgICAgICAgICAgbWF4aW11bTogMzEwMFxuICAgICAgICAgICBtdWx0aXBsZU9mOiAxMDBcbiAgICAgICAgICAgZGVzY3JpcHRpb246XG4tICAgICAgICAgICAgRXh0ZXJuYWwgUkdNSUkgUEhZIFRYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuLSAgICAgIHJlcXVpcmVkOlxuLSAgICAgICAgLSBwb3dlci1kb21haW5zXG4rICAgICAgICAgICAgSW50ZXJuYWwgUkdNSUkgUEhZIFJYIGNsb2NrIGRlbGF5IGNoYWluIHZhbHVlIGluIHBzLlxuICAgICBlbHNlOlxuICAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2tzOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgY2xvY2stbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4gICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuKyAgICAgIHJlcXVpcmVkOlxuKyAgICAgICAgLSBzeXNjb25cbitcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtYXhJdGVtczogMVxuKyAgICAgICAgY2xvY2tzOlxuKyAgICAgICAgICBtaW5JdGVtczogMlxuKyAgICAgICAgICBtYXhJdGVtczogMlxuKyAgICAgICAgY2xvY2stbmFtZXM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICAgIG1heEl0ZW1zOiAyXG4rICAgICAgICByZXNldHM6XG4rICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICByZXNldC1uYW1lczpcbisgICAgICAgICAgbWF4SXRlbXM6IDFcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtYXhpbXVtOiA3MDBcbisgICAgICByZXF1aXJlZDpcbisgICAgICAgIC0gcG93ZXItZG9tYWluc1xuKyAgICAgICAgLSBzeXNjb25cbitcbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGNvbnN0OiBhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICByZWc6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICBpbnRlcnJ1cHRzOlxuKyAgICAgICAgICBtaW5JdGVtczogNFxuKyAgICAgICAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICAgICAgICBtaW5JdGVtczogNFxuKyAgICAgICAgY2xvY2tzOlxuKyAgICAgICAgICBtaW5JdGVtczogM1xuKyAgICAgICAgY2xvY2stbmFtZXM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAzXG4rICAgICAgICByZXNldHM6XG4rICAgICAgICAgIG1pbkl0ZW1zOiAyXG4rICAgICAgICByZXNldC1uYW1lczpcbisgICAgICAgICAgbWluSXRlbXM6IDJcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtYXhpbXVtOiAzMTAwXG4rICAgICAgICBzeXNjb246IGZhbHNlXG4rICAgICAgICBwb3dlci1kb21haW5zOiBmYWxzZVxuIFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbkBAIC00MTIsNCArNDgzLDMzIEBAIGV4YW1wbGVzOlxuICAgICAgICAgICAgIH07XG4gICAgICAgICB9O1xuICAgICB9O1xuK1xuKyAgLSB8XG4rICAgIGV0aGVybmV0QDQ1MTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcIixcbisgICAgICAgICAgICAgICAgICAgICBcInNucHMsZHdtYWMtNS4yMFwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwNDUxMDAwMCAweDgwMDBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDA0NTE4MDAwIDB4MTAwMFx1MDAzZTtcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNjdSA1OFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDU5XHUwMDNlLCBcdTAwM2NcdTAwMjZjY3UgNjBcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwic3RtbWFjZXRoXCIsIFwibWJ1c1wiLCBcInB0cF9yZWZcIjtcbisgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNmNjdSAzMFx1MDAzZSwgXHUwMDNjXHUwMDI2Y2N1IDMxXHUwMDNlO1xuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcInN0bW1hY2V0aFwiLCBcImFoYlwiO1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzAgMTc1IDRcdTAwM2UsIFx1MDAzYzAgMTc5IDRcdTAwM2UsIFx1MDAzYzAgMTc2IDRcdTAwM2UsIFx1MDAzYzAgMTc3IDRcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiLCBcImV0aF9scGlcIiwgXCJ0eC1xdWV1ZS0wXCIsIFwicngtcXVldWUtMFwiO1xuKyAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2cmdtaWkxX3BpbnNcdTAwM2U7XG4rICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2ZXh0X3JnbWlpX3BoeV8yXHUwMDNlO1xuKyAgICAgICAgcGh5LW1vZGUgPSBcInJnbWlpLWlkXCI7XG4rICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuK1xuKyAgICAgICAgbWRpbyB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic25wcyxkd21hYy1tZGlvXCI7XG4rICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgICAgICBleHRfcmdtaWlfcGh5XzI6IGV0aGVybmV0LXBoeUAxIHtcbisgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICB9O1xuKyAgICAgICAgfTtcbisgICAgfTtcbiAuLi5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG5pbmRleCA4NjJkZjE3M2Q5NjNmLi4zZDQzNGE1MmZiMDJkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXG5AQCAtMTAsMjEgKzEwLDIyIEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVzZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0bW1hYy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG4gXG4tI2RlZmluZSBTWVNDT05fUkVHXHRcdDB4MzRcbi1cbiAvKiBSTUlJIHNwZWNpZmljIGJpdHMgKi9cbiAjZGVmaW5lIFNZU0NPTl9STUlJX0VOXHRcdEJJVCgxMykgLyogMTogZW5hYmxlIFJNSUkgKG92ZXJyaWRlcyBFUElUKSAqL1xuIC8qIEdlbmVyaWMgc3lzdGVtIGNvbnRyb2wgRU1BQ19DTEsgYml0cyAqL1xuQEAgLTM3LDE3ICszOCw5OSBAQFxuICNkZWZpbmUgU1lTQ09OX0VUQ1NfRVhUX0dNSUlcdDB4MVxuICNkZWZpbmUgU1lTQ09OX0VUQ1NfSU5UX0dNSUlcdDB4MlxuIFxuLXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfc2V0X3N5c2NvbihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbitzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSB7XG4rXHRzdHJ1Y3QgcmVnbWFwICooKmdldF9yZWdtYXApKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4rXHR1bnNpZ25lZCBpbnQgZmxhZ3M7XG4rXHR1MzIgZXR4ZGNfZXh0X21hc2s7XG4rXHR1MzIgb2Zmc2V0O1xuK307XG4rXG4rc3RhdGljIHN0cnVjdCByZWdtYXAgKnN1bjU1aV9nbWFjMjAwX2dldF9yZWdtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbitcdFx0XHRcdFx0XHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4re1xuK1x0c3RydWN0IHJlZ21hcCAqbWFwID1cbitcdFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShwZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcInN5c2NvblwiKTtcbitcbitcdGlmIChJU19FUlIobWFwKSlcbitcdFx0ZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgUFRSX0VSUihtYXApLCBcIlVuYWJsZSB0byBtYXAgc3lzY29uXFxuXCIpO1xuK1xuK1x0cmV0dXJuIG1hcDtcbit9XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHN1bjYwaV9hNzMzX3JlZ21hcF9jZmcgPSB7XG4rXHQucmVnX2JpdHMgPSAzMixcbitcdC52YWxfYml0cyA9IDMyLFxuK1x0LnJlZ19zdHJpZGUgPSA0LFxuK307XG4rXG4rc3RhdGljIHZvaWQgc3VuNjBpX2dtYWMyMTBfcmVzZXRfYXNzZXJ0KHZvaWQgKmRhdGEpXG4ge1xuLVx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gZGV2LVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0ID0gZGF0YTtcbitcbitcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHJzdCk7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwICpzdW42MGlfZ21hYzIxMF9nZXRfcmVnbWFwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuK1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuK1x0aW50IHJldDtcbitcbitcdGJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSk7XG4rXHRpZiAoSVNfRVJSKGJhc2UpKSB7XG4rXHRcdGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGJhc2UpLCBcInVuYWJsZSB0byBnZXQgZ2x1ZSBtZW1vcnkgcmVnaW9uXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX0NBU1QoYmFzZSk7XG4rXHR9XG4rXG4rXHRpZiAoIXBsYXQtXHUwMDNlc3RtbWFjX3JzdCB8fCAhcGxhdC1cdTAwM2VzdG1tYWNfYWhiX3JzdCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJtaXNzaW5nIHJlcXVpcmVkIHJlc2V0IGNvbnRyb2xzXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBUaGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGluc2lkZSB0aGUgY29udHJvbGxlclxuK1x0ICogcmVzZXQgZG9tYWluLCBzbyB0aGUgcmVzZXQgbXVzdCBoYXBwZW4gYmVmb3JlIGFueSB3cml0ZSB0byB0aGVtXG4rXHQgKiBhbmQgc2hvdWxkIG5vdCBiZSBkb25lIGFnYWluIGJ5IHN0bW1hYyBvciB0aGUgY29uZmlndXJhdGlvbiB3aWxsXG4rXHQgKiBiZSBsb3N0LlxuK1x0ICovXG4rXHRyZXQgPSByZXNldF9jb250cm9sX2Fzc2VydChwbGF0LVx1MDAzZXN0bW1hY19yc3QpO1xuK1x0aWYgKCFyZXQpXG4rXHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocGxhdC1cdTAwM2VzdG1tYWNfcnN0KTtcbitcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCJkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1x0fVxuK1xuK1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgc3VuNjBpX2dtYWMyMTBfcmVzZXRfYXNzZXJ0LFxuK1x0XHRcdFx0ICAgICAgIHBsYXQtXHUwMDNlc3RtbWFjX3JzdCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1xuK1x0cGxhdC1cdTAwM2VzdG1tYWNfcnN0ID0gTlVMTDtcbitcbitcdHJldHVybiBkZXZtX3JlZ21hcF9pbml0X21taW8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIGJhc2UsIFx1MDAyNnN1bjYwaV9hNzMzX3JlZ21hcF9jZmcpO1xuK31cbitcbitzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4rXHRcdFx0XHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4rXHRcdFx0XHRjb25zdCBzdHJ1Y3Qgc3VuNTVpX2dtYWNfZGF0YSAqZGF0YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgbG9fYml0cyA9IGh3ZWlnaHQzMihTWVNDT05fRVRYRENfTUFTSyk7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBwZGV2LVx1MDAzZWRldi5vZl9ub2RlO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHR1MzIgdmFsLCByZWcgPSAwO1xuK1x0dTMyIG1heF9kZWxheTtcbiBcdGludCByZXQ7XG4gXG4tXHRyZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5vZGUsIFwic3lzY29uXCIpO1xuK1x0bWF4X2RlbGF5ID0gKDFVIFx1MDAzY1x1MDAzYyAobG9fYml0cyArIGh3ZWlnaHQzMihkYXRhLVx1MDAzZWV0eGRjX2V4dF9tYXNrKSkpIC0gMTtcbitcbitcdHJlZ21hcCA9IGRhdGEtXHUwMDNlZ2V0X3JlZ21hcChwZGV2LCBwbGF0KTtcbiBcdGlmIChJU19FUlIocmVnbWFwKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHJlZ21hcCksIFwiVW5hYmxlIHRvIG1hcCBzeXNjb25cXG5cIik7XG4rXHRcdHJldHVybiBQVFJfRVJSKHJlZ21hcCk7XG4gXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwidHgtaW50ZXJuYWwtZGVsYXktcHNcIiwgXHUwMDI2dmFsKSkge1xuIFx0XHRpZiAodmFsICUgMTAwKVxuQEAgLTU1LDEyICsxMzgsMTUgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9zZXRfc3lzY29uKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0ICAgICBcInR4LWRlbGF5IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDBwc1xcblwiKTtcbiBcdFx0dmFsIC89IDEwMDtcbiBcdFx0ZGV2X2RiZyhkZXYsIFwic2V0IHR4LWRlbGF5IHRvICV4XFxuXCIsIHZhbCk7XG4tXHRcdGlmICghRklFTERfRklUKFNZU0NPTl9FVFhEQ19NQVNLLCB2YWwpKVxuK1x0XHRpZiAodmFsIFx1MDAzZSBtYXhfZGVsYXkpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFx0XHQgICAgIFwiVFggY2xvY2sgZGVsYXkgZXhjZWVkcyBtYXhpbXVtICgldTAwcHMgXHUwMDNlICVsdTAwcHMpXFxuXCIsXG4tXHRcdFx0XHRcdCAgICAgdmFsLCBGSUVMRF9NQVgoU1lTQ09OX0VUWERDX01BU0spKTtcbitcdFx0XHRcdFx0ICAgICBcIlRYIGNsb2NrIGRlbGF5IGV4Y2VlZHMgbWF4aW11bSAoJXUwMHBzIFx1MDAzZSAldTAwcHMpXFxuXCIsXG4rXHRcdFx0XHRcdCAgICAgdmFsLCBtYXhfZGVsYXkpO1xuIFxuLVx0XHRyZWcgfD0gRklFTERfUFJFUChTWVNDT05fRVRYRENfTUFTSywgdmFsKTtcbitcdFx0cmVnIHw9IGZpZWxkX3ByZXAoU1lTQ09OX0VUWERDX01BU0ssIHZhbCk7XG4rXHRcdGlmIChkYXRhLVx1MDAzZWV0eGRjX2V4dF9tYXNrKVxuK1x0XHRcdHJlZyB8PSBmaWVsZF9wcmVwKGRhdGEtXHUwMDNlZXR4ZGNfZXh0X21hc2ssXG4rXHRcdFx0XHRcdCAgdmFsIFx1MDAzZVx1MDAzZSBsb19iaXRzKTtcbiBcdH1cbiBcbiBcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCJyeC1pbnRlcm5hbC1kZWxheS1wc1wiLCBcdTAwMjZ2YWwpKSB7XG5AQCAtOTUsMjEgKzE4MSwyOSBAQCBzdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICBwaHlfbW9kZXMocGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlKSk7XG4gXHR9XG4gXG4tXHRyZXQgPSByZWdtYXBfd3JpdGUocmVnbWFwLCBTWVNDT05fUkVHLCByZWcpO1xuK1x0cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgZGF0YS1cdTAwM2VvZmZzZXQsIHJlZyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCJGYWlsZWQgdG8gd3JpdGUgdG8gc3lzY29uXFxuXCIpO1xuIFxuK1x0cGxhdC1cdTAwM2VmbGFncyB8PSBkYXRhLVx1MDAzZWZsYWdzO1xuK1x0cGxhdC1cdTAwM2Vob3N0X2RtYV93aWR0aCA9IDMyO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuK1x0Y29uc3Qgc3RydWN0IHN1bjU1aV9nbWFjX2RhdGEgKmRhdGE7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG4gXHRpbnQgcmV0O1xuIFxuK1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuK1x0aWYgKCFkYXRhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xMTgsMTEgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChJU19FUlIocGxhdF9kYXQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdCk7XG4gXG4tXHQvKiBCU1AgZGlzYWJsZXMgaXQgKi9cbi1cdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFO1xuLVx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSAzMjtcbi1cbi1cdHJldCA9IHN1bjU1aV9nbWFjMjAwX3NldF9zeXNjb24oZGV2LCBwbGF0X2RhdCk7XG4rXHRyZXQgPSBzdW41NWlfZ21hYzIwMF9zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTEzOCw4ICsyMjgsMjcgQEAgc3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSA9IHtcbitcdC5nZXRfcmVnbWFwID0gc3VuNTVpX2dtYWMyMDBfZ2V0X3JlZ21hcCxcbitcdC5mbGFncyA9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFLFxuK1x0Lm9mZnNldCA9IDB4MzQsXG4rXHQuZXR4ZGNfZXh0X21hc2sgPSAwLFxuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBzdW41NWlfZ21hY19kYXRhIHN1bjYwaV9hNzMzX2dtYWMyMTBfZGF0YSA9IHtcbitcdC5nZXRfcmVnbWFwID0gc3VuNjBpX2dtYWMyMTBfZ2V0X3JlZ21hcCxcbitcdC5mbGFncyA9IChTVE1NQUNfRkxBR19TUEhfRElTQUJMRSB8XG4rXHRcdCAgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOIHxcbitcdFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxuK1x0Lm9mZnNldCA9IDB4MCxcbitcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XG4tXHR7IC5jb21wYXRpYmxlID0gXCJhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwiIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJhbGx3aW5uZXIsc3VuNTVpLWE1MjMtZ21hYzIwMFwiLFxuK1x0ICAuZGF0YSA9IFx1MDAyNnN1bjU1aV9hNTIzX2dtYWMyMDBfZGF0YSB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwiYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBcIixcbitcdCAgLmRhdGEgPSBcdTAwMjZzdW42MGlfYTczM19nbWFjMjEwX2RhdGEgfSxcbiBcdHsgfVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6MTguMDkwODA5Mzc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI1OTc2OTYyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0J3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgYXBwbHlpbmcgb3VyIHN0YW5kYXJkIGd1aWRlbGluZXMsIG9mIGNvdXJzZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBiZWluZyBjaGFuZ2VkLiBUaGUgcGF0Y2ggdG91Y2hlcyB0d28gZmlsZXM6IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuY2AuIFRoZSBZQU1MIGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggZGV2aWNlIHRyZWUgYmluZGluZ3MsIHNvIHdlJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBsYXRlci5cblxuTXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhhdCBDIGZpbGUsIGBkd21hYy1zdW41NWkuY2AuIEhtbSwgcmlnaHQsIGl0J3MgYW4gQWxsd2lubmVyIFNvQyBldGhlcm5ldCBnbHVlIGRyaXZlci4gSXQncyBhbiBzdG1tYWMgcGxhdGZvcm0gZ2x1ZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBbGx3aW5uZXIgc3VuNTVpIGFuZCBzdW42MGkgQVJNIFNvQ3MuIE9rYXksIHRoYXQgZ2l2ZXMgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgY29uZmlndXJlZC4gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJcyBpdCBhIG1vZHVsZT8gV2hhdCBidWlsZCBvcHRpb25zIGRvIHdlIGhhdmUgdG8gd29yayB3aXRoIHdoZW4gYXR0ZW1wdGluZyBmdXp6aW5nPyBUaGlzIHdpbGwgYWxsIGluZm9ybSBob3cgd2UgYXBwcm9hY2ggaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgaG93IHdlIGNhbiBiZXN0IHRhcmdldCB0aGUgY29kZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjMwLjY4ODUwNzY5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU4ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19TVU41NUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDA6Y29uZmlnIERXTUFDX1NVTjU1SVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAxLVxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19EV01BQ19TVU44SSlcXHQrPSBkd21hYy1zdW44aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcXHQrPSBkd21hYy1zdW41NWkub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19EV01BQ19USEVBRClcXHQrPSBkd21hYy10aGVhZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjMwLjczMzEwMDcxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3ODgzOTk3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBmcmFtZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERXTUFDX1NVTjU1SSBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZvciBgRFdNQUNfU1VONTVJYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlcidzIGZlYXR1cmVzIGFyZSBjb25maWd1cmVkIGFuZCBleHBvc2VkIGF0IGNvbXBpbGUgdGltZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgb24gdGhlIFN1bjU1aSBwbGF0Zm9ybS4gTGV0J3Mgc2VlLi4uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNoaXAtc3BlY2lmaWMgZGVmaW5lczoqKiBJIGJldCB0aGVyZSBhcmUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgU3VuNTVpIFNvQyB2YXJpYW50LiBUaGlzIGxpa2VseSBnb3Zlcm5zIHJlZ2lzdGVyIG9mZnNldHMsIGNsb2NrIGNvbmZpZ3VyYXRpb25zLCBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLlxuKiAgICoqRmVhdHVyZSBmbGFnczoqKiBBcmUgdGhlcmUgYW55IG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgTUFDIGZlYXR1cmVzPyBUaGluZ3MgbGlrZSBjaGVja3N1bSBvZmZsb2FkaW5nLCBWTEFOIHN1cHBvcnQsIERNQSBzZXR0aW5ncyDigJMgdGhlc2UgYXJlIGFsbCBmYWlyIGdhbWUuIEkgd2lsbCBiZSBvbiB0aGUgbG9va291dCBmb3Igd2F5cyB0byB0b2dnbGUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuXG4qICAgKipEZXBlbmRlbmN5IGNoZWNrczoqKiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBEV01BQ19TVU41NUlgIGJlY29tZXMgYXZhaWxhYmxlLiBUaGlzIHdpbGwgc2hvdyB0aGUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBvdGhlciBoYXJkd2FyZSBjb21wb25lbnRzIGFuZCBkcml2ZXJzLlxuKiAgICoqSGVscCB0ZXh0OioqIEkgaG9wZSB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGFuZCBkZXRhaWxlZC4gR29vZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHdlbGwtZG9jdW1lbnRlZCwgZXhwbGFpbmluZyB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIGl0cyBpbXBhY3QuIFRoaXMgd2lsbCBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyB0aW1lLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogSXQgd2lsbCBiZSBnb29kIHRvIHNlZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBhcyBpdCBnaXZlcyBhbiBpbW1lZGlhdGUgc2Vuc2Ugb2YgdGhlIGludGVuZGVkIHVzZSBjYXNlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiBuZXcgY2hhbmdlcyBhbmQgZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBwcm9wZXIgd29ya2luZyBvcmRlci5cblxuUmlnaHQsIGxldCdzIHN0YXJ0IHJlYWRpbmcgYW5kIHNlZSB3aGF0IGluc2lnaHRzIHdlIGNhbiB1bmNvdmVyLiBUaW1lIHRvIGJlY29tZSBvbmUgd2l0aCB0aGUgYEtjb25maWdgLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDozMy41MjE1MDg4NTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNDozMy41MjE1ODUzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDI0MzMwNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoYWJpbGl0eSBBbmFseXNpczogTXkgVGhvdWdodHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uIHVzaW5nIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBvdXRsaW5lZCBpbiBTZWN0aW9ucyAxIGFuZCAyLiBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBsZXQncyBjaGVjayB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIGZvciB0aGluZ3MgdGhhdCBtaWdodCAqbm90KiBiZSByZWFjaGFibGUuXG5cbkZpcnN0LCB3ZSBuZWVkIHRvIGVsaW1pbmF0ZSBub24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCB3aGljaCBpcyBhIGdpdmVuLCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoaW5ncyB0aGF0IGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIFRoaXMgaW5zdGFudGx5IGJyaW5ncyB0byBtaW5kIHRob3NlIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSdtIHRoaW5raW5nIG9mOlxuXG4qICAgVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoZXkgbmVlZCB0aG9zZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBsaXN0IHJlbWluZHMgbWUsIGZvciBleGFtcGxlLCBvZiB0aGluZ3MgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLlxuKiAgIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIEFSTS92ZW5kb3IgU29DcyBhcmUgYWxzbyBpbiB0aGUgdW5yZWFjaGFibGUgY2F0ZWdvcnkuIFRoaW5ncyBsaWtlIEFsbHdpbm5lci9TdW54aSBTb0MgR01BQyBldGhlcm5ldCBjb250cm9sbGVycyBzdGljayBvdXQuIFRoZXNlIGFyZSBwbGF0Zm9ybSBkZXZpY2VzIHNwZWNpZmljIHRvIHRob3NlIFNvQ3MsIGFuZCwgc3BlY2lmaWNhbGx5IGZvciBgQVJDSF9TVU5YSWAsIGBzdW41NWlgLCBhbmQgYHN1bjYwaWAsIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgYm9hcmQgY29uZmlncyBvbiBBUk0gU29Dcy4gSW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0Ugc3l6a2FsbGVyIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aGVyZSdzIG5vIHdheSB0byBpbnN0YW50aWF0ZSB0aGVtLiBUaGF0IHBsYXRmb3JtIGRldmljZS9kcml2ZXIgY2FuJ3QgYmUgcHJvYmVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRob3NlIE9GIGRldmljZSB0cmVlIG5vZGVzIGxpa2UgYGFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwYCBvciBgYWxsd2lubmVyLHN1bjYwaS1hNzMzLWdtYWMyMTBgIG9uIFN1bnhpIFNvQ3MsIGFuZCB3ZSBkb24ndCBoYXZlIHRob3NlIGluIHRoaXMgc2V0dXAuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzICphbnkqIHBvc3NpYmlsaXR5IG9mIHZpcnR1YWwgYnVzIG9yIHVzZXJzcGFjZSByZWFjaGFiaWxpdHkgZm9yIHNvbWV0aGluZyBsaWtlIGBkd21hYy1zdW41NWlgIG9uIGFtZDY0LiBMZXQncyBzZWUuLi4gaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcilgLCBhbmQgaXQgaGFzIHRoYXQgT0YgbWF0Y2ggdGFibGUsIGBzdW41NWlfZ21hYzIwMF9tYXRjaGAuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSwgaW4gYGR3bWFjLXN1bjU1aS5jYCwgYW5kIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdHJpY2tlcnkgb3IgaW5kaXJlY3QgYWNjZXNzIEkgbWlnaHQgYmUgbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE5NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjM3LjU0NTkxOTA1OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHRcXHQuZmxhZ3MgPSAoU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxcbiAyNDE6XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU4gfFxcbiAyNDI6XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVApLFxcbiAyNDM6XFx0XFx0Lm9mZnNldCA9IDB4MCxcXG4gMjQ0OlxcdFxcdC5ldHhkY19leHRfbWFzayA9IEdFTk1BU0soMTcsIDE2KSxcXG4gMjQ1OlxcdH07XFxuIDI0NjpcXHRcXG4gMjQ3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuIDI0ODpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXFxcIixcXG4gMjQ5OlxcdFxcdCAgLmRhdGEgPSBcXHUwMDI2c3VuNTVpX2E1MjNfZ21hYzIwMF9kYXRhIH0sXFxuIDI1MDpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW42MGktYTczMy1nbWFjMjEwXFxcIixcXG4gMjUxOlxcdFxcdCAgLmRhdGEgPSBcXHUwMDI2c3VuNjBpX2E3MzNfZ21hYzIxMF9kYXRhIH0sXFxuIDI1MjpcXHRcXHR7IH1cXG4gMjUzOlxcdH07XFxuIDI1NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcXG4gMjU3OlxcdFxcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcXG4gMjU4OlxcdFxcdC5kcml2ZXIgPSB7XFxuIDI1OTpcXHRcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZHdtYWMtc3VuNTVpXFxcIixcXG4gMjYwOlxcdFxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuIDI2MTpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBzdW41NWlfZ21hYzIwMF9tYXRjaCxcXG4gMjYyOlxcdFxcdH0sXFxuIDI2MzpcXHR9O1xcbiAyNjQ6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW41NWlfZ21hYzIwMF9kcml2ZXIpO1xcbiAyNjU6XFx0XFxuIDI2NjpcXHRNT0RVTEVfQVVUSE9SKFxcXCJDaGVuLVl1IFRzYWkgXFx1MDAzY3dlbnNAY3NpZS5vcmdcXHUwMDNlXFxcIik7XFxuIDI2NzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzcGVjaWZpYyBnbHVlIGxheWVyXFxcIik7XFxuIDI2ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjM3LjU0NTk5NDYxOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzUyOTIzMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBUYXJnZXQgQ29kZSBhbmQgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGNoYW5nZSBpc24ndCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyBhbiBBbGx3aW5uZXIgc3VueGkgU29DIHBsYXRmb3JtIGRyaXZlci4gVGhlIGNvZGUncyBsb29raW5nIGZvciB0aG9zZSBzcGVjaWZpYyBPRiBjb21wYXRpYmxlIHN0cmluZ3M6IGBcImFsbHdpbm5lcixzdW41NWktYTUyMy1nbWFjMjAwXCJgIGFuZCBgXCJhbGx3aW5uZXIsc3VuNjBpLWE3MzMtZ21hYzIxMFwiYCwgcGx1cyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCBoYXJkd2FyZSByZXNvdXJjZXMuIFllcCwgdGhhdCdzIHdoYXQgSSB0aG91Z2h0LiBDbG9ja3MsIHJlc2V0cywgTU1JTywgdGhlIHdvcmtzLlxuXG5TZWNvbmQsIEkgc2VlIHRoaXMgb25seSBydW5zIG9uIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIFNvQ3MuIEFuZCBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSDigJMgdGhpcyBpcyBBUk0vQVJNNjQuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBgQVJDSF9TVU5YSWAgaXNuJ3QgZXZlbiBlbmFibGVkIG9uIGFtZDY0LCBtZWFuaW5nIHRoZSBjb21waWxlciBjYW4gb25seSAqY29tcGlsZSogdGhlIGNvZGUsIG5vdCBhY3R1YWxseSBydW4gYW5kIHByb2JlIGl0LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlcmUgd29uJ3QgYmUgYW55IG9mIHRoZXNlIHBsYXRmb3JtIGRldmljZXMgcHJvYmVkIGluIG15IHN0YW5kYXJkIHg4Nl82NCBvciBhbWQ2NCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkxldCBtZSBkb3VibGUgY2hlY2sgdGhvc2UgZGV0YWlscyByZWFsIHF1aWNrLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYm90aCB0aGUgZG9jdW1lbnRhdGlvbiAoZGV2aWNldHJlZSBiaW5kaW5ncykgYW5kIHRoZSBgZHdtYWMtc3VuNTVpLmNgIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBnbHVlIGRyaXZlciBmb3IgQWxsd2lubmVyIHN1bnhpIFNvQyBldGhlcm5ldCBjb250cm9sbGVycy4gVGhpcyBpcyBkZXBlbmRlbnQgb24gdGhlIFNvQydzIGRldmljZSB0cmVlIGFuZCByZXF1aXJlcyBkaXJlY3QgYWNjZXNzIHRvIG1lbW9yeS1tYXBwZWQgaGFyZHdhcmUgcmVnaXN0ZXJzLCByZXNldHMsIGFuZCBjbG9ja3MuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBvbiBteSBhbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIHRlc3QgZW52aXJvbm1lbnRzLlxuXG5Pa2F5LCBzbyB0aGUgdmVyZGljdDogKipXb3J0aEZ1enppbmcgc2hvdWxkIGJlIGZhbHNlLioqXG5cbk5vdyB0byBwcmVwYXJlIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKipcbiogICAqKkVuYWJsZUNvbmZpZ3M6IFxcWyBdKiogKGFuIGVtcHR5IGFycmF5KSBiZWNhdXNlIHRoZXJlJ3Mgbm90aGluZyB0byBlbmFibGUgb24gdGhpcyBhcmNoaXRlY3R1cmVcbiogICAqKkZvY3VzU3ltYm9sczogXFxbIF0qKiAoYW5vdGhlciBlbXB0eSBhcnJheSkgc2luY2Ugd2UncmUgbm90IGZvY3VzaW5nIG9uIGFueSBwYXJ0aWN1bGFyIHBhcnQgb2YgdGhpcyBjb2RlLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgZGV2aWNldHJlZSBiaW5kaW5ncyBhbmQgdGhlIGBkd21hYy1zdW41NWlgIHBsYXRmb3JtIGdsdWUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEFSTSBTb0NzIHdpdGggdGhlIGRldmljZXMgZGVmaW5lZCBieSB0aGUgY29tcGF0aWJsZSBzdHJpbmdzIChgc3VuNTVpLWE1MjMtZ21hYzIwMGAsIGBzdW42MGktYTczMy1nbWFjMjEwYCkuIFRoZSBjb2RlIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCByZXF1aXJlcyBhIGRldmljZSB0cmVlL3BoeXNpY2FsIFNvQyB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNToxMi4yOTg5MjAyMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRldmljZXRyZWUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEdNQUMgZXRoZXJuZXQgZ2x1ZSBkcml2ZXIgKGR3bWFjLXN1bjU1aS5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBBUk0vQWxsd2lubmVyIFNvQyBoYXJkd2FyZSAoc3VuNTVpLWE1MjMgYW5kIHN1bjYwaS1hNzMzKSB2aWEgRGV2aWNlVHJlZSBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBhbWQ2NCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRldmljZXRyZWUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIEFsbHdpbm5lciBzdW41NWkvc3VuNjBpIEdNQUMgZXRoZXJuZXQgZ2x1ZSBkcml2ZXIgKGR3bWFjLXN1bjU1aS5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBBUk0vQWxsd2lubmVyIFNvQyBoYXJkd2FyZSAoc3VuNTVpLWE1MjMgYW5kIHN1bjYwaS1hNzMzKSB2aWEgRGV2aWNlVHJlZSBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBhbWQ2NCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNToxMi4yOTg5NjYwMDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownqhvg[1] Phase: Running StartedAt: 2026-09-10 13:35:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownqhvg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 13:35:46 +0000 UTC FinishedAt: 2026-09-10 13:35:49 +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,}