Name: series-workflowr2ld9 Phase: Failed StartedAt: 2026-07-03 06:48:15 +0000 UTC FinishedAt: 2026-07-03 07:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2ld9[0] Phase: Succeeded StartedAt: 2026-07-03 06:48:15 +0000 UTC FinishedAt: 2026-07-03 07:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2ld9[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 06:48:15 +0000 UTC FinishedAt: 2026-07-03 07:01:35 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZTg0MTJjYWJhYzJhMWZmMTA4OWQxOTFkOThhNjc4YjYxMzlhYzM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNjo1OTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNTkxLDYgJiM0MzsxNTkxLDcgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuIFx0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuIFx0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4gXHR9LFxuIFxuIFx0W0tTWjk4OTNdID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlODQxMmNhYmFjMmExZmYxMDg5ZDE5MWQ5OGE2NzhiNjEzOWFjMzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDA2OjU5OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jCkBAIC0xNTkxLDYgJiM0MzsxNTkxLDcgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0gewogCQkuaW50ZXJuYWxfcGh5CT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsCiAJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKIAkJLmdiaXRfY2FwYWJsZQk9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSwKJiM0MzsJCS5zZ21paV9wb3J0ID0gNywKIAl9LAogCiAJW0tTWjk4OTNdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBLU1o5ODk3IFNHTUlJIFBvcnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5JiMzOTtyZSBhZGRpbmcgYC5zZ21paV9wb3J0ID0gNyxgIHRvIHRoZSBgS1NaOTg5N2AgZW50cnkgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoYXQgYGtzel9jb21tb24uY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoaXMgYHNnbWlpX3BvcnRgIGZpZWxkICpkb2VzKi4gSSBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBsb2dpYy4gSXMgaXQganVzdCBhIGNvbmZpZ3VyYXRpb24gdmFsdWU/IERvZXMgaXQgYWZmZWN0IHJlZ2lzdGVyIGFjY2Vzcz8gSXMgaXQgZXZlbiAqdXNlZCogYnkgdGhlIGRyaXZlciwgb3IgaXMgaXQganVzdCBzaXR0aW5nIHRoZXJlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhpcyBwb3J0IG51bWJlciBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBieSB0aGUgZXhpc3RpbmcgY29kZS4gQXJlIHRoZXJlIGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgdGhhdCBzcGVjaWZpYyBwb3J0IG51bWJlciBhbmQgYXNzb2NpYXRlZCBTR01JSSBjb25maWd1cmF0aW9uPyBJdCYjMzk7cyBlYXN5IGVub3VnaCB0byBhZGQgYSB2YWx1ZSwgYnV0IEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgdGhpcyBhZGRpdGlvbiBpcyBsb2dpY2FsbHkgc291bmQgYW5kIHNlcnZlcyBhbiBhY3R1YWwgcHVycG9zZSB3aXRoaW4gdGhlIGN1cnJlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBqdXN0IGEgcGxhY2Vob2xkZXIsIGJ1dCBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGV2aWNlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggbWFrZXMgc2Vuc2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZ21paV9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTkxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE5My1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjE5NDpcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xOTUtXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTI1Nz1zdGF0aWMgaW50IGtzejk0NzdfcGNzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYwLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjYxOlx0aW50IHBvcnQgPSBrc3pfZ2V0X3NnbWlpX3BvcnQoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTI2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMxNi17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMTc6XHRpbnQgcG9ydCA9IGtzel9nZXRfc2dtaWlfcG9ydChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzE4LVx0c3RydWN0IGtzel9wb3J0ICpwID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTExOTQ9c3RhdGljIHZvaWQga3N6OTQ3N19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjEyMDU6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNi1cdFx0c3RydWN0IGtzel9wb3J0ICpwID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTE1MjA9c3RhdGljIGludCBrc3o5NDc3X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNTQ1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTU0NjpcdGlmIChrc3pfaGFzX3NnbWlpX3BvcnQoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTU0Ny1cdFx0cmV0ID0ga3N6OTQ3N19wY3NfY3JlYXRlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjAyNj1rc3o5NDc3X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjAzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjIwMzM6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBkcC1cdTAwM2VpbmRleCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMDM0LVx0ICAgIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTI0OD1jb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTUyMC1cdFx0LnB0cF9jYXBhYmxlID0gdHJ1ZSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE1MjE6XHRcdC5zZ21paV9wb3J0ID0gNyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1MjItXHRcdC53cl90YWJsZSA9IFx1MDAyNmtzejk0NzdfcmVnaXN0ZXJfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTMtXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MTU5NDpcdFx0LnNnbWlpX3BvcnQgPSA3LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTU5NS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTkyNi1cdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTI3Olx0XHQuc2dtaWlfcG9ydCA9IDcsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTI4LVx0XHQud3JfdGFibGUgPSBcdTAwMjZrc3o5NDc3X3JlZ2lzdGVyX3NldCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMDExPXZvaWQga3N6X3JfbWliX3N0YXRzNjQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA1OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIwNjA6XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcGh5X2VycmF0YV85NDc3IFx1MDAyNlx1MDAyNiAha3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA2MS1cdFx0cmV0ID0ga3N6OTQ3N19lcnJhdGFfbW9uaXRvcihkZXYsIHBvcnQsIHJhdy1cdTAwM2V0eF9sYXRlX2NvbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzEyMz1ib29sIGtzel9waHlsaW5rX25lZWRfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzQtXHQvKiBObyBuZWVkIHRvIGNvbmZpZ3VyZSBYTUlJIGNvbnRyb2wgcmVnaXN0ZXIgd2hlbiB1c2luZyBTR01JSS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMxMzU6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD01Nz1zdHJ1Y3Qga3N6X2NoaXBfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTctXHRib29sIHB0cF9jYXBhYmxlO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6OTg6XHR1OCBzZ21paV9wb3J0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTktXHRjb25zdCBzdHJ1Y3QgcmVnbWFwX2FjY2Vzc190YWJsZSAqd3JfdGFibGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NzQ2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19sYW45Mzd4X3R4X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NTI6c3RhdGljIGlubGluZSBpbnQga3N6X2dldF9zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU0Olx0cmV0dXJuIGRldi1cdTAwM2VpbmZvLVx1MDAzZXNnbWlpX3BvcnQgLSAxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU1LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc1NzpzdGF0aWMgaW5saW5lIGJvb2wga3N6X2hhc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU5Olx0cmV0dXJuIGRldi1cdTAwM2VpbmZvLVx1MDAzZXNnbWlpX3BvcnQgXHUwMDNlIDA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjAtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzYxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzYyOnN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc2My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NjQ6XHRyZXR1cm4gZGV2LVx1MDAzZWluZm8tXHUwMDNlc2dtaWlfcG9ydCA9PSBwb3J0ICYjNDM7IDE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLU1o5ODk3IFNHTUlJIFBvcnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYC5zZ21paV9wb3J0ID0gN2AgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgd2l0aGluIHRoZSBga3N6X3N3aXRjaF9jaGlwc1tdYCBhcnJheS4gVGhhdCBkaXJlY3RseSBpbXBhY3RzIGBrc3pfaGFzX3NnbWlpX3BvcnQoZGV2KWAgYW5kIGBrc3pfaXNfc2dtaWlfcG9ydChkZXYsIDYpYCwgbWFraW5nIHRoZW0gcmV0dXJuIHRydWUgZm9yIHRoZSBLU1o5ODk3LiBUaGlzIHdpbGwgcmlwcGxlIHRocm91Z2ggc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdGhlIGRyaXZlcjogYGtzejk0Nzdfc2V0dXBgLCBga3N6OTQ3N19waHlsaW5rX2dldF9jYXBzYCwgYGtzejk0NzdfcGh5bGlua19tYWNfc2VsZWN0X3Bjc2AsIGBrc3pfcl9taWJfc3RhdHM2NGAsIGFuZCBga3N6X3BoeWxpbmtfbmVlZF9jb25maWdgLiBTbywgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIGEgRFNBIHN3aXRjaC4KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgdXN1YWxseSBhY2Nlc3NlZCB0aHJvdWdoIFNQSSwgSTJDLCBvciBNRElPLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgZW11bGF0aW9uIGZvciBEU0Egc3dpdGNoZXMgb3IgaWYgdGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbS4gVGhlc2UgTWljcm9jaGlwIEtTWiBzZXJpZXMgc3dpdGNoZXMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZWFzeSB0byBmdXp6IHVubGVzcyB3ZSBoYXZlIGEgdmlydHVhbCBidXMgbGlrZSBJMkMvU1BJIHRoYXQgc3l6a2FsbGVyIGNhbiBpbmplY3QgaW50by4gT3IsIHBlcmhhcHMgaXQmIzM5O3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluay9zeXNmcyBzb21laG93LgoKV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGluamVjdGluZyBJMkMvU1BJIGRldmljZXMgdGhyb3VnaCBgdmhjaWAgb3Igc2ltaWxhci4gTWF5YmUgdGhpcyAqaXMqIHJlYWNoYWJsZSBhZnRlciBhbGwuIE9yLCBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdgIG9yIGEgc2ltaWxhciBvcHRpb24gaXMgZW5hYmxlZC4gSSBuZWVkIHRvIHNlZSBpZiBpdCBjYW4gYmUgZW5hYmxlZCBhbmQgY2hlY2sgaWYgaXQgaGFzIGEgd2F5IHRvIHBva2UgdGhlIGRyaXZlciB1c2luZyBvbmUgb2YgdGhvc2UgbWVjaGFuaXNtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI0OmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjQxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgSTJDL1NQSSBDb25uZWN0ZWQgU3dpdGNoZXMgd2l0aCBTeXprYWxsZXI6IEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCB0aGlua2luZywgY2FuIHdlIGV2ZW4gKmJlZ2luKiB0byBmdXp6IGl0IHdpdGggc3l6a2FsbGVyPyBUaGUgZHJpdmVyJiMzOTtzIGNvbm5lY3RlZCB2aWEgSTJDL1NQSS9TTUkg4oCTIHRoYXQmIzM5O3MgdGhlIGh1cmRsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyJiMzOTtzIGV4aXN0aW5nIEkyQy9TUEkgY2FwYWJpbGl0aWVzIGJlIGxldmVyYWdlZD8gSXQgZG9lc24mIzM5O3Qgc2VlbSBkaXJlY3RseSBhcHBsaWNhYmxlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIEkyQyBmdXp6aW5nIHByaW1pdGl2ZXMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCwgYnV0IHRoYXQmIzM5O3MgdHlwaWNhbGx5IGZvciB1c2VyLXNwYWNlIGludGVyYWN0aW9ucyAqd2l0aCogYSBkZXZpY2UsIG5vdCB0aGUga2VybmVsLXNpZGUgb3BlcmF0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBVbmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIEkyQyBzdHViIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHBsYWNlLCBpdCYjMzk7cyB0eXBpY2FsbHkgdG91Z2ggdG8gZ2V0IGF0IHRoZXNlIEkyQy9TUEkgZGV2aWNlcy4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGNhbiB3ZSAqaW5zdGFudGlhdGUqIGEgZmFrZSBJMkMgZGV2aWNlPyBUaGUgaWRlYSBiZWluZyBpZiB3ZSBjYW4gaW5qZWN0IG9uZSBvZiB0aG9zZSwgd2UgbWlnaHQgYmUgYWJsZSB0byBzdGFydCBmdXp6aW5nLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHN5emthbGxlciBkaXJlY3RseSBoYW5kbGVzIGdlbmVyaWNhbGx5LiBMb29raW5nIGFnYWluLCBJIGJlbGlldmUgdGhpcyBpcyBwb3NzaWJsZSB2aWEgYHN5c2ZzYCBhbmQgdGhlIGBuZXdfZGV2aWNlYCBjYWxsIG9uIHRoZSBJMkMgYWRhcHRlciwgb3IgcG90ZW50aWFsbHkgd2l0aCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gbWVjaGFuaXNtIHRvIGNyZWF0ZSAqYXJiaXRyYXJ5KiBJMkMvU1BJIGRldmljZXMgdW5sZXNzIHRoZXkmIzM5O3JlIHByZS1kZWZpbmVkIHBzZXVkby1kZXZpY2VzIG9yIHBhcnQgb2YgdGhlIG92ZXJhbGwgZnV6emluZyBzZXR1cC4KCk9rYXksIEkmIzM5O20gcmVhZGluZyB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlcmUmIzM5O3MgYSBub3RlIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBidXQgaXQgc291bmRzIGxpa2UgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlYWNoIGl0IHZpYSBJMkMgYG5ld19kZXZpY2VgIGFuZCBhIGR1bW15IEkyQyBhZGFwdGVyLiBJZiB3ZSBoYXZlIGEgZHVtbXkgYWRhcHRlciwgbGlrZSBgaTJjLXN0dWJgIG9yIGBpMmMtbW9ja2AsIHRoZW4gaXQgKm1pZ2h0KiBiZSByZWFjaGFibGUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGkyYy1zdHViYCBsZXRzIHVzIGJpbmQgKmFueSogSTJDIGRyaXZlciB0byBpdC4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyB0aGUgd2F5IHRvIGluc3RhbnRpYXRlIGEgZGV2aWNlIGZvciBmdXp6aW5nLCB3aGljaCBvcGVucyB0aGluZ3MgdXAuIEl0IHNvdW5kcyBsaWtlIGBpMmMtc3R1YmAgYWxsb3dzIGJpbmRpbmcgYW55IEkyQyBkcml2ZXIgdG8gaXQuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgcGxhbiBpcyB0byBjb250aW51ZSBieSBjaGVja2luZyB0aGUgSTJDIGRyaXZlciBmb3IgdGhpcyBzd2l0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3o5NDc3LWkyYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIEkyQyBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGhpdHRpbmcgYSBzbmFnIHNvbWV3aGVyZSBpbiB0aGUgSTJDIGRyaXZlciByZWFsbS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8sIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBoYXJkd2FyZSBvciB0aW1pbmcgaXNzdWVzLCBpcyB0byBleHBsaWNpdGx5IHZlcmlmeSB0aGUgSTJDIGRyaXZlcuKAmXMgbmFtZS4gVGhpcyBpcyBteSBnby10byBzdGFydGluZyBwb2ludC4gSXTigJlzIGEgZm91bmRhdGlvbmFsIHN0ZXAsIGJlY2F1c2UgaWYgdGhlIGRyaXZlciBpc24mIzM5O3QgbG9hZGluZywgb3IgdGhlIG5hbWUgaXMgaW5jb3JyZWN0IGluIHRoZSBkZXZpY2UgdHJlZS9jb25maWd1cmF0aW9uLCBJJiMzOTttIHdhc3RpbmcgbXkgdGltZSBjaGFzaW5nIHBoYW50b20gcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYWxtb3N0IGEga25lZS1qZXJrLCBidXQgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoaXMgaXMgb2Z0ZW4gd2hlcmUgdGhlIHJhYmJpdCBob2xlIGJlZ2lucy4gSSYjMzk7dmUgc2VlbiBlbm91Z2ggbWlzbmFtZWQgZGV2aWNlcywgdHlwb3MgaW4gdGhlIERULCBvciBvdXRkYXRlZCBkcml2ZXIgdmVyc2lvbnMgdG8ga25vdyB0aGlzIGlzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdCB0byBjaGVjayBmaXJzdC4gSXQmIzM5O3MgYSBxdWljayB3aW4sIGFuZCBhIG5lY2Vzc2FyeSBwcmUtZmxpZ2h0IGNoZWNrIGJlZm9yZSBJIHN0YXJ0IGxvb2tpbmcgZm9yIG1vcmUgZWx1c2l2ZSBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpMmNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMD1zdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9pMmNfcG1fb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTMzOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBrc3o5NDc3X2kyY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTM0LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE0NTptb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZXZpY2UgQmluZGluZyBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoaXMgZGV2aWNlJiMzOTtzIGludGVyYWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBiYXNlbGluZTogd2hhdCBzcGVjaWZpYyBkZXZpY2VzIG9yIGNvbXBvbmVudHMgaXMgdGhpcyBzeXN0ZW0gYWN0dWFsbHkgY29tbXVuaWNhdGluZyB3aXRoPyBXaGF0JiMzOTtzIHRoZSBhcmNoaXRlY3R1cmU/IEFyZSB3ZSB0YWxraW5nIGhhcmR3YXJlLCBzb2Z0d2FyZSwgbmV0d29yayBwcm90b2NvbHMsIHRoZSB3b3Jrcz8gVW5kZXJzdGFuZGluZyB0aGVzZSBiaW5kaW5ncyBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHByb3BlciByZXZlcnNlIGVuZ2luZWVyaW5nIG9yIGRlYnVnZ2luZy4gQSBjb21wcmVoZW5zaXZlIGludmVudG9yeSBoZXJlIGlzIGZvdW5kYXRpb25hbCB0byBhbnkgbWVhbmluZ2Z1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSYjMzk7cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gV2UgbmVlZCB0byBkZWZpbmUgdGhlIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2Ygb3VyIHRhcmdldCB3aXRoIGl0cyBwZWVycyBpcyBob3cgd2Ugd2lsbCBkbyB0aGlzLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRvb2xzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aTJjX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz03MD1zdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo4MjpzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQga3N6OTQ3N19pMmNfaWRbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04My1cdHsgLm5hbWUgPSBcJiMzNDtrc3o5NDc3LXN3aXRjaFwmIzM0OyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2aWNlIEluc3RhbnRpYXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gaGVyZSBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiAmIzM0O2tzejk0Nzctc3dpdGNoJiMzNDssICYjMzQ7a3N6OTg5Ny1zd2l0Y2gsJiMzNDsgYW5kIHNvIG9uLiBUaGUgcHJvY2VzcyB0byBnZXQgdGhpcyBkZXZpY2UgaW5zdGFudGlhdGVkIHNlZW1zIHRvIGJlIHN0cmFpZ2h0Zm9yd2FyZCDigJMgSSBjYW4gY3JlYXRlIGl0IGJ5IHdyaXRpbmcgdGhlIGRldmljZSBuYW1lIGFuZCBhZGRyZXNzLCBsaWtlICYjMzQ7a3N6OTg5Ny1zd2l0Y2ggMHg1ZiYjMzQ7IOKAkyBhc3N1bWluZyBgaTJjLTBgIGlzIG15IGBpMmMtc3R1YmAgaW50ZXJmYWNlIOKAkyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvbmV3X2RldmljZWAuIAoKTm93LCBhIGNydWNpYWwgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQ6IGRvZXMgdGhpcyBzd2l0Y2ggY29uZmlndXJhdGlvbiByZWx5IG9uIGludGVycnVwdHMgb3IgR1BJTyBzaWduYWxpbmcgZm9yIG9wZXJhdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBiZXlvbmQgdGhlIEkyQyBjb21tdW5pY2F0aW9uIGl0c2VsZi4gVG8gY2xhcmlmeSB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRldGVybWluZSBpZiBhbnkgYWRkaXRpb25hbCByZXNvdXJjZXMgYXJlIHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3o5NDc3X2kyY19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xNT1LU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTc6c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTMzPXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBrc3o5NDc3X2kyY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cdH0sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTM5Olx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQwLVx0LnJlbW92ZVx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyODYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBga3N6OTQ3N19pMmNfcHJvYmVgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhpcyBkcml2ZXIsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gYWdhaW4uIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3Iga2V5IHNlY3Rpb25zOiB0aGUgSTJDIGRldmljZSByZWdpc3RyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBzcGVjaWZpYyB0byB0aGlzIEtTWjk0NzcgY2hpcC4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgSTJDIGNvbW11bmljYXRpb24gaXRzZWxmLiBJJiMzOTtsbCBtZW50YWxseSBub3RlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgdGhlIEkyQyBjbGllbnQgYW5kIGFueSBjdXN0b20gZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIEtTWjk0NzcuIEkmIzM5O2xsIGNvbXBhcmUgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zIHdpdGggdGhlIGRhdGFzaGVldCB0byBlbnN1cmUgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBUaGUgaW50ZXJydXB0IGhhbmRsaW5nIHdpbGwgYmUgaW1wb3J0YW50IHRvby4gSSB3YW50IHRvIHNlZSBob3cgaW50ZXJydXB0cyBhcmUgY29uZmlndXJlZCBhbmQgcHJvY2Vzc2VkLCBwYXlpbmcgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcnJ1cHQtc2FmZSBjb250ZXh0LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgaW5lZmZpY2llbnQgY29kZSBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24sIHN1Y2ggYXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1bm5lY2Vzc2FyeSBsb2NraW5nLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgZW5zdXJpbmcgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGVmZmljaWVudC4gSSB3aWxsIGFsc28gbWFrZSBub3RlcyByZWdhcmRpbmcgdGhlIGRyaXZlciYjMzk7cyBwb3dlciBtYW5hZ2VtZW50IGFuZCBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBMZXQmIzM5O3Mgc3RhcnQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNzpcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgMTg6XHR7XG4gIDE5Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcbiAgMjA6XHRcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcdTAwMjZpMmMtXHUwMDNlZGV2O1xuICAyMTpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmM7XG4gIDIyOlx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2O1xuICAyMzpcdFx0aW50IGksIHJldDtcbiAgMjQ6XHRcbiAgMjU6XHRcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XG4gIDI2Olx0XHRpZiAoIWNoaXApXG4gIDI3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuICAyODpcdFxuICAyOTpcdFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcdTAwMjZpMmMtXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xuICAzMDpcdFx0aWYgKCFkZXYpXG4gIDMxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICAzMjpcdFxuICAzMzpcdFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xuICAzNDpcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBjaGlwLVx1MDAzZWNoaXBfaWQ7XG4gIDM1Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSYjNDM7JiM0MzspIHtcbiAgMzY6XHRcdFx0cmMgPSBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV07XG4gIDM3Olx0XHRcdHJjLmxvY2tfYXJnID0gXHUwMDI2ZGV2LVx1MDAzZXJlZ21hcF9tdXRleDtcbiAgMzg6XHRcdFx0ZGV2LVx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXHUwMDI2cmMpO1xuICAzOTpcdFx0XHRpZiAoSVNfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pKSB7XG4gIDQwOlx0XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2aTJjLVx1MDAzZWRldiwgUFRSX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSxcbiAgNDE6XHRcdFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSByZWdtYXAlaVxcblwmIzM0OyxcbiAgNDI6XHRcdFx0XHRcdFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xuICA0MzpcdFx0XHR9XG4gIDQ0Olx0XHR9XG4gIDQ1Olx0XG4gIDQ2Olx0XHRpZiAoaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxuICA0NzpcdFx0XHRkZXYtXHUwMDNlcGRhdGEgPSBpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG4gIDQ4Olx0XG4gIDQ5Olx0XHRkZXYtXHUwMDNlaXJxID0gaTJjLVx1MDAzZWlycTtcbiAgNTA6XHRcbiAgNTE6XHRcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbiAgNTI6XHRcbiAgNTM6XHRcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xuICA1NDpcdFx0aWYgKHJldClcbiAgNTU6XHRcdFx0cmV0dXJuIHJldDtcbiAgNTY6XHRcbiAgNTc6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XG4gIDU4Olx0XG4gIDU5Olx0XHRyZXR1cm4gMDtcbiAgNjA6XHR9XG4gIDYxOlx0XG4gIDYyOlx0c3RhdGljIHZvaWQga3N6OTQ3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDYzOlx0e1xuICA2NDpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA2NTpcdFxuICA2NjpcdFx0aWYgKGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM1NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBDYWxsKioKCk9rYXksIHNvIHRoZSBjb2RlIGluaXRpYXRlcyBhIGNhbGwgdG8gYGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KWAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byB1bmRlcnN0YW5kLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uLCBzaGFsbCB3ZT8gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZG9lcyBhbmQgaG93IGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggdGhlIHByb3ZpZGVkIGRldmljZSBzdHJ1Y3R1cmUgKGBkZXZgKS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGluaXRpYWxpemVzLCBjb25maWd1cmVzLCBvciByZWdpc3RlcnMgdGhlIHN3aXRjaCwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIHNldHVwLCBvciBkYXRhIHN0cnVjdHVyZSBwb3B1bGF0aW9uLiBJIGFsc28gd2FudCB0byBzZWUgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgYGRldmAgc3RydWN0dXJlLiBLbm93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdpbGwgbWFrZSB1bmRlcnN0YW5kaW5nIHRoZSBzdWJzZXF1ZW50IGNvZGUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEzND1zdGF0aWMgaW50IGtzejg4NjNfc21pX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTY5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE3MDpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9NDM5MT1zdGF0aWMgaW50IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjQzOTY6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQzOTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ1NDEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6NDU0MjpFWFBPUlRfU1lNQk9MKGtzel9zd2l0Y2hfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDU0My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0zODU9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0zODctXHRcdFx0XHQgICAgdm9pZCAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDozODg6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0zODktdm9pZCBrc3pfc3dpdGNoX3JlbW92ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBrc3pfY29tbW9uLmMgZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYC4gVGhhdCBmdW5jdGlvbiBpcyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBpbiB0aGUgb3ZlcmFsbCBkZXZpY2UgZHJpdmVyLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyB0aGUgcmVnaXN0cmF0aW9uIHBvaW50IGZvciB0aGUgc3dpdGNoIGhhcmR3YXJlLCBzbyBpdOKAmXMgbGlrZWx5IHdoZXJlIEkmIzM5O2xsIGZpbmQgaW5pdGlhbCBzZXR1cCBvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgaGFyZHdhcmUgaXMgcmVnaXN0ZXJlZCwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJiMzOTtzIGRldmljZSBtb2RlbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgYW5kIGFueSBlYXJseSBjb25maWd1cmF0aW9uIHN0ZXBzIG5lZWRlZCB0byBicmluZyB0aGUgc3dpdGNoIGludG8gYSBmdW5jdGlvbmFsIHN0YXRlLiBJIGFudGljaXBhdGUgdGhlcmUmIzM5O2xsIGJlIGEgbG90IG9mIGludGVyZXN0aW5nIGRldGFpbCBhYm91dCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzOTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM5NjpcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG40Mzk3Olx0e1xuNDM5ODpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmluZm87XG40Mzk5Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzO1xuNDQwMDpcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcbjQ0MDE6XHRcdHVuc2lnbmVkIGludCBwb3J0X251bTtcbjQ0MDI6XHRcdGludCByZXQ7XG40NDAzOlx0XHRpbnQgaTtcbjQ0MDQ6XHRcbjQ0MDU6XHRcdGRldi1cdTAwM2VyZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LVx1MDAzZWRldiwgXCYjMzQ7cmVzZXRcJiMzNDssXG40NDA2Olx0XHRcdFx0XHRcdFx0ICBHUElPRF9PVVRfTE9XKTtcbjQ0MDc6XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlc2V0X2dwaW8pKVxuNDQwODpcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3Bpbyk7XG40NDA5Olx0XG40NDEwOlx0XHRpZiAoZGV2LVx1MDAzZXJlc2V0X2dwaW8pIHtcbjQ0MTE6XHRcdFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWljcm9jaGlwLGtzejg0NjNcJiMzNDspKSB7XG40NDEyOlx0XHRcdFx0cmV0ID0ga3N6ODQ2M19jb25maWd1cmVfc3RyYXBzX3NwaShkZXYpO1xuNDQxMzpcdFx0XHRcdGlmIChyZXQpXG40NDE0Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuNDQxNTpcdFx0XHR9XG40NDE2Olx0XG40NDE3Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMSk7XG40NDE4Olx0XHRcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xuNDQxOTpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVx1MDAzZXJlc2V0X2dwaW8sIDApO1xuNDQyMDpcdFx0XHRtc2xlZXAoMTAwKTtcbjQ0MjE6XHRcbjQ0MjI6XHRcdFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWljcm9jaGlwLGtzejg0NjNcJiMzNDspKSB7XG40NDIzOlx0XHRcdFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcbjQ0MjQ6XHRcdFx0XHRpZiAocmV0KVxuNDQyNTpcdFx0XHRcdFx0cmV0dXJuIHJldDtcbjQ0MjY6XHRcdFx0fVxuNDQyNzpcdFx0fVxuNDQyODpcdFxuNDQyOTpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlZGV2X211dGV4KTtcbjQ0MzA6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZXJlZ21hcF9tdXRleCk7XG40NDMxOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuNDQzMjpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNldmxhbl9tdXRleCk7XG40NDMzOlx0XG40NDM0Olx0XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuNDQzNTpcdFx0aWYgKHJldClcbjQ0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjQ0Mzc6XHRcbjQ0Mzg6XHRcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVx1MDAzZWNoaXBfaWQpO1xuNDQzOTpcdFx0aWYgKCFpbmZvKVxuNDQ0MDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjQ0NDE6XHRcbjQ0NDI6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjQ0NDM6XHRcdGRldi1cdTAwM2VpbmZvID0gaW5mbztcbjQ0NDQ6XHRcbjQ0NDU6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBGdW5jdGlvbiBDYWxsKioKCk9rYXksIHNvIEkgc2VlIGEgZnVuY3Rpb24gY2FsbDogYGtzel9zd2l0Y2hfZGV0ZWN0KGRldilgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMganVtcCBzdHJhaWdodCBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhpcyBkcml2ZXIgb3Igc3lzdGVtLiBXaGF0IGFyZSB0aGUgaW5wdXRzPyBXaGF0JiMzOTtzIHRoZSBleHBlY3RlZCBvdXRwdXQgb3Igc2lkZSBlZmZlY3RzPyBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhhcmR3YXJlIGFjY2Vzc2VzLCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIG9yIGFueSBzdGF0ZSBtb2RpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0ICYjMzQ7ZGV0ZWN0JiMzNDsgbWVhbnMgaW4gdGhpcyBjb250ZXh0IOKAkyBpcyBpdCBhbiBpbml0aWFsaXphdGlvbiwgYSBwb2xsaW5nIG1lY2hhbmlzbSwgb3Igc29tZXRoaW5nIG1vcmUgYWN0aXZlPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcm5hbHMgb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YCBpcyB0aGUgbmV4dCwgY3J1Y2lhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX2RldGVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTMxNTg9Ym9vbCBrc3pfZ2V0X2diaXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMxNzY6c3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9NDM5Nj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ0MzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0NDM0Olx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ0MzUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg5MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggcmVhZGluZyBga3N6X3N3aXRjaF9kZXRlY3RgOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE9iamVjdGl2ZSoqCgpBbHJpZ2h0LCB0aGUgdGFzayBpcyBjbGVhcjogSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGF0IGBrc3pfc3dpdGNoX2RldGVjdGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB3aGF0ZXZlciBzeXN0ZW0gaXQmIzM5O3MgYSBwYXJ0IG9mLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQmIzM5O3MgZGV0ZWN0aW5nLCBob3cgaXQmIzM5O3MgZG9pbmcgaXQsIGFuZCB3aHkgdGhpcyBkZXRlY3Rpb24gaXMgc2lnbmlmaWNhbnQuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUga2luZCBvZiBzd2l0Y2gtcmVsYXRlZCBldmVudCBvciBzdGF0ZSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgS1NaIGNoaXAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIG5hbWUsIGluIHRoZSBmdW5jdGlvbiYjMzk7cyBjb21tZW50cyAoaWYgYW55KSwgYW5kIHRoZW4gYnkgcmVhZGluZyB0aGUgY29kZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA3OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTc2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMxNzY6XHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4zMTc3Olx0e1xuMzE3ODpcdFx0dTggaWQxLCBpZDIsIGlkNDtcbjMxNzk6XHRcdHUxNiBpZDE2O1xuMzE4MDpcdFx0dTMyIGlkMzI7XG4zMTgxOlx0XHRpbnQgcmV0O1xuMzE4MjpcdFxuMzE4MzpcdFx0LyogcmVhZCBjaGlwIGlkICovXG4zMTg0Olx0XHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcdTAwMjZpZDE2KTtcbjMxODU6XHRcdGlmIChyZXQpXG4zMTg2Olx0XHRcdHJldHVybiByZXQ7XG4zMTg3Olx0XG4zMTg4Olx0XHRpZDEgPSBGSUVMRF9HRVQoU1dfRkFNSUxZX0lEX00sIGlkMTYpO1xuMzE4OTpcdFx0aWQyID0gRklFTERfR0VUKFNXX0NISVBfSURfTSwgaWQxNik7XG4zMTkwOlx0XG4zMTkxOlx0XHRzd2l0Y2ggKGlkMSkge1xuMzE5MjpcdFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XG4zMTkzOlx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xuMzE5NDpcdFx0XHRicmVhaztcbjMxOTU6XHRcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxuMzE5NjpcdFx0XHRpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTUpIHtcbjMxOTc6XHRcdFx0XHR1OCB2YWw7XG4zMTk4Olx0XG4zMTk5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XG4zMjAwOlx0XG4zMjAxOlx0XHRcdFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcdTAwMjZ2YWwpO1xuMzIwMjpcdFx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjhfUE9SVF9GSUJFUl9NT0RFKVxuMzIwMzpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XG4zMjA0Olx0XHRcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcbjMyMDU6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcbjMyMDY6XHRcdFx0fSBlbHNlIHtcbjMyMDc6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMDg6XHRcdFx0fVxuMzIwOTpcdFx0XHRicmVhaztcbjMyMTA6XHRcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxuMzIxMTpcdFx0XHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXG4zMjEyOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XG4zMjEzOlx0XHRcdGVsc2VcbjMyMTQ6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMTU6XHRcdFx0YnJlYWs7XG4zMjE2Olx0XHRjYXNlIEtTWjg4OTVfRkFNSUxZX0lEOlxuMzIxNzpcdFx0XHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxuMzIxODpcdFx0XHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXG4zMjE5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XG4zMjIwOlx0XHRcdGVsc2VcbjMyMjE6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMjI6XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0tTWjg4NjRfQ0hJUF9JRCwgXHUwMDI2aWQ0KTtcbjMyMjM6XHRcdFx0aWYgKHJldClcbjMyMjQ6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzIyNTpcdFx0XHRpZiAoaWQ0IFx1MDAyNiBTV19LU1o4ODY0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGtzel9yZWFkMTZgIEZ1bmN0aW9uIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgaXMgZHJhd24gdG8gdGhlIGBrc3pfcmVhZDE2YCBjYWxsLiBUaGlzIGlzIHdoZXJlIHRoZSBpbml0aWFsIGRhdGEgZ3JhYiBoYXBwZW5zLiBJZiBpdCBmYWlscywgdGhhdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBlcnJvciwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoYXQgZ3JhY2VmdWxseS4gQnV0IHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHdoYXQgaGFwcGVucyBpZiBpdCAqZG9lc24mIzM5O3QqIGZhaWwuCgpOb3csIGlmIHdlJiMzOTtyZSB1c2luZyB0aGUgYGkyYy1zdHViYCBkZXZpY2UgaW5zdGFudGlhdGlvbiwgdGhlIHZhbHVlcyBmcm9tIGBrc3pfcmVhZDE2YCBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIHRoZSByZWFsIGRlYWwsIGFyZSB0aGV5PyBUaGUgc3R1YiYjMzk7cyBtZW1vcnkgaXMgd2hhdCB3aWxsIGJlIHJlYWQuIFRoYXQgbWVhbnMgdGhlIHJlYWRzIGFyZSB2ZXJ5IGxpa2VseSByZXR1cm5pbmcgemVybywgb3Igc29tZSBvdGhlciBpbml0aWFsIHZhbHVlLiBTbywgaWYgd2UgZ2V0IGEgemVybywgYGlkMWAgd2lsbCBiZSB6ZXJvLiBXaGljaCBtYWtlcyBtZSB3b25kZXIgd2hhdCB0aGUgZXhwZWN0ZWQgbm9uLXplcm8gdmFsdWVzIGFyZSwgaW4gdGhlIHJlYWwtd29ybGQgc2NlbmFyaW8uCgpMZXQmIzM5O3Mgc2VlIHdoYXQgaGFwcGVucyBuZXh0IGluIHRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvZGUgaW50ZXJwcmV0cyB0aGUgdmFsdWUgcmV0dXJuZWQgYW5kIGRldGVybWluZXMgaWYgaXQgaGFzIHN1Y2Nlc3NmdWxseSBkZXRlY3RlZCBhIHN3aXRjaC4gV2hlcmUgZG9lcyBpdCBnbyBmcm9tIGhlcmU/IFdoYXQgaXMgaXQgYWN0dWFsbHkgbG9va2luZyBmb3I/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgc3Vic2VxdWVudCBzdGVwcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIyNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjI2Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XG4zMjI3Olx0XHRcdGJyZWFrO1xuMzIyODpcdFx0ZGVmYXVsdDpcbjMyMjk6XHRcdFx0cmV0ID0ga3N6X3JlYWQzMihkZXYsIFJFR19DSElQX0lEMCwgXHUwMDI2aWQzMik7XG4zMjMwOlx0XHRcdGlmIChyZXQpXG4zMjMxOlx0XHRcdFx0cmV0dXJuIHJldDtcbjMyMzI6XHRcbjMyMzM6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcbjMyMzQ6XHRcdFx0aWQzMiBcdTAwMjY9IH4weEZGO1xuMzIzNTpcdFxuMzIzNjpcdFx0XHRzd2l0Y2ggKGlkMzIpIHtcbjMyMzc6XHRcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4zMjM4Olx0XHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuMzIzOTpcdFx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbjMyNDA6XHRcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4zMjQxOlx0XHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuMzI0MjpcdFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbjMyNDM6XHRcdFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XG4zMjQ0Olx0XHRcdGNhc2UgTEFOOTM3Ml9DSElQX0lEOlxuMzI0NTpcdFx0XHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcbjMyNDY6XHRcdFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XG4zMjQ3Olx0XG4zMjQ4Olx0XHRcdFx0LyogTEFOOTY0NiBkb2VzIG5vdCBoYXZlIGl0cyBvd24gY2hpcCBpZC4gKi9cbjMyNDk6XHRcdFx0XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKVxuMzI1MDpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBpZDMyO1xuMzI1MTpcdFx0XHRcdGJyZWFrO1xuMzI1MjpcdFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbjMyNTM6XHRcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4zMjU0Olx0XHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4zMjU1Olx0XHRcdFx0aWYgKHJldClcbjMyNTY6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zMjU3Olx0XG4zMjU4Olx0XHRcdFx0aWYgKGlkNCA9PSBTS1VfSURfS1NaODU2MylcbjMyNTk6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODU2M19DSElQX0lEO1xuMzI2MDpcdFx0XHRcdGVsc2UgaWYgKGlkNCA9PSBTS1VfSURfS1NaOTU2MylcbjMyNjE6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTU2M19DSElQX0lEO1xuMzI2MjpcdFx0XHRcdGVsc2VcbjMyNjM6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTg5M19DSElQX0lEO1xuMzI2NDpcdFxuMzI2NTpcdFx0XHRcdGJyZWFrO1xuMzI2NjpcdFx0XHRkZWZhdWx0OlxuMzI2NzpcdFx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbjMyNjg6XHRcdFx0XHRcdFwmIzM0O3Vuc3VwcG9ydGVkIHN3aXRjaCBkZXRlY3RlZCAleClcXG5cJiMzNDssIGlkMzIpO1xuMzI2OTpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMzI3MDpcdFx0XHR9XG4zMjcxOlx0XHR9XG4zMjcyOlx0XHRyZXR1cm4gMDtcbjMyNzM6XHR9XG4zMjc0Olx0XG4zMjc1Olx0LyogQmFuZHdpZHRoIGlzIGNhbGN1bGF0ZWQgYnkgaWRsZSBzbG9wZS90cmFuc21pc3Npb24gc3BlZWQuIFRoZW4gdGhlIEJhbmR3aWR0aFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE4OAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENoaXAgSUQgRGV0ZWN0aW9uIGFuZCBTeXprYWxsZXImIzM5O3MgQ2FwYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoaXAgSUQgZGV0ZWN0aW9uIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGlmIGBpZDFgIHJlYWRzIDAsIHdlIGp1bXAgaW50byB0aGUgYGRlZmF1bHQ6YCBjYXNlLiBUaGVuIGl0IHJlYWRzIGBpZDMyYCB1c2luZyBga3N6X3JlYWQzMmAuIElmIGBpZDMyYCBoYXBwZW5zIHRvIGJlIDAsIGEgYml0bWFzayBjbGVhcnMgdGhlIGxvd2VyIDggYml0cywgYW5kIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGFjdHMgb24gYGlkMzJgLiBTaW5jZSAwIGlzbiYjMzk7dCBvbmUgb2YgdGhlIHJlY29nbml6ZWQgY2hpcCBJRHMgKGxpa2UgYEtTWjk0NzdfQ0hJUF9JRGApLCBpdCBwcmludHMgJiMzNDt1bnN1cHBvcnRlZCBzd2l0Y2ggZGV0ZWN0ZWQgMCkmIzM0OyBhbmQgcmV0dXJucyBgLUVOT0RFVmAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgZXJyb3IuCgpUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciB1c2luZyBgaTJjLXN0dWJgIHVubGVzcyB3ZSBzb21laG93IHByZS1sb2FkIHRoZSBzdHViJiMzOTtzIG1lbW9yeSB3aXRoIHRoZSAqY29ycmVjdCogY2hpcCBJRC4gTm93LCBjYW4gd2UgYWN0dWFsbHkgZG8gdGhhdCB3aXRoIGBpMmMtc3R1YmA/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBJIHJlbWVtYmVyIGBpMmNzZXRgIGZyb20gdXNlci1zcGFjZSBjYW4gd3JpdGUgdG8gaXRzIHJlZ2lzdGVycyBiZWZvcmUgdGhlIGRyaXZlciBiaW5kcywgYW5kIEkgdGhpbmsgc3l6a2FsbGVyIGNhbiBhbHNvIHdyaXRlIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC8uLi5gIG9yIGV2ZW4gYC9kZXYvaTJjLTBgIHRvIHBvcHVsYXRlIHRoZSBgaTJjLXN0dWJgJiMzOTtzIG1lbW9yeS4KCkJ1dCBoYW5nIG9uLi4uIENhbiBzeXprYWxsZXIgKmVhc2lseSogcHJlLXBvcHVsYXRlIGFuIGBpMmMtc3R1YmAgd2l0aCBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMgYmVmb3JlIHByb2JpbmcgYSBkcml2ZXI/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBUaGVyZSYjMzk7cyBub3QgYSBmdW5jdGlvbiBsaWtlIGBzeXpfaTJjX3NldHVwYCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoaXMuIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc29tZXRoaW5nIGxpa2UgaXQuLi4gSG1tLCBtYXliZSBzeXprYWxsZXIgY2FuIGZ1enogSTJDLCBidXQgdmlhIGB2aGNpYCBvciBgaTJjLWRldmAuIERvZXMgaXQgaGF2ZSBhICYjMzQ7dmlydHVhbCBJMkMgYWRhcHRlciYjMzQ7PyBOb3QgdGhhdCBJIHJlY2FsbC4gSXQgaGFzIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBmdW5jdGlvbiBmb3IgVVNCLCBhbmQgc2ltaWxhciBvbmVzIGZvciBXaUZpLgoKRm9yIEkyQywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIGRlZGljYXRlZCBwc2V1ZG8tZGV2aWNlIHRoYXQgYWxsb3dzIGFyYml0cmFyeSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGZyb20gdGhlIGtlcm5lbCYjMzk7cyBwZXJzcGVjdGl2ZS4gSXQmIzM5O3MgZnJ1c3RyYXRpbmcgYmVjYXVzZSBpdCB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIHNpdHVhdGlvbi4gQnV0IHdhaXQsIEkmIzM5O20gc2Vjb25kLWd1ZXNzaW5nIG15c2VsZi4gTWF5YmUgdGhlcmUgKmlzKiBhIGBzeXpfaTJjX3NldHVwYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkyQyBmdXp6aW5nIGlzIHByZXNlbnQgaW4gc3l6a2FsbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9pMmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBzcGVha2luZyBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqQ29uc2lkZXJpbmcgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIChTUEkpKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gd2hhdCBhYm91dCBTUEkgZm9yIHRoaXMgYXBwbGljYXRpb24/IEdpdmVuIHRoZSBjb25zdHJhaW50cyBhbmQgdGhlIHBlcmZvcm1hbmNlIGdvYWxzIHdlJiMzOTtyZSBhaW1pbmcgZm9yLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgcHJvcyBhbmQgY29ucyBpbiBteSBoZWFkLiBTUEkmIzM5O3Mgc2ltcGxpY2l0eSBpcyBkZWZpbml0ZWx5IGF0dHJhY3RpdmUsIGVzcGVjaWFsbHkgZnJvbSBhIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLiBUaGUgY2xvY2tlZCwgc3luY2hyb25vdXMgbmF0dXJlIGlzIGdlbmVyYWxseSByb2J1c3QgYW5kIHByZXR0eSBlYXN5IHRvIG1hbmFnZSB3aXRoIHN0YW5kYXJkIG1pY3JvY29udHJvbGxlcnMuIFBsdXMsIGl0JiMzOTtzIHR5cGljYWxseSBmYXN0ZXIgdGhhbiBJMkMsIHdoaWNoIGlzIGEgbWFqb3IgcG9pbnQgdG8gY29uc2lkZXIgZ2l2ZW4gdGhlIGRhdGEgdHJhbnNmZXIgcmVxdWlyZW1lbnRzLiBIb3dldmVyLCBpcyB0aGUgcmVxdWlyZWQgdGhyb3VnaHB1dCBhY2hpZXZhYmxlIGdpdmVuIHRoYXQgd2UgbmVlZCB0byBleGNoYW5nZSBkYXRhIHdpdGggbXVsdGlwbGUgc2xhdmVzPyBXZSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY2xvY2sgc3BlZWRzLCB0aGUgbnVtYmVyIG9mIHNsYXZlIHNlbGVjdHMsIGFuZCBwb3RlbnRpYWwgYnVzIGNvbnRlbnRpb24uIFRoZSBtdWx0aS1tYXN0ZXIgc3VwcG9ydCBpcyBub3QgYXMgY29tbW9uLCBzbyB0aGF0IG1pZ2h0IGJlIHRyaWNreSBpZiB3ZSBuZWVkIHRvIGV4cGFuZCB0aGUgY2FwYWJpbGl0aWVzIGRvd24gdGhlIHJvYWQuIEFscmlnaHQsIHRoZSBzaW1wbGljaXR5IG9mIGhhcmR3YXJlIGludGVncmF0aW9uIGlzIGFwcGVhbGluZzsgdGhlIHNwZWVkIG1pZ2h0IGJlIHN1ZmZpY2llbnQ7IGJ1dCBtdWx0aXBsZSBzbGF2ZXMgbWlnaHQgY2F1c2UgaXNzdWVzLCBsZXQmIzM5O3MgZXhwbG9yZSB0aGlzIGZ1cnRoZXIuIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgc2lnbmFsIGludGVncml0eSBpc3N1ZXMgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGFkZGVkIGhhcmR3YXJlIG92ZXJoZWFkLiBMZXQgbWUgY29tcGFyZSBpdCB0byBJMkMgYW5kIENBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfc3BpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0ODUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIgaW4gYSBGdXp6aW5nIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBzeXprYWxsZXI/JiMzNDsgSXQgc2VlbXMgbGlrZSBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgYGkyYy1zdHViYCByZWxhdGVkLiBVc3VhbGx5LCB0aGVzZSBhcmUgb2ZmLWxpbWl0cyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZXhwbGljaXQgZW11bGF0aW9uIHBhdGguIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIGFyZSBhIG5vLWdvLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgcmVhY2hhYmxlPwoKSXQmIzM5O3MgYW4gSTJDL1NQSS9TTUkgZGV2aWNlIGRyaXZlci4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0IHdpdGhvdXQgdGhlIHJpZ2h0IGhhcmR3YXJlIG9yIGEgZ29vZCBlbXVsYXRvciwgdGhlIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBwcm9iYWJseSBmYWlsLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGZhaWwgYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBiZWNhdXNlIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGNoaXAgSUQsIGFuZCB3ZSYjMzk7ZCBuZWVkIHRvIHByb3ZpZGUgYSB2ZXJ5IHNwZWNpZmljIHZhbHVlLiBTeXprYWxsZXIsIGFzIGZhciBhcyBJIHVuZGVyc3RhbmQsIGRvZXNuJiMzOTt0IGluaGVyZW50bHkga25vdyBpdCBuZWVkcyB0byB3cml0ZSBgS1NaOTg5N19DSElQX0lEYCB0byBhIHNwZWNpZmljIHJlZ2lzdGVyIHZpYSBJMkMgYmVmb3JlIHRoZSBwcm9iZSBjYW4gZXZlbiAqYmVnaW4qLiBTbywgdGhlIHByb2JlIGlzIGxpa2VseSB0byBmYWlsLgoKVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAsIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgYGtzel9zd2l0Y2hfZGV0ZWN0YCBzdWNjZWVkcy4gU28gaWYgdGhlIGRldGVjdGlvbiBmYWlscywgdGhlIGRldmljZSBkb2VzbiYjMzk7dCByZWdpc3RlciwgYW5kIHRoZSBzdWJzZXF1ZW50IGNvZGUgcGF0aHMgdGhhdCB1c2UgYHNnbWlpX3BvcnRgLCBsaWtlIGBrc3o5NDc3X3NldHVwYCwgYXJlIG5ldmVyIGV2ZW4gZXhlY3V0ZWQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB3aXRob3V0IHRoZSBoYXJkd2FyZSB0aGUgZGV0ZWN0aW9uIHdpbGwgZmFpbC4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgZW50cnkgcG9pbnRzIHRob3VnaCwganVzdCB0byBiZSBzdXJlLiBDb3VsZCB0aGlzIGJlIGluc3RhbnRpYXRlZCB2aWEgdGhlIGRldmljZSB0cmVlIGFuZCBzb21lIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBjb250cm9scz8gSSBkb24mIzM5O3QgdGhpbmsgc3l6a2FsbGVyICpjdXJyZW50bHkqIGhhcyBhIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB3aGVyZSBpdCBjYW4gcmV0dXJuIHNwZWNpZmljIHZhbHVlcyB0byBgc3BpX3N5bmNgIG9yIGBpMmNfdHJhbnNmZXJgLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IGEgZGVhZCBlbmQuCgpXYWl0LCB0aGVyZSAqaXMqIGBDT05GSUdfSTJDX1NUVUJgLiBJZiBzeXprYWxsZXIgY291bGQgd3JpdGUgdG8gYC9kZXYvaTJjLVhgIGJlZm9yZSBiaW5kaW5nIHRoZSBkcml2ZXIsIGl0ICpjb3VsZCogdGhlb3JldGljYWxseSBzZXQgdGhlIGNoaXAgSUQuIEJ1dCB0aGUgZnV6emVyIHdvdWxkbiYjMzk7dCBrbm93IGl0ICpuZWVkcyogdG8uIEl0IHdvdWxkIGhhdmUgdG8gcmFuZG9tbHkgd3JpdGUgdGhlICpleGFjdCogY2hpcCBJRCB0byB0aGUgKmV4YWN0KiByZWdpc3RlciBhbmQgKnRoZW4qIGJpbmQgdGhlIGRyaXZlci4gVGhlIGNoYW5jZXMgb2YgdGhhdCBhcmUgcHJhY3RpY2FsbHkgemVyby4KCldhaXQsIHdoYXQgKmV4YWN0bHkqIGRpZCB0aGUgcGF0Y2ggZG8/IE9oLCByaWdodCwgaXQmIzM5O3MganVzdCBhZGRpbmcgYC5zZ21paV9wb3J0ID0gN2AgdG8gYSBzdHJ1Y3Q6CmBgYGMKQEAgLTE1OTEsNiAmIzQzOzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKIAkJCQkgICB0cnVlLCBmYWxzZSwgZmFsc2V9LAogCQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAomIzQzOwkJLnNnbWlpX3BvcnQgPSA3LAogCX0sCiAKIAlbS1NaOTg5M10gPSB7CmBgYApUaGlzIGlzIGEgZGF0YS1kcml2ZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIEtTWjk4OTcgc3dpdGNoIGNoaXAuIEl0JiMzOTtzIGhhcmR3YXJlLXNwZWNpZmljLiBFdmVuICppZiogd2Ugc29tZWhvdyByZWFjaGVkIHRoaXMgY29kZSwgYWxsIGl0JiMzOTtzIGRvaW5nIGlzIHNldHRpbmcgYSBwcm9wZXJ0eSBmb3IgYSBzcGVjaWZpYyBjaGlwLiBTaW5jZSB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgaGFyZHdhcmUgYW5kIGNhbiYjMzk7dCBlYXNpbHkgZW11bGF0ZSBpdCwgdGhpcyBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIGRlYWQgZW5kLgpMZXQgbWUgYmUgY2VydGFpbiB0aGF0IGlzIHRoZSBvbmx5IHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX2NoaXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o4ODYzX2R0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDEtXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg4NjNcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjAyOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDUtXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg4NzNcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjA2Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz04OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o5NDc3X2R0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05MS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTQ3N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5MjpcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk0NzddXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05NS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5NlwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5NjpcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05OS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDA6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwMy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDQ6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwNS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwNy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDg6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwOS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExMS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTI6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExMy1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExNS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTY6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExNy1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExOS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjA6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyMy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjQ6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyNS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTI0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUga3N6ODg3M19yZWdpc3Rlcl9zZXQgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjEyNDg6Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0OS1cdFtLU1o4NDYzXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTMxLX07XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTMyOkVYUE9SVF9TWU1CT0xfR1BMKGtzel9zd2l0Y2hfY2hpcHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTkzMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTE5MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICprc3pfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTM4Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShrc3pfc3dpdGNoX2NoaXBzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5NDAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDAxPXBoeV9pbnRlcmZhY2VfdCBrc3pfZ2V0X3htaWkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGJvb2wgZ2JpdCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQwMy1pbnQga3N6X3N3aXRjaF9tYWNhZGRyX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTIyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3pfZHRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjI4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NDYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjI5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODQ2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjMyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NzY1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjMzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc2NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjM2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4Nzk0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjM3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc5NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4Nzk1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc5NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQ1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODY0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQ5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODg2NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjUyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODczXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjUzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjU2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODk1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjU3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODg5NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjYwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NDc3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjYxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk2XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjY1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5Nl1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjY5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjcyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODkzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjczOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjc2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NTYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjc3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTU2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjgwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjgxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTY3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjg1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NTY3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjg5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTU2N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjkyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjkzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3MF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjk2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjk3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3MV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzAwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcyXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzAxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3Ml1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwMi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzczXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzA1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwNi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45Mzc0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzA5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzEyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45NjQ2XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzEzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTY0Nl1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxNC1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA3OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjE4CgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDE4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGl0JiMzOTtzIGp1c3QgZGVhbGluZyB3aXRoIGEgaGFyZHdhcmUgcHJvcGVydHkgdGFibGUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgS1NaOTg5N2AgY2hpcC4gTm93LCB0aGUga2V5IHRoaW5nIGlzIHRoYXQgaXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdGhlIGtpbmQgb2YgZW52aXJvbm1lbnRzIEkgdHlwaWNhbGx5IHdvcmsgaW4sIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWZpYywgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgdGhhdCBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoaXMgc3dpdGNoLiBBbmQsIGZyYW5rbHksIHdlIGRvbiYjMzk7dCBoYXZlIHRoYXQgZW11bGF0aW9uIGluIHBsYWNlLgoKRXZlbiBpZiBieSBzb21lIG1pcmFjbGUgd2UgY291bGQgaW5zdGFudGlhdGUgdGhpcyB0aGluZywgYWxsIHRoaXMgcHJvcGVydHkgY2hhbmdlIGFtb3VudHMgdG8gaXMgYSBjb25zdGFudCBhZGRpdGlvbi4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBub3ZlbCBvciBpbnRlcmVzdGluZyBmdXp6aW5nIHN1cmZhY2UuIFRoZXJlZm9yZSwgZ2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWwgdG8gdGVzdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTowOC45ODU0NzIxNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTExNjI4NDE2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjA4Ljk4NTQ4MDE4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3NTA4MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2U4NDEyY2FiYWMyYTFmZjEwODlkMTkxZDk4YTY3OGI2MTM5YWMzOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA2OjU5OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbkBAIC0xNTkxLDYgKzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5pbnRlcm5hbF9waHlcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxcbiBcXHRcXHRcXHRcXHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxcbiBcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuK1xcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG4gXFx0fSxcXG4gXFxuIFxcdFtLU1o5ODkzXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MDkuNTk1MDk5Njg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA1NTMyMDgyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2U4NDEyY2FiYWMyYTFmZjEwODlkMTkxZDk4YTY3OGI2MTM5YWMzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDY6NTk6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNTkxLDYgKzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5pbnRlcm5hbF9waHlcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXG4gXHRcdFx0XHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxuIFx0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbitcdFx0LnNnbWlpX3BvcnQgPSA3LFxuIFx0fSxcbiBcbiBcdFtLU1o5ODkzXSA9IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjA5LjU5NTEwMTg4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NTQ2Mzk3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBLU1o5ODk3IFNHTUlJIFBvcnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSdyZSBhZGRpbmcgYC5zZ21paV9wb3J0ID0gNyxgIHRvIHRoZSBgS1NaOTg5N2AgZW50cnkgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhhdCBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgc2dtaWlfcG9ydGAgZmllbGQgKmRvZXMqLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBkcml2ZXIncyBsb2dpYy4gSXMgaXQganVzdCBhIGNvbmZpZ3VyYXRpb24gdmFsdWU/IERvZXMgaXQgYWZmZWN0IHJlZ2lzdGVyIGFjY2Vzcz8gSXMgaXQgZXZlbiAqdXNlZCogYnkgdGhlIGRyaXZlciwgb3IgaXMgaXQganVzdCBzaXR0aW5nIHRoZXJlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIHBvcnQgbnVtYmVyIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGJ5IHRoZSBleGlzdGluZyBjb2RlLiBBcmUgdGhlcmUgZnVuY3Rpb25zIHRoYXQgdXRpbGl6ZSB0aGF0IHNwZWNpZmljIHBvcnQgbnVtYmVyIGFuZCBhc3NvY2lhdGVkIFNHTUlJIGNvbmZpZ3VyYXRpb24/IEl0J3MgZWFzeSBlbm91Z2ggdG8gYWRkIGEgdmFsdWUsIGJ1dCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIHRoaXMgYWRkaXRpb24gaXMgbG9naWNhbGx5IHNvdW5kIGFuZCBzZXJ2ZXMgYW4gYWN0dWFsIHB1cnBvc2Ugd2l0aGluIHRoZSBjdXJyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBqdXN0IGEgcGxhY2Vob2xkZXIsIGJ1dCBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGV2aWNlLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBtYWtlcyBzZW5zZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OToxOS4zNDk3NDQyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5MzQyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNnbWlpX3BvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTkxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTkzLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTk0OlxcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTk1LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0yNTc9c3RhdGljIGludCBrc3o5NDc3X3Bjc193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYwLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjYxOlxcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzE1PXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzE2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMTc6XFx0aW50IHBvcnQgPSBrc3pfZ2V0X3NnbWlpX3BvcnQoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMTgtXFx0c3RydWN0IGtzel9wb3J0ICpwID0gXFx1MDAyNmRldi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0xMTk0PXN0YXRpYyB2b2lkIGtzejk0NzdfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxMjA1OlxcdGlmIChrc3pfaXNfc2dtaWlfcG9ydChkZXYsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNi1cXHRcXHRzdHJ1Y3Qga3N6X3BvcnQgKnAgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTE1MjA9c3RhdGljIGludCBrc3o5NDc3X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE1NDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTU0NjpcXHRpZiAoa3N6X2hhc19zZ21paV9wb3J0KGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNTQ3LVxcdFxcdHJldCA9IGtzejk0NzdfcGNzX2NyZWF0ZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjAyNj1rc3o5NDc3X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMDMyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjIwMzM6XFx0aWYgKGtzel9pc19zZ21paV9wb3J0KGRldiwgZHAtXFx1MDAzZWluZGV4KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTIwMzQtXFx0ICAgIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0xMjQ4PWNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1MjAtXFx0XFx0LnB0cF9jYXBhYmxlID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxNTIxOlxcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xNTIyLVxcdFxcdC53cl90YWJsZSA9IFxcdTAwMjZrc3o5NDc3X3JlZ2lzdGVyX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTMtXFx0XFx0LmdiaXRfY2FwYWJsZVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE1OTQ6XFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MjYtXFx0XFx0LmdiaXRfY2FwYWJsZVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mjc6XFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MjgtXFx0XFx0LndyX3RhYmxlID0gXFx1MDAyNmtzejk0NzdfcmVnaXN0ZXJfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjAxMT12b2lkIGtzel9yX21pYl9zdGF0czY0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA1OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMDYwOlxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBoeV9lcnJhdGFfOTQ3NyBcXHUwMDI2XFx1MDAyNiAha3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIwNjEtXFx0XFx0cmV0ID0ga3N6OTQ3N19lcnJhdGFfbW9uaXRvcihkZXYsIHBvcnQsIHJhdy1cXHUwMDNldHhfbGF0ZV9jb2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzEyMz1ib29sIGtzel9waHlsaW5rX25lZWRfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzEzNC1cXHQvKiBObyBuZWVkIHRvIGNvbmZpZ3VyZSBYTUlJIGNvbnRyb2wgcmVnaXN0ZXIgd2hlbiB1c2luZyBTR01JSS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMTM1OlxcdGlmIChrc3pfaXNfc2dtaWlfcG9ydChkZXYsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NTc9c3RydWN0IGtzel9jaGlwX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTctXFx0Ym9vbCBwdHBfY2FwYWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo5ODpcXHR1OCBzZ21paV9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTk5LVxcdGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlICp3cl90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTc0Nj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbGFuOTM3eF90eF9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzUyOnN0YXRpYyBpbmxpbmUgaW50IGtzel9nZXRfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU0OlxcdHJldHVybiBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXNnbWlpX3BvcnQgLSAxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1NS19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc1NzpzdGF0aWMgaW5saW5lIGJvb2wga3N6X2hhc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU4LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NTk6XFx0cmV0dXJuIGRldi1cXHUwMDNlaW5mby1cXHUwMDNlc2dtaWlfcG9ydCBcXHUwMDNlIDA7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzYwLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzYyOnN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc2NDpcXHRyZXR1cm4gZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VzZ21paV9wb3J0ID09IHBvcnQgKyAxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc2NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjE5LjczOTA5NDg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NjAzNjU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLU1o5ODk3IFNHTUlJIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgLnNnbWlpX3BvcnQgPSA3YCB0byB0aGUgYEtTWjk4OTdgIGNoaXAgZGF0YSB3aXRoaW4gdGhlIGBrc3pfc3dpdGNoX2NoaXBzW11gIGFycmF5LiBUaGF0IGRpcmVjdGx5IGltcGFjdHMgYGtzel9oYXNfc2dtaWlfcG9ydChkZXYpYCBhbmQgYGtzel9pc19zZ21paV9wb3J0KGRldiwgNilgLCBtYWtpbmcgdGhlbSByZXR1cm4gdHJ1ZSBmb3IgdGhlIEtTWjk4OTcuIFRoaXMgd2lsbCByaXBwbGUgdGhyb3VnaCBzZXZlcmFsIGZ1bmN0aW9ucyBpbiB0aGUgZHJpdmVyOiBga3N6OTQ3N19zZXR1cGAsIGBrc3o5NDc3X3BoeWxpbmtfZ2V0X2NhcHNgLCBga3N6OTQ3N19waHlsaW5rX21hY19zZWxlY3RfcGNzYCwgYGtzel9yX21pYl9zdGF0czY0YCwgYW5kIGBrc3pfcGh5bGlua19uZWVkX2NvbmZpZ2AuIFNvLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBuZXR3b3JrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBhIERTQSBzd2l0Y2guXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgdXN1YWxseSBhY2Nlc3NlZCB0aHJvdWdoIFNQSSwgSTJDLCBvciBNRElPLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBlbXVsYXRpb24gZm9yIERTQSBzd2l0Y2hlcyBvciBpZiB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIHNvbWUgc29mdHdhcmUgbWVjaGFuaXNtLiBUaGVzZSBNaWNyb2NoaXAgS1NaIHNlcmllcyBzd2l0Y2hlcyBhcmVuJ3QgdHlwaWNhbGx5IGVhc3kgdG8gZnV6eiB1bmxlc3Mgd2UgaGF2ZSBhIHZpcnR1YWwgYnVzIGxpa2UgSTJDL1NQSSB0aGF0IHN5emthbGxlciBjYW4gaW5qZWN0IGludG8uIE9yLCBwZXJoYXBzIGl0J3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluay9zeXNmcyBzb21laG93LlxuXG5XYWl0IGEgbWludXRlLCBzeXprYWxsZXIgZG9lcyBoYXZlIHNvbWUgc3VwcG9ydCBmb3IgaW5qZWN0aW5nIEkyQy9TUEkgZGV2aWNlcyB0aHJvdWdoIGB2aGNpYCBvciBzaW1pbGFyLiBNYXliZSB0aGlzICppcyogcmVhY2hhYmxlIGFmdGVyIGFsbC4gT3IsIGl0IGNvdWxkIGJlIGEgZGVhZCBlbmQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N2Agb3IgYSBzaW1pbGFyIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gc2VlIGlmIGl0IGNhbiBiZSBlbmFibGVkIGFuZCBjaGVjayBpZiBpdCBoYXMgYSB3YXkgdG8gcG9rZSB0aGUgZHJpdmVyIHVzaW5nIG9uZSBvZiB0aG9zZSBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjI2LjE5OTQ2MzQ0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk1NTMxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OToyNi4zMzkwMjg2MzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA3ODQ4MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgSTJDL1NQSSBDb25uZWN0ZWQgU3dpdGNoZXMgd2l0aCBTeXprYWxsZXI6IEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgdGhpbmtpbmcsIGNhbiB3ZSBldmVuICpiZWdpbiogdG8gZnV6eiBpdCB3aXRoIHN5emthbGxlcj8gVGhlIGRyaXZlcidzIGNvbm5lY3RlZCB2aWEgSTJDL1NQSS9TTUkg4oCTIHRoYXQncyB0aGUgaHVyZGxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIncyBleGlzdGluZyBJMkMvU1BJIGNhcGFiaWxpdGllcyBiZSBsZXZlcmFnZWQ/IEl0IGRvZXNuJ3Qgc2VlbSBkaXJlY3RseSBhcHBsaWNhYmxlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIEkyQyBmdXp6aW5nIHByaW1pdGl2ZXMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCwgYnV0IHRoYXQncyB0eXBpY2FsbHkgZm9yIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zICp3aXRoKiBhIGRldmljZSwgbm90IHRoZSBrZXJuZWwtc2lkZSBvcGVyYXRpb24gd2UncmUgaW50ZXJlc3RlZCBpbi4gVW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIEkyQyBzdHViIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHBsYWNlLCBpdCdzIHR5cGljYWxseSB0b3VnaCB0byBnZXQgYXQgdGhlc2UgSTJDL1NQSSBkZXZpY2VzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBjYW4gd2UgKmluc3RhbnRpYXRlKiBhIGZha2UgSTJDIGRldmljZT8gVGhlIGlkZWEgYmVpbmcgaWYgd2UgY2FuIGluamVjdCBvbmUgb2YgdGhvc2UsIHdlIG1pZ2h0IGJlIGFibGUgdG8gc3RhcnQgZnV6emluZy4gSXQncyBub3Qgc29tZXRoaW5nIHN5emthbGxlciBkaXJlY3RseSBoYW5kbGVzIGdlbmVyaWNhbGx5LiBMb29raW5nIGFnYWluLCBJIGJlbGlldmUgdGhpcyBpcyBwb3NzaWJsZSB2aWEgYHN5c2ZzYCBhbmQgdGhlIGBuZXdfZGV2aWNlYCBjYWxsIG9uIHRoZSBJMkMgYWRhcHRlciwgb3IgcG90ZW50aWFsbHkgd2l0aCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBidWlsdC1pbiBtZWNoYW5pc20gdG8gY3JlYXRlICphcmJpdHJhcnkqIEkyQy9TUEkgZGV2aWNlcyB1bmxlc3MgdGhleSdyZSBwcmUtZGVmaW5lZCBwc2V1ZG8tZGV2aWNlcyBvciBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZ1enppbmcgc2V0dXAuXG5cbk9rYXksIEknbSByZWFkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGVyZSdzIGEgbm90ZSBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IGl0IHNvdW5kcyBsaWtlIGl0IG1heSBiZSBwb3NzaWJsZSB0byByZWFjaCBpdCB2aWEgSTJDIGBuZXdfZGV2aWNlYCBhbmQgYSBkdW1teSBJMkMgYWRhcHRlci4gSWYgd2UgaGF2ZSBhIGR1bW15IGFkYXB0ZXIsIGxpa2UgYGkyYy1zdHViYCBvciBgaTJjLW1vY2tgLCB0aGVuIGl0ICptaWdodCogYmUgcmVhY2hhYmxlLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGkyYy1zdHViYCBsZXRzIHVzIGJpbmQgKmFueSogSTJDIGRyaXZlciB0byBpdC4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyB0aGUgd2F5IHRvIGluc3RhbnRpYXRlIGEgZGV2aWNlIGZvciBmdXp6aW5nLCB3aGljaCBvcGVucyB0aGluZ3MgdXAuIEl0IHNvdW5kcyBsaWtlIGBpMmMtc3R1YmAgYWxsb3dzIGJpbmRpbmcgYW55IEkyQyBkcml2ZXIgdG8gaXQuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgcGxhbiBpcyB0byBjb250aW51ZSBieSBjaGVja2luZyB0aGUgSTJDIGRyaXZlciBmb3IgdGhpcyBzd2l0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzMuNTQ2ODc5NTk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTI0MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3o5NDc3LWkyY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzMuNjQyMDExOTAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTEyNjg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIEkyQyBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGhpdHRpbmcgYSBzbmFnIHNvbWV3aGVyZSBpbiB0aGUgSTJDIGRyaXZlciByZWFsbS4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbywgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMgb2YgdGhlIGhhcmR3YXJlIG9yIHRpbWluZyBpc3N1ZXMsIGlzIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBJMkMgZHJpdmVy4oCZcyBuYW1lLiBUaGlzIGlzIG15IGdvLXRvIHN0YXJ0aW5nIHBvaW50LiBJdOKAmXMgYSBmb3VuZGF0aW9uYWwgc3RlcCwgYmVjYXVzZSBpZiB0aGUgZHJpdmVyIGlzbid0IGxvYWRpbmcsIG9yIHRoZSBuYW1lIGlzIGluY29ycmVjdCBpbiB0aGUgZGV2aWNlIHRyZWUvY29uZmlndXJhdGlvbiwgSSdtIHdhc3RpbmcgbXkgdGltZSBjaGFzaW5nIHBoYW50b20gcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSXQncyBhbG1vc3QgYSBrbmVlLWplcmssIGJ1dCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdGhpcyBpcyBvZnRlbiB3aGVyZSB0aGUgcmFiYml0IGhvbGUgYmVnaW5zLiBJJ3ZlIHNlZW4gZW5vdWdoIG1pc25hbWVkIGRldmljZXMsIHR5cG9zIGluIHRoZSBEVCwgb3Igb3V0ZGF0ZWQgZHJpdmVyIHZlcnNpb25zIHRvIGtub3cgdGhpcyBpcyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQgdG8gY2hlY2sgZmlyc3QuIEl0J3MgYSBxdWljayB3aW4sIGFuZCBhIG5lY2Vzc2FyeSBwcmUtZmxpZ2h0IGNoZWNrIGJlZm9yZSBJIHN0YXJ0IGxvb2tpbmcgZm9yIG1vcmUgZWx1c2l2ZSBidWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzYuNzYzMTQxMjM0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjIwMjAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpMmNfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xMzA9c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjEzMzpzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzQtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE0NTptb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjM2Ljg0OTM1MjIwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzMDkwMTgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRldmljZSBCaW5kaW5nIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiB0aGlzIGRldmljZSdzIGludGVyYWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMsIGxldCdzIGVzdGFibGlzaCBhIGJhc2VsaW5lOiB3aGF0IHNwZWNpZmljIGRldmljZXMgb3IgY29tcG9uZW50cyBpcyB0aGlzIHN5c3RlbSBhY3R1YWxseSBjb21tdW5pY2F0aW5nIHdpdGg/IFdoYXQncyB0aGUgYXJjaGl0ZWN0dXJlPyBBcmUgd2UgdGFsa2luZyBoYXJkd2FyZSwgc29mdHdhcmUsIG5ldHdvcmsgcHJvdG9jb2xzLCB0aGUgd29ya3M/IFVuZGVyc3RhbmRpbmcgdGhlc2UgYmluZGluZ3MgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBwcm9wZXIgcmV2ZXJzZSBlbmdpbmVlcmluZyBvciBkZWJ1Z2dpbmcuIEEgY29tcHJlaGVuc2l2ZSBpbnZlbnRvcnkgaGVyZSBpcyBmb3VuZGF0aW9uYWwgdG8gYW55IG1lYW5pbmdmdWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzeXN0ZW0ncyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gV2UgbmVlZCB0byBkZWZpbmUgdGhlIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2Ygb3VyIHRhcmdldCB3aXRoIGl0cyBwZWVycyBpcyBob3cgd2Ugd2lsbCBkbyB0aGlzLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRvb2xzIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjQ5LjQ4MDI1Njg2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDMzNzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImkyY19kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTcwPXN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjgyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04My1cXHR7IC5uYW1lID0gXFxcImtzejk0Nzctc3dpdGNoXFxcIiB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTo0OS43MzAyOTkzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA5NDU1MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2aWNlIEluc3RhbnRpYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHNvIHRoZSBuYW1pbmcgY29udmVudGlvbiBoZXJlIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IFwia3N6OTQ3Ny1zd2l0Y2hcIiwgXCJrc3o5ODk3LXN3aXRjaCxcIiBhbmQgc28gb24uIFRoZSBwcm9jZXNzIHRvIGdldCB0aGlzIGRldmljZSBpbnN0YW50aWF0ZWQgc2VlbXMgdG8gYmUgc3RyYWlnaHRmb3J3YXJkIOKAkyBJIGNhbiBjcmVhdGUgaXQgYnkgd3JpdGluZyB0aGUgZGV2aWNlIG5hbWUgYW5kIGFkZHJlc3MsIGxpa2UgXCJrc3o5ODk3LXN3aXRjaCAweDVmXCIg4oCTIGFzc3VtaW5nIGBpMmMtMGAgaXMgbXkgYGkyYy1zdHViYCBpbnRlcmZhY2Ug4oCTIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9uZXdfZGV2aWNlYC4gXG5cbk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlcyBpbiBteSBtaW5kOiBkb2VzIHRoaXMgc3dpdGNoIGNvbmZpZ3VyYXRpb24gcmVseSBvbiBpbnRlcnJ1cHRzIG9yIEdQSU8gc2lnbmFsaW5nIGZvciBvcGVyYXRpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYmV5b25kIHRoZSBJMkMgY29tbXVuaWNhdGlvbiBpdHNlbGYuIFRvIGNsYXJpZnkgdGhpcywgSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRldGVybWluZSBpZiBhbnkgYWRkaXRpb25hbCByZXNvdXJjZXMgYXJlIHJlcXVpcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTc1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjUzLjkzOTc1ODM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5MTg1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6OTQ3N19pMmNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE3OnN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMzk6XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjU0LjA0MTY4MjkxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzAxMzE1ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYGtzejk0NzdfaTJjX3Byb2JlYC4gSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBkcml2ZXIsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBhZ2Fpbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGtleSBzZWN0aW9uczogdGhlIEkyQyBkZXZpY2UgcmVnaXN0cmF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgc3BlY2lmaWMgdG8gdGhpcyBLU1o5NDc3IGNoaXAuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgSTJDIGNvbW11bmljYXRpb24gaXRzZWxmLiBJJ2xsIG1lbnRhbGx5IG5vdGUgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciB0aGUgSTJDIGNsaWVudCBhbmQgYW55IGN1c3RvbSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgS1NaOTQ3Ny4gSSdsbCBjb21wYXJlIHRoZSByZWdpc3RlciBkZWZpbml0aW9ucyB3aXRoIHRoZSBkYXRhc2hlZXQgdG8gZW5zdXJlIHRoZSBkcml2ZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycy4gVGhlIGludGVycnVwdCBoYW5kbGluZyB3aWxsIGJlIGltcG9ydGFudCB0b28uIEkgd2FudCB0byBzZWUgaG93IGludGVycnVwdHMgYXJlIGNvbmZpZ3VyZWQgYW5kIHByb2Nlc3NlZCwgcGF5aW5nIGF0dGVudGlvbiB0byB0aGUgaW50ZXJydXB0LXNhZmUgY29udGV4dC4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgaW5lZmZpY2llbnQgY29kZSBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24sIHN1Y2ggYXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1bm5lY2Vzc2FyeSBsb2NraW5nLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgZW5zdXJpbmcgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGVmZmljaWVudC4gSSB3aWxsIGFsc28gbWFrZSBub3RlcyByZWdhcmRpbmcgdGhlIGRyaXZlcidzIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGFueSBzcGVjaWZpYyByZXF1aXJlbWVudHMuIExldCdzIHN0YXJ0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mjg2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6NTkuMzQzMDAwODZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE3OlxcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xcbiAgMjA6XFx0XFx0c3RydWN0IGRldmljZSAqZGRldiA9IFxcdTAwMjZpMmMtXFx1MDAzZWRldjtcXG4gIDIxOlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xcbiAgMjI6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcXG4gIDIzOlxcdFxcdGludCBpLCByZXQ7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XFxuICAyNjpcXHRcXHRpZiAoIWNoaXApXFxuICAyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIGNoaXAsIGkyYyk7XFxuICAzMDpcXHRcXHRpZiAoIWRldilcXG4gIDMxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXFxuICAzNDpcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBjaGlwLVxcdTAwM2VjaGlwX2lkO1xcbiAgMzU6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gIDM2OlxcdFxcdFxcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xcbiAgMzc6XFx0XFx0XFx0cmMubG9ja19hcmcgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXg7XFxuICAzODpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXFx1MDAyNnJjKTtcXG4gIDM5OlxcdFxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuICA0MDpcXHRcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pLFxcbiAgNDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXFxcblxcXCIsXFxuICA0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuICA0MzpcXHRcXHRcXHR9XFxuICA0NDpcXHRcXHR9XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdGlmIChpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAgNDc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IGkyYy1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGRldi1cXHUwMDNlaXJxID0gaTJjLVxcdTAwM2VpcnE7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXFxuICA1NDpcXHRcXHRpZiAocmV0KVxcbiAgNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cmV0dXJuIDA7XFxuICA2MDpcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRpZiAoZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTo1OS4zNDMwODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODU2ODk5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBDYWxsKipcblxuT2theSwgc28gdGhlIGNvZGUgaW5pdGlhdGVzIGEgY2FsbCB0byBga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uLCBzaGFsbCB3ZT8gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZG9lcyBhbmQgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcHJvdmlkZWQgZGV2aWNlIHN0cnVjdHVyZSAoYGRldmApLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbml0aWFsaXplcywgY29uZmlndXJlcywgb3IgcmVnaXN0ZXJzIHRoZSBzd2l0Y2gsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgb3IgZGF0YSBzdHJ1Y3R1cmUgcG9wdWxhdGlvbi4gSSBhbHNvIHdhbnQgdG8gc2VlIHdoYXQgYXNzdW1wdGlvbnMgaXQgbWFrZXMgYWJvdXQgdGhlIGBkZXZgIHN0cnVjdHVyZS4gS25vd2luZyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB3aWxsIG1ha2UgdW5kZXJzdGFuZGluZyB0aGUgc3Vic2VxdWVudCBjb2RlIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDc6MDA6MDQuOTI4NzgwNDQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkxNTQ3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTM0PXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTcwOlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTQzOTE9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0Mzk2OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NTQxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0NTQyOkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDU0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTM4NT1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMzg3LVxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDozODg6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMzg5LXZvaWQga3N6X3N3aXRjaF9yZW1vdmUoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjA1LjAzNzk1NDY3N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2MjMzMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUga3N6X2NvbW1vbi5jIGZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIGluIHRoZSBvdmVyYWxsIGRldmljZSBkcml2ZXIuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCBmb3IgdGhlIHN3aXRjaCBoYXJkd2FyZSwgc28gaXTigJlzIGxpa2VseSB3aGVyZSBJJ2xsIGZpbmQgaW5pdGlhbCBzZXR1cCBvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgaGFyZHdhcmUgaXMgcmVnaXN0ZXJlZCwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJ3MgZGV2aWNlIG1vZGVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAsIGFuZCBhbnkgZWFybHkgY29uZmlndXJhdGlvbiBzdGVwcyBuZWVkZWQgdG8gYnJpbmcgdGhlIHN3aXRjaCBpbnRvIGEgZnVuY3Rpb25hbCBzdGF0ZS4gSSBhbnRpY2lwYXRlIHRoZXJlJ2xsIGJlIGEgbG90IG9mIGludGVyZXN0aW5nIGRldGFpbCBhYm91dCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDowOC4xNDQxODk3NDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzOTYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQzOTY6XFx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG40Mzk3OlxcdHtcXG40Mzk4OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICppbmZvO1xcbjQzOTk6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG40NDAwOlxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuNDQwMTpcXHRcXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XFxuNDQwMjpcXHRcXHRpbnQgcmV0O1xcbjQ0MDM6XFx0XFx0aW50IGk7XFxuNDQwNDpcXHRcXG40NDA1OlxcdFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjQ0MDY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHUElPRF9PVVRfTE9XKTtcXG40NDA3OlxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG40NDA4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3Bpbyk7XFxuNDQwOTpcXHRcXG40NDEwOlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG40NDExOlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG40NDEyOlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfY29uZmlndXJlX3N0cmFwc19zcGkoZGV2KTtcXG40NDEzOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuNDQxNDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQ0MTU6XFx0XFx0XFx0fVxcbjQ0MTY6XFx0XFxuNDQxNzpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVxcdTAwM2VyZXNldF9ncGlvLCAxKTtcXG40NDE4OlxcdFxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xcbjQ0MTk6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuNDQyMDpcXHRcXHRcXHRtc2xlZXAoMTAwKTtcXG40NDIxOlxcdFxcbjQ0MjI6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWljcm9jaGlwLGtzejg0NjNcXFwiKSkge1xcbjQ0MjM6XFx0XFx0XFx0XFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcXG40NDI0OlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuNDQyNTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQ0MjY6XFx0XFx0XFx0fVxcbjQ0Mjc6XFx0XFx0fVxcbjQ0Mjg6XFx0XFxuNDQyOTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRldl9tdXRleCk7XFxuNDQzMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ21hcF9tdXRleCk7XFxuNDQzMTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuNDQzMjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5fbXV0ZXgpO1xcbjQ0MzM6XFx0XFxuNDQzNDpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xcbjQ0MzU6XFx0XFx0aWYgKHJldClcXG40NDM2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuNDQzNzpcXHRcXG40NDM4OlxcdFxcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVxcdTAwM2VjaGlwX2lkKTtcXG40NDM5OlxcdFxcdGlmICghaW5mbylcXG40NDQwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjQ0NDE6XFx0XFxuNDQ0MjpcXHRcXHQvKiBVcGRhdGUgdGhlIGNvbXBhdGlibGUgaW5mbyB3aXRoIHRoZSBwcm9iZWQgb25lICovXFxuNDQ0MzpcXHRcXHRkZXYtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjQ0NDQ6XFx0XFxuNDQ0NTpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldiwgXFxcImZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDc6MDA6MDguMTQ0MzY3MjYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTk2NjIwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwqKlxuXG5Pa2F5LCBzbyBJIHNlZSBhIGZ1bmN0aW9uIGNhbGw6IGBrc3pfc3dpdGNoX2RldGVjdChkZXYpYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbyBpcyBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGRlZmluaXRpb24gb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGlzIGRyaXZlciBvciBzeXN0ZW0uIFdoYXQgYXJlIHRoZSBpbnB1dHM/IFdoYXQncyB0aGUgZXhwZWN0ZWQgb3V0cHV0IG9yIHNpZGUgZWZmZWN0cz8gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBoYXJkd2FyZSBhY2Nlc3NlcywgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBvciBhbnkgc3RhdGUgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBcImRldGVjdFwiIG1lYW5zIGluIHRoaXMgY29udGV4dCDigJMgaXMgaXQgYW4gaW5pdGlhbGl6YXRpb24sIGEgcG9sbGluZyBtZWNoYW5pc20sIG9yIHNvbWV0aGluZyBtb3JlIGFjdGl2ZT8gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJuYWxzIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAgaXMgdGhlIG5leHQsIGNydWNpYWwgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjExLjA2NDAzMjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM1ODQ0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzE1OD1ib29sIGtzel9nZXRfZ2JpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxNzUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzE3NjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz00Mzk2PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NDMzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjQ0MzQ6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NDM1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjExLjQzNzYyMDYxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA0ODMzODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHJlYWRpbmcgYGtzel9zd2l0Y2hfZGV0ZWN0YDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE9iamVjdGl2ZSoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGlzIGNsZWFyOiBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBga3N6X3N3aXRjaF9kZXRlY3RgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyogd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2Ygd2hhdGV2ZXIgc3lzdGVtIGl0J3MgYSBwYXJ0IG9mLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyBkZXRlY3RpbmcsIGhvdyBpdCdzIGRvaW5nIGl0LCBhbmQgd2h5IHRoaXMgZGV0ZWN0aW9uIGlzIHNpZ25pZmljYW50LiBHaXZlbiB0aGUgbmFtZSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUga2luZCBvZiBzd2l0Y2gtcmVsYXRlZCBldmVudCBvciBzdGF0ZSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgS1NaIGNoaXAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgbmFtZSwgaW4gdGhlIGZ1bmN0aW9uJ3MgY29tbWVudHMgKGlmIGFueSksIGFuZCB0aGVuIGJ5IHJlYWRpbmcgdGhlIGNvZGUgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjE3LjA0MjQ1NjczNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzE3NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzE3NjpcXHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzE3NzpcXHR7XFxuMzE3ODpcXHRcXHR1OCBpZDEsIGlkMiwgaWQ0O1xcbjMxNzk6XFx0XFx0dTE2IGlkMTY7XFxuMzE4MDpcXHRcXHR1MzIgaWQzMjtcXG4zMTgxOlxcdFxcdGludCByZXQ7XFxuMzE4MjpcXHRcXG4zMTgzOlxcdFxcdC8qIHJlYWQgY2hpcCBpZCAqL1xcbjMxODQ6XFx0XFx0cmV0ID0ga3N6X3JlYWQxNihkZXYsIFJFR19DSElQX0lEMCwgXFx1MDAyNmlkMTYpO1xcbjMxODU6XFx0XFx0aWYgKHJldClcXG4zMTg2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzE4NzpcXHRcXG4zMTg4OlxcdFxcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XFxuMzE4OTpcXHRcXHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcXG4zMTkwOlxcdFxcbjMxOTE6XFx0XFx0c3dpdGNoIChpZDEpIHtcXG4zMTkyOlxcdFxcdGNhc2UgS1NaODRfRkFNSUxZX0lEOlxcbjMxOTM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xcbjMxOTQ6XFx0XFx0XFx0YnJlYWs7XFxuMzE5NTpcXHRcXHRjYXNlIEtTWjg3X0ZBTUlMWV9JRDpcXG4zMTk2OlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xcbjMxOTc6XFx0XFx0XFx0XFx0dTggdmFsO1xcbjMxOTg6XFx0XFxuMzE5OTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XFxuMzIwMDpcXHRcXG4zMjAxOlxcdFxcdFxcdFxcdGtzel9yZWFkOChkZXYsIEtTWjhfUE9SVF9TVEFUVVNfMCwgXFx1MDAyNnZhbCk7XFxuMzIwMjpcXHRcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXFxuMzIwMzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XFxuMzIwNDpcXHRcXHRcXHR9IGVsc2UgaWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk0KSB7XFxuMzIwNTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk0X0NISVBfSUQ7XFxuMzIwNjpcXHRcXHRcXHR9IGVsc2Uge1xcbjMyMDc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIwODpcXHRcXHRcXHR9XFxuMzIwOTpcXHRcXHRcXHRicmVhaztcXG4zMjEwOlxcdFxcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxcbjMyMTE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4OF9DSElQX0lEXzYzKVxcbjMyMTI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODhYM19DSElQX0lEO1xcbjMyMTM6XFx0XFx0XFx0ZWxzZVxcbjMyMTQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIxNTpcXHRcXHRcXHRicmVhaztcXG4zMjE2OlxcdFxcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XFxuMzIxNzpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxcbjMyMTg6XFx0XFx0XFx0ICAgIGlkMiA9PSBLU1o4ODk1X0NISVBfSURfOTVSKVxcbjMyMTk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODg5NV9DSElQX0lEO1xcbjMyMjA6XFx0XFx0XFx0ZWxzZVxcbjMyMjE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIyMjpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcXHUwMDI2aWQ0KTtcXG4zMjIzOlxcdFxcdFxcdGlmIChyZXQpXFxuMzIyNDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjMyMjU6XFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IFNXX0tTWjg4NjQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjE3LjA0MjczNzA2NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk4NDEzMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGtzel9yZWFkMTZgIEZ1bmN0aW9uIENhbGwqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGlzIGRyYXduIHRvIHRoZSBga3N6X3JlYWQxNmAgY2FsbC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBkYXRhIGdyYWIgaGFwcGVucy4gSWYgaXQgZmFpbHMsIHRoYXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBlcnJvciwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoYXQgZ3JhY2VmdWxseS4gQnV0IHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHdoYXQgaGFwcGVucyBpZiBpdCAqZG9lc24ndCogZmFpbC5cblxuTm93LCBpZiB3ZSdyZSB1c2luZyB0aGUgYGkyYy1zdHViYCBkZXZpY2UgaW5zdGFudGlhdGlvbiwgdGhlIHZhbHVlcyBmcm9tIGBrc3pfcmVhZDE2YCBhcmVuJ3QgZ29pbmcgdG8gYmUgdGhlIHJlYWwgZGVhbCwgYXJlIHRoZXk/IFRoZSBzdHViJ3MgbWVtb3J5IGlzIHdoYXQgd2lsbCBiZSByZWFkLiBUaGF0IG1lYW5zIHRoZSByZWFkcyBhcmUgdmVyeSBsaWtlbHkgcmV0dXJuaW5nIHplcm8sIG9yIHNvbWUgb3RoZXIgaW5pdGlhbCB2YWx1ZS4gU28sIGlmIHdlIGdldCBhIHplcm8sIGBpZDFgIHdpbGwgYmUgemVyby4gV2hpY2ggbWFrZXMgbWUgd29uZGVyIHdoYXQgdGhlIGV4cGVjdGVkIG5vbi16ZXJvIHZhbHVlcyBhcmUsIGluIHRoZSByZWFsLXdvcmxkIHNjZW5hcmlvLlxuXG5MZXQncyBzZWUgd2hhdCBoYXBwZW5zIG5leHQgaW4gdGhlIGBrc3pfc3dpdGNoX2RldGVjdGAgc2VxdWVuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29kZSBpbnRlcnByZXRzIHRoZSB2YWx1ZSByZXR1cm5lZCBhbmQgZGV0ZXJtaW5lcyBpZiBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGRldGVjdGVkIGEgc3dpdGNoLiBXaGVyZSBkb2VzIGl0IGdvIGZyb20gaGVyZT8gV2hhdCBpcyBpdCBhY3R1YWxseSBsb29raW5nIGZvcj8gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1YnNlcXVlbnQgc3RlcHMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5ODAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjIxLjI0MTE1MjQzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzIyNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzIyNjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XFxuMzIyNzpcXHRcXHRcXHRicmVhaztcXG4zMjI4OlxcdFxcdGRlZmF1bHQ6XFxuMzIyOTpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDMyKGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQzMik7XFxuMzIzMDpcXHRcXHRcXHRpZiAocmV0KVxcbjMyMzE6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XFxuMzIzNDpcXHRcXHRcXHRpZDMyIFxcdTAwMjY9IH4weEZGO1xcbjMyMzU6XFx0XFxuMzIzNjpcXHRcXHRcXHRzd2l0Y2ggKGlkMzIpIHtcXG4zMjM3OlxcdFxcdFxcdGNhc2UgS1NaOTQ3N19DSElQX0lEOlxcbjMyMzg6XFx0XFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuMzIzOTpcXHRcXHRcXHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcXG4zMjQwOlxcdFxcdFxcdGNhc2UgS1NaOTU2N19DSElQX0lEOlxcbjMyNDE6XFx0XFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuMzI0MjpcXHRcXHRcXHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcXG4zMjQzOlxcdFxcdFxcdGNhc2UgTEFOOTM3MV9DSElQX0lEOlxcbjMyNDQ6XFx0XFx0XFx0Y2FzZSBMQU45MzcyX0NISVBfSUQ6XFxuMzI0NTpcXHRcXHRcXHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcXG4zMjQ2OlxcdFxcdFxcdGNhc2UgTEFOOTM3NF9DSElQX0lEOlxcbjMyNDc6XFx0XFxuMzI0ODpcXHRcXHRcXHRcXHQvKiBMQU45NjQ2IGRvZXMgbm90IGhhdmUgaXRzIG93biBjaGlwIGlkLiAqL1xcbjMyNDk6XFx0XFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXFxuMzI1MDpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBpZDMyO1xcbjMyNTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzI1MjpcXHRcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4zMjUzOlxcdFxcdFxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCxcXG4zMjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbjMyNTU6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4zMjU2OlxcdFxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzI1NzpcXHRcXG4zMjU4OlxcdFxcdFxcdFxcdGlmIChpZDQgPT0gU0tVX0lEX0tTWjg1NjMpXFxuMzI1OTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NTYzX0NISVBfSUQ7XFxuMzI2MDpcXHRcXHRcXHRcXHRlbHNlIGlmIChpZDQgPT0gU0tVX0lEX0tTWjk1NjMpXFxuMzI2MTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5NTYzX0NISVBfSUQ7XFxuMzI2MjpcXHRcXHRcXHRcXHRlbHNlXFxuMzI2MzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQ7XFxuMzI2NDpcXHRcXG4zMjY1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMyNjY6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zMjY3OlxcdFxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuMzI2ODpcXHRcXHRcXHRcXHRcXHRcXFwidW5zdXBwb3J0ZWQgc3dpdGNoIGRldGVjdGVkICV4KVxcXFxuXFxcIiwgaWQzMik7XFxuMzI2OTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zMjcwOlxcdFxcdFxcdH1cXG4zMjcxOlxcdFxcdH1cXG4zMjcyOlxcdFxcdHJldHVybiAwO1xcbjMyNzM6XFx0fVxcbjMyNzQ6XFx0XFxuMzI3NTpcXHQvKiBCYW5kd2lkdGggaXMgY2FsY3VsYXRlZCBieSBpZGxlIHNsb3BlL3RyYW5zbWlzc2lvbiBzcGVlZC4gVGhlbiB0aGUgQmFuZHdpZHRoXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjIxLjI0MTk2MDYwN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzAyNjY0MDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hpcCBJRCBEZXRlY3Rpb24gYW5kIFN5emthbGxlcidzIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hpcCBJRCBkZXRlY3Rpb24gY29kZS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgYGlkMWAgcmVhZHMgMCwgd2UganVtcCBpbnRvIHRoZSBgZGVmYXVsdDpgIGNhc2UuIFRoZW4gaXQgcmVhZHMgYGlkMzJgIHVzaW5nIGBrc3pfcmVhZDMyYC4gSWYgYGlkMzJgIGhhcHBlbnMgdG8gYmUgMCwgYSBiaXRtYXNrIGNsZWFycyB0aGUgbG93ZXIgOCBiaXRzLCBhbmQgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgYWN0cyBvbiBgaWQzMmAuIFNpbmNlIDAgaXNuJ3Qgb25lIG9mIHRoZSByZWNvZ25pemVkIGNoaXAgSURzIChsaWtlIGBLU1o5NDc3X0NISVBfSURgKSwgaXQgcHJpbnRzIFwidW5zdXBwb3J0ZWQgc3dpdGNoIGRldGVjdGVkIDApXCIgYW5kIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0J3MgYSBwcmV0dHkgc3RhbmRhcmQgZXJyb3IuXG5cblRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgd2UgY2FuJ3QgaW5zdGFudGlhdGUgdGhpcyBkcml2ZXIgdXNpbmcgYGkyYy1zdHViYCB1bmxlc3Mgd2Ugc29tZWhvdyBwcmUtbG9hZCB0aGUgc3R1YidzIG1lbW9yeSB3aXRoIHRoZSAqY29ycmVjdCogY2hpcCBJRC4gTm93LCBjYW4gd2UgYWN0dWFsbHkgZG8gdGhhdCB3aXRoIGBpMmMtc3R1YmA/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBJIHJlbWVtYmVyIGBpMmNzZXRgIGZyb20gdXNlci1zcGFjZSBjYW4gd3JpdGUgdG8gaXRzIHJlZ2lzdGVycyBiZWZvcmUgdGhlIGRyaXZlciBiaW5kcywgYW5kIEkgdGhpbmsgc3l6a2FsbGVyIGNhbiBhbHNvIHdyaXRlIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC8uLi5gIG9yIGV2ZW4gYC9kZXYvaTJjLTBgIHRvIHBvcHVsYXRlIHRoZSBgaTJjLXN0dWJgJ3MgbWVtb3J5LlxuXG5CdXQgaGFuZyBvbi4uLiBDYW4gc3l6a2FsbGVyICplYXNpbHkqIHByZS1wb3B1bGF0ZSBhbiBgaTJjLXN0dWJgIHdpdGggc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGJlZm9yZSBwcm9iaW5nIGEgZHJpdmVyPyBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vdCBhIGZ1bmN0aW9uIGxpa2UgYHN5el9pMmNfc2V0dXBgIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgdGhpcy4gSSB0aG91Z2h0IEkgcmVtZW1iZXJlZCBzb21ldGhpbmcgbGlrZSBpdC4uLiBIbW0sIG1heWJlIHN5emthbGxlciBjYW4gZnV6eiBJMkMsIGJ1dCB2aWEgYHZoY2lgIG9yIGBpMmMtZGV2YC4gRG9lcyBpdCBoYXZlIGEgXCJ2aXJ0dWFsIEkyQyBhZGFwdGVyXCI/IE5vdCB0aGF0IEkgcmVjYWxsLiBJdCBoYXMgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBzaW1pbGFyIG9uZXMgZm9yIFdpRmkuXG5cbkZvciBJMkMsIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGRlZGljYXRlZCBwc2V1ZG8tZGV2aWNlIHRoYXQgYWxsb3dzIGFyYml0cmFyeSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGZyb20gdGhlIGtlcm5lbCdzIHBlcnNwZWN0aXZlLiBJdCdzIGZydXN0cmF0aW5nIGJlY2F1c2UgaXQgd291bGQgYmUgcGVyZmVjdCBmb3IgdGhpcyBzaXR1YXRpb24uIEJ1dCB3YWl0LCBJJ20gc2Vjb25kLWd1ZXNzaW5nIG15c2VsZi4gTWF5YmUgdGhlcmUgKmlzKiBhIGBzeXpfaTJjX3NldHVwYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkyQyBmdXp6aW5nIGlzIHByZXNlbnQgaW4gc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE4OCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjI4Ljk0NDYyODM2MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMDA0MzE4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X2kyY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjMyLjA3NDY4MDg4NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ3NDE4MzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBzcGVha2luZyBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipDb25zaWRlcmluZyBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UgKFNQSSkqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gd2hhdCBhYm91dCBTUEkgZm9yIHRoaXMgYXBwbGljYXRpb24/IEdpdmVuIHRoZSBjb25zdHJhaW50cyBhbmQgdGhlIHBlcmZvcm1hbmNlIGdvYWxzIHdlJ3JlIGFpbWluZyBmb3IsIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBwcm9zIGFuZCBjb25zIGluIG15IGhlYWQuIFNQSSdzIHNpbXBsaWNpdHkgaXMgZGVmaW5pdGVseSBhdHRyYWN0aXZlLCBlc3BlY2lhbGx5IGZyb20gYSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS4gVGhlIGNsb2NrZWQsIHN5bmNocm9ub3VzIG5hdHVyZSBpcyBnZW5lcmFsbHkgcm9idXN0IGFuZCBwcmV0dHkgZWFzeSB0byBtYW5hZ2Ugd2l0aCBzdGFuZGFyZCBtaWNyb2NvbnRyb2xsZXJzLiBQbHVzLCBpdCdzIHR5cGljYWxseSBmYXN0ZXIgdGhhbiBJMkMsIHdoaWNoIGlzIGEgbWFqb3IgcG9pbnQgdG8gY29uc2lkZXIgZ2l2ZW4gdGhlIGRhdGEgdHJhbnNmZXIgcmVxdWlyZW1lbnRzLiBIb3dldmVyLCBpcyB0aGUgcmVxdWlyZWQgdGhyb3VnaHB1dCBhY2hpZXZhYmxlIGdpdmVuIHRoYXQgd2UgbmVlZCB0byBleGNoYW5nZSBkYXRhIHdpdGggbXVsdGlwbGUgc2xhdmVzPyBXZSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBjbG9jayBzcGVlZHMsIHRoZSBudW1iZXIgb2Ygc2xhdmUgc2VsZWN0cywgYW5kIHBvdGVudGlhbCBidXMgY29udGVudGlvbi4gVGhlIG11bHRpLW1hc3RlciBzdXBwb3J0IGlzIG5vdCBhcyBjb21tb24sIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5IGlmIHdlIG5lZWQgdG8gZXhwYW5kIHRoZSBjYXBhYmlsaXRpZXMgZG93biB0aGUgcm9hZC4gQWxyaWdodCwgdGhlIHNpbXBsaWNpdHkgb2YgaGFyZHdhcmUgaW50ZWdyYXRpb24gaXMgYXBwZWFsaW5nOyB0aGUgc3BlZWQgbWlnaHQgYmUgc3VmZmljaWVudDsgYnV0IG11bHRpcGxlIHNsYXZlcyBtaWdodCBjYXVzZSBpc3N1ZXMsIGxldCdzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHNpZ25hbCBpbnRlZ3JpdHkgaXNzdWVzIGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBhZGRlZCBoYXJkd2FyZSBvdmVyaGVhZC4gTGV0IG1lIGNvbXBhcmUgaXQgdG8gSTJDIGFuZCBDQU4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTgxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDozNS44MjIxMDMzNDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjE1NjY2NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9zcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDozOC4zNDM2ODM1MTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxNjM2NDY5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIgaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQ2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIgaW4gc3l6a2FsbGVyP1wiIEl0IHNlZW1zIGxpa2UgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGBpMmMtc3R1YmAgcmVsYXRlZC4gVXN1YWxseSwgdGhlc2UgYXJlIG9mZi1saW1pdHMgdW5sZXNzIHRoZXJlJ3MgYW4gZXhwbGljaXQgZW11bGF0aW9uIHBhdGguIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIGFyZSBhIG5vLWdvLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgcmVhY2hhYmxlP1xuXG5JdCdzIGFuIEkyQy9TUEkvU01JIGRldmljZSBkcml2ZXIuIEkgaW1tZWRpYXRlbHkgdGhpbmsgdGhhdCB3aXRob3V0IHRoZSByaWdodCBoYXJkd2FyZSBvciBhIGdvb2QgZW11bGF0b3IsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgcHJvYmFibHkgZmFpbC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBmYWlsIGF0IGBrc3pfc3dpdGNoX2RldGVjdGAgYmVjYXVzZSBpdCdzIHJlYWRpbmcgdGhlIGNoaXAgSUQsIGFuZCB3ZSdkIG5lZWQgdG8gcHJvdmlkZSBhIHZlcnkgc3BlY2lmaWMgdmFsdWUuIFN5emthbGxlciwgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgZG9lc24ndCBpbmhlcmVudGx5IGtub3cgaXQgbmVlZHMgdG8gd3JpdGUgYEtTWjk4OTdfQ0hJUF9JRGAgdG8gYSBzcGVjaWZpYyByZWdpc3RlciB2aWEgSTJDIGJlZm9yZSB0aGUgcHJvYmUgY2FuIGV2ZW4gKmJlZ2luKi4gU28sIHRoZSBwcm9iZSBpcyBsaWtlbHkgdG8gZmFpbC5cblxuVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAsIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgYGtzel9zd2l0Y2hfZGV0ZWN0YCBzdWNjZWVkcy4gU28gaWYgdGhlIGRldGVjdGlvbiBmYWlscywgdGhlIGRldmljZSBkb2Vzbid0IHJlZ2lzdGVyLCBhbmQgdGhlIHN1YnNlcXVlbnQgY29kZSBwYXRocyB0aGF0IHVzZSBgc2dtaWlfcG9ydGAsIGxpa2UgYGtzejk0Nzdfc2V0dXBgLCBhcmUgbmV2ZXIgZXZlbiBleGVjdXRlZC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBiZWNhdXNlIHdpdGhvdXQgdGhlIGhhcmR3YXJlIHRoZSBkZXRlY3Rpb24gd2lsbCBmYWlsLlxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgZm9yIG90aGVyIGVudHJ5IHBvaW50cyB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ291bGQgdGhpcyBiZSBpbnN0YW50aWF0ZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSBhbmQgc29tZSBkdW1teSBTUEkvSTJDIGNvbnRyb2xsZXIgdGhhdCBzeXprYWxsZXIgY29udHJvbHM/IEkgZG9uJ3QgdGhpbmsgc3l6a2FsbGVyICpjdXJyZW50bHkqIGhhcyBhIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB3aGVyZSBpdCBjYW4gcmV0dXJuIHNwZWNpZmljIHZhbHVlcyB0byBgc3BpX3N5bmNgIG9yIGBpMmNfdHJhbnNmZXJgLCBzbyB0aGF0J3MgcHJvYmFibHkgYSBkZWFkIGVuZC5cblxuV2FpdCwgdGhlcmUgKmlzKiBgQ09ORklHX0kyQ19TVFVCYC4gSWYgc3l6a2FsbGVyIGNvdWxkIHdyaXRlIHRvIGAvZGV2L2kyYy1YYCBiZWZvcmUgYmluZGluZyB0aGUgZHJpdmVyLCBpdCAqY291bGQqIHRoZW9yZXRpY2FsbHkgc2V0IHRoZSBjaGlwIElELiBCdXQgdGhlIGZ1enplciB3b3VsZG4ndCBrbm93IGl0ICpuZWVkcyogdG8uIEl0IHdvdWxkIGhhdmUgdG8gcmFuZG9tbHkgd3JpdGUgdGhlICpleGFjdCogY2hpcCBJRCB0byB0aGUgKmV4YWN0KiByZWdpc3RlciBhbmQgKnRoZW4qIGJpbmQgdGhlIGRyaXZlci4gVGhlIGNoYW5jZXMgb2YgdGhhdCBhcmUgcHJhY3RpY2FsbHkgemVyby5cblxuV2FpdCwgd2hhdCAqZXhhY3RseSogZGlkIHRoZSBwYXRjaCBkbz8gT2gsIHJpZ2h0LCBpdCdzIGp1c3QgYWRkaW5nIGAuc2dtaWlfcG9ydCA9IDdgIHRvIGEgc3RydWN0OlxuYGBgY1xuQEAgLTE1OTEsNiArMTU5MSw3IEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbiBcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuK1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4gXHR9LFxuIFxuIFx0W0tTWjk4OTNdID0ge1xuYGBgXG5UaGlzIGlzIGEgZGF0YS1kcml2ZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIEtTWjk4OTcgc3dpdGNoIGNoaXAuIEl0J3MgaGFyZHdhcmUtc3BlY2lmaWMuIEV2ZW4gKmlmKiB3ZSBzb21laG93IHJlYWNoZWQgdGhpcyBjb2RlLCBhbGwgaXQncyBkb2luZyBpcyBzZXR0aW5nIGEgcHJvcGVydHkgZm9yIGEgc3BlY2lmaWMgY2hpcC4gU2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgaGFyZHdhcmUgYW5kIGNhbid0IGVhc2lseSBlbXVsYXRlIGl0LCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBkZWFkIGVuZC5cbkxldCBtZSBiZSBjZXJ0YWluIHRoYXQgaXMgdGhlIG9ubHkgcGxhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDg1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjU0LjUwNzMzMjg3MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzOTYyNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtzel9zd2l0Y2hfY2hpcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o4ODYzX2R0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwMS1cXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6ODg2M1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjIwMjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg4WDNdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwMy1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwNS1cXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6ODg3M1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjIwNjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg4WDNdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwNy1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtzejk0NzdfZHRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTEtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk0NzdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5MjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk0NzddXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTkzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTUtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTZcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5NjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTk3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTktXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDA6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDMtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDQ6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDctXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk1NjNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDg6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTEtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTI6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTUtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTY6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTktXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk1NjdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjA6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjMtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjQ6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTEyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIGtzejg4NzNfcmVnaXN0ZXJfc2V0ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxMjQ4OmNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xMjQ5LVxcdFtLU1o4NDYzXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzEtfTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTMyOkVYUE9SVF9TWU1CT0xfR1BMKGtzel9zd2l0Y2hfY2hpcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTkzND1zdGF0aWMgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmtzel9sb29rdXBfaW5mbyh1bnNpZ25lZCBpbnQgcHJvZF9udW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzg6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoa3N6X3N3aXRjaF9jaGlwcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzk6XFx0XFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXAgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDAxPXBoeV9pbnRlcmZhY2VfdCBrc3pfZ2V0X3htaWkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGJvb2wgZ2JpdCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDAyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW107XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDAzLWludCBrc3pfc3dpdGNoX21hY2FkZHJfZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0yMjY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6X2R0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjI4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMjk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NDYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzMC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjMyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NzY1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMzM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NzY1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzNC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjM2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4Nzk0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMzc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4Nzk0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4Nzk1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4Nzk1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4OFgzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODY0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4ODY0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjUyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODczXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4OFgzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjU2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODk1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNTc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4ODk1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjYwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NDc3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODk2XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODk3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjcyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNzM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjc2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NTYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNzc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjgwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NTY3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjkyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcwXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyOTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcwXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjk2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyOTc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcxXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzAwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcyXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcyXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwMi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzczXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzczXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45Mzc0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45Mzc0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxMC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzEyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45NjQ2XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxNC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDo1NC42OTEzMTA2ODlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1Njk2ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZWFoLCBpdCdzIGp1c3QgZGVhbGluZyB3aXRoIGEgaGFyZHdhcmUgcHJvcGVydHkgdGFibGUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgS1NaOTg5N2AgY2hpcC4gTm93LCB0aGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB0aGUga2luZCBvZiBlbnZpcm9ubWVudHMgSSB0eXBpY2FsbHkgd29yayBpbiwgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlcmUncyBubyB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlIHBhdGggd2l0aG91dCBzb21lIHZlcnkgc3BlY2lmaWMsIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGlzIHN3aXRjaC4gQW5kLCBmcmFua2x5LCB3ZSBkb24ndCBoYXZlIHRoYXQgZW11bGF0aW9uIGluIHBsYWNlLlxuXG5FdmVuIGlmIGJ5IHNvbWUgbWlyYWNsZSB3ZSBjb3VsZCBpbnN0YW50aWF0ZSB0aGlzIHRoaW5nLCBhbGwgdGhpcyBwcm9wZXJ0eSBjaGFuZ2UgYW1vdW50cyB0byBpcyBhIGNvbnN0YW50IGFkZGl0aW9uLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbm92ZWwgb3IgaW50ZXJlc3RpbmcgZnV6emluZyBzdXJmYWNlLiBUaGVyZWZvcmUsIGdpdmVuIGFsbCBvZiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCB0byB0ZXN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjE4LCJPdXRwdXRUb2tlbnMiOjE0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMTowMC4xNDgyODA2MDJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSAoYC5zZ21paV9wb3J0ID0gN2ApIHRvIHRoZSBgS1NaOTg5N2AgY2hpcCBkYXRhIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIEkyQy9TUEkvU01JIGhhcmR3YXJlIHRvIHByb2JlIHN1Y2Nlc3NmdWxseSwgYXMgaXQgcmVhZHMgYW5kIHZlcmlmaWVzIHRoZSBjaGlwIElEIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbiAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkuIFdpdGhvdXQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBzcGVjaWZpYyBzd2l0Y2ggY2hpcCwgdGhlIGNvZGUgcGF0aHMgdXRpbGl6aW5nIHRoaXMgcHJvcGVydHkgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSAoYC5zZ21paV9wb3J0ID0gN2ApIHRvIHRoZSBgS1NaOTg5N2AgY2hpcCBkYXRhIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIEkyQy9TUEkvU01JIGhhcmR3YXJlIHRvIHByb2JlIHN1Y2Nlc3NmdWxseSwgYXMgaXQgcmVhZHMgYW5kIHZlcmlmaWVzIHRoZSBjaGlwIElEIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbiAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkuIFdpdGhvdXQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBzcGVjaWZpYyBzd2l0Y2ggY2hpcCwgdGhlIGNvZGUgcGF0aHMgdXRpbGl6aW5nIHRoaXMgcHJvcGVydHkgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowr2ld9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 06:48:15 +0000 UTC FinishedAt: 2026-07-03 07:01:01 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZTg0MTJjYWJhYzJhMWZmMTA4OWQxOTFkOThhNjc4YjYxMzlhYzM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNjo1OTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNTkxLDYgJiM0MzsxNTkxLDcgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuIFx0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuIFx0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4gXHR9LFxuIFxuIFx0W0tTWjk4OTNdID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlODQxMmNhYmFjMmExZmYxMDg5ZDE5MWQ5OGE2NzhiNjEzOWFjMzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDA2OjU5OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jCkBAIC0xNTkxLDYgJiM0MzsxNTkxLDcgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0gewogCQkuaW50ZXJuYWxfcGh5CT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsCiAJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKIAkJLmdiaXRfY2FwYWJsZQk9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSwKJiM0MzsJCS5zZ21paV9wb3J0ID0gNywKIAl9LAogCiAJW0tTWjk4OTNdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBLU1o5ODk3IFNHTUlJIFBvcnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5JiMzOTtyZSBhZGRpbmcgYC5zZ21paV9wb3J0ID0gNyxgIHRvIHRoZSBgS1NaOTg5N2AgZW50cnkgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoYXQgYGtzel9jb21tb24uY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoaXMgYHNnbWlpX3BvcnRgIGZpZWxkICpkb2VzKi4gSSBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBsb2dpYy4gSXMgaXQganVzdCBhIGNvbmZpZ3VyYXRpb24gdmFsdWU/IERvZXMgaXQgYWZmZWN0IHJlZ2lzdGVyIGFjY2Vzcz8gSXMgaXQgZXZlbiAqdXNlZCogYnkgdGhlIGRyaXZlciwgb3IgaXMgaXQganVzdCBzaXR0aW5nIHRoZXJlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhpcyBwb3J0IG51bWJlciBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBieSB0aGUgZXhpc3RpbmcgY29kZS4gQXJlIHRoZXJlIGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgdGhhdCBzcGVjaWZpYyBwb3J0IG51bWJlciBhbmQgYXNzb2NpYXRlZCBTR01JSSBjb25maWd1cmF0aW9uPyBJdCYjMzk7cyBlYXN5IGVub3VnaCB0byBhZGQgYSB2YWx1ZSwgYnV0IEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgdGhpcyBhZGRpdGlvbiBpcyBsb2dpY2FsbHkgc291bmQgYW5kIHNlcnZlcyBhbiBhY3R1YWwgcHVycG9zZSB3aXRoaW4gdGhlIGN1cnJlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBqdXN0IGEgcGxhY2Vob2xkZXIsIGJ1dCBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGV2aWNlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggbWFrZXMgc2Vuc2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZ21paV9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTkxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE5My1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjE5NDpcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xOTUtXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTI1Nz1zdGF0aWMgaW50IGtzejk0NzdfcGNzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYwLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjYxOlx0aW50IHBvcnQgPSBrc3pfZ2V0X3NnbWlpX3BvcnQoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTI2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMTU9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTMxNi17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMTc6XHRpbnQgcG9ydCA9IGtzel9nZXRfc2dtaWlfcG9ydChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzE4LVx0c3RydWN0IGtzel9wb3J0ICpwID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTExOTQ9c3RhdGljIHZvaWQga3N6OTQ3N19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjEyMDU6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNi1cdFx0c3RydWN0IGtzel9wb3J0ICpwID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTE1MjA9c3RhdGljIGludCBrc3o5NDc3X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNTQ1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTU0NjpcdGlmIChrc3pfaGFzX3NnbWlpX3BvcnQoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTU0Ny1cdFx0cmV0ID0ga3N6OTQ3N19wY3NfY3JlYXRlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjAyNj1rc3o5NDc3X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjAzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjIwMzM6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBkcC1cdTAwM2VpbmRleCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMDM0LVx0ICAgIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTI0OD1jb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTUyMC1cdFx0LnB0cF9jYXBhYmxlID0gdHJ1ZSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE1MjE6XHRcdC5zZ21paV9wb3J0ID0gNyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1MjItXHRcdC53cl90YWJsZSA9IFx1MDAyNmtzejk0NzdfcmVnaXN0ZXJfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTMtXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MTU5NDpcdFx0LnNnbWlpX3BvcnQgPSA3LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTU5NS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTkyNi1cdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTI3Olx0XHQuc2dtaWlfcG9ydCA9IDcsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTI4LVx0XHQud3JfdGFibGUgPSBcdTAwMjZrc3o5NDc3X3JlZ2lzdGVyX3NldCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMDExPXZvaWQga3N6X3JfbWliX3N0YXRzNjQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA1OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIwNjA6XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcGh5X2VycmF0YV85NDc3IFx1MDAyNlx1MDAyNiAha3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA2MS1cdFx0cmV0ID0ga3N6OTQ3N19lcnJhdGFfbW9uaXRvcihkZXYsIHBvcnQsIHJhdy1cdTAwM2V0eF9sYXRlX2NvbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzEyMz1ib29sIGtzel9waHlsaW5rX25lZWRfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzQtXHQvKiBObyBuZWVkIHRvIGNvbmZpZ3VyZSBYTUlJIGNvbnRyb2wgcmVnaXN0ZXIgd2hlbiB1c2luZyBTR01JSS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMxMzU6XHRpZiAoa3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD01Nz1zdHJ1Y3Qga3N6X2NoaXBfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTctXHRib29sIHB0cF9jYXBhYmxlO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6OTg6XHR1OCBzZ21paV9wb3J0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTktXHRjb25zdCBzdHJ1Y3QgcmVnbWFwX2FjY2Vzc190YWJsZSAqd3JfdGFibGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NzQ2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19sYW45Mzd4X3R4X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NTI6c3RhdGljIGlubGluZSBpbnQga3N6X2dldF9zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU0Olx0cmV0dXJuIGRldi1cdTAwM2VpbmZvLVx1MDAzZXNnbWlpX3BvcnQgLSAxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU1LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc1NzpzdGF0aWMgaW5saW5lIGJvb2wga3N6X2hhc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU5Olx0cmV0dXJuIGRldi1cdTAwM2VpbmZvLVx1MDAzZXNnbWlpX3BvcnQgXHUwMDNlIDA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjAtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzYxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzYyOnN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc2My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NjQ6XHRyZXR1cm4gZGV2LVx1MDAzZWluZm8tXHUwMDNlc2dtaWlfcG9ydCA9PSBwb3J0ICYjNDM7IDE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLU1o5ODk3IFNHTUlJIFBvcnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYC5zZ21paV9wb3J0ID0gN2AgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgd2l0aGluIHRoZSBga3N6X3N3aXRjaF9jaGlwc1tdYCBhcnJheS4gVGhhdCBkaXJlY3RseSBpbXBhY3RzIGBrc3pfaGFzX3NnbWlpX3BvcnQoZGV2KWAgYW5kIGBrc3pfaXNfc2dtaWlfcG9ydChkZXYsIDYpYCwgbWFraW5nIHRoZW0gcmV0dXJuIHRydWUgZm9yIHRoZSBLU1o5ODk3LiBUaGlzIHdpbGwgcmlwcGxlIHRocm91Z2ggc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdGhlIGRyaXZlcjogYGtzejk0Nzdfc2V0dXBgLCBga3N6OTQ3N19waHlsaW5rX2dldF9jYXBzYCwgYGtzejk0NzdfcGh5bGlua19tYWNfc2VsZWN0X3Bjc2AsIGBrc3pfcl9taWJfc3RhdHM2NGAsIGFuZCBga3N6X3BoeWxpbmtfbmVlZF9jb25maWdgLiBTbywgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIGEgRFNBIHN3aXRjaC4KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgdXN1YWxseSBhY2Nlc3NlZCB0aHJvdWdoIFNQSSwgSTJDLCBvciBNRElPLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgZW11bGF0aW9uIGZvciBEU0Egc3dpdGNoZXMgb3IgaWYgdGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbS4gVGhlc2UgTWljcm9jaGlwIEtTWiBzZXJpZXMgc3dpdGNoZXMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZWFzeSB0byBmdXp6IHVubGVzcyB3ZSBoYXZlIGEgdmlydHVhbCBidXMgbGlrZSBJMkMvU1BJIHRoYXQgc3l6a2FsbGVyIGNhbiBpbmplY3QgaW50by4gT3IsIHBlcmhhcHMgaXQmIzM5O3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluay9zeXNmcyBzb21laG93LgoKV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGluamVjdGluZyBJMkMvU1BJIGRldmljZXMgdGhyb3VnaCBgdmhjaWAgb3Igc2ltaWxhci4gTWF5YmUgdGhpcyAqaXMqIHJlYWNoYWJsZSBhZnRlciBhbGwuIE9yLCBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdgIG9yIGEgc2ltaWxhciBvcHRpb24gaXMgZW5hYmxlZC4gSSBuZWVkIHRvIHNlZSBpZiBpdCBjYW4gYmUgZW5hYmxlZCBhbmQgY2hlY2sgaWYgaXQgaGFzIGEgd2F5IHRvIHBva2UgdGhlIGRyaXZlciB1c2luZyBvbmUgb2YgdGhvc2UgbWVjaGFuaXNtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI0OmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjQxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgSTJDL1NQSSBDb25uZWN0ZWQgU3dpdGNoZXMgd2l0aCBTeXprYWxsZXI6IEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCB0aGlua2luZywgY2FuIHdlIGV2ZW4gKmJlZ2luKiB0byBmdXp6IGl0IHdpdGggc3l6a2FsbGVyPyBUaGUgZHJpdmVyJiMzOTtzIGNvbm5lY3RlZCB2aWEgSTJDL1NQSS9TTUkg4oCTIHRoYXQmIzM5O3MgdGhlIGh1cmRsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyJiMzOTtzIGV4aXN0aW5nIEkyQy9TUEkgY2FwYWJpbGl0aWVzIGJlIGxldmVyYWdlZD8gSXQgZG9lc24mIzM5O3Qgc2VlbSBkaXJlY3RseSBhcHBsaWNhYmxlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIEkyQyBmdXp6aW5nIHByaW1pdGl2ZXMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCwgYnV0IHRoYXQmIzM5O3MgdHlwaWNhbGx5IGZvciB1c2VyLXNwYWNlIGludGVyYWN0aW9ucyAqd2l0aCogYSBkZXZpY2UsIG5vdCB0aGUga2VybmVsLXNpZGUgb3BlcmF0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBVbmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIEkyQyBzdHViIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHBsYWNlLCBpdCYjMzk7cyB0eXBpY2FsbHkgdG91Z2ggdG8gZ2V0IGF0IHRoZXNlIEkyQy9TUEkgZGV2aWNlcy4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGNhbiB3ZSAqaW5zdGFudGlhdGUqIGEgZmFrZSBJMkMgZGV2aWNlPyBUaGUgaWRlYSBiZWluZyBpZiB3ZSBjYW4gaW5qZWN0IG9uZSBvZiB0aG9zZSwgd2UgbWlnaHQgYmUgYWJsZSB0byBzdGFydCBmdXp6aW5nLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHN5emthbGxlciBkaXJlY3RseSBoYW5kbGVzIGdlbmVyaWNhbGx5LiBMb29raW5nIGFnYWluLCBJIGJlbGlldmUgdGhpcyBpcyBwb3NzaWJsZSB2aWEgYHN5c2ZzYCBhbmQgdGhlIGBuZXdfZGV2aWNlYCBjYWxsIG9uIHRoZSBJMkMgYWRhcHRlciwgb3IgcG90ZW50aWFsbHkgd2l0aCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gbWVjaGFuaXNtIHRvIGNyZWF0ZSAqYXJiaXRyYXJ5KiBJMkMvU1BJIGRldmljZXMgdW5sZXNzIHRoZXkmIzM5O3JlIHByZS1kZWZpbmVkIHBzZXVkby1kZXZpY2VzIG9yIHBhcnQgb2YgdGhlIG92ZXJhbGwgZnV6emluZyBzZXR1cC4KCk9rYXksIEkmIzM5O20gcmVhZGluZyB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlcmUmIzM5O3MgYSBub3RlIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBidXQgaXQgc291bmRzIGxpa2UgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlYWNoIGl0IHZpYSBJMkMgYG5ld19kZXZpY2VgIGFuZCBhIGR1bW15IEkyQyBhZGFwdGVyLiBJZiB3ZSBoYXZlIGEgZHVtbXkgYWRhcHRlciwgbGlrZSBgaTJjLXN0dWJgIG9yIGBpMmMtbW9ja2AsIHRoZW4gaXQgKm1pZ2h0KiBiZSByZWFjaGFibGUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGkyYy1zdHViYCBsZXRzIHVzIGJpbmQgKmFueSogSTJDIGRyaXZlciB0byBpdC4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyB0aGUgd2F5IHRvIGluc3RhbnRpYXRlIGEgZGV2aWNlIGZvciBmdXp6aW5nLCB3aGljaCBvcGVucyB0aGluZ3MgdXAuIEl0IHNvdW5kcyBsaWtlIGBpMmMtc3R1YmAgYWxsb3dzIGJpbmRpbmcgYW55IEkyQyBkcml2ZXIgdG8gaXQuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgcGxhbiBpcyB0byBjb250aW51ZSBieSBjaGVja2luZyB0aGUgSTJDIGRyaXZlciBmb3IgdGhpcyBzd2l0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3o5NDc3LWkyYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIEkyQyBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGhpdHRpbmcgYSBzbmFnIHNvbWV3aGVyZSBpbiB0aGUgSTJDIGRyaXZlciByZWFsbS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8sIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBoYXJkd2FyZSBvciB0aW1pbmcgaXNzdWVzLCBpcyB0byBleHBsaWNpdGx5IHZlcmlmeSB0aGUgSTJDIGRyaXZlcuKAmXMgbmFtZS4gVGhpcyBpcyBteSBnby10byBzdGFydGluZyBwb2ludC4gSXTigJlzIGEgZm91bmRhdGlvbmFsIHN0ZXAsIGJlY2F1c2UgaWYgdGhlIGRyaXZlciBpc24mIzM5O3QgbG9hZGluZywgb3IgdGhlIG5hbWUgaXMgaW5jb3JyZWN0IGluIHRoZSBkZXZpY2UgdHJlZS9jb25maWd1cmF0aW9uLCBJJiMzOTttIHdhc3RpbmcgbXkgdGltZSBjaGFzaW5nIHBoYW50b20gcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYWxtb3N0IGEga25lZS1qZXJrLCBidXQgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoaXMgaXMgb2Z0ZW4gd2hlcmUgdGhlIHJhYmJpdCBob2xlIGJlZ2lucy4gSSYjMzk7dmUgc2VlbiBlbm91Z2ggbWlzbmFtZWQgZGV2aWNlcywgdHlwb3MgaW4gdGhlIERULCBvciBvdXRkYXRlZCBkcml2ZXIgdmVyc2lvbnMgdG8ga25vdyB0aGlzIGlzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdCB0byBjaGVjayBmaXJzdC4gSXQmIzM5O3MgYSBxdWljayB3aW4sIGFuZCBhIG5lY2Vzc2FyeSBwcmUtZmxpZ2h0IGNoZWNrIGJlZm9yZSBJIHN0YXJ0IGxvb2tpbmcgZm9yIG1vcmUgZWx1c2l2ZSBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpMmNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMD1zdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9pMmNfcG1fb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTMzOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBrc3o5NDc3X2kyY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTM0LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE0NTptb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZXZpY2UgQmluZGluZyBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoaXMgZGV2aWNlJiMzOTtzIGludGVyYWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBiYXNlbGluZTogd2hhdCBzcGVjaWZpYyBkZXZpY2VzIG9yIGNvbXBvbmVudHMgaXMgdGhpcyBzeXN0ZW0gYWN0dWFsbHkgY29tbXVuaWNhdGluZyB3aXRoPyBXaGF0JiMzOTtzIHRoZSBhcmNoaXRlY3R1cmU/IEFyZSB3ZSB0YWxraW5nIGhhcmR3YXJlLCBzb2Z0d2FyZSwgbmV0d29yayBwcm90b2NvbHMsIHRoZSB3b3Jrcz8gVW5kZXJzdGFuZGluZyB0aGVzZSBiaW5kaW5ncyBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgZm9yIHByb3BlciByZXZlcnNlIGVuZ2luZWVyaW5nIG9yIGRlYnVnZ2luZy4gQSBjb21wcmVoZW5zaXZlIGludmVudG9yeSBoZXJlIGlzIGZvdW5kYXRpb25hbCB0byBhbnkgbWVhbmluZ2Z1bCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSYjMzk7cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gV2UgbmVlZCB0byBkZWZpbmUgdGhlIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2Ygb3VyIHRhcmdldCB3aXRoIGl0cyBwZWVycyBpcyBob3cgd2Ugd2lsbCBkbyB0aGlzLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRvb2xzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aTJjX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz03MD1zdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo4MjpzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQga3N6OTQ3N19pMmNfaWRbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04My1cdHsgLm5hbWUgPSBcJiMzNDtrc3o5NDc3LXN3aXRjaFwmIzM0OyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2aWNlIEluc3RhbnRpYXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gaGVyZSBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiAmIzM0O2tzejk0Nzctc3dpdGNoJiMzNDssICYjMzQ7a3N6OTg5Ny1zd2l0Y2gsJiMzNDsgYW5kIHNvIG9uLiBUaGUgcHJvY2VzcyB0byBnZXQgdGhpcyBkZXZpY2UgaW5zdGFudGlhdGVkIHNlZW1zIHRvIGJlIHN0cmFpZ2h0Zm9yd2FyZCDigJMgSSBjYW4gY3JlYXRlIGl0IGJ5IHdyaXRpbmcgdGhlIGRldmljZSBuYW1lIGFuZCBhZGRyZXNzLCBsaWtlICYjMzQ7a3N6OTg5Ny1zd2l0Y2ggMHg1ZiYjMzQ7IOKAkyBhc3N1bWluZyBgaTJjLTBgIGlzIG15IGBpMmMtc3R1YmAgaW50ZXJmYWNlIOKAkyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvbmV3X2RldmljZWAuIAoKTm93LCBhIGNydWNpYWwgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQ6IGRvZXMgdGhpcyBzd2l0Y2ggY29uZmlndXJhdGlvbiByZWx5IG9uIGludGVycnVwdHMgb3IgR1BJTyBzaWduYWxpbmcgZm9yIG9wZXJhdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBiZXlvbmQgdGhlIEkyQyBjb21tdW5pY2F0aW9uIGl0c2VsZi4gVG8gY2xhcmlmeSB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRldGVybWluZSBpZiBhbnkgYWRkaXRpb25hbCByZXNvdXJjZXMgYXJlIHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3o5NDc3X2kyY19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xNT1LU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTc6c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTMzPXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBrc3o5NDc3X2kyY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cdH0sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTM5Olx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQwLVx0LnJlbW92ZVx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyODYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBga3N6OTQ3N19pMmNfcHJvYmVgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhpcyBkcml2ZXIsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gYWdhaW4uIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3Iga2V5IHNlY3Rpb25zOiB0aGUgSTJDIGRldmljZSByZWdpc3RyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBzcGVjaWZpYyB0byB0aGlzIEtTWjk0NzcgY2hpcC4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgSTJDIGNvbW11bmljYXRpb24gaXRzZWxmLiBJJiMzOTtsbCBtZW50YWxseSBub3RlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgdGhlIEkyQyBjbGllbnQgYW5kIGFueSBjdXN0b20gZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIEtTWjk0NzcuIEkmIzM5O2xsIGNvbXBhcmUgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zIHdpdGggdGhlIGRhdGFzaGVldCB0byBlbnN1cmUgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBUaGUgaW50ZXJydXB0IGhhbmRsaW5nIHdpbGwgYmUgaW1wb3J0YW50IHRvby4gSSB3YW50IHRvIHNlZSBob3cgaW50ZXJydXB0cyBhcmUgY29uZmlndXJlZCBhbmQgcHJvY2Vzc2VkLCBwYXlpbmcgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcnJ1cHQtc2FmZSBjb250ZXh0LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgaW5lZmZpY2llbnQgY29kZSBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24sIHN1Y2ggYXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1bm5lY2Vzc2FyeSBsb2NraW5nLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgZW5zdXJpbmcgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGVmZmljaWVudC4gSSB3aWxsIGFsc28gbWFrZSBub3RlcyByZWdhcmRpbmcgdGhlIGRyaXZlciYjMzk7cyBwb3dlciBtYW5hZ2VtZW50IGFuZCBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBMZXQmIzM5O3Mgc3RhcnQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNzpcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgMTg6XHR7XG4gIDE5Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcbiAgMjA6XHRcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcdTAwMjZpMmMtXHUwMDNlZGV2O1xuICAyMTpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmM7XG4gIDIyOlx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2O1xuICAyMzpcdFx0aW50IGksIHJldDtcbiAgMjQ6XHRcbiAgMjU6XHRcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XG4gIDI2Olx0XHRpZiAoIWNoaXApXG4gIDI3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuICAyODpcdFxuICAyOTpcdFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcdTAwMjZpMmMtXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xuICAzMDpcdFx0aWYgKCFkZXYpXG4gIDMxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICAzMjpcdFxuICAzMzpcdFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xuICAzNDpcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBjaGlwLVx1MDAzZWNoaXBfaWQ7XG4gIDM1Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSYjNDM7JiM0MzspIHtcbiAgMzY6XHRcdFx0cmMgPSBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV07XG4gIDM3Olx0XHRcdHJjLmxvY2tfYXJnID0gXHUwMDI2ZGV2LVx1MDAzZXJlZ21hcF9tdXRleDtcbiAgMzg6XHRcdFx0ZGV2LVx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXHUwMDI2cmMpO1xuICAzOTpcdFx0XHRpZiAoSVNfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pKSB7XG4gIDQwOlx0XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2aTJjLVx1MDAzZWRldiwgUFRSX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSxcbiAgNDE6XHRcdFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSByZWdtYXAlaVxcblwmIzM0OyxcbiAgNDI6XHRcdFx0XHRcdFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xuICA0MzpcdFx0XHR9XG4gIDQ0Olx0XHR9XG4gIDQ1Olx0XG4gIDQ2Olx0XHRpZiAoaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxuICA0NzpcdFx0XHRkZXYtXHUwMDNlcGRhdGEgPSBpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG4gIDQ4Olx0XG4gIDQ5Olx0XHRkZXYtXHUwMDNlaXJxID0gaTJjLVx1MDAzZWlycTtcbiAgNTA6XHRcbiAgNTE6XHRcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbiAgNTI6XHRcbiAgNTM6XHRcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xuICA1NDpcdFx0aWYgKHJldClcbiAgNTU6XHRcdFx0cmV0dXJuIHJldDtcbiAgNTY6XHRcbiAgNTc6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XG4gIDU4Olx0XG4gIDU5Olx0XHRyZXR1cm4gMDtcbiAgNjA6XHR9XG4gIDYxOlx0XG4gIDYyOlx0c3RhdGljIHZvaWQga3N6OTQ3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDYzOlx0e1xuICA2NDpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA2NTpcdFxuICA2NjpcdFx0aWYgKGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM1NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBDYWxsKioKCk9rYXksIHNvIHRoZSBjb2RlIGluaXRpYXRlcyBhIGNhbGwgdG8gYGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KWAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byB1bmRlcnN0YW5kLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uLCBzaGFsbCB3ZT8gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZG9lcyBhbmQgaG93IGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggdGhlIHByb3ZpZGVkIGRldmljZSBzdHJ1Y3R1cmUgKGBkZXZgKS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGluaXRpYWxpemVzLCBjb25maWd1cmVzLCBvciByZWdpc3RlcnMgdGhlIHN3aXRjaCwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIHNldHVwLCBvciBkYXRhIHN0cnVjdHVyZSBwb3B1bGF0aW9uLiBJIGFsc28gd2FudCB0byBzZWUgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgYGRldmAgc3RydWN0dXJlLiBLbm93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdpbGwgbWFrZSB1bmRlcnN0YW5kaW5nIHRoZSBzdWJzZXF1ZW50IGNvZGUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEzND1zdGF0aWMgaW50IGtzejg4NjNfc21pX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTY5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE3MDpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9NDM5MT1zdGF0aWMgaW50IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjQzOTY6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQzOTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ1NDEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6NDU0MjpFWFBPUlRfU1lNQk9MKGtzel9zd2l0Y2hfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDU0My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0zODU9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0zODctXHRcdFx0XHQgICAgdm9pZCAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDozODg6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0zODktdm9pZCBrc3pfc3dpdGNoX3JlbW92ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBrc3pfY29tbW9uLmMgZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYC4gVGhhdCBmdW5jdGlvbiBpcyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBpbiB0aGUgb3ZlcmFsbCBkZXZpY2UgZHJpdmVyLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyB0aGUgcmVnaXN0cmF0aW9uIHBvaW50IGZvciB0aGUgc3dpdGNoIGhhcmR3YXJlLCBzbyBpdOKAmXMgbGlrZWx5IHdoZXJlIEkmIzM5O2xsIGZpbmQgaW5pdGlhbCBzZXR1cCBvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgaGFyZHdhcmUgaXMgcmVnaXN0ZXJlZCwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJiMzOTtzIGRldmljZSBtb2RlbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgYW5kIGFueSBlYXJseSBjb25maWd1cmF0aW9uIHN0ZXBzIG5lZWRlZCB0byBicmluZyB0aGUgc3dpdGNoIGludG8gYSBmdW5jdGlvbmFsIHN0YXRlLiBJIGFudGljaXBhdGUgdGhlcmUmIzM5O2xsIGJlIGEgbG90IG9mIGludGVyZXN0aW5nIGRldGFpbCBhYm91dCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzOTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM5NjpcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG40Mzk3Olx0e1xuNDM5ODpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmluZm87XG40Mzk5Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzO1xuNDQwMDpcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcbjQ0MDE6XHRcdHVuc2lnbmVkIGludCBwb3J0X251bTtcbjQ0MDI6XHRcdGludCByZXQ7XG40NDAzOlx0XHRpbnQgaTtcbjQ0MDQ6XHRcbjQ0MDU6XHRcdGRldi1cdTAwM2VyZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LVx1MDAzZWRldiwgXCYjMzQ7cmVzZXRcJiMzNDssXG40NDA2Olx0XHRcdFx0XHRcdFx0ICBHUElPRF9PVVRfTE9XKTtcbjQ0MDc6XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlc2V0X2dwaW8pKVxuNDQwODpcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3Bpbyk7XG40NDA5Olx0XG40NDEwOlx0XHRpZiAoZGV2LVx1MDAzZXJlc2V0X2dwaW8pIHtcbjQ0MTE6XHRcdFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWljcm9jaGlwLGtzejg0NjNcJiMzNDspKSB7XG40NDEyOlx0XHRcdFx0cmV0ID0ga3N6ODQ2M19jb25maWd1cmVfc3RyYXBzX3NwaShkZXYpO1xuNDQxMzpcdFx0XHRcdGlmIChyZXQpXG40NDE0Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuNDQxNTpcdFx0XHR9XG40NDE2Olx0XG40NDE3Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMSk7XG40NDE4Olx0XHRcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xuNDQxOTpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVx1MDAzZXJlc2V0X2dwaW8sIDApO1xuNDQyMDpcdFx0XHRtc2xlZXAoMTAwKTtcbjQ0MjE6XHRcbjQ0MjI6XHRcdFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWljcm9jaGlwLGtzejg0NjNcJiMzNDspKSB7XG40NDIzOlx0XHRcdFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcbjQ0MjQ6XHRcdFx0XHRpZiAocmV0KVxuNDQyNTpcdFx0XHRcdFx0cmV0dXJuIHJldDtcbjQ0MjY6XHRcdFx0fVxuNDQyNzpcdFx0fVxuNDQyODpcdFxuNDQyOTpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlZGV2X211dGV4KTtcbjQ0MzA6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZXJlZ21hcF9tdXRleCk7XG40NDMxOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuNDQzMjpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNldmxhbl9tdXRleCk7XG40NDMzOlx0XG40NDM0Olx0XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuNDQzNTpcdFx0aWYgKHJldClcbjQ0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjQ0Mzc6XHRcbjQ0Mzg6XHRcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVx1MDAzZWNoaXBfaWQpO1xuNDQzOTpcdFx0aWYgKCFpbmZvKVxuNDQ0MDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjQ0NDE6XHRcbjQ0NDI6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjQ0NDM6XHRcdGRldi1cdTAwM2VpbmZvID0gaW5mbztcbjQ0NDQ6XHRcbjQ0NDU6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBGdW5jdGlvbiBDYWxsKioKCk9rYXksIHNvIEkgc2VlIGEgZnVuY3Rpb24gY2FsbDogYGtzel9zd2l0Y2hfZGV0ZWN0KGRldilgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMganVtcCBzdHJhaWdodCBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhpcyBkcml2ZXIgb3Igc3lzdGVtLiBXaGF0IGFyZSB0aGUgaW5wdXRzPyBXaGF0JiMzOTtzIHRoZSBleHBlY3RlZCBvdXRwdXQgb3Igc2lkZSBlZmZlY3RzPyBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhhcmR3YXJlIGFjY2Vzc2VzLCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIG9yIGFueSBzdGF0ZSBtb2RpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0ICYjMzQ7ZGV0ZWN0JiMzNDsgbWVhbnMgaW4gdGhpcyBjb250ZXh0IOKAkyBpcyBpdCBhbiBpbml0aWFsaXphdGlvbiwgYSBwb2xsaW5nIG1lY2hhbmlzbSwgb3Igc29tZXRoaW5nIG1vcmUgYWN0aXZlPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcm5hbHMgb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YCBpcyB0aGUgbmV4dCwgY3J1Y2lhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX2RldGVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTMxNTg9Ym9vbCBrc3pfZ2V0X2diaXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMxNzY6c3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9NDM5Nj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ0MzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0NDM0Olx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQ0MzUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg5MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggcmVhZGluZyBga3N6X3N3aXRjaF9kZXRlY3RgOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE9iamVjdGl2ZSoqCgpBbHJpZ2h0LCB0aGUgdGFzayBpcyBjbGVhcjogSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGF0IGBrc3pfc3dpdGNoX2RldGVjdGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB3aGF0ZXZlciBzeXN0ZW0gaXQmIzM5O3MgYSBwYXJ0IG9mLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQmIzM5O3MgZGV0ZWN0aW5nLCBob3cgaXQmIzM5O3MgZG9pbmcgaXQsIGFuZCB3aHkgdGhpcyBkZXRlY3Rpb24gaXMgc2lnbmlmaWNhbnQuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUga2luZCBvZiBzd2l0Y2gtcmVsYXRlZCBldmVudCBvciBzdGF0ZSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgS1NaIGNoaXAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIG5hbWUsIGluIHRoZSBmdW5jdGlvbiYjMzk7cyBjb21tZW50cyAoaWYgYW55KSwgYW5kIHRoZW4gYnkgcmVhZGluZyB0aGUgY29kZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA3OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTc2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMxNzY6XHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4zMTc3Olx0e1xuMzE3ODpcdFx0dTggaWQxLCBpZDIsIGlkNDtcbjMxNzk6XHRcdHUxNiBpZDE2O1xuMzE4MDpcdFx0dTMyIGlkMzI7XG4zMTgxOlx0XHRpbnQgcmV0O1xuMzE4MjpcdFxuMzE4MzpcdFx0LyogcmVhZCBjaGlwIGlkICovXG4zMTg0Olx0XHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcdTAwMjZpZDE2KTtcbjMxODU6XHRcdGlmIChyZXQpXG4zMTg2Olx0XHRcdHJldHVybiByZXQ7XG4zMTg3Olx0XG4zMTg4Olx0XHRpZDEgPSBGSUVMRF9HRVQoU1dfRkFNSUxZX0lEX00sIGlkMTYpO1xuMzE4OTpcdFx0aWQyID0gRklFTERfR0VUKFNXX0NISVBfSURfTSwgaWQxNik7XG4zMTkwOlx0XG4zMTkxOlx0XHRzd2l0Y2ggKGlkMSkge1xuMzE5MjpcdFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XG4zMTkzOlx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xuMzE5NDpcdFx0XHRicmVhaztcbjMxOTU6XHRcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxuMzE5NjpcdFx0XHRpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTUpIHtcbjMxOTc6XHRcdFx0XHR1OCB2YWw7XG4zMTk4Olx0XG4zMTk5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XG4zMjAwOlx0XG4zMjAxOlx0XHRcdFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcdTAwMjZ2YWwpO1xuMzIwMjpcdFx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjhfUE9SVF9GSUJFUl9NT0RFKVxuMzIwMzpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XG4zMjA0Olx0XHRcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcbjMyMDU6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcbjMyMDY6XHRcdFx0fSBlbHNlIHtcbjMyMDc6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMDg6XHRcdFx0fVxuMzIwOTpcdFx0XHRicmVhaztcbjMyMTA6XHRcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxuMzIxMTpcdFx0XHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXG4zMjEyOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XG4zMjEzOlx0XHRcdGVsc2VcbjMyMTQ6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMTU6XHRcdFx0YnJlYWs7XG4zMjE2Olx0XHRjYXNlIEtTWjg4OTVfRkFNSUxZX0lEOlxuMzIxNzpcdFx0XHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxuMzIxODpcdFx0XHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXG4zMjE5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XG4zMjIwOlx0XHRcdGVsc2VcbjMyMjE6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjMyMjI6XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0tTWjg4NjRfQ0hJUF9JRCwgXHUwMDI2aWQ0KTtcbjMyMjM6XHRcdFx0aWYgKHJldClcbjMyMjQ6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzIyNTpcdFx0XHRpZiAoaWQ0IFx1MDAyNiBTV19LU1o4ODY0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGtzel9yZWFkMTZgIEZ1bmN0aW9uIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgaXMgZHJhd24gdG8gdGhlIGBrc3pfcmVhZDE2YCBjYWxsLiBUaGlzIGlzIHdoZXJlIHRoZSBpbml0aWFsIGRhdGEgZ3JhYiBoYXBwZW5zLiBJZiBpdCBmYWlscywgdGhhdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBlcnJvciwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoYXQgZ3JhY2VmdWxseS4gQnV0IHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHdoYXQgaGFwcGVucyBpZiBpdCAqZG9lc24mIzM5O3QqIGZhaWwuCgpOb3csIGlmIHdlJiMzOTtyZSB1c2luZyB0aGUgYGkyYy1zdHViYCBkZXZpY2UgaW5zdGFudGlhdGlvbiwgdGhlIHZhbHVlcyBmcm9tIGBrc3pfcmVhZDE2YCBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIHRoZSByZWFsIGRlYWwsIGFyZSB0aGV5PyBUaGUgc3R1YiYjMzk7cyBtZW1vcnkgaXMgd2hhdCB3aWxsIGJlIHJlYWQuIFRoYXQgbWVhbnMgdGhlIHJlYWRzIGFyZSB2ZXJ5IGxpa2VseSByZXR1cm5pbmcgemVybywgb3Igc29tZSBvdGhlciBpbml0aWFsIHZhbHVlLiBTbywgaWYgd2UgZ2V0IGEgemVybywgYGlkMWAgd2lsbCBiZSB6ZXJvLiBXaGljaCBtYWtlcyBtZSB3b25kZXIgd2hhdCB0aGUgZXhwZWN0ZWQgbm9uLXplcm8gdmFsdWVzIGFyZSwgaW4gdGhlIHJlYWwtd29ybGQgc2NlbmFyaW8uCgpMZXQmIzM5O3Mgc2VlIHdoYXQgaGFwcGVucyBuZXh0IGluIHRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvZGUgaW50ZXJwcmV0cyB0aGUgdmFsdWUgcmV0dXJuZWQgYW5kIGRldGVybWluZXMgaWYgaXQgaGFzIHN1Y2Nlc3NmdWxseSBkZXRlY3RlZCBhIHN3aXRjaC4gV2hlcmUgZG9lcyBpdCBnbyBmcm9tIGhlcmU/IFdoYXQgaXMgaXQgYWN0dWFsbHkgbG9va2luZyBmb3I/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgc3Vic2VxdWVudCBzdGVwcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIyNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjI2Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XG4zMjI3Olx0XHRcdGJyZWFrO1xuMzIyODpcdFx0ZGVmYXVsdDpcbjMyMjk6XHRcdFx0cmV0ID0ga3N6X3JlYWQzMihkZXYsIFJFR19DSElQX0lEMCwgXHUwMDI2aWQzMik7XG4zMjMwOlx0XHRcdGlmIChyZXQpXG4zMjMxOlx0XHRcdFx0cmV0dXJuIHJldDtcbjMyMzI6XHRcbjMyMzM6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcbjMyMzQ6XHRcdFx0aWQzMiBcdTAwMjY9IH4weEZGO1xuMzIzNTpcdFxuMzIzNjpcdFx0XHRzd2l0Y2ggKGlkMzIpIHtcbjMyMzc6XHRcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4zMjM4Olx0XHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuMzIzOTpcdFx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbjMyNDA6XHRcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4zMjQxOlx0XHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuMzI0MjpcdFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbjMyNDM6XHRcdFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XG4zMjQ0Olx0XHRcdGNhc2UgTEFOOTM3Ml9DSElQX0lEOlxuMzI0NTpcdFx0XHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcbjMyNDY6XHRcdFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XG4zMjQ3Olx0XG4zMjQ4Olx0XHRcdFx0LyogTEFOOTY0NiBkb2VzIG5vdCBoYXZlIGl0cyBvd24gY2hpcCBpZC4gKi9cbjMyNDk6XHRcdFx0XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKVxuMzI1MDpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBpZDMyO1xuMzI1MTpcdFx0XHRcdGJyZWFrO1xuMzI1MjpcdFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbjMyNTM6XHRcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4zMjU0Olx0XHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4zMjU1Olx0XHRcdFx0aWYgKHJldClcbjMyNTY6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zMjU3Olx0XG4zMjU4Olx0XHRcdFx0aWYgKGlkNCA9PSBTS1VfSURfS1NaODU2MylcbjMyNTk6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODU2M19DSElQX0lEO1xuMzI2MDpcdFx0XHRcdGVsc2UgaWYgKGlkNCA9PSBTS1VfSURfS1NaOTU2MylcbjMyNjE6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTU2M19DSElQX0lEO1xuMzI2MjpcdFx0XHRcdGVsc2VcbjMyNjM6XHRcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTg5M19DSElQX0lEO1xuMzI2NDpcdFxuMzI2NTpcdFx0XHRcdGJyZWFrO1xuMzI2NjpcdFx0XHRkZWZhdWx0OlxuMzI2NzpcdFx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbjMyNjg6XHRcdFx0XHRcdFwmIzM0O3Vuc3VwcG9ydGVkIHN3aXRjaCBkZXRlY3RlZCAleClcXG5cJiMzNDssIGlkMzIpO1xuMzI2OTpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMzI3MDpcdFx0XHR9XG4zMjcxOlx0XHR9XG4zMjcyOlx0XHRyZXR1cm4gMDtcbjMyNzM6XHR9XG4zMjc0Olx0XG4zMjc1Olx0LyogQmFuZHdpZHRoIGlzIGNhbGN1bGF0ZWQgYnkgaWRsZSBzbG9wZS90cmFuc21pc3Npb24gc3BlZWQuIFRoZW4gdGhlIEJhbmR3aWR0aFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE4OAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENoaXAgSUQgRGV0ZWN0aW9uIGFuZCBTeXprYWxsZXImIzM5O3MgQ2FwYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoaXAgSUQgZGV0ZWN0aW9uIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGlmIGBpZDFgIHJlYWRzIDAsIHdlIGp1bXAgaW50byB0aGUgYGRlZmF1bHQ6YCBjYXNlLiBUaGVuIGl0IHJlYWRzIGBpZDMyYCB1c2luZyBga3N6X3JlYWQzMmAuIElmIGBpZDMyYCBoYXBwZW5zIHRvIGJlIDAsIGEgYml0bWFzayBjbGVhcnMgdGhlIGxvd2VyIDggYml0cywgYW5kIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGFjdHMgb24gYGlkMzJgLiBTaW5jZSAwIGlzbiYjMzk7dCBvbmUgb2YgdGhlIHJlY29nbml6ZWQgY2hpcCBJRHMgKGxpa2UgYEtTWjk0NzdfQ0hJUF9JRGApLCBpdCBwcmludHMgJiMzNDt1bnN1cHBvcnRlZCBzd2l0Y2ggZGV0ZWN0ZWQgMCkmIzM0OyBhbmQgcmV0dXJucyBgLUVOT0RFVmAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgZXJyb3IuCgpUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciB1c2luZyBgaTJjLXN0dWJgIHVubGVzcyB3ZSBzb21laG93IHByZS1sb2FkIHRoZSBzdHViJiMzOTtzIG1lbW9yeSB3aXRoIHRoZSAqY29ycmVjdCogY2hpcCBJRC4gTm93LCBjYW4gd2UgYWN0dWFsbHkgZG8gdGhhdCB3aXRoIGBpMmMtc3R1YmA/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBJIHJlbWVtYmVyIGBpMmNzZXRgIGZyb20gdXNlci1zcGFjZSBjYW4gd3JpdGUgdG8gaXRzIHJlZ2lzdGVycyBiZWZvcmUgdGhlIGRyaXZlciBiaW5kcywgYW5kIEkgdGhpbmsgc3l6a2FsbGVyIGNhbiBhbHNvIHdyaXRlIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC8uLi5gIG9yIGV2ZW4gYC9kZXYvaTJjLTBgIHRvIHBvcHVsYXRlIHRoZSBgaTJjLXN0dWJgJiMzOTtzIG1lbW9yeS4KCkJ1dCBoYW5nIG9uLi4uIENhbiBzeXprYWxsZXIgKmVhc2lseSogcHJlLXBvcHVsYXRlIGFuIGBpMmMtc3R1YmAgd2l0aCBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMgYmVmb3JlIHByb2JpbmcgYSBkcml2ZXI/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBUaGVyZSYjMzk7cyBub3QgYSBmdW5jdGlvbiBsaWtlIGBzeXpfaTJjX3NldHVwYCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoaXMuIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc29tZXRoaW5nIGxpa2UgaXQuLi4gSG1tLCBtYXliZSBzeXprYWxsZXIgY2FuIGZ1enogSTJDLCBidXQgdmlhIGB2aGNpYCBvciBgaTJjLWRldmAuIERvZXMgaXQgaGF2ZSBhICYjMzQ7dmlydHVhbCBJMkMgYWRhcHRlciYjMzQ7PyBOb3QgdGhhdCBJIHJlY2FsbC4gSXQgaGFzIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBmdW5jdGlvbiBmb3IgVVNCLCBhbmQgc2ltaWxhciBvbmVzIGZvciBXaUZpLgoKRm9yIEkyQywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIGRlZGljYXRlZCBwc2V1ZG8tZGV2aWNlIHRoYXQgYWxsb3dzIGFyYml0cmFyeSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGZyb20gdGhlIGtlcm5lbCYjMzk7cyBwZXJzcGVjdGl2ZS4gSXQmIzM5O3MgZnJ1c3RyYXRpbmcgYmVjYXVzZSBpdCB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIHNpdHVhdGlvbi4gQnV0IHdhaXQsIEkmIzM5O20gc2Vjb25kLWd1ZXNzaW5nIG15c2VsZi4gTWF5YmUgdGhlcmUgKmlzKiBhIGBzeXpfaTJjX3NldHVwYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkyQyBmdXp6aW5nIGlzIHByZXNlbnQgaW4gc3l6a2FsbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9pMmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBzcGVha2luZyBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqQ29uc2lkZXJpbmcgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIChTUEkpKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gd2hhdCBhYm91dCBTUEkgZm9yIHRoaXMgYXBwbGljYXRpb24/IEdpdmVuIHRoZSBjb25zdHJhaW50cyBhbmQgdGhlIHBlcmZvcm1hbmNlIGdvYWxzIHdlJiMzOTtyZSBhaW1pbmcgZm9yLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgcHJvcyBhbmQgY29ucyBpbiBteSBoZWFkLiBTUEkmIzM5O3Mgc2ltcGxpY2l0eSBpcyBkZWZpbml0ZWx5IGF0dHJhY3RpdmUsIGVzcGVjaWFsbHkgZnJvbSBhIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLiBUaGUgY2xvY2tlZCwgc3luY2hyb25vdXMgbmF0dXJlIGlzIGdlbmVyYWxseSByb2J1c3QgYW5kIHByZXR0eSBlYXN5IHRvIG1hbmFnZSB3aXRoIHN0YW5kYXJkIG1pY3JvY29udHJvbGxlcnMuIFBsdXMsIGl0JiMzOTtzIHR5cGljYWxseSBmYXN0ZXIgdGhhbiBJMkMsIHdoaWNoIGlzIGEgbWFqb3IgcG9pbnQgdG8gY29uc2lkZXIgZ2l2ZW4gdGhlIGRhdGEgdHJhbnNmZXIgcmVxdWlyZW1lbnRzLiBIb3dldmVyLCBpcyB0aGUgcmVxdWlyZWQgdGhyb3VnaHB1dCBhY2hpZXZhYmxlIGdpdmVuIHRoYXQgd2UgbmVlZCB0byBleGNoYW5nZSBkYXRhIHdpdGggbXVsdGlwbGUgc2xhdmVzPyBXZSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY2xvY2sgc3BlZWRzLCB0aGUgbnVtYmVyIG9mIHNsYXZlIHNlbGVjdHMsIGFuZCBwb3RlbnRpYWwgYnVzIGNvbnRlbnRpb24uIFRoZSBtdWx0aS1tYXN0ZXIgc3VwcG9ydCBpcyBub3QgYXMgY29tbW9uLCBzbyB0aGF0IG1pZ2h0IGJlIHRyaWNreSBpZiB3ZSBuZWVkIHRvIGV4cGFuZCB0aGUgY2FwYWJpbGl0aWVzIGRvd24gdGhlIHJvYWQuIEFscmlnaHQsIHRoZSBzaW1wbGljaXR5IG9mIGhhcmR3YXJlIGludGVncmF0aW9uIGlzIGFwcGVhbGluZzsgdGhlIHNwZWVkIG1pZ2h0IGJlIHN1ZmZpY2llbnQ7IGJ1dCBtdWx0aXBsZSBzbGF2ZXMgbWlnaHQgY2F1c2UgaXNzdWVzLCBsZXQmIzM5O3MgZXhwbG9yZSB0aGlzIGZ1cnRoZXIuIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgc2lnbmFsIGludGVncml0eSBpc3N1ZXMgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGFkZGVkIGhhcmR3YXJlIG92ZXJoZWFkLiBMZXQgbWUgY29tcGFyZSBpdCB0byBJMkMgYW5kIENBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfc3BpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0ODUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIgaW4gYSBGdXp6aW5nIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBzeXprYWxsZXI/JiMzNDsgSXQgc2VlbXMgbGlrZSBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgYGkyYy1zdHViYCByZWxhdGVkLiBVc3VhbGx5LCB0aGVzZSBhcmUgb2ZmLWxpbWl0cyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZXhwbGljaXQgZW11bGF0aW9uIHBhdGguIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIGFyZSBhIG5vLWdvLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgcmVhY2hhYmxlPwoKSXQmIzM5O3MgYW4gSTJDL1NQSS9TTUkgZGV2aWNlIGRyaXZlci4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0IHdpdGhvdXQgdGhlIHJpZ2h0IGhhcmR3YXJlIG9yIGEgZ29vZCBlbXVsYXRvciwgdGhlIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBwcm9iYWJseSBmYWlsLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGZhaWwgYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBiZWNhdXNlIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGNoaXAgSUQsIGFuZCB3ZSYjMzk7ZCBuZWVkIHRvIHByb3ZpZGUgYSB2ZXJ5IHNwZWNpZmljIHZhbHVlLiBTeXprYWxsZXIsIGFzIGZhciBhcyBJIHVuZGVyc3RhbmQsIGRvZXNuJiMzOTt0IGluaGVyZW50bHkga25vdyBpdCBuZWVkcyB0byB3cml0ZSBgS1NaOTg5N19DSElQX0lEYCB0byBhIHNwZWNpZmljIHJlZ2lzdGVyIHZpYSBJMkMgYmVmb3JlIHRoZSBwcm9iZSBjYW4gZXZlbiAqYmVnaW4qLiBTbywgdGhlIHByb2JlIGlzIGxpa2VseSB0byBmYWlsLgoKVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAsIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgYGtzel9zd2l0Y2hfZGV0ZWN0YCBzdWNjZWVkcy4gU28gaWYgdGhlIGRldGVjdGlvbiBmYWlscywgdGhlIGRldmljZSBkb2VzbiYjMzk7dCByZWdpc3RlciwgYW5kIHRoZSBzdWJzZXF1ZW50IGNvZGUgcGF0aHMgdGhhdCB1c2UgYHNnbWlpX3BvcnRgLCBsaWtlIGBrc3o5NDc3X3NldHVwYCwgYXJlIG5ldmVyIGV2ZW4gZXhlY3V0ZWQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB3aXRob3V0IHRoZSBoYXJkd2FyZSB0aGUgZGV0ZWN0aW9uIHdpbGwgZmFpbC4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgZW50cnkgcG9pbnRzIHRob3VnaCwganVzdCB0byBiZSBzdXJlLiBDb3VsZCB0aGlzIGJlIGluc3RhbnRpYXRlZCB2aWEgdGhlIGRldmljZSB0cmVlIGFuZCBzb21lIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBjb250cm9scz8gSSBkb24mIzM5O3QgdGhpbmsgc3l6a2FsbGVyICpjdXJyZW50bHkqIGhhcyBhIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB3aGVyZSBpdCBjYW4gcmV0dXJuIHNwZWNpZmljIHZhbHVlcyB0byBgc3BpX3N5bmNgIG9yIGBpMmNfdHJhbnNmZXJgLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IGEgZGVhZCBlbmQuCgpXYWl0LCB0aGVyZSAqaXMqIGBDT05GSUdfSTJDX1NUVUJgLiBJZiBzeXprYWxsZXIgY291bGQgd3JpdGUgdG8gYC9kZXYvaTJjLVhgIGJlZm9yZSBiaW5kaW5nIHRoZSBkcml2ZXIsIGl0ICpjb3VsZCogdGhlb3JldGljYWxseSBzZXQgdGhlIGNoaXAgSUQuIEJ1dCB0aGUgZnV6emVyIHdvdWxkbiYjMzk7dCBrbm93IGl0ICpuZWVkcyogdG8uIEl0IHdvdWxkIGhhdmUgdG8gcmFuZG9tbHkgd3JpdGUgdGhlICpleGFjdCogY2hpcCBJRCB0byB0aGUgKmV4YWN0KiByZWdpc3RlciBhbmQgKnRoZW4qIGJpbmQgdGhlIGRyaXZlci4gVGhlIGNoYW5jZXMgb2YgdGhhdCBhcmUgcHJhY3RpY2FsbHkgemVyby4KCldhaXQsIHdoYXQgKmV4YWN0bHkqIGRpZCB0aGUgcGF0Y2ggZG8/IE9oLCByaWdodCwgaXQmIzM5O3MganVzdCBhZGRpbmcgYC5zZ21paV9wb3J0ID0gN2AgdG8gYSBzdHJ1Y3Q6CmBgYGMKQEAgLTE1OTEsNiAmIzQzOzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKIAkJCQkgICB0cnVlLCBmYWxzZSwgZmFsc2V9LAogCQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAomIzQzOwkJLnNnbWlpX3BvcnQgPSA3LAogCX0sCiAKIAlbS1NaOTg5M10gPSB7CmBgYApUaGlzIGlzIGEgZGF0YS1kcml2ZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIEtTWjk4OTcgc3dpdGNoIGNoaXAuIEl0JiMzOTtzIGhhcmR3YXJlLXNwZWNpZmljLiBFdmVuICppZiogd2Ugc29tZWhvdyByZWFjaGVkIHRoaXMgY29kZSwgYWxsIGl0JiMzOTtzIGRvaW5nIGlzIHNldHRpbmcgYSBwcm9wZXJ0eSBmb3IgYSBzcGVjaWZpYyBjaGlwLiBTaW5jZSB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgaGFyZHdhcmUgYW5kIGNhbiYjMzk7dCBlYXNpbHkgZW11bGF0ZSBpdCwgdGhpcyBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIGRlYWQgZW5kLgpMZXQgbWUgYmUgY2VydGFpbiB0aGF0IGlzIHRoZSBvbmx5IHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX2NoaXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o4ODYzX2R0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDEtXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg4NjNcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjAyOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDUtXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg4NzNcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjA2Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMDctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz04OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o5NDc3X2R0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05MS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTQ3N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5MjpcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk0NzddXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05NS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5NlwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5NjpcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy05OS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDA6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwMy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDQ6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwNS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwNy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDg6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEwOS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExMS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2M1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTI6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExMy1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExNS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTY6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExNy1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTExOS1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2N1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjA6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyMS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyMy1cdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjQ6XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEyNS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTI0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUga3N6ODg3M19yZWdpc3Rlcl9zZXQgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjEyNDg6Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0OS1cdFtLU1o4NDYzXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTMxLX07XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTMyOkVYUE9SVF9TWU1CT0xfR1BMKGtzel9zd2l0Y2hfY2hpcHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTkzMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTE5MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICprc3pfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTM4Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShrc3pfc3dpdGNoX2NoaXBzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5NDAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDAxPXBoeV9pbnRlcmZhY2VfdCBrc3pfZ2V0X3htaWkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGJvb2wgZ2JpdCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MDI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQwMy1pbnQga3N6X3N3aXRjaF9tYWNhZGRyX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTIyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3pfZHRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjI4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NDYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjI5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODQ2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjMyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NzY1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjMzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc2NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjM2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4Nzk0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjM3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc5NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4Nzk1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODc5NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQ1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODY0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjQ5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODg2NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjUyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODczXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjUzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODhYM11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjU2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4ODk1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjU3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODg5NV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjYwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NDc3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjYxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk2XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjY1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5Nl1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjY5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjcyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODkzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjczOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjc2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NTYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjc3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTU2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjgwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTYzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjgxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Mi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTY3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjg1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NTY3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjg5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTU2N11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjkyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MjkzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3MF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjk2LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6Mjk3Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3MV1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzAwLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzcyXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzAxOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3Ml1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwMi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA0LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzczXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzA1Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwNi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA4LVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45Mzc0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzA5Olx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3NF1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzEyLVx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45NjQ2XCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MzEzOlx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTY0Nl1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxNC1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA3OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjE4CgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDE4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGl0JiMzOTtzIGp1c3QgZGVhbGluZyB3aXRoIGEgaGFyZHdhcmUgcHJvcGVydHkgdGFibGUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgS1NaOTg5N2AgY2hpcC4gTm93LCB0aGUga2V5IHRoaW5nIGlzIHRoYXQgaXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdGhlIGtpbmQgb2YgZW52aXJvbm1lbnRzIEkgdHlwaWNhbGx5IHdvcmsgaW4sIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWZpYywgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgdGhhdCBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoaXMgc3dpdGNoLiBBbmQsIGZyYW5rbHksIHdlIGRvbiYjMzk7dCBoYXZlIHRoYXQgZW11bGF0aW9uIGluIHBsYWNlLgoKRXZlbiBpZiBieSBzb21lIG1pcmFjbGUgd2UgY291bGQgaW5zdGFudGlhdGUgdGhpcyB0aGluZywgYWxsIHRoaXMgcHJvcGVydHkgY2hhbmdlIGFtb3VudHMgdG8gaXMgYSBjb25zdGFudCBhZGRpdGlvbi4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBub3ZlbCBvciBpbnRlcmVzdGluZyBmdXp6aW5nIHN1cmZhY2UuIFRoZXJlZm9yZSwgZ2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWwgdG8gdGVzdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTowOC45ODU0NzIxNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTExNjI4NDE2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjA4Ljk4NTQ4MDE4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3NTA4MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2U4NDEyY2FiYWMyYTFmZjEwODlkMTkxZDk4YTY3OGI2MTM5YWMzOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA2OjU5OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbkBAIC0xNTkxLDYgKzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5pbnRlcm5hbF9waHlcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxcbiBcXHRcXHRcXHRcXHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxcbiBcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuK1xcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG4gXFx0fSxcXG4gXFxuIFxcdFtLU1o5ODkzXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MDkuNTk1MDk5Njg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA1NTMyMDgyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3BlcnR5IChgLnNnbWlpX3BvcnQgPSA3YCkgdG8gdGhlIGBLU1o5ODk3YCBjaGlwIGRhdGEgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgSTJDL1NQSS9TTUkgaGFyZHdhcmUgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhcyBpdCByZWFkcyBhbmQgdmVyaWZpZXMgdGhlIGNoaXAgSUQgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIChga3N6X3N3aXRjaF9kZXRlY3RgKS4gV2l0aG91dCBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBjaGlwLCB0aGUgY29kZSBwYXRocyB1dGlsaXppbmcgdGhpcyBwcm9wZXJ0eSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2U4NDEyY2FiYWMyYTFmZjEwODlkMTkxZDk4YTY3OGI2MTM5YWMzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDY6NTk6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCBkMTcyNjc3OGJiNDg4ZS4uNzE4YzcyMjA2YWI0NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNTkxLDYgKzE1OTEsNyBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5pbnRlcm5hbF9waHlcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXG4gXHRcdFx0XHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxuIFx0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbitcdFx0LnNnbWlpX3BvcnQgPSA3LFxuIFx0fSxcbiBcbiBcdFtLU1o5ODkzXSA9IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjA5LjU5NTEwMTg4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NTQ2Mzk3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBLU1o5ODk3IFNHTUlJIFBvcnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSdyZSBhZGRpbmcgYC5zZ21paV9wb3J0ID0gNyxgIHRvIHRoZSBgS1NaOTg5N2AgZW50cnkgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhhdCBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgc2dtaWlfcG9ydGAgZmllbGQgKmRvZXMqLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBkcml2ZXIncyBsb2dpYy4gSXMgaXQganVzdCBhIGNvbmZpZ3VyYXRpb24gdmFsdWU/IERvZXMgaXQgYWZmZWN0IHJlZ2lzdGVyIGFjY2Vzcz8gSXMgaXQgZXZlbiAqdXNlZCogYnkgdGhlIGRyaXZlciwgb3IgaXMgaXQganVzdCBzaXR0aW5nIHRoZXJlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIHBvcnQgbnVtYmVyIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGJ5IHRoZSBleGlzdGluZyBjb2RlLiBBcmUgdGhlcmUgZnVuY3Rpb25zIHRoYXQgdXRpbGl6ZSB0aGF0IHNwZWNpZmljIHBvcnQgbnVtYmVyIGFuZCBhc3NvY2lhdGVkIFNHTUlJIGNvbmZpZ3VyYXRpb24/IEl0J3MgZWFzeSBlbm91Z2ggdG8gYWRkIGEgdmFsdWUsIGJ1dCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIHRoaXMgYWRkaXRpb24gaXMgbG9naWNhbGx5IHNvdW5kIGFuZCBzZXJ2ZXMgYW4gYWN0dWFsIHB1cnBvc2Ugd2l0aGluIHRoZSBjdXJyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBqdXN0IGEgcGxhY2Vob2xkZXIsIGJ1dCBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGV2aWNlLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBtYWtlcyBzZW5zZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OToxOS4zNDk3NDQyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5MzQyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNnbWlpX3BvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTkxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTkzLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTk0OlxcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTk1LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0yNTc9c3RhdGljIGludCBrc3o5NDc3X3Bjc193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYwLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjYxOlxcdGludCBwb3J0ID0ga3N6X2dldF9zZ21paV9wb3J0KGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzE1PXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzE2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozMTc6XFx0aW50IHBvcnQgPSBrc3pfZ2V0X3NnbWlpX3BvcnQoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMTgtXFx0c3RydWN0IGtzel9wb3J0ICpwID0gXFx1MDAyNmRldi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0xMTk0PXN0YXRpYyB2b2lkIGtzejk0NzdfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxMjA1OlxcdGlmIChrc3pfaXNfc2dtaWlfcG9ydChkZXYsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTIwNi1cXHRcXHRzdHJ1Y3Qga3N6X3BvcnQgKnAgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTE1MjA9c3RhdGljIGludCBrc3o5NDc3X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE1NDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTU0NjpcXHRpZiAoa3N6X2hhc19zZ21paV9wb3J0KGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNTQ3LVxcdFxcdHJldCA9IGtzejk0NzdfcGNzX2NyZWF0ZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjAyNj1rc3o5NDc3X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMDMyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjIwMzM6XFx0aWYgKGtzel9pc19zZ21paV9wb3J0KGRldiwgZHAtXFx1MDAzZWluZGV4KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTIwMzQtXFx0ICAgIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0xMjQ4PWNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1MjAtXFx0XFx0LnB0cF9jYXBhYmxlID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxNTIxOlxcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xNTIyLVxcdFxcdC53cl90YWJsZSA9IFxcdTAwMjZrc3o5NDc3X3JlZ2lzdGVyX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTMtXFx0XFx0LmdiaXRfY2FwYWJsZVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE1OTQ6XFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE1OTUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MjYtXFx0XFx0LmdiaXRfY2FwYWJsZVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mjc6XFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MjgtXFx0XFx0LndyX3RhYmxlID0gXFx1MDAyNmtzejk0NzdfcmVnaXN0ZXJfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjAxMT12b2lkIGtzel9yX21pYl9zdGF0czY0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjA1OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMDYwOlxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBoeV9lcnJhdGFfOTQ3NyBcXHUwMDI2XFx1MDAyNiAha3N6X2lzX3NnbWlpX3BvcnQoZGV2LCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIwNjEtXFx0XFx0cmV0ID0ga3N6OTQ3N19lcnJhdGFfbW9uaXRvcihkZXYsIHBvcnQsIHJhdy1cXHUwMDNldHhfbGF0ZV9jb2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzEyMz1ib29sIGtzel9waHlsaW5rX25lZWRfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzEzNC1cXHQvKiBObyBuZWVkIHRvIGNvbmZpZ3VyZSBYTUlJIGNvbnRyb2wgcmVnaXN0ZXIgd2hlbiB1c2luZyBTR01JSS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMTM1OlxcdGlmIChrc3pfaXNfc2dtaWlfcG9ydChkZXYsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxMzYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NTc9c3RydWN0IGtzel9jaGlwX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtOTctXFx0Ym9vbCBwdHBfY2FwYWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo5ODpcXHR1OCBzZ21paV9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTk5LVxcdGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlICp3cl90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTc0Nj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbGFuOTM3eF90eF9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzUyOnN0YXRpYyBpbmxpbmUgaW50IGtzel9nZXRfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzU0OlxcdHJldHVybiBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXNnbWlpX3BvcnQgLSAxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc1NS19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc1NzpzdGF0aWMgaW5saW5lIGJvb2wga3N6X2hhc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzU4LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo3NTk6XFx0cmV0dXJuIGRldi1cXHUwMDNlaW5mby1cXHUwMDNlc2dtaWlfcG9ydCBcXHUwMDNlIDA7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNzYwLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NzYyOnN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC03NjMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjc2NDpcXHRyZXR1cm4gZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VzZ21paV9wb3J0ID09IHBvcnQgKyAxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTc2NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjE5LjczOTA5NDg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NjAzNjU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLU1o5ODk3IFNHTUlJIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgLnNnbWlpX3BvcnQgPSA3YCB0byB0aGUgYEtTWjk4OTdgIGNoaXAgZGF0YSB3aXRoaW4gdGhlIGBrc3pfc3dpdGNoX2NoaXBzW11gIGFycmF5LiBUaGF0IGRpcmVjdGx5IGltcGFjdHMgYGtzel9oYXNfc2dtaWlfcG9ydChkZXYpYCBhbmQgYGtzel9pc19zZ21paV9wb3J0KGRldiwgNilgLCBtYWtpbmcgdGhlbSByZXR1cm4gdHJ1ZSBmb3IgdGhlIEtTWjk4OTcuIFRoaXMgd2lsbCByaXBwbGUgdGhyb3VnaCBzZXZlcmFsIGZ1bmN0aW9ucyBpbiB0aGUgZHJpdmVyOiBga3N6OTQ3N19zZXR1cGAsIGBrc3o5NDc3X3BoeWxpbmtfZ2V0X2NhcHNgLCBga3N6OTQ3N19waHlsaW5rX21hY19zZWxlY3RfcGNzYCwgYGtzel9yX21pYl9zdGF0czY0YCwgYW5kIGBrc3pfcGh5bGlua19uZWVkX2NvbmZpZ2AuIFNvLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBuZXR3b3JrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBhIERTQSBzd2l0Y2guXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgdXN1YWxseSBhY2Nlc3NlZCB0aHJvdWdoIFNQSSwgSTJDLCBvciBNRElPLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBlbXVsYXRpb24gZm9yIERTQSBzd2l0Y2hlcyBvciBpZiB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIHNvbWUgc29mdHdhcmUgbWVjaGFuaXNtLiBUaGVzZSBNaWNyb2NoaXAgS1NaIHNlcmllcyBzd2l0Y2hlcyBhcmVuJ3QgdHlwaWNhbGx5IGVhc3kgdG8gZnV6eiB1bmxlc3Mgd2UgaGF2ZSBhIHZpcnR1YWwgYnVzIGxpa2UgSTJDL1NQSSB0aGF0IHN5emthbGxlciBjYW4gaW5qZWN0IGludG8uIE9yLCBwZXJoYXBzIGl0J3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluay9zeXNmcyBzb21laG93LlxuXG5XYWl0IGEgbWludXRlLCBzeXprYWxsZXIgZG9lcyBoYXZlIHNvbWUgc3VwcG9ydCBmb3IgaW5qZWN0aW5nIEkyQy9TUEkgZGV2aWNlcyB0aHJvdWdoIGB2aGNpYCBvciBzaW1pbGFyLiBNYXliZSB0aGlzICppcyogcmVhY2hhYmxlIGFmdGVyIGFsbC4gT3IsIGl0IGNvdWxkIGJlIGEgZGVhZCBlbmQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N2Agb3IgYSBzaW1pbGFyIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gc2VlIGlmIGl0IGNhbiBiZSBlbmFibGVkIGFuZCBjaGVjayBpZiBpdCBoYXMgYSB3YXkgdG8gcG9rZSB0aGUgZHJpdmVyIHVzaW5nIG9uZSBvZiB0aG9zZSBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjI2LjE5OTQ2MzQ0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk1NTMxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OToyNi4zMzkwMjg2MzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA3ODQ4MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgSTJDL1NQSSBDb25uZWN0ZWQgU3dpdGNoZXMgd2l0aCBTeXprYWxsZXI6IEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgdGhpbmtpbmcsIGNhbiB3ZSBldmVuICpiZWdpbiogdG8gZnV6eiBpdCB3aXRoIHN5emthbGxlcj8gVGhlIGRyaXZlcidzIGNvbm5lY3RlZCB2aWEgSTJDL1NQSS9TTUkg4oCTIHRoYXQncyB0aGUgaHVyZGxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIncyBleGlzdGluZyBJMkMvU1BJIGNhcGFiaWxpdGllcyBiZSBsZXZlcmFnZWQ/IEl0IGRvZXNuJ3Qgc2VlbSBkaXJlY3RseSBhcHBsaWNhYmxlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIEkyQyBmdXp6aW5nIHByaW1pdGl2ZXMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCwgYnV0IHRoYXQncyB0eXBpY2FsbHkgZm9yIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zICp3aXRoKiBhIGRldmljZSwgbm90IHRoZSBrZXJuZWwtc2lkZSBvcGVyYXRpb24gd2UncmUgaW50ZXJlc3RlZCBpbi4gVW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIEkyQyBzdHViIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHBsYWNlLCBpdCdzIHR5cGljYWxseSB0b3VnaCB0byBnZXQgYXQgdGhlc2UgSTJDL1NQSSBkZXZpY2VzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBjYW4gd2UgKmluc3RhbnRpYXRlKiBhIGZha2UgSTJDIGRldmljZT8gVGhlIGlkZWEgYmVpbmcgaWYgd2UgY2FuIGluamVjdCBvbmUgb2YgdGhvc2UsIHdlIG1pZ2h0IGJlIGFibGUgdG8gc3RhcnQgZnV6emluZy4gSXQncyBub3Qgc29tZXRoaW5nIHN5emthbGxlciBkaXJlY3RseSBoYW5kbGVzIGdlbmVyaWNhbGx5LiBMb29raW5nIGFnYWluLCBJIGJlbGlldmUgdGhpcyBpcyBwb3NzaWJsZSB2aWEgYHN5c2ZzYCBhbmQgdGhlIGBuZXdfZGV2aWNlYCBjYWxsIG9uIHRoZSBJMkMgYWRhcHRlciwgb3IgcG90ZW50aWFsbHkgd2l0aCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBidWlsdC1pbiBtZWNoYW5pc20gdG8gY3JlYXRlICphcmJpdHJhcnkqIEkyQy9TUEkgZGV2aWNlcyB1bmxlc3MgdGhleSdyZSBwcmUtZGVmaW5lZCBwc2V1ZG8tZGV2aWNlcyBvciBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZ1enppbmcgc2V0dXAuXG5cbk9rYXksIEknbSByZWFkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGVyZSdzIGEgbm90ZSBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IGl0IHNvdW5kcyBsaWtlIGl0IG1heSBiZSBwb3NzaWJsZSB0byByZWFjaCBpdCB2aWEgSTJDIGBuZXdfZGV2aWNlYCBhbmQgYSBkdW1teSBJMkMgYWRhcHRlci4gSWYgd2UgaGF2ZSBhIGR1bW15IGFkYXB0ZXIsIGxpa2UgYGkyYy1zdHViYCBvciBgaTJjLW1vY2tgLCB0aGVuIGl0ICptaWdodCogYmUgcmVhY2hhYmxlLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGkyYy1zdHViYCBsZXRzIHVzIGJpbmQgKmFueSogSTJDIGRyaXZlciB0byBpdC4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyB0aGUgd2F5IHRvIGluc3RhbnRpYXRlIGEgZGV2aWNlIGZvciBmdXp6aW5nLCB3aGljaCBvcGVucyB0aGluZ3MgdXAuIEl0IHNvdW5kcyBsaWtlIGBpMmMtc3R1YmAgYWxsb3dzIGJpbmRpbmcgYW55IEkyQyBkcml2ZXIgdG8gaXQuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgcGxhbiBpcyB0byBjb250aW51ZSBieSBjaGVja2luZyB0aGUgSTJDIGRyaXZlciBmb3IgdGhpcyBzd2l0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzMuNTQ2ODc5NTk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTI0MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3o5NDc3LWkyY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzMuNjQyMDExOTAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTEyNjg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIEkyQyBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGhpdHRpbmcgYSBzbmFnIHNvbWV3aGVyZSBpbiB0aGUgSTJDIGRyaXZlciByZWFsbS4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbywgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMgb2YgdGhlIGhhcmR3YXJlIG9yIHRpbWluZyBpc3N1ZXMsIGlzIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBJMkMgZHJpdmVy4oCZcyBuYW1lLiBUaGlzIGlzIG15IGdvLXRvIHN0YXJ0aW5nIHBvaW50LiBJdOKAmXMgYSBmb3VuZGF0aW9uYWwgc3RlcCwgYmVjYXVzZSBpZiB0aGUgZHJpdmVyIGlzbid0IGxvYWRpbmcsIG9yIHRoZSBuYW1lIGlzIGluY29ycmVjdCBpbiB0aGUgZGV2aWNlIHRyZWUvY29uZmlndXJhdGlvbiwgSSdtIHdhc3RpbmcgbXkgdGltZSBjaGFzaW5nIHBoYW50b20gcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSXQncyBhbG1vc3QgYSBrbmVlLWplcmssIGJ1dCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdGhpcyBpcyBvZnRlbiB3aGVyZSB0aGUgcmFiYml0IGhvbGUgYmVnaW5zLiBJJ3ZlIHNlZW4gZW5vdWdoIG1pc25hbWVkIGRldmljZXMsIHR5cG9zIGluIHRoZSBEVCwgb3Igb3V0ZGF0ZWQgZHJpdmVyIHZlcnNpb25zIHRvIGtub3cgdGhpcyBpcyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQgdG8gY2hlY2sgZmlyc3QuIEl0J3MgYSBxdWljayB3aW4sIGFuZCBhIG5lY2Vzc2FyeSBwcmUtZmxpZ2h0IGNoZWNrIGJlZm9yZSBJIHN0YXJ0IGxvb2tpbmcgZm9yIG1vcmUgZWx1c2l2ZSBidWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6MzYuNzYzMTQxMjM0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjIwMjAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpMmNfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xMzA9c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjEzMzpzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzQtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE0NTptb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjM2Ljg0OTM1MjIwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzMDkwMTgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRldmljZSBCaW5kaW5nIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiB0aGlzIGRldmljZSdzIGludGVyYWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyBpbnRvIGFueSBkZWVwZXIgYW5hbHlzaXMsIGxldCdzIGVzdGFibGlzaCBhIGJhc2VsaW5lOiB3aGF0IHNwZWNpZmljIGRldmljZXMgb3IgY29tcG9uZW50cyBpcyB0aGlzIHN5c3RlbSBhY3R1YWxseSBjb21tdW5pY2F0aW5nIHdpdGg/IFdoYXQncyB0aGUgYXJjaGl0ZWN0dXJlPyBBcmUgd2UgdGFsa2luZyBoYXJkd2FyZSwgc29mdHdhcmUsIG5ldHdvcmsgcHJvdG9jb2xzLCB0aGUgd29ya3M/IFVuZGVyc3RhbmRpbmcgdGhlc2UgYmluZGluZ3MgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBwcm9wZXIgcmV2ZXJzZSBlbmdpbmVlcmluZyBvciBkZWJ1Z2dpbmcuIEEgY29tcHJlaGVuc2l2ZSBpbnZlbnRvcnkgaGVyZSBpcyBmb3VuZGF0aW9uYWwgdG8gYW55IG1lYW5pbmdmdWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzeXN0ZW0ncyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gV2UgbmVlZCB0byBkZWZpbmUgdGhlIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2Ygb3VyIHRhcmdldCB3aXRoIGl0cyBwZWVycyBpcyBob3cgd2Ugd2lsbCBkbyB0aGlzLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRvb2xzIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjQ5LjQ4MDI1Njg2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDMzNzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImkyY19kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTcwPXN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjgyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy04My1cXHR7IC5uYW1lID0gXFxcImtzejk0Nzctc3dpdGNoXFxcIiB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTo0OS43MzAyOTkzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA5NDU1MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2aWNlIEluc3RhbnRpYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHNvIHRoZSBuYW1pbmcgY29udmVudGlvbiBoZXJlIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IFwia3N6OTQ3Ny1zd2l0Y2hcIiwgXCJrc3o5ODk3LXN3aXRjaCxcIiBhbmQgc28gb24uIFRoZSBwcm9jZXNzIHRvIGdldCB0aGlzIGRldmljZSBpbnN0YW50aWF0ZWQgc2VlbXMgdG8gYmUgc3RyYWlnaHRmb3J3YXJkIOKAkyBJIGNhbiBjcmVhdGUgaXQgYnkgd3JpdGluZyB0aGUgZGV2aWNlIG5hbWUgYW5kIGFkZHJlc3MsIGxpa2UgXCJrc3o5ODk3LXN3aXRjaCAweDVmXCIg4oCTIGFzc3VtaW5nIGBpMmMtMGAgaXMgbXkgYGkyYy1zdHViYCBpbnRlcmZhY2Ug4oCTIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9uZXdfZGV2aWNlYC4gXG5cbk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlcyBpbiBteSBtaW5kOiBkb2VzIHRoaXMgc3dpdGNoIGNvbmZpZ3VyYXRpb24gcmVseSBvbiBpbnRlcnJ1cHRzIG9yIEdQSU8gc2lnbmFsaW5nIGZvciBvcGVyYXRpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYmV5b25kIHRoZSBJMkMgY29tbXVuaWNhdGlvbiBpdHNlbGYuIFRvIGNsYXJpZnkgdGhpcywgSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRldGVybWluZSBpZiBhbnkgYWRkaXRpb25hbCByZXNvdXJjZXMgYXJlIHJlcXVpcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTc1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjUzLjkzOTc1ODM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5MTg1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6OTQ3N19pMmNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE3OnN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMzk6XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA2OjU5OjU0LjA0MTY4MjkxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzAxMzE1ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYGtzejk0NzdfaTJjX3Byb2JlYC4gSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBkcml2ZXIsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBhZ2Fpbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGtleSBzZWN0aW9uczogdGhlIEkyQyBkZXZpY2UgcmVnaXN0cmF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgc3BlY2lmaWMgdG8gdGhpcyBLU1o5NDc3IGNoaXAuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgSTJDIGNvbW11bmljYXRpb24gaXRzZWxmLiBJJ2xsIG1lbnRhbGx5IG5vdGUgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciB0aGUgSTJDIGNsaWVudCBhbmQgYW55IGN1c3RvbSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgS1NaOTQ3Ny4gSSdsbCBjb21wYXJlIHRoZSByZWdpc3RlciBkZWZpbml0aW9ucyB3aXRoIHRoZSBkYXRhc2hlZXQgdG8gZW5zdXJlIHRoZSBkcml2ZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycy4gVGhlIGludGVycnVwdCBoYW5kbGluZyB3aWxsIGJlIGltcG9ydGFudCB0b28uIEkgd2FudCB0byBzZWUgaG93IGludGVycnVwdHMgYXJlIGNvbmZpZ3VyZWQgYW5kIHByb2Nlc3NlZCwgcGF5aW5nIGF0dGVudGlvbiB0byB0aGUgaW50ZXJydXB0LXNhZmUgY29udGV4dC4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgaW5lZmZpY2llbnQgY29kZSBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24sIHN1Y2ggYXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1bm5lY2Vzc2FyeSBsb2NraW5nLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBjb3JlIGxvZ2ljIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgZW5zdXJpbmcgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGVmZmljaWVudC4gSSB3aWxsIGFsc28gbWFrZSBub3RlcyByZWdhcmRpbmcgdGhlIGRyaXZlcidzIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGFueSBzcGVjaWZpYyByZXF1aXJlbWVudHMuIExldCdzIHN0YXJ0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mjg2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDY6NTk6NTkuMzQzMDAwODZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE3OlxcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xcbiAgMjA6XFx0XFx0c3RydWN0IGRldmljZSAqZGRldiA9IFxcdTAwMjZpMmMtXFx1MDAzZWRldjtcXG4gIDIxOlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xcbiAgMjI6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcXG4gIDIzOlxcdFxcdGludCBpLCByZXQ7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XFxuICAyNjpcXHRcXHRpZiAoIWNoaXApXFxuICAyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIGNoaXAsIGkyYyk7XFxuICAzMDpcXHRcXHRpZiAoIWRldilcXG4gIDMxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXFxuICAzNDpcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBjaGlwLVxcdTAwM2VjaGlwX2lkO1xcbiAgMzU6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gIDM2OlxcdFxcdFxcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xcbiAgMzc6XFx0XFx0XFx0cmMubG9ja19hcmcgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXg7XFxuICAzODpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXFx1MDAyNnJjKTtcXG4gIDM5OlxcdFxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuICA0MDpcXHRcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pLFxcbiAgNDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXFxcblxcXCIsXFxuICA0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuICA0MzpcXHRcXHRcXHR9XFxuICA0NDpcXHRcXHR9XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdGlmIChpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAgNDc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IGkyYy1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGRldi1cXHUwMDNlaXJxID0gaTJjLVxcdTAwM2VpcnE7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXFxuICA1NDpcXHRcXHRpZiAocmV0KVxcbiAgNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cmV0dXJuIDA7XFxuICA2MDpcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRpZiAoZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNjo1OTo1OS4zNDMwODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODU2ODk5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBDYWxsKipcblxuT2theSwgc28gdGhlIGNvZGUgaW5pdGlhdGVzIGEgY2FsbCB0byBga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uLCBzaGFsbCB3ZT8gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZG9lcyBhbmQgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcHJvdmlkZWQgZGV2aWNlIHN0cnVjdHVyZSAoYGRldmApLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbml0aWFsaXplcywgY29uZmlndXJlcywgb3IgcmVnaXN0ZXJzIHRoZSBzd2l0Y2gsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgb3IgZGF0YSBzdHJ1Y3R1cmUgcG9wdWxhdGlvbi4gSSBhbHNvIHdhbnQgdG8gc2VlIHdoYXQgYXNzdW1wdGlvbnMgaXQgbWFrZXMgYWJvdXQgdGhlIGBkZXZgIHN0cnVjdHVyZS4gS25vd2luZyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB3aWxsIG1ha2UgdW5kZXJzdGFuZGluZyB0aGUgc3Vic2VxdWVudCBjb2RlIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDc6MDA6MDQuOTI4NzgwNDQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkxNTQ3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTM0PXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTcwOlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTQzOTE9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0Mzk2OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDM5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NTQxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0NTQyOkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDU0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTM4NT1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMzg3LVxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDozODg6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMzg5LXZvaWQga3N6X3N3aXRjaF9yZW1vdmUoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjA1LjAzNzk1NDY3N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2MjMzMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUga3N6X2NvbW1vbi5jIGZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBga3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIGluIHRoZSBvdmVyYWxsIGRldmljZSBkcml2ZXIuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCBmb3IgdGhlIHN3aXRjaCBoYXJkd2FyZSwgc28gaXTigJlzIGxpa2VseSB3aGVyZSBJJ2xsIGZpbmQgaW5pdGlhbCBzZXR1cCBvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgaGFyZHdhcmUgaXMgcmVnaXN0ZXJlZCwgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJ3MgZGV2aWNlIG1vZGVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAsIGFuZCBhbnkgZWFybHkgY29uZmlndXJhdGlvbiBzdGVwcyBuZWVkZWQgdG8gYnJpbmcgdGhlIHN3aXRjaCBpbnRvIGEgZnVuY3Rpb25hbCBzdGF0ZS4gSSBhbnRpY2lwYXRlIHRoZXJlJ2xsIGJlIGEgbG90IG9mIGludGVyZXN0aW5nIGRldGFpbCBhYm91dCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDowOC4xNDQxODk3NDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzOTYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQzOTY6XFx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG40Mzk3OlxcdHtcXG40Mzk4OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICppbmZvO1xcbjQzOTk6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG40NDAwOlxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuNDQwMTpcXHRcXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XFxuNDQwMjpcXHRcXHRpbnQgcmV0O1xcbjQ0MDM6XFx0XFx0aW50IGk7XFxuNDQwNDpcXHRcXG40NDA1OlxcdFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjQ0MDY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHUElPRF9PVVRfTE9XKTtcXG40NDA3OlxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG40NDA4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3Bpbyk7XFxuNDQwOTpcXHRcXG40NDEwOlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG40NDExOlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG40NDEyOlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfY29uZmlndXJlX3N0cmFwc19zcGkoZGV2KTtcXG40NDEzOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuNDQxNDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQ0MTU6XFx0XFx0XFx0fVxcbjQ0MTY6XFx0XFxuNDQxNzpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVxcdTAwM2VyZXNldF9ncGlvLCAxKTtcXG40NDE4OlxcdFxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xcbjQ0MTk6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuNDQyMDpcXHRcXHRcXHRtc2xlZXAoMTAwKTtcXG40NDIxOlxcdFxcbjQ0MjI6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWljcm9jaGlwLGtzejg0NjNcXFwiKSkge1xcbjQ0MjM6XFx0XFx0XFx0XFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcXG40NDI0OlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuNDQyNTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQ0MjY6XFx0XFx0XFx0fVxcbjQ0Mjc6XFx0XFx0fVxcbjQ0Mjg6XFx0XFxuNDQyOTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRldl9tdXRleCk7XFxuNDQzMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ21hcF9tdXRleCk7XFxuNDQzMTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuNDQzMjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5fbXV0ZXgpO1xcbjQ0MzM6XFx0XFxuNDQzNDpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xcbjQ0MzU6XFx0XFx0aWYgKHJldClcXG40NDM2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuNDQzNzpcXHRcXG40NDM4OlxcdFxcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVxcdTAwM2VjaGlwX2lkKTtcXG40NDM5OlxcdFxcdGlmICghaW5mbylcXG40NDQwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjQ0NDE6XFx0XFxuNDQ0MjpcXHRcXHQvKiBVcGRhdGUgdGhlIGNvbXBhdGlibGUgaW5mbyB3aXRoIHRoZSBwcm9iZWQgb25lICovXFxuNDQ0MzpcXHRcXHRkZXYtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjQ0NDQ6XFx0XFxuNDQ0NTpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldiwgXFxcImZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDc6MDA6MDguMTQ0MzY3MjYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTk2NjIwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwqKlxuXG5Pa2F5LCBzbyBJIHNlZSBhIGZ1bmN0aW9uIGNhbGw6IGBrc3pfc3dpdGNoX2RldGVjdChkZXYpYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbyBpcyBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGRlZmluaXRpb24gb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGlzIGRyaXZlciBvciBzeXN0ZW0uIFdoYXQgYXJlIHRoZSBpbnB1dHM/IFdoYXQncyB0aGUgZXhwZWN0ZWQgb3V0cHV0IG9yIHNpZGUgZWZmZWN0cz8gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBoYXJkd2FyZSBhY2Nlc3NlcywgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBvciBhbnkgc3RhdGUgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBcImRldGVjdFwiIG1lYW5zIGluIHRoaXMgY29udGV4dCDigJMgaXMgaXQgYW4gaW5pdGlhbGl6YXRpb24sIGEgcG9sbGluZyBtZWNoYW5pc20sIG9yIHNvbWV0aGluZyBtb3JlIGFjdGl2ZT8gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJuYWxzIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAgaXMgdGhlIG5leHQsIGNydWNpYWwgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjExLjA2NDAzMjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM1ODQ0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzE1OD1ib29sIGtzel9nZXRfZ2JpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMxNzUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzE3NjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzE3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz00Mzk2PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NDMzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjQ0MzQ6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00NDM1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjExLjQzNzYyMDYxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA0ODMzODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHJlYWRpbmcgYGtzel9zd2l0Y2hfZGV0ZWN0YDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE9iamVjdGl2ZSoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGlzIGNsZWFyOiBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBga3N6X3N3aXRjaF9kZXRlY3RgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyogd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2Ygd2hhdGV2ZXIgc3lzdGVtIGl0J3MgYSBwYXJ0IG9mLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyBkZXRlY3RpbmcsIGhvdyBpdCdzIGRvaW5nIGl0LCBhbmQgd2h5IHRoaXMgZGV0ZWN0aW9uIGlzIHNpZ25pZmljYW50LiBHaXZlbiB0aGUgbmFtZSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUga2luZCBvZiBzd2l0Y2gtcmVsYXRlZCBldmVudCBvciBzdGF0ZSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgS1NaIGNoaXAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgbmFtZSwgaW4gdGhlIGZ1bmN0aW9uJ3MgY29tbWVudHMgKGlmIGFueSksIGFuZCB0aGVuIGJ5IHJlYWRpbmcgdGhlIGNvZGUgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjE3LjA0MjQ1NjczNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzE3NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzE3NjpcXHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzE3NzpcXHR7XFxuMzE3ODpcXHRcXHR1OCBpZDEsIGlkMiwgaWQ0O1xcbjMxNzk6XFx0XFx0dTE2IGlkMTY7XFxuMzE4MDpcXHRcXHR1MzIgaWQzMjtcXG4zMTgxOlxcdFxcdGludCByZXQ7XFxuMzE4MjpcXHRcXG4zMTgzOlxcdFxcdC8qIHJlYWQgY2hpcCBpZCAqL1xcbjMxODQ6XFx0XFx0cmV0ID0ga3N6X3JlYWQxNihkZXYsIFJFR19DSElQX0lEMCwgXFx1MDAyNmlkMTYpO1xcbjMxODU6XFx0XFx0aWYgKHJldClcXG4zMTg2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzE4NzpcXHRcXG4zMTg4OlxcdFxcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XFxuMzE4OTpcXHRcXHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcXG4zMTkwOlxcdFxcbjMxOTE6XFx0XFx0c3dpdGNoIChpZDEpIHtcXG4zMTkyOlxcdFxcdGNhc2UgS1NaODRfRkFNSUxZX0lEOlxcbjMxOTM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xcbjMxOTQ6XFx0XFx0XFx0YnJlYWs7XFxuMzE5NTpcXHRcXHRjYXNlIEtTWjg3X0ZBTUlMWV9JRDpcXG4zMTk2OlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xcbjMxOTc6XFx0XFx0XFx0XFx0dTggdmFsO1xcbjMxOTg6XFx0XFxuMzE5OTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XFxuMzIwMDpcXHRcXG4zMjAxOlxcdFxcdFxcdFxcdGtzel9yZWFkOChkZXYsIEtTWjhfUE9SVF9TVEFUVVNfMCwgXFx1MDAyNnZhbCk7XFxuMzIwMjpcXHRcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXFxuMzIwMzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XFxuMzIwNDpcXHRcXHRcXHR9IGVsc2UgaWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk0KSB7XFxuMzIwNTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk0X0NISVBfSUQ7XFxuMzIwNjpcXHRcXHRcXHR9IGVsc2Uge1xcbjMyMDc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIwODpcXHRcXHRcXHR9XFxuMzIwOTpcXHRcXHRcXHRicmVhaztcXG4zMjEwOlxcdFxcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxcbjMyMTE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4OF9DSElQX0lEXzYzKVxcbjMyMTI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODhYM19DSElQX0lEO1xcbjMyMTM6XFx0XFx0XFx0ZWxzZVxcbjMyMTQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIxNTpcXHRcXHRcXHRicmVhaztcXG4zMjE2OlxcdFxcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XFxuMzIxNzpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxcbjMyMTg6XFx0XFx0XFx0ICAgIGlkMiA9PSBLU1o4ODk1X0NISVBfSURfOTVSKVxcbjMyMTk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODg5NV9DSElQX0lEO1xcbjMyMjA6XFx0XFx0XFx0ZWxzZVxcbjMyMjE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMzIyMjpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcXHUwMDI2aWQ0KTtcXG4zMjIzOlxcdFxcdFxcdGlmIChyZXQpXFxuMzIyNDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjMyMjU6XFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IFNXX0tTWjg4NjQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjE3LjA0MjczNzA2NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk4NDEzMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGtzel9yZWFkMTZgIEZ1bmN0aW9uIENhbGwqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGlzIGRyYXduIHRvIHRoZSBga3N6X3JlYWQxNmAgY2FsbC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBkYXRhIGdyYWIgaGFwcGVucy4gSWYgaXQgZmFpbHMsIHRoYXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBlcnJvciwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoYXQgZ3JhY2VmdWxseS4gQnV0IHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHdoYXQgaGFwcGVucyBpZiBpdCAqZG9lc24ndCogZmFpbC5cblxuTm93LCBpZiB3ZSdyZSB1c2luZyB0aGUgYGkyYy1zdHViYCBkZXZpY2UgaW5zdGFudGlhdGlvbiwgdGhlIHZhbHVlcyBmcm9tIGBrc3pfcmVhZDE2YCBhcmVuJ3QgZ29pbmcgdG8gYmUgdGhlIHJlYWwgZGVhbCwgYXJlIHRoZXk/IFRoZSBzdHViJ3MgbWVtb3J5IGlzIHdoYXQgd2lsbCBiZSByZWFkLiBUaGF0IG1lYW5zIHRoZSByZWFkcyBhcmUgdmVyeSBsaWtlbHkgcmV0dXJuaW5nIHplcm8sIG9yIHNvbWUgb3RoZXIgaW5pdGlhbCB2YWx1ZS4gU28sIGlmIHdlIGdldCBhIHplcm8sIGBpZDFgIHdpbGwgYmUgemVyby4gV2hpY2ggbWFrZXMgbWUgd29uZGVyIHdoYXQgdGhlIGV4cGVjdGVkIG5vbi16ZXJvIHZhbHVlcyBhcmUsIGluIHRoZSByZWFsLXdvcmxkIHNjZW5hcmlvLlxuXG5MZXQncyBzZWUgd2hhdCBoYXBwZW5zIG5leHQgaW4gdGhlIGBrc3pfc3dpdGNoX2RldGVjdGAgc2VxdWVuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29kZSBpbnRlcnByZXRzIHRoZSB2YWx1ZSByZXR1cm5lZCBhbmQgZGV0ZXJtaW5lcyBpZiBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGRldGVjdGVkIGEgc3dpdGNoLiBXaGVyZSBkb2VzIGl0IGdvIGZyb20gaGVyZT8gV2hhdCBpcyBpdCBhY3R1YWxseSBsb29raW5nIGZvcj8gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1YnNlcXVlbnQgc3RlcHMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5ODAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjIxLjI0MTE1MjQzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzIyNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzIyNjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XFxuMzIyNzpcXHRcXHRcXHRicmVhaztcXG4zMjI4OlxcdFxcdGRlZmF1bHQ6XFxuMzIyOTpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDMyKGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQzMik7XFxuMzIzMDpcXHRcXHRcXHRpZiAocmV0KVxcbjMyMzE6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XFxuMzIzNDpcXHRcXHRcXHRpZDMyIFxcdTAwMjY9IH4weEZGO1xcbjMyMzU6XFx0XFxuMzIzNjpcXHRcXHRcXHRzd2l0Y2ggKGlkMzIpIHtcXG4zMjM3OlxcdFxcdFxcdGNhc2UgS1NaOTQ3N19DSElQX0lEOlxcbjMyMzg6XFx0XFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuMzIzOTpcXHRcXHRcXHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcXG4zMjQwOlxcdFxcdFxcdGNhc2UgS1NaOTU2N19DSElQX0lEOlxcbjMyNDE6XFx0XFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuMzI0MjpcXHRcXHRcXHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcXG4zMjQzOlxcdFxcdFxcdGNhc2UgTEFOOTM3MV9DSElQX0lEOlxcbjMyNDQ6XFx0XFx0XFx0Y2FzZSBMQU45MzcyX0NISVBfSUQ6XFxuMzI0NTpcXHRcXHRcXHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcXG4zMjQ2OlxcdFxcdFxcdGNhc2UgTEFOOTM3NF9DSElQX0lEOlxcbjMyNDc6XFx0XFxuMzI0ODpcXHRcXHRcXHRcXHQvKiBMQU45NjQ2IGRvZXMgbm90IGhhdmUgaXRzIG93biBjaGlwIGlkLiAqL1xcbjMyNDk6XFx0XFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXFxuMzI1MDpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBpZDMyO1xcbjMyNTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzI1MjpcXHRcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4zMjUzOlxcdFxcdFxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCxcXG4zMjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbjMyNTU6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4zMjU2OlxcdFxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzI1NzpcXHRcXG4zMjU4OlxcdFxcdFxcdFxcdGlmIChpZDQgPT0gU0tVX0lEX0tTWjg1NjMpXFxuMzI1OTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NTYzX0NISVBfSUQ7XFxuMzI2MDpcXHRcXHRcXHRcXHRlbHNlIGlmIChpZDQgPT0gU0tVX0lEX0tTWjk1NjMpXFxuMzI2MTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5NTYzX0NISVBfSUQ7XFxuMzI2MjpcXHRcXHRcXHRcXHRlbHNlXFxuMzI2MzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQ7XFxuMzI2NDpcXHRcXG4zMjY1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMyNjY6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zMjY3OlxcdFxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuMzI2ODpcXHRcXHRcXHRcXHRcXHRcXFwidW5zdXBwb3J0ZWQgc3dpdGNoIGRldGVjdGVkICV4KVxcXFxuXFxcIiwgaWQzMik7XFxuMzI2OTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zMjcwOlxcdFxcdFxcdH1cXG4zMjcxOlxcdFxcdH1cXG4zMjcyOlxcdFxcdHJldHVybiAwO1xcbjMyNzM6XFx0fVxcbjMyNzQ6XFx0XFxuMzI3NTpcXHQvKiBCYW5kd2lkdGggaXMgY2FsY3VsYXRlZCBieSBpZGxlIHNsb3BlL3RyYW5zbWlzc2lvbiBzcGVlZC4gVGhlbiB0aGUgQmFuZHdpZHRoXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjIxLjI0MTk2MDYwN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzAyNjY0MDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hpcCBJRCBEZXRlY3Rpb24gYW5kIFN5emthbGxlcidzIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hpcCBJRCBkZXRlY3Rpb24gY29kZS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgYGlkMWAgcmVhZHMgMCwgd2UganVtcCBpbnRvIHRoZSBgZGVmYXVsdDpgIGNhc2UuIFRoZW4gaXQgcmVhZHMgYGlkMzJgIHVzaW5nIGBrc3pfcmVhZDMyYC4gSWYgYGlkMzJgIGhhcHBlbnMgdG8gYmUgMCwgYSBiaXRtYXNrIGNsZWFycyB0aGUgbG93ZXIgOCBiaXRzLCBhbmQgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgYWN0cyBvbiBgaWQzMmAuIFNpbmNlIDAgaXNuJ3Qgb25lIG9mIHRoZSByZWNvZ25pemVkIGNoaXAgSURzIChsaWtlIGBLU1o5NDc3X0NISVBfSURgKSwgaXQgcHJpbnRzIFwidW5zdXBwb3J0ZWQgc3dpdGNoIGRldGVjdGVkIDApXCIgYW5kIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0J3MgYSBwcmV0dHkgc3RhbmRhcmQgZXJyb3IuXG5cblRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgd2UgY2FuJ3QgaW5zdGFudGlhdGUgdGhpcyBkcml2ZXIgdXNpbmcgYGkyYy1zdHViYCB1bmxlc3Mgd2Ugc29tZWhvdyBwcmUtbG9hZCB0aGUgc3R1YidzIG1lbW9yeSB3aXRoIHRoZSAqY29ycmVjdCogY2hpcCBJRC4gTm93LCBjYW4gd2UgYWN0dWFsbHkgZG8gdGhhdCB3aXRoIGBpMmMtc3R1YmA/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBJIHJlbWVtYmVyIGBpMmNzZXRgIGZyb20gdXNlci1zcGFjZSBjYW4gd3JpdGUgdG8gaXRzIHJlZ2lzdGVycyBiZWZvcmUgdGhlIGRyaXZlciBiaW5kcywgYW5kIEkgdGhpbmsgc3l6a2FsbGVyIGNhbiBhbHNvIHdyaXRlIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC8uLi5gIG9yIGV2ZW4gYC9kZXYvaTJjLTBgIHRvIHBvcHVsYXRlIHRoZSBgaTJjLXN0dWJgJ3MgbWVtb3J5LlxuXG5CdXQgaGFuZyBvbi4uLiBDYW4gc3l6a2FsbGVyICplYXNpbHkqIHByZS1wb3B1bGF0ZSBhbiBgaTJjLXN0dWJgIHdpdGggc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGJlZm9yZSBwcm9iaW5nIGEgZHJpdmVyPyBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vdCBhIGZ1bmN0aW9uIGxpa2UgYHN5el9pMmNfc2V0dXBgIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgdGhpcy4gSSB0aG91Z2h0IEkgcmVtZW1iZXJlZCBzb21ldGhpbmcgbGlrZSBpdC4uLiBIbW0sIG1heWJlIHN5emthbGxlciBjYW4gZnV6eiBJMkMsIGJ1dCB2aWEgYHZoY2lgIG9yIGBpMmMtZGV2YC4gRG9lcyBpdCBoYXZlIGEgXCJ2aXJ0dWFsIEkyQyBhZGFwdGVyXCI/IE5vdCB0aGF0IEkgcmVjYWxsLiBJdCBoYXMgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBzaW1pbGFyIG9uZXMgZm9yIFdpRmkuXG5cbkZvciBJMkMsIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGRlZGljYXRlZCBwc2V1ZG8tZGV2aWNlIHRoYXQgYWxsb3dzIGFyYml0cmFyeSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGZyb20gdGhlIGtlcm5lbCdzIHBlcnNwZWN0aXZlLiBJdCdzIGZydXN0cmF0aW5nIGJlY2F1c2UgaXQgd291bGQgYmUgcGVyZmVjdCBmb3IgdGhpcyBzaXR1YXRpb24uIEJ1dCB3YWl0LCBJJ20gc2Vjb25kLWd1ZXNzaW5nIG15c2VsZi4gTWF5YmUgdGhlcmUgKmlzKiBhIGBzeXpfaTJjX3NldHVwYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkyQyBmdXp6aW5nIGlzIHByZXNlbnQgaW4gc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE4OCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjI4Ljk0NDYyODM2MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMDA0MzE4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X2kyY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjMyLjA3NDY4MDg4NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ3NDE4MzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBzcGVha2luZyBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipDb25zaWRlcmluZyBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UgKFNQSSkqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gd2hhdCBhYm91dCBTUEkgZm9yIHRoaXMgYXBwbGljYXRpb24/IEdpdmVuIHRoZSBjb25zdHJhaW50cyBhbmQgdGhlIHBlcmZvcm1hbmNlIGdvYWxzIHdlJ3JlIGFpbWluZyBmb3IsIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBwcm9zIGFuZCBjb25zIGluIG15IGhlYWQuIFNQSSdzIHNpbXBsaWNpdHkgaXMgZGVmaW5pdGVseSBhdHRyYWN0aXZlLCBlc3BlY2lhbGx5IGZyb20gYSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS4gVGhlIGNsb2NrZWQsIHN5bmNocm9ub3VzIG5hdHVyZSBpcyBnZW5lcmFsbHkgcm9idXN0IGFuZCBwcmV0dHkgZWFzeSB0byBtYW5hZ2Ugd2l0aCBzdGFuZGFyZCBtaWNyb2NvbnRyb2xsZXJzLiBQbHVzLCBpdCdzIHR5cGljYWxseSBmYXN0ZXIgdGhhbiBJMkMsIHdoaWNoIGlzIGEgbWFqb3IgcG9pbnQgdG8gY29uc2lkZXIgZ2l2ZW4gdGhlIGRhdGEgdHJhbnNmZXIgcmVxdWlyZW1lbnRzLiBIb3dldmVyLCBpcyB0aGUgcmVxdWlyZWQgdGhyb3VnaHB1dCBhY2hpZXZhYmxlIGdpdmVuIHRoYXQgd2UgbmVlZCB0byBleGNoYW5nZSBkYXRhIHdpdGggbXVsdGlwbGUgc2xhdmVzPyBXZSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBjbG9jayBzcGVlZHMsIHRoZSBudW1iZXIgb2Ygc2xhdmUgc2VsZWN0cywgYW5kIHBvdGVudGlhbCBidXMgY29udGVudGlvbi4gVGhlIG11bHRpLW1hc3RlciBzdXBwb3J0IGlzIG5vdCBhcyBjb21tb24sIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5IGlmIHdlIG5lZWQgdG8gZXhwYW5kIHRoZSBjYXBhYmlsaXRpZXMgZG93biB0aGUgcm9hZC4gQWxyaWdodCwgdGhlIHNpbXBsaWNpdHkgb2YgaGFyZHdhcmUgaW50ZWdyYXRpb24gaXMgYXBwZWFsaW5nOyB0aGUgc3BlZWQgbWlnaHQgYmUgc3VmZmljaWVudDsgYnV0IG11bHRpcGxlIHNsYXZlcyBtaWdodCBjYXVzZSBpc3N1ZXMsIGxldCdzIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLiBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHNpZ25hbCBpbnRlZ3JpdHkgaXNzdWVzIGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBhZGRlZCBoYXJkd2FyZSBvdmVyaGVhZC4gTGV0IG1lIGNvbXBhcmUgaXQgdG8gSTJDIGFuZCBDQU4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTgxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDozNS44MjIxMDMzNDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjE1NjY2NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9zcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDozOC4zNDM2ODM1MTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxNjM2NDY5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIgaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQ2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIgaW4gc3l6a2FsbGVyP1wiIEl0IHNlZW1zIGxpa2UgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGBpMmMtc3R1YmAgcmVsYXRlZC4gVXN1YWxseSwgdGhlc2UgYXJlIG9mZi1saW1pdHMgdW5sZXNzIHRoZXJlJ3MgYW4gZXhwbGljaXQgZW11bGF0aW9uIHBhdGguIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIGFyZSBhIG5vLWdvLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgcmVhY2hhYmxlP1xuXG5JdCdzIGFuIEkyQy9TUEkvU01JIGRldmljZSBkcml2ZXIuIEkgaW1tZWRpYXRlbHkgdGhpbmsgdGhhdCB3aXRob3V0IHRoZSByaWdodCBoYXJkd2FyZSBvciBhIGdvb2QgZW11bGF0b3IsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgcHJvYmFibHkgZmFpbC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBmYWlsIGF0IGBrc3pfc3dpdGNoX2RldGVjdGAgYmVjYXVzZSBpdCdzIHJlYWRpbmcgdGhlIGNoaXAgSUQsIGFuZCB3ZSdkIG5lZWQgdG8gcHJvdmlkZSBhIHZlcnkgc3BlY2lmaWMgdmFsdWUuIFN5emthbGxlciwgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgZG9lc24ndCBpbmhlcmVudGx5IGtub3cgaXQgbmVlZHMgdG8gd3JpdGUgYEtTWjk4OTdfQ0hJUF9JRGAgdG8gYSBzcGVjaWZpYyByZWdpc3RlciB2aWEgSTJDIGJlZm9yZSB0aGUgcHJvYmUgY2FuIGV2ZW4gKmJlZ2luKi4gU28sIHRoZSBwcm9iZSBpcyBsaWtlbHkgdG8gZmFpbC5cblxuVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGtzel9zd2l0Y2hfY2hpcHNbXWAsIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgYGtzel9zd2l0Y2hfZGV0ZWN0YCBzdWNjZWVkcy4gU28gaWYgdGhlIGRldGVjdGlvbiBmYWlscywgdGhlIGRldmljZSBkb2Vzbid0IHJlZ2lzdGVyLCBhbmQgdGhlIHN1YnNlcXVlbnQgY29kZSBwYXRocyB0aGF0IHVzZSBgc2dtaWlfcG9ydGAsIGxpa2UgYGtzejk0Nzdfc2V0dXBgLCBhcmUgbmV2ZXIgZXZlbiBleGVjdXRlZC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBiZWNhdXNlIHdpdGhvdXQgdGhlIGhhcmR3YXJlIHRoZSBkZXRlY3Rpb24gd2lsbCBmYWlsLlxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgZm9yIG90aGVyIGVudHJ5IHBvaW50cyB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ291bGQgdGhpcyBiZSBpbnN0YW50aWF0ZWQgdmlhIHRoZSBkZXZpY2UgdHJlZSBhbmQgc29tZSBkdW1teSBTUEkvSTJDIGNvbnRyb2xsZXIgdGhhdCBzeXprYWxsZXIgY29udHJvbHM/IEkgZG9uJ3QgdGhpbmsgc3l6a2FsbGVyICpjdXJyZW50bHkqIGhhcyBhIGR1bW15IFNQSS9JMkMgY29udHJvbGxlciB3aGVyZSBpdCBjYW4gcmV0dXJuIHNwZWNpZmljIHZhbHVlcyB0byBgc3BpX3N5bmNgIG9yIGBpMmNfdHJhbnNmZXJgLCBzbyB0aGF0J3MgcHJvYmFibHkgYSBkZWFkIGVuZC5cblxuV2FpdCwgdGhlcmUgKmlzKiBgQ09ORklHX0kyQ19TVFVCYC4gSWYgc3l6a2FsbGVyIGNvdWxkIHdyaXRlIHRvIGAvZGV2L2kyYy1YYCBiZWZvcmUgYmluZGluZyB0aGUgZHJpdmVyLCBpdCAqY291bGQqIHRoZW9yZXRpY2FsbHkgc2V0IHRoZSBjaGlwIElELiBCdXQgdGhlIGZ1enplciB3b3VsZG4ndCBrbm93IGl0ICpuZWVkcyogdG8uIEl0IHdvdWxkIGhhdmUgdG8gcmFuZG9tbHkgd3JpdGUgdGhlICpleGFjdCogY2hpcCBJRCB0byB0aGUgKmV4YWN0KiByZWdpc3RlciBhbmQgKnRoZW4qIGJpbmQgdGhlIGRyaXZlci4gVGhlIGNoYW5jZXMgb2YgdGhhdCBhcmUgcHJhY3RpY2FsbHkgemVyby5cblxuV2FpdCwgd2hhdCAqZXhhY3RseSogZGlkIHRoZSBwYXRjaCBkbz8gT2gsIHJpZ2h0LCBpdCdzIGp1c3QgYWRkaW5nIGAuc2dtaWlfcG9ydCA9IDdgIHRvIGEgc3RydWN0OlxuYGBgY1xuQEAgLTE1OTEsNiArMTU5MSw3IEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbiBcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuK1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4gXHR9LFxuIFxuIFx0W0tTWjk4OTNdID0ge1xuYGBgXG5UaGlzIGlzIGEgZGF0YS1kcml2ZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIEtTWjk4OTcgc3dpdGNoIGNoaXAuIEl0J3MgaGFyZHdhcmUtc3BlY2lmaWMuIEV2ZW4gKmlmKiB3ZSBzb21laG93IHJlYWNoZWQgdGhpcyBjb2RlLCBhbGwgaXQncyBkb2luZyBpcyBzZXR0aW5nIGEgcHJvcGVydHkgZm9yIGEgc3BlY2lmaWMgY2hpcC4gU2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgaGFyZHdhcmUgYW5kIGNhbid0IGVhc2lseSBlbXVsYXRlIGl0LCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBkZWFkIGVuZC5cbkxldCBtZSBiZSBjZXJ0YWluIHRoYXQgaXMgdGhlIG9ubHkgcGxhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDg1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA3OjAwOjU0LjUwNzMzMjg3MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzOTYyNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtzel9zd2l0Y2hfY2hpcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o4ODYzX2R0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwMS1cXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6ODg2M1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjIwMjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg4WDNdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwMy1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwNS1cXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6ODg3M1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjIwNjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg4WDNdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIwNy1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtzejk0NzdfZHRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTEtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk0NzdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5MjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk0NzddXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTkzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTUtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTZcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo5NjpcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTk3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtOTktXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDA6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDMtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDQ6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDctXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk1NjNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMDg6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMDktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTEtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTI6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTUtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMTY6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMTktXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk1NjdcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjA6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjMtXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMjQ6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMjUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTEyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIGtzejg4NzNfcmVnaXN0ZXJfc2V0ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxMjQ4OmNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xMjQ5LVxcdFtLU1o4NDYzXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzEtfTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoxOTMyOkVYUE9SVF9TWU1CT0xfR1BMKGtzel9zd2l0Y2hfY2hpcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTE5MzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MTkzND1zdGF0aWMgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmtzel9sb29rdXBfaW5mbyh1bnNpZ25lZCBpbnQgcHJvZF9udW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzg6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoa3N6X3N3aXRjaF9jaGlwcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjE5Mzk6XFx0XFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXAgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0xOTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9NDAxPXBoeV9pbnRlcmZhY2VfdCBrc3pfZ2V0X3htaWkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGJvb2wgZ2JpdCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDAyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW107XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDAzLWludCBrc3pfc3dpdGNoX21hY2FkZHJfZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0yMjY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6X2R0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjI4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMjk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NDYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzMC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjMyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NzY1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMzM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NzY1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzNC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjM2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4Nzk0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyMzc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4Nzk0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTIzOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4Nzk1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4Nzk1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4OFgzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI0Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjQ4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODY0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNDk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4ODY0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjUyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODczXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4OFgzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjU2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4ODk1XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNTc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4ODk1XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI1OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjYwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NDc3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODk2XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI2Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjY4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODk3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNjk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjcyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNzM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjc2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NTYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyNzc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI3OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjgwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTYzXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjg4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NTY3XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyODk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjkyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcwXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyOTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcwXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMjk2LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoyOTc6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcxXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTI5OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzAwLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzcyXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDE6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcyXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwMi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA0LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzczXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDU6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzczXVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMwNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzA4LVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45Mzc0XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMDk6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45Mzc0XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxMC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzEyLVxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45NjQ2XFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozMTM6XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTMxNC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMDo1NC42OTEzMTA2ODlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1Njk2ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZWFoLCBpdCdzIGp1c3QgZGVhbGluZyB3aXRoIGEgaGFyZHdhcmUgcHJvcGVydHkgdGFibGUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgS1NaOTg5N2AgY2hpcC4gTm93LCB0aGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB0aGUga2luZCBvZiBlbnZpcm9ubWVudHMgSSB0eXBpY2FsbHkgd29yayBpbiwgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlcmUncyBubyB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlIHBhdGggd2l0aG91dCBzb21lIHZlcnkgc3BlY2lmaWMsIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGlzIHN3aXRjaC4gQW5kLCBmcmFua2x5LCB3ZSBkb24ndCBoYXZlIHRoYXQgZW11bGF0aW9uIGluIHBsYWNlLlxuXG5FdmVuIGlmIGJ5IHNvbWUgbWlyYWNsZSB3ZSBjb3VsZCBpbnN0YW50aWF0ZSB0aGlzIHRoaW5nLCBhbGwgdGhpcyBwcm9wZXJ0eSBjaGFuZ2UgYW1vdW50cyB0byBpcyBhIGNvbnN0YW50IGFkZGl0aW9uLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbm92ZWwgb3IgaW50ZXJlc3RpbmcgZnV6emluZyBzdXJmYWNlLiBUaGVyZWZvcmUsIGdpdmVuIGFsbCBvZiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCB0byB0ZXN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjE4LCJPdXRwdXRUb2tlbnMiOjE0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNzowMTowMC4xNDgyODA2MDJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSAoYC5zZ21paV9wb3J0ID0gN2ApIHRvIHRoZSBgS1NaOTg5N2AgY2hpcCBkYXRhIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIEkyQy9TUEkvU01JIGhhcmR3YXJlIHRvIHByb2JlIHN1Y2Nlc3NmdWxseSwgYXMgaXQgcmVhZHMgYW5kIHZlcmlmaWVzIHRoZSBjaGlwIElEIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbiAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkuIFdpdGhvdXQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBzcGVjaWZpYyBzd2l0Y2ggY2hpcCwgdGhlIGNvZGUgcGF0aHMgdXRpbGl6aW5nIHRoaXMgcHJvcGVydHkgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSAoYC5zZ21paV9wb3J0ID0gN2ApIHRvIHRoZSBgS1NaOTg5N2AgY2hpcCBkYXRhIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIEkyQy9TUEkvU01JIGhhcmR3YXJlIHRvIHByb2JlIHN1Y2Nlc3NmdWxseSwgYXMgaXQgcmVhZHMgYW5kIHZlcmlmaWVzIHRoZSBjaGlwIElEIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbiAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkuIFdpdGhvdXQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBzcGVjaWZpYyBzd2l0Y2ggY2hpcCwgdGhlIGNvZGUgcGF0aHMgdXRpbGl6aW5nIHRoaXMgcHJvcGVydHkgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowr2ld9[1] Phase: Running StartedAt: 2026-07-03 07:01:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2ld9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-03 07:01:35 +0000 UTC FinishedAt: 2026-07-03 07:01:47 +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,}