Name: series-workflowm6w42 Phase: Succeeded StartedAt: 2026-07-25 12:10:23 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[0] Phase: Succeeded StartedAt: 2026-07-25 12:10:23 +0000 UTC FinishedAt: 2026-07-25 12:26:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 12:10:23 +0000 UTC FinishedAt: 2026-07-25 12:26:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MT7925U" ], "series_id": "fbed7a64-9cf1-4e37-bce0-fecf65843158" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_load_clc", "mt7925_run_firmware", "mt7925e_mcu_init", "mt7925u_mcu_init" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2YWJhMzZkYWEyYjkzNmU2ZWU1ZGI5NjZkNDVhZTQxMzU5ZGNmZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uMzQwZmMyZWE5NmQwM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC04NjMsOCAmIzQzOzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbi1cdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XG4mIzQzO1x0XHRpZiAoKGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19SRUdEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGlmIChjbGMtXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjYgY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2YWJhMzZkYWEyYjkzNmU2ZWU1ZGI5NjZkNDVhZTQxMzU5ZGNmZmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtODYzLDggJiM0Mzs4NjMsMTEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqLwotCQlpZiAoKGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCAmYW1wOyZhbXA7Ci0JCSAgICAgdThfZ2V0X2JpdHMoY2xjLSZndDt0Mi50eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcCkgfHwKJiM0MzsJCWlmICgoY2xjLSZndDtpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfUkVHRCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoY2xjLSZndDtpZHggIT0gTVQ3OTJ4X0NMQ19CRV9DVFJMICZhbXA7JmFtcDsgY2xjLSZndDtpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEICZhbXA7JmFtcDsKIAkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiAJCQljb250aW51ZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lZGlhdGVrIE1UNzkyNSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtdDc5MjVfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIHRoZSBgbXQ3OTI1L21jdS5jYCBmaWxlIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgaXQmIzM5O3MgbW9kaWZ5aW5nIGEgc2FuaXR5IGNoZWNrLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgJiMzNDtoZWFkZXIgY29udGVudCYjMzQ7IHZlcmlmaWNhdGlvbi4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGBjbGMtJmd0O2lkeCA9PSBNVDc5MnhfQ0xDX1JFR0RgIGludG8gdGhlIGV4aXN0aW5nIGNvbmRpdGlvbiBmb3IgYGNsYy0mZ3Q7dDIudHlwZWAuIFNpbXVsdGFuZW91c2x5LCBpdCBhZGRzIGBjbGMtJmd0O2lkeCAhPSBNVDc5MnhfQ0xDX1JFR0RgIHRvIHRoZSBjb25kaXRpb24gdGhhdCBjaGVja3MgYGNsYy0mZ3Q7dDAudHlwZWAuIENsZWFybHksIHRoaXMgYE1UNzkyeF9DTENfUkVHRGAgaW5kZXggaXMgc2lnbmlmaWNhbnQgYW5kIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGRyaXZlciB0eXBpY2FsbHkgZGVwbG95ZWQ/JiMzNDsuIEl0JiMzOTtzIHRoZSBNVDc5MjUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgcGFydCBvZiB0aGUgbXQ3NiBmYW1pbHkuIFRoZXNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgaW50ZW5kZWQgZm9yIHBoeXNpY2FsIFBDSWUsIFVTQiwgb3IgU0RJTyBXaS1GaSBjYXJkcy4gVGhlIE1lZGlhdGVrIG10NzYgZmFtaWx5IGlzIGEgcmVsYXRpdmVseSB3ZWxsIHVuZGVyc3Rvb2QgY29kZSBiYXNlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyB3YXkgbWFrZXMgbWUgd29uZGVyLCBpZiBJIGNvdWxkIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2hpbGUgbWFueSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCBpdCYjMzk7cyB3b3J0aCBzZWVpbmcgaWYgYSB2aXJ0dWFsaXphdGlvbiBzZXR1cCBpcyBwb3NzaWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIG1vZGVsLgoKV2FpdCBhIG1pbnV0ZSwgd2FzbiYjMzk7dCB0aGVyZSBib3RoIGEgVVNCIGFuZCBhIFBDSWUgdmVyc2lvbiBvZiB0aGUgbXQ3OTI1PyBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIFVTQiB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhbmQgYWNjZXNzaWJsZS4gUmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBvciBpZiB0aGV5JiMzOTtyZSBjb25kaXRpb25hbCBvbiBoYXJkd2FyZSBwcmVzZW5jZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgYWNjZXNzaWJpbGl0eSBvZiB0aGlzIHBhdGNoIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMTc9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTEyOTpcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzAtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgRHJpdmVyIExhbmRzY2FwZSBmb3IgTVQ3OTI1KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBVU0IgZHJpdmVyIHNpdHVhdGlvbiBmb3IgdGhlIE1UNzkyNS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7ZCBpbW1lZGlhdGVseSB3YW50IHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgKmFueSogZXhpc3RpbmcgVVNCIGludGVyZmFjZSBzdXBwb3J0IGZvciB0aGF0IHBhcnRpY3VsYXIgY2hpcHNldC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpb24gZmVhc2liaWxpdHkgaGVyZS4gRG9lcyBpdCBuYXRpdmVseSBvcGVyYXRlIG92ZXIgVVNCLCBvciBpcyB0aGF0IGEgZm9yY2VkIG9yIGhhY2tlZC10b2dldGhlciBzb2x1dGlvbj8gSWYgaXQgZG9lcyBvcGVyYXRlLCBpcyBpdCBmdWxseSBzdXBwb3J0ZWQgYW5kIHJlYWR5IHRvIGJlIGltcGxlbWVudGVkLCBvciB3aWxsIHNvbWUgY3VzdG9tIHdvcmsgbmVlZCB0byBiZSBkb25lPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGFuZCwgeWVhaCwgaXQgbG9va3MgbGlrZSBgdXNiLmNgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgVVNCIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSBlbXVsYXRhYmxlLiBXZSYjMzk7dmUgZ290IG9wdGlvbnMgbGlrZSBVU0IgZ2FkZ2V0LCBgZHVtbXlfaGNkYCwgYW5kIG9mIGNvdXJzZSwgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIHVzaW5nIGB2aGNpYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGV2ZW4gd2hlbiBvcGVyYXRpbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRlc3RhYmlsaXR5IEkgbGlrZSB0byBzZWUuIE15IG5leHQgc3RlcCwgdGhlbiwgaXMgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBmb3IgdGhlIG10NzkyNSBVU0IgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5jb3ZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogbXQ3OTI1X2xvYWRfY2xjKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG10NzkyNV9sb2FkX2NsY2AgaW4gdGhlIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgJiMzNDt3aXJlbGVzcyBkcml2ZXIsJiMzNDsgYW5kIGdpdmVuIHRoYXQgaXQmIzM5O3MgYSBNZWRpYVRlayBNVDc5MjUsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBib3RoIFBDSWUgYW5kIFVTQiBjb25maWd1cmF0aW9ucywgc28gdGhlIHBvc3NpYmlsaXRpZXMgd2lkZW4uIGBtdDc5MjVfbG9hZF9jbGNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCwgd2hpY2gsIGdpdmVuIHRoZSBuYW1pbmcsIGxpa2VseSBnZXRzIGludm9rZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiDigJMgYSBjbGFzc2ljIHBvaW50IGZvciB2dWxuZXJhYmlsaXR5IGV4cGxvaXRhdGlvbi4KCk5vdywgYmVjYXVzZSBpdCYjMzk7cyBXaS1GaSwgYW5kIHBhcnRpY3VsYXJseSBiZWNhdXNlIGl0IGhhcyBzdXBwb3J0IGZvciBVU0IsIHRoZSBgTVQ3OTI1VWAgY29uZmlnLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGZ1enppbmcuIFVTQiBlbXVsYXRpb24gd2l0aCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIgY291bGQgYmUgdmVyeSBlZmZlY3RpdmUgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayB0aGF0IGBNVDc5MjVVYCBpcyBpbmRlZWQgYSBVU0IgZHJpdmVyLiBPa2F5LCB5ZWFoLCBgY29uZmlnIE1UNzkyNVVgIGV4cGxpY2l0bHkgc3RhdGVzICYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0JiMzNDsuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgYSB0YXJnZXQuIFVTQiBkcml2ZXJzIGNhbiBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLCBzbyB0aGlzIGlzIHByb21pc2luZy4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayB3aG8gY2FsbHMgYG10NzkyNV9ydW5fZmlybXdhcmVgIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgYSBiaXQgYmV0dGVyLiBUaGlzIHNob3VsZCByZXZlYWwgZW50cnkgcG9pbnRzIHRvIHRoZSBmaXJtd2FyZSBhbmQgYW55IG90aGVyIGludGVyZXN0aW5nIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xMTE1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTExNzppbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTExOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTM2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzE9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzMtaW50IG10NzkyNV9tY3Vfc2V0X2Jzc19wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo3MDpcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0Olx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTE1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBGdW5jdGlvbiBDYWxsKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gYm90aCBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgd2l0aGluIGB1c2IuY2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBzdWdnZXN0cyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGlzIGludGVncmFsIHRvIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIEl0JiMzOTtzIHRyaWdnZXJlZCBhdCB0aGUgY3J1Y2lhbCBwb2ludHMgd2hlbiB0aGUgZGV2aWNlIGZpcnN0IHBvd2VycyB1cCBvciB1bmRlcmdvZXMgYSByZXNldCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEdvb2QsIHRoYXQgY29uZmlybXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBmb2N1cy4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTI1VWA7IG5hbWVseSwgaXQmIzM5O3MgcmVsaWFudCBvbiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZfQ09SRWAsIGFuZCBgTVQ3Nl9VU0JgLiBUaGlzIGNvbmZpcm1zIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBtb2R1bGVzIGFyZSBpbiBwbGFjZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBiZWNvbWUgY3JpdGljYWwgd2hlbiBJIGJlZ2luIHRvIGRlYnVnIHRoaXMgb3IgZXZlbiBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVx0c2VsZWN0IE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjItXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRvIGdldCB0aGlzIE1UNzkyNVUgdGhpbmcgZ29pbmcsIHRoZSBjb25maWcgSSBuZWVkIHRvIGJlIGZvY3VzaW5nIG9uIGlzIGBNVDc5MjVVYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIHRoaW5rLi4uIEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgZmlybXdhcmUgbG9hZGluZyByZWxhdGVkIHRvIHRoYXQgc3BlY2lmaWMgbW9kZWwuIEFoLCB5ZXMhIGBtdDc5MjVfbG9hZF9jbGNgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcGFyc2luZyB0aGUgZmlybXdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGZyb20gc3RvcmFnZSB0byBiZWluZyBwYXJzZWQ7IGlzIGl0IHRocm91Z2ggdGhlIHN0YW5kYXJkIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsPyBUaGF0IHNlZW1zIGxvZ2ljYWwsIGdpdmVuIHRoZSBjb250ZXh0LiBBbHJpZ2h0LCBiZXN0IHRvIGp1c3QgY29uZmlybTsgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRoZSBmaXJtd2FyZSBhY3F1aXNpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc5ODpcdHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNzk5Olx0e1xuIDgwMDpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gODAxOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDgwMjpcdFx0Y29uc3Qgc3RydWN0IG10NzkyNV9jbGMgKmNsYztcbiA4MDM6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDgwNDpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gODA1Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDgwNjpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDgwNzpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDgwODpcdFxuIDgwOTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA4MTA6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA4MTE6XHRcdGlmICghbXQ3OTI1X3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDgxMjpcdFx0XHRyZXR1cm4gMDtcbiA4MTM6XHRcbiA4MTQ6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gODE1Olx0XHRcdHJldCA9IG10NzkyNV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gODE2Olx0XHRcdGlmIChyZXQpXG4gODE3Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4MTg6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gODE5Olx0XHR9XG4gODIwOlx0XG4gODIxOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gODIyOlx0XHRpZiAocmV0KVxuIDgyMzpcdFx0XHRyZXR1cm4gcmV0O1xuIDgyNDpcdFxuIDgyNTpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA4MjY6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gODI3Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gODI4Olx0XHRcdGdvdG8gb3V0O1xuIDgyOTpcdFx0fVxuIDgzMDpcdFxuIDgzMTpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA4MzI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA4MzM6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA4MzQ6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA4MzU6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gODM2Olx0XG4gODM3Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA4Mzg6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA4Mzk6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gODQwOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA4NDE6XHRcdFx0XHRnb3RvIG91dDtcbiA4NDI6XHRcdFx0fVxuIDg0MzpcdFxuIDg0NDpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDg0NTpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA4NDY6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gODQ3Olx0XHRcdFx0YnJlYWs7XG4gODQ4Olx0XHRcdH1cbiA4NDk6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gODUwOlx0XHR9XG4gODUxOlx0XG4gODUyOlx0XHRpZiAoIWNsY19iYXNlKVxuIDg1MzpcdFx0XHRnb3RvIG91dDtcbiA4NTQ6XHRcbiA4NTU6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiA4NTY6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gODU3Olx0XG4gODU4Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbiA4NTk6XHRcdFx0XHRicmVhaztcbiA4NjA6XHRcbiA4NjE6XHRcdFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXG4gODYyOlx0XHRcdGlmIChwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKVxuIDg2MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDg2NDpcdFxuIDg2NTpcdFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbiA4NjY6XHRcdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCB8fCBjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXHUwMDI2XHUwMDI2XG4gODY3Olx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gODY4Olx0XHRcdFx0Y29udGludWU7XG4gODY5Olx0XG4gODcwOlx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjYgY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4gODcxOlx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gODcyOlx0XHRcdFx0Y29udGludWU7XG4gODczOlx0XG4gODc0Olx0XHRcdHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cdTAwM2VkZXYsIGNsYyxcbiA4NzU6XHRcdFx0XHRcdFx0XHQgIGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pLFxuIDg3NjpcdFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gODc3Olx0XG4gODc4Olx0XHRcdGlmICghcGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSkge1xuIDg3OTpcdFx0XHRcdHJldCA9IC1FTk9NRU07XG4gODgwOlx0XHRcdFx0Z290byBvdXQ7XG4gODgxOlx0XHRcdH1cbiA4ODI6XHRcdH1cbiA4ODM6XHRcbiA4ODQ6XHRcdHJldCA9IG10NzkyNV9yZWdkX2luaXQocGh5KTtcbiA4ODU6XHRvdXQ6XG4gODg2Olx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiA4ODc6XHRcbiA4ODg6XHRcdHJldHVybiByZXQ7XG4gODg5Olx0fVxuIDg5MDpcdFxuIDg5MTpcdGludCBtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbiA4OTI6XHR7XG4gODkzOlx0XHRzdHJ1Y3Qge1xuIDg5NDpcdFx0XHR1OCBfcnN2WzRdO1xuIDg5NTpcdFxuIDg5NjpcdFx0XHRfX2xlMTYgdGFnO1xuIDg5NzpcdFx0XHRfX2xlMTYgbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjEzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1UNzkyNSBGaXJtd2FyZSBMb2FkaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgbXQ3OTI1X2xvYWRfY2xjYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0IGNhbGxzIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2ggaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFN5emthbGxlciwgb2YgY291cnNlLCBjYW4gaG9vayBpbnRvIGByZXF1ZXN0X2Zpcm13YXJlYCwgYWxsb3dpbmcgZm9yIGZhdWx0IGluamVjdGlvbiBvciBhcmJpdHJhcnkgZmlybXdhcmUgYmxvYnMuIEkgYWxyZWFkeSBrbm93IFN5emthbGxlciBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYCwgc28gd2UgY2FuIGRlZmluaXRlbHkgZnV6eiBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgc2VlIHdoYXQgYnJlYWtzLgoKVGhpcyBwYXRjaCBmaXhlcyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byB0aGUgaGVhZGVyIGNvbnRlbnQgc2FuaXR5IGNoZWNrIHdpdGhpbiBgbXQ3OTI1X2xvYWRfY2xjYC4gU3BlY2lmaWNhbGx5LCBpdCBjb3JyZWN0cyBhbiBlcnJvciBpbiBob3cgYGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfUkVHRGAgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pc3Rha2VubHkgY2hlY2tpbmcgYGNsYy0mZ3Q7dDAudHlwZWAgd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIGNoZWNraW5nIGBjbGMtJmd0O3QyLnR5cGVgIHdoZW4gYE1UNzkyeF9DTENfUkVHRGAgaXMgc2V0LiBUaGlzIGlzIGEgY2xlYXIgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpc3N1ZSwgYW5kIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhhdC4gVGhpcyBtYWtlcyBpdCBhbiBldmVuIGJldHRlciB0YXJnZXQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBJcyBgbXQ3OTI1X2xvYWRfY2xjYCBjYWxsZWQgYnkgYW55dGhpbmcgZWxzZT8gQSBxdWljayBjaGVjayByZXZlYWxzIHRoYXQgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIHRoZSAqb25seSogY2FsbGVyLiBUaGlzIG1ha2VzIHRoaW5ncyBlYXNpZXI7IHdlIGNhbiBmb2N1cyBvdXIgZWZmb3J0cyB0aGVyZS4KClRvIGVuYWJsZSB0aGlzIGZ1enppbmcgcGF0aCwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBgTVQ3OTI1VWAgaXMgZW5hYmxlZC4gU2luY2Ugd2Ugd2FudCB0byBmb2N1cyBvbiBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgYG10NzkyNV9ydW5fZmlybXdhcmVgLCB3aGljaCBhcmUgbGlrZWx5IHRoZSBtb3N0IGltcG9ydGFudCBjb2RlIHBhdGhzLCB0aGF0JiMzOTtzIHdoYXQgd2UgbmVlZCB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTI1VWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncy4gSXQgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgaXQgYWxzbyBzZWxlY3RzIGBNVDc5MjVfQ09NTU9OYC4gRmluZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBjaGVjayBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9ycywgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjV1X21jdV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3PW10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo1NjpzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNDM9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjMtXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjQ6XHRcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjUtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzg0CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVlX21jdV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNXVfbWN1X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjE3LjU1NjkxNDMyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTg4NjQ0Njg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVlX21jdV9pbml0XCIsXG4gICAgXCJtdDc5MjV1X21jdV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjE3LjU1NjkxOTgzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzMjI0MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjZhYmEzNmRhYTJiOTM2ZTZlZTVkYjk2NmQ0NWFlNDEzNTlkY2ZmZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtODYzLDggKzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xcbi1cXHRcXHRpZiAoKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XFxuK1xcdFxcdGlmICgoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcXHUwMDI2XFx1MDAyNiBjbGMtXFx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MTguMTUwODQ1MjU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA5MjkyNTA2MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgICBcIm10NzkyNWVfbWN1X2luaXRcIixcbiAgICBcIm10NzkyNXVfbWN1X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjZhYmEzNmRhYTJiOTM2ZTZlZTVkYjk2NmQ0NWFlNDEzNTlkY2ZmZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjI0OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODYzLDggKzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbi1cdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XG4rXHRcdGlmICgoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX0JFX0NUUkwgfHwgY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX1JFR0QpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXQyLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRpZiAoY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX0JFX0NUUkwgXHUwMDI2XHUwMDI2IGNsYy1cdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXQwLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MTguMTUwODQ2NDY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU0Mjc5NDYzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3OTI1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtdDc5MjVfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIHRoZSBgbXQ3OTI1L21jdS5jYCBmaWxlIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgaXQncyBtb2RpZnlpbmcgYSBzYW5pdHkgY2hlY2ssIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBcImhlYWRlciBjb250ZW50XCIgdmVyaWZpY2F0aW9uLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBgY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX1JFR0RgIGludG8gdGhlIGV4aXN0aW5nIGNvbmRpdGlvbiBmb3IgYGNsYy1cdTAwM2V0Mi50eXBlYC4gU2ltdWx0YW5lb3VzbHksIGl0IGFkZHMgYGNsYy1cdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEYCB0byB0aGUgY29uZGl0aW9uIHRoYXQgY2hlY2tzIGBjbGMtXHUwMDNldDAudHlwZWAuIENsZWFybHksIHRoaXMgYE1UNzkyeF9DTENfUkVHRGAgaW5kZXggaXMgc2lnbmlmaWNhbnQgYW5kIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhpcyBkcml2ZXIgdHlwaWNhbGx5IGRlcGxveWVkP1wiLiBJdCdzIHRoZSBNVDc5MjUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgcGFydCBvZiB0aGUgbXQ3NiBmYW1pbHkuIFRoZXNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgaW50ZW5kZWQgZm9yIHBoeXNpY2FsIFBDSWUsIFVTQiwgb3IgU0RJTyBXaS1GaSBjYXJkcy4gVGhlIE1lZGlhdGVrIG10NzYgZmFtaWx5IGlzIGEgcmVsYXRpdmVseSB3ZWxsIHVuZGVyc3Rvb2QgY29kZSBiYXNlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyB3YXkgbWFrZXMgbWUgd29uZGVyLCBpZiBJIGNvdWxkIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2hpbGUgbWFueSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCBpdCdzIHdvcnRoIHNlZWluZyBpZiBhIHZpcnR1YWxpemF0aW9uIHNldHVwIGlzIHBvc3NpYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgbW9kZWwuXG5cbldhaXQgYSBtaW51dGUsIHdhc24ndCB0aGVyZSBib3RoIGEgVVNCIGFuZCBhIFBDSWUgdmVyc2lvbiBvZiB0aGUgbXQ3OTI1PyBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIFVTQiB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhbmQgYWNjZXNzaWJsZS4gUmlnaHQsIGxldCdzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgb3IgaWYgdGhleSdyZSBjb25kaXRpb25hbCBvbiBoYXJkd2FyZSBwcmVzZW5jZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgYWNjZXNzaWJpbGl0eSBvZiB0aGlzIHBhdGNoIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MzMuNTc4Nzk1ODI4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NTEyODMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2xvYWRfY2xjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1MD1zdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3OTg6c3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTExNz1pbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTI5OlxcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTMwLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjQwLjQzMDA4NzY4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjk1ODA2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFVTQiBEcml2ZXIgTGFuZHNjYXBlIGZvciBNVDc5MjUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBVU0IgZHJpdmVyIHNpdHVhdGlvbiBmb3IgdGhlIE1UNzkyNS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdkIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyBpZiB0aGVyZSdzICphbnkqIGV4aXN0aW5nIFVTQiBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpb24gZmVhc2liaWxpdHkgaGVyZS4gRG9lcyBpdCBuYXRpdmVseSBvcGVyYXRlIG92ZXIgVVNCLCBvciBpcyB0aGF0IGEgZm9yY2VkIG9yIGhhY2tlZC10b2dldGhlciBzb2x1dGlvbj8gSWYgaXQgZG9lcyBvcGVyYXRlLCBpcyBpdCBmdWxseSBzdXBwb3J0ZWQgYW5kIHJlYWR5IHRvIGJlIGltcGxlbWVudGVkLCBvciB3aWxsIHNvbWUgY3VzdG9tIHdvcmsgbmVlZCB0byBiZSBkb25lP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMzE3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6NDguNzk5NjcxMzIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6NDguNzk5NzgzNTcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcwODc1MTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGFuZCwgeWVhaCwgaXQgbG9va3MgbGlrZSBgdXNiLmNgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgVVNCIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSBlbXVsYXRhYmxlLiBXZSd2ZSBnb3Qgb3B0aW9ucyBsaWtlIFVTQiBnYWRnZXQsIGBkdW1teV9oY2RgLCBhbmQgb2YgY291cnNlLCBzeXprYWxsZXIncyBVU0IgZnV6emluZyB1c2luZyBgdmhjaWAuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBldmVuIHdoZW4gb3BlcmF0aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0YWJpbGl0eSBJIGxpa2UgdG8gc2VlLiBNeSBuZXh0IHN0ZXAsIHRoZW4sIGlzIHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlJ3JlIHdvcmtpbmcgd2l0aCBmb3IgdGhlIG10NzkyNSBVU0IgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmNvdmVyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjU2LjUwODUzNzMzOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU1Mjk4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjU2LjcyNDA3Mjc4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1Nzk0MjkxNzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogbXQ3OTI1X2xvYWRfY2xjKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG10NzkyNV9sb2FkX2NsY2AgaW4gdGhlIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJ3aXJlbGVzcyBkcml2ZXIsXCIgYW5kIGdpdmVuIHRoYXQgaXQncyBhIE1lZGlhVGVrIE1UNzkyNSwgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcy4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgYm90aCBQQ0llIGFuZCBVU0IgY29uZmlndXJhdGlvbnMsIHNvIHRoZSBwb3NzaWJpbGl0aWVzIHdpZGVuLiBgbXQ3OTI1X2xvYWRfY2xjYCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAsIHdoaWNoLCBnaXZlbiB0aGUgbmFtaW5nLCBsaWtlbHkgZ2V0cyBpbnZva2VkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24g4oCTIGEgY2xhc3NpYyBwb2ludCBmb3IgdnVsbmVyYWJpbGl0eSBleHBsb2l0YXRpb24uXG5cbk5vdywgYmVjYXVzZSBpdCdzIFdpLUZpLCBhbmQgcGFydGljdWxhcmx5IGJlY2F1c2UgaXQgaGFzIHN1cHBvcnQgZm9yIFVTQiwgdGhlIGBNVDc5MjVVYCBjb25maWcsIEkgaW1tZWRpYXRlbHkgdGhpbmsgZnV6emluZy4gVVNCIGVtdWxhdGlvbiB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciBjb3VsZCBiZSB2ZXJ5IGVmZmVjdGl2ZSBoZXJlLiBMZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgYE1UNzkyNVVgIGlzIGluZGVlZCBhIFVTQiBkcml2ZXIuIE9rYXksIHllYWgsIGBjb25maWcgTVQ3OTI1VWAgZXhwbGljaXRseSBzdGF0ZXMgXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcIi4gQmluZ28hIFRoaXMgaXMgZGVmaW5pdGVseSBhIHRhcmdldC4gVVNCIGRyaXZlcnMgY2FuIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIHNvIHRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgd2hvIGNhbGxzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGEgYml0IGJldHRlci4gVGhpcyBzaG91bGQgcmV2ZWFsIGVudHJ5IHBvaW50cyB0byB0aGUgZmlybXdhcmUgYW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MTIuNTE4MzY3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NjcwMzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMTU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMTc6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI3MT12b2lkIG10NzkyNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjQ4OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY5LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MTYuNTk1MDgwMDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcxNzk4NjA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBGdW5jdGlvbiBDYWxsKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBib3RoIGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhhdCdzIGltcG9ydGFudC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgc3VnZ2VzdHMgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpcyBpbnRlZ3JhbCB0byB0aGUgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBJdCdzIHRyaWdnZXJlZCBhdCB0aGUgY3J1Y2lhbCBwb2ludHMgd2hlbiB0aGUgZGV2aWNlIGZpcnN0IHBvd2VycyB1cCBvciB1bmRlcmdvZXMgYSByZXNldCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEdvb2QsIHRoYXQgY29uZmlybXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBmb2N1cy4gTm93LCBsZXQncyBuYWlsIGRvd24gdGhvc2UgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBpbiB0aGlzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgOyBuYW1lbHksIGl0J3MgcmVsaWFudCBvbiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZfQ09SRWAsIGFuZCBgTVQ3Nl9VU0JgLiBUaGlzIGNvbmZpcm1zIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBtb2R1bGVzIGFyZSBpbiBwbGFjZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBiZWNvbWUgY3JpdGljYWwgd2hlbiBJIGJlZ2luIHRvIGRlYnVnIHRoaXMgb3IgZXZlbiBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNToyNC4zMTMwNjk1NTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzAxMDI1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTktXFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjEwOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTE5PWNvbmZpZyBNVDc5MjVVXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIyLVxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjUtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNToyNC42MTYwODUwODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkwNTA2NTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBNVDc5MjVVIHRoaW5nIGdvaW5nLCB0aGUgY29uZmlnIEkgbmVlZCB0byBiZSBmb2N1c2luZyBvbiBpcyBgTVQ3OTI1VWAuIE1ha2VzIHNlbnNlLiBOb3csIGxldCBtZSB0aGluay4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGZpcm13YXJlIGxvYWRpbmcgcmVsYXRlZCB0byB0aGF0IHNwZWNpZmljIG1vZGVsLiBBaCwgeWVzISBgbXQ3OTI1X2xvYWRfY2xjYCDigJMgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcGFyc2luZyB0aGUgZmlybXdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGZyb20gc3RvcmFnZSB0byBiZWluZyBwYXJzZWQ7IGlzIGl0IHRocm91Z2ggdGhlIHN0YW5kYXJkIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsPyBUaGF0IHNlZW1zIGxvZ2ljYWwsIGdpdmVuIHRoZSBjb250ZXh0LiBBbHJpZ2h0LCBiZXN0IHRvIGp1c3QgY29uZmlybTsgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBtdDc5MjVfbG9hZF9jbGNgIGFuZCBzZWUgZXhhY3RseSB3aGF0IGl0J3MgZG9pbmcgd2l0aCB0aGUgZmlybXdhcmUgYWNxdWlzaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2ODMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNTozMi41MjExNTMxNjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTg6XFx0c3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gNzk5OlxcdHtcXG4gODAwOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyO1xcbiA4MDE6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcXG4gODAyOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICpjbGM7XFxuIDgwMzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiA4MDQ6XFx0XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4gODA1OlxcdFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuIDgwNjpcXHRcXHR1OCAqY2xjX2Jhc2UgPSBOVUxMLCBod19lbmNhcCA9IDA7XFxuIDgwNzpcXHRcXHRpbnQgcmV0LCBpLCBsZW4sIG9mZnNldCA9IDA7XFxuIDgwODpcXHRcXG4gODA5OlxcdFxcdGRldi1cXHUwMDNlcGh5LmNsY19jaGFuX2NvbmYgPSAweGZmO1xcbiA4MTA6XFx0XFx0ZGV2LVxcdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcXG4gODExOlxcdFxcdGlmICghbXQ3OTI1X3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxcbiA4MTI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4gODE1OlxcdFxcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcXHUwMDI2aHdfZW5jYXApO1xcbiA4MTY6XFx0XFx0XFx0aWYgKHJldClcXG4gODE3OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgxODpcXHRcXHRcXHRod19lbmNhcCA9IHU4X2dldF9iaXRzKGh3X2VuY2FwLCBNVF9FRV9IV19UWVBFX0VOQ0FQKTtcXG4gODE5OlxcdFxcdH1cXG4gODIwOlxcdFxcbiA4MjE6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXFx1MDAzZWRldik7XFxuIDgyMjpcXHRcXHRpZiAocmV0KVxcbiA4MjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0aWYgKCFmdyB8fCAhZnctXFx1MDAzZWRhdGEgfHwgZnctXFx1MDAzZXNpemUgXFx1MDAzYyBzaXplb2YoKmhkcikpIHtcXG4gODI2OlxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZVxcXFxuXFxcIik7XFxuIDgyNzpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA4Mjg6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDgyOTpcXHRcXHR9XFxuIDgzMDpcXHRcXG4gODMxOlxcdFxcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVxcdTAwM2VkYXRhICsgZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xcbiA4MzI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhkci1cXHUwMDNlbl9yZWdpb247IGkrKykge1xcbiA4MzM6XFx0XFx0XFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cXG4gODM0OlxcdFxcdFxcdFxcdFxcdFxcdChoZHItXFx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xcbiA4MzU6XFx0XFx0XFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVxcdTAwM2VsZW4pO1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRcXHRcXHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXFxuIDgzODpcXHRcXHRcXHRpZiAob2Zmc2V0ICsgbGVuIFxcdTAwM2UgZnctXFx1MDAzZXNpemUpIHtcXG4gODM5OlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb25cXFxcblxcXCIpO1xcbiA4NDA6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gODQxOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4NDI6XFx0XFx0XFx0fVxcbiA4NDM6XFx0XFxuIDg0NDpcXHRcXHRcXHRpZiAoKHJlZ2lvbi1cXHUwMDNlZmVhdHVyZV9zZXQgXFx1MDAyNiBGV19GRUFUVVJFX05PTl9ETCkgXFx1MDAyNlxcdTAwMjZcXG4gODQ1OlxcdFxcdFxcdCAgICByZWdpb24tXFx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcXG4gODQ2OlxcdFxcdFxcdFxcdGNsY19iYXNlID0gKHU4ICopKGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0KTtcXG4gODQ3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA4NDg6XFx0XFx0XFx0fVxcbiA4NDk6XFx0XFx0XFx0b2Zmc2V0ICs9IGxlbjtcXG4gODUwOlxcdFxcdH1cXG4gODUxOlxcdFxcbiA4NTI6XFx0XFx0aWYgKCFjbGNfYmFzZSlcXG4gODUzOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4NTQ6XFx0XFxuIDg1NTpcXHRcXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSkge1xcbiA4NTY6XFx0XFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKVxcbiA4NTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg2MDpcXHRcXG4gODYxOlxcdFxcdFxcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xcbiA4NjI6XFx0XFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG4gODYzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA4NjQ6XFx0XFxuIDg2NTpcXHRcXHRcXHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cXG4gODY2OlxcdFxcdFxcdGlmICgoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXFx1MDAyNlxcdTAwMjZcXG4gODY3OlxcdFxcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXQyLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbiA4Njg6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX0JFX0NUUkwgXFx1MDAyNlxcdTAwMjYgY2xjLVxcdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEIFxcdTAwMjZcXHUwMDI2XFxuIDg3MTpcXHRcXHRcXHQgICAgdThfZ2V0X2JpdHMoY2xjLVxcdTAwM2V0MC50eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcXG4gODcyOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA4NzM6XFx0XFxuIDg3NDpcXHRcXHRcXHRwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cXHUwMDNlZGV2LCBjbGMsXFxuIDg3NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSxcXG4gODc2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIDg3NzpcXHRcXG4gODc4OlxcdFxcdFxcdGlmICghcGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKSB7XFxuIDg3OTpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA4ODA6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDg4MTpcXHRcXHRcXHR9XFxuIDg4MjpcXHRcXHR9XFxuIDg4MzpcXHRcXG4gODg0OlxcdFxcdHJldCA9IG10NzkyNV9yZWdkX2luaXQocGh5KTtcXG4gODg1OlxcdG91dDpcXG4gODg2OlxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xcbiA4ODc6XFx0XFxuIDg4ODpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4ODk6XFx0fVxcbiA4OTA6XFx0XFxuIDg5MTpcXHRpbnQgbXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuIDg5MjpcXHR7XFxuIDg5MzpcXHRcXHRzdHJ1Y3Qge1xcbiA4OTQ6XFx0XFx0XFx0dTggX3Jzdls0XTtcXG4gODk1OlxcdFxcbiA4OTY6XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gODk3OlxcdFxcdFxcdF9fbGUxNiBsZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI1OjMyLjUyMTUyNDY2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzEwMzI3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBGaXJtd2FyZSBMb2FkaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYG10NzkyNV9sb2FkX2NsY2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBTeXprYWxsZXIsIG9mIGNvdXJzZSwgY2FuIGhvb2sgaW50byBgcmVxdWVzdF9maXJtd2FyZWAsIGFsbG93aW5nIGZvciBmYXVsdCBpbmplY3Rpb24gb3IgYXJiaXRyYXJ5IGZpcm13YXJlIGJsb2JzLiBJIGFscmVhZHkga25vdyBTeXprYWxsZXIgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAsIHNvIHdlIGNhbiBkZWZpbml0ZWx5IGZ1enogYG10NzkyNV9sb2FkX2NsY2AgYW5kIHNlZSB3aGF0IGJyZWFrcy5cblxuVGhpcyBwYXRjaCBmaXhlcyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byB0aGUgaGVhZGVyIGNvbnRlbnQgc2FuaXR5IGNoZWNrIHdpdGhpbiBgbXQ3OTI1X2xvYWRfY2xjYC4gU3BlY2lmaWNhbGx5LCBpdCBjb3JyZWN0cyBhbiBlcnJvciBpbiBob3cgYGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19SRUdEYCBpcyBoYW5kbGVkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzdGFrZW5seSBjaGVja2luZyBgY2xjLVx1MDAzZXQwLnR5cGVgIHdoZW4gaXQgc2hvdWxkIGhhdmUgYmVlbiBjaGVja2luZyBgY2xjLVx1MDAzZXQyLnR5cGVgIHdoZW4gYE1UNzkyeF9DTENfUkVHRGAgaXMgc2V0LiBUaGlzIGlzIGEgY2xlYXIgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpc3N1ZSwgYW5kIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhhdC4gVGhpcyBtYWtlcyBpdCBhbiBldmVuIGJldHRlciB0YXJnZXQuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGguIElzIGBtdDc5MjVfbG9hZF9jbGNgIGNhbGxlZCBieSBhbnl0aGluZyBlbHNlPyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdGhlICpvbmx5KiBjYWxsZXIuIFRoaXMgbWFrZXMgdGhpbmdzIGVhc2llcjsgd2UgY2FuIGZvY3VzIG91ciBlZmZvcnRzIHRoZXJlLlxuXG5UbyBlbmFibGUgdGhpcyBmdXp6aW5nIHBhdGgsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE1UNzkyNVVgIGlzIGVuYWJsZWQuIFNpbmNlIHdlIHdhbnQgdG8gZm9jdXMgb24gYG10NzkyNV9sb2FkX2NsY2AgYW5kIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCwgd2hpY2ggYXJlIGxpa2VseSB0aGUgbW9zdCBpbXBvcnRhbnQgY29kZSBwYXRocywgdGhhdCdzIHdoYXQgd2UgbmVlZCB0byBmb2N1cyBvbi5cblxuTGV0J3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MuIEl0IHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgYW5kIGl0IGFsc28gc2VsZWN0cyBgTVQ3OTI1X0NPTU1PTmAuIEZpbmUuIExldCdzIG1ha2Ugc3VyZSB3ZSBjaGVjayBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9ycywgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjEzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MzkuMjMxODU1MDk0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY1ODkyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNXVfbWN1X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9Mjc9bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjU2OnN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE0Mz1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYzLVxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjQ6XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjUtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI1OjQxLjk5Nzc2ODAwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI5NDc0MjA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjg3ODQsIk91dHB1dFRva2VucyI6MjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNjowNy4yOTI1MTM4ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA4MzM4MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgICBcIm10NzkyNWVfbWN1X2luaXRcIixcbiAgICBcIm10NzkyNXVfbWN1X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVlX21jdV9pbml0XCIsXG4gICAgXCJtdDc5MjV1X21jdV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm6w42[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 12:10:23 +0000 UTC FinishedAt: 2026-07-25 12:26:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MT7925U" ], "series_id": "fbed7a64-9cf1-4e37-bce0-fecf65843158" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_load_clc", "mt7925_run_firmware", "mt7925e_mcu_init", "mt7925u_mcu_init" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2YWJhMzZkYWEyYjkzNmU2ZWU1ZGI5NjZkNDVhZTQxMzU5ZGNmZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uMzQwZmMyZWE5NmQwM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC04NjMsOCAmIzQzOzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbi1cdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XG4mIzQzO1x0XHRpZiAoKGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19SRUdEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGlmIChjbGMtXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjYgY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2YWJhMzZkYWEyYjkzNmU2ZWU1ZGI5NjZkNDVhZTQxMzU5ZGNmZmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtODYzLDggJiM0Mzs4NjMsMTEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqLwotCQlpZiAoKGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCAmYW1wOyZhbXA7Ci0JCSAgICAgdThfZ2V0X2JpdHMoY2xjLSZndDt0Mi50eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcCkgfHwKJiM0MzsJCWlmICgoY2xjLSZndDtpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfUkVHRCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoY2xjLSZndDtpZHggIT0gTVQ3OTJ4X0NMQ19CRV9DVFJMICZhbXA7JmFtcDsgY2xjLSZndDtpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEICZhbXA7JmFtcDsKIAkJICAgIHU4X2dldF9iaXRzKGNsYy0mZ3Q7dDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApCiAJCQljb250aW51ZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lZGlhdGVrIE1UNzkyNSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtdDc5MjVfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIHRoZSBgbXQ3OTI1L21jdS5jYCBmaWxlIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgaXQmIzM5O3MgbW9kaWZ5aW5nIGEgc2FuaXR5IGNoZWNrLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgJiMzNDtoZWFkZXIgY29udGVudCYjMzQ7IHZlcmlmaWNhdGlvbi4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGBjbGMtJmd0O2lkeCA9PSBNVDc5MnhfQ0xDX1JFR0RgIGludG8gdGhlIGV4aXN0aW5nIGNvbmRpdGlvbiBmb3IgYGNsYy0mZ3Q7dDIudHlwZWAuIFNpbXVsdGFuZW91c2x5LCBpdCBhZGRzIGBjbGMtJmd0O2lkeCAhPSBNVDc5MnhfQ0xDX1JFR0RgIHRvIHRoZSBjb25kaXRpb24gdGhhdCBjaGVja3MgYGNsYy0mZ3Q7dDAudHlwZWAuIENsZWFybHksIHRoaXMgYE1UNzkyeF9DTENfUkVHRGAgaW5kZXggaXMgc2lnbmlmaWNhbnQgYW5kIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGRyaXZlciB0eXBpY2FsbHkgZGVwbG95ZWQ/JiMzNDsuIEl0JiMzOTtzIHRoZSBNVDc5MjUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgcGFydCBvZiB0aGUgbXQ3NiBmYW1pbHkuIFRoZXNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgaW50ZW5kZWQgZm9yIHBoeXNpY2FsIFBDSWUsIFVTQiwgb3IgU0RJTyBXaS1GaSBjYXJkcy4gVGhlIE1lZGlhdGVrIG10NzYgZmFtaWx5IGlzIGEgcmVsYXRpdmVseSB3ZWxsIHVuZGVyc3Rvb2QgY29kZSBiYXNlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyB3YXkgbWFrZXMgbWUgd29uZGVyLCBpZiBJIGNvdWxkIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2hpbGUgbWFueSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCBpdCYjMzk7cyB3b3J0aCBzZWVpbmcgaWYgYSB2aXJ0dWFsaXphdGlvbiBzZXR1cCBpcyBwb3NzaWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIG1vZGVsLgoKV2FpdCBhIG1pbnV0ZSwgd2FzbiYjMzk7dCB0aGVyZSBib3RoIGEgVVNCIGFuZCBhIFBDSWUgdmVyc2lvbiBvZiB0aGUgbXQ3OTI1PyBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIFVTQiB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhbmQgYWNjZXNzaWJsZS4gUmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBvciBpZiB0aGV5JiMzOTtyZSBjb25kaXRpb25hbCBvbiBoYXJkd2FyZSBwcmVzZW5jZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgYWNjZXNzaWJpbGl0eSBvZiB0aGlzIHBhdGNoIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMTc9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTEyOTpcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzAtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgRHJpdmVyIExhbmRzY2FwZSBmb3IgTVQ3OTI1KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBVU0IgZHJpdmVyIHNpdHVhdGlvbiBmb3IgdGhlIE1UNzkyNS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7ZCBpbW1lZGlhdGVseSB3YW50IHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgKmFueSogZXhpc3RpbmcgVVNCIGludGVyZmFjZSBzdXBwb3J0IGZvciB0aGF0IHBhcnRpY3VsYXIgY2hpcHNldC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpb24gZmVhc2liaWxpdHkgaGVyZS4gRG9lcyBpdCBuYXRpdmVseSBvcGVyYXRlIG92ZXIgVVNCLCBvciBpcyB0aGF0IGEgZm9yY2VkIG9yIGhhY2tlZC10b2dldGhlciBzb2x1dGlvbj8gSWYgaXQgZG9lcyBvcGVyYXRlLCBpcyBpdCBmdWxseSBzdXBwb3J0ZWQgYW5kIHJlYWR5IHRvIGJlIGltcGxlbWVudGVkLCBvciB3aWxsIHNvbWUgY3VzdG9tIHdvcmsgbmVlZCB0byBiZSBkb25lPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGFuZCwgeWVhaCwgaXQgbG9va3MgbGlrZSBgdXNiLmNgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgVVNCIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSBlbXVsYXRhYmxlLiBXZSYjMzk7dmUgZ290IG9wdGlvbnMgbGlrZSBVU0IgZ2FkZ2V0LCBgZHVtbXlfaGNkYCwgYW5kIG9mIGNvdXJzZSwgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIHVzaW5nIGB2aGNpYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGV2ZW4gd2hlbiBvcGVyYXRpbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRlc3RhYmlsaXR5IEkgbGlrZSB0byBzZWUuIE15IG5leHQgc3RlcCwgdGhlbiwgaXMgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBmb3IgdGhlIG10NzkyNSBVU0IgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5jb3ZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogbXQ3OTI1X2xvYWRfY2xjKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG10NzkyNV9sb2FkX2NsY2AgaW4gdGhlIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgJiMzNDt3aXJlbGVzcyBkcml2ZXIsJiMzNDsgYW5kIGdpdmVuIHRoYXQgaXQmIzM5O3MgYSBNZWRpYVRlayBNVDc5MjUsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBib3RoIFBDSWUgYW5kIFVTQiBjb25maWd1cmF0aW9ucywgc28gdGhlIHBvc3NpYmlsaXRpZXMgd2lkZW4uIGBtdDc5MjVfbG9hZF9jbGNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCwgd2hpY2gsIGdpdmVuIHRoZSBuYW1pbmcsIGxpa2VseSBnZXRzIGludm9rZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiDigJMgYSBjbGFzc2ljIHBvaW50IGZvciB2dWxuZXJhYmlsaXR5IGV4cGxvaXRhdGlvbi4KCk5vdywgYmVjYXVzZSBpdCYjMzk7cyBXaS1GaSwgYW5kIHBhcnRpY3VsYXJseSBiZWNhdXNlIGl0IGhhcyBzdXBwb3J0IGZvciBVU0IsIHRoZSBgTVQ3OTI1VWAgY29uZmlnLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGZ1enppbmcuIFVTQiBlbXVsYXRpb24gd2l0aCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIgY291bGQgYmUgdmVyeSBlZmZlY3RpdmUgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayB0aGF0IGBNVDc5MjVVYCBpcyBpbmRlZWQgYSBVU0IgZHJpdmVyLiBPa2F5LCB5ZWFoLCBgY29uZmlnIE1UNzkyNVVgIGV4cGxpY2l0bHkgc3RhdGVzICYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0JiMzNDsuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgYSB0YXJnZXQuIFVTQiBkcml2ZXJzIGNhbiBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLCBzbyB0aGlzIGlzIHByb21pc2luZy4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayB3aG8gY2FsbHMgYG10NzkyNV9ydW5fZmlybXdhcmVgIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgYSBiaXQgYmV0dGVyLiBUaGlzIHNob3VsZCByZXZlYWwgZW50cnkgcG9pbnRzIHRvIHRoZSBmaXJtd2FyZSBhbmQgYW55IG90aGVyIGludGVyZXN0aW5nIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xMTE1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTExNzppbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTExOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTM2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzE9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzMtaW50IG10NzkyNV9tY3Vfc2V0X2Jzc19wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo3MDpcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0Olx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTE1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBGdW5jdGlvbiBDYWxsKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gYm90aCBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgd2l0aGluIGB1c2IuY2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBzdWdnZXN0cyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGlzIGludGVncmFsIHRvIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIEl0JiMzOTtzIHRyaWdnZXJlZCBhdCB0aGUgY3J1Y2lhbCBwb2ludHMgd2hlbiB0aGUgZGV2aWNlIGZpcnN0IHBvd2VycyB1cCBvciB1bmRlcmdvZXMgYSByZXNldCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEdvb2QsIHRoYXQgY29uZmlybXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBmb2N1cy4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTI1VWA7IG5hbWVseSwgaXQmIzM5O3MgcmVsaWFudCBvbiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZfQ09SRWAsIGFuZCBgTVQ3Nl9VU0JgLiBUaGlzIGNvbmZpcm1zIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBtb2R1bGVzIGFyZSBpbiBwbGFjZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBiZWNvbWUgY3JpdGljYWwgd2hlbiBJIGJlZ2luIHRvIGRlYnVnIHRoaXMgb3IgZXZlbiBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVx0c2VsZWN0IE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjItXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRvIGdldCB0aGlzIE1UNzkyNVUgdGhpbmcgZ29pbmcsIHRoZSBjb25maWcgSSBuZWVkIHRvIGJlIGZvY3VzaW5nIG9uIGlzIGBNVDc5MjVVYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIHRoaW5rLi4uIEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgZmlybXdhcmUgbG9hZGluZyByZWxhdGVkIHRvIHRoYXQgc3BlY2lmaWMgbW9kZWwuIEFoLCB5ZXMhIGBtdDc5MjVfbG9hZF9jbGNgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcGFyc2luZyB0aGUgZmlybXdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGZyb20gc3RvcmFnZSB0byBiZWluZyBwYXJzZWQ7IGlzIGl0IHRocm91Z2ggdGhlIHN0YW5kYXJkIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsPyBUaGF0IHNlZW1zIGxvZ2ljYWwsIGdpdmVuIHRoZSBjb250ZXh0LiBBbHJpZ2h0LCBiZXN0IHRvIGp1c3QgY29uZmlybTsgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRoZSBmaXJtd2FyZSBhY3F1aXNpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc5ODpcdHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNzk5Olx0e1xuIDgwMDpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gODAxOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDgwMjpcdFx0Y29uc3Qgc3RydWN0IG10NzkyNV9jbGMgKmNsYztcbiA4MDM6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDgwNDpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gODA1Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDgwNjpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDgwNzpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDgwODpcdFxuIDgwOTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA4MTA6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA4MTE6XHRcdGlmICghbXQ3OTI1X3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDgxMjpcdFx0XHRyZXR1cm4gMDtcbiA4MTM6XHRcbiA4MTQ6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gODE1Olx0XHRcdHJldCA9IG10NzkyNV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gODE2Olx0XHRcdGlmIChyZXQpXG4gODE3Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4MTg6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gODE5Olx0XHR9XG4gODIwOlx0XG4gODIxOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gODIyOlx0XHRpZiAocmV0KVxuIDgyMzpcdFx0XHRyZXR1cm4gcmV0O1xuIDgyNDpcdFxuIDgyNTpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA4MjY6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gODI3Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gODI4Olx0XHRcdGdvdG8gb3V0O1xuIDgyOTpcdFx0fVxuIDgzMDpcdFxuIDgzMTpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA4MzI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA4MzM6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA4MzQ6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA4MzU6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gODM2Olx0XG4gODM3Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA4Mzg6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA4Mzk6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gODQwOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA4NDE6XHRcdFx0XHRnb3RvIG91dDtcbiA4NDI6XHRcdFx0fVxuIDg0MzpcdFxuIDg0NDpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDg0NTpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA4NDY6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gODQ3Olx0XHRcdFx0YnJlYWs7XG4gODQ4Olx0XHRcdH1cbiA4NDk6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gODUwOlx0XHR9XG4gODUxOlx0XG4gODUyOlx0XHRpZiAoIWNsY19iYXNlKVxuIDg1MzpcdFx0XHRnb3RvIG91dDtcbiA4NTQ6XHRcbiA4NTU6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiA4NTY6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gODU3Olx0XG4gODU4Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbiA4NTk6XHRcdFx0XHRicmVhaztcbiA4NjA6XHRcbiA4NjE6XHRcdFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXG4gODYyOlx0XHRcdGlmIChwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKVxuIDg2MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDg2NDpcdFxuIDg2NTpcdFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbiA4NjY6XHRcdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCB8fCBjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXHUwMDI2XHUwMDI2XG4gODY3Olx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gODY4Olx0XHRcdFx0Y29udGludWU7XG4gODY5Olx0XG4gODcwOlx0XHRcdGlmIChjbGMtXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjYgY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXHUwMDI2XHUwMDI2XG4gODcxOlx0XHRcdCAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXG4gODcyOlx0XHRcdFx0Y29udGludWU7XG4gODczOlx0XG4gODc0Olx0XHRcdHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cdTAwM2VkZXYsIGNsYyxcbiA4NzU6XHRcdFx0XHRcdFx0XHQgIGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pLFxuIDg3NjpcdFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gODc3Olx0XG4gODc4Olx0XHRcdGlmICghcGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSkge1xuIDg3OTpcdFx0XHRcdHJldCA9IC1FTk9NRU07XG4gODgwOlx0XHRcdFx0Z290byBvdXQ7XG4gODgxOlx0XHRcdH1cbiA4ODI6XHRcdH1cbiA4ODM6XHRcbiA4ODQ6XHRcdHJldCA9IG10NzkyNV9yZWdkX2luaXQocGh5KTtcbiA4ODU6XHRvdXQ6XG4gODg2Olx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiA4ODc6XHRcbiA4ODg6XHRcdHJldHVybiByZXQ7XG4gODg5Olx0fVxuIDg5MDpcdFxuIDg5MTpcdGludCBtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbiA4OTI6XHR7XG4gODkzOlx0XHRzdHJ1Y3Qge1xuIDg5NDpcdFx0XHR1OCBfcnN2WzRdO1xuIDg5NTpcdFxuIDg5NjpcdFx0XHRfX2xlMTYgdGFnO1xuIDg5NzpcdFx0XHRfX2xlMTYgbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjEzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1UNzkyNSBGaXJtd2FyZSBMb2FkaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgbXQ3OTI1X2xvYWRfY2xjYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0IGNhbGxzIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2ggaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFN5emthbGxlciwgb2YgY291cnNlLCBjYW4gaG9vayBpbnRvIGByZXF1ZXN0X2Zpcm13YXJlYCwgYWxsb3dpbmcgZm9yIGZhdWx0IGluamVjdGlvbiBvciBhcmJpdHJhcnkgZmlybXdhcmUgYmxvYnMuIEkgYWxyZWFkeSBrbm93IFN5emthbGxlciBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYCwgc28gd2UgY2FuIGRlZmluaXRlbHkgZnV6eiBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgc2VlIHdoYXQgYnJlYWtzLgoKVGhpcyBwYXRjaCBmaXhlcyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byB0aGUgaGVhZGVyIGNvbnRlbnQgc2FuaXR5IGNoZWNrIHdpdGhpbiBgbXQ3OTI1X2xvYWRfY2xjYC4gU3BlY2lmaWNhbGx5LCBpdCBjb3JyZWN0cyBhbiBlcnJvciBpbiBob3cgYGNsYy0mZ3Q7aWR4ID09IE1UNzkyeF9DTENfUkVHRGAgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pc3Rha2VubHkgY2hlY2tpbmcgYGNsYy0mZ3Q7dDAudHlwZWAgd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIGNoZWNraW5nIGBjbGMtJmd0O3QyLnR5cGVgIHdoZW4gYE1UNzkyeF9DTENfUkVHRGAgaXMgc2V0LiBUaGlzIGlzIGEgY2xlYXIgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpc3N1ZSwgYW5kIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhhdC4gVGhpcyBtYWtlcyBpdCBhbiBldmVuIGJldHRlciB0YXJnZXQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBJcyBgbXQ3OTI1X2xvYWRfY2xjYCBjYWxsZWQgYnkgYW55dGhpbmcgZWxzZT8gQSBxdWljayBjaGVjayByZXZlYWxzIHRoYXQgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIHRoZSAqb25seSogY2FsbGVyLiBUaGlzIG1ha2VzIHRoaW5ncyBlYXNpZXI7IHdlIGNhbiBmb2N1cyBvdXIgZWZmb3J0cyB0aGVyZS4KClRvIGVuYWJsZSB0aGlzIGZ1enppbmcgcGF0aCwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBgTVQ3OTI1VWAgaXMgZW5hYmxlZC4gU2luY2Ugd2Ugd2FudCB0byBmb2N1cyBvbiBgbXQ3OTI1X2xvYWRfY2xjYCBhbmQgYG10NzkyNV9ydW5fZmlybXdhcmVgLCB3aGljaCBhcmUgbGlrZWx5IHRoZSBtb3N0IGltcG9ydGFudCBjb2RlIHBhdGhzLCB0aGF0JiMzOTtzIHdoYXQgd2UgbmVlZCB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTI1VWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncy4gSXQgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgaXQgYWxzbyBzZWxlY3RzIGBNVDc5MjVfQ09NTU9OYC4gRmluZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBjaGVjayBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9ycywgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjV1X21jdV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3PW10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo1NjpzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNDM9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjMtXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjQ6XHRcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjUtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzg0CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVlX21jdV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNXVfbWN1X2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNWVfbWN1X2luaXQmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9tY3VfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjE3LjU1NjkxNDMyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTg4NjQ0Njg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVlX21jdV9pbml0XCIsXG4gICAgXCJtdDc5MjV1X21jdV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjE3LjU1NjkxOTgzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzMjI0MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjZhYmEzNmRhYTJiOTM2ZTZlZTVkYjk2NmQ0NWFlNDEzNTlkY2ZmZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjoyNDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtODYzLDggKzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xcbi1cXHRcXHRpZiAoKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XFxuK1xcdFxcdGlmICgoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ICE9IE1UNzkyeF9DTENfQkVfQ1RSTCBcXHUwMDI2XFx1MDAyNiBjbGMtXFx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX1JFR0QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldDAudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MTguMTUwODQ1MjU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA5MjkyNTA2MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgICBcIm10NzkyNWVfbWN1X2luaXRcIixcbiAgICBcIm10NzkyNXVfbWN1X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjZhYmEzNmRhYTJiOTM2ZTZlZTVkYjk2NmQ0NWFlNDEzNTlkY2ZmZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjI0OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjM0MGZjMmVhOTZkMDNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODYzLDggKzg2MywxMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbi1cdFx0aWYgKChjbGMtXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfQkVfQ1RSTCBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgICB1OF9nZXRfYml0cyhjbGMtXHUwMDNldDIudHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApIHx8XG4rXHRcdGlmICgoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX0JFX0NUUkwgfHwgY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX1JFR0QpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXQyLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRpZiAoY2xjLVx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX0JFX0NUUkwgXHUwMDI2XHUwMDI2IGNsYy1cdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXQwLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MTguMTUwODQ2NDY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU0Mjc5NDYzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3OTI1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtdDc5MjVfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIHRoZSBgbXQ3OTI1L21jdS5jYCBmaWxlIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgaXQncyBtb2RpZnlpbmcgYSBzYW5pdHkgY2hlY2ssIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBcImhlYWRlciBjb250ZW50XCIgdmVyaWZpY2F0aW9uLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBgY2xjLVx1MDAzZWlkeCA9PSBNVDc5MnhfQ0xDX1JFR0RgIGludG8gdGhlIGV4aXN0aW5nIGNvbmRpdGlvbiBmb3IgYGNsYy1cdTAwM2V0Mi50eXBlYC4gU2ltdWx0YW5lb3VzbHksIGl0IGFkZHMgYGNsYy1cdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEYCB0byB0aGUgY29uZGl0aW9uIHRoYXQgY2hlY2tzIGBjbGMtXHUwMDNldDAudHlwZWAuIENsZWFybHksIHRoaXMgYE1UNzkyeF9DTENfUkVHRGAgaW5kZXggaXMgc2lnbmlmaWNhbnQgYW5kIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhpcyBkcml2ZXIgdHlwaWNhbGx5IGRlcGxveWVkP1wiLiBJdCdzIHRoZSBNVDc5MjUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgcGFydCBvZiB0aGUgbXQ3NiBmYW1pbHkuIFRoZXNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgaW50ZW5kZWQgZm9yIHBoeXNpY2FsIFBDSWUsIFVTQiwgb3IgU0RJTyBXaS1GaSBjYXJkcy4gVGhlIE1lZGlhdGVrIG10NzYgZmFtaWx5IGlzIGEgcmVsYXRpdmVseSB3ZWxsIHVuZGVyc3Rvb2QgY29kZSBiYXNlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyB3YXkgbWFrZXMgbWUgd29uZGVyLCBpZiBJIGNvdWxkIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2hpbGUgbWFueSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCBpdCdzIHdvcnRoIHNlZWluZyBpZiBhIHZpcnR1YWxpemF0aW9uIHNldHVwIGlzIHBvc3NpYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgbW9kZWwuXG5cbldhaXQgYSBtaW51dGUsIHdhc24ndCB0aGVyZSBib3RoIGEgVVNCIGFuZCBhIFBDSWUgdmVyc2lvbiBvZiB0aGUgbXQ3OTI1PyBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIFVTQiB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhbmQgYWNjZXNzaWJsZS4gUmlnaHQsIGxldCdzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgb3IgaWYgdGhleSdyZSBjb25kaXRpb25hbCBvbiBoYXJkd2FyZSBwcmVzZW5jZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgYWNjZXNzaWJpbGl0eSBvZiB0aGlzIHBhdGNoIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6MzMuNTc4Nzk1ODI4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NTEyODMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2xvYWRfY2xjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1MD1zdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3OTg6c3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTExNz1pbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTI5OlxcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTMwLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjQwLjQzMDA4NzY4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjk1ODA2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFVTQiBEcml2ZXIgTGFuZHNjYXBlIGZvciBNVDc5MjUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBVU0IgZHJpdmVyIHNpdHVhdGlvbiBmb3IgdGhlIE1UNzkyNS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdkIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyBpZiB0aGVyZSdzICphbnkqIGV4aXN0aW5nIFVTQiBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpb24gZmVhc2liaWxpdHkgaGVyZS4gRG9lcyBpdCBuYXRpdmVseSBvcGVyYXRlIG92ZXIgVVNCLCBvciBpcyB0aGF0IGEgZm9yY2VkIG9yIGhhY2tlZC10b2dldGhlciBzb2x1dGlvbj8gSWYgaXQgZG9lcyBvcGVyYXRlLCBpcyBpdCBmdWxseSBzdXBwb3J0ZWQgYW5kIHJlYWR5IHRvIGJlIGltcGxlbWVudGVkLCBvciB3aWxsIHNvbWUgY3VzdG9tIHdvcmsgbmVlZCB0byBiZSBkb25lP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMzE3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6NDguNzk5NjcxMzIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjQ6NDguNzk5NzgzNTcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcwODc1MTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGFuZCwgeWVhaCwgaXQgbG9va3MgbGlrZSBgdXNiLmNgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgVVNCIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSBlbXVsYXRhYmxlLiBXZSd2ZSBnb3Qgb3B0aW9ucyBsaWtlIFVTQiBnYWRnZXQsIGBkdW1teV9oY2RgLCBhbmQgb2YgY291cnNlLCBzeXprYWxsZXIncyBVU0IgZnV6emluZyB1c2luZyBgdmhjaWAuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBldmVuIHdoZW4gb3BlcmF0aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0YWJpbGl0eSBJIGxpa2UgdG8gc2VlLiBNeSBuZXh0IHN0ZXAsIHRoZW4sIGlzIHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlJ3JlIHdvcmtpbmcgd2l0aCBmb3IgdGhlIG10NzkyNSBVU0IgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmNvdmVyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjU2LjUwODUzNzMzOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU1Mjk4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI0OjU2LjcyNDA3Mjc4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1Nzk0MjkxNzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogbXQ3OTI1X2xvYWRfY2xjKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG10NzkyNV9sb2FkX2NsY2AgaW4gdGhlIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJ3aXJlbGVzcyBkcml2ZXIsXCIgYW5kIGdpdmVuIHRoYXQgaXQncyBhIE1lZGlhVGVrIE1UNzkyNSwgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcy4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgYm90aCBQQ0llIGFuZCBVU0IgY29uZmlndXJhdGlvbnMsIHNvIHRoZSBwb3NzaWJpbGl0aWVzIHdpZGVuLiBgbXQ3OTI1X2xvYWRfY2xjYCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAsIHdoaWNoLCBnaXZlbiB0aGUgbmFtaW5nLCBsaWtlbHkgZ2V0cyBpbnZva2VkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24g4oCTIGEgY2xhc3NpYyBwb2ludCBmb3IgdnVsbmVyYWJpbGl0eSBleHBsb2l0YXRpb24uXG5cbk5vdywgYmVjYXVzZSBpdCdzIFdpLUZpLCBhbmQgcGFydGljdWxhcmx5IGJlY2F1c2UgaXQgaGFzIHN1cHBvcnQgZm9yIFVTQiwgdGhlIGBNVDc5MjVVYCBjb25maWcsIEkgaW1tZWRpYXRlbHkgdGhpbmsgZnV6emluZy4gVVNCIGVtdWxhdGlvbiB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciBjb3VsZCBiZSB2ZXJ5IGVmZmVjdGl2ZSBoZXJlLiBMZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgYE1UNzkyNVVgIGlzIGluZGVlZCBhIFVTQiBkcml2ZXIuIE9rYXksIHllYWgsIGBjb25maWcgTVQ3OTI1VWAgZXhwbGljaXRseSBzdGF0ZXMgXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcIi4gQmluZ28hIFRoaXMgaXMgZGVmaW5pdGVseSBhIHRhcmdldC4gVVNCIGRyaXZlcnMgY2FuIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIHNvIHRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgd2hvIGNhbGxzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGEgYml0IGJldHRlci4gVGhpcyBzaG91bGQgcmV2ZWFsIGVudHJ5IHBvaW50cyB0byB0aGUgZmlybXdhcmUgYW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MTIuNTE4MzY3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NjcwMzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMTU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMTc6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI3MT12b2lkIG10NzkyNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjQ4OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY5LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MTYuNTk1MDgwMDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcxNzk4NjA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBGdW5jdGlvbiBDYWxsKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBib3RoIGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCB3aXRoaW4gYHVzYi5jYC4gVGhhdCdzIGltcG9ydGFudC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgc3VnZ2VzdHMgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpcyBpbnRlZ3JhbCB0byB0aGUgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBJdCdzIHRyaWdnZXJlZCBhdCB0aGUgY3J1Y2lhbCBwb2ludHMgd2hlbiB0aGUgZGV2aWNlIGZpcnN0IHBvd2VycyB1cCBvciB1bmRlcmdvZXMgYSByZXNldCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEdvb2QsIHRoYXQgY29uZmlybXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBmb2N1cy4gTm93LCBsZXQncyBuYWlsIGRvd24gdGhvc2UgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBpbiB0aGlzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgOyBuYW1lbHksIGl0J3MgcmVsaWFudCBvbiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZfQ09SRWAsIGFuZCBgTVQ3Nl9VU0JgLiBUaGlzIGNvbmZpcm1zIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBtb2R1bGVzIGFyZSBpbiBwbGFjZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBiZWNvbWUgY3JpdGljYWwgd2hlbiBJIGJlZ2luIHRvIGRlYnVnIHRoaXMgb3IgZXZlbiBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk2MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNToyNC4zMTMwNjk1NTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzAxMDI1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTktXFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjEwOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTE5PWNvbmZpZyBNVDc5MjVVXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIyLVxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjUtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNToyNC42MTYwODUwODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkwNTA2NTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBNVDc5MjVVIHRoaW5nIGdvaW5nLCB0aGUgY29uZmlnIEkgbmVlZCB0byBiZSBmb2N1c2luZyBvbiBpcyBgTVQ3OTI1VWAuIE1ha2VzIHNlbnNlLiBOb3csIGxldCBtZSB0aGluay4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGZpcm13YXJlIGxvYWRpbmcgcmVsYXRlZCB0byB0aGF0IHNwZWNpZmljIG1vZGVsLiBBaCwgeWVzISBgbXQ3OTI1X2xvYWRfY2xjYCDigJMgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcGFyc2luZyB0aGUgZmlybXdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGZyb20gc3RvcmFnZSB0byBiZWluZyBwYXJzZWQ7IGlzIGl0IHRocm91Z2ggdGhlIHN0YW5kYXJkIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsPyBUaGF0IHNlZW1zIGxvZ2ljYWwsIGdpdmVuIHRoZSBjb250ZXh0LiBBbHJpZ2h0LCBiZXN0IHRvIGp1c3QgY29uZmlybTsgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBtdDc5MjVfbG9hZF9jbGNgIGFuZCBzZWUgZXhhY3RseSB3aGF0IGl0J3MgZG9pbmcgd2l0aCB0aGUgZmlybXdhcmUgYWNxdWlzaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2ODMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNTozMi41MjExNTMxNjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTg6XFx0c3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gNzk5OlxcdHtcXG4gODAwOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyO1xcbiA4MDE6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcXG4gODAyOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICpjbGM7XFxuIDgwMzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiA4MDQ6XFx0XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4gODA1OlxcdFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuIDgwNjpcXHRcXHR1OCAqY2xjX2Jhc2UgPSBOVUxMLCBod19lbmNhcCA9IDA7XFxuIDgwNzpcXHRcXHRpbnQgcmV0LCBpLCBsZW4sIG9mZnNldCA9IDA7XFxuIDgwODpcXHRcXG4gODA5OlxcdFxcdGRldi1cXHUwMDNlcGh5LmNsY19jaGFuX2NvbmYgPSAweGZmO1xcbiA4MTA6XFx0XFx0ZGV2LVxcdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcXG4gODExOlxcdFxcdGlmICghbXQ3OTI1X3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxcbiA4MTI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4gODE1OlxcdFxcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcXHUwMDI2aHdfZW5jYXApO1xcbiA4MTY6XFx0XFx0XFx0aWYgKHJldClcXG4gODE3OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgxODpcXHRcXHRcXHRod19lbmNhcCA9IHU4X2dldF9iaXRzKGh3X2VuY2FwLCBNVF9FRV9IV19UWVBFX0VOQ0FQKTtcXG4gODE5OlxcdFxcdH1cXG4gODIwOlxcdFxcbiA4MjE6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXFx1MDAzZWRldik7XFxuIDgyMjpcXHRcXHRpZiAocmV0KVxcbiA4MjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0aWYgKCFmdyB8fCAhZnctXFx1MDAzZWRhdGEgfHwgZnctXFx1MDAzZXNpemUgXFx1MDAzYyBzaXplb2YoKmhkcikpIHtcXG4gODI2OlxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZVxcXFxuXFxcIik7XFxuIDgyNzpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA4Mjg6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDgyOTpcXHRcXHR9XFxuIDgzMDpcXHRcXG4gODMxOlxcdFxcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVxcdTAwM2VkYXRhICsgZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xcbiA4MzI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhkci1cXHUwMDNlbl9yZWdpb247IGkrKykge1xcbiA4MzM6XFx0XFx0XFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cXG4gODM0OlxcdFxcdFxcdFxcdFxcdFxcdChoZHItXFx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xcbiA4MzU6XFx0XFx0XFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVxcdTAwM2VsZW4pO1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRcXHRcXHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXFxuIDgzODpcXHRcXHRcXHRpZiAob2Zmc2V0ICsgbGVuIFxcdTAwM2UgZnctXFx1MDAzZXNpemUpIHtcXG4gODM5OlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb25cXFxcblxcXCIpO1xcbiA4NDA6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gODQxOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4NDI6XFx0XFx0XFx0fVxcbiA4NDM6XFx0XFxuIDg0NDpcXHRcXHRcXHRpZiAoKHJlZ2lvbi1cXHUwMDNlZmVhdHVyZV9zZXQgXFx1MDAyNiBGV19GRUFUVVJFX05PTl9ETCkgXFx1MDAyNlxcdTAwMjZcXG4gODQ1OlxcdFxcdFxcdCAgICByZWdpb24tXFx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcXG4gODQ2OlxcdFxcdFxcdFxcdGNsY19iYXNlID0gKHU4ICopKGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0KTtcXG4gODQ3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA4NDg6XFx0XFx0XFx0fVxcbiA4NDk6XFx0XFx0XFx0b2Zmc2V0ICs9IGxlbjtcXG4gODUwOlxcdFxcdH1cXG4gODUxOlxcdFxcbiA4NTI6XFx0XFx0aWYgKCFjbGNfYmFzZSlcXG4gODUzOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4NTQ6XFx0XFxuIDg1NTpcXHRcXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSkge1xcbiA4NTY6XFx0XFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKVxcbiA4NTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg2MDpcXHRcXG4gODYxOlxcdFxcdFxcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xcbiA4NjI6XFx0XFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG4gODYzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA4NjQ6XFx0XFxuIDg2NTpcXHRcXHRcXHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cXG4gODY2OlxcdFxcdFxcdGlmICgoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19CRV9DVFJMIHx8IGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyeF9DTENfUkVHRCkgXFx1MDAyNlxcdTAwMjZcXG4gODY3OlxcdFxcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXQyLnR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbiA4Njg6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCAhPSBNVDc5MnhfQ0xDX0JFX0NUUkwgXFx1MDAyNlxcdTAwMjYgY2xjLVxcdTAwM2VpZHggIT0gTVQ3OTJ4X0NMQ19SRUdEIFxcdTAwMjZcXHUwMDI2XFxuIDg3MTpcXHRcXHRcXHQgICAgdThfZ2V0X2JpdHMoY2xjLVxcdTAwM2V0MC50eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcXG4gODcyOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA4NzM6XFx0XFxuIDg3NDpcXHRcXHRcXHRwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0gPSBkZXZtX2ttZW1kdXAobWRldi1cXHUwMDNlZGV2LCBjbGMsXFxuIDg3NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSxcXG4gODc2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIDg3NzpcXHRcXG4gODc4OlxcdFxcdFxcdGlmICghcGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKSB7XFxuIDg3OTpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA4ODA6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDg4MTpcXHRcXHRcXHR9XFxuIDg4MjpcXHRcXHR9XFxuIDg4MzpcXHRcXG4gODg0OlxcdFxcdHJldCA9IG10NzkyNV9yZWdkX2luaXQocGh5KTtcXG4gODg1OlxcdG91dDpcXG4gODg2OlxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xcbiA4ODc6XFx0XFxuIDg4ODpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4ODk6XFx0fVxcbiA4OTA6XFx0XFxuIDg5MTpcXHRpbnQgbXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuIDg5MjpcXHR7XFxuIDg5MzpcXHRcXHRzdHJ1Y3Qge1xcbiA4OTQ6XFx0XFx0XFx0dTggX3Jzdls0XTtcXG4gODk1OlxcdFxcbiA4OTY6XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gODk3OlxcdFxcdFxcdF9fbGUxNiBsZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI1OjMyLjUyMTUyNDY2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzEwMzI3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBGaXJtd2FyZSBMb2FkaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYG10NzkyNV9sb2FkX2NsY2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBTeXprYWxsZXIsIG9mIGNvdXJzZSwgY2FuIGhvb2sgaW50byBgcmVxdWVzdF9maXJtd2FyZWAsIGFsbG93aW5nIGZvciBmYXVsdCBpbmplY3Rpb24gb3IgYXJiaXRyYXJ5IGZpcm13YXJlIGJsb2JzLiBJIGFscmVhZHkga25vdyBTeXprYWxsZXIgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAsIHNvIHdlIGNhbiBkZWZpbml0ZWx5IGZ1enogYG10NzkyNV9sb2FkX2NsY2AgYW5kIHNlZSB3aGF0IGJyZWFrcy5cblxuVGhpcyBwYXRjaCBmaXhlcyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byB0aGUgaGVhZGVyIGNvbnRlbnQgc2FuaXR5IGNoZWNrIHdpdGhpbiBgbXQ3OTI1X2xvYWRfY2xjYC4gU3BlY2lmaWNhbGx5LCBpdCBjb3JyZWN0cyBhbiBlcnJvciBpbiBob3cgYGNsYy1cdTAwM2VpZHggPT0gTVQ3OTJ4X0NMQ19SRUdEYCBpcyBoYW5kbGVkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzdGFrZW5seSBjaGVja2luZyBgY2xjLVx1MDAzZXQwLnR5cGVgIHdoZW4gaXQgc2hvdWxkIGhhdmUgYmVlbiBjaGVja2luZyBgY2xjLVx1MDAzZXQyLnR5cGVgIHdoZW4gYE1UNzkyeF9DTENfUkVHRGAgaXMgc2V0LiBUaGlzIGlzIGEgY2xlYXIgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpc3N1ZSwgYW5kIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhhdC4gVGhpcyBtYWtlcyBpdCBhbiBldmVuIGJldHRlciB0YXJnZXQuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGguIElzIGBtdDc5MjVfbG9hZF9jbGNgIGNhbGxlZCBieSBhbnl0aGluZyBlbHNlPyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdGhlICpvbmx5KiBjYWxsZXIuIFRoaXMgbWFrZXMgdGhpbmdzIGVhc2llcjsgd2UgY2FuIGZvY3VzIG91ciBlZmZvcnRzIHRoZXJlLlxuXG5UbyBlbmFibGUgdGhpcyBmdXp6aW5nIHBhdGgsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE1UNzkyNVVgIGlzIGVuYWJsZWQuIFNpbmNlIHdlIHdhbnQgdG8gZm9jdXMgb24gYG10NzkyNV9sb2FkX2NsY2AgYW5kIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCwgd2hpY2ggYXJlIGxpa2VseSB0aGUgbW9zdCBpbXBvcnRhbnQgY29kZSBwYXRocywgdGhhdCdzIHdoYXQgd2UgbmVlZCB0byBmb2N1cyBvbi5cblxuTGV0J3MgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MuIEl0IHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgYW5kIGl0IGFsc28gc2VsZWN0cyBgTVQ3OTI1X0NPTU1PTmAuIEZpbmUuIExldCdzIG1ha2Ugc3VyZSB3ZSBjaGVjayBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9ycywgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjEzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MjU6MzkuMjMxODU1MDk0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY1ODkyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNXVfbWN1X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9Mjc9bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjU2OnN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE0Mz1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYzLVxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjQ6XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjUtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjI1OjQxLjk5Nzc2ODAwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI5NDc0MjA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjg3ODQsIk91dHB1dFRva2VucyI6MjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjoyNjowNy4yOTI1MTM4ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA4MzM4MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgICBcIm10NzkyNWVfbWN1X2luaXRcIixcbiAgICBcIm10NzkyNXVfbWN1X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgbXQ3OTI1X2xvYWRfY2xjYCB3aGljaCBwYXJzZXMgdGhlIGZpcm13YXJlIENMQyByZWdpb24gZm9yIE1UNzkyNSBkZXZpY2VzIChib3RoIFBDSWUgYW5kIFVTQikuIFRoZSBsb2dpYyBjaGVja3MgdGhlIGhhcmR3YXJlIGVuY2Fwc3VsYXRpb24gdHlwZSB0byBtYXRjaCBmaXJtd2FyZSByZWdpb25zLiBUaGlzIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHZpYSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBtdDc5MjVlX21jdV9pbml0YCAoUENJZSkgYW5kIGBtdDc5MjV1X21jdV9pbml0YCAoVVNCKS4gU2luY2UgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2Qgb3Igc2ltaWxhciBpbiBmdXp6aW5nIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVlX21jdV9pbml0XCIsXG4gICAgXCJtdDc5MjV1X21jdV9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYG10NzkyNV9sb2FkX2NsY2Agd2hpY2ggcGFyc2VzIHRoZSBmaXJtd2FyZSBDTEMgcmVnaW9uIGZvciBNVDc5MjUgZGV2aWNlcyAoYm90aCBQQ0llIGFuZCBVU0IpLiBUaGUgbG9naWMgY2hlY2tzIHRoZSBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uIHR5cGUgdG8gbWF0Y2ggZmlybXdhcmUgcmVnaW9ucy4gVGhpcyBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB2aWEgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1ZV9tY3VfaW5pdGAgKFBDSWUpIGFuZCBgbXQ3OTI1dV9tY3VfaW5pdGAgKFVTQikuIFNpbmNlIFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkIG9yIHNpbWlsYXIgaW4gZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm6w42[1] Phase: Succeeded StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 12:26:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 12:26:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2] Phase: Succeeded StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 12:26:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 12:26:20 +0000 UTC FinishedAt: 2026-07-25 12:26:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowm6w42/series-workflowm6w42-convert-artifact-1252453324/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 12:26:41 +0000 UTC FinishedAt: 2026-07-25 13:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 12:26:41 +0000 UTC FinishedAt: 2026-07-25 13:02:16 +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:*74bc56f5-7bfd-416e-9fb3-7e58faffc0ce,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-workflowm6w42/series-workflowm6w42-convert-artifact-1252453324/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": "62b2e635-9086-450a-8eab-eb70ee66520a", "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-workflowm6w42/series-workflowm6w42-build-action-1081403898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:26:41 +0000 UTC FinishedAt: 2026-07-25 13:02:06 +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:*74bc56f5-7bfd-416e-9fb3-7e58faffc0ce,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-workflowm6w42/series-workflowm6w42-convert-artifact-1252453324/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": "62b2e635-9086-450a-8eab-eb70ee66520a", "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-workflowm6w42/series-workflowm6w42-build-action-1081403898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 13:02:16 +0000 UTC FinishedAt: 2026-07-25 13:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 13:02:16 +0000 UTC FinishedAt: 2026-07-25 13:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 13:02:16 +0000 UTC FinishedAt: 2026-07-25 13:02:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 13:02:16 +0000 UTC FinishedAt: 2026-07-25 13:02:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowm6w42/series-workflowm6w42-convert-artifact-2008737291/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 13:02:26 +0000 UTC FinishedAt: 2026-07-25 13:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 13:02:26 +0000 UTC FinishedAt: 2026-07-25 13:04:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*62b2e635-9086-450a-8eab-eb70ee66520a,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-workflowm6w42/series-workflowm6w42-build-action-1081403898/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-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 13:04:25 +0000 UTC FinishedAt: 2026-07-25 13:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 13:04:25 +0000 UTC FinishedAt: 2026-07-25 13:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 13:04:25 +0000 UTC FinishedAt: 2026-07-25 13:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 13:04:25 +0000 UTC FinishedAt: 2026-07-25 13:36:49 +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:*74bc56f5-7bfd-416e-9fb3-7e58faffc0ce,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-workflowm6w42/series-workflowm6w42-convert-artifact-2008737291/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": "646c7c56-76ef-474e-9f2f-9dbfc32232da", "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-workflowm6w42/series-workflowm6w42-build-action-383091887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 13:04:25 +0000 UTC FinishedAt: 2026-07-25 13:35:15 +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:*74bc56f5-7bfd-416e-9fb3-7e58faffc0ce,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-workflowm6w42/series-workflowm6w42-convert-artifact-2008737291/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": "646c7c56-76ef-474e-9f2f-9dbfc32232da", "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-workflowm6w42/series-workflowm6w42-build-action-383091887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 13:36:49 +0000 UTC FinishedAt: 2026-07-25 13:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 13:36:49 +0000 UTC FinishedAt: 2026-07-25 13:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 13:36:49 +0000 UTC FinishedAt: 2026-07-25 13:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 13:36:49 +0000 UTC FinishedAt: 2026-07-25 13:39:10 +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:*646c7c56-76ef-474e-9f2f-9dbfc32232da,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-workflowm6w42/series-workflowm6w42-build-action-383091887/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-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +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":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"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:*62b2e635-9086-450a-8eab-eb70ee66520a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*646c7c56-76ef-474e-9f2f-9dbfc32232da,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-workflowm6w42/series-workflowm6w42-build-action-1081403898/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-workflowm6w42/series-workflowm6w42-build-action-383091887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:39:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:39:29 +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":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"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-workflowm6w42/series-workflowm6w42-convert-artifact-1684284068/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 13:39:20 +0000 UTC FinishedAt: 2026-07-25 13:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 13:39:41 +0000 UTC FinishedAt: 2026-07-25 13:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm6w42[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware","mt7925e_mcu_init","mt7925u_mcu_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MT7925U"],"series_id":"fbed7a64-9cf1-4e37-bce0-fecf65843158","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 13:39:41 +0000 UTC FinishedAt: 2026-07-25 13:41:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*62b2e635-9086-450a-8eab-eb70ee66520a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*646c7c56-76ef-474e-9f2f-9dbfc32232da,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-workflowm6w42/series-workflowm6w42-build-action-1081403898/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-workflowm6w42/series-workflowm6w42-build-action-383091887/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-workflowm6w42/series-workflowm6w42-convert-artifact-1684284068/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,}