Name: series-workflowr5qnz Phase: Failed StartedAt: 2026-08-14 17:56:52 +0000 UTC FinishedAt: 2026-08-14 18:59:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5qnz[0] Phase: Succeeded StartedAt: 2026-08-14 17:56:52 +0000 UTC FinishedAt: 2026-08-14 18:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5qnz[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 17:56:52 +0000 UTC FinishedAt: 2026-08-14 18:59:29 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMgZHJpdmVyIChtb3hhcnRfZXRoZXIuYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgQVJNIFNvQyAoTW94YSBBUlQpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IHZpYSBmdXp6aW5nIGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM4NzIxNGM1NmE4MjZlYTJhMTEzMzdkOTI1NWM1MWYzYjIwNmViZWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxODo1ODoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuY1xuaW5kZXggOGJkNjAxNjg2MjRhYy4uN2I1NzIwZjk5M2FlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbkBAIC00NTEsNiAmIzQzOzQ1MSwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1veGFydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIH07XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nKHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaXJxID0gKHVuc2lnbmVkIGludCkodWludHB0cl90KWRhdGE7XG4mIzQzO1xuJiM0MztcdGlycV9kaXNwb3NlX21hcHBpbmcoaXJxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpwX2RldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuQEAgLTQ1OSw2ICYjNDM7NDY2LDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QgKnByaXY7XG4gXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbiBcdHVuc2lnbmVkIGludCBpcnE7XG4mIzQzO1x0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTtcbkBAIC00NzIsNiAmIzQzOzQ4MCwxNiBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0Z290byBpcnFfbWFwX2ZhaWw7XG4gXHR9XG4gXG4mIzQzO1x0LyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzXG4mIzQzO1x0ICogYmVlbiByZWxlYXNlZDogZGV2cmVzIHJ1bnMgYWN0aW9ucyBpbiByZXZlcnNlIHJlZ2lzdHJhdGlvbiBvcmRlcixcbiYjNDM7XHQgKiBzbyByZWdpc3RlcmluZyB0aGlzIGJlZm9yZSBkZXZtX3JlcXVlc3RfaXJxKCkgZ3VhcmFudGVlcyB0aGVcbiYjNDM7XHQgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KHBfZGV2LCBtb3hhcnRfaXJxX2Rpc3Bvc2VfbWFwcGluZyxcbiYjNDM7XHRcdFx0XHQgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gaXJxX21hcF9mYWlsO1xuJiM0MztcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuQEAgLTUzMyw2ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7ZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIGluaXRfZmFpbDtcbiBcdH1cbiYjNDM7XHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1veGFydF9uZXRkZXZfb3BzO1xuIFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcbkBAIC01NTIsNiAmIzQzOzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIGluaXRfZmFpbDpcbiBcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7aW5pdCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdGlmIChpcnFfcmVxdWVzdGVkKVxuJiM0MztcdFx0ZGV2bV9mcmVlX2lycShwX2RldiwgaXJxLCBuZGV2KTtcbiBcdG1veGFydF9tYWNfZnJlZV9tZW1vcnkobmRldik7XG4gaXJxX21hcF9mYWlsOlxuIFx0ZnJlZV9uZXRkZXYobmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzODcyMTRjNTZhODI2ZWEyYTExMzM3ZDkyNTVjNTFmM2IyMDZlYmVlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTg6NTg6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYwppbmRleCA4YmQ2MDE2ODYyNGFjLi43YjU3MjBmOTkzYWU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMKQEAgLTQ1MSw2ICYjNDM7NDUxLDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbW94YXJ0X25ldGRldl9vcHMgPSB7CiAJLm5kb192YWxpZGF0ZV9hZGRyCT0gZXRoX3ZhbGlkYXRlX2FkZHIsCiB9OwogCiYjNDM7c3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpcnEgPSAodW5zaWduZWQgaW50KSh1aW50cHRyX3QpZGF0YTsKJiM0MzsKJiM0MzsJaXJxX2Rpc3Bvc2VfbWFwcGluZyhpcnEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKnBfZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CkBAIC00NTksNiAmIzQzOzQ2Niw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCBtb3hhcnRfbWFjX3ByaXZfdCAqcHJpdjsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAl1bnNpZ25lZCBpbnQgaXJxOwomIzQzOwlib29sIGlycV9yZXF1ZXN0ZWQgPSBmYWxzZTsKIAlpbnQgcmV0OwogCiAJbmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTsKQEAgLTQ3Miw2ICYjNDM7NDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIGlycV9tYXBfZmFpbDsKIAl9CiAKJiM0MzsJLyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzCiYjNDM7CSAqIGJlZW4gcmVsZWFzZWQ6IGRldnJlcyBydW5zIGFjdGlvbnMgaW4gcmV2ZXJzZSByZWdpc3RyYXRpb24gb3JkZXIsCiYjNDM7CSAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZQomIzQzOwkgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLAomIzQzOwkJCQkgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGlycV9tYXBfZmFpbDsKJiM0MzsKIAlwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiAJcHJpdi0mZ3Q7bmRldiA9IG5kZXY7CiAJcHJpdi0mZ3Q7cGRldiA9IHBkZXY7CkBAIC01MzMsNiAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQluZXRkZXZfZXJyKG5kZXYsICYjMzQ7ZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcbiYjMzQ7KTsKIAkJZ290byBpbml0X2ZhaWw7CiAJfQomIzQzOwlpcnFfcmVxdWVzdGVkID0gdHJ1ZTsKIAogCW5kZXYtJmd0O25ldGRldl9vcHMgPSAmYW1wO21veGFydF9uZXRkZXZfb3BzOwogCW5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCAmYW1wO3ByaXYtJmd0O25hcGksIG1veGFydF9yeF9wb2xsLCBSWF9ERVNDX05VTSk7CkBAIC01NTIsNiAmIzQzOzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiBpbml0X2ZhaWw6CiAJbmV0ZGV2X2VycihuZGV2LCAmIzM0O2luaXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CWlmIChpcnFfcmVxdWVzdGVkKQomIzQzOwkJZGV2bV9mcmVlX2lycShwX2RldiwgaXJxLCBuZGV2KTsKIAltb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpOwogaXJxX21hcF9mYWlsOgogCWZyZWVfbmV0ZGV2KG5kZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgbW94YXJ0X2V0aGVyLmNgIGZpbGUgd2l0aGluIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBkcml2ZXIuIEl0IHNlZW1zIHRoZXkmIzM5O3JlIGFkZGluZyBgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmdgIGFuZCBjbGV2ZXJseSB1c2luZyBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YCB0byByZWdpc3RlciBpdCB3aXRoaW4gYG1veGFydF9tYWNfcHJvYmVgLiBTbWFydCBtb3ZlLCB0aGF0JiMzOTtzIGNsZWFuIHJlc291cmNlIG1hbmFnZW1lbnQuIEFuZCB0aGV54oCZdmUgaW5jbHVkZWQgYSBgZGV2bV9mcmVlX2lycWAgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbW94YXJ0X21hY19wcm9iZWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBoYW5kbGluZyBpbnRlcnJ1cHQgcmVxdWVzdHMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgcHJvYmUuIEdvb2QsIGdvb2QsIHByb3BlciBlcnJvciBoYW5kbGluZy4KCk5vdywgdGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQywgYSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIE9uZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIHVwLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBNb3hhIGdlYXIgaXMgb2Z0ZW4gdXNlZCBpbiBpbmR1c3RyaWFsIHNldHRpbmdzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbGlob29kIG9mIGl0IGJlaW5nIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeSBvciBzaW1pbGFyIHRvIGdldCBhIGZlZWwgZm9yIGl0cyBkZXBlbmRlbmNpZXMuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxlc3MgbGlrZWx5IHRvIGJlIHByZXNlbnQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIGl0cyBvdmVyYWxsIGFwcGxpY2FiaWxpdHkuIExldOKAmXMgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydF9tYWNfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz00NTQ9c3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM6NDYxOnN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM9NTk4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo1OTk6XHQucHJvYmVcdD0gbW94YXJ0X21hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjAwLVx0LnJlbW92ZSA9IG1veGFydF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIERpdmUgZm9yIE1PWEFSVF9FVEhFUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU9YQVJUX0VUSEVSLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIGFyZSBkZWZpbmVkLCBhbmQgdGhlIGRlcGVuZGVuY2llcyBhcmUgaGFtbWVyZWQgb3V0LiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciAmIzM0O01PWEFSVF9FVEhFUiYjMzQ7IHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBvZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciB0aGUgcmVsZXZhbnQgZHJpdmVycyBkaXJlY3RvcnkuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiDigJMgdGhlIGBjb25maWcgTU9YQVJUX0VUSEVSYCBsaW5lIGl0c2VsZi4gVGhlbiBJJiMzOTtsbCBzY2FuIHRoZSBzdXJyb3VuZGluZyBvcHRpb25zLiBXaGF0IGFyZSBpdHMgZGVmYXVsdHM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgZG9lcyBpdCBkZXBlbmQgb24/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWZpbmVzLCBjbG9jayBzZXR0aW5ncywgb3IgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgd2hpY2ggc2V0dGluZ3MgYWZmZWN0IGl0cyBiZWhhdmlvciwgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGJlIGltcGFjdGluZyBpdHMgb3BlcmF0aW9uLiBUaGlzIGluaXRpYWwgc2NhbiB3aWxsIGd1aWRlIG1lIHRvIHRoZSBtb3JlIGNvbXBsZXggcGFydHMgb2YgdGhlIGNvZGUuIElmIHRoZSBkaXJlY3QgZGVmaW5pdGlvbiBpcyB1bmNsZWFyLCBJIHdpbGwgbGlrZWx5IG5lZWQgdG8gZm9sbG93IGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyBvciBmdXJ0aGVyIGBzZWxlY3RgIHN0YXRlbWVudHMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTU9YQVJUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWc6MjA6Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01PWEFSVCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gc3VtbWFyaXplIG15IHRob3VnaHQgcHJvY2Vzcy4gSGVyZSB3ZSBnbzoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBteSBhbmFseXRpY2FsIG1pbmQgaXMga2lja2luZyBpbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBicmVhayB0aGlzIGRvd24gaW50byBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBvciBmYWN0b3JzIGFyZSBpbmZsdWVuY2luZyB0aGUgdG9waWMgYXQgaGFuZC4gVGhpcyBpcyB0aGUgZmlyc3QsIGNydWNpYWwgc3RlcC4gSXQmIzM5O3MgYWJvdXQgZXN0YWJsaXNoaW5nIHRoZSBmcmFtZXdvcmssIHRoZSBib3VuZGFyaWVzLCBhbmQgdGhlIGNvcmUgZWxlbWVudHMgdGhhdCBzaGFwZSB0aGUgc3lzdGVtLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGEgY29tcGxldGUgYW5kIGFjY3VyYXRlIGxpc3Qgb2YgZWxlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNT1hBUlQgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfTU9YQVJUXG4gICA3Olx0XHRib29sIFwmIzM0O01PWEEgQVJUIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0ZGVwZW5kcyBvbiAoQVJNIFx1MDAyNlx1MDAyNiBBUkNIX01PWEFSVClcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTU9YQSBBUlQgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxuICAxNjpcdFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTU9YQVJUXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01PWEFSVCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIEFSTSBcdTAwMjZcdTAwMjYgQVJDSF9NT1hBUlRcbiAgMjM6XHRcdHNlbGVjdCBORVRfQ09SRVxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggTU9YQSBBUlQgU29DIGFuZFxuICAyNjpcdFx0ICB3YW50IHRvIHVzZSB0aGUgaW50ZXJuYWwgZXRoZXJuZXQgdGhlbiB5b3Ugc2hvdWxkIGFuc3dlciBZIHRvIHRoaXMuXG4gIDI3Olx0XG4gIDI4Olx0XG4gIDI5Olx0ZW5kaWYgIyBORVRfVkVORE9SX01PWEFSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGUgY29kZSBjaGFuZ2VzIGhpbmdlIG9uIGBBUk0gJmFtcDsmYW1wOyBBUkNIX01PWEFSVGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gKmdldCogdG8gdGhpcyBgQVJDSF9NT1hBUlRgIGNvbmRpdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSBkb2VzbiYjMzk7dCBqdW1wIG91dCB3aXRoIGEgcmVhZGlseSBhdmFpbGFibGUgJiMzNDtNT1hBUlQmIzM0OyBtYWNoaW5lIHR5cGUsIHdoaWNoIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGFuIG9ic2N1cmUgQVJNIGJvYXJkLCBvciBhdCBsZWFzdCBvbmUgbm90IGNvbW1vbmx5IGVtdWxhdGVkLiBJIG5lZWQgdG8gYmUgc3VyZS4gQWgsIHJpZ2h0LCBgQVJDSF9NT1hBUlRgIGlzIHNwZWNpZmljIHRvIHRoZSBNb3hhIEFSVCBTb0MuCgpUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgKm9ubHkqIGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gVGhhdCYjMzk7cyBhIHByb2JlIGZ1bmN0aW9uLCBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgZXJyb3IgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIGFyZSB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBoYXJkd2FyZSBkcml2ZXIuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgKndvcnRoKiBmdXp6aW5nPyBJIG5lZWQgdG8gYXBwbHkgdGhlIHByb21wdCYjMzk7cyBjcml0ZXJpYS4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpNb3hhIEFSVCBFdGhlcm5ldCBNQUMuLi4gdGhhdCYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IEFSTSBTb0MuIEl0JiMzOTtzIG5vdCBhIFBDSSBkZXZpY2UuIFRoaXMgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHBhcnQgb2YgdGhlIGJhc2UgaGFyZHdhcmUuIENhbiBJIGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZT8gUHJvYmFibHkgbm90LiBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIE1veGEgQVJUIG1hY2hpbmUuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBkb3VibGUtY2hlY2ssIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzICpub3QqIGZ1enplci1mcmllbmRseS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlcmUmIzM5O3MgdHJ1bHkgbm8gUUVNVSBzdXBwb3J0IGZvciBNT1hBUlQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cy9tb3hhL01ha2VmaWxlPTI9ZHRiLSQoQ09ORklHX0FSQ0hfTU9YQVJUKSAmIzQzOz0gXFxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvTWFrZWZpbGU6MzpcdG1veGFydC11YzcxMTJseC5kdGJcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjI6LyogbW94YXJ0LXVjNzExMmx4LmR0cyAtIERldmljZSBUcmVlIGZpbGUgZm9yIE1PWEEgVUMtNzExMi1MWFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTMtICpcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtNy0vZHRzLXYxLztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0czo4OiNpbmNsdWRlIFwmIzM0O21veGFydC5kdHNpXCYjMzQ7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtOS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz0xMD0vIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMS1cdG1vZGVsID0gXCYjMzQ7TU9YQSBVQy03MTEyLUxYXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEyOlx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXVjLTcxMTItbHhcJiMzNDssIFwmIzM0O21veGEsbW94YXJ0XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTEzLVxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz04OT1cdGV0aHBoeTA6IGV0aGVybmV0LXBoeUAxIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy05MC1cdFx0ZGV2aWNlX3R5cGUgPSBcJiMzNDtldGhlcm5ldC1waHlcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHM6OTE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1ydGw4MjAxY3BcJiMzNDssIFwmIzM0O2V0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTkyLVx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz05OT1cdGV0aHBoeTE6IGV0aGVybmV0LXBoeUAxIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMDAtXHRcdGRldmljZV90eXBlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEwMTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXJ0bDgyMDFjcFwmIzM0OywgXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMTAyLVx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToyOi8qIG1veGFydC5kdHNpIC0gRGV2aWNlIFRyZWUgSW5jbHVkZSBmaWxlIGZvciBNT1hBIEFSVCBmYW1pbHkgU29DXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTMtICpcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTk9LyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMS1cdCNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTI6XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnRcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEzLVx0bW9kZWwgPSBcJiMzNDtNT1hBUlRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0zOT1cdFx0aW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAOTg4MDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo0MDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtaWNcJiMzNDssIFwmIzM0O2ZhcmFkYXksZnRpbnRjMDEwXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS00MS1cdFx0XHRyZWcgPSBcdTAwM2MweDk4ODAwMDAwIDB4MTAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NDc9XHRcdGNsa19wbGw6IGNsa19wbGxAOTgxMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo0ODpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtcGxsLWNsb2NrXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS00OS1cdFx0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NTM9XHRcdGNsa19hcGI6IGNsa19hcGJAOTgxMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo1NDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtYXBiLWNsb2NrXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS01NS1cdFx0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NjA9XHRcdHRpbWVyOiB0aW1lckA5ODQwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjYxOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC10aW1lclwmIzM0OywgXCYjMzQ7ZmFyYWRheSxmdHRtcjAxMFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNjItXHRcdFx0cmVnID0gXHUwMDNjMHg5ODQwMDAwMCAweDQyXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9Njg9XHRcdGdwaW86IGdwaW9AOTg3MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNzAtXHRcdFx0I2dwaW8tY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo3MTpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtZ3Bpb1wmIzM0OywgXCYjMzQ7ZmFyYWRheSxmdGdwaW8wMTBcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTcyLVx0XHRcdHJlZyA9IFx1MDAzYzB4OTg3MDAwMDAgMHgxMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT03NT1cdFx0cnRjOiBydGMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo3NjpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtcnRjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03Ny1cdFx0XHRncGlvLXJ0Yy1zY2xrID0gXHUwMDNjXHUwMDI2Z3BpbyA1IDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT04Mj1cdFx0ZG1hOiBkbWFAOTA1MDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo4MzpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtZG1hXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS04NC1cdFx0XHRyZWcgPSBcdTAwM2MweDkwNTAwMDgwIDB4NDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT04OT1cdFx0d2F0Y2hkb2c6IHdhdGNoZG9nQDk4NTAwMDAwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6OTA6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXdhdGNoZG9nXCYjMzQ7LCBcJiMzNDtmYXJhZGF5LGZ0d2R0MDEwXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS05MS1cdFx0XHRyZWcgPSBcdTAwM2MweDk4NTAwMDAwIDB4MTBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT05Nj1cdFx0bW1jOiBtbWNAOThlMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo5NzpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtbW1jXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS05OC1cdFx0XHRyZWcgPSBcdTAwM2MweDk4ZTAwMDAwIDB4NUNcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMDc9XHRcdG1kaW8wOiBtZGlvQDkwOTAwMDkwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTA4Olx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1tZGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMDktXHRcdFx0cmVnID0gXHUwMDNjMHg5MDkwMDA5MCAweDhcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMTU9XHRcdG1kaW8xOiBtZGlvQDkyMDAwMDkwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTE2Olx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1tZGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMTctXHRcdFx0cmVnID0gXHUwMDNjMHg5MjAwMDA5MCAweDhcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMjM9XHRcdG1hYzA6IG1hY0A5MDkwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjEyNDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtbWFjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMjUtXHRcdFx0cmVnID0gXHUwMDNjMHg5MDkwMDAwMCAweDkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTMyPVx0XHRtYWMxOiBtYWNAOTIwMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMzM6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LW1hY1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTM0LVx0XHRcdHJlZyA9IFx1MDAzYzB4OTIwMDAwMDAgMHg5MFx1MDAzZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBUcmlnZ2VyaW5nIGBtb3hhcnRfbWFjX3Byb2JlYCBpbiBRRU1VKioKCk9rYXksIHNvIGBtb3hhcnRfbWFjX3Byb2JlYCBpcyBhIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZm9yIGEgcGxhdGZvcm0gZGV2aWNlLiBUaGUgY2hhbGxlbmdlIGlzLCBob3cgZG8gSSBhY3R1YWxseSB0cmlnZ2VyIGl0IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IElmIEkgY2FuJiMzOTt0IGVtdWxhdGUgdGhlIE1PWEFSVCBtYWNoaW5lIGl0c2VsZiwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGRlYWQgaW4gdGhlIHdhdGVyLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpZiBRRU1VIGV2ZW4gb2ZmZXJzIGEgTU9YQVJUIG1hY2hpbmUgZGVmaW5pdGlvbi4gSSBkb24mIzM5O3QgaGF2ZSBpbW1lZGlhdGUgYWNjZXNzIHRvIHRoZSBRRU1VIHNvdXJjZSwgYnV0IGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGhlIGNvbW1vbiBBUk0gbWFjaGluZXMgKGxpa2UgdmlydCwgdmV4cHJlc3MsIHZlcnNhdGlsZXBiKSBhcmUgZ2VuZXJhbGx5IHdlbGwtZG9jdW1lbnRlZC4KCk5vdywgaWYgTU9YQVJUIGlzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlZCwgYXJlIHRoZXJlIGFsdGVybmF0aXZlIG1ldGhvZHMgdG8gdHJpZ2dlciBhIHBsYXRmb3JtIGRldmljZSBwcm9iZSBpbiBRRU1VPyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGVyZSBhcmUgYSBmZXcgb3B0aW9ucy4gRGV2aWNlIHRyZWUgb3ZlcmxheXMgYXJlIGEgc3Ryb25nIGNvbnRlbmRlci4gSSBjb3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIGRldmljZSB0cmVlIHBhc3NlZCB0byBRRU1VIGRpcmVjdGx5LiBBbm90aGVyIHBhdGggaXMgY3JlYXRpbmcgYSBmYWtlIHBsYXRmb3JtIGRldmljZSBkcml2ZXIgb3IgbW9kdWxlLCBlc3NlbnRpYWxseSB0cmlja2luZyB0aGUgc3lzdGVtLiBBbmQgdGhlbiwgdGhlcmUmIzM5O3MgU3l6a2FsbGVyLgoKQnV0IGhvdyB3b3VsZCBTeXprYWxsZXIgaGVscD8gSXQgY2FuIGluaXRpYWxpemUgZGV2aWNlcyB1c2luZyBgc3l6X2Rldl9pbml0YCBvciBtb2RpZnkgdGhlIGRldmljZSB0cmVlLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCBpbmplY3QgZW50aXJlbHkgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb24uIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBjYW4gU3l6a2FsbGVyIHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBkb2VzbiYjMzk7dCBleGlzdC4gU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgcHJlLWV4aXN0aW5nIFN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSAmIzM0O21veGFydCYjMzQ7IHBsYXRmb3JtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgV29ydGhGdXp6aW5nIGZvciBNT1hBUlQgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyBJIGNhbiYjMzk7dCBzZWFyY2ggZm9yIHN5emthbGxlciBkZXNjcmlwdGlvbnMsIHNvIHRoYXQmIzM5O3Mgb3V0LiBBbmQgSSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCB0b29scyBhbnl3YXkuIEZpbmUuIFRoZSBrZXkgaXMgdG8gYXNzZXNzIGlmIHRoZSBwYXRjaCB0YXJnZXRzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLgoKUmlnaHQsIHNvIGlzIE1PWEFSVCBzdWNoIGEgdGhpbmc/IFllcywgTU9YQVJUIGlzIGEgTW94YSBBUlQgU29DLiBUaGF0JiMzOTtzIGEgc3BlY2lmaWMgQVJNIFNvQy4gSWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiDigJMgd2hpY2ggdGhlIHBhdGNoIGlzIG1vZGlmeWluZyDigJMgd29uJiMzOTt0IGV2ZW4gYmUgY2FsbGVkLiBDYW4gaXQgYmUgcmVhY2hlZCB2aWEgYSBkaWZmZXJlbnQgcGF0aD8gSXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgJiMzNDttb3hhLG1veGFydC1tYWMmIzM0Oy4gUGxhdGZvcm0gZHJpdmVycyByZWx5IG9uIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYmVpbmcgcmVnaXN0ZXJlZC4gVGhvc2UgYXJlIHVzdWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGFyY2hpdGVjdHVyZSBjb2RlIHZpYSBkZXZpY2UgdHJlZS4gSWYgdGhlIHRhcmdldCBib2FyZCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSAod2hpY2ggaXMgdGhlIGNhc2UpLCB0aGUgZGV2aWNlIHRyZWUgd29uJiMzOTt0IGJlIGxvYWRlZCwgYW5kIHRoZXJlJiMzOTtzIG5vIHBsYXRmb3JtIGRldmljZSwgc28gbm8gcHJvYmUuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgTU9YQVJUIGlzIGVtdWxhdGVkLiBTZWFyY2hpbmcgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uLCBpdCYjMzk7cyBleHBsaWNpdGx5IGRlc2NyaWJlZCBhcyBhIHBoeXNpY2FsIFNvQyAoTW94YSBVQy03MTEyLUxYKSwgc28gbm8uIFRoZSBwcm9iZSB3aWxsIG5ldmVyIHJ1bi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSB0cmljayB0byBieXBhc3MgdGhpcy4gQ291bGQgSSBiaW5kIHRoZSBkcml2ZXIgdG8gYSBkZXZpY2UgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvbW94YXJ0LW1hYy9iaW5kYD8gTm8sIHlvdSBuZWVkIGFuIGV4aXN0aW5nIGRldmljZSB0byBiaW5kIHRvLCBzbyBpdCYjMzk7cyBhIGRlYWQgZW5kLiBDYW4gdXNlci1zcGFjZSBqdXN0ICpjcmVhdGUqIHBsYXRmb3JtIGRldmljZXM/IE5vdCBpbiBhIHN0YW5kYXJkIGtlcm5lbCwgdGhlcmUmIzM5O3Mgbm8gYHBsYXRmb3JtLWRldmljZS1pbmplY3Rpb25gLiBUaGVyZSYjMzk7cyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCwgYnV0IHRoYXQmIzM5O3MgYSBrZXJuZWwgQVBJLgoKU28sIHRoaXMgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMpLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBuZWF0bHkgZmFsbHMgdW5kZXIgdHdvIG9mIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4mIzM0OyBhbmQgJiMzNDsuLi52ZW5kb3Itc3BlY2lmaWMuLi5kcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsLi4uaGFyZHdhcmUuLi5ub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBUaHVzLCBJIGNvbmNsdWRlLCBXb3J0aEZ1enppbmcgPSBGYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyLiptb3hhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jPTY1ND1zdGF0aWMgaW50IG1veGFydF9pbml0KHZvaWQpXG5kcml2ZXJzL2RtYS9tb3hhcnQtZG1hLmMtNjU1LXtcbmRyaXZlcnMvZG1hL21veGFydC1kbWEuYzo2NTY6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNm1veGFydF9kcml2ZXIpO1xuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jLTY1Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MDYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbW94YXJ0X21hY19kcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1veGFydF9tYWNfZHJpdmVyYCB0aGluZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCwgYW5kIHByZXR0eSBjb252ZW50aW9uYWxseSwgYXQgdGhhdC4gSSBzZWUgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X21hY19kcml2ZXIpO2AgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNgLiBUaGF0IHRlbGxzIG1lLCB3aXRob3V0IGRpZ2dpbmcgZnVydGhlciBmb3IgdGhlIG1vbWVudCwgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLCBhbmQgaXQmIzM5O3MgYnVpbHQgdG8gb3BlcmF0ZSBvbiBhIHBsYXRmb3JtIHdoZXJlIGl0JiMzOTtsbCBiZSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGUgYG1vZHVsZV9gIHByZWZpeCB0ZWxscyB1cyBpdCYjMzk7cyBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUsIGFuZCBpdCYjMzk7cyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gTWFrZXMgc2Vuc2UuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIHRoZSBtb2R1bGUgaXMgbG9hZGVkLCB0aGUga2VybmVsIGlzIHVzaW5nIHRoZSBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGlzIGRyaXZlciAobW94YXJ0X21hY19kcml2ZXIpIHRvIGxvYWQgYW5kIG1hbmFnZSB0aGUgaGFyZHdhcmUgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGV4cGVjdGVkIHBhdHRlcm4gZm9yIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIuKm1veGFydCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYz03MDg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21tY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9tb3hhcnQtbW1jLmMtNzE2LX07XG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYzo3MTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbW1jX2RyaXZlcik7XG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYy03MTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz01OTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM6NjA2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDctXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jPTE3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYzoxODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4Mi1cbi0tXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmM9Mjk2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9ydGNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYy0zMDItfTtcbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYzozMDM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfcnRjX2RyaXZlcik7XG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzA0LVxuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jPTE1MD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfd2R0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL21veGFydF93ZHQuYy0xNTYtfTtcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jOjE1Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF93ZHRfZHJpdmVyKTtcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jLTE1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTUKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIHRoZSBNb3hhIEFSVCwgd2hpY2ggaXMgYW4gQVJNIFNvQy4gVGhlIGZpcnN0IHRoaW5nIEkgdGhvdWdodCB3YXMsICYjMzQ7Q2FuIFFFTVUgaGVscCBtZSBoZXJlPyYjMzQ7IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTW94YSBBUlQgc3BlY2lmaWNhbGx5LiBJIHBhdXNlZCwganVzdCBpbiBjYXNlIG15IG1lbW9yeSB3YXMgZmF1bHR5LCBidXQgbm8sIGRlZmluaXRlbHkgbm8gYG1veGFgIG1hY2hpbmUgaW4gUUVNVS4gVGhlcmUmIzM5O3MgYSBgbW94aWVgIGFyY2hpdGVjdHVyZSwgYnV0IHRoYXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gSSBxdWlja2x5IG1lbnRhbGx5IHJhbiB0aHJvdWdoIHRoZSBzdGFuZGFyZCBRRU1VIEFSTSBtYWNoaW5lcyAtIGB2aXJ0YCwgYHZleHByZXNzYCwgYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyAtIGFuZCBNb3hhIEFSVCBpc24mIzM5O3QgYW1vbmcgdGhlbS4KCkV2ZW4gKmlmKiBieSBzb21lIGZsdWtlIHRoZSBNb3hhIEFSVCB3YXMgZW11bGF0ZWQsIHRoaXMgcGF0Y2ggb25seSB0b3VjaGVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBCdXQgc2luY2UgdGhlIGRyaXZlciBpcyBzbyBoYXJkd2FyZSBzcGVjaWZpYywgYW5kIG5vdCBldmVuIGVtdWxhdGVkLCBnZXR0aW5nIHRvIHRoYXQgY29kZSBpcyBpbXBvc3NpYmxlLgoKTm93LCBjb25zaWRlcmluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBjYXNlLiBUaGlzIHBhdGNoJiMzOTtzIGNvZGUgcGF0aCAqaXMqIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSwgc2luY2UgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZC4gSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIHNvIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjMuODM1MTA1NjA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0ODM5MDA3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODoyMy44MzUxMjQ5NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjg0NzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM4NzIxNGM1NmE4MjZlYTJhMTEzMzdkOTI1NWM1MWYzYjIwNmViZWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTg6NTg6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcXG5pbmRleCA4YmQ2MDE2ODYyNGFjLi43YjU3MjBmOTkzYWU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXFxuQEAgLTQ1MSw2ICs0NTEsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtb3hhcnRfbmV0ZGV2X29wcyA9IHtcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG4gfTtcXG4gXFxuK3N0YXRpYyB2b2lkIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nKHZvaWQgKmRhdGEpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGlycSA9ICh1bnNpZ25lZCBpbnQpKHVpbnRwdHJfdClkYXRhO1xcbitcXG4rXFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhpcnEpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpwX2RldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuQEAgLTQ1OSw2ICs0NjYsNyBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0c3RydWN0IG1veGFydF9tYWNfcHJpdl90ICpwcml2O1xcbiBcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4gXFx0dW5zaWduZWQgaW50IGlycTtcXG4rXFx0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBtb3hhcnRfbWFjX3ByaXZfdCkpO1xcbkBAIC00NzIsNiArNDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRnb3RvIGlycV9tYXBfZmFpbDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzXFxuK1xcdCAqIGJlZW4gcmVsZWFzZWQ6IGRldnJlcyBydW5zIGFjdGlvbnMgaW4gcmV2ZXJzZSByZWdpc3RyYXRpb24gb3JkZXIsXFxuK1xcdCAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZVxcbitcXHQgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLFxcbitcXHRcXHRcXHRcXHQgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gaXJxX21hcF9mYWlsO1xcbitcXG4gXFx0cHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXHRwcml2LVxcdTAwM2VuZGV2ID0gbmRldjtcXG4gXFx0cHJpdi1cXHUwMDNlcGRldiA9IHBkZXY7XFxuQEAgLTUzMyw2ICs1NTEsNyBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwiZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIGluaXRfZmFpbDtcXG4gXFx0fVxcbitcXHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcXG4gXFxuIFxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bW94YXJ0X25ldGRldl9vcHM7XFxuIFxcdG5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcXG5AQCAtNTUyLDYgKzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gaW5pdF9mYWlsOlxcbiBcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJpbml0IGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdGlmIChpcnFfcmVxdWVzdGVkKVxcbitcXHRcXHRkZXZtX2ZyZWVfaXJxKHBfZGV2LCBpcnEsIG5kZXYpO1xcbiBcXHRtb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpO1xcbiBpcnFfbWFwX2ZhaWw6XFxuIFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODoyNC4zNjg3OTgxMDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1Mzk1MDE5MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMgZHJpdmVyIChtb3hhcnRfZXRoZXIuYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgQVJNIFNvQyAoTW94YSBBUlQpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IHZpYSBmdXp6aW5nIGluIHN1Y2ggZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzg3MjE0YzU2YTgyNmVhMmExMTMzN2Q5MjU1YzUxZjNiMjA2ZWJlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE4OjU4OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbmluZGV4IDhiZDYwMTY4NjI0YWMuLjdiNTcyMGY5OTNhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXG5AQCAtNDUxLDYgKzQ1MSwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1veGFydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIH07XG4gXG4rc3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgaXJxID0gKHVuc2lnbmVkIGludCkodWludHB0cl90KWRhdGE7XG4rXG4rXHRpcnFfZGlzcG9zZV9tYXBwaW5nKGlycSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKnBfZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5AQCAtNDU5LDYgKzQ2Niw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IG1veGFydF9tYWNfcHJpdl90ICpwcml2O1xuIFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4gXHR1bnNpZ25lZCBpbnQgaXJxO1xuK1x0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTtcbkBAIC00NzIsNiArNDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGlycV9tYXBfZmFpbDtcbiBcdH1cbiBcbitcdC8qIERpc3Bvc2Ugb2YgdGhlIElSUSBtYXBwaW5nIGFmdGVyIHRoZSBkZXZyZXMtbWFuYWdlZCBoYW5kbGVyIGhhc1xuK1x0ICogYmVlbiByZWxlYXNlZDogZGV2cmVzIHJ1bnMgYWN0aW9ucyBpbiByZXZlcnNlIHJlZ2lzdHJhdGlvbiBvcmRlcixcbitcdCAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZVxuK1x0ICogY29ycmVjdCBvcmRlciBvbiBwcm9iZSB1bndpbmQgYW5kIGRldmljZSByZW1vdmFsLlxuK1x0ICovXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLFxuK1x0XHRcdFx0ICAgICAgICh2b2lkICopKHVpbnRwdHJfdClpcnEpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBpcnFfbWFwX2ZhaWw7XG4rXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VwZGV2ID0gcGRldjtcbkBAIC01MzMsNiArNTUxLDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdG5ldGRldl9lcnIobmRldiwgXCJkZXZtX3JlcXVlc3RfaXJxIGZhaWxlZFxcblwiKTtcbiBcdFx0Z290byBpbml0X2ZhaWw7XG4gXHR9XG4rXHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1veGFydF9uZXRkZXZfb3BzO1xuIFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcbkBAIC01NTIsNiArNTcxLDggQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gaW5pdF9mYWlsOlxuIFx0bmV0ZGV2X2VycihuZGV2LCBcImluaXQgZmFpbGVkXFxuXCIpO1xuK1x0aWYgKGlycV9yZXF1ZXN0ZWQpXG4rXHRcdGRldm1fZnJlZV9pcnEocF9kZXYsIGlycSwgbmRldik7XG4gXHRtb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpO1xuIGlycV9tYXBfZmFpbDpcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjQuMzY4Nzk5NTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyOTg4NzIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBtb3hhcnRfZXRoZXIuY2AgZmlsZSB3aXRoaW4gdGhlIE1veGEgQVJUIEV0aGVybmV0IGRyaXZlci4gSXQgc2VlbXMgdGhleSdyZSBhZGRpbmcgYG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nYCBhbmQgY2xldmVybHkgdXNpbmcgYGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldGAgdG8gcmVnaXN0ZXIgaXQgd2l0aGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gU21hcnQgbW92ZSwgdGhhdCdzIGNsZWFuIHJlc291cmNlIG1hbmFnZW1lbnQuIEFuZCB0aGV54oCZdmUgaW5jbHVkZWQgYSBgZGV2bV9mcmVlX2lycWAgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbW94YXJ0X21hY19wcm9iZWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBoYW5kbGluZyBpbnRlcnJ1cHQgcmVxdWVzdHMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgcHJvYmUuIEdvb2QsIGdvb2QsIHByb3BlciBlcnJvciBoYW5kbGluZy5cblxuTm93LCB0aGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDLCBhIHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlLiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgY29udGV4dC4gT25lIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1veGEgZ2VhciBpcyBvZnRlbiB1c2VkIGluIGluZHVzdHJpYWwgc2V0dGluZ3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGxpa2VsaWhvb2Qgb2YgaXQgYmVpbmcgdXNlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBkcml2ZXIncyBkaXJlY3Rvcnkgb3Igc2ltaWxhciB0byBnZXQgYSBmZWVsIGZvciBpdHMgZGVwZW5kZW5jaWVzLiBEb2VzIGl0IGRlcGVuZCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBwcmVzZW50IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIGl0cyBvdmVyYWxsIGFwcGxpY2FiaWxpdHkuIExldOKAmXMgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjkuNDk4Njg5MTY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDc4ODI3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW94YXJ0X21hY19wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jPTQ1ND1zdGF0aWMgdm9pZCBtb3hhcnRfaXJxX2Rpc3Bvc2VfbWFwcGluZyh2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo0NjE6c3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz01OTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo1OTk6XFx0LnByb2JlXFx0PSBtb3hhcnRfbWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjAwLVxcdC5yZW1vdmUgPSBtb3hhcnRfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODozMS40NDY1NzgzMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE2MTEyNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBEaXZlIGZvciBNT1hBUlRfRVRIRVIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU9YQVJUX0VUSEVSLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBoYW1tZXJlZCBvdXQuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciBcIk1PWEFSVF9FVEhFUlwiIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBvZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciB0aGUgcmVsZXZhbnQgZHJpdmVycyBkaXJlY3RvcnkuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGl2ZSBkZWZpbml0aW9uIOKAkyB0aGUgYGNvbmZpZyBNT1hBUlRfRVRIRVJgIGxpbmUgaXRzZWxmLiBUaGVuIEknbGwgc2NhbiB0aGUgc3Vycm91bmRpbmcgb3B0aW9ucy4gV2hhdCBhcmUgaXRzIGRlZmF1bHRzPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGRvZXMgaXQgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcywgY2xvY2sgc2V0dGluZ3MsIG9yIGludGVycnVwdCBjb250cm9sbGVycy4gVGhlIG9iamVjdGl2ZSBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHdoaWNoIHNldHRpbmdzIGFmZmVjdCBpdHMgYmVoYXZpb3IsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBiZSBpbXBhY3RpbmcgaXRzIG9wZXJhdGlvbi4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCBndWlkZSBtZSB0byB0aGUgbW9yZSBjb21wbGV4IHBhcnRzIG9mIHRoZSBjb2RlLiBJZiB0aGUgZGlyZWN0IGRlZmluaXRpb24gaXMgdW5jbGVhciwgSSB3aWxsIGxpa2VseSBuZWVkIHRvIGZvbGxvdyBhbnkgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgb3IgZnVydGhlciBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzUuMTYyNjkyOTM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzM5NjI0NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTU9YQVJUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZzoyMDpjb25maWcgQVJNX01PWEFSVF9FVEhFUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiTU9YQVJUIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU4OjM2Ljk5NjY2MDczNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzOTQ0OTYyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIEknbSByZWFkeSB0byBzdW1tYXJpemUgbXkgdGhvdWdodCBwcm9jZXNzLiBIZXJlIHdlIGdvOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBteSBhbmFseXRpY2FsIG1pbmQgaXMga2lja2luZyBpbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBicmVhayB0aGlzIGRvd24gaW50byBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBvciBmYWN0b3JzIGFyZSBpbmZsdWVuY2luZyB0aGUgdG9waWMgYXQgaGFuZC4gVGhpcyBpcyB0aGUgZmlyc3QsIGNydWNpYWwgc3RlcC4gSXQncyBhYm91dCBlc3RhYmxpc2hpbmcgdGhlIGZyYW1ld29yaywgdGhlIGJvdW5kYXJpZXMsIGFuZCB0aGUgY29yZSBlbGVtZW50cyB0aGF0IHNoYXBlIHRoZSBzeXN0ZW0uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgYSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgbGlzdCBvZiBlbGVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5MywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzkuMzkxMTU5MjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1PWEFSVCBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NT1hBUlRcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk1PWEEgQVJUIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gKEFSTSBcXHUwMDI2XFx1MDAyNiBBUkNIX01PWEFSVClcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1PWEEgQVJUIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcXG4gIDE2OlxcdFxcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NT1hBUlRcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJNT1hBUlQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gQVJNIFxcdTAwMjZcXHUwMDI2IEFSQ0hfTU9YQVJUXFxuICAyMzpcXHRcXHRzZWxlY3QgTkVUX0NPUkVcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIE1PWEEgQVJUIFNvQyBhbmRcXG4gIDI2OlxcdFxcdCAgd2FudCB0byB1c2UgdGhlIGludGVybmFsIGV0aGVybmV0IHRoZW4geW91IHNob3VsZCBhbnN3ZXIgWSB0byB0aGlzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXG4gIDI5OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NT1hBUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzkuMzkxMjM1NjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk5NDI0OTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIC0gQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGNvZGUgY2hhbmdlcyBoaW5nZSBvbiBgQVJNIFx1MDAyNlx1MDAyNiBBUkNIX01PWEFSVGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gKmdldCogdG8gdGhpcyBgQVJDSF9NT1hBUlRgIGNvbmRpdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSBkb2Vzbid0IGp1bXAgb3V0IHdpdGggYSByZWFkaWx5IGF2YWlsYWJsZSBcIk1PWEFSVFwiIG1hY2hpbmUgdHlwZSwgd2hpY2ggc3VnZ2VzdHMgaXQgbWlnaHQgYmUgYW4gb2JzY3VyZSBBUk0gYm9hcmQsIG9yIGF0IGxlYXN0IG9uZSBub3QgY29tbW9ubHkgZW11bGF0ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBBaCwgcmlnaHQsIGBBUkNIX01PWEFSVGAgaXMgc3BlY2lmaWMgdG8gdGhlIE1veGEgQVJUIFNvQy5cblxuVGhlIHBhdGNoJ3MgY2hhbmdlcyBhcmUgKm9ubHkqIGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gVGhhdCdzIGEgcHJvYmUgZnVuY3Rpb24sIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIGVycm9yIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBhcmUgdmVyeSBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmUgZHJpdmVyLlxuXG5TbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgKndvcnRoKiBmdXp6aW5nPyBJIG5lZWQgdG8gYXBwbHkgdGhlIHByb21wdCdzIGNyaXRlcmlhLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuTW94YSBBUlQgRXRoZXJuZXQgTUFDLi4uIHRoYXQncyBhIHBsYXRmb3JtIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IEFSTSBTb0MuIEl0J3Mgbm90IGEgUENJIGRldmljZS4gVGhpcyBtZWFucyBpdCdzIGxpa2VseSBwYXJ0IG9mIHRoZSBiYXNlIGhhcmR3YXJlLiBDYW4gSSBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmU/IFByb2JhYmx5IG5vdC4gUUVNVSBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIE1veGEgQVJUIG1hY2hpbmUuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBkb3VibGUtY2hlY2ssIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzICpub3QqIGZ1enplci1mcmllbmRseS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSdzIHRydWx5IG5vIFFFTVUgc3VwcG9ydCBmb3IgTU9YQVJULlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6NDUuMzg1NDg5MDM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk5NDEwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW94YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9ib290L2R0cy9tb3hhL01ha2VmaWxlPTI9ZHRiLSQoQ09ORklHX0FSQ0hfTU9YQVJUKSArPSBcXFxcXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9NYWtlZmlsZTozOlxcdG1veGFydC11YzcxMTJseC5kdGJcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjI6LyogbW94YXJ0LXVjNzExMmx4LmR0cyAtIERldmljZSBUcmVlIGZpbGUgZm9yIE1PWEEgVUMtNzExMi1MWFxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0zLSAqXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtNy0vZHRzLXYxLztcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHM6ODojaW5jbHVkZSBcXFwibW94YXJ0LmR0c2lcXFwiXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTktXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzPTEwPS8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMS1cXHRtb2RlbCA9IFxcXCJNT1hBIFVDLTcxMTItTFhcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0czoxMjpcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXVjLTcxMTItbHhcXFwiLCBcXFwibW94YSxtb3hhcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz04OT1cXHRldGhwaHkwOiBldGhlcm5ldC1waHlAMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTkwLVxcdFxcdGRldmljZV90eXBlID0gXFxcImV0aGVybmV0LXBoeVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjkxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcnRsODIwMWNwXFxcIiwgXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtOTItXFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzPTk5PVxcdGV0aHBoeTE6IGV0aGVybmV0LXBoeUAxIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMTAwLVxcdFxcdGRldmljZV90eXBlID0gXFxcImV0aGVybmV0LXBoeVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEwMTpcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXJ0bDgyMDFjcFxcXCIsIFxcXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTEwMi1cXHRcXHRyZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjI6LyogbW94YXJ0LmR0c2kgLSBEZXZpY2UgVHJlZSBJbmNsdWRlIGZpbGUgZm9yIE1PWEEgQVJUIGZhbWlseSBTb0NcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTMtICpcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9OT0vIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTEtXFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMjpcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEzLVxcdG1vZGVsID0gXFxcIk1PWEFSVFxcXCI7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTM5PVxcdFxcdGludGM6IGludGVycnVwdC1jb250cm9sbGVyQDk4ODAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjQwOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtaWNcXFwiLCBcXFwiZmFyYWRheSxmdGludGMwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNDEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg4MDAwMDAgMHgxMDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT00Nz1cXHRcXHRjbGtfcGxsOiBjbGtfcGxsQDk4MTAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjQ4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcGxsLWNsb2NrXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTQ5LVxcdFxcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NTM9XFx0XFx0Y2xrX2FwYjogY2xrX2FwYkA5ODEwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo1NDpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LWFwYi1jbG9ja1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS01NS1cXHRcXHRcXHQjY2xvY2stY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTYwPVxcdFxcdHRpbWVyOiB0aW1lckA5ODQwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo2MTpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXRpbWVyXFxcIiwgXFxcImZhcmFkYXksZnR0bXIwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNjItXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg0MDAwMDAgMHg0MlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTY4PVxcdFxcdGdwaW86IGdwaW9AOTg3MDAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03MC1cXHRcXHRcXHQjZ3Bpby1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjcxOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtZ3Bpb1xcXCIsIFxcXCJmYXJhZGF5LGZ0Z3BpbzAxMFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03Mi1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHg5ODcwMDAwMCAweDEwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTc1PVxcdFxcdHJ0YzogcnRjIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjc2OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcnRjXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTc3LVxcdFxcdFxcdGdwaW8tcnRjLXNjbGsgPSBcXHUwMDNjXFx1MDAyNmdwaW8gNSAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9ODI9XFx0XFx0ZG1hOiBkbWFAOTA1MDAwMDAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6ODM6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtb3hhLG1veGFydC1kbWFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktODQtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTA1MDAwODAgMHg0MFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTg5PVxcdFxcdHdhdGNoZG9nOiB3YXRjaGRvZ0A5ODUwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo5MDpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXdhdGNoZG9nXFxcIiwgXFxcImZhcmFkYXksZnR3ZHQwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktOTEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg1MDAwMDAgMHgxMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTk2PVxcdFxcdG1tYzogbW1jQDk4ZTAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjk3OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbW1jXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTk4LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDk4ZTAwMDAwIDB4NUNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMDc9XFx0XFx0bWRpbzA6IG1kaW9AOTA5MDAwOTAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTA4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbWRpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMDktXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTA5MDAwOTAgMHg4XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTE1PVxcdFxcdG1kaW8xOiBtZGlvQDkyMDAwMDkwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjExNjpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LW1kaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTE3LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDkyMDAwMDkwIDB4OFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTEyMz1cXHRcXHRtYWMwOiBtYWNAOTA5MDAwMDAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTI0OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbWFjXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEyNS1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHg5MDkwMDAwMCAweDkwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTMyPVxcdFxcdG1hYzE6IG1hY0A5MjAwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMzM6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtb3hhLG1veGFydC1tYWNcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTM0LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDkyMDAwMDAwIDB4OTBcXHUwMDNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo0NS40OTU0Mzc1NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4ODg3MjA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBcHByb2FjaCB0byBUcmlnZ2VyaW5nIGBtb3hhcnRfbWFjX3Byb2JlYCBpbiBRRU1VKipcblxuT2theSwgc28gYG1veGFydF9tYWNfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFRoZSBjaGFsbGVuZ2UgaXMsIGhvdyBkbyBJIGFjdHVhbGx5IHRyaWdnZXIgaXQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSWYgSSBjYW4ndCBlbXVsYXRlIHRoZSBNT1hBUlQgbWFjaGluZSBpdHNlbGYsIHRoZSBwcm9iZSBmdW5jdGlvbiBpcyBkZWFkIGluIHRoZSB3YXRlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgaWYgUUVNVSBldmVuIG9mZmVycyBhIE1PWEFSVCBtYWNoaW5lIGRlZmluaXRpb24uIEkgZG9uJ3QgaGF2ZSBpbW1lZGlhdGUgYWNjZXNzIHRvIHRoZSBRRU1VIHNvdXJjZSwgYnV0IGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGhlIGNvbW1vbiBBUk0gbWFjaGluZXMgKGxpa2UgdmlydCwgdmV4cHJlc3MsIHZlcnNhdGlsZXBiKSBhcmUgZ2VuZXJhbGx5IHdlbGwtZG9jdW1lbnRlZC5cblxuTm93LCBpZiBNT1hBUlQgaXNuJ3QgZGlyZWN0bHkgZW11bGF0ZWQsIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBtZXRob2RzIHRvIHRyaWdnZXIgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgaW4gUUVNVT8gTGV0IG1lIHRoaW5rLi4uIHllcywgdGhlcmUgYXJlIGEgZmV3IG9wdGlvbnMuIERldmljZSB0cmVlIG92ZXJsYXlzIGFyZSBhIHN0cm9uZyBjb250ZW5kZXIuIEkgY291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZSBwYXNzZWQgdG8gUUVNVSBkaXJlY3RseS4gQW5vdGhlciBwYXRoIGlzIGNyZWF0aW5nIGEgZmFrZSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIG9yIG1vZHVsZSwgZXNzZW50aWFsbHkgdHJpY2tpbmcgdGhlIHN5c3RlbS4gQW5kIHRoZW4sIHRoZXJlJ3MgU3l6a2FsbGVyLlxuXG5CdXQgaG93IHdvdWxkIFN5emthbGxlciBoZWxwPyBJdCBjYW4gaW5pdGlhbGl6ZSBkZXZpY2VzIHVzaW5nIGBzeXpfZGV2X2luaXRgIG9yIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGJ1dCBpdCB1c3VhbGx5IGRvZXNuJ3QgaW5qZWN0IGVudGlyZWx5IGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGFuIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb24uIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBjYW4gU3l6a2FsbGVyIHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBkb2Vzbid0IGV4aXN0LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHByZS1leGlzdGluZyBTeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciB0aGUgXCJtb3hhcnRcIiBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyMiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo1MS45ODQzMTI3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4ODk5OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1veGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo1Mi4wNTYyMTQ3OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MTk4MTA1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIE1PWEFSVCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyBJIGNhbid0IHNlYXJjaCBmb3Igc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgc28gdGhhdCdzIG91dC4gQW5kIEkgZG9uJ3QgaGF2ZSB0aG9zZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCB0b29scyBhbnl3YXkuIEZpbmUuIFRoZSBrZXkgaXMgdG8gYXNzZXNzIGlmIHRoZSBwYXRjaCB0YXJnZXRzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLlxuXG5SaWdodCwgc28gaXMgTU9YQVJUIHN1Y2ggYSB0aGluZz8gWWVzLCBNT1hBUlQgaXMgYSBNb3hhIEFSVCBTb0MuIFRoYXQncyBhIHNwZWNpZmljIEFSTSBTb0MuIElmIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIOKAkyB3aGljaCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIOKAkyB3b24ndCBldmVuIGJlIGNhbGxlZC4gQ2FuIGl0IGJlIHJlYWNoZWQgdmlhIGEgZGlmZmVyZW50IHBhdGg/IEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgXCJtb3hhLG1veGFydC1tYWNcIi4gUGxhdGZvcm0gZHJpdmVycyByZWx5IG9uIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYmVpbmcgcmVnaXN0ZXJlZC4gVGhvc2UgYXJlIHVzdWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGFyY2hpdGVjdHVyZSBjb2RlIHZpYSBkZXZpY2UgdHJlZS4gSWYgdGhlIHRhcmdldCBib2FyZCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSAod2hpY2ggaXMgdGhlIGNhc2UpLCB0aGUgZGV2aWNlIHRyZWUgd29uJ3QgYmUgbG9hZGVkLCBhbmQgdGhlcmUncyBubyBwbGF0Zm9ybSBkZXZpY2UsIHNvIG5vIHByb2JlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBNT1hBUlQgaXMgZW11bGF0ZWQuIFNlYXJjaGluZyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24sIGl0J3MgZXhwbGljaXRseSBkZXNjcmliZWQgYXMgYSBwaHlzaWNhbCBTb0MgKE1veGEgVUMtNzExMi1MWCksIHNvIG5vLiBUaGUgcHJvYmUgd2lsbCBuZXZlciBydW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSB0cmljayB0byBieXBhc3MgdGhpcy4gQ291bGQgSSBiaW5kIHRoZSBkcml2ZXIgdG8gYSBkZXZpY2UgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvbW94YXJ0LW1hYy9iaW5kYD8gTm8sIHlvdSBuZWVkIGFuIGV4aXN0aW5nIGRldmljZSB0byBiaW5kIHRvLCBzbyBpdCdzIGEgZGVhZCBlbmQuIENhbiB1c2VyLXNwYWNlIGp1c3QgKmNyZWF0ZSogcGxhdGZvcm0gZGV2aWNlcz8gTm90IGluIGEgc3RhbmRhcmQga2VybmVsLCB0aGVyZSdzIG5vIGBwbGF0Zm9ybS1kZXZpY2UtaW5qZWN0aW9uYC4gVGhlcmUncyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCwgYnV0IHRoYXQncyBhIGtlcm5lbCBBUEkuXG5cblNvLCB0aGlzIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyICh0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDKSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbmVhdGx5IGZhbGxzIHVuZGVyIHR3byBvZiB0aGUgcHJvbXB0J3MgZXhjbHVzaW9uIGNyaXRlcmlhOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBhbmQgXCIuLi52ZW5kb3Itc3BlY2lmaWMuLi5kcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsLi4uaGFyZHdhcmUuLi5ub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBUaHVzLCBJIGNvbmNsdWRlLCBXb3J0aEZ1enppbmcgPSBGYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM4MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1OTowMi45NzYwMjgzNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzMxMTM0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyLiptb3hhcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jPTY1ND1zdGF0aWMgaW50IG1veGFydF9pbml0KHZvaWQpXFxuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jLTY1NS17XFxuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jOjY1NjpcXHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtb3hhcnRfZHJpdmVyKTtcXG5kcml2ZXJzL2RtYS9tb3hhcnQtZG1hLmMtNjU3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTk6MDUuMjQ5MTQ5Mzk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjAzNjMzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtb3hhcnRfbWFjX2RyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1veGFydF9tYWNfZHJpdmVyYCB0aGluZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBiZWluZyByZWdpc3RlcmVkLCBhbmQgcHJldHR5IGNvbnZlbnRpb25hbGx5LCBhdCB0aGF0LiBJIHNlZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWFjX2RyaXZlcik7YCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuY2AuIFRoYXQgdGVsbHMgbWUsIHdpdGhvdXQgZGlnZ2luZyBmdXJ0aGVyIGZvciB0aGUgbW9tZW50LCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciBmb3IgYSBuZXR3b3JrIGludGVyZmFjZSwgYW5kIGl0J3MgYnVpbHQgdG8gb3BlcmF0ZSBvbiBhIHBsYXRmb3JtIHdoZXJlIGl0J2xsIGJlIHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZSBgbW9kdWxlX2AgcHJlZml4IHRlbGxzIHVzIGl0J3MgYSBsb2FkYWJsZSBrZXJuZWwgbW9kdWxlLCBhbmQgaXQncyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gTWFrZXMgc2Vuc2UuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIHRoZSBtb2R1bGUgaXMgbG9hZGVkLCB0aGUga2VybmVsIGlzIHVzaW5nIHRoZSBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGlzIGRyaXZlciAobW94YXJ0X21hY19kcml2ZXIpIHRvIGxvYWQgYW5kIG1hbmFnZSB0aGUgaGFyZHdhcmUgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGV4cGVjdGVkIHBhdHRlcm4gZm9yIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MDYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1OTowOC42Njk1MTU3NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzc0NDM5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlci4qbW94YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jPTcwOD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbW1jX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jLTcxNi19O1xcbmRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jOjcxNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9tbWNfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYy03MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jPTU5OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo2MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDctXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jOjE4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYz0yOTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X3J0Y19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzAyLX07XFxuZHJpdmVycy9ydGMvcnRjLW1veGFydC5jOjMwMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9ydGNfZHJpdmVyKTtcXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzA0LVxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmM9MTUwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF93ZHRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmMtMTU2LX07XFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmM6MTU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X3dkdF9kcml2ZXIpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jLTE1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTk6MTAuOTQ2OTY1MzkxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzE5OTM5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBkcml2ZXIgZm9yIHRoZSBNb3hhIEFSVCwgd2hpY2ggaXMgYW4gQVJNIFNvQy4gVGhlIGZpcnN0IHRoaW5nIEkgdGhvdWdodCB3YXMsIFwiQ2FuIFFFTVUgaGVscCBtZSBoZXJlP1wiIEkgcXVpY2tseSByZWFsaXplZCB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBNb3hhIEFSVCBzcGVjaWZpY2FsbHkuIEkgcGF1c2VkLCBqdXN0IGluIGNhc2UgbXkgbWVtb3J5IHdhcyBmYXVsdHksIGJ1dCBubywgZGVmaW5pdGVseSBubyBgbW94YWAgbWFjaGluZSBpbiBRRU1VLiBUaGVyZSdzIGEgYG1veGllYCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGF0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gSSBxdWlja2x5IG1lbnRhbGx5IHJhbiB0aHJvdWdoIHRoZSBzdGFuZGFyZCBRRU1VIEFSTSBtYWNoaW5lcyAtIGB2aXJ0YCwgYHZleHByZXNzYCwgYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyAtIGFuZCBNb3hhIEFSVCBpc24ndCBhbW9uZyB0aGVtLlxuXG5FdmVuICppZiogYnkgc29tZSBmbHVrZSB0aGUgTW94YSBBUlQgd2FzIGVtdWxhdGVkLCB0aGlzIHBhdGNoIG9ubHkgdG91Y2hlcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgYHByb2JlYCBmdW5jdGlvbi4gQnV0IHNpbmNlIHRoZSBkcml2ZXIgaXMgc28gaGFyZHdhcmUgc3BlY2lmaWMsIGFuZCBub3QgZXZlbiBlbXVsYXRlZCwgZ2V0dGluZyB0byB0aGF0IGNvZGUgaXMgaW1wb3NzaWJsZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcHJvbXB0J3MgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGNhc2UuIFRoaXMgcGF0Y2gncyBjb2RlIHBhdGggKmlzKiBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUsIHNpbmNlIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZC4gSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhpcyBpc24ndCB3b3J0aCBmdXp6aW5nLCBzbyBJJ2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTUsIk91dHB1dFRva2VucyI6MTAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU5OjE4LjMxODk2MjQ1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU5OjE4LjMxODk5NDM0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowr5qnz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 17:56:52 +0000 UTC FinishedAt: 2026-08-14 18:59:19 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMgZHJpdmVyIChtb3hhcnRfZXRoZXIuYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgQVJNIFNvQyAoTW94YSBBUlQpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IHZpYSBmdXp6aW5nIGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM4NzIxNGM1NmE4MjZlYTJhMTEzMzdkOTI1NWM1MWYzYjIwNmViZWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxODo1ODoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuY1xuaW5kZXggOGJkNjAxNjg2MjRhYy4uN2I1NzIwZjk5M2FlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbkBAIC00NTEsNiAmIzQzOzQ1MSwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1veGFydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIH07XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nKHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaXJxID0gKHVuc2lnbmVkIGludCkodWludHB0cl90KWRhdGE7XG4mIzQzO1xuJiM0MztcdGlycV9kaXNwb3NlX21hcHBpbmcoaXJxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpwX2RldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuQEAgLTQ1OSw2ICYjNDM7NDY2LDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QgKnByaXY7XG4gXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbiBcdHVuc2lnbmVkIGludCBpcnE7XG4mIzQzO1x0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTtcbkBAIC00NzIsNiAmIzQzOzQ4MCwxNiBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0Z290byBpcnFfbWFwX2ZhaWw7XG4gXHR9XG4gXG4mIzQzO1x0LyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzXG4mIzQzO1x0ICogYmVlbiByZWxlYXNlZDogZGV2cmVzIHJ1bnMgYWN0aW9ucyBpbiByZXZlcnNlIHJlZ2lzdHJhdGlvbiBvcmRlcixcbiYjNDM7XHQgKiBzbyByZWdpc3RlcmluZyB0aGlzIGJlZm9yZSBkZXZtX3JlcXVlc3RfaXJxKCkgZ3VhcmFudGVlcyB0aGVcbiYjNDM7XHQgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KHBfZGV2LCBtb3hhcnRfaXJxX2Rpc3Bvc2VfbWFwcGluZyxcbiYjNDM7XHRcdFx0XHQgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gaXJxX21hcF9mYWlsO1xuJiM0MztcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuQEAgLTUzMyw2ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7ZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIGluaXRfZmFpbDtcbiBcdH1cbiYjNDM7XHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1veGFydF9uZXRkZXZfb3BzO1xuIFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcbkBAIC01NTIsNiAmIzQzOzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIGluaXRfZmFpbDpcbiBcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7aW5pdCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdGlmIChpcnFfcmVxdWVzdGVkKVxuJiM0MztcdFx0ZGV2bV9mcmVlX2lycShwX2RldiwgaXJxLCBuZGV2KTtcbiBcdG1veGFydF9tYWNfZnJlZV9tZW1vcnkobmRldik7XG4gaXJxX21hcF9mYWlsOlxuIFx0ZnJlZV9uZXRkZXYobmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzODcyMTRjNTZhODI2ZWEyYTExMzM3ZDkyNTVjNTFmM2IyMDZlYmVlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTg6NTg6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYwppbmRleCA4YmQ2MDE2ODYyNGFjLi43YjU3MjBmOTkzYWU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMKQEAgLTQ1MSw2ICYjNDM7NDUxLDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbW94YXJ0X25ldGRldl9vcHMgPSB7CiAJLm5kb192YWxpZGF0ZV9hZGRyCT0gZXRoX3ZhbGlkYXRlX2FkZHIsCiB9OwogCiYjNDM7c3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpcnEgPSAodW5zaWduZWQgaW50KSh1aW50cHRyX3QpZGF0YTsKJiM0MzsKJiM0MzsJaXJxX2Rpc3Bvc2VfbWFwcGluZyhpcnEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKnBfZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CkBAIC00NTksNiAmIzQzOzQ2Niw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCBtb3hhcnRfbWFjX3ByaXZfdCAqcHJpdjsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAl1bnNpZ25lZCBpbnQgaXJxOwomIzQzOwlib29sIGlycV9yZXF1ZXN0ZWQgPSBmYWxzZTsKIAlpbnQgcmV0OwogCiAJbmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTsKQEAgLTQ3Miw2ICYjNDM7NDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIGlycV9tYXBfZmFpbDsKIAl9CiAKJiM0MzsJLyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzCiYjNDM7CSAqIGJlZW4gcmVsZWFzZWQ6IGRldnJlcyBydW5zIGFjdGlvbnMgaW4gcmV2ZXJzZSByZWdpc3RyYXRpb24gb3JkZXIsCiYjNDM7CSAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZQomIzQzOwkgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLAomIzQzOwkJCQkgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGlycV9tYXBfZmFpbDsKJiM0MzsKIAlwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiAJcHJpdi0mZ3Q7bmRldiA9IG5kZXY7CiAJcHJpdi0mZ3Q7cGRldiA9IHBkZXY7CkBAIC01MzMsNiAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQluZXRkZXZfZXJyKG5kZXYsICYjMzQ7ZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcbiYjMzQ7KTsKIAkJZ290byBpbml0X2ZhaWw7CiAJfQomIzQzOwlpcnFfcmVxdWVzdGVkID0gdHJ1ZTsKIAogCW5kZXYtJmd0O25ldGRldl9vcHMgPSAmYW1wO21veGFydF9uZXRkZXZfb3BzOwogCW5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCAmYW1wO3ByaXYtJmd0O25hcGksIG1veGFydF9yeF9wb2xsLCBSWF9ERVNDX05VTSk7CkBAIC01NTIsNiAmIzQzOzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiBpbml0X2ZhaWw6CiAJbmV0ZGV2X2VycihuZGV2LCAmIzM0O2luaXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CWlmIChpcnFfcmVxdWVzdGVkKQomIzQzOwkJZGV2bV9mcmVlX2lycShwX2RldiwgaXJxLCBuZGV2KTsKIAltb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpOwogaXJxX21hcF9mYWlsOgogCWZyZWVfbmV0ZGV2KG5kZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgbW94YXJ0X2V0aGVyLmNgIGZpbGUgd2l0aGluIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBkcml2ZXIuIEl0IHNlZW1zIHRoZXkmIzM5O3JlIGFkZGluZyBgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmdgIGFuZCBjbGV2ZXJseSB1c2luZyBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YCB0byByZWdpc3RlciBpdCB3aXRoaW4gYG1veGFydF9tYWNfcHJvYmVgLiBTbWFydCBtb3ZlLCB0aGF0JiMzOTtzIGNsZWFuIHJlc291cmNlIG1hbmFnZW1lbnQuIEFuZCB0aGV54oCZdmUgaW5jbHVkZWQgYSBgZGV2bV9mcmVlX2lycWAgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbW94YXJ0X21hY19wcm9iZWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBoYW5kbGluZyBpbnRlcnJ1cHQgcmVxdWVzdHMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgcHJvYmUuIEdvb2QsIGdvb2QsIHByb3BlciBlcnJvciBoYW5kbGluZy4KCk5vdywgdGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQywgYSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIE9uZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIHVwLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBNb3hhIGdlYXIgaXMgb2Z0ZW4gdXNlZCBpbiBpbmR1c3RyaWFsIHNldHRpbmdzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbGlob29kIG9mIGl0IGJlaW5nIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeSBvciBzaW1pbGFyIHRvIGdldCBhIGZlZWwgZm9yIGl0cyBkZXBlbmRlbmNpZXMuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxlc3MgbGlrZWx5IHRvIGJlIHByZXNlbnQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIGl0cyBvdmVyYWxsIGFwcGxpY2FiaWxpdHkuIExldOKAmXMgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydF9tYWNfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz00NTQ9c3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM6NDYxOnN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM9NTk4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo1OTk6XHQucHJvYmVcdD0gbW94YXJ0X21hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjAwLVx0LnJlbW92ZSA9IG1veGFydF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIERpdmUgZm9yIE1PWEFSVF9FVEhFUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU9YQVJUX0VUSEVSLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIGFyZSBkZWZpbmVkLCBhbmQgdGhlIGRlcGVuZGVuY2llcyBhcmUgaGFtbWVyZWQgb3V0LiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciAmIzM0O01PWEFSVF9FVEhFUiYjMzQ7IHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBvZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciB0aGUgcmVsZXZhbnQgZHJpdmVycyBkaXJlY3RvcnkuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiDigJMgdGhlIGBjb25maWcgTU9YQVJUX0VUSEVSYCBsaW5lIGl0c2VsZi4gVGhlbiBJJiMzOTtsbCBzY2FuIHRoZSBzdXJyb3VuZGluZyBvcHRpb25zLiBXaGF0IGFyZSBpdHMgZGVmYXVsdHM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgZG9lcyBpdCBkZXBlbmQgb24/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWZpbmVzLCBjbG9jayBzZXR0aW5ncywgb3IgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgd2hpY2ggc2V0dGluZ3MgYWZmZWN0IGl0cyBiZWhhdmlvciwgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGJlIGltcGFjdGluZyBpdHMgb3BlcmF0aW9uLiBUaGlzIGluaXRpYWwgc2NhbiB3aWxsIGd1aWRlIG1lIHRvIHRoZSBtb3JlIGNvbXBsZXggcGFydHMgb2YgdGhlIGNvZGUuIElmIHRoZSBkaXJlY3QgZGVmaW5pdGlvbiBpcyB1bmNsZWFyLCBJIHdpbGwgbGlrZWx5IG5lZWQgdG8gZm9sbG93IGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyBvciBmdXJ0aGVyIGBzZWxlY3RgIHN0YXRlbWVudHMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTU9YQVJUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWc6MjA6Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01PWEFSVCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gc3VtbWFyaXplIG15IHRob3VnaHQgcHJvY2Vzcy4gSGVyZSB3ZSBnbzoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBteSBhbmFseXRpY2FsIG1pbmQgaXMga2lja2luZyBpbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBicmVhayB0aGlzIGRvd24gaW50byBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBvciBmYWN0b3JzIGFyZSBpbmZsdWVuY2luZyB0aGUgdG9waWMgYXQgaGFuZC4gVGhpcyBpcyB0aGUgZmlyc3QsIGNydWNpYWwgc3RlcC4gSXQmIzM5O3MgYWJvdXQgZXN0YWJsaXNoaW5nIHRoZSBmcmFtZXdvcmssIHRoZSBib3VuZGFyaWVzLCBhbmQgdGhlIGNvcmUgZWxlbWVudHMgdGhhdCBzaGFwZSB0aGUgc3lzdGVtLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGEgY29tcGxldGUgYW5kIGFjY3VyYXRlIGxpc3Qgb2YgZWxlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNT1hBUlQgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfTU9YQVJUXG4gICA3Olx0XHRib29sIFwmIzM0O01PWEEgQVJUIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0ZGVwZW5kcyBvbiAoQVJNIFx1MDAyNlx1MDAyNiBBUkNIX01PWEFSVClcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTU9YQSBBUlQgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxuICAxNjpcdFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTU9YQVJUXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01PWEFSVCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIEFSTSBcdTAwMjZcdTAwMjYgQVJDSF9NT1hBUlRcbiAgMjM6XHRcdHNlbGVjdCBORVRfQ09SRVxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggTU9YQSBBUlQgU29DIGFuZFxuICAyNjpcdFx0ICB3YW50IHRvIHVzZSB0aGUgaW50ZXJuYWwgZXRoZXJuZXQgdGhlbiB5b3Ugc2hvdWxkIGFuc3dlciBZIHRvIHRoaXMuXG4gIDI3Olx0XG4gIDI4Olx0XG4gIDI5Olx0ZW5kaWYgIyBORVRfVkVORE9SX01PWEFSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGUgY29kZSBjaGFuZ2VzIGhpbmdlIG9uIGBBUk0gJmFtcDsmYW1wOyBBUkNIX01PWEFSVGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gKmdldCogdG8gdGhpcyBgQVJDSF9NT1hBUlRgIGNvbmRpdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSBkb2VzbiYjMzk7dCBqdW1wIG91dCB3aXRoIGEgcmVhZGlseSBhdmFpbGFibGUgJiMzNDtNT1hBUlQmIzM0OyBtYWNoaW5lIHR5cGUsIHdoaWNoIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGFuIG9ic2N1cmUgQVJNIGJvYXJkLCBvciBhdCBsZWFzdCBvbmUgbm90IGNvbW1vbmx5IGVtdWxhdGVkLiBJIG5lZWQgdG8gYmUgc3VyZS4gQWgsIHJpZ2h0LCBgQVJDSF9NT1hBUlRgIGlzIHNwZWNpZmljIHRvIHRoZSBNb3hhIEFSVCBTb0MuCgpUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgKm9ubHkqIGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gVGhhdCYjMzk7cyBhIHByb2JlIGZ1bmN0aW9uLCBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgZXJyb3IgaGFuZGxpbmcuIFRoZSBjaGFuZ2VzIGFyZSB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBoYXJkd2FyZSBkcml2ZXIuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgKndvcnRoKiBmdXp6aW5nPyBJIG5lZWQgdG8gYXBwbHkgdGhlIHByb21wdCYjMzk7cyBjcml0ZXJpYS4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpNb3hhIEFSVCBFdGhlcm5ldCBNQUMuLi4gdGhhdCYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IEFSTSBTb0MuIEl0JiMzOTtzIG5vdCBhIFBDSSBkZXZpY2UuIFRoaXMgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHBhcnQgb2YgdGhlIGJhc2UgaGFyZHdhcmUuIENhbiBJIGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZT8gUHJvYmFibHkgbm90LiBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIE1veGEgQVJUIG1hY2hpbmUuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBkb3VibGUtY2hlY2ssIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzICpub3QqIGZ1enplci1mcmllbmRseS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlcmUmIzM5O3MgdHJ1bHkgbm8gUUVNVSBzdXBwb3J0IGZvciBNT1hBUlQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cy9tb3hhL01ha2VmaWxlPTI9ZHRiLSQoQ09ORklHX0FSQ0hfTU9YQVJUKSAmIzQzOz0gXFxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvTWFrZWZpbGU6MzpcdG1veGFydC11YzcxMTJseC5kdGJcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjI6LyogbW94YXJ0LXVjNzExMmx4LmR0cyAtIERldmljZSBUcmVlIGZpbGUgZm9yIE1PWEEgVUMtNzExMi1MWFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTMtICpcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtNy0vZHRzLXYxLztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0czo4OiNpbmNsdWRlIFwmIzM0O21veGFydC5kdHNpXCYjMzQ7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtOS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz0xMD0vIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMS1cdG1vZGVsID0gXCYjMzQ7TU9YQSBVQy03MTEyLUxYXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEyOlx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXVjLTcxMTItbHhcJiMzNDssIFwmIzM0O21veGEsbW94YXJ0XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTEzLVxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz04OT1cdGV0aHBoeTA6IGV0aGVybmV0LXBoeUAxIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy05MC1cdFx0ZGV2aWNlX3R5cGUgPSBcJiMzNDtldGhlcm5ldC1waHlcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHM6OTE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1ydGw4MjAxY3BcJiMzNDssIFwmIzM0O2V0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTkyLVx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz05OT1cdGV0aHBoeTE6IGV0aGVybmV0LXBoeUAxIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMDAtXHRcdGRldmljZV90eXBlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEwMTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXJ0bDgyMDFjcFwmIzM0OywgXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMTAyLVx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToyOi8qIG1veGFydC5kdHNpIC0gRGV2aWNlIFRyZWUgSW5jbHVkZSBmaWxlIGZvciBNT1hBIEFSVCBmYW1pbHkgU29DXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTMtICpcbi0tXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTk9LyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMS1cdCNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTI6XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnRcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEzLVx0bW9kZWwgPSBcJiMzNDtNT1hBUlRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0zOT1cdFx0aW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAOTg4MDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo0MDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtaWNcJiMzNDssIFwmIzM0O2ZhcmFkYXksZnRpbnRjMDEwXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS00MS1cdFx0XHRyZWcgPSBcdTAwM2MweDk4ODAwMDAwIDB4MTAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NDc9XHRcdGNsa19wbGw6IGNsa19wbGxAOTgxMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo0ODpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtcGxsLWNsb2NrXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS00OS1cdFx0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NTM9XHRcdGNsa19hcGI6IGNsa19hcGJAOTgxMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo1NDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtYXBiLWNsb2NrXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS01NS1cdFx0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NjA9XHRcdHRpbWVyOiB0aW1lckA5ODQwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjYxOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC10aW1lclwmIzM0OywgXCYjMzQ7ZmFyYWRheSxmdHRtcjAxMFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNjItXHRcdFx0cmVnID0gXHUwMDNjMHg5ODQwMDAwMCAweDQyXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9Njg9XHRcdGdwaW86IGdwaW9AOTg3MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNzAtXHRcdFx0I2dwaW8tY2VsbHMgPSBcdTAwM2MyXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo3MTpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtZ3Bpb1wmIzM0OywgXCYjMzQ7ZmFyYWRheSxmdGdwaW8wMTBcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTcyLVx0XHRcdHJlZyA9IFx1MDAzYzB4OTg3MDAwMDAgMHgxMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT03NT1cdFx0cnRjOiBydGMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo3NjpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtcnRjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03Ny1cdFx0XHRncGlvLXJ0Yy1zY2xrID0gXHUwMDNjXHUwMDI2Z3BpbyA1IDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT04Mj1cdFx0ZG1hOiBkbWFAOTA1MDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo4MzpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtZG1hXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS04NC1cdFx0XHRyZWcgPSBcdTAwM2MweDkwNTAwMDgwIDB4NDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT04OT1cdFx0d2F0Y2hkb2c6IHdhdGNoZG9nQDk4NTAwMDAwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6OTA6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LXdhdGNoZG9nXCYjMzQ7LCBcJiMzNDtmYXJhZGF5LGZ0d2R0MDEwXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS05MS1cdFx0XHRyZWcgPSBcdTAwM2MweDk4NTAwMDAwIDB4MTBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT05Nj1cdFx0bW1jOiBtbWNAOThlMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo5NzpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtbW1jXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS05OC1cdFx0XHRyZWcgPSBcdTAwM2MweDk4ZTAwMDAwIDB4NUNcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMDc9XHRcdG1kaW8wOiBtZGlvQDkwOTAwMDkwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTA4Olx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1tZGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMDktXHRcdFx0cmVnID0gXHUwMDNjMHg5MDkwMDA5MCAweDhcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMTU9XHRcdG1kaW8xOiBtZGlvQDkyMDAwMDkwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTE2Olx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttb3hhLG1veGFydC1tZGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMTctXHRcdFx0cmVnID0gXHUwMDNjMHg5MjAwMDA5MCAweDhcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMjM9XHRcdG1hYzA6IG1hY0A5MDkwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjEyNDpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bW94YSxtb3hhcnQtbWFjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMjUtXHRcdFx0cmVnID0gXHUwMDNjMHg5MDkwMDAwMCAweDkwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTMyPVx0XHRtYWMxOiBtYWNAOTIwMDAwMDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMzM6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21veGEsbW94YXJ0LW1hY1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTM0LVx0XHRcdHJlZyA9IFx1MDAzYzB4OTIwMDAwMDAgMHg5MFx1MDAzZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBUcmlnZ2VyaW5nIGBtb3hhcnRfbWFjX3Byb2JlYCBpbiBRRU1VKioKCk9rYXksIHNvIGBtb3hhcnRfbWFjX3Byb2JlYCBpcyBhIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZm9yIGEgcGxhdGZvcm0gZGV2aWNlLiBUaGUgY2hhbGxlbmdlIGlzLCBob3cgZG8gSSBhY3R1YWxseSB0cmlnZ2VyIGl0IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IElmIEkgY2FuJiMzOTt0IGVtdWxhdGUgdGhlIE1PWEFSVCBtYWNoaW5lIGl0c2VsZiwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGRlYWQgaW4gdGhlIHdhdGVyLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSBpZiBRRU1VIGV2ZW4gb2ZmZXJzIGEgTU9YQVJUIG1hY2hpbmUgZGVmaW5pdGlvbi4gSSBkb24mIzM5O3QgaGF2ZSBpbW1lZGlhdGUgYWNjZXNzIHRvIHRoZSBRRU1VIHNvdXJjZSwgYnV0IGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGhlIGNvbW1vbiBBUk0gbWFjaGluZXMgKGxpa2UgdmlydCwgdmV4cHJlc3MsIHZlcnNhdGlsZXBiKSBhcmUgZ2VuZXJhbGx5IHdlbGwtZG9jdW1lbnRlZC4KCk5vdywgaWYgTU9YQVJUIGlzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlZCwgYXJlIHRoZXJlIGFsdGVybmF0aXZlIG1ldGhvZHMgdG8gdHJpZ2dlciBhIHBsYXRmb3JtIGRldmljZSBwcm9iZSBpbiBRRU1VPyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGVyZSBhcmUgYSBmZXcgb3B0aW9ucy4gRGV2aWNlIHRyZWUgb3ZlcmxheXMgYXJlIGEgc3Ryb25nIGNvbnRlbmRlci4gSSBjb3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIGRldmljZSB0cmVlIHBhc3NlZCB0byBRRU1VIGRpcmVjdGx5LiBBbm90aGVyIHBhdGggaXMgY3JlYXRpbmcgYSBmYWtlIHBsYXRmb3JtIGRldmljZSBkcml2ZXIgb3IgbW9kdWxlLCBlc3NlbnRpYWxseSB0cmlja2luZyB0aGUgc3lzdGVtLiBBbmQgdGhlbiwgdGhlcmUmIzM5O3MgU3l6a2FsbGVyLgoKQnV0IGhvdyB3b3VsZCBTeXprYWxsZXIgaGVscD8gSXQgY2FuIGluaXRpYWxpemUgZGV2aWNlcyB1c2luZyBgc3l6X2Rldl9pbml0YCBvciBtb2RpZnkgdGhlIGRldmljZSB0cmVlLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCBpbmplY3QgZW50aXJlbHkgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb24uIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBjYW4gU3l6a2FsbGVyIHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBkb2VzbiYjMzk7dCBleGlzdC4gU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgcHJlLWV4aXN0aW5nIFN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSAmIzM0O21veGFydCYjMzQ7IHBsYXRmb3JtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21veGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgV29ydGhGdXp6aW5nIGZvciBNT1hBUlQgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyBJIGNhbiYjMzk7dCBzZWFyY2ggZm9yIHN5emthbGxlciBkZXNjcmlwdGlvbnMsIHNvIHRoYXQmIzM5O3Mgb3V0LiBBbmQgSSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCB0b29scyBhbnl3YXkuIEZpbmUuIFRoZSBrZXkgaXMgdG8gYXNzZXNzIGlmIHRoZSBwYXRjaCB0YXJnZXRzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLgoKUmlnaHQsIHNvIGlzIE1PWEFSVCBzdWNoIGEgdGhpbmc/IFllcywgTU9YQVJUIGlzIGEgTW94YSBBUlQgU29DLiBUaGF0JiMzOTtzIGEgc3BlY2lmaWMgQVJNIFNvQy4gSWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiDigJMgd2hpY2ggdGhlIHBhdGNoIGlzIG1vZGlmeWluZyDigJMgd29uJiMzOTt0IGV2ZW4gYmUgY2FsbGVkLiBDYW4gaXQgYmUgcmVhY2hlZCB2aWEgYSBkaWZmZXJlbnQgcGF0aD8gSXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgJiMzNDttb3hhLG1veGFydC1tYWMmIzM0Oy4gUGxhdGZvcm0gZHJpdmVycyByZWx5IG9uIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYmVpbmcgcmVnaXN0ZXJlZC4gVGhvc2UgYXJlIHVzdWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGFyY2hpdGVjdHVyZSBjb2RlIHZpYSBkZXZpY2UgdHJlZS4gSWYgdGhlIHRhcmdldCBib2FyZCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSAod2hpY2ggaXMgdGhlIGNhc2UpLCB0aGUgZGV2aWNlIHRyZWUgd29uJiMzOTt0IGJlIGxvYWRlZCwgYW5kIHRoZXJlJiMzOTtzIG5vIHBsYXRmb3JtIGRldmljZSwgc28gbm8gcHJvYmUuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgTU9YQVJUIGlzIGVtdWxhdGVkLiBTZWFyY2hpbmcgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uLCBpdCYjMzk7cyBleHBsaWNpdGx5IGRlc2NyaWJlZCBhcyBhIHBoeXNpY2FsIFNvQyAoTW94YSBVQy03MTEyLUxYKSwgc28gbm8uIFRoZSBwcm9iZSB3aWxsIG5ldmVyIHJ1bi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSB0cmljayB0byBieXBhc3MgdGhpcy4gQ291bGQgSSBiaW5kIHRoZSBkcml2ZXIgdG8gYSBkZXZpY2UgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvbW94YXJ0LW1hYy9iaW5kYD8gTm8sIHlvdSBuZWVkIGFuIGV4aXN0aW5nIGRldmljZSB0byBiaW5kIHRvLCBzbyBpdCYjMzk7cyBhIGRlYWQgZW5kLiBDYW4gdXNlci1zcGFjZSBqdXN0ICpjcmVhdGUqIHBsYXRmb3JtIGRldmljZXM/IE5vdCBpbiBhIHN0YW5kYXJkIGtlcm5lbCwgdGhlcmUmIzM5O3Mgbm8gYHBsYXRmb3JtLWRldmljZS1pbmplY3Rpb25gLiBUaGVyZSYjMzk7cyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCwgYnV0IHRoYXQmIzM5O3MgYSBrZXJuZWwgQVBJLgoKU28sIHRoaXMgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMpLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBuZWF0bHkgZmFsbHMgdW5kZXIgdHdvIG9mIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4mIzM0OyBhbmQgJiMzNDsuLi52ZW5kb3Itc3BlY2lmaWMuLi5kcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsLi4uaGFyZHdhcmUuLi5ub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBUaHVzLCBJIGNvbmNsdWRlLCBXb3J0aEZ1enppbmcgPSBGYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyLiptb3hhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jPTY1ND1zdGF0aWMgaW50IG1veGFydF9pbml0KHZvaWQpXG5kcml2ZXJzL2RtYS9tb3hhcnQtZG1hLmMtNjU1LXtcbmRyaXZlcnMvZG1hL21veGFydC1kbWEuYzo2NTY6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNm1veGFydF9kcml2ZXIpO1xuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jLTY1Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MDYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbW94YXJ0X21hY19kcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1veGFydF9tYWNfZHJpdmVyYCB0aGluZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCwgYW5kIHByZXR0eSBjb252ZW50aW9uYWxseSwgYXQgdGhhdC4gSSBzZWUgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X21hY19kcml2ZXIpO2AgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNgLiBUaGF0IHRlbGxzIG1lLCB3aXRob3V0IGRpZ2dpbmcgZnVydGhlciBmb3IgdGhlIG1vbWVudCwgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLCBhbmQgaXQmIzM5O3MgYnVpbHQgdG8gb3BlcmF0ZSBvbiBhIHBsYXRmb3JtIHdoZXJlIGl0JiMzOTtsbCBiZSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGUgYG1vZHVsZV9gIHByZWZpeCB0ZWxscyB1cyBpdCYjMzk7cyBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUsIGFuZCBpdCYjMzk7cyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gTWFrZXMgc2Vuc2UuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIHRoZSBtb2R1bGUgaXMgbG9hZGVkLCB0aGUga2VybmVsIGlzIHVzaW5nIHRoZSBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGlzIGRyaXZlciAobW94YXJ0X21hY19kcml2ZXIpIHRvIGxvYWQgYW5kIG1hbmFnZSB0aGUgaGFyZHdhcmUgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGV4cGVjdGVkIHBhdHRlcm4gZm9yIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIuKm1veGFydCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYz03MDg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21tY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9tb3hhcnQtbW1jLmMtNzE2LX07XG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYzo3MTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbW1jX2RyaXZlcik7XG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYy03MTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz01OTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmM6NjA2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDctXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jPTE3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYzoxODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4Mi1cbi0tXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmM9Mjk2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9ydGNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYy0zMDItfTtcbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYzozMDM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfcnRjX2RyaXZlcik7XG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzA0LVxuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jPTE1MD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfd2R0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL21veGFydF93ZHQuYy0xNTYtfTtcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jOjE1Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF93ZHRfZHJpdmVyKTtcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jLTE1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTUKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIHRoZSBNb3hhIEFSVCwgd2hpY2ggaXMgYW4gQVJNIFNvQy4gVGhlIGZpcnN0IHRoaW5nIEkgdGhvdWdodCB3YXMsICYjMzQ7Q2FuIFFFTVUgaGVscCBtZSBoZXJlPyYjMzQ7IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTW94YSBBUlQgc3BlY2lmaWNhbGx5LiBJIHBhdXNlZCwganVzdCBpbiBjYXNlIG15IG1lbW9yeSB3YXMgZmF1bHR5LCBidXQgbm8sIGRlZmluaXRlbHkgbm8gYG1veGFgIG1hY2hpbmUgaW4gUUVNVS4gVGhlcmUmIzM5O3MgYSBgbW94aWVgIGFyY2hpdGVjdHVyZSwgYnV0IHRoYXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gSSBxdWlja2x5IG1lbnRhbGx5IHJhbiB0aHJvdWdoIHRoZSBzdGFuZGFyZCBRRU1VIEFSTSBtYWNoaW5lcyAtIGB2aXJ0YCwgYHZleHByZXNzYCwgYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyAtIGFuZCBNb3hhIEFSVCBpc24mIzM5O3QgYW1vbmcgdGhlbS4KCkV2ZW4gKmlmKiBieSBzb21lIGZsdWtlIHRoZSBNb3hhIEFSVCB3YXMgZW11bGF0ZWQsIHRoaXMgcGF0Y2ggb25seSB0b3VjaGVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBCdXQgc2luY2UgdGhlIGRyaXZlciBpcyBzbyBoYXJkd2FyZSBzcGVjaWZpYywgYW5kIG5vdCBldmVuIGVtdWxhdGVkLCBnZXR0aW5nIHRvIHRoYXQgY29kZSBpcyBpbXBvc3NpYmxlLgoKTm93LCBjb25zaWRlcmluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBjYXNlLiBUaGlzIHBhdGNoJiMzOTtzIGNvZGUgcGF0aCAqaXMqIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSwgc2luY2UgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZC4gSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIHNvIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjMuODM1MTA1NjA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0ODM5MDA3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1veGEgQVJUIEV0aGVybmV0IE1BQyBkcml2ZXIgKG1veGFydF9ldGhlci5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBBUk0gU29DIChNb3hhIEFSVCkgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgdmlhIGZ1enppbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODoyMy44MzUxMjQ5NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjg0NzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM4NzIxNGM1NmE4MjZlYTJhMTEzMzdkOTI1NWM1MWYzYjIwNmViZWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTg6NTg6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcXG5pbmRleCA4YmQ2MDE2ODYyNGFjLi43YjU3MjBmOTkzYWU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXFxuQEAgLTQ1MSw2ICs0NTEsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtb3hhcnRfbmV0ZGV2X29wcyA9IHtcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG4gfTtcXG4gXFxuK3N0YXRpYyB2b2lkIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nKHZvaWQgKmRhdGEpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGlycSA9ICh1bnNpZ25lZCBpbnQpKHVpbnRwdHJfdClkYXRhO1xcbitcXG4rXFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhpcnEpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpwX2RldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuQEAgLTQ1OSw2ICs0NjYsNyBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0c3RydWN0IG1veGFydF9tYWNfcHJpdl90ICpwcml2O1xcbiBcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4gXFx0dW5zaWduZWQgaW50IGlycTtcXG4rXFx0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBtb3hhcnRfbWFjX3ByaXZfdCkpO1xcbkBAIC00NzIsNiArNDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRnb3RvIGlycV9tYXBfZmFpbDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogRGlzcG9zZSBvZiB0aGUgSVJRIG1hcHBpbmcgYWZ0ZXIgdGhlIGRldnJlcy1tYW5hZ2VkIGhhbmRsZXIgaGFzXFxuK1xcdCAqIGJlZW4gcmVsZWFzZWQ6IGRldnJlcyBydW5zIGFjdGlvbnMgaW4gcmV2ZXJzZSByZWdpc3RyYXRpb24gb3JkZXIsXFxuK1xcdCAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZVxcbitcXHQgKiBjb3JyZWN0IG9yZGVyIG9uIHByb2JlIHVud2luZCBhbmQgZGV2aWNlIHJlbW92YWwuXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLFxcbitcXHRcXHRcXHRcXHQgICAgICAgKHZvaWQgKikodWludHB0cl90KWlycSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gaXJxX21hcF9mYWlsO1xcbitcXG4gXFx0cHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXHRwcml2LVxcdTAwM2VuZGV2ID0gbmRldjtcXG4gXFx0cHJpdi1cXHUwMDNlcGRldiA9IHBkZXY7XFxuQEAgLTUzMyw2ICs1NTEsNyBAQCBzdGF0aWMgaW50IG1veGFydF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwiZGV2bV9yZXF1ZXN0X2lycSBmYWlsZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIGluaXRfZmFpbDtcXG4gXFx0fVxcbitcXHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcXG4gXFxuIFxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bW94YXJ0X25ldGRldl9vcHM7XFxuIFxcdG5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcXG5AQCAtNTUyLDYgKzU3MSw4IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gaW5pdF9mYWlsOlxcbiBcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJpbml0IGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdGlmIChpcnFfcmVxdWVzdGVkKVxcbitcXHRcXHRkZXZtX2ZyZWVfaXJxKHBfZGV2LCBpcnEsIG5kZXYpO1xcbiBcXHRtb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpO1xcbiBpcnFfbWFwX2ZhaWw6XFxuIFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODoyNC4zNjg3OTgxMDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1Mzk1MDE5MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNb3hhIEFSVCBFdGhlcm5ldCBNQUMgZHJpdmVyIChtb3hhcnRfZXRoZXIuYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgQVJNIFNvQyAoTW94YSBBUlQpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IHZpYSBmdXp6aW5nIGluIHN1Y2ggZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzg3MjE0YzU2YTgyNmVhMmExMTMzN2Q5MjU1YzUxZjNiMjA2ZWJlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE4OjU4OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmNcbmluZGV4IDhiZDYwMTY4NjI0YWMuLjdiNTcyMGY5OTNhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jXG5AQCAtNDUxLDYgKzQ1MSwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1veGFydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIH07XG4gXG4rc3RhdGljIHZvaWQgbW94YXJ0X2lycV9kaXNwb3NlX21hcHBpbmcodm9pZCAqZGF0YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgaXJxID0gKHVuc2lnbmVkIGludCkodWludHB0cl90KWRhdGE7XG4rXG4rXHRpcnFfZGlzcG9zZV9tYXBwaW5nKGlycSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKnBfZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5AQCAtNDU5LDYgKzQ2Niw3IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IG1veGFydF9tYWNfcHJpdl90ICpwcml2O1xuIFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4gXHR1bnNpZ25lZCBpbnQgaXJxO1xuK1x0Ym9vbCBpcnFfcmVxdWVzdGVkID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbW94YXJ0X21hY19wcml2X3QpKTtcbkBAIC00NzIsNiArNDgwLDE2IEBAIHN0YXRpYyBpbnQgbW94YXJ0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGlycV9tYXBfZmFpbDtcbiBcdH1cbiBcbitcdC8qIERpc3Bvc2Ugb2YgdGhlIElSUSBtYXBwaW5nIGFmdGVyIHRoZSBkZXZyZXMtbWFuYWdlZCBoYW5kbGVyIGhhc1xuK1x0ICogYmVlbiByZWxlYXNlZDogZGV2cmVzIHJ1bnMgYWN0aW9ucyBpbiByZXZlcnNlIHJlZ2lzdHJhdGlvbiBvcmRlcixcbitcdCAqIHNvIHJlZ2lzdGVyaW5nIHRoaXMgYmVmb3JlIGRldm1fcmVxdWVzdF9pcnEoKSBndWFyYW50ZWVzIHRoZVxuK1x0ICogY29ycmVjdCBvcmRlciBvbiBwcm9iZSB1bndpbmQgYW5kIGRldmljZSByZW1vdmFsLlxuK1x0ICovXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQocF9kZXYsIG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nLFxuK1x0XHRcdFx0ICAgICAgICh2b2lkICopKHVpbnRwdHJfdClpcnEpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBpcnFfbWFwX2ZhaWw7XG4rXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VwZGV2ID0gcGRldjtcbkBAIC01MzMsNiArNTUxLDcgQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdG5ldGRldl9lcnIobmRldiwgXCJkZXZtX3JlcXVlc3RfaXJxIGZhaWxlZFxcblwiKTtcbiBcdFx0Z290byBpbml0X2ZhaWw7XG4gXHR9XG4rXHRpcnFfcmVxdWVzdGVkID0gdHJ1ZTtcbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1veGFydF9uZXRkZXZfb3BzO1xuIFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgbW94YXJ0X3J4X3BvbGwsIFJYX0RFU0NfTlVNKTtcbkBAIC01NTIsNiArNTcxLDggQEAgc3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gaW5pdF9mYWlsOlxuIFx0bmV0ZGV2X2VycihuZGV2LCBcImluaXQgZmFpbGVkXFxuXCIpO1xuK1x0aWYgKGlycV9yZXF1ZXN0ZWQpXG4rXHRcdGRldm1fZnJlZV9pcnEocF9kZXYsIGlycSwgbmRldik7XG4gXHRtb3hhcnRfbWFjX2ZyZWVfbWVtb3J5KG5kZXYpO1xuIGlycV9tYXBfZmFpbDpcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjQuMzY4Nzk5NTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyOTg4NzIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBtb3hhcnRfZXRoZXIuY2AgZmlsZSB3aXRoaW4gdGhlIE1veGEgQVJUIEV0aGVybmV0IGRyaXZlci4gSXQgc2VlbXMgdGhleSdyZSBhZGRpbmcgYG1veGFydF9pcnFfZGlzcG9zZV9tYXBwaW5nYCBhbmQgY2xldmVybHkgdXNpbmcgYGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldGAgdG8gcmVnaXN0ZXIgaXQgd2l0aGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gU21hcnQgbW92ZSwgdGhhdCdzIGNsZWFuIHJlc291cmNlIG1hbmFnZW1lbnQuIEFuZCB0aGV54oCZdmUgaW5jbHVkZWQgYSBgZGV2bV9mcmVlX2lycWAgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbW94YXJ0X21hY19wcm9iZWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBoYW5kbGluZyBpbnRlcnJ1cHQgcmVxdWVzdHMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgcHJvYmUuIEdvb2QsIGdvb2QsIHByb3BlciBlcnJvciBoYW5kbGluZy5cblxuTm93LCB0aGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDLCBhIHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlLiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgY29udGV4dC4gT25lIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1veGEgZ2VhciBpcyBvZnRlbiB1c2VkIGluIGluZHVzdHJpYWwgc2V0dGluZ3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGxpa2VsaWhvb2Qgb2YgaXQgYmVpbmcgdXNlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBkcml2ZXIncyBkaXJlY3Rvcnkgb3Igc2ltaWxhciB0byBnZXQgYSBmZWVsIGZvciBpdHMgZGVwZW5kZW5jaWVzLiBEb2VzIGl0IGRlcGVuZCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBwcmVzZW50IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIGl0cyBvdmVyYWxsIGFwcGxpY2FiaWxpdHkuIExldOKAmXMgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MjkuNDk4Njg5MTY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDc4ODI3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW94YXJ0X21hY19wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jPTQ1ND1zdGF0aWMgdm9pZCBtb3hhcnRfaXJxX2Rpc3Bvc2VfbWFwcGluZyh2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo0NjE6c3RhdGljIGludCBtb3hhcnRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy00NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYz01OTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo1OTk6XFx0LnByb2JlXFx0PSBtb3hhcnRfbWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjAwLVxcdC5yZW1vdmUgPSBtb3hhcnRfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODozMS40NDY1NzgzMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE2MTEyNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBEaXZlIGZvciBNT1hBUlRfRVRIRVIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU9YQVJUX0VUSEVSLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBoYW1tZXJlZCBvdXQuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciBcIk1PWEFSVF9FVEhFUlwiIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcyBvZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciB0aGUgcmVsZXZhbnQgZHJpdmVycyBkaXJlY3RvcnkuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGl2ZSBkZWZpbml0aW9uIOKAkyB0aGUgYGNvbmZpZyBNT1hBUlRfRVRIRVJgIGxpbmUgaXRzZWxmLiBUaGVuIEknbGwgc2NhbiB0aGUgc3Vycm91bmRpbmcgb3B0aW9ucy4gV2hhdCBhcmUgaXRzIGRlZmF1bHRzPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGRvZXMgaXQgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcywgY2xvY2sgc2V0dGluZ3MsIG9yIGludGVycnVwdCBjb250cm9sbGVycy4gVGhlIG9iamVjdGl2ZSBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHdoaWNoIHNldHRpbmdzIGFmZmVjdCBpdHMgYmVoYXZpb3IsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBiZSBpbXBhY3RpbmcgaXRzIG9wZXJhdGlvbi4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCBndWlkZSBtZSB0byB0aGUgbW9yZSBjb21wbGV4IHBhcnRzIG9mIHRoZSBjb2RlLiBJZiB0aGUgZGlyZWN0IGRlZmluaXRpb24gaXMgdW5jbGVhciwgSSB3aWxsIGxpa2VseSBuZWVkIHRvIGZvbGxvdyBhbnkgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgb3IgZnVydGhlciBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzUuMTYyNjkyOTM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzM5NjI0NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTU9YQVJUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZzoyMDpjb25maWcgQVJNX01PWEFSVF9FVEhFUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiTU9YQVJUIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU4OjM2Ljk5NjY2MDczNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzOTQ0OTYyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIEknbSByZWFkeSB0byBzdW1tYXJpemUgbXkgdGhvdWdodCBwcm9jZXNzLiBIZXJlIHdlIGdvOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBteSBhbmFseXRpY2FsIG1pbmQgaXMga2lja2luZyBpbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBicmVhayB0aGlzIGRvd24gaW50byBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBvciBmYWN0b3JzIGFyZSBpbmZsdWVuY2luZyB0aGUgdG9waWMgYXQgaGFuZC4gVGhpcyBpcyB0aGUgZmlyc3QsIGNydWNpYWwgc3RlcC4gSXQncyBhYm91dCBlc3RhYmxpc2hpbmcgdGhlIGZyYW1ld29yaywgdGhlIGJvdW5kYXJpZXMsIGFuZCB0aGUgY29yZSBlbGVtZW50cyB0aGF0IHNoYXBlIHRoZSBzeXN0ZW0uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgYSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgbGlzdCBvZiBlbGVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5MywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzkuMzkxMTU5MjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1PWEFSVCBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NT1hBUlRcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk1PWEEgQVJUIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gKEFSTSBcXHUwMDI2XFx1MDAyNiBBUkNIX01PWEFSVClcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1PWEEgQVJUIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcXG4gIDE2OlxcdFxcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NT1hBUlRcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEFSTV9NT1hBUlRfRVRIRVJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJNT1hBUlQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gQVJNIFxcdTAwMjZcXHUwMDI2IEFSQ0hfTU9YQVJUXFxuICAyMzpcXHRcXHRzZWxlY3QgTkVUX0NPUkVcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIE1PWEEgQVJUIFNvQyBhbmRcXG4gIDI2OlxcdFxcdCAgd2FudCB0byB1c2UgdGhlIGludGVybmFsIGV0aGVybmV0IHRoZW4geW91IHNob3VsZCBhbnN3ZXIgWSB0byB0aGlzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXG4gIDI5OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NT1hBUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6MzkuMzkxMjM1NjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk5NDI0OTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIC0gQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGNvZGUgY2hhbmdlcyBoaW5nZSBvbiBgQVJNIFx1MDAyNlx1MDAyNiBBUkNIX01PWEFSVGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gKmdldCogdG8gdGhpcyBgQVJDSF9NT1hBUlRgIGNvbmRpdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSBkb2Vzbid0IGp1bXAgb3V0IHdpdGggYSByZWFkaWx5IGF2YWlsYWJsZSBcIk1PWEFSVFwiIG1hY2hpbmUgdHlwZSwgd2hpY2ggc3VnZ2VzdHMgaXQgbWlnaHQgYmUgYW4gb2JzY3VyZSBBUk0gYm9hcmQsIG9yIGF0IGxlYXN0IG9uZSBub3QgY29tbW9ubHkgZW11bGF0ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBBaCwgcmlnaHQsIGBBUkNIX01PWEFSVGAgaXMgc3BlY2lmaWMgdG8gdGhlIE1veGEgQVJUIFNvQy5cblxuVGhlIHBhdGNoJ3MgY2hhbmdlcyBhcmUgKm9ubHkqIGluIGBtb3hhcnRfbWFjX3Byb2JlYC4gVGhhdCdzIGEgcHJvYmUgZnVuY3Rpb24sIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIGVycm9yIGhhbmRsaW5nLiBUaGUgY2hhbmdlcyBhcmUgdmVyeSBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmUgZHJpdmVyLlxuXG5TbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgKndvcnRoKiBmdXp6aW5nPyBJIG5lZWQgdG8gYXBwbHkgdGhlIHByb21wdCdzIGNyaXRlcmlhLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuTW94YSBBUlQgRXRoZXJuZXQgTUFDLi4uIHRoYXQncyBhIHBsYXRmb3JtIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IEFSTSBTb0MuIEl0J3Mgbm90IGEgUENJIGRldmljZS4gVGhpcyBtZWFucyBpdCdzIGxpa2VseSBwYXJ0IG9mIHRoZSBiYXNlIGhhcmR3YXJlLiBDYW4gSSBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmU/IFByb2JhYmx5IG5vdC4gUUVNVSBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIE1veGEgQVJUIG1hY2hpbmUuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBkb3VibGUtY2hlY2ssIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzICpub3QqIGZ1enplci1mcmllbmRseS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSdzIHRydWx5IG5vIFFFTVUgc3VwcG9ydCBmb3IgTU9YQVJULlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTg6NDUuMzg1NDg5MDM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk5NDEwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW94YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9ib290L2R0cy9tb3hhL01ha2VmaWxlPTI9ZHRiLSQoQ09ORklHX0FSQ0hfTU9YQVJUKSArPSBcXFxcXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9NYWtlZmlsZTozOlxcdG1veGFydC11YzcxMTJseC5kdGJcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjI6LyogbW94YXJ0LXVjNzExMmx4LmR0cyAtIERldmljZSBUcmVlIGZpbGUgZm9yIE1PWEEgVUMtNzExMi1MWFxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0zLSAqXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtNy0vZHRzLXYxLztcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHM6ODojaW5jbHVkZSBcXFwibW94YXJ0LmR0c2lcXFwiXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTktXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzPTEwPS8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMS1cXHRtb2RlbCA9IFxcXCJNT1hBIFVDLTcxMTItTFhcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0czoxMjpcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXVjLTcxMTItbHhcXFwiLCBcXFwibW94YSxtb3hhcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cy0xMy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LXVjNzExMmx4LmR0cz04OT1cXHRldGhwaHkwOiBldGhlcm5ldC1waHlAMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTkwLVxcdFxcdGRldmljZV90eXBlID0gXFxcImV0aGVybmV0LXBoeVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjkxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcnRsODIwMWNwXFxcIiwgXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtOTItXFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzPTk5PVxcdGV0aHBoeTE6IGV0aGVybmV0LXBoeUAxIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC11YzcxMTJseC5kdHMtMTAwLVxcdFxcdGRldmljZV90eXBlID0gXFxcImV0aGVybmV0LXBoeVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzOjEwMTpcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXJ0bDgyMDFjcFxcXCIsIFxcXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQtdWM3MTEybHguZHRzLTEwMi1cXHRcXHRyZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjI6LyogbW94YXJ0LmR0c2kgLSBEZXZpY2UgVHJlZSBJbmNsdWRlIGZpbGUgZm9yIE1PWEEgQVJUIGZhbWlseSBTb0NcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTMtICpcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9OT0vIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTEtXFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMjpcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEzLVxcdG1vZGVsID0gXFxcIk1PWEFSVFxcXCI7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTM5PVxcdFxcdGludGM6IGludGVycnVwdC1jb250cm9sbGVyQDk4ODAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjQwOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtaWNcXFwiLCBcXFwiZmFyYWRheSxmdGludGMwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNDEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg4MDAwMDAgMHgxMDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT00Nz1cXHRcXHRjbGtfcGxsOiBjbGtfcGxsQDk4MTAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjQ4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcGxsLWNsb2NrXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTQ5LVxcdFxcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9NTM9XFx0XFx0Y2xrX2FwYjogY2xrX2FwYkA5ODEwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo1NDpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LWFwYi1jbG9ja1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS01NS1cXHRcXHRcXHQjY2xvY2stY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTYwPVxcdFxcdHRpbWVyOiB0aW1lckA5ODQwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo2MTpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXRpbWVyXFxcIiwgXFxcImZhcmFkYXksZnR0bXIwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktNjItXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg0MDAwMDAgMHg0MlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTY4PVxcdFxcdGdwaW86IGdwaW9AOTg3MDAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03MC1cXHRcXHRcXHQjZ3Bpby1jZWxscyA9IFxcdTAwM2MyXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjcxOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtZ3Bpb1xcXCIsIFxcXCJmYXJhZGF5LGZ0Z3BpbzAxMFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS03Mi1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHg5ODcwMDAwMCAweDEwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTc1PVxcdFxcdHJ0YzogcnRjIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjc2OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtcnRjXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTc3LVxcdFxcdFxcdGdwaW8tcnRjLXNjbGsgPSBcXHUwMDNjXFx1MDAyNmdwaW8gNSAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9ODI9XFx0XFx0ZG1hOiBkbWFAOTA1MDAwMDAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6ODM6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtb3hhLG1veGFydC1kbWFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktODQtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTA1MDAwODAgMHg0MFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTg5PVxcdFxcdHdhdGNoZG9nOiB3YXRjaGRvZ0A5ODUwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaTo5MDpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LXdhdGNoZG9nXFxcIiwgXFxcImZhcmFkYXksZnR3ZHQwMTBcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktOTEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTg1MDAwMDAgMHgxMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTk2PVxcdFxcdG1tYzogbW1jQDk4ZTAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjk3OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbW1jXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTk4LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDk4ZTAwMDAwIDB4NUNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaT0xMDc9XFx0XFx0bWRpbzA6IG1kaW9AOTA5MDAwOTAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTA4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbWRpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaS0xMDktXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4OTA5MDAwOTAgMHg4XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTE1PVxcdFxcdG1kaW8xOiBtZGlvQDkyMDAwMDkwIHtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpOjExNjpcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1veGEsbW94YXJ0LW1kaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTE3LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDkyMDAwMDkwIDB4OFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpPTEyMz1cXHRcXHRtYWMwOiBtYWNAOTA5MDAwMDAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k6MTI0OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibW94YSxtb3hhcnQtbWFjXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9tb3hhL21veGFydC5kdHNpLTEyNS1cXHRcXHRcXHRyZWcgPSBcXHUwMDNjMHg5MDkwMDAwMCAweDkwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2k9MTMyPVxcdFxcdG1hYzE6IG1hY0A5MjAwMDAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbW94YS9tb3hhcnQuZHRzaToxMzM6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtb3hhLG1veGFydC1tYWNcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL21veGEvbW94YXJ0LmR0c2ktMTM0LVxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDkyMDAwMDAwIDB4OTBcXHUwMDNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo0NS40OTU0Mzc1NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4ODg3MjA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBcHByb2FjaCB0byBUcmlnZ2VyaW5nIGBtb3hhcnRfbWFjX3Byb2JlYCBpbiBRRU1VKipcblxuT2theSwgc28gYG1veGFydF9tYWNfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFRoZSBjaGFsbGVuZ2UgaXMsIGhvdyBkbyBJIGFjdHVhbGx5IHRyaWdnZXIgaXQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSWYgSSBjYW4ndCBlbXVsYXRlIHRoZSBNT1hBUlQgbWFjaGluZSBpdHNlbGYsIHRoZSBwcm9iZSBmdW5jdGlvbiBpcyBkZWFkIGluIHRoZSB3YXRlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgaWYgUUVNVSBldmVuIG9mZmVycyBhIE1PWEFSVCBtYWNoaW5lIGRlZmluaXRpb24uIEkgZG9uJ3QgaGF2ZSBpbW1lZGlhdGUgYWNjZXNzIHRvIHRoZSBRRU1VIHNvdXJjZSwgYnV0IGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGhlIGNvbW1vbiBBUk0gbWFjaGluZXMgKGxpa2UgdmlydCwgdmV4cHJlc3MsIHZlcnNhdGlsZXBiKSBhcmUgZ2VuZXJhbGx5IHdlbGwtZG9jdW1lbnRlZC5cblxuTm93LCBpZiBNT1hBUlQgaXNuJ3QgZGlyZWN0bHkgZW11bGF0ZWQsIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBtZXRob2RzIHRvIHRyaWdnZXIgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgaW4gUUVNVT8gTGV0IG1lIHRoaW5rLi4uIHllcywgdGhlcmUgYXJlIGEgZmV3IG9wdGlvbnMuIERldmljZSB0cmVlIG92ZXJsYXlzIGFyZSBhIHN0cm9uZyBjb250ZW5kZXIuIEkgY291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZSBwYXNzZWQgdG8gUUVNVSBkaXJlY3RseS4gQW5vdGhlciBwYXRoIGlzIGNyZWF0aW5nIGEgZmFrZSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIG9yIG1vZHVsZSwgZXNzZW50aWFsbHkgdHJpY2tpbmcgdGhlIHN5c3RlbS4gQW5kIHRoZW4sIHRoZXJlJ3MgU3l6a2FsbGVyLlxuXG5CdXQgaG93IHdvdWxkIFN5emthbGxlciBoZWxwPyBJdCBjYW4gaW5pdGlhbGl6ZSBkZXZpY2VzIHVzaW5nIGBzeXpfZGV2X2luaXRgIG9yIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGJ1dCBpdCB1c3VhbGx5IGRvZXNuJ3QgaW5qZWN0IGVudGlyZWx5IGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGFuIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb24uIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBjYW4gU3l6a2FsbGVyIHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBkb2Vzbid0IGV4aXN0LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHByZS1leGlzdGluZyBTeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciB0aGUgXCJtb3hhcnRcIiBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyMiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo1MS45ODQzMTI3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4ODk5OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1veGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1ODo1Mi4wNTYyMTQ3OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MTk4MTA1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIE1PWEFSVCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyBJIGNhbid0IHNlYXJjaCBmb3Igc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgc28gdGhhdCdzIG91dC4gQW5kIEkgZG9uJ3QgaGF2ZSB0aG9zZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCB0b29scyBhbnl3YXkuIEZpbmUuIFRoZSBrZXkgaXMgdG8gYXNzZXNzIGlmIHRoZSBwYXRjaCB0YXJnZXRzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLlxuXG5SaWdodCwgc28gaXMgTU9YQVJUIHN1Y2ggYSB0aGluZz8gWWVzLCBNT1hBUlQgaXMgYSBNb3hhIEFSVCBTb0MuIFRoYXQncyBhIHNwZWNpZmljIEFSTSBTb0MuIElmIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIOKAkyB3aGljaCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIOKAkyB3b24ndCBldmVuIGJlIGNhbGxlZC4gQ2FuIGl0IGJlIHJlYWNoZWQgdmlhIGEgZGlmZmVyZW50IHBhdGg/IEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgXCJtb3hhLG1veGFydC1tYWNcIi4gUGxhdGZvcm0gZHJpdmVycyByZWx5IG9uIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYmVpbmcgcmVnaXN0ZXJlZC4gVGhvc2UgYXJlIHVzdWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGFyY2hpdGVjdHVyZSBjb2RlIHZpYSBkZXZpY2UgdHJlZS4gSWYgdGhlIHRhcmdldCBib2FyZCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSAod2hpY2ggaXMgdGhlIGNhc2UpLCB0aGUgZGV2aWNlIHRyZWUgd29uJ3QgYmUgbG9hZGVkLCBhbmQgdGhlcmUncyBubyBwbGF0Zm9ybSBkZXZpY2UsIHNvIG5vIHByb2JlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBNT1hBUlQgaXMgZW11bGF0ZWQuIFNlYXJjaGluZyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24sIGl0J3MgZXhwbGljaXRseSBkZXNjcmliZWQgYXMgYSBwaHlzaWNhbCBTb0MgKE1veGEgVUMtNzExMi1MWCksIHNvIG5vLiBUaGUgcHJvYmUgd2lsbCBuZXZlciBydW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSB0cmljayB0byBieXBhc3MgdGhpcy4gQ291bGQgSSBiaW5kIHRoZSBkcml2ZXIgdG8gYSBkZXZpY2UgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvbW94YXJ0LW1hYy9iaW5kYD8gTm8sIHlvdSBuZWVkIGFuIGV4aXN0aW5nIGRldmljZSB0byBiaW5kIHRvLCBzbyBpdCdzIGEgZGVhZCBlbmQuIENhbiB1c2VyLXNwYWNlIGp1c3QgKmNyZWF0ZSogcGxhdGZvcm0gZGV2aWNlcz8gTm90IGluIGEgc3RhbmRhcmQga2VybmVsLCB0aGVyZSdzIG5vIGBwbGF0Zm9ybS1kZXZpY2UtaW5qZWN0aW9uYC4gVGhlcmUncyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCwgYnV0IHRoYXQncyBhIGtlcm5lbCBBUEkuXG5cblNvLCB0aGlzIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyICh0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDKSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbmVhdGx5IGZhbGxzIHVuZGVyIHR3byBvZiB0aGUgcHJvbXB0J3MgZXhjbHVzaW9uIGNyaXRlcmlhOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBhbmQgXCIuLi52ZW5kb3Itc3BlY2lmaWMuLi5kcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsLi4uaGFyZHdhcmUuLi5ub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBUaHVzLCBJIGNvbmNsdWRlLCBXb3J0aEZ1enppbmcgPSBGYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM4MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1OTowMi45NzYwMjgzNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzMxMTM0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyLiptb3hhcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jPTY1ND1zdGF0aWMgaW50IG1veGFydF9pbml0KHZvaWQpXFxuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jLTY1NS17XFxuZHJpdmVycy9kbWEvbW94YXJ0LWRtYS5jOjY1NjpcXHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtb3hhcnRfZHJpdmVyKTtcXG5kcml2ZXJzL2RtYS9tb3hhcnQtZG1hLmMtNjU3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTk6MDUuMjQ5MTQ5Mzk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjAzNjMzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtb3hhcnRfbWFjX2RyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1veGFydF9tYWNfZHJpdmVyYCB0aGluZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBiZWluZyByZWdpc3RlcmVkLCBhbmQgcHJldHR5IGNvbnZlbnRpb25hbGx5LCBhdCB0aGF0LiBJIHNlZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWFjX2RyaXZlcik7YCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuY2AuIFRoYXQgdGVsbHMgbWUsIHdpdGhvdXQgZGlnZ2luZyBmdXJ0aGVyIGZvciB0aGUgbW9tZW50LCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciBmb3IgYSBuZXR3b3JrIGludGVyZmFjZSwgYW5kIGl0J3MgYnVpbHQgdG8gb3BlcmF0ZSBvbiBhIHBsYXRmb3JtIHdoZXJlIGl0J2xsIGJlIHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZSBgbW9kdWxlX2AgcHJlZml4IHRlbGxzIHVzIGl0J3MgYSBsb2FkYWJsZSBrZXJuZWwgbW9kdWxlLCBhbmQgaXQncyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gTWFrZXMgc2Vuc2UuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIHRoZSBtb2R1bGUgaXMgbG9hZGVkLCB0aGUga2VybmVsIGlzIHVzaW5nIHRoZSBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGlzIGRyaXZlciAobW94YXJ0X21hY19kcml2ZXIpIHRvIGxvYWQgYW5kIG1hbmFnZSB0aGUgaGFyZHdhcmUgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGV4cGVjdGVkIHBhdHRlcm4gZm9yIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MDYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxODo1OTowOC42Njk1MTU3NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzc0NDM5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlci4qbW94YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jPTcwOD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbW1jX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jLTcxNi19O1xcbmRyaXZlcnMvbW1jL2hvc3QvbW94YXJ0LW1tYy5jOjcxNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9tbWNfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYy03MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tb3hhL21veGFydF9ldGhlci5jPTU5OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtb3hhcnRfbWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21veGEvbW94YXJ0X2V0aGVyLmMtNjA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYzo2MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtb3hhcnRfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbW94YS9tb3hhcnRfZXRoZXIuYy02MDctXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF9tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jOjE4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvcnRjL3J0Yy1tb3hhcnQuYz0yOTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW94YXJ0X3J0Y19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzAyLX07XFxuZHJpdmVycy9ydGMvcnRjLW1veGFydC5jOjMwMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1veGFydF9ydGNfZHJpdmVyKTtcXG5kcml2ZXJzL3J0Yy9ydGMtbW94YXJ0LmMtMzA0LVxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmM9MTUwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1veGFydF93ZHRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmMtMTU2LX07XFxuZHJpdmVycy93YXRjaGRvZy9tb3hhcnRfd2R0LmM6MTU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobW94YXJ0X3dkdF9kcml2ZXIpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvbW94YXJ0X3dkdC5jLTE1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTg6NTk6MTAuOTQ2OTY1MzkxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzE5OTM5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBkcml2ZXIgZm9yIHRoZSBNb3hhIEFSVCwgd2hpY2ggaXMgYW4gQVJNIFNvQy4gVGhlIGZpcnN0IHRoaW5nIEkgdGhvdWdodCB3YXMsIFwiQ2FuIFFFTVUgaGVscCBtZSBoZXJlP1wiIEkgcXVpY2tseSByZWFsaXplZCB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBNb3hhIEFSVCBzcGVjaWZpY2FsbHkuIEkgcGF1c2VkLCBqdXN0IGluIGNhc2UgbXkgbWVtb3J5IHdhcyBmYXVsdHksIGJ1dCBubywgZGVmaW5pdGVseSBubyBgbW94YWAgbWFjaGluZSBpbiBRRU1VLiBUaGVyZSdzIGEgYG1veGllYCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGF0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gSSBxdWlja2x5IG1lbnRhbGx5IHJhbiB0aHJvdWdoIHRoZSBzdGFuZGFyZCBRRU1VIEFSTSBtYWNoaW5lcyAtIGB2aXJ0YCwgYHZleHByZXNzYCwgYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyAtIGFuZCBNb3hhIEFSVCBpc24ndCBhbW9uZyB0aGVtLlxuXG5FdmVuICppZiogYnkgc29tZSBmbHVrZSB0aGUgTW94YSBBUlQgd2FzIGVtdWxhdGVkLCB0aGlzIHBhdGNoIG9ubHkgdG91Y2hlcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgYHByb2JlYCBmdW5jdGlvbi4gQnV0IHNpbmNlIHRoZSBkcml2ZXIgaXMgc28gaGFyZHdhcmUgc3BlY2lmaWMsIGFuZCBub3QgZXZlbiBlbXVsYXRlZCwgZ2V0dGluZyB0byB0aGF0IGNvZGUgaXMgaW1wb3NzaWJsZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcHJvbXB0J3MgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGNhc2UuIFRoaXMgcGF0Y2gncyBjb2RlIHBhdGggKmlzKiBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUsIHNpbmNlIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZC4gSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhpcyBpc24ndCB3b3J0aCBmdXp6aW5nLCBzbyBJJ2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTUsIk91dHB1dFRva2VucyI6MTAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU5OjE4LjMxODk2MjQ1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTW94YSBBUlQgRXRoZXJuZXQgTUFDIGRyaXZlciAobW94YXJ0X2V0aGVyLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIHNwZWNpZmljIEFSTSBTb0MgKE1veGEgQVJUKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCB2aWEgZnV6emluZyBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE4OjU5OjE4LjMxODk5NDM0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowr5qnz[1] Phase: Running StartedAt: 2026-08-14 18:59:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5qnz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 18:59:29 +0000 UTC FinishedAt: 2026-08-14 18:59:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}