Name: series-workflow7hwrm Phase: Succeeded StartedAt: 2026-07-27 17:26:04 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[0] Phase: Succeeded StartedAt: 2026-07-27 17:26:04 +0000 UTC FinishedAt: 2026-07-27 17:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 17:26:04 +0000 UTC FinishedAt: 2026-07-27 17:47:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_QMI_WWAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_QMI_WWAN" ], "series_id": "a86cc50c-7e2c-49f3-9841-9682f817f920" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "usbnet_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi45ZjExY2E0NDlhYWQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG5AQCAtMTc5NCw3ICYjNDM7MTc5NCw3IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4gXHQgKi9cbiBcdGRldi1cdTAwM2VoYXJkX210dSA9IG5ldC1cdTAwM2VtdHUgJiM0MzsgbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiBcdG5ldC1cdTAwM2VtaW5fbXR1ID0gMDtcbi1cdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4mIzQzO1x0bmV0LVx1MDAzZW1heF9tdHUgPSBuZXQtXHUwMDNlbXR1O1xuIFxuIFx0bmV0LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ1c2JuZXRfbmV0ZGV2X29wcztcbiBcdG5ldC1cdTAwM2V3YXRjaGRvZ190aW1lbyA9IFRYX1RJTUVPVVRfSklGRklFUztcbkBAIC0xODI1LDggJiM0MzsxODI1LDkgQEAgdXNibmV0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2LCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcbiBcdFx0aWYgKChkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZMQUdfTk9BUlApICE9IDApXG4gXHRcdFx0bmV0LVx1MDAzZWZsYWdzIHw9IElGRl9OT0FSUDtcbiBcbi1cdFx0aWYgKChkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZMQUdfTk9NQVhNVFUpID09IDAgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBuZXQtXHUwMDNlbWF4X210dSBcdTAwM2UgKGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxuJiM0MztcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbiYjNDM7XHRcdFx0bmV0LVx1MDAzZW1heF9tdHUgPSBFVEhfTUFYX01UVTtcbiYjNDM7XHRcdGVsc2VcbiBcdFx0XHRuZXQtXHUwMDNlbWF4X210dSA9IGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXG4gXHRcdGlmIChuZXQtXHUwMDNlbXR1IFx1MDAzZSAoZGV2LVx1MDAzZWhhcmRfbXR1IC0gbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwppbmRleCAyNTUxODYzNWI3YjcyZC4uOWYxMWNhNDQ5YWFkNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMKQEAgLTE3OTQsNyAmIzQzOzE3OTQsNyBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKQogCSAqLwogCWRldi0mZ3Q7aGFyZF9tdHUgPSBuZXQtJmd0O210dSAmIzQzOyBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbjsKIAluZXQtJmd0O21pbl9tdHUgPSAwOwotCW5ldC0mZ3Q7bWF4X210dSA9IEVUSF9NQVhfTVRVOwomIzQzOwluZXQtJmd0O21heF9tdHUgPSBuZXQtJmd0O210dTsKIAogCW5ldC0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7dXNibmV0X25ldGRldl9vcHM7CiAJbmV0LSZndDt3YXRjaGRvZ190aW1lbyA9IFRYX1RJTUVPVVRfSklGRklFUzsKQEAgLTE4MjUsOCAmIzQzOzE4MjUsOSBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKQogCQlpZiAoKGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O2ZsYWdzICZhbXA7IEZMQUdfTk9BUlApICE9IDApCiAJCQluZXQtJmd0O2ZsYWdzIHw9IElGRl9OT0FSUDsKIAotCQlpZiAoKGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O2ZsYWdzICZhbXA7IEZMQUdfTk9NQVhNVFUpID09IDAgJmFtcDsmYW1wOwotCQkgICAgbmV0LSZndDttYXhfbXR1ICZndDsgKGRldi0mZ3Q7aGFyZF9tdHUgLSBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbikpCiYjNDM7CQlpZiAoZGV2LSZndDtkcml2ZXJfaW5mby0mZ3Q7ZmxhZ3MgJmFtcDsgRkxBR19OT01BWE1UVSkKJiM0MzsJCQluZXQtJmd0O21heF9tdHUgPSBFVEhfTUFYX01UVTsKJiM0MzsJCWVsc2UKIAkJCW5ldC0mZ3Q7bWF4X210dSA9IGRldi0mZ3Q7aGFyZF9tdHUgLSBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbjsKIAogCQlpZiAobmV0LSZndDttdHUgJmd0OyAoZGV2LSZndDtoYXJkX210dSAtIG5ldC0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB1c2JuZXQuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHR3ZWFraW5nIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgLCBzcGVjaWZpY2FsbHkgaG93IGBuZXQtJmd0O21heF9tdHVgIGlzIGhhbmRsZWQgd2l0aGluIGB1c2JuZXRfcHJvYmVgLiAgVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGluaXRpYWwgYXNzaWdubWVudDogaXQmIzM5O3Mgbm8gbG9uZ2VyIHN0YXJ0aW5nIHdpdGggYEVUSF9NQVhfTVRVYCBidXQgd2l0aCBgbmV0LSZndDttdHVgLiBUaGVuIGl0IGdldHMgY29uZGl0aW9uYWwgbG9naWMgdGhhdCYjMzk7cyBkZXBlbmRlbnQgb24gYEZMQUdfTk9NQVhNVFVgLiBUaGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgZGlmZmVyZW5jZSBpbiB0aGUgZGVmYXVsdCBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0IGNvbmZpZ3VyYXRpb24sIGFuZCB0aGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgc2V0cyBvZmYgYWxhcm0gYmVsbHMgZm9yIG1lLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgVVNCIG5ldHdvcmsgZGV2aWNlcy4gV2UgY2FuIGZ1enogdGhvc2UsIHJpZ2h0PyAgVVNCIGdhZGdldCBlbXVsYXRpb24sIGR1bW15X2hjZCwgdGhhdCBraW5kIG9mIHRoaW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgc3VpdGVkIHRvIHRlc3QgdGhpcy4mIzM0OyBBbnkgY2hhbmdlIHRvIHRoZSBNVFUgaXMgc29tZXRoaW5nIEkmIzM5O2Qgd2FudCB0byBmdXp6IHRob3JvdWdobHkuIE1UVS1yZWxhdGVkIGJ1Z3MgaGF2ZSBhIGhpc3Rvcnkgb2YgYmVpbmcuLi4gaW50ZXJlc3RpbmcuCgpUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiAgSSBrbm93IGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19VU0JfVVNCTkVUYCBpcyBlbmFibGVkLiAgU28sIEkgd2lsbCBsb29rIGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGNvbnRyb2wgYENPTkZJR19VU0JfVVNCTkVUYCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byB0aGVzZSBmbGFncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBwYXRjaCYjMzk7cyBiZWhhdmlvciB3aWxsIGJlIHRyaWdnZXJlZC4gVGhpcyBwYXRjaCBjb3VsZCBiZSBwcm9ibGVtYXRpYyBvciBhIG5vbi1pc3N1ZSBkZXBlbmRpbmcgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIGFuZCB0aGF0IGRldGVybWluZXMgd2hlcmUgbXkgbmV4dCBzdGVwcyBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNibmV0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19VU0JfTkVUX01DUzc4MzApXHQmIzQzOz0gbWNzNzgzMC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX1VTQl9VU0JORVQpXHQmIzQzOz0gdXNibmV0Lm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS0zMS1vYmotJChDT05GSUdfVVNCX05FVF9JTlQ1MVgxKVx0JiM0Mzs9IGludDUxeDEub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqVGhpbmtpbmcgVGhyb3VnaCBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfVVNCX1VTQk5FVGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhhdCBjb25maWcgaXRlbS4gQnV0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgd2VlZHMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGNydWNpYWwsIGF0IHRoaXMgc3RhZ2UsIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZXMgb3Igc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBvcHRpb25zLCBtb2R1bGVzLCBvciBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBDT05GSUdfVVNCX1VTQk5FVGAgY2FuIGV2ZW4gZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZywgSSBjb3VsZCBiZSBjaGFzaW5nIGEgcmVkIGhlcnJpbmcuIFRpbWUgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBVU0JfVVNCTkVUKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgVVNCX1VTQk5FVGAuIExldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrczogd2hhdCYjMzk7cyB0aGlzIHRoaW5nIHJlbGlhbnQgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uYWwgZWxlbWVudHMsIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzLCB0aGUgdW5kZXJseWluZyBkcml2ZXJzLCB0aGUga2VybmVsIG1vZHVsZXMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcCB0byB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IGFwcHJlY2lhdGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCBjb25maWd1cmF0aW9uIGFuZCBtYXAgb3V0IGl0cyBzdXBwb3J0aW5nIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIFVTQl9VU0JORVRcbiAxMzM6XHRcdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gMTM0Olx0XHRzZWxlY3QgTUlJXG4gMTM1Olx0XHRoZWxwXG4gMTM2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcbiAxMzc6XHRcdCAgd2l0aCBcJiMzNDttaW5pZHJpdmVyc1wmIzM0OyBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxuIDEzODpcdFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcbiAxMzk6XHRcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxuIDE0MDpcdFxuIDE0MTpcdFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcJiMzNDt1c2JuZXRcJiMzNDssIGFuZCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBsaW5rIG1pZ2h0IGJlOlxuIDE0MjpcdFxuIDE0MzpcdFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFwmIzM0O25ldHdvcmtcJiMzNDsgb3IgXCYjMzQ7ZGF0YSB0cmFuc2ZlclwmIzM0O1xuIDE0NDpcdFx0ICAgIGNhYmxlcy4gIFRoZXNlIGFyZSBvZnRlbiB1c2VkIHRvIG5ldHdvcmsgbGFwdG9wcyB0byBQQ3MsIGxpa2VcbiAxNDU6XHRcdCAgICBcJiMzNDtMYXBsaW5rXCYjMzQ7IHBhcmFsbGVsIGNhYmxlcyBvciBzb21lIG1vdGhlcmJvYXJkcy4gIFRoZXNlIHJlbHlcbiAxNDY6XHRcdCAgICBvbiBzcGVjaWFsaXplZCBjaGlwcyBmcm9tIG1hbnkgc3VwcGxpZXJzLlxuIDE0NzpcdFxuIDE0ODpcdFx0ICAtIEFuIGludGVsbGlnZW50IFVTQiBnYWRnZXQsIHBlcmhhcHMgZW1iZWRkaW5nIGEgTGludXggc3lzdGVtLlxuIDE0OTpcdFx0ICAgIFRoZXNlIGluY2x1ZGUgUERBcyBydW5uaW5nIExpbnV4IChpUGFxLCBZb3B5LCBaYXVydXMsIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKgoKUmlnaHQsIHNvIHRoaXMgdGhpbmcgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGFueSAqZXhwbGljaXQqIGRlcGVuZGVuY2llcyBsaXN0ZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGNvbnRleHQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoYXQgbG9jYXRpb24gaXMgaGlnaGx5IHN1Z2dlc3RpdmU7IGl0IGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQmIzM5O3MgZW5hYmxlZCBieSBzb21ldGhpbmcgaGlnaGVyIHVwLCBtb3N0IGxpa2VseSByZWxhdGVkIHRvIHRoZSBvdmVyYWxsIFVTQiBuZXR3b3JraW5nIHN1YnN5c3RlbS4gSSYjMzk7bSBiZXR0aW5nIHRoaXMgaXMgaG9va2VkIHVwIHRvLCBvciAqaXMqIHBhcnQgb2YsIGBVU0JfTkVUX0RSSVZFUlNgLCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBmZWF0dXJlIGZsYWcgdGhhdCBmYWxscyB1bmRlciB0aGF0IHVtYnJlbGxhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHJpZ2h0IGFuZCBJIGFtIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW1wbGljaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX05FVF9EUklWRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo4Om1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBVU0IgTmV0d29ya2luZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCYjMzk7cyBhIGtleSBhcmVhIGZvciBuZXR3b3JrIGNvbm5lY3Rpdml0eSB2aWEgVVNCLCBzbyB1bmRlcnN0YW5kaW5nIHdoYXQgaXQgKnJlbGllcyogb24gaXMgcGFyYW1vdW50LiBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlcyDigJMgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBjb25maWd1cmF0aW9ucywgb3IgaGFyZHdhcmUgc3VwcG9ydCDigJMgdGhhdCBtdXN0IGJlIGluIHBsYWNlIGZvciBgVVNCX05FVF9EUklWRVJTYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRpZ2dpbmcgdGhyb3VnaCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBjb2RlIGl0c2VsZiB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhvc2UgZGVwZW5kZW5jaWVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBgbWFrZSBtZW51Y29uZmlnYCBvciBhIHNpbWlsYXIgdG9vbCB0byB2aXN1YWxpemUgdGhlIGNvbm5lY3Rpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBmb3IgYnVpbGRpbmcgYSBzdGFibGUgYW5kIGVmZmljaWVudCBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIHRoYXQgbGV2ZXJhZ2VzIFVTQiBuZXR3b3JraW5nLCBzbyBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRjb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiAhVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiAgMTA6XHRcdGRlZmF1bHQgVVNCIGlmIFVTQlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAxMjpcdFxuICAxMzpcdGlmIFVTQl9ORVRfRFJJVkVSU1xuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBVU0JfQ0FUQ1xuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IENSQzMyXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XG4gIDIwOlx0XHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2OTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uOiBgVVNCX05FVF9EUklWRVJTYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYE5FVGAuIE1ha2VzIHNlbnNlLCB0aGUgZHJpdmVyIGlzIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBOb3csIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAg4oCTIHRoYXQmIzM5O3MgdGhlIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRyaXZlciBJIHdhbnQgdG8gdGFyZ2V0LgoKVGhlIHJlbGV2YW50IGZ1bmN0aW9uIEkmIzM5O20gZm9jdXNpbmcgb24gaGVyZSBpcyBgdXNibmV0X3Byb2JlYC4gSXQmIzM5O3MgYSBwcm9iZSBmdW5jdGlvbiwgc28gaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRyaWdnZXJlZCB3aGVuIGEgY29tcGF0aWJsZSBVU0IgZGV2aWNlIGdldHMgcGx1Z2dlZCBpbi4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBBbmQgdGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBkdW1teV9oY2QgZHJpdmVyLCBtYWtpbmcgdGVzdGluZyB0aGlzIGluY3JlZGlibHkgcHJhY3RpY2FsLiBUaGUgZm9jdXMgc3ltYm9sLCB3aXRob3V0IGEgZG91YnQsIHNob3VsZCBiZSBgdXNibmV0X3Byb2JlYC4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGRpZmYgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyIHdlcmUgbW9kaWZpZWQgYXMgd2VsbC4gTm9wZSwgb25seSBgdXNibmV0X3Byb2JlYC4gTm93LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgdXNibmV0X3Byb2JlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7bGwgYWZmZWN0IHRoZSBzY29wZSBvZiBob3cgSSYjMzk7bSB0aGlua2luZyBvZiBmdXp6aW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvdXNibmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jPTE3MjU9aW50XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTcyNjp1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE3Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTI5LX1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxOTMwOkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9wcm9iZSk7XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTkzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgc28gYHVzYm5ldF9wcm9iZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZDsgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBjaGFuZ2VzIGhvdyBJIG5lZWQgdG8gYXBwcm9hY2ggdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVVNCIG5ldHdvcmsgZnJhbWV3b3JrLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgVVNCX1VTQk5FVGAgaXMgdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBTcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9ORVRfQ0RDRVRIRVJgIGxldmVyYWdlIGl0LiBNeSBrZXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYFVTQl9VU0JORVRgIGl0c2VsZiAqY2FuKiBiZSBkaXJlY3RseSBwcm9iZWQsIG9yIGlmIGl0cyBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZHJpdmVycyB0aGF0IHV0aWxpemUgaXQuIFRoZSBmYWN0IHRoYXQgYHVzYm5ldF9wcm9iZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgb3RoZXIgZHJpdmVycywgY2xhcmlmaWVzIGl0cyByb2xlLiBJdCYjMzk7cyBhIGNlbnRyYWwgZnVuY3Rpb24uIEkgc2hvdWxkIG5vdyBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjYWxsaW5nIGludG8gYHVzYm5ldF9wcm9iZWAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xNDgxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhcV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0ODMtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQ4NDpcdC5wcm9iZVx0XHQ9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDg1LVx0LnN1c3BlbmRcdD0gYXFjMTExX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE2MTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFzaXhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNjE1LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE2MTY6XHQucHJvYmUgPVx0dXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE2MTctXHQuc3VzcGVuZCA9XHRhc2l4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE5Mzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF4ODgxNzlfMTc4YV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE5MzktXHQuaWRfdGFibGUgPVx0cHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTk0MDpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTk0MS1cdC5zdXNwZW5kID1cdGF4ODgxNzlfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jPTM1Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZWVtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTM1NC1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM6MzU1Olx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzU2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTk2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtOTcwLVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjk3MTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtOTcyLVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NjgzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjZGNfbWJpbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg1LVx0LmlkX3RhYmxlID0gbWJpbV9kZXZzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Njg2Olx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg3LVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMjc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGNkY19uY21fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjEyOS1cdC5pZF90YWJsZSA9IGNkY19kZXZzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMTMwOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTMxLVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX3N1YnNldF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jLTM0Mi1cdC5uYW1lID1cdFx0XCYjMzQ7Y2RjX3N1YnNldFwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfc3Vic2V0LmM6MzQzOlx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfc3Vic2V0LmMtMzQ0LVx0LnN1c3BlbmQgPVx0dXNibmV0X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTQxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2g5MjAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtNDE5LVx0LmlkX3RhYmxlID0gY2g5MjAwX3Byb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQyMDpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy00MjEtXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzYzLVx0LmlkX3RhYmxlXHQ9IHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzY0Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzY1LVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTYxOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZG05NjAxX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNjIwLVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6NjIxOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTYyMi1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTIxMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZ2w2MjBhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMjE0LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjIxNTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMjE2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MjEzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBodWF3ZWlfY2RjX25jbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMjE1LVx0LmlkX3RhYmxlID0gaHVhd2VpX2NkY19uY21fZGV2cyxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjIxNjpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTIxNy1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xNDI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGludDUxeDFfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMTQ0LVx0LmlkX3RhYmxlICAgPSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM6MTQ1Olx0LnByb2JlICAgICAgPSB1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTE0Ni1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM1OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIga2FsbWlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2Iva2FsbWlhLmMtMzYxLVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Iva2FsbWlhLmM6MzYyOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM2My1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzIxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBsZ192bDYwMF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzIzLVx0LmlkX3RhYmxlXHQ9IHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM6MzI0Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzI1LVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz02MTY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG1jczc4MzBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjE4LVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjYxOTpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjIwLVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTUwOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbmV0MTA4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy01MTAtXHQuaWRfdGFibGUgPVx0cHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjUxMTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTUxMi1cdC5kaXNjb25uZWN0ID1cdHVzYm5ldF9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jPTEzOT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcGx1c2JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jLTE0MS1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jOjE0MjpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYy0xNDMtXHQuZGlzY29ubmVjdCA9XHR1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTMyPXN0YXRpYyBpbnQgcW1pX3d3YW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU3NC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NzU6XHRyZXR1cm4gdXNibmV0X3Byb2JlKGludGYsIGlkKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NzYtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYz0xNDk9c3RhdGljIGludCBydGw4MTUzX2VjbV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTU2LVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjE1NzpcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTE1OC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYz02OTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJuZGlzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jLTY5NS1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmM6Njk2Olx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMtNjk3LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYz05MTQ9c2llcnJhX25ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYy05MTctXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jOjkxODpcdHJldCA9IHVzYm5ldF9wcm9iZSh1ZGV2LCBwcm9kKTtcbmRyaXZlcnMvbmV0L3VzYi9zaWVycmFfbmV0LmMtOTE5LVx0aWYgKHJldCA9PSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmM9MjMyMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzc1eHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjNzV4eC5jLTIzMjQtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYzoyMzI1Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmMtMjMyNi1cdC5zdXNwZW5kXHQ9IHNtc2M3NXh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MjE3OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzk1eHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTIxODAtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoyMTgxOlx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4Mi1cdC5zdXNwZW5kXHQ9IHNtc2M5NXh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jPTQ2OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc3I5NzAwX3VzYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3MS1cdC5pZF90YWJsZVx0PSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYzo0NzI6XHQucHJvYmVcdFx0PSB1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2Ivc3I5NzAwLmMtNDczLVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jPTgzOT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc3JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zcjk4MDAuYy04NDEtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmM6ODQyOlx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jLTg0My1cdC5zdXNwZW5kXHQ9IHVzYm5ldF9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI1PWludFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjE3MjY6dXNibmV0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2LCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xNzI3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTkyOS19XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTkzMDpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfcHJvYmUpO1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MzEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jPTM5Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgemF1cnVzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmMtMzk0LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jOjM5NTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmMtMzk2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVVNCbmV0IENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIGB1c2JuZXRfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIGEgZnVuY3Rpb24gSSBzZWUgcG9wcGluZyB1cCBpbiBhICpsb3QqIG9mIGRpZmZlcmVudCBkcml2ZXJzLiBHaXZlbiB0aGF0LCBlbmFibGluZyBgVVNCX1VTQk5FVGAgc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIuIEl0JiMzOTtzIGEgZnJhbWV3b3JrLCBzbyBsb2dpYyBkaWN0YXRlcyB0aGF0IGVuYWJsaW5nIGF0IGxlYXN0IG9uZSBkcml2ZXIgdGhhdCB1dGlsaXplcyBpdCBpcyBwcm9iYWJseSB0aGUgbW9zdCBzZW5zaWJsZSBwYXRoLiAgYFVTQl9ORVRfQ0RDRVRIRVJgIGlzIGFsd2F5cyBhIHNvbGlkIGNob2ljZSwgb3IgZXZlbiB0aGUgYFVTQl9ORVRfQVg4ODE3OV8xNzhBYCBhbmQgYFVTQl9ORVRfU01TQzk1WFhgIG9wdGlvbnMgY291bGQgZG8gdGhlIHRyaWNrLiBTdGlsbCwgZXZlbiBpZiBJIGp1c3Qgd2VudCB3aXRoIGVuYWJsaW5nIGBVU0JfVVNCTkVUYCBpdHNlbGYsIGB1c2JuZXQuY2Agc2hvdWxkIGNvbXBpbGUganVzdCBmaW5lLgoKSGFuZyBvbiBhIHNlY29uZOKApiBgVVNCX1VTQk5FVGAgaXMgYSAqdHJpc3RhdGUqIGNvbmZpZywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIGFueSBvZiB0aG9zZSBkcml2ZXJzIGFyZSBzcGVjaWZpY2FsbHkgc2V0dGluZyBgRkxBR19OT01BWE1UVWAuIFRoYXQgY291bGQgaW5mbHVlbmNlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNldHVwIEkgY2hvb3NlLiBJIGFsd2F5cyBhcHByZWNpYXRlIGEgcHJvcGVyIHNhbml0eSBjaGVjayB3aGVuIGl0IGNvbWVzIHRvIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkxBR19OT01BWE1UVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9OTI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdHFtaV93d2FuX2luZm8gPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXHQuZGVzY3JpcHRpb25cdD0gXCYjMzQ7V1dBTi9RTUkgZGV2aWNlXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTMxOlx0LmZsYWdzXHRcdD0gRkxBR19XV0FOIHwgRkxBR19OT01BWE1UVSB8IEZMQUdfU0VORF9aTFAsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzItXHQuYmluZFx0XHQ9IHFtaV93d2FuX2JpbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9OTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdHFtaV93d2FuX2luZm9fcXVpcmtfZHRyID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTM5LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O1dXQU4vUU1JIGRldmljZVwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0MDpcdC5mbGFnc1x0XHQ9IEZMQUdfV1dBTiB8IEZMQUdfTk9NQVhNVFUgfCBGTEFHX1NFTkRfWkxQLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTQxLVx0LmJpbmRcdFx0PSBxbWlfd3dhbl9iaW5kLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI2PXVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE4MjctXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTgyODpcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xODI5LVx0XHRcdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIFFNSSBXV0FOIE1UVSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgcW1pX3d3YW5gIGlzIHVzaW5nIGBGTEFHX05PTUFYTVRVYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aHkuIE15IGZpcnN0IG1vdmUgaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgcW1pX3d3YW5gIG1vZHVsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZmxhZyBpcyBiZWluZyBzZXQsIGFuZCB3aGF0IGltcGxpY2F0aW9ucyB0aGF0IGhhcyBvbiB0aGUgbGluayYjMzk7cyBlZmZlY3RpdmUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdC4gSSBuZWVkIHRvIGtub3cgaWYgd2UmIzM5O3JlIGV4cGxpY2l0bHkgb3ZlcnJpZGluZyB0aGUgTVRVIGRpc2NvdmVyeSBwcm9jZXNzLCBvciBpZiB0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMsIGdpdmVuIHRoYXQgaXQmIzM5O3MgaW4gdGhlIGNvZGUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQgcmVhc29uIGlzIHN0aWxsIHZhbGlkIGFuZCBhcHByb3ByaWF0ZSBmb3Igb3VyIGN1cnJlbnQgdXNlIGNhc2UuIE1heWJlIHRoZXJlJiMzOTtzIGFuIG9sZGVyIGRlc2lnbiBkZWNpc2lvbiBhdCBwbGF5IHRoYXQgd2Ugc2hvdWxkIHJldmlzaXQsIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvIHdlJiMzOTtyZSBhdm9pZGluZyB3aXRoIHRoaXMgZmxhZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWcgZmlsZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxbWlfd3dhbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfVVNCX1ZMNjAwKVx0XHQmIzQzOz0gbGctdmw2MDAub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19VU0JfTkVUX1FNSV9XV0FOKVx0JiM0Mzs9IHFtaV93d2FuLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTUJJTSlcdCYjNDM7PSBjZGNfbWJpbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDI5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX1VTQl9ORVRfUU1JX1dXQU5gLiBUaGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXNzZWN0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSBsYXJnZXIgc2NoZW1lPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBvbmUgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBEZXBlbmRlbmNpZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgYW5kIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlbSB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHJlbGlhYmxlIGJ1aWxkLiBUaW1lIHRvIGRpZyBpbiBhbmQgdHJhY2UgdGhlIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX1FNSV9XV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMDpjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIFVTQiBOZXR3b3JraW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtlcm5lbCYjMzk7cyBVU0IgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9wdGlvbiB0byBlbmFibGUgVVNCIG5ldHdvcmsgZHJpdmVycyBpcyBzdHJ1Y3R1cmVkLCBzbyBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBhcm91bmQgbGluZSA1MzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBzZWN0aW9uIHNob3VsZCBjb3ZlciB0aGUgY29yZSBzZXR0aW5ncyBmb3IgdGhlc2UgZHJpdmVycy4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IG1pZ2h0IGhhdmUgb24gb3RoZXIgVVNCIG9yIG5ldHdvcmtpbmcgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgY29udHJvbGxlciBjaGlwc2V0cy4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaG93IGNvbXBsZXggdGhlIGRlcGVuZGVuY3kgdHJlZSBpcywgYW5kIG1heWJlIHNwb3QgYW55IGFyZWFzIHRoYXQgY291bGQgYmUgc2ltcGxpZmllZCBvciBiZXR0ZXIgb3JnYW5pemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjU6XHRcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNTI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXG4gNTI5Olx0XG4gNTMwOlx0Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cbiA1MzE6XHRcdHRyaXN0YXRlIFwmIzM0O1FNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXCYjMzQ7XG4gNTMyOlx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiA1MzM6XHRcdHNlbGVjdCBVU0JfV0RNXG4gNTM0Olx0XHRoZWxwXG4gNTM1Olx0XHQgIFN1cHBvcnQgV1dBTiBMVEUvM0cgZGV2aWNlcyBiYXNlZCBvbiBRdWFsY29tbSBNb2JpbGUgRGF0YSBNb2RlbVxuIDUzNjpcdFx0ICAoTURNKSBjaGlwc2V0cy4gIEV4YW1wbGVzIG9mIHN1Y2ggZGV2aWNlcyBhcmVcbiA1Mzc6XHRcdCAgICAqIEh1YXdlaSBFMzkyL0UzOThcbiA1Mzg6XHRcbiA1Mzk6XHRcdCAgVGhpcyBkcml2ZXIgd2lsbCBvbmx5IGRyaXZlIHRoZSBldGhlcm5ldCBwYXJ0IG9mIHRoZSBjaGlwcy5cbiA1NDA6XHRcdCAgVGhlIGRldmljZXMgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNhYmxlLlxuIDU0MTpcdFx0ICBNdWx0aXBsZSBtYW5hZ2VtZW50IGludGVyZmFjZXMgd2l0aCBsaW51eCBkcml2ZXJzIGFyZVxuIDU0MjpcdFx0ICBhdmFpbGFibGU6XG4gNTQzOlx0XG4gNTQ0Olx0XHQgICAgKiBvcHRpb246IEFUIGNvbW1hbmRzIG9uIC9kZXYvdHR5VVNCeFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI3MwoJCQkJCQkJb3V0cHV0OiAxNDMKCQkJCQkJCXRob3VnaHRzOiA0NzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgYFVTQl9ORVRfUU1JX1dXQU5gIGRlcGVuZHMgb24gYFVTQl9VU0JORVRgLCBlbmFibGluZyBib3RoIHdvdWxkIGJlIHRoZSBjb3JyZWN0IG1vdmUgdG8gY292ZXIgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuIFRoZSBwYXRjaCBhbHNvIHNlbGVjdHMgYFVTQl9XRE1gLCBhbmQgSSYjMzk7dmUgaWRlbnRpZmllZCBgdXNibmV0X3Byb2JlYCBhcyB0aGUgZm9jdXMgc3ltYm9sLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGB1c2JuZXRfcHJvYmVgIGlzIGEgZ2VuZXJpYyBwcm9iZSwgc28gYW55IFVTQiBuZXR3b3JrIGRyaXZlciB3aWxsIGxpa2VseSBoaXQgdGhpcyBjb2RlLiBgVVNCX1VTQk5FVGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgVVNCX05FVF9RTUlfV1dBTmAgaXMgYSBzcGVjaWZpYyBkcml2ZXIga25vd24gdG8gdXNlIHRoZSBgRkxBR19OT01BWE1UVWAgYnJhbmNoLCB3aGljaCBpcyB3aGF0IEkgd2FudCB0byB0ZXN0LgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbiwgc28gSSYjMzk7bSByZWxhdGl2ZWx5IGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIE5vdywgbGV0IG1lIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBuYW1lcyB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZW0gY29ycmVjdDogYFVTQl9VU0JORVRgLCBgVVNCX05FVF9RTUlfV1dBTmAsIGFuZCBgVVNCX05FVF9EUklWRVJTYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBVU0IgYW5kIE5FVCBhcmUgZW5hYmxlZC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGRlcGVuZGVuY2llcy4gYFVTQl9VU0JORVRgIGl0c2VsZiBkb2VzbiYjMzk7dCBoYXZlIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBpbiBpdHMgZGVmaW5pdGlvbiwgYnV0IGl0JiMzOTtzIHBhcnQgb2YgYFVTQl9ORVRfRFJJVkVSU2AuIEdpdmVuIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBVU0JfTkVUX0RSSVZFUlNgLiBMZXQmIzM5O3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9EUklWRVJTYDsgaXQgZGVwZW5kcyBvbiBgVVNCICZhbXA7JmFtcDsgTkVUYC4KCk5vdywgSSB0aGluayBJJiMzOTttIHJlYWR5IHRvIGZvcm1hbGl6ZSB0aGlzIGZvciB0aGUgZnV6emluZyBydW4uCgpIZXJlJiMzOTtzIHRoZSBkYXRhOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7VVNCX1VTQk5FVCYjMzQ7LCAmIzM0O1VTQl9ORVRfUU1JX1dXQU4mIzM0O11gCiogICAqKlJlYXNvbmluZyoqOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX1FNSV9XV0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNibmV0X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gYHVzYm5ldF9wcm9iZWAsIHdoaWNoIGlzIHRoZSBnZW5lcmljIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBzdXBwb3J0ZWQgVVNCIG5ldHdvcmsgZGV2aWNlIGlzIGNvbm5lY3RlZCAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QpLiBFbmFibGluZyBVU0JfVVNCTkVUIGFuZCBVU0JfTkVUX1FNSV9XV0FOICh3aGljaCB1c2VzIEZMQUdfTk9NQVhNVFUpIHdpbGwgYWxsb3cgZnV6emluZyBib3RoIGJyYW5jaGVzIG9mIHRoZSBtb2RpZmllZCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfUU1JX1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JuZXRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1MC41OTgwMjkzNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjEwNjc3MzIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ2OjUwLjU5ODAzNjE1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzNDgxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmEyMjI3ZWYzM2M1ZWQyZWNmYzljMGI4YjIwMWMyNWRjODhlN2I1OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG5pbmRleCAyNTUxODYzNWI3YjcyZC4uOWYxMWNhNDQ5YWFkNDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXFxuQEAgLTE3OTQsNyArMTc5NCw3IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuIFxcdCAqL1xcbiBcXHRkZXYtXFx1MDAzZWhhcmRfbXR1ID0gbmV0LVxcdTAwM2VtdHUgKyBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFx0bmV0LVxcdTAwM2VtaW5fbXR1ID0gMDtcXG4tXFx0bmV0LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxuK1xcdG5ldC1cXHUwMDNlbWF4X210dSA9IG5ldC1cXHUwMDNlbXR1O1xcbiBcXG4gXFx0bmV0LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnVzYm5ldF9uZXRkZXZfb3BzO1xcbiBcXHRuZXQtXFx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVF9KSUZGSUVTO1xcbkBAIC0xODI1LDggKzE4MjUsOSBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxcbiBcXHRcXHRpZiAoKGRldi1cXHUwMDNlZHJpdmVyX2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkxBR19OT0FSUCkgIT0gMClcXG4gXFx0XFx0XFx0bmV0LVxcdTAwM2VmbGFncyB8PSBJRkZfTk9BUlA7XFxuIFxcbi1cXHRcXHRpZiAoKGRldi1cXHUwMDNlZHJpdmVyX2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkxBR19OT01BWE1UVSkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgbmV0LVxcdTAwM2VtYXhfbXR1IFxcdTAwM2UgKGRldi1cXHUwMDNlaGFyZF9tdHUgLSBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpXFxuK1xcdFxcdGlmIChkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfTk9NQVhNVFUpXFxuK1xcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xcbitcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IGRldi1cXHUwMDNlaGFyZF9tdHUgLSBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFxuIFxcdFxcdGlmIChuZXQtXFx1MDAzZW10dSBcXHUwMDNlIChkZXYtXFx1MDAzZWhhcmRfbXR1IC0gbmV0LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1MS4yNTM2MzY3MzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MTQ1MTE1NjcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuaW5kZXggMjU1MTg2MzViN2I3MmQuLjlmMTFjYTQ0OWFhZDQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbkBAIC0xNzk0LDcgKzE3OTQsNyBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuIFx0ICovXG4gXHRkZXYtXHUwMDNlaGFyZF9tdHUgPSBuZXQtXHUwMDNlbXR1ICsgbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiBcdG5ldC1cdTAwM2VtaW5fbXR1ID0gMDtcbi1cdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4rXHRuZXQtXHUwMDNlbWF4X210dSA9IG5ldC1cdTAwM2VtdHU7XG4gXG4gXHRuZXQtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnVzYm5ldF9uZXRkZXZfb3BzO1xuIFx0bmV0LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVF9KSUZGSUVTO1xuQEAgLTE4MjUsOCArMTgyNSw5IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4gXHRcdGlmICgoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX05PQVJQKSAhPSAwKVxuIFx0XHRcdG5ldC1cdTAwM2VmbGFncyB8PSBJRkZfTk9BUlA7XG4gXG4tXHRcdGlmICgoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX05PTUFYTVRVKSA9PSAwIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmV0LVx1MDAzZW1heF9tdHUgXHUwMDNlIChkZXYtXHUwMDNlaGFyZF9tdHUgLSBuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSlcbitcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbitcdFx0XHRuZXQtXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xuK1x0XHRlbHNlXG4gXHRcdFx0bmV0LVx1MDAzZW1heF9tdHUgPSBkZXYtXHUwMDNlaGFyZF9tdHUgLSBuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuIFxuIFx0XHRpZiAobmV0LVx1MDAzZW10dSBcdTAwM2UgKGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDY6NTEuMjUzNjM4ODQxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5NTE4ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB1c2JuZXQuYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHR3ZWFraW5nIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgLCBzcGVjaWZpY2FsbHkgaG93IGBuZXQtXHUwMDNlbWF4X210dWAgaXMgaGFuZGxlZCB3aXRoaW4gYHVzYm5ldF9wcm9iZWAuICBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW5pdGlhbCBhc3NpZ25tZW50OiBpdCdzIG5vIGxvbmdlciBzdGFydGluZyB3aXRoIGBFVEhfTUFYX01UVWAgYnV0IHdpdGggYG5ldC1cdTAwM2VtdHVgLiBUaGVuIGl0IGdldHMgY29uZGl0aW9uYWwgbG9naWMgdGhhdCdzIGRlcGVuZGVudCBvbiBgRkxBR19OT01BWE1UVWAuIFRoYXQgY291bGQgaW50cm9kdWNlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBkaWZmZXJlbmNlIGluIHRoZSBkZWZhdWx0IE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQgY29uZmlndXJhdGlvbiwgYW5kIHRoYXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IHNldHMgb2ZmIGFsYXJtIGJlbGxzIGZvciBtZS5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgVVNCIG5ldHdvcmsgZGV2aWNlcy4gV2UgY2FuIGZ1enogdGhvc2UsIHJpZ2h0PyAgVVNCIGdhZGdldCBlbXVsYXRpb24sIGR1bW15X2hjZCwgdGhhdCBraW5kIG9mIHRoaW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgc3VpdGVkIHRvIHRlc3QgdGhpcy5cIiBBbnkgY2hhbmdlIHRvIHRoZSBNVFUgaXMgc29tZXRoaW5nIEknZCB3YW50IHRvIGZ1enogdGhvcm91Z2hseS4gTVRVLXJlbGF0ZWQgYnVncyBoYXZlIGEgaGlzdG9yeSBvZiBiZWluZy4uLiBpbnRlcmVzdGluZy5cblxuVGhlcmVmb3JlLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gIEkga25vdyBgZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfVVNCX1VTQk5FVGAgaXMgZW5hYmxlZC4gIFNvLCBJIHdpbGwgbG9vayBpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIG9yIGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBjb250cm9sIGBDT05GSUdfVVNCX1VTQk5FVGAgYW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlc2UgZmxhZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcGF0Y2gncyBiZWhhdmlvciB3aWxsIGJlIHRyaWdnZXJlZC4gVGhpcyBwYXRjaCBjb3VsZCBiZSBwcm9ibGVtYXRpYyBvciBhIG5vbi1pc3N1ZSBkZXBlbmRpbmcgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIGFuZCB0aGF0IGRldGVybWluZXMgd2hlcmUgbXkgbmV4dCBzdGVwcyBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1Ni41NDg4MzI5NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzI2NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYm5ldC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX1VTQl9ORVRfTUNTNzgzMClcXHQrPSBtY3M3ODMwLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX1VTQl9VU0JORVQpXFx0Kz0gdXNibmV0Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX1VTQl9ORVRfSU5UNTFYMSlcXHQrPSBpbnQ1MXgxLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDY6NTYuNjc0MTY2MjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkwNTAzNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqVGhpbmtpbmcgVGhyb3VnaCBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCByZXZvbHZlcyBhcm91bmQgYENPTkZJR19VU0JfVVNCTkVUYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGF0IGNvbmZpZyBpdGVtLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSB3ZWVkcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQncyBjcnVjaWFsLCBhdCB0aGlzIHN0YWdlLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzIG9yIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgb3B0aW9ucywgbW9kdWxlcywgb3IgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQ09ORklHX1VTQl9VU0JORVRgIGNhbiBldmVuIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgZm91bmRhdGlvbmFsIHVuZGVyc3RhbmRpbmcsIEkgY291bGQgYmUgY2hhc2luZyBhIHJlZCBoZXJyaW5nLiBUaW1lIHRvIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1OS40NjQ2NzI3NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTU0Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1OS42MDg2MzE2MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY5ODg5NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgVVNCX1VTQk5FVCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBVU0JfVVNCTkVUYC4gTGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoYXQncyB0aGlzIHRoaW5nIHJlbGlhbnQgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uYWwgZWxlbWVudHMsIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzLCB0aGUgdW5kZXJseWluZyBkcml2ZXJzLCB0aGUga2VybmVsIG1vZHVsZXMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcCB0byB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IGFwcHJlY2lhdGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCBjb25maWd1cmF0aW9uIGFuZCBtYXAgb3V0IGl0cyBzdXBwb3J0aW5nIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjAyLjU3ODUyMzg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxcbiAxMzE6XFx0XFxuIDEzMjpcXHRjb25maWcgVVNCX1VTQk5FVFxcbiAxMzM6XFx0XFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcbiAxMzQ6XFx0XFx0c2VsZWN0IE1JSVxcbiAxMzU6XFx0XFx0aGVscFxcbiAxMzY6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXFxuIDEzNzpcXHRcXHQgIHdpdGggXFxcIm1pbmlkcml2ZXJzXFxcIiBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxcbiAxMzg6XFx0XFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcXG4gMTM5OlxcdFxcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHQgIFRoZSBVU0IgaG9zdCBydW5zIFxcXCJ1c2JuZXRcXFwiLCBhbmQgdGhlIG90aGVyIGVuZCBvZiB0aGUgbGluayBtaWdodCBiZTpcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFxcXCJuZXR3b3JrXFxcIiBvciBcXFwiZGF0YSB0cmFuc2ZlclxcXCJcXG4gMTQ0OlxcdFxcdCAgICBjYWJsZXMuICBUaGVzZSBhcmUgb2Z0ZW4gdXNlZCB0byBuZXR3b3JrIGxhcHRvcHMgdG8gUENzLCBsaWtlXFxuIDE0NTpcXHRcXHQgICAgXFxcIkxhcGxpbmtcXFwiIHBhcmFsbGVsIGNhYmxlcyBvciBzb21lIG1vdGhlcmJvYXJkcy4gIFRoZXNlIHJlbHlcXG4gMTQ2OlxcdFxcdCAgICBvbiBzcGVjaWFsaXplZCBjaGlwcyBmcm9tIG1hbnkgc3VwcGxpZXJzLlxcbiAxNDc6XFx0XFxuIDE0ODpcXHRcXHQgIC0gQW4gaW50ZWxsaWdlbnQgVVNCIGdhZGdldCwgcGVyaGFwcyBlbWJlZGRpbmcgYSBMaW51eCBzeXN0ZW0uXFxuIDE0OTpcXHRcXHQgICAgVGhlc2UgaW5jbHVkZSBQREFzIHJ1bm5pbmcgTGludXggKGlQYXEsIFlvcHksIFphdXJ1cywgYW5kXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjAyLjU3ODYzNzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA0NzA4MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKlxuXG5SaWdodCwgc28gdGhpcyB0aGluZyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgKmV4cGxpY2l0KiBkZXBlbmRlbmNpZXMgbGlzdGVkLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb250ZXh0IGhlcmUgaXMgdGhhdCBpdCdzIG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoYXQgbG9jYXRpb24gaXMgaGlnaGx5IHN1Z2dlc3RpdmU7IGl0IGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQncyBlbmFibGVkIGJ5IHNvbWV0aGluZyBoaWdoZXIgdXAsIG1vc3QgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIG92ZXJhbGwgVVNCIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBJJ20gYmV0dGluZyB0aGlzIGlzIGhvb2tlZCB1cCB0bywgb3IgKmlzKiBwYXJ0IG9mLCBgVVNCX05FVF9EUklWRVJTYCwgb3IgcGVyaGFwcyBhIG1vcmUgc3BlY2lmaWMgZmVhdHVyZSBmbGFnIHRoYXQgZmFsbHMgdW5kZXIgdGhhdCB1bWJyZWxsYS4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSByaWdodCBhbmQgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGltcGxpY2l0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowNS44ODMzNDg0NDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDAxOTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6ODptZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowNi4wMTMzNzg4MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMjMyMzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFVTQiBOZXR3b3JraW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCdzIGEga2V5IGFyZWEgZm9yIG5ldHdvcmsgY29ubmVjdGl2aXR5IHZpYSBVU0IsIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCAqcmVsaWVzKiBvbiBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzIOKAkyB0aGUgb3RoZXIga2VybmVsIG1vZHVsZXMsIGNvbmZpZ3VyYXRpb25zLCBvciBoYXJkd2FyZSBzdXBwb3J0IOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgZm9yIGBVU0JfTkVUX0RSSVZFUlNgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGlnZ2luZyB0aHJvdWdoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvdGVudGlhbGx5IGNvZGUgaXRzZWxmIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aG9zZSBkZXBlbmRlbmNpZXMuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYSBgbWFrZSBtZW51Y29uZmlnYCBvciBhIHNpbWlsYXIgdG9vbCB0byB2aXN1YWxpemUgdGhlIGNvbm5lY3Rpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBmb3IgYnVpbGRpbmcgYSBzdGFibGUgYW5kIGVmZmljaWVudCBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIHRoYXQgbGV2ZXJhZ2VzIFVTQiBuZXR3b3JraW5nLCBzbyBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjA5LjUzNTcwNjg5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYxNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRjb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuICAxMDpcXHRcXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBVU0JfTkVUX0RSSVZFUlNcXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIFVTQl9DQVRDXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDE3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxcbiAgMjA6XFx0XFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowOS41MzU4NzYxNTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3ODE4MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uOiBgVVNCX05FVF9EUklWRVJTYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYE5FVGAuIE1ha2VzIHNlbnNlLCB0aGUgZHJpdmVyIGlzIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBOb3csIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAg4oCTIHRoYXQncyB0aGUgc3BlY2lmaWMgVVNCIG5ldHdvcmsgZHJpdmVyIEkgd2FudCB0byB0YXJnZXQuXG5cblRoZSByZWxldmFudCBmdW5jdGlvbiBJJ20gZm9jdXNpbmcgb24gaGVyZSBpcyBgdXNibmV0X3Byb2JlYC4gSXQncyBhIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCdzIHRoZSBlbnRyeSBwb2ludCB0cmlnZ2VyZWQgd2hlbiBhIGNvbXBhdGlibGUgVVNCIGRldmljZSBnZXRzIHBsdWdnZWQgaW4uIERlZmluaXRlbHkgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW5kIHRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyB0aGUgZHVtbXlfaGNkIGRyaXZlciwgbWFraW5nIHRlc3RpbmcgdGhpcyBpbmNyZWRpYmx5IHByYWN0aWNhbC4gVGhlIGZvY3VzIHN5bWJvbCwgd2l0aG91dCBhIGRvdWJ0LCBzaG91bGQgYmUgYHVzYm5ldF9wcm9iZWAuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgZGlmZiB0byBtYWtlIHN1cmUgbm8gb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIgd2VyZSBtb2RpZmllZCBhcyB3ZWxsLiBOb3BlLCBvbmx5IGB1c2JuZXRfcHJvYmVgLiBOb3csIEkgbmVlZCB0byBjb25maXJtIGlmIGB1c2JuZXRfcHJvYmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0J2xsIGFmZmVjdCB0aGUgc2NvcGUgb2YgaG93IEknbSB0aGlua2luZyBvZiBmdXp6aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njk1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MTMuMzE0MDU5MzYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM1NDgzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MTcyNT1pbnRcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTcyNjp1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xNzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTI5LX1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTkzMDpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoxMy40Mzc2MTM4NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMjY3MDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgdXNibmV0X3Byb2JlYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkOyBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyBob3cgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIFVTQiBuZXR3b3JrIGZyYW1ld29yay4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgVVNCX1VTQk5FVGAgaXMgdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBTcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9ORVRfQ0RDRVRIRVJgIGxldmVyYWdlIGl0LiBNeSBrZXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYFVTQl9VU0JORVRgIGl0c2VsZiAqY2FuKiBiZSBkaXJlY3RseSBwcm9iZWQsIG9yIGlmIGl0cyBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZHJpdmVycyB0aGF0IHV0aWxpemUgaXQuIFRoZSBmYWN0IHRoYXQgYHVzYm5ldF9wcm9iZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgb3RoZXIgZHJpdmVycywgY2xhcmlmaWVzIGl0cyByb2xlLiBJdCdzIGEgY2VudHJhbCBmdW5jdGlvbi4gSSBzaG91bGQgbm93IGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGNhbGxpbmcgaW50byBgdXNibmV0X3Byb2JlYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MTcuNzUwMjg2NzM5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMxMzQzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTE0ODE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDgzLVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0ODQ6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0ODUtXFx0LnN1c3BlbmRcXHQ9IGFxYzExMV9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE2MTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFzaXhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE2MTUtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTYxNjpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTYxNy1cXHQuc3VzcGVuZCA9XFx0YXNpeF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE5Mzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF4ODgxNzlfMTc4YV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTkzOS1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxOTQwOlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xOTQxLVxcdC5zdXNwZW5kID1cXHRheDg4MTc5X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jPTM1Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZWVtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzU0LVxcdC5pZF90YWJsZSA9XFx0cHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzozNTU6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zNTYtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTk2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NzAtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6OTcxOlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NzItXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NjgzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjZGNfbWJpbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02ODUtXFx0LmlkX3RhYmxlID0gbWJpbV9kZXZzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjY4NjpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg3LVxcdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMjc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGNkY19uY21fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTI5LVxcdC5pZF90YWJsZSA9IGNkY19kZXZzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjEzMDpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTMxLVxcdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX3N1YnNldF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19zdWJzZXQuYy0zNDItXFx0Lm5hbWUgPVxcdFxcdFxcXCJjZGNfc3Vic2V0XFxcIixcXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jOjM0MzpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jLTM0NC1cXHQuc3VzcGVuZCA9XFx0dXNibmV0X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9NDE3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjaDkyMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQxOS1cXHQuaWRfdGFibGUgPSBjaDkyMDBfcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQyMDpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQyMS1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2My1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2NDpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjUtXFx0LmRpc2Nvbm5lY3RcXHQ9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTYxOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZG05NjAxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy02MjAtXFx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjYyMTpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTYyMi1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTIxMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZ2w2MjBhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0yMTQtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmM6MjE1OlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0yMTYtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MjEzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBodWF3ZWlfY2RjX25jbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0yMTUtXFx0LmlkX3RhYmxlID0gaHVhd2VpX2NkY19uY21fZGV2cyxcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoyMTY6XFx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTIxNy1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xNDI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGludDUxeDFfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0xNDQtXFx0LmlkX3RhYmxlICAgPSBwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jOjE0NTpcXHQucHJvYmUgICAgICA9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTE0Ni1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM1OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIga2FsbWlhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNjEtXFx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjM2MjpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM2My1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzIxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBsZ192bDYwMF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMjMtXFx0LmlkX3RhYmxlXFx0PSBwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMjQ6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzI1LVxcdC5kaXNjb25uZWN0XFx0PSB1c2JuZXRfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NjE2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtY3M3ODMwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjE4LVxcdC5pZF90YWJsZSA9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NjE5OlxcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTYyMC1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYz01MDg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG5ldDEwODBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy01MTAtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjUxMTpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTUxMi1cXHQuZGlzY29ubmVjdCA9XFx0dXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYz0xMzk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHBsdXNiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jLTE0MS1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jOjE0MjpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYy0xNDMtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MTUzMj1zdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU3NC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTc1OlxcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jPTE0OT1zdGF0aWMgaW50IHJ0bDgxNTNfZWNtX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTE1Ni1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM6MTU3OlxcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xNTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYz02OTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJuZGlzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMtNjk1LVxcdC5pZF90YWJsZSA9XFx0cHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYzo2OTY6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYy02OTctXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYz05MTQ9c2llcnJhX25ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jLTkxNy1cXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jOjkxODpcXHRyZXQgPSB1c2JuZXRfcHJvYmUodWRldiwgcHJvZCk7XFxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYy05MTktXFx0aWYgKHJldCA9PSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYz0yMzIyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzbXNjNzV4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYy0yMzI0LVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmM6MjMyNTpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYy0yMzI2LVxcdC5zdXNwZW5kXFx0PSBzbXNjNzV4eF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MjE3OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzk1eHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4MC1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjIxODE6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4Mi1cXHQuc3VzcGVuZFxcdD0gc21zYzk1eHhfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYz00Njk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHNyOTcwMF91c2JfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3MS1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYzo0NzI6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3My1cXHQuZGlzY29ubmVjdFxcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmM9ODM5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzcl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmMtODQxLVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jOjg0MjpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmMtODQzLVxcdC5zdXNwZW5kXFx0PSB1c2JuZXRfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI1PWludFxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxNzI2OnVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE3Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MjktfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxOTMwOkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9wcm9iZSk7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MzEtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmM9MzkyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB6YXVydXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jLTM5NC1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi96YXVydXMuYzozOTU6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jLTM5Ni1cXHQuZGlzY29ubmVjdCA9XFx0dXNibmV0X2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjE3Ljg1MzQyNzU5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU1MjM5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFVTQm5ldCBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIGB1c2JuZXRfcHJvYmVgIOKAkyB0aGF0J3MgYSBmdW5jdGlvbiBJIHNlZSBwb3BwaW5nIHVwIGluIGEgKmxvdCogb2YgZGlmZmVyZW50IGRyaXZlcnMuIEdpdmVuIHRoYXQsIGVuYWJsaW5nIGBVU0JfVVNCTkVUYCBzZWVtcyBsaWtlIGEgbm8tYnJhaW5lci4gSXQncyBhIGZyYW1ld29yaywgc28gbG9naWMgZGljdGF0ZXMgdGhhdCBlbmFibGluZyBhdCBsZWFzdCBvbmUgZHJpdmVyIHRoYXQgdXRpbGl6ZXMgaXQgaXMgcHJvYmFibHkgdGhlIG1vc3Qgc2Vuc2libGUgcGF0aC4gIGBVU0JfTkVUX0NEQ0VUSEVSYCBpcyBhbHdheXMgYSBzb2xpZCBjaG9pY2UsIG9yIGV2ZW4gdGhlIGBVU0JfTkVUX0FYODgxNzlfMTc4QWAgYW5kIGBVU0JfTkVUX1NNU0M5NVhYYCBvcHRpb25zIGNvdWxkIGRvIHRoZSB0cmljay4gU3RpbGwsIGV2ZW4gaWYgSSBqdXN0IHdlbnQgd2l0aCBlbmFibGluZyBgVVNCX1VTQk5FVGAgaXRzZWxmLCBgdXNibmV0LmNgIHNob3VsZCBjb21waWxlIGp1c3QgZmluZS5cblxuSGFuZyBvbiBhIHNlY29uZOKApiBgVVNCX1VTQk5FVGAgaXMgYSAqdHJpc3RhdGUqIGNvbmZpZywgaXNuJ3QgaXQ/IExldCdzIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhbnkgb2YgdGhvc2UgZHJpdmVycyBhcmUgc3BlY2lmaWNhbGx5IHNldHRpbmcgYEZMQUdfTk9NQVhNVFVgLiBUaGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZXR1cCBJIGNob29zZS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIHByb3BlciBzYW5pdHkgY2hlY2sgd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MjIuMzA4NjY5NzI0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2NDgyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRkxBR19OT01BWE1UVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzE6XFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzItXFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdHFtaV93d2FuX2luZm9fcXVpcmtfZHRyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkzOS1cXHQuZGVzY3JpcHRpb25cXHQ9IFxcXCJXV0FOL1FNSSBkZXZpY2VcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0MDpcXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfV1dBTiB8IEZMQUdfTk9NQVhNVFUgfCBGTEFHX1NFTkRfWkxQLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk0MS1cXHQuYmluZFxcdFxcdD0gcW1pX3d3YW5fYmluZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI2PXVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTgyNy1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTgyODpcXHRcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGTEFHX05PTUFYTVRVKVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xODI5LVxcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyMi40MDkzMjM3OTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxOTk2NzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFFNSSBXV0FOIE1UVSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBxbWlfd3dhbmAgaXMgdXNpbmcgYEZMQUdfTk9NQVhNVFVgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2h5LiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYHFtaV93d2FuYCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZsYWcgaXMgYmVpbmcgc2V0LCBhbmQgd2hhdCBpbXBsaWNhdGlvbnMgdGhhdCBoYXMgb24gdGhlIGxpbmsncyBlZmZlY3RpdmUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdC4gSSBuZWVkIHRvIGtub3cgaWYgd2UncmUgZXhwbGljaXRseSBvdmVycmlkaW5nIHRoZSBNVFUgZGlzY292ZXJ5IHByb2Nlc3MsIG9yIGlmIHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIEknbSBhc3N1bWluZyB0aGVyZSdzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMsIGdpdmVuIHRoYXQgaXQncyBpbiB0aGUgY29kZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCByZWFzb24gaXMgc3RpbGwgdmFsaWQgYW5kIGFwcHJvcHJpYXRlIGZvciBvdXIgY3VycmVudCB1c2UgY2FzZS4gTWF5YmUgdGhlcmUncyBhbiBvbGRlciBkZXNpZ24gZGVjaXNpb24gYXQgcGxheSB0aGF0IHdlIHNob3VsZCByZXZpc2l0LCBvciBwZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvIHdlJ3JlIGF2b2lkaW5nIHdpdGggdGhpcyBmbGFnLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIGZpbGUgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyNi4wMjkyOTQzNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjI0NTYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWlfd3dhbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX1VTQl9WTDYwMClcXHRcXHQrPSBsZy12bDYwMC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19VU0JfTkVUX1FNSV9XV0FOKVxcdCs9IHFtaV93d2FuLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX01CSU0pXFx0Kz0gY2RjX21iaW0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyNi4xODU1NDY3OTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NzUwNjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENPTkZJR19VU0JfTkVUX1FNSV9XV0FOYC4gVGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpc3NlY3QgaXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBzY2hlbWU/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIG9uZSB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IERlcGVuZGVuY2llcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LCBhbmQgSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGVtIHRvIGVuc3VyZSBhIHN0YWJsZSBhbmQgcmVsaWFibGUgYnVpbGQuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aGUgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MjksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyOS41MzMwNTY3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NjEwMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUyMD1jb25maWcgVVNCX05FVF9LQUxNSUFcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzA6Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MzEtXFx0dHJpc3RhdGUgXFxcIlFNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyOS42Nzc2NzQ5NzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MjQyMjUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGUga2VybmVsJ3MgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBvcHRpb24gdG8gZW5hYmxlIFVTQiBuZXR3b3JrIGRyaXZlcnMgaXMgc3RydWN0dXJlZCwgc28gbGV0J3MgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBhcm91bmQgbGluZSA1MzAuIEknbSBndWVzc2luZyB0aGlzIHNlY3Rpb24gc2hvdWxkIGNvdmVyIHRoZSBjb3JlIHNldHRpbmdzIGZvciB0aGVzZSBkcml2ZXJzLiBJJ20gaW50ZXJlc3RlZCBpbiBob3cgdGhleSdyZSBleHBvc2VkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IG1pZ2h0IGhhdmUgb24gb3RoZXIgVVNCIG9yIG5ldHdvcmtpbmcgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGRpZmZlcmVudCBVU0IgbmV0d29yayBjb250cm9sbGVyIGNoaXBzZXRzLiBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBob3cgY29tcGxleCB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzLCBhbmQgbWF5YmUgc3BvdCBhbnkgYXJlYXMgdGhhdCBjb3VsZCBiZSBzaW1wbGlmaWVkIG9yIGJldHRlciBvcmdhbml6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MzIuNzcwMTAxNjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUyNTpcXHRcXHQgIGFzIFNhbXN1bmcgR1QtQjM3MzAuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDUyODpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXFxuIDUyOTpcXHRcXG4gNTMwOlxcdGNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuIDUzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiUU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcXFwiXFxuIDUzMjpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTMzOlxcdFxcdHNlbGVjdCBVU0JfV0RNXFxuIDUzNDpcXHRcXHRoZWxwXFxuIDUzNTpcXHRcXHQgIFN1cHBvcnQgV1dBTiBMVEUvM0cgZGV2aWNlcyBiYXNlZCBvbiBRdWFsY29tbSBNb2JpbGUgRGF0YSBNb2RlbVxcbiA1MzY6XFx0XFx0ICAoTURNKSBjaGlwc2V0cy4gIEV4YW1wbGVzIG9mIHN1Y2ggZGV2aWNlcyBhcmVcXG4gNTM3OlxcdFxcdCAgICAqIEh1YXdlaSBFMzkyL0UzOThcXG4gNTM4OlxcdFxcbiA1Mzk6XFx0XFx0ICBUaGlzIGRyaXZlciB3aWxsIG9ubHkgZHJpdmUgdGhlIGV0aGVybmV0IHBhcnQgb2YgdGhlIGNoaXBzLlxcbiA1NDA6XFx0XFx0ICBUaGUgZGV2aWNlcyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBiZSB1c2FibGUuXFxuIDU0MTpcXHRcXHQgIE11bHRpcGxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyB3aXRoIGxpbnV4IGRyaXZlcnMgYXJlXFxuIDU0MjpcXHRcXHQgIGF2YWlsYWJsZTpcXG4gNTQzOlxcdFxcbiA1NDQ6XFx0XFx0ICAgICogb3B0aW9uOiBBVCBjb21tYW5kcyBvbiAvZGV2L3R0eVVTQnhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MzIuNzcwMjkyODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTEzNTU5NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgYFVTQl9ORVRfUU1JX1dXQU5gIGRlcGVuZHMgb24gYFVTQl9VU0JORVRgLCBlbmFibGluZyBib3RoIHdvdWxkIGJlIHRoZSBjb3JyZWN0IG1vdmUgdG8gY292ZXIgdGhlIHBhdGNoJ3MgY2hhbmdlcy4gVGhlIHBhdGNoIGFsc28gc2VsZWN0cyBgVVNCX1dETWAsIGFuZCBJJ3ZlIGlkZW50aWZpZWQgYHVzYm5ldF9wcm9iZWAgYXMgdGhlIGZvY3VzIHN5bWJvbC5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGB1c2JuZXRfcHJvYmVgIGlzIGEgZ2VuZXJpYyBwcm9iZSwgc28gYW55IFVTQiBuZXR3b3JrIGRyaXZlciB3aWxsIGxpa2VseSBoaXQgdGhpcyBjb2RlLiBgVVNCX1VTQk5FVGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgVVNCX05FVF9RTUlfV1dBTmAgaXMgYSBzcGVjaWZpYyBkcml2ZXIga25vd24gdG8gdXNlIHRoZSBgRkxBR19OT01BWE1UVWAgYnJhbmNoLCB3aGljaCBpcyB3aGF0IEkgd2FudCB0byB0ZXN0LlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBvbmx5IGFsdGVycyB0aGUgYHVzYm5ldF9wcm9iZWAgZnVuY3Rpb24sIHNvIEknbSByZWxhdGl2ZWx5IGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIE5vdywgbGV0IG1lIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBuYW1lcyB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZW0gY29ycmVjdDogYFVTQl9VU0JORVRgLCBgVVNCX05FVF9RTUlfV1dBTmAsIGFuZCBgVVNCX05FVF9EUklWRVJTYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBVU0IgYW5kIE5FVCBhcmUgZW5hYmxlZC5cblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMuIGBVU0JfVVNCTkVUYCBpdHNlbGYgZG9lc24ndCBoYXZlIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBpbiBpdHMgZGVmaW5pdGlvbiwgYnV0IGl0J3MgcGFydCBvZiBgVVNCX05FVF9EUklWRVJTYC4gR2l2ZW4gdGhhdCwgSSdsbCBuZWVkIHRvIGVuYWJsZSBgVVNCX05FVF9EUklWRVJTYC4gTGV0J3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9EUklWRVJTYDsgaXQgZGVwZW5kcyBvbiBgVVNCIFx1MDAyNlx1MDAyNiBORVRgLlxuXG5Ob3csIEkgdGhpbmsgSSdtIHJlYWR5IHRvIGZvcm1hbGl6ZSB0aGlzIGZvciB0aGUgZnV6emluZyBydW4uXG5cbkhlcmUncyB0aGUgZGF0YTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJ1c2JuZXRfcHJvYmVcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJVU0JfVVNCTkVUXCIsIFwiVVNCX05FVF9RTUlfV1dBTlwiXWBcbiogICAqKlJlYXNvbmluZyoqOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI3MywiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Nzo0MS45MDU4OTI2ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg4OTY0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9ORVRfUU1JX1dXQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2JuZXRfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 17:26:04 +0000 UTC FinishedAt: 2026-07-27 17:47:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_QMI_WWAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_QMI_WWAN" ], "series_id": "a86cc50c-7e2c-49f3-9841-9682f817f920" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "usbnet_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi45ZjExY2E0NDlhYWQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG5AQCAtMTc5NCw3ICYjNDM7MTc5NCw3IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4gXHQgKi9cbiBcdGRldi1cdTAwM2VoYXJkX210dSA9IG5ldC1cdTAwM2VtdHUgJiM0MzsgbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiBcdG5ldC1cdTAwM2VtaW5fbXR1ID0gMDtcbi1cdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4mIzQzO1x0bmV0LVx1MDAzZW1heF9tdHUgPSBuZXQtXHUwMDNlbXR1O1xuIFxuIFx0bmV0LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ1c2JuZXRfbmV0ZGV2X29wcztcbiBcdG5ldC1cdTAwM2V3YXRjaGRvZ190aW1lbyA9IFRYX1RJTUVPVVRfSklGRklFUztcbkBAIC0xODI1LDggJiM0MzsxODI1LDkgQEAgdXNibmV0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2LCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcbiBcdFx0aWYgKChkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZMQUdfTk9BUlApICE9IDApXG4gXHRcdFx0bmV0LVx1MDAzZWZsYWdzIHw9IElGRl9OT0FSUDtcbiBcbi1cdFx0aWYgKChkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZMQUdfTk9NQVhNVFUpID09IDAgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBuZXQtXHUwMDNlbWF4X210dSBcdTAwM2UgKGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxuJiM0MztcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbiYjNDM7XHRcdFx0bmV0LVx1MDAzZW1heF9tdHUgPSBFVEhfTUFYX01UVTtcbiYjNDM7XHRcdGVsc2VcbiBcdFx0XHRuZXQtXHUwMDNlbWF4X210dSA9IGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXG4gXHRcdGlmIChuZXQtXHUwMDNlbXR1IFx1MDAzZSAoZGV2LVx1MDAzZWhhcmRfbXR1IC0gbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwppbmRleCAyNTUxODYzNWI3YjcyZC4uOWYxMWNhNDQ5YWFkNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMKQEAgLTE3OTQsNyAmIzQzOzE3OTQsNyBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKQogCSAqLwogCWRldi0mZ3Q7aGFyZF9tdHUgPSBuZXQtJmd0O210dSAmIzQzOyBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbjsKIAluZXQtJmd0O21pbl9tdHUgPSAwOwotCW5ldC0mZ3Q7bWF4X210dSA9IEVUSF9NQVhfTVRVOwomIzQzOwluZXQtJmd0O21heF9tdHUgPSBuZXQtJmd0O210dTsKIAogCW5ldC0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7dXNibmV0X25ldGRldl9vcHM7CiAJbmV0LSZndDt3YXRjaGRvZ190aW1lbyA9IFRYX1RJTUVPVVRfSklGRklFUzsKQEAgLTE4MjUsOCAmIzQzOzE4MjUsOSBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKQogCQlpZiAoKGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O2ZsYWdzICZhbXA7IEZMQUdfTk9BUlApICE9IDApCiAJCQluZXQtJmd0O2ZsYWdzIHw9IElGRl9OT0FSUDsKIAotCQlpZiAoKGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O2ZsYWdzICZhbXA7IEZMQUdfTk9NQVhNVFUpID09IDAgJmFtcDsmYW1wOwotCQkgICAgbmV0LSZndDttYXhfbXR1ICZndDsgKGRldi0mZ3Q7aGFyZF9tdHUgLSBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbikpCiYjNDM7CQlpZiAoZGV2LSZndDtkcml2ZXJfaW5mby0mZ3Q7ZmxhZ3MgJmFtcDsgRkxBR19OT01BWE1UVSkKJiM0MzsJCQluZXQtJmd0O21heF9tdHUgPSBFVEhfTUFYX01UVTsKJiM0MzsJCWVsc2UKIAkJCW5ldC0mZ3Q7bWF4X210dSA9IGRldi0mZ3Q7aGFyZF9tdHUgLSBuZXQtJmd0O2hhcmRfaGVhZGVyX2xlbjsKIAogCQlpZiAobmV0LSZndDttdHUgJmd0OyAoZGV2LSZndDtoYXJkX210dSAtIG5ldC0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB1c2JuZXQuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHR3ZWFraW5nIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgLCBzcGVjaWZpY2FsbHkgaG93IGBuZXQtJmd0O21heF9tdHVgIGlzIGhhbmRsZWQgd2l0aGluIGB1c2JuZXRfcHJvYmVgLiAgVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGluaXRpYWwgYXNzaWdubWVudDogaXQmIzM5O3Mgbm8gbG9uZ2VyIHN0YXJ0aW5nIHdpdGggYEVUSF9NQVhfTVRVYCBidXQgd2l0aCBgbmV0LSZndDttdHVgLiBUaGVuIGl0IGdldHMgY29uZGl0aW9uYWwgbG9naWMgdGhhdCYjMzk7cyBkZXBlbmRlbnQgb24gYEZMQUdfTk9NQVhNVFVgLiBUaGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgZGlmZmVyZW5jZSBpbiB0aGUgZGVmYXVsdCBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0IGNvbmZpZ3VyYXRpb24sIGFuZCB0aGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgc2V0cyBvZmYgYWxhcm0gYmVsbHMgZm9yIG1lLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgVVNCIG5ldHdvcmsgZGV2aWNlcy4gV2UgY2FuIGZ1enogdGhvc2UsIHJpZ2h0PyAgVVNCIGdhZGdldCBlbXVsYXRpb24sIGR1bW15X2hjZCwgdGhhdCBraW5kIG9mIHRoaW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgc3VpdGVkIHRvIHRlc3QgdGhpcy4mIzM0OyBBbnkgY2hhbmdlIHRvIHRoZSBNVFUgaXMgc29tZXRoaW5nIEkmIzM5O2Qgd2FudCB0byBmdXp6IHRob3JvdWdobHkuIE1UVS1yZWxhdGVkIGJ1Z3MgaGF2ZSBhIGhpc3Rvcnkgb2YgYmVpbmcuLi4gaW50ZXJlc3RpbmcuCgpUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiAgSSBrbm93IGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19VU0JfVVNCTkVUYCBpcyBlbmFibGVkLiAgU28sIEkgd2lsbCBsb29rIGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGNvbnRyb2wgYENPTkZJR19VU0JfVVNCTkVUYCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byB0aGVzZSBmbGFncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBwYXRjaCYjMzk7cyBiZWhhdmlvciB3aWxsIGJlIHRyaWdnZXJlZC4gVGhpcyBwYXRjaCBjb3VsZCBiZSBwcm9ibGVtYXRpYyBvciBhIG5vbi1pc3N1ZSBkZXBlbmRpbmcgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIGFuZCB0aGF0IGRldGVybWluZXMgd2hlcmUgbXkgbmV4dCBzdGVwcyBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNibmV0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19VU0JfTkVUX01DUzc4MzApXHQmIzQzOz0gbWNzNzgzMC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX1VTQl9VU0JORVQpXHQmIzQzOz0gdXNibmV0Lm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS0zMS1vYmotJChDT05GSUdfVVNCX05FVF9JTlQ1MVgxKVx0JiM0Mzs9IGludDUxeDEub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqVGhpbmtpbmcgVGhyb3VnaCBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfVVNCX1VTQk5FVGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhhdCBjb25maWcgaXRlbS4gQnV0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgd2VlZHMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGNydWNpYWwsIGF0IHRoaXMgc3RhZ2UsIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZXMgb3Igc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBvcHRpb25zLCBtb2R1bGVzLCBvciBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBDT05GSUdfVVNCX1VTQk5FVGAgY2FuIGV2ZW4gZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZywgSSBjb3VsZCBiZSBjaGFzaW5nIGEgcmVkIGhlcnJpbmcuIFRpbWUgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBVU0JfVVNCTkVUKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgVVNCX1VTQk5FVGAuIExldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrczogd2hhdCYjMzk7cyB0aGlzIHRoaW5nIHJlbGlhbnQgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uYWwgZWxlbWVudHMsIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzLCB0aGUgdW5kZXJseWluZyBkcml2ZXJzLCB0aGUga2VybmVsIG1vZHVsZXMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcCB0byB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IGFwcHJlY2lhdGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCBjb25maWd1cmF0aW9uIGFuZCBtYXAgb3V0IGl0cyBzdXBwb3J0aW5nIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIFVTQl9VU0JORVRcbiAxMzM6XHRcdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gMTM0Olx0XHRzZWxlY3QgTUlJXG4gMTM1Olx0XHRoZWxwXG4gMTM2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcbiAxMzc6XHRcdCAgd2l0aCBcJiMzNDttaW5pZHJpdmVyc1wmIzM0OyBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxuIDEzODpcdFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcbiAxMzk6XHRcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxuIDE0MDpcdFxuIDE0MTpcdFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcJiMzNDt1c2JuZXRcJiMzNDssIGFuZCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBsaW5rIG1pZ2h0IGJlOlxuIDE0MjpcdFxuIDE0MzpcdFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFwmIzM0O25ldHdvcmtcJiMzNDsgb3IgXCYjMzQ7ZGF0YSB0cmFuc2ZlclwmIzM0O1xuIDE0NDpcdFx0ICAgIGNhYmxlcy4gIFRoZXNlIGFyZSBvZnRlbiB1c2VkIHRvIG5ldHdvcmsgbGFwdG9wcyB0byBQQ3MsIGxpa2VcbiAxNDU6XHRcdCAgICBcJiMzNDtMYXBsaW5rXCYjMzQ7IHBhcmFsbGVsIGNhYmxlcyBvciBzb21lIG1vdGhlcmJvYXJkcy4gIFRoZXNlIHJlbHlcbiAxNDY6XHRcdCAgICBvbiBzcGVjaWFsaXplZCBjaGlwcyBmcm9tIG1hbnkgc3VwcGxpZXJzLlxuIDE0NzpcdFxuIDE0ODpcdFx0ICAtIEFuIGludGVsbGlnZW50IFVTQiBnYWRnZXQsIHBlcmhhcHMgZW1iZWRkaW5nIGEgTGludXggc3lzdGVtLlxuIDE0OTpcdFx0ICAgIFRoZXNlIGluY2x1ZGUgUERBcyBydW5uaW5nIExpbnV4IChpUGFxLCBZb3B5LCBaYXVydXMsIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKgoKUmlnaHQsIHNvIHRoaXMgdGhpbmcgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGFueSAqZXhwbGljaXQqIGRlcGVuZGVuY2llcyBsaXN0ZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGNvbnRleHQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoYXQgbG9jYXRpb24gaXMgaGlnaGx5IHN1Z2dlc3RpdmU7IGl0IGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQmIzM5O3MgZW5hYmxlZCBieSBzb21ldGhpbmcgaGlnaGVyIHVwLCBtb3N0IGxpa2VseSByZWxhdGVkIHRvIHRoZSBvdmVyYWxsIFVTQiBuZXR3b3JraW5nIHN1YnN5c3RlbS4gSSYjMzk7bSBiZXR0aW5nIHRoaXMgaXMgaG9va2VkIHVwIHRvLCBvciAqaXMqIHBhcnQgb2YsIGBVU0JfTkVUX0RSSVZFUlNgLCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBmZWF0dXJlIGZsYWcgdGhhdCBmYWxscyB1bmRlciB0aGF0IHVtYnJlbGxhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHJpZ2h0IGFuZCBJIGFtIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW1wbGljaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX05FVF9EUklWRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo4Om1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBVU0IgTmV0d29ya2luZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCYjMzk7cyBhIGtleSBhcmVhIGZvciBuZXR3b3JrIGNvbm5lY3Rpdml0eSB2aWEgVVNCLCBzbyB1bmRlcnN0YW5kaW5nIHdoYXQgaXQgKnJlbGllcyogb24gaXMgcGFyYW1vdW50LiBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlcyDigJMgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBjb25maWd1cmF0aW9ucywgb3IgaGFyZHdhcmUgc3VwcG9ydCDigJMgdGhhdCBtdXN0IGJlIGluIHBsYWNlIGZvciBgVVNCX05FVF9EUklWRVJTYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRpZ2dpbmcgdGhyb3VnaCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBjb2RlIGl0c2VsZiB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhvc2UgZGVwZW5kZW5jaWVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBgbWFrZSBtZW51Y29uZmlnYCBvciBhIHNpbWlsYXIgdG9vbCB0byB2aXN1YWxpemUgdGhlIGNvbm5lY3Rpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBmb3IgYnVpbGRpbmcgYSBzdGFibGUgYW5kIGVmZmljaWVudCBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIHRoYXQgbGV2ZXJhZ2VzIFVTQiBuZXR3b3JraW5nLCBzbyBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRjb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiAhVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiAgMTA6XHRcdGRlZmF1bHQgVVNCIGlmIFVTQlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAxMjpcdFxuICAxMzpcdGlmIFVTQl9ORVRfRFJJVkVSU1xuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBVU0JfQ0FUQ1xuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IENSQzMyXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XG4gIDIwOlx0XHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2OTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uOiBgVVNCX05FVF9EUklWRVJTYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYE5FVGAuIE1ha2VzIHNlbnNlLCB0aGUgZHJpdmVyIGlzIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBOb3csIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAg4oCTIHRoYXQmIzM5O3MgdGhlIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRyaXZlciBJIHdhbnQgdG8gdGFyZ2V0LgoKVGhlIHJlbGV2YW50IGZ1bmN0aW9uIEkmIzM5O20gZm9jdXNpbmcgb24gaGVyZSBpcyBgdXNibmV0X3Byb2JlYC4gSXQmIzM5O3MgYSBwcm9iZSBmdW5jdGlvbiwgc28gaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRyaWdnZXJlZCB3aGVuIGEgY29tcGF0aWJsZSBVU0IgZGV2aWNlIGdldHMgcGx1Z2dlZCBpbi4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBBbmQgdGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBkdW1teV9oY2QgZHJpdmVyLCBtYWtpbmcgdGVzdGluZyB0aGlzIGluY3JlZGlibHkgcHJhY3RpY2FsLiBUaGUgZm9jdXMgc3ltYm9sLCB3aXRob3V0IGEgZG91YnQsIHNob3VsZCBiZSBgdXNibmV0X3Byb2JlYC4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGRpZmYgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyIHdlcmUgbW9kaWZpZWQgYXMgd2VsbC4gTm9wZSwgb25seSBgdXNibmV0X3Byb2JlYC4gTm93LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgdXNibmV0X3Byb2JlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7bGwgYWZmZWN0IHRoZSBzY29wZSBvZiBob3cgSSYjMzk7bSB0aGlua2luZyBvZiBmdXp6aW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvdXNibmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jPTE3MjU9aW50XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTcyNjp1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE3Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTI5LX1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxOTMwOkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9wcm9iZSk7XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTkzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgc28gYHVzYm5ldF9wcm9iZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZDsgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBjaGFuZ2VzIGhvdyBJIG5lZWQgdG8gYXBwcm9hY2ggdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgVVNCIG5ldHdvcmsgZnJhbWV3b3JrLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgVVNCX1VTQk5FVGAgaXMgdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBTcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9ORVRfQ0RDRVRIRVJgIGxldmVyYWdlIGl0LiBNeSBrZXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYFVTQl9VU0JORVRgIGl0c2VsZiAqY2FuKiBiZSBkaXJlY3RseSBwcm9iZWQsIG9yIGlmIGl0cyBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZHJpdmVycyB0aGF0IHV0aWxpemUgaXQuIFRoZSBmYWN0IHRoYXQgYHVzYm5ldF9wcm9iZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgb3RoZXIgZHJpdmVycywgY2xhcmlmaWVzIGl0cyByb2xlLiBJdCYjMzk7cyBhIGNlbnRyYWwgZnVuY3Rpb24uIEkgc2hvdWxkIG5vdyBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjYWxsaW5nIGludG8gYHVzYm5ldF9wcm9iZWAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xNDgxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhcV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0ODMtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQ4NDpcdC5wcm9iZVx0XHQ9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDg1LVx0LnN1c3BlbmRcdD0gYXFjMTExX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE2MTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFzaXhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNjE1LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE2MTY6XHQucHJvYmUgPVx0dXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE2MTctXHQuc3VzcGVuZCA9XHRhc2l4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE5Mzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF4ODgxNzlfMTc4YV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE5MzktXHQuaWRfdGFibGUgPVx0cHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTk0MDpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTk0MS1cdC5zdXNwZW5kID1cdGF4ODgxNzlfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jPTM1Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZWVtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTM1NC1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM6MzU1Olx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzU2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTk2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtOTcwLVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjk3MTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtOTcyLVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NjgzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjZGNfbWJpbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg1LVx0LmlkX3RhYmxlID0gbWJpbV9kZXZzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Njg2Olx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg3LVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMjc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGNkY19uY21fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjEyOS1cdC5pZF90YWJsZSA9IGNkY19kZXZzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMTMwOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTMxLVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX3N1YnNldF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jLTM0Mi1cdC5uYW1lID1cdFx0XCYjMzQ7Y2RjX3N1YnNldFwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfc3Vic2V0LmM6MzQzOlx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfc3Vic2V0LmMtMzQ0LVx0LnN1c3BlbmQgPVx0dXNibmV0X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTQxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2g5MjAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtNDE5LVx0LmlkX3RhYmxlID0gY2g5MjAwX3Byb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQyMDpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy00MjEtXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzYzLVx0LmlkX3RhYmxlXHQ9IHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzY0Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzY1LVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTYxOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZG05NjAxX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNjIwLVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6NjIxOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTYyMi1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTIxMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZ2w2MjBhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMjE0LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjIxNTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMjE2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MjEzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBodWF3ZWlfY2RjX25jbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMjE1LVx0LmlkX3RhYmxlID0gaHVhd2VpX2NkY19uY21fZGV2cyxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjIxNjpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTIxNy1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xNDI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGludDUxeDFfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMTQ0LVx0LmlkX3RhYmxlICAgPSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM6MTQ1Olx0LnByb2JlICAgICAgPSB1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTE0Ni1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM1OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIga2FsbWlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2Iva2FsbWlhLmMtMzYxLVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Iva2FsbWlhLmM6MzYyOlx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM2My1cdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzIxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBsZ192bDYwMF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzIzLVx0LmlkX3RhYmxlXHQ9IHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM6MzI0Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzI1LVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz02MTY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG1jczc4MzBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjE4LVx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjYxOTpcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjIwLVx0LmRpc2Nvbm5lY3QgPSB1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTUwOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbmV0MTA4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy01MTAtXHQuaWRfdGFibGUgPVx0cHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjUxMTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTUxMi1cdC5kaXNjb25uZWN0ID1cdHVzYm5ldF9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jPTEzOT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcGx1c2JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jLTE0MS1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jOjE0MjpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYy0xNDMtXHQuZGlzY29ubmVjdCA9XHR1c2JuZXRfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTMyPXN0YXRpYyBpbnQgcW1pX3d3YW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU3NC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NzU6XHRyZXR1cm4gdXNibmV0X3Byb2JlKGludGYsIGlkKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NzYtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYz0xNDk9c3RhdGljIGludCBydGw4MTUzX2VjbV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTU2LVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjE1NzpcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTE1OC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYz02OTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJuZGlzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jLTY5NS1cdC5pZF90YWJsZSA9XHRwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmM6Njk2Olx0LnByb2JlID1cdHVzYm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMtNjk3LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYz05MTQ9c2llcnJhX25ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYy05MTctXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jOjkxODpcdHJldCA9IHVzYm5ldF9wcm9iZSh1ZGV2LCBwcm9kKTtcbmRyaXZlcnMvbmV0L3VzYi9zaWVycmFfbmV0LmMtOTE5LVx0aWYgKHJldCA9PSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmM9MjMyMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzc1eHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjNzV4eC5jLTIzMjQtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYzoyMzI1Olx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmMtMjMyNi1cdC5zdXNwZW5kXHQ9IHNtc2M3NXh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MjE3OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzk1eHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTIxODAtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoyMTgxOlx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4Mi1cdC5zdXNwZW5kXHQ9IHNtc2M5NXh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jPTQ2OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc3I5NzAwX3VzYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3MS1cdC5pZF90YWJsZVx0PSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYzo0NzI6XHQucHJvYmVcdFx0PSB1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2Ivc3I5NzAwLmMtNDczLVx0LmRpc2Nvbm5lY3RcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jPTgzOT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc3JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zcjk4MDAuYy04NDEtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmM6ODQyOlx0LnByb2JlXHRcdD0gdXNibmV0X3Byb2JlLFxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jLTg0My1cdC5zdXNwZW5kXHQ9IHVzYm5ldF9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI1PWludFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjE3MjY6dXNibmV0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2LCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xNzI3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTkyOS19XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTkzMDpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfcHJvYmUpO1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MzEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jPTM5Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgemF1cnVzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmMtMzk0LVx0LmlkX3RhYmxlID1cdHByb2R1Y3RzLFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jOjM5NTpcdC5wcm9iZSA9XHR1c2JuZXRfcHJvYmUsXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmMtMzk2LVx0LmRpc2Nvbm5lY3QgPVx0dXNibmV0X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVVNCbmV0IENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIGB1c2JuZXRfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIGEgZnVuY3Rpb24gSSBzZWUgcG9wcGluZyB1cCBpbiBhICpsb3QqIG9mIGRpZmZlcmVudCBkcml2ZXJzLiBHaXZlbiB0aGF0LCBlbmFibGluZyBgVVNCX1VTQk5FVGAgc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIuIEl0JiMzOTtzIGEgZnJhbWV3b3JrLCBzbyBsb2dpYyBkaWN0YXRlcyB0aGF0IGVuYWJsaW5nIGF0IGxlYXN0IG9uZSBkcml2ZXIgdGhhdCB1dGlsaXplcyBpdCBpcyBwcm9iYWJseSB0aGUgbW9zdCBzZW5zaWJsZSBwYXRoLiAgYFVTQl9ORVRfQ0RDRVRIRVJgIGlzIGFsd2F5cyBhIHNvbGlkIGNob2ljZSwgb3IgZXZlbiB0aGUgYFVTQl9ORVRfQVg4ODE3OV8xNzhBYCBhbmQgYFVTQl9ORVRfU01TQzk1WFhgIG9wdGlvbnMgY291bGQgZG8gdGhlIHRyaWNrLiBTdGlsbCwgZXZlbiBpZiBJIGp1c3Qgd2VudCB3aXRoIGVuYWJsaW5nIGBVU0JfVVNCTkVUYCBpdHNlbGYsIGB1c2JuZXQuY2Agc2hvdWxkIGNvbXBpbGUganVzdCBmaW5lLgoKSGFuZyBvbiBhIHNlY29uZOKApiBgVVNCX1VTQk5FVGAgaXMgYSAqdHJpc3RhdGUqIGNvbmZpZywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIGFueSBvZiB0aG9zZSBkcml2ZXJzIGFyZSBzcGVjaWZpY2FsbHkgc2V0dGluZyBgRkxBR19OT01BWE1UVWAuIFRoYXQgY291bGQgaW5mbHVlbmNlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNldHVwIEkgY2hvb3NlLiBJIGFsd2F5cyBhcHByZWNpYXRlIGEgcHJvcGVyIHNhbml0eSBjaGVjayB3aGVuIGl0IGNvbWVzIHRvIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkxBR19OT01BWE1UVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9OTI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdHFtaV93d2FuX2luZm8gPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXHQuZGVzY3JpcHRpb25cdD0gXCYjMzQ7V1dBTi9RTUkgZGV2aWNlXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTMxOlx0LmZsYWdzXHRcdD0gRkxBR19XV0FOIHwgRkxBR19OT01BWE1UVSB8IEZMQUdfU0VORF9aTFAsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzItXHQuYmluZFx0XHQ9IHFtaV93d2FuX2JpbmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9OTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdHFtaV93d2FuX2luZm9fcXVpcmtfZHRyID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTM5LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O1dXQU4vUU1JIGRldmljZVwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0MDpcdC5mbGFnc1x0XHQ9IEZMQUdfV1dBTiB8IEZMQUdfTk9NQVhNVFUgfCBGTEFHX1NFTkRfWkxQLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTQxLVx0LmJpbmRcdFx0PSBxbWlfd3dhbl9iaW5kLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI2PXVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE4MjctXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTgyODpcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xODI5LVx0XHRcdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIFFNSSBXV0FOIE1UVSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgcW1pX3d3YW5gIGlzIHVzaW5nIGBGTEFHX05PTUFYTVRVYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aHkuIE15IGZpcnN0IG1vdmUgaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgcW1pX3d3YW5gIG1vZHVsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZmxhZyBpcyBiZWluZyBzZXQsIGFuZCB3aGF0IGltcGxpY2F0aW9ucyB0aGF0IGhhcyBvbiB0aGUgbGluayYjMzk7cyBlZmZlY3RpdmUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdC4gSSBuZWVkIHRvIGtub3cgaWYgd2UmIzM5O3JlIGV4cGxpY2l0bHkgb3ZlcnJpZGluZyB0aGUgTVRVIGRpc2NvdmVyeSBwcm9jZXNzLCBvciBpZiB0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMsIGdpdmVuIHRoYXQgaXQmIzM5O3MgaW4gdGhlIGNvZGUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQgcmVhc29uIGlzIHN0aWxsIHZhbGlkIGFuZCBhcHByb3ByaWF0ZSBmb3Igb3VyIGN1cnJlbnQgdXNlIGNhc2UuIE1heWJlIHRoZXJlJiMzOTtzIGFuIG9sZGVyIGRlc2lnbiBkZWNpc2lvbiBhdCBwbGF5IHRoYXQgd2Ugc2hvdWxkIHJldmlzaXQsIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvIHdlJiMzOTtyZSBhdm9pZGluZyB3aXRoIHRoaXMgZmxhZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWcgZmlsZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxbWlfd3dhbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfVVNCX1ZMNjAwKVx0XHQmIzQzOz0gbGctdmw2MDAub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19VU0JfTkVUX1FNSV9XV0FOKVx0JiM0Mzs9IHFtaV93d2FuLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTUJJTSlcdCYjNDM7PSBjZGNfbWJpbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDI5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQ09ORklHX1VTQl9ORVRfUU1JX1dXQU5gLiBUaGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXNzZWN0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSBsYXJnZXIgc2NoZW1lPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBvbmUgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBEZXBlbmRlbmNpZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgYW5kIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlbSB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHJlbGlhYmxlIGJ1aWxkLiBUaW1lIHRvIGRpZyBpbiBhbmQgdHJhY2UgdGhlIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX1FNSV9XV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMDpjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIFVTQiBOZXR3b3JraW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtlcm5lbCYjMzk7cyBVU0IgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9wdGlvbiB0byBlbmFibGUgVVNCIG5ldHdvcmsgZHJpdmVycyBpcyBzdHJ1Y3R1cmVkLCBzbyBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBhcm91bmQgbGluZSA1MzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBzZWN0aW9uIHNob3VsZCBjb3ZlciB0aGUgY29yZSBzZXR0aW5ncyBmb3IgdGhlc2UgZHJpdmVycy4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IG1pZ2h0IGhhdmUgb24gb3RoZXIgVVNCIG9yIG5ldHdvcmtpbmcgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgY29udHJvbGxlciBjaGlwc2V0cy4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaG93IGNvbXBsZXggdGhlIGRlcGVuZGVuY3kgdHJlZSBpcywgYW5kIG1heWJlIHNwb3QgYW55IGFyZWFzIHRoYXQgY291bGQgYmUgc2ltcGxpZmllZCBvciBiZXR0ZXIgb3JnYW5pemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjU6XHRcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNTI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXG4gNTI5Olx0XG4gNTMwOlx0Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cbiA1MzE6XHRcdHRyaXN0YXRlIFwmIzM0O1FNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXCYjMzQ7XG4gNTMyOlx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiA1MzM6XHRcdHNlbGVjdCBVU0JfV0RNXG4gNTM0Olx0XHRoZWxwXG4gNTM1Olx0XHQgIFN1cHBvcnQgV1dBTiBMVEUvM0cgZGV2aWNlcyBiYXNlZCBvbiBRdWFsY29tbSBNb2JpbGUgRGF0YSBNb2RlbVxuIDUzNjpcdFx0ICAoTURNKSBjaGlwc2V0cy4gIEV4YW1wbGVzIG9mIHN1Y2ggZGV2aWNlcyBhcmVcbiA1Mzc6XHRcdCAgICAqIEh1YXdlaSBFMzkyL0UzOThcbiA1Mzg6XHRcbiA1Mzk6XHRcdCAgVGhpcyBkcml2ZXIgd2lsbCBvbmx5IGRyaXZlIHRoZSBldGhlcm5ldCBwYXJ0IG9mIHRoZSBjaGlwcy5cbiA1NDA6XHRcdCAgVGhlIGRldmljZXMgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNhYmxlLlxuIDU0MTpcdFx0ICBNdWx0aXBsZSBtYW5hZ2VtZW50IGludGVyZmFjZXMgd2l0aCBsaW51eCBkcml2ZXJzIGFyZVxuIDU0MjpcdFx0ICBhdmFpbGFibGU6XG4gNTQzOlx0XG4gNTQ0Olx0XHQgICAgKiBvcHRpb246IEFUIGNvbW1hbmRzIG9uIC9kZXYvdHR5VVNCeFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI3MwoJCQkJCQkJb3V0cHV0OiAxNDMKCQkJCQkJCXRob3VnaHRzOiA0NzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgYFVTQl9ORVRfUU1JX1dXQU5gIGRlcGVuZHMgb24gYFVTQl9VU0JORVRgLCBlbmFibGluZyBib3RoIHdvdWxkIGJlIHRoZSBjb3JyZWN0IG1vdmUgdG8gY292ZXIgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuIFRoZSBwYXRjaCBhbHNvIHNlbGVjdHMgYFVTQl9XRE1gLCBhbmQgSSYjMzk7dmUgaWRlbnRpZmllZCBgdXNibmV0X3Byb2JlYCBhcyB0aGUgZm9jdXMgc3ltYm9sLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGB1c2JuZXRfcHJvYmVgIGlzIGEgZ2VuZXJpYyBwcm9iZSwgc28gYW55IFVTQiBuZXR3b3JrIGRyaXZlciB3aWxsIGxpa2VseSBoaXQgdGhpcyBjb2RlLiBgVVNCX1VTQk5FVGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgVVNCX05FVF9RTUlfV1dBTmAgaXMgYSBzcGVjaWZpYyBkcml2ZXIga25vd24gdG8gdXNlIHRoZSBgRkxBR19OT01BWE1UVWAgYnJhbmNoLCB3aGljaCBpcyB3aGF0IEkgd2FudCB0byB0ZXN0LgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbiwgc28gSSYjMzk7bSByZWxhdGl2ZWx5IGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIE5vdywgbGV0IG1lIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBuYW1lcyB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZW0gY29ycmVjdDogYFVTQl9VU0JORVRgLCBgVVNCX05FVF9RTUlfV1dBTmAsIGFuZCBgVVNCX05FVF9EUklWRVJTYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBVU0IgYW5kIE5FVCBhcmUgZW5hYmxlZC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGRlcGVuZGVuY2llcy4gYFVTQl9VU0JORVRgIGl0c2VsZiBkb2VzbiYjMzk7dCBoYXZlIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBpbiBpdHMgZGVmaW5pdGlvbiwgYnV0IGl0JiMzOTtzIHBhcnQgb2YgYFVTQl9ORVRfRFJJVkVSU2AuIEdpdmVuIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBVU0JfTkVUX0RSSVZFUlNgLiBMZXQmIzM5O3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9EUklWRVJTYDsgaXQgZGVwZW5kcyBvbiBgVVNCICZhbXA7JmFtcDsgTkVUYC4KCk5vdywgSSB0aGluayBJJiMzOTttIHJlYWR5IHRvIGZvcm1hbGl6ZSB0aGlzIGZvciB0aGUgZnV6emluZyBydW4uCgpIZXJlJiMzOTtzIHRoZSBkYXRhOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O3VzYm5ldF9wcm9iZSYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7VVNCX1VTQk5FVCYjMzQ7LCAmIzM0O1VTQl9ORVRfUU1JX1dXQU4mIzM0O11gCiogICAqKlJlYXNvbmluZyoqOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX1FNSV9XV0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNibmV0X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNVFUgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gYHVzYm5ldF9wcm9iZWAsIHdoaWNoIGlzIHRoZSBnZW5lcmljIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBzdXBwb3J0ZWQgVVNCIG5ldHdvcmsgZGV2aWNlIGlzIGNvbm5lY3RlZCAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QpLiBFbmFibGluZyBVU0JfVVNCTkVUIGFuZCBVU0JfTkVUX1FNSV9XV0FOICh3aGljaCB1c2VzIEZMQUdfTk9NQVhNVFUpIHdpbGwgYWxsb3cgZnV6emluZyBib3RoIGJyYW5jaGVzIG9mIHRoZSBtb2RpZmllZCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfUU1JX1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JuZXRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1MC41OTgwMjkzNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjEwNjc3MzIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ2OjUwLjU5ODAzNjE1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzNDgxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmEyMjI3ZWYzM2M1ZWQyZWNmYzljMGI4YjIwMWMyNWRjODhlN2I1OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG5pbmRleCAyNTUxODYzNWI3YjcyZC4uOWYxMWNhNDQ5YWFkNDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXFxuQEAgLTE3OTQsNyArMTc5NCw3IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuIFxcdCAqL1xcbiBcXHRkZXYtXFx1MDAzZWhhcmRfbXR1ID0gbmV0LVxcdTAwM2VtdHUgKyBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFx0bmV0LVxcdTAwM2VtaW5fbXR1ID0gMDtcXG4tXFx0bmV0LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxuK1xcdG5ldC1cXHUwMDNlbWF4X210dSA9IG5ldC1cXHUwMDNlbXR1O1xcbiBcXG4gXFx0bmV0LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnVzYm5ldF9uZXRkZXZfb3BzO1xcbiBcXHRuZXQtXFx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVF9KSUZGSUVTO1xcbkBAIC0xODI1LDggKzE4MjUsOSBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxcbiBcXHRcXHRpZiAoKGRldi1cXHUwMDNlZHJpdmVyX2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkxBR19OT0FSUCkgIT0gMClcXG4gXFx0XFx0XFx0bmV0LVxcdTAwM2VmbGFncyB8PSBJRkZfTk9BUlA7XFxuIFxcbi1cXHRcXHRpZiAoKGRldi1cXHUwMDNlZHJpdmVyX2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkxBR19OT01BWE1UVSkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgbmV0LVxcdTAwM2VtYXhfbXR1IFxcdTAwM2UgKGRldi1cXHUwMDNlaGFyZF9tdHUgLSBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpXFxuK1xcdFxcdGlmIChkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfTk9NQVhNVFUpXFxuK1xcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xcbitcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IGRldi1cXHUwMDNlaGFyZF9tdHUgLSBuZXQtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFxuIFxcdFxcdGlmIChuZXQtXFx1MDAzZW10dSBcXHUwMDNlIChkZXYtXFx1MDAzZWhhcmRfbXR1IC0gbmV0LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1MS4yNTM2MzY3MzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MTQ1MTE1NjcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZhMjIyN2VmMzNjNWVkMmVjZmM5YzBiOGIyMDFjMjVkYzg4ZTdiNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzo0Njo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuaW5kZXggMjU1MTg2MzViN2I3MmQuLjlmMTFjYTQ0OWFhZDQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbkBAIC0xNzk0LDcgKzE3OTQsNyBAQCB1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuIFx0ICovXG4gXHRkZXYtXHUwMDNlaGFyZF9tdHUgPSBuZXQtXHUwMDNlbXR1ICsgbmV0LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiBcdG5ldC1cdTAwM2VtaW5fbXR1ID0gMDtcbi1cdG5ldC1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4rXHRuZXQtXHUwMDNlbWF4X210dSA9IG5ldC1cdTAwM2VtdHU7XG4gXG4gXHRuZXQtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnVzYm5ldF9uZXRkZXZfb3BzO1xuIFx0bmV0LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVF9KSUZGSUVTO1xuQEAgLTE4MjUsOCArMTgyNSw5IEBAIHVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXG4gXHRcdGlmICgoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX05PQVJQKSAhPSAwKVxuIFx0XHRcdG5ldC1cdTAwM2VmbGFncyB8PSBJRkZfTk9BUlA7XG4gXG4tXHRcdGlmICgoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX05PTUFYTVRVKSA9PSAwIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmV0LVx1MDAzZW1heF9tdHUgXHUwMDNlIChkZXYtXHUwMDNlaGFyZF9tdHUgLSBuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSlcbitcdFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19OT01BWE1UVSlcbitcdFx0XHRuZXQtXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xuK1x0XHRlbHNlXG4gXHRcdFx0bmV0LVx1MDAzZW1heF9tdHUgPSBkZXYtXHUwMDNlaGFyZF9tdHUgLSBuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuIFxuIFx0XHRpZiAobmV0LVx1MDAzZW10dSBcdTAwM2UgKGRldi1cdTAwM2VoYXJkX210dSAtIG5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDY6NTEuMjUzNjM4ODQxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5NTE4ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB1c2JuZXQuYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHR3ZWFraW5nIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgLCBzcGVjaWZpY2FsbHkgaG93IGBuZXQtXHUwMDNlbWF4X210dWAgaXMgaGFuZGxlZCB3aXRoaW4gYHVzYm5ldF9wcm9iZWAuICBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW5pdGlhbCBhc3NpZ25tZW50OiBpdCdzIG5vIGxvbmdlciBzdGFydGluZyB3aXRoIGBFVEhfTUFYX01UVWAgYnV0IHdpdGggYG5ldC1cdTAwM2VtdHVgLiBUaGVuIGl0IGdldHMgY29uZGl0aW9uYWwgbG9naWMgdGhhdCdzIGRlcGVuZGVudCBvbiBgRkxBR19OT01BWE1UVWAuIFRoYXQgY291bGQgaW50cm9kdWNlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBkaWZmZXJlbmNlIGluIHRoZSBkZWZhdWx0IE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQgY29uZmlndXJhdGlvbiwgYW5kIHRoYXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IHNldHMgb2ZmIGFsYXJtIGJlbGxzIGZvciBtZS5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgVVNCIG5ldHdvcmsgZGV2aWNlcy4gV2UgY2FuIGZ1enogdGhvc2UsIHJpZ2h0PyAgVVNCIGdhZGdldCBlbXVsYXRpb24sIGR1bW15X2hjZCwgdGhhdCBraW5kIG9mIHRoaW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgc3VpdGVkIHRvIHRlc3QgdGhpcy5cIiBBbnkgY2hhbmdlIHRvIHRoZSBNVFUgaXMgc29tZXRoaW5nIEknZCB3YW50IHRvIGZ1enogdGhvcm91Z2hseS4gTVRVLXJlbGF0ZWQgYnVncyBoYXZlIGEgaGlzdG9yeSBvZiBiZWluZy4uLiBpbnRlcmVzdGluZy5cblxuVGhlcmVmb3JlLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gIEkga25vdyBgZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfVVNCX1VTQk5FVGAgaXMgZW5hYmxlZC4gIFNvLCBJIHdpbGwgbG9vayBpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIG9yIGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBjb250cm9sIGBDT05GSUdfVVNCX1VTQk5FVGAgYW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlc2UgZmxhZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcGF0Y2gncyBiZWhhdmlvciB3aWxsIGJlIHRyaWdnZXJlZC4gVGhpcyBwYXRjaCBjb3VsZCBiZSBwcm9ibGVtYXRpYyBvciBhIG5vbi1pc3N1ZSBkZXBlbmRpbmcgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIGFuZCB0aGF0IGRldGVybWluZXMgd2hlcmUgbXkgbmV4dCBzdGVwcyBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1Ni41NDg4MzI5NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzI2NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYm5ldC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX1VTQl9ORVRfTUNTNzgzMClcXHQrPSBtY3M3ODMwLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX1VTQl9VU0JORVQpXFx0Kz0gdXNibmV0Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX1VTQl9ORVRfSU5UNTFYMSlcXHQrPSBpbnQ1MXgxLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDY6NTYuNjc0MTY2MjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkwNTAzNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqVGhpbmtpbmcgVGhyb3VnaCBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCByZXZvbHZlcyBhcm91bmQgYENPTkZJR19VU0JfVVNCTkVUYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGF0IGNvbmZpZyBpdGVtLiBCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSB3ZWVkcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQncyBjcnVjaWFsLCBhdCB0aGlzIHN0YWdlLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzIG9yIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgb3B0aW9ucywgbW9kdWxlcywgb3IgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQ09ORklHX1VTQl9VU0JORVRgIGNhbiBldmVuIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgZm91bmRhdGlvbmFsIHVuZGVyc3RhbmRpbmcsIEkgY291bGQgYmUgY2hhc2luZyBhIHJlZCBoZXJyaW5nLiBUaW1lIHRvIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1OS40NjQ2NzI3NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTU0Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Njo1OS42MDg2MzE2MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY5ODg5NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgVVNCX1VTQk5FVCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBVU0JfVVNCTkVUYC4gTGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoYXQncyB0aGlzIHRoaW5nIHJlbGlhbnQgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uYWwgZWxlbWVudHMsIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzLCB0aGUgdW5kZXJseWluZyBkcml2ZXJzLCB0aGUga2VybmVsIG1vZHVsZXMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcCB0byB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmeWluZywgb3IgZXZlbiBqdXN0IGFwcHJlY2lhdGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCBjb25maWd1cmF0aW9uIGFuZCBtYXAgb3V0IGl0cyBzdXBwb3J0aW5nIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjAyLjU3ODUyMzg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxcbiAxMzE6XFx0XFxuIDEzMjpcXHRjb25maWcgVVNCX1VTQk5FVFxcbiAxMzM6XFx0XFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcbiAxMzQ6XFx0XFx0c2VsZWN0IE1JSVxcbiAxMzU6XFx0XFx0aGVscFxcbiAxMzY6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXFxuIDEzNzpcXHRcXHQgIHdpdGggXFxcIm1pbmlkcml2ZXJzXFxcIiBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxcbiAxMzg6XFx0XFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcXG4gMTM5OlxcdFxcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHQgIFRoZSBVU0IgaG9zdCBydW5zIFxcXCJ1c2JuZXRcXFwiLCBhbmQgdGhlIG90aGVyIGVuZCBvZiB0aGUgbGluayBtaWdodCBiZTpcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFxcXCJuZXR3b3JrXFxcIiBvciBcXFwiZGF0YSB0cmFuc2ZlclxcXCJcXG4gMTQ0OlxcdFxcdCAgICBjYWJsZXMuICBUaGVzZSBhcmUgb2Z0ZW4gdXNlZCB0byBuZXR3b3JrIGxhcHRvcHMgdG8gUENzLCBsaWtlXFxuIDE0NTpcXHRcXHQgICAgXFxcIkxhcGxpbmtcXFwiIHBhcmFsbGVsIGNhYmxlcyBvciBzb21lIG1vdGhlcmJvYXJkcy4gIFRoZXNlIHJlbHlcXG4gMTQ2OlxcdFxcdCAgICBvbiBzcGVjaWFsaXplZCBjaGlwcyBmcm9tIG1hbnkgc3VwcGxpZXJzLlxcbiAxNDc6XFx0XFxuIDE0ODpcXHRcXHQgIC0gQW4gaW50ZWxsaWdlbnQgVVNCIGdhZGdldCwgcGVyaGFwcyBlbWJlZGRpbmcgYSBMaW51eCBzeXN0ZW0uXFxuIDE0OTpcXHRcXHQgICAgVGhlc2UgaW5jbHVkZSBQREFzIHJ1bm5pbmcgTGludXggKGlQYXEsIFlvcHksIFphdXJ1cywgYW5kXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjAyLjU3ODYzNzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA0NzA4MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKlxuXG5SaWdodCwgc28gdGhpcyB0aGluZyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgKmV4cGxpY2l0KiBkZXBlbmRlbmNpZXMgbGlzdGVkLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb250ZXh0IGhlcmUgaXMgdGhhdCBpdCdzIG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoYXQgbG9jYXRpb24gaXMgaGlnaGx5IHN1Z2dlc3RpdmU7IGl0IGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQncyBlbmFibGVkIGJ5IHNvbWV0aGluZyBoaWdoZXIgdXAsIG1vc3QgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIG92ZXJhbGwgVVNCIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBJJ20gYmV0dGluZyB0aGlzIGlzIGhvb2tlZCB1cCB0bywgb3IgKmlzKiBwYXJ0IG9mLCBgVVNCX05FVF9EUklWRVJTYCwgb3IgcGVyaGFwcyBhIG1vcmUgc3BlY2lmaWMgZmVhdHVyZSBmbGFnIHRoYXQgZmFsbHMgdW5kZXIgdGhhdCB1bWJyZWxsYS4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSByaWdodCBhbmQgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGltcGxpY2l0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowNS44ODMzNDg0NDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDAxOTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6ODptZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowNi4wMTMzNzg4MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMjMyMzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFVTQiBOZXR3b3JraW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCdzIGEga2V5IGFyZWEgZm9yIG5ldHdvcmsgY29ubmVjdGl2aXR5IHZpYSBVU0IsIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCAqcmVsaWVzKiBvbiBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byBrbm93IHRoZSBwcmVyZXF1aXNpdGVzIOKAkyB0aGUgb3RoZXIga2VybmVsIG1vZHVsZXMsIGNvbmZpZ3VyYXRpb25zLCBvciBoYXJkd2FyZSBzdXBwb3J0IOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgZm9yIGBVU0JfTkVUX0RSSVZFUlNgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGlnZ2luZyB0aHJvdWdoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvdGVudGlhbGx5IGNvZGUgaXRzZWxmIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aG9zZSBkZXBlbmRlbmNpZXMuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYSBgbWFrZSBtZW51Y29uZmlnYCBvciBhIHNpbWlsYXIgdG9vbCB0byB2aXN1YWxpemUgdGhlIGNvbm5lY3Rpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBmb3IgYnVpbGRpbmcgYSBzdGFibGUgYW5kIGVmZmljaWVudCBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIHRoYXQgbGV2ZXJhZ2VzIFVTQiBuZXR3b3JraW5nLCBzbyBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjA5LjUzNTcwNjg5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYxNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRjb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuICAxMDpcXHRcXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBVU0JfTkVUX0RSSVZFUlNcXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIFVTQl9DQVRDXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDE3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxcbiAgMjA6XFx0XFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzowOS41MzU4NzYxNTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3ODE4MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uOiBgVVNCX05FVF9EUklWRVJTYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYE5FVGAuIE1ha2VzIHNlbnNlLCB0aGUgZHJpdmVyIGlzIGZvciBVU0IgbmV0d29yayBkZXZpY2VzLiBOb3csIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAg4oCTIHRoYXQncyB0aGUgc3BlY2lmaWMgVVNCIG5ldHdvcmsgZHJpdmVyIEkgd2FudCB0byB0YXJnZXQuXG5cblRoZSByZWxldmFudCBmdW5jdGlvbiBJJ20gZm9jdXNpbmcgb24gaGVyZSBpcyBgdXNibmV0X3Byb2JlYC4gSXQncyBhIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCdzIHRoZSBlbnRyeSBwb2ludCB0cmlnZ2VyZWQgd2hlbiBhIGNvbXBhdGlibGUgVVNCIGRldmljZSBnZXRzIHBsdWdnZWQgaW4uIERlZmluaXRlbHkgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW5kIHRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyB0aGUgZHVtbXlfaGNkIGRyaXZlciwgbWFraW5nIHRlc3RpbmcgdGhpcyBpbmNyZWRpYmx5IHByYWN0aWNhbC4gVGhlIGZvY3VzIHN5bWJvbCwgd2l0aG91dCBhIGRvdWJ0LCBzaG91bGQgYmUgYHVzYm5ldF9wcm9iZWAuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgZGlmZiB0byBtYWtlIHN1cmUgbm8gb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIgd2VyZSBtb2RpZmllZCBhcyB3ZWxsLiBOb3BlLCBvbmx5IGB1c2JuZXRfcHJvYmVgLiBOb3csIEkgbmVlZCB0byBjb25maXJtIGlmIGB1c2JuZXRfcHJvYmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0J2xsIGFmZmVjdCB0aGUgc2NvcGUgb2YgaG93IEknbSB0aGlua2luZyBvZiBmdXp6aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njk1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MTMuMzE0MDU5MzYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM1NDgzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MTcyNT1pbnRcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTcyNjp1c2JuZXRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xNzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTI5LX1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTkzMDpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xOTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoxMy40Mzc2MTM4NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMjY3MDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgdXNibmV0X3Byb2JlYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkOyBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyBob3cgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIFVTQiBuZXR3b3JrIGZyYW1ld29yay4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgVVNCX1VTQk5FVGAgaXMgdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBTcGVjaWZpYyBkcml2ZXJzIGxpa2UgYFVTQl9ORVRfQ0RDRVRIRVJgIGxldmVyYWdlIGl0LiBNeSBrZXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYFVTQl9VU0JORVRgIGl0c2VsZiAqY2FuKiBiZSBkaXJlY3RseSBwcm9iZWQsIG9yIGlmIGl0cyBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZHJpdmVycyB0aGF0IHV0aWxpemUgaXQuIFRoZSBmYWN0IHRoYXQgYHVzYm5ldF9wcm9iZWAgaXMgZXhwbGljaXRseSBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgb3RoZXIgZHJpdmVycywgY2xhcmlmaWVzIGl0cyByb2xlLiBJdCdzIGEgY2VudHJhbCBmdW5jdGlvbi4gSSBzaG91bGQgbm93IGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGNhbGxpbmcgaW50byBgdXNibmV0X3Byb2JlYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MTcuNzUwMjg2NzM5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMxMzQzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTE0ODE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDgzLVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0ODQ6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0ODUtXFx0LnN1c3BlbmRcXHQ9IGFxYzExMV9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE2MTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGFzaXhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE2MTUtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTYxNjpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTYxNy1cXHQuc3VzcGVuZCA9XFx0YXNpeF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE5Mzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF4ODgxNzlfMTc4YV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTkzOS1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxOTQwOlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xOTQxLVxcdC5zdXNwZW5kID1cXHRheDg4MTc5X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jPTM1Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZWVtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzU0LVxcdC5pZF90YWJsZSA9XFx0cHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzozNTU6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zNTYtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTk2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NzAtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6OTcxOlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NzItXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NjgzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjZGNfbWJpbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02ODUtXFx0LmlkX3RhYmxlID0gbWJpbV9kZXZzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjY4NjpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjg3LVxcdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMjc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGNkY19uY21fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTI5LVxcdC5pZF90YWJsZSA9IGNkY19kZXZzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjEzMDpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTMxLVxcdC5kaXNjb25uZWN0ID0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY2RjX3N1YnNldF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19zdWJzZXQuYy0zNDItXFx0Lm5hbWUgPVxcdFxcdFxcXCJjZGNfc3Vic2V0XFxcIixcXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jOjM0MzpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvY2RjX3N1YnNldC5jLTM0NC1cXHQuc3VzcGVuZCA9XFx0dXNibmV0X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9NDE3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjaDkyMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQxOS1cXHQuaWRfdGFibGUgPSBjaDkyMDBfcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQyMDpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQyMS1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2My1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2NDpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjUtXFx0LmRpc2Nvbm5lY3RcXHQ9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTYxOD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZG05NjAxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy02MjAtXFx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjYyMTpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTYyMi1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTIxMj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZ2w2MjBhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0yMTQtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmM6MjE1OlxcdC5wcm9iZSA9XFx0dXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0yMTYtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MjEzPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBodWF3ZWlfY2RjX25jbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0yMTUtXFx0LmlkX3RhYmxlID0gaHVhd2VpX2NkY19uY21fZGV2cyxcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoyMTY6XFx0LnByb2JlID0gdXNibmV0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTIxNy1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xNDI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGludDUxeDFfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0xNDQtXFx0LmlkX3RhYmxlICAgPSBwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jOjE0NTpcXHQucHJvYmUgICAgICA9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTE0Ni1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM1OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIga2FsbWlhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNjEtXFx0LmlkX3RhYmxlID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjM2MjpcXHQucHJvYmUgPSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM2My1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzIxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBsZ192bDYwMF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMjMtXFx0LmlkX3RhYmxlXFx0PSBwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMjQ6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzI1LVxcdC5kaXNjb25uZWN0XFx0PSB1c2JuZXRfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NjE2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtY3M3ODMwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNjE4LVxcdC5pZF90YWJsZSA9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NjE5OlxcdC5wcm9iZSA9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTYyMC1cXHQuZGlzY29ubmVjdCA9IHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYz01MDg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG5ldDEwODBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy01MTAtXFx0LmlkX3RhYmxlID1cXHRwcm9kdWN0cyxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjUxMTpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTUxMi1cXHQuZGlzY29ubmVjdCA9XFx0dXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYz0xMzk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHBsdXNiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jLTE0MS1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9wbHVzYi5jOjE0MjpcXHQucHJvYmUgPVxcdHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2IvcGx1c2IuYy0xNDMtXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MTUzMj1zdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU3NC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTc1OlxcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jPTE0OT1zdGF0aWMgaW50IHJ0bDgxNTNfZWNtX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTE1Ni1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM6MTU3OlxcdHJldHVybiB1c2JuZXRfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xNTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYz02OTM9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJuZGlzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMtNjk1LVxcdC5pZF90YWJsZSA9XFx0cHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYzo2OTY6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYy02OTctXFx0LmRpc2Nvbm5lY3QgPVxcdHVzYm5ldF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYz05MTQ9c2llcnJhX25ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jLTkxNy1cXG5kcml2ZXJzL25ldC91c2Ivc2llcnJhX25ldC5jOjkxODpcXHRyZXQgPSB1c2JuZXRfcHJvYmUodWRldiwgcHJvZCk7XFxuZHJpdmVycy9uZXQvdXNiL3NpZXJyYV9uZXQuYy05MTktXFx0aWYgKHJldCA9PSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYz0yMzIyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzbXNjNzV4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYy0yMzI0LVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M3NXh4LmM6MjMyNTpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2Ivc21zYzc1eHguYy0yMzI2LVxcdC5zdXNwZW5kXFx0PSBzbXNjNzV4eF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MjE3OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc21zYzk1eHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4MC1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjIxODE6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMjE4Mi1cXHQuc3VzcGVuZFxcdD0gc21zYzk1eHhfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYz00Njk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHNyOTcwMF91c2JfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3MS1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi9zcjk3MDAuYzo0NzI6XFx0LnByb2JlXFx0XFx0PSB1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3NyOTcwMC5jLTQ3My1cXHQuZGlzY29ubmVjdFxcdD0gdXNibmV0X2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmM9ODM5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzcl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmMtODQxLVxcdC5pZF90YWJsZVxcdD0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3NyOTgwMC5jOjg0MjpcXHQucHJvYmVcXHRcXHQ9IHVzYm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC91c2Ivc3I5ODAwLmMtODQzLVxcdC5zdXNwZW5kXFx0PSB1c2JuZXRfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI1PWludFxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxNzI2OnVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE3Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MjktfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoxOTMwOkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9wcm9iZSk7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTE5MzEtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvemF1cnVzLmM9MzkyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB6YXVydXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jLTM5NC1cXHQuaWRfdGFibGUgPVxcdHByb2R1Y3RzLFxcbmRyaXZlcnMvbmV0L3VzYi96YXVydXMuYzozOTU6XFx0LnByb2JlID1cXHR1c2JuZXRfcHJvYmUsXFxuZHJpdmVycy9uZXQvdXNiL3phdXJ1cy5jLTM5Ni1cXHQuZGlzY29ubmVjdCA9XFx0dXNibmV0X2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjQ3OjE3Ljg1MzQyNzU5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU1MjM5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFVTQm5ldCBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIGB1c2JuZXRfcHJvYmVgIOKAkyB0aGF0J3MgYSBmdW5jdGlvbiBJIHNlZSBwb3BwaW5nIHVwIGluIGEgKmxvdCogb2YgZGlmZmVyZW50IGRyaXZlcnMuIEdpdmVuIHRoYXQsIGVuYWJsaW5nIGBVU0JfVVNCTkVUYCBzZWVtcyBsaWtlIGEgbm8tYnJhaW5lci4gSXQncyBhIGZyYW1ld29yaywgc28gbG9naWMgZGljdGF0ZXMgdGhhdCBlbmFibGluZyBhdCBsZWFzdCBvbmUgZHJpdmVyIHRoYXQgdXRpbGl6ZXMgaXQgaXMgcHJvYmFibHkgdGhlIG1vc3Qgc2Vuc2libGUgcGF0aC4gIGBVU0JfTkVUX0NEQ0VUSEVSYCBpcyBhbHdheXMgYSBzb2xpZCBjaG9pY2UsIG9yIGV2ZW4gdGhlIGBVU0JfTkVUX0FYODgxNzlfMTc4QWAgYW5kIGBVU0JfTkVUX1NNU0M5NVhYYCBvcHRpb25zIGNvdWxkIGRvIHRoZSB0cmljay4gU3RpbGwsIGV2ZW4gaWYgSSBqdXN0IHdlbnQgd2l0aCBlbmFibGluZyBgVVNCX1VTQk5FVGAgaXRzZWxmLCBgdXNibmV0LmNgIHNob3VsZCBjb21waWxlIGp1c3QgZmluZS5cblxuSGFuZyBvbiBhIHNlY29uZOKApiBgVVNCX1VTQk5FVGAgaXMgYSAqdHJpc3RhdGUqIGNvbmZpZywgaXNuJ3QgaXQ/IExldCdzIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhbnkgb2YgdGhvc2UgZHJpdmVycyBhcmUgc3BlY2lmaWNhbGx5IHNldHRpbmcgYEZMQUdfTk9NQVhNVFVgLiBUaGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZXR1cCBJIGNob29zZS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIHByb3BlciBzYW5pdHkgY2hlY2sgd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MjIuMzA4NjY5NzI0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2NDgyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRkxBR19OT01BWE1UVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzE6XFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzItXFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdHFtaV93d2FuX2luZm9fcXVpcmtfZHRyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkzOS1cXHQuZGVzY3JpcHRpb25cXHQ9IFxcXCJXV0FOL1FNSSBkZXZpY2VcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0MDpcXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfV1dBTiB8IEZMQUdfTk9NQVhNVFUgfCBGTEFHX1NFTkRfWkxQLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk0MS1cXHQuYmluZFxcdFxcdD0gcW1pX3d3YW5fYmluZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0xNzI2PXVzYm5ldF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdWRldiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnByb2QpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMTgyNy1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MTgyODpcXHRcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGTEFHX05PTUFYTVRVKVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0xODI5LVxcdFxcdFxcdG5ldC1cXHUwMDNlbWF4X210dSA9IEVUSF9NQVhfTVRVO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyMi40MDkzMjM3OTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxOTk2NzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFFNSSBXV0FOIE1UVSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBxbWlfd3dhbmAgaXMgdXNpbmcgYEZMQUdfTk9NQVhNVFVgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2h5LiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYHFtaV93d2FuYCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZsYWcgaXMgYmVpbmcgc2V0LCBhbmQgd2hhdCBpbXBsaWNhdGlvbnMgdGhhdCBoYXMgb24gdGhlIGxpbmsncyBlZmZlY3RpdmUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdC4gSSBuZWVkIHRvIGtub3cgaWYgd2UncmUgZXhwbGljaXRseSBvdmVycmlkaW5nIHRoZSBNVFUgZGlzY292ZXJ5IHByb2Nlc3MsIG9yIGlmIHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIEknbSBhc3N1bWluZyB0aGVyZSdzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMsIGdpdmVuIHRoYXQgaXQncyBpbiB0aGUgY29kZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCByZWFzb24gaXMgc3RpbGwgdmFsaWQgYW5kIGFwcHJvcHJpYXRlIGZvciBvdXIgY3VycmVudCB1c2UgY2FzZS4gTWF5YmUgdGhlcmUncyBhbiBvbGRlciBkZXNpZ24gZGVjaXNpb24gYXQgcGxheSB0aGF0IHdlIHNob3VsZCByZXZpc2l0LCBvciBwZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvIHdlJ3JlIGF2b2lkaW5nIHdpdGggdGhpcyBmbGFnLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIGZpbGUgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyNi4wMjkyOTQzNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjI0NTYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWlfd3dhbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX1VTQl9WTDYwMClcXHRcXHQrPSBsZy12bDYwMC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19VU0JfTkVUX1FNSV9XV0FOKVxcdCs9IHFtaV93d2FuLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX01CSU0pXFx0Kz0gY2RjX21iaW0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyNi4xODU1NDY3OTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NzUwNjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENPTkZJR19VU0JfTkVUX1FNSV9XV0FOYC4gVGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpc3NlY3QgaXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBzY2hlbWU/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIG9uZSB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IERlcGVuZGVuY2llcyBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LCBhbmQgSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGVtIHRvIGVuc3VyZSBhIHN0YWJsZSBhbmQgcmVsaWFibGUgYnVpbGQuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aGUgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MjksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyOS41MzMwNTY3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NjEwMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUyMD1jb25maWcgVVNCX05FVF9LQUxNSUFcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzA6Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MzEtXFx0dHJpc3RhdGUgXFxcIlFNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0NzoyOS42Nzc2NzQ5NzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MjQyMjUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGUga2VybmVsJ3MgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBvcHRpb24gdG8gZW5hYmxlIFVTQiBuZXR3b3JrIGRyaXZlcnMgaXMgc3RydWN0dXJlZCwgc28gbGV0J3MgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBhcm91bmQgbGluZSA1MzAuIEknbSBndWVzc2luZyB0aGlzIHNlY3Rpb24gc2hvdWxkIGNvdmVyIHRoZSBjb3JlIHNldHRpbmdzIGZvciB0aGVzZSBkcml2ZXJzLiBJJ20gaW50ZXJlc3RlZCBpbiBob3cgdGhleSdyZSBleHBvc2VkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IG1pZ2h0IGhhdmUgb24gb3RoZXIgVVNCIG9yIG5ldHdvcmtpbmcgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGRpZmZlcmVudCBVU0IgbmV0d29yayBjb250cm9sbGVyIGNoaXBzZXRzLiBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBob3cgY29tcGxleCB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzLCBhbmQgbWF5YmUgc3BvdCBhbnkgYXJlYXMgdGhhdCBjb3VsZCBiZSBzaW1wbGlmaWVkIG9yIGJldHRlciBvcmdhbml6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MzIuNzcwMTAxNjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUyNTpcXHRcXHQgIGFzIFNhbXN1bmcgR1QtQjM3MzAuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDUyODpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXFxuIDUyOTpcXHRcXG4gNTMwOlxcdGNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuIDUzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiUU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcXFwiXFxuIDUzMjpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTMzOlxcdFxcdHNlbGVjdCBVU0JfV0RNXFxuIDUzNDpcXHRcXHRoZWxwXFxuIDUzNTpcXHRcXHQgIFN1cHBvcnQgV1dBTiBMVEUvM0cgZGV2aWNlcyBiYXNlZCBvbiBRdWFsY29tbSBNb2JpbGUgRGF0YSBNb2RlbVxcbiA1MzY6XFx0XFx0ICAoTURNKSBjaGlwc2V0cy4gIEV4YW1wbGVzIG9mIHN1Y2ggZGV2aWNlcyBhcmVcXG4gNTM3OlxcdFxcdCAgICAqIEh1YXdlaSBFMzkyL0UzOThcXG4gNTM4OlxcdFxcbiA1Mzk6XFx0XFx0ICBUaGlzIGRyaXZlciB3aWxsIG9ubHkgZHJpdmUgdGhlIGV0aGVybmV0IHBhcnQgb2YgdGhlIGNoaXBzLlxcbiA1NDA6XFx0XFx0ICBUaGUgZGV2aWNlcyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBiZSB1c2FibGUuXFxuIDU0MTpcXHRcXHQgIE11bHRpcGxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyB3aXRoIGxpbnV4IGRyaXZlcnMgYXJlXFxuIDU0MjpcXHRcXHQgIGF2YWlsYWJsZTpcXG4gNTQzOlxcdFxcbiA1NDQ6XFx0XFx0ICAgICogb3B0aW9uOiBBVCBjb21tYW5kcyBvbiAvZGV2L3R0eVVTQnhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6NDc6MzIuNzcwMjkyODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTEzNTU5NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgdXNibmV0X3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc2luY2UgYFVTQl9ORVRfUU1JX1dXQU5gIGRlcGVuZHMgb24gYFVTQl9VU0JORVRgLCBlbmFibGluZyBib3RoIHdvdWxkIGJlIHRoZSBjb3JyZWN0IG1vdmUgdG8gY292ZXIgdGhlIHBhdGNoJ3MgY2hhbmdlcy4gVGhlIHBhdGNoIGFsc28gc2VsZWN0cyBgVVNCX1dETWAsIGFuZCBJJ3ZlIGlkZW50aWZpZWQgYHVzYm5ldF9wcm9iZWAgYXMgdGhlIGZvY3VzIHN5bWJvbC5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGB1c2JuZXRfcHJvYmVgIGlzIGEgZ2VuZXJpYyBwcm9iZSwgc28gYW55IFVTQiBuZXR3b3JrIGRyaXZlciB3aWxsIGxpa2VseSBoaXQgdGhpcyBjb2RlLiBgVVNCX1VTQk5FVGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgVVNCX05FVF9RTUlfV1dBTmAgaXMgYSBzcGVjaWZpYyBkcml2ZXIga25vd24gdG8gdXNlIHRoZSBgRkxBR19OT01BWE1UVWAgYnJhbmNoLCB3aGljaCBpcyB3aGF0IEkgd2FudCB0byB0ZXN0LlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBvbmx5IGFsdGVycyB0aGUgYHVzYm5ldF9wcm9iZWAgZnVuY3Rpb24sIHNvIEknbSByZWxhdGl2ZWx5IGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIE5vdywgbGV0IG1lIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBuYW1lcyB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZW0gY29ycmVjdDogYFVTQl9VU0JORVRgLCBgVVNCX05FVF9RTUlfV1dBTmAsIGFuZCBgVVNCX05FVF9EUklWRVJTYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBVU0IgYW5kIE5FVCBhcmUgZW5hYmxlZC5cblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMuIGBVU0JfVVNCTkVUYCBpdHNlbGYgZG9lc24ndCBoYXZlIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBpbiBpdHMgZGVmaW5pdGlvbiwgYnV0IGl0J3MgcGFydCBvZiBgVVNCX05FVF9EUklWRVJTYC4gR2l2ZW4gdGhhdCwgSSdsbCBuZWVkIHRvIGVuYWJsZSBgVVNCX05FVF9EUklWRVJTYC4gTGV0J3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9EUklWRVJTYDsgaXQgZGVwZW5kcyBvbiBgVVNCIFx1MDAyNlx1MDAyNiBORVRgLlxuXG5Ob3csIEkgdGhpbmsgSSdtIHJlYWR5IHRvIGZvcm1hbGl6ZSB0aGlzIGZvciB0aGUgZnV6emluZyBydW4uXG5cbkhlcmUncyB0aGUgZGF0YTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJ1c2JuZXRfcHJvYmVcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJVU0JfVVNCTkVUXCIsIFwiVVNCX05FVF9RTUlfV1dBTlwiXWBcbiogICAqKlJlYXNvbmluZyoqOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI3MywiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzo0Nzo0MS45MDU4OTI2ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg4OTY0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9ORVRfUU1JX1dXQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2JuZXRfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTVRVIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGB1c2JuZXRfcHJvYmVgLCB3aGljaCBpcyB0aGUgZ2VuZXJpYyBwcm9iZSBmdW5jdGlvbiBmb3IgVVNCIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgc3VwcG9ydGVkIFVTQiBuZXR3b3JrIGRldmljZSBpcyBjb25uZWN0ZWQgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkKS4gRW5hYmxpbmcgVVNCX1VTQk5FVCBhbmQgVVNCX05FVF9RTUlfV1dBTiAod2hpY2ggdXNlcyBGTEFHX05PTUFYTVRVKSB3aWxsIGFsbG93IGZ1enppbmcgYm90aCBicmFuY2hlcyBvZiB0aGUgbW9kaWZpZWQgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX1FNSV9XV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNibmV0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1UVSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBgdXNibmV0X3Byb2JlYCwgd2hpY2ggaXMgdGhlIGdlbmVyaWMgcHJvYmUgZnVuY3Rpb24gZm9yIFVTQiBuZXR3b3JrIGRldmljZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIHN1cHBvcnRlZCBVU0IgbmV0d29yayBkZXZpY2UgaXMgY29ubmVjdGVkICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCkuIEVuYWJsaW5nIFVTQl9VU0JORVQgYW5kIFVTQl9ORVRfUU1JX1dXQU4gKHdoaWNoIHVzZXMgRkxBR19OT01BWE1UVSkgd2lsbCBhbGxvdyBmdXp6aW5nIGJvdGggYnJhbmNoZXMgb2YgdGhlIG1vZGlmaWVkIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[1] Phase: Succeeded StartedAt: 2026-07-27 17:47:54 +0000 UTC FinishedAt: 2026-07-27 17:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 17:47:54 +0000 UTC FinishedAt: 2026-07-27 17:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2] Phase: Succeeded StartedAt: 2026-07-27 17:47:54 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 17:47:55 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 17:47:55 +0000 UTC FinishedAt: 2026-07-27 17:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 17:47:55 +0000 UTC FinishedAt: 2026-07-27 17:48:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2774934408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 17:48:18 +0000 UTC FinishedAt: 2026-07-27 18:21:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 17:48:18 +0000 UTC FinishedAt: 2026-07-27 18:21:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*501b246f-e7cd-4892-81e4-db2e616e123a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2774934408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "0f5a0378-70db-4520-84fb-d96f3ebb460e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-1238367742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 17:48:18 +0000 UTC FinishedAt: 2026-07-27 18:21:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*501b246f-e7cd-4892-81e4-db2e616e123a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2774934408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "0f5a0378-70db-4520-84fb-d96f3ebb460e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-1238367742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 18:21:52 +0000 UTC FinishedAt: 2026-07-27 18:21:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 18:21:52 +0000 UTC FinishedAt: 2026-07-27 18:21:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 18:21:52 +0000 UTC FinishedAt: 2026-07-27 18:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 18:21:52 +0000 UTC FinishedAt: 2026-07-27 18:21:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2687638383/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 18:22:02 +0000 UTC FinishedAt: 2026-07-27 18:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 18:22:02 +0000 UTC FinishedAt: 2026-07-27 18:23:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0f5a0378-70db-4520-84fb-d96f3ebb460e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-1238367742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 18:24:05 +0000 UTC FinishedAt: 2026-07-27 18:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 18:24:05 +0000 UTC FinishedAt: 2026-07-27 18:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 18:24:05 +0000 UTC FinishedAt: 2026-07-27 19:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 18:24:05 +0000 UTC FinishedAt: 2026-07-27 19:00:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*501b246f-e7cd-4892-81e4-db2e616e123a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2687638383/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "23de1de6-cc7c-41dc-b105-a4c9f34abc04", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-3981545219/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 18:24:05 +0000 UTC FinishedAt: 2026-07-27 19:00:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*501b246f-e7cd-4892-81e4-db2e616e123a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2687638383/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "23de1de6-cc7c-41dc-b105-a4c9f34abc04", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-3981545219/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 19:00:52 +0000 UTC FinishedAt: 2026-07-27 19:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 19:00:52 +0000 UTC FinishedAt: 2026-07-27 19:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 19:00:52 +0000 UTC FinishedAt: 2026-07-27 19:03:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 19:00:52 +0000 UTC FinishedAt: 2026-07-27 19:02:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23de1de6-cc7c-41dc-b105-a4c9f34abc04,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-3981545219/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 19:03:40 +0000 UTC FinishedAt: 2026-07-27 19:03:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*0f5a0378-70db-4520-84fb-d96f3ebb460e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23de1de6-cc7c-41dc-b105-a4c9f34abc04,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-1238367742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-3981545219/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:04:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:03:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2742652456/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:03:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 19:03:41 +0000 UTC FinishedAt: 2026-07-27 19:03:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 19:04:02 +0000 UTC FinishedAt: 2026-07-27 19:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7hwrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usbnet_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_QMI_WWAN"],"series_id":"a86cc50c-7e2c-49f3-9841-9682f817f920","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 19:04:02 +0000 UTC FinishedAt: 2026-07-27 19:50:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0f5a0378-70db-4520-84fb-d96f3ebb460e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23de1de6-cc7c-41dc-b105-a4c9f34abc04,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-1238367742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-build-action-3981545219/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7hwrm/series-workflow7hwrm-convert-artifact-2742652456/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}