Name: series-workflow95tbj Phase: Succeeded StartedAt: 2026-06-24 07:36:56 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[0] Phase: Succeeded StartedAt: 2026-06-24 07:36:56 +0000 UTC FinishedAt: 2026-06-24 07:52:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 07:36:56 +0000 UTC FinishedAt: 2026-06-24 07:52:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NXP_ENETC4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NXP_ENETC4" ], "series_id": "dce3339c-ece0-43ba-874b-2bb03d0d5ac8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "enetc4_default_rings_allocation", "enetc4_allocate_si_rings", "enetc4_configure_port_si", "enetc4_configure_port", "enetc4_pf_init", "enetc4_pf_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05YUF9FTkVUQzQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgICAmIzM0O2VuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAgICYjMzQ7ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9pbml0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3MDUxOTZkOWJhNDQxM2QwYTFlZGY1MDVlYzZiM2U4YjZhN2JlYWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MDozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDRlNzcxZjg1MjM1ODA0Li40MzdhMTViYmI0N2JhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5AQCAtMzIyLDYgJiM0MzszMjIsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4mIzQzO1x0aWYgKCFwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4gXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuIFx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlhQX0VORVRDNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24mIzM0OywKICAgICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgICAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydF9zaSYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzA1MTk2ZDliYTQ0MTNkMGExZWRmNTA1ZWM2YjNlOGI2YTdiZWFhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDc6NTA6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKaW5kZXggNGU3NzFmODUyMzU4MDQuLjQzN2ExNWJiYjQ3YmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jCkBAIC0zMjIsNiAmIzQzOzMyMiw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZikKIAl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7CiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IwKDApLCB2YWwpOwogCiYjNDM7CWlmICghcGYtJmd0O2NhcHMubnVtX3ZzaSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAludW1fcnhfYmRyID0gcGYtJmd0O2NhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7CiAJcnhfcmVtID0gbnVtX3J4X2JkciAlIHBmLSZndDtjYXBzLm51bV92c2k7CiAJbnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYC4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlIGhhcyBiZWVuIGFkZGVkOiBgaWYgKCFwZi0mZ3Q7Y2Fwcy5udW1fdnNpKSByZXR1cm47YC4gU21hcnQsIHByZXZlbnRpbmcgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3IgYSBzaW1pbGFyIGVkZ2UgY2FzZS4gSXQmIzM5O3MgZ29vZCB0byBzZWUgcHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgZHJpdmVyLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYCDigJMgYWgsIGl0JiMzOTtzIGZvciB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIFBDSWUgZGV2aWNlLiBUaGlzIHJhaXNlcyBzb21lIGltbWVkaWF0ZSBxdWVzdGlvbnMuIENhbiB0aGlzIGJlIGVhc2lseSBmdXp6ZWQsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUENJZSBkcml2ZXJzLCBiZWluZyBoYXJkd2FyZS1zcGVjaWZpYywgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkgdW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSB3ZWxsLWVtdWxhdGVkIGhhcmR3YXJlIG1vZGVsIG9yIGEgbW9yZSBnZW5lcmljIHN1YnN5c3RlbS4KCkhvd2V2ZXIuLi4gd2FpdCwgc3l6a2FsbGVyLCB0aGUgc3lzdGVtIGNhbGwgZnV6emVyLCBoYXMgYSBQQ0kgZnV6emVyISBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgZGV2ZWxvcG1lbnQuIEl0IGRvZXMgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBtZW1vcnktbWFwcGVkIEkvTywgd2hpY2ggb3BlbnMgdXAgdGhlIHBvc3NpYmlsaXR5IG9mIGZ1enppbmcgdGhpcy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgZ2l2ZW4gc3l6a2FsbGVyJiMzOTtzIGNhcGFiaWxpdGllcz8gVGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGlmIGl0JiMzOTtzIHRyaWdnZXJhYmxlIHZpYSB0aGUgUENJIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MjkxPXN0YXRpYyB1MzIgZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QoYm9vbCBpc192ZiwgdTMyIG51bV90eF9iZHIsIHUzMiBudW1fcnhfYmRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MzA1OnN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zNDQ9c3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzozNDY6XHRlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuCgoqKlRyYWNpbmcgdGhlIEFsbG9jYXRpb24gb2YgU0kgUmluZ3Mgd2l0aGluIGVuZXRjNCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIFNwYXRpYWwgSW50ZXJmYWNlIChTSSkgcmluZ3MgYXJlIGJlaW5nIGFsbG9jYXRlZC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzIHdpdGhpbiB0aGlzIGRyaXZlciwgb3IgYXQgbGVhc3QgaG93IGl0JiMzOTtzIGhhbmRsZWQgaW4gYGVuZXRjNGAuIEkgd2FudCB0byBrbm93IHdoZXJlIHRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgY29taW5nIGZyb20sIGhvdyB0aGUgZGVzY3JpcHRvcnMgYXJlIHNldCB1cCDigJMgYXJlIHRoZXkgY29udGlndW91cywgZnJhZ21lbnRlZCwgd2hhdCYjMzk7cyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneT8gSXMgdGhpcyBhbGwgZG9uZSBpbiBvbmUgYmlnIGNodW5rLCBvciBhcmUgdGhlcmUgY2xldmVyIHRyaWNrcyB3aXRoIERNQSBtYXBwaW5nIGFuZCBjYWNoaW5nIHRvIG1ha2UgdGhpbmdzIGVmZmljaWVudD8KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHV0aWxpemF0aW9uLiBBcmUgd2Ugb3B0aW1pemluZyBmb3IgbG93IGxhdGVuY3kgb3IgaGlnaCB0aHJvdWdocHV0PyBEb2VzIHRoaXMgYWxsb2NhdGlvbiBzdHJhdGVneSBsZW5kIGl0c2VsZiB3ZWxsIHRvIGRpZmZlcmVudCB0cmFmZmljIHByb2ZpbGVzLCBzdWNoIGFzIHRob3NlIHVzZWQgZm9yIGlTQ1NJLCBvciB2aWRlbyBzdHJlYW1pbmc/IEkmIzM5O20gYWxzbyBjdXJpb3VzIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc29waGlzdGljYXRlZCBlcnJvciBoYW5kbGluZyBpbiBwbGFjZSwgd2hhdCBoYXBwZW5zIGlmIHRoZSBhbGxvY2F0aW9uIGZhaWxzLCBpcyB0aGlzIGFsbCBncmFjZWZ1bCBvciBjYXRhc3Ryb3BoaWM/CgpGcm9tIGEgaGFyZHdhcmUgcGVyc3BlY3RpdmUsIEkmIzM5O20gdHJ5aW5nIHRvIHZpc3VhbGl6ZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgRU5FVEM0JiMzOTtzIGludGVybmFsIGFyY2hpdGVjdHVyZS4gSG93IGRvZXMgdGhpcyByaW5nIGFsbG9jYXRpb24gbWFwIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkgcmVnaW9ucyB0aGUgZGV2aWNlIGNhbiBhY3R1YWxseSBhY2Nlc3M/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUsIERNQSBlbmdpbmVzLCBzY2F0dGVyLWdhdGhlciBsaXN0cz8gSSYjMzk7bSBob3BpbmcgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgbGF5ZXIgYWxpZ25zIHdpdGggYW5kIG9wdGltaXplcyBmb3IgdGhlIGhhcmR3YXJlJiMzOTtzIGNhcGFiaWxpdGllcy4gSXQmIzM5O3MgcmVhbGx5IGFib3V0IHRoYXQgaGFybW9ueSBiZXR3ZWVuIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZW5ldGM0YCBpcyBwdXR0aW5nIHRoZSBkZXNjcmlwdG9yczsgYXJlIHRoZXkgaW4gYW4gYWNjZXNzaWJsZSByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5PyBBbHNvLCBob3cgaXMgdGhlIGRldmljZSBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZW0/CgpJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgbG9naWMgc3RlcCBieSBzdGVwLCBsb29rIGZvciBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucywgYW5kIGV4YW1pbmUgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zIGNsb3NlbHkuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGFyZSB3aXRoaW4gYGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzA1PXN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMzQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjM0NDpzdGF0aWMgdm9pZCBlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3Moc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00MDY9c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0MTA6XHRlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3MocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdzogYGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGFwcHJvYWNoIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyAqcGxhY2UqIGluIHRoZSBncmFuZCBzY2hlbWUuIFdoZXJlIGRvZXMgaXQgZml0IHdpdGhpbiB0aGUgYnJvYWRlciBFTkVUQzQgZHJpdmVyIGFyY2hpdGVjdHVyZT8gSSYjMzk7bSBhbHJlYWR5IHZpc3VhbGl6aW5nIHRoZSBjYWxsIGdyYXBoIOKAkyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMgdGhhdCBjYWxsIHRoaXMgb25lIGFuZCB3aGF0IHRoZSBkb3duc3RyZWFtIGNhbGxzIGFyZS4gSXMgaXQgY2FsbGVkIGR1cmluZyBpbml0aWFsIGRldmljZSBzZXR1cCwgbGluayBjaGFuZ2VzLCBvciBwZXJoYXBzIGFzIGEgcmVzcG9uc2UgdG8gc3BlY2lmaWMgZXZlbnRzPyBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBtYXAgdGhlIGNvbnRyb2wgZmxvdy4KCkkgZXhwZWN0IHRvIHNlZSBpdCBoYW5kbGUgcG9ydC1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgdGhlIFN5c3RlbSBJbnRlcmZhY2UgKFNJKS4gVGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgcmVsYXRlZCB0byB0aGluZ3MgbGlrZSBwb3J0IHNwZWVkLCBkdXBsZXggc2V0dGluZ3MsIFZMQU4gY29uZmlndXJhdGlvbiwgTUFDIGFkZHJlc3MgZmlsdGVyaW5nLCBhbmQgcG9zc2libHkgZmxvdyBjb250cm9sIHBhcmFtZXRlcnMgZm9yIHRoZSBzcGVjaWZpYyBwb3J0LiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gaXQg4oCTIHRoaW5ncyBsaWtlIHRoZSBkZXZpY2UgY29udGV4dCAoYGVuZXRjNF9wcml2YCksIHRoZSBwb3J0IGluZGV4L2hhbmRsZSwgYW5kIHRoZSBhY3R1YWwgY29uZmlndXJhdGlvbiBkYXRhLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgYml0cyBhbmQgcGllY2VzLgoKR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGRldmljZSBkcml2ZXJzLCBJIGFudGljaXBhdGUgdGhlcmUgd2lsbCBiZSBhIHNlcmllcyBvZiByZWdpc3RlciB3cml0ZXMgYW5kIHBvc3NpYmx5IHNvbWUgcmVhZC1tb2RpZnktd3JpdGVzIHRvIGVuc3VyZSBhdG9taWNpdHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBhbnkgY29uZGl0aW9uYWwgbG9naWMgYW5kIGVycm9yIGhhbmRsaW5nLiBBcmUgdGhlcmUgZGlmZmVyZW50IGNvZGUgcGF0aHMgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2Ugc3BlZWQgb3Igb3BlcmF0aW5nIG1vZGU/IEhvdyByb2J1c3QgaXMgdGhlIGVycm9yIGRldGVjdGlvbiBhbmQgcmVjb3Zlcnk/IEFyZSB0aGVyZSBhbnkgcmV0cnkgbWVjaGFuaXNtcz8gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBjaGVja2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBvcGVyYXRpbmcgb24gc2hhcmVkIGRhdGEuIEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgbG9ja2luZyBtZWNoYW5pc21zIGluIHBsYXkgaGVyZS4KCkZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBiZSBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIEFyZSB0aGVyZSBhbnkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIG9yIGludHJvZHVjZSBzaWduaWZpY2FudCBsYXRlbmN5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBETUEgb3IgaW50ZXJydXB0IG1lY2hhbmlzbXMgZm9yIG1vcmUgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXJzLCBwYXJ0aWN1bGFybHkgZm9yIHRoZSBsb25nZXIgY29uZmlndXJhdGlvbiB0YXNrcz8gQXJlIHRoZXJlIGFueSBvcHRpbWl6YXRpb25zIGZvciBidWxrIG9wZXJhdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgdG8gbWluaW1pemUgdGhlIG92ZXJoZWFkPwoKRmluYWxseSwgSSYjMzk7bGwgYmUgY29tcGFyaW5nIHRoZSBjb2RlIHdpdGggdGhlIHJlbGV2YW50IGRhdGFzaGVldCBhbmQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEVORVRDNCBzaWxpY29uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG1hdGNoZXMgdGhlIGludGVuZGVkIGhhcmR3YXJlIGJlaGF2aW9yIGFuZCB0aGF0IG5vIGFzc3VtcHRpb25zIGFyZSBiZWluZyBtYWRlIHRoYXQgY29udHJhZGljdCB0aGUgaGFyZHdhcmUmIzM5O3MgZG9jdW1lbnRlZCBmdW5jdGlvbmFsaXR5LiBBbnkgY29tbWVudHMgd291bGQgYmUgcmVhbGx5IGhlbHBmdWwgaW4gcG9pbnRpbmcgbWUgdG8gdGhvc2Ugc2VjdGlvbnMsIG90aGVyd2lzZSwgSSB3aWxsIGJlIGp1bXBpbmcgaW4gYW5kIGdldHRpbmcgZmFtaWxpYXIgd2l0aCB0aGUgc2lsaWNvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zOTI9c3RhdGljIHZvaWQgZW5ldGM0X2VuYWJsZV9hbGxfc2koc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQwNjpzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00NDY9c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XHRlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0OS1cdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhlIGNvZGUgbXlzZWxmOgoKKipUcmFjaW5nIGBlbmV0YzRfY29uZmlndXJlX3BvcnRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgRU5FVEMgKEV0aGVybmV0IE5ldHdvcmsgQ29udHJvbGxlcikgZHJpdmVyIGZyYW1ld29yay4gVGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBwb3J0LXNwZWNpZmljIHNldHVwLCBhZnRlciB0aGUgY29yZSBFTkVUQyBjb250cm9sbGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHdoZXJlIHdlJiMzOTtyZSBtYXBwaW5nIHJlZ2lzdGVycywgc2V0dGluZyB1cCBpbnRlcnJ1cHQgbGluZXMsIGFuZCBjb25maWd1cmluZyB0aGUgdmFyaW91cyBxdWV1ZXMgZm9yIHRyYW5zbWl0IGFuZCByZWNlaXZlLiBJdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgd2UgbWFrZSB0aGUgYWJzdHJhY3QgY29udHJvbGxlciByZWxldmFudCB0byBhIHBhcnRpY3VsYXIgKnBvcnQqIG9yIHBoeXNpY2FsIGludGVyZmFjZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGxpa2VseSB0YWtlcyBhcyBhcmd1bWVudHMuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O2xsIGdldCBhIHBvaW50ZXIgdG8gdGhlIEVORVRDIGRldmljZSBzdHJ1Y3R1cmUsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlLCBhbmQgdGhlbiBsaWtlbHkgYSBwb2ludGVyIHRvIGEgcG9ydC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBzZXR0aW5ncyB3ZSB3YW50IHRvIGFwcGx5IHRvIHRoaXMgaW50ZXJmYWNlLiBJdCYjMzk7cyBwcm9iYWJseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIG9yIHdyaXRlcyB0byBnZXQgdGhhdCBwb3J0IHVwIGFuZCBydW5uaW5nLgoKSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIGFib3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgc3BlZWQgYW5kIGR1cGxleCBjb25maWd1cmF0aW9ucy4gSXMgdGhpcyBmdW5jdGlvbiB1c2luZyBhIHNlcmllcyBvZiBiaXQgbWFuaXB1bGF0aW9ucyB3aXRoaW4gY2VydGFpbiByZWdpc3RlcnM/IE9yIGlzIGl0IGVtcGxveWluZyBzb21lIHNvcnQgb2YgYWR2YW5jZWQgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgKGxpa2Ugc29tZSBuZXdlciBjb250cm9sbGVycyB1c2UpPyBJIGV4cGVjdCB0byBzZWUgY2hlY2tzIG9yIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIGxheWVyIGNvbm5lY3Rpb27igJQgdGhpbmdzIGxpa2UgYXV0b25lZ290aWF0aW9uLCBNQUMgYWRkcmVzcyBjb25maWd1cmF0aW9uLCBhbmQgcG9zc2libHkgZmxvdyBjb250cm9sIHNldHVwLgoKQmV5b25kIHRoZSBiYXNpYyBpbml0aWFsaXphdGlvbiwgaXQmIzM5O3MgYWxzbyB3b3J0aCBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgYW5kIG90aGVyIGFkdmFuY2VkIEV0aGVybmV0IGZlYXR1cmVzLiBJcyBpdCB1c2luZyBoYXJkd2FyZSBvZmZsb2FkIGZvciB0aGVzZSBmdW5jdGlvbnM/IERvZXMgdGhlIGNvZGUgcmVseSBvbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2sgZm9yIHRoZXNlIGRldGFpbHMgb3IgZG9lcyBpdCBtYW5hZ2UgdGhlbSBpbiBoYXJkd2FyZT8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmFpbHM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXRyeSBtZWNoYW5pc21zPyBUaGlzIGlzIGNyaXRpY2FsIGZvciByb2J1c3QgZHJpdmVyIG9wZXJhdGlvbi4gSSBuZWVkIHRvIG5vdGUgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGhpcyBhcmVhLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHNlcXVlbmNlOiBob3cgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2hhdCBkYXRhIGl0IG5lZWRzIHRvIHdvcmssIHdoYXQgcmVnaXN0ZXJzIGl0IG1vZGlmaWVzLCBhbmQgdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSBwb3J0IGFmdGVyIGl0IGhhcyBjb21wbGV0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSBvciBkZWJ1ZyBhIHNwZWNpZmljIHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTM5Mj1zdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDA2OnN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQzNj1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3RyeF9mcmFtZV9zaXplKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDY6c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XHRlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0OS1cdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00Njg9c3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDg2Olx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00ODctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHRyYWNpbmcgYGVuZXRjNF9wZl9pbml0YDoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgdGhlIEVORVRDNCBQaHlzaWNhbCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9wZl9pbml0YCBmdW5jdGlvbi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgYSBQaHlzaWNhbCBGdW5jdGlvbiAoUEYpIG9mIHRoZSBFTkVUQzQgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlci4gR2l2ZW4gdGhlICYjMzQ7UEYmIzM0OyBkZXNpZ25hdGlvbiwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvcmUgc2V0dXAgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgcmVjb2duaXplZCwgcHJvYmVkLCBhbmQgZ2VuZXJhbGx5IGJyb3VnaHQgb25saW5lIHdpdGhpbiB0aGUgc3lzdGVtLgoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gbG9vayBmb3Iga2V5IGFyZWFzOgoKKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBXaGF0IG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgbGluZXMsIGFuZCBvdGhlciBzeXN0ZW0gcmVzb3VyY2VzIGlzIHRoaXMgZnVuY3Rpb24gY2xhaW1pbmcgZm9yIHRoZSBQRj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgZGV2aWNlIGludG8gdGhlIHN5c3RlbS4gQXJlIHdlIGRlYWxpbmcgd2l0aCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgbWVtb3J5LW1hcHBlZCBJL08sIG9yIGludGVycnVwdCBoYW5kbGluZz8KKiAgICoqSGFyZHdhcmUgSW5pdGlhbGl6YXRpb246KiogV2hhdCBsb3ctbGV2ZWwgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkPyBBcmUgd2Ugc2V0dGluZyB1cCBjbG9ja3MsIGVuYWJsaW5nIGNlcnRhaW4gZmVhdHVyZXMsIG9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2UmIzM5O3MgYmFzZSBzdGF0ZT8gSeKAmWxsIGJlIHdhdGNoaW5nIGZvciByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIHRoYXQgZXN0YWJsaXNoIHRoZSBkZXZpY2UmIzM5O3Mgb3BlcmF0aW9uYWwgbW9kZS4KKiAgICoqRHJpdmVyIFN0cnVjdHVyZSBTZXR1cDoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGluZyB3aXRoIHRoZSBleGlzdGluZyBuZXR3b3JrIGRyaXZlciBmcmFtZXdvcms/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgKGUuZy4sIG5ldFxfZGV2aWNlIHN0cnVjdHVyZSwgRU5FVEMtc3BlY2lmaWMgc3RydWN0cykgYW5kIGhvdyBhcmUgdGhleSBiZWluZyBsaW5rZWQ/IFRoaXMgZ2l2ZXMgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBXaGF0JiMzOTtzIHRoZSBlcnJvciBjaGVja2luZyBsaWtlPyBEb2VzIHRoaXMgZnVuY3Rpb24gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9ycyBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgcmV0cmllcyBvciBmYWxsYmFjayBtZWNoYW5pc21zIGluIHBsYWNlPwoqICAgKipJbnRlcnJ1cHQgSGFuZGxpbmc6KiogRG9lcyB0aGlzIGZ1bmN0aW9uIHJlZ2lzdGVyIGludGVycnVwdCBoYW5kbGVycz8gSWYgc28sIHdoYXQgaW50ZXJydXB0IGxpbmVzIGlzIGl0IHVzaW5nLCBhbmQgd2hpY2ggZnVuY3Rpb25zIGFyZSBoYW5kbGluZyB0aGUgaW50ZXJydXB0cz8gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gcmVzcG9uZHMgdG8gZGV2aWNlIGV2ZW50cy4KKiAgICoqRnVuY3Rpb24gQ2FsbHM6KiogSXMgdGhlcmUgYW55dGhpbmcgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbGxzLCBvciB0aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24/IFRoZSBmdW5jdGlvbiBjYWxsIGhpZXJhcmNoeSB0ZWxscyBhIGxvdCBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzY29wZSBvZiB0aGUgUEYgaW5pdGlhbGl6YXRpb24uCgpVbHRpbWF0ZWx5LCBJIGV4cGVjdCB0byBzZWUgYSBjYXJlZnVsbHkgb3JjaGVzdHJhdGVkIHNlcXVlbmNlIHRoYXQgdHJhbnNpdGlvbnMgdGhlIEVORVRDNCBQRiBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUgdG8gYSByZWFkeS10by11c2UgbmV0d29yayBpbnRlcmZhY2UuIEkgd2lsbCBjYXJlZnVsbHkgdHJhY2UgZWFjaCBmdW5jdGlvbiBjYWxsLCBtZW1vcnkgYWNjZXNzLCBhbmQgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIHRvIGdyYXNwIHRoZSBjb3JlIGRldGFpbHMgb2YgdGhlIHNldHVwIGFuZCBnYWluIGEgZGV0YWlsZWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGV2aWNlIGRyaXZlciYjMzk7cyBwZXJzcGVjdGl2ZSBvbiBpbml0aWFsaXppbmcgdGhlIEVORVRDNCBQRi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00NjM9c3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0Njg6c3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTExMTE9c3RhdGljIGludCBlbmV0YzRfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDQtXHRwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExNDU6XHRlcnIgPSBlbmV0YzRfcGZfaW5pdChwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE0Ni1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKlBDSSBQcm9iZSBDb250ZXh0IGFuZCBLY29uZmlnIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyB0aGluZyBpcyBiZWluZyBjYWxsZWQgZnJvbSBgZW5ldGM0X3BmX3Byb2JlYC4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGl0JiMzOTtzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBBbmQgdGhlIHJlYWwga2lja2VyPyBUaGlzIGVudHJ5IHBvaW50IGlzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBmdXp6aW5nLCB3aGljaCBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaGVyZS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBLY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBhc3Nlc3NtZW50LiBJdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIHdoaWNoIGluIHR1cm4gaW5mb3JtcyBob3cgcmVhZGlseSBhIGZ1enplciBjYW4gcmVhY2ggdGhpcyBlbnRyeSBwb2ludC4gT25jZSBJIGZpbmQgaXQsIEkgY2FuIHRoZW4gY29uc2lkZXIgaXRzIGltcGxpY2F0aW9ucyBmb3IgYSB0YXJnZXRlZCBQQ0kgRnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X3BmLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfTlhQX0VORVRDNCkgJiM0Mzs9IG54cC1lbmV0YzQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL01ha2VmaWxlOjE4Om54cC1lbmV0YzQteSA6PSBlbmV0YzRfcGYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL01ha2VmaWxlLTE5LW54cC1lbmV0YzQtJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBlbmV0YzRfZGVidWdmcy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI1Mz1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0yNzMtXHQuc2V0X3NpX3ByaW1hcnlfbWFjID0gZW5ldGM0X3BmX3NldF9zaV9wcmltYXJ5X21hYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9Mjc3PXN0YXRpYyBpbnQgZW5ldGM0X3BmX3N0cnVjdF9pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4Mi1cdHBmLVx1MDAzZXRvdGFsX3ZmcyA9IHBjaV9zcmlvdl9nZXRfdG90YWx2ZnMoc2ktXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MjgzOlx0cGYtXHUwMDNlb3BzID0gXHUwMDI2ZW5ldGM0X3BmX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0yODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRU5FVEM0IEtjb25maWcgT3B0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJJiMzOTt2ZSBnb3QgdG8gZGVhbCB3aXRoIGBDT05GSUdfTlhQX0VORVRDNGAuIE15IGZpcnN0IG1vdmUgaXMgb2J2aW91czsgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHB1bGxpbmcgdXAgdGhlIGFwcHJvcHJpYXRlIGZpbGUgYW5kIHF1aWNrbHkgc2Nhbm5pbmcgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgcGFydGljdWxhciBvcHRpb24gaGFzLiBBcmUgdGhlcmUgYW55IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgYENPTkZJR19OWFBfRU5FVEM0YCB0byBldmVuIHNob3cgdXAsIG9yIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGZpcnN0IHN0ZXAgLSBmaWd1cmUgb3V0IHRoZSBwcmVyZXF1aXNpdGVzIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBnZXR0aW5nIGxvc3QgaW4gdGhlIGRldGFpbHMgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOWFBfRU5FVEM0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo0ODpjb25maWcgTlhQX0VORVRDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDktXHR0cmlzdGF0ZSBcJiMzNDtFTkVUQzQgUEYgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkV4YW1pbmluZyB0aGUgRU5FVEMgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ4LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmUgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVORVRDIChFbmhhbmNlZCBOZXR3b3JrIEV0aGVybmV0IENvbnRyb2xsZXIpIGRyaXZlci4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBjdXN0b21pemluZyB0aGUgRU5FVEMmIzM5O3MgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbCBidWlsZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHNldHRpbmdzLCBhbnl0aGluZyByZWxhdGVkIHRvIGZlYXR1cmVzIGxpa2UgVkxBTiBzdXBwb3J0LCBoYXJkd2FyZSBvZmZsb2FkaW5nIGNhcGFiaWxpdGllcywgZGlmZmVyZW50IFBIWSBjb25maWd1cmF0aW9ucywgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQgY29udHJvbHMuIFRoaXMgc2VjdGlvbiBwcm9iYWJseSBkZWZpbmVzIHdoYXQgZmVhdHVyZXMgYXJlIGJ1aWx0LWluLCBtb2R1bGFyaXplZCwgb3IgY29tcGxldGVseSBkaXNhYmxlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIGFuZCB1c2VzIGNsZWFyIG9wdGlvbiBkZXNjcmlwdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24ga25vYnMgZm9yIHRoaXMgZHJpdmVyIHNvIEkgdW5kZXJzdGFuZCBob3cgdG8gdHVuZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIGVtYmVkZGVkIHN5c3RlbSBvciBuZXR3b3JrIGFwcGxpYW5jZSBJJiMzOTttIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRzZWxlY3QgRElNTElCXG4gIDQxOlx0XHRoZWxwXG4gIDQyOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE5YUCBFTkVUQyBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXIgUENJZVxuICA0MzpcdFx0ICBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGRldmljZXMsIG1hbmFnaW5nIEVORVRDIFBvcnRzIGF0IGEgcHJpdmlsZWdlZFxuICA0NDpcdFx0ICBsZXZlbC5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgSWYgY29tcGlsZWQgYXMgbW9kdWxlIChNKSwgdGhlIG1vZHVsZSBuYW1lIGlzIGZzbC1lbmV0Yy5cbiAgNDc6XHRcbiAgNDg6XHRjb25maWcgTlhQX0VORVRDNFxuICA0OTpcdFx0dHJpc3RhdGUgXCYjMzQ7RU5FVEM0IFBGIGRyaXZlclwmIzM0O1xuICA1MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA1MTpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDUyOlx0XHRzZWxlY3QgRlNMX0VORVRDX0NPUkVcbiAgNTM6XHRcdHNlbGVjdCBGU0xfRU5FVENfTURJT1xuICA1NDpcdFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cbiAgNTU6XHRcdHNlbGVjdCBOWFBfTlRNUFxuICA1NjpcdFx0c2VsZWN0IFBIWUxJTktcbiAgNTc6XHRcdHNlbGVjdCBESU1MSUJcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTlhQIEVORVRDIGRldmljZXMgd2l0aCBtYWpvciByZXZpc2lvbiA0LiBFTkVUQyBpc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQzCgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqQW5hbHl6aW5nIHRoZSBFTkVUQzQgRHJpdmVyIEZpeCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IHJlbGF0ZWQgdG8gdGhlIGBOWFBfRU5FVEM0YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGVyZSYjMzk7cyBhIHBhdGNoIGFkZHJlc3NpbmcgYSBkaXZpc2lvbi1ieS16ZXJvIGVycm9yIHdpdGhpbiB0aGUgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBhcmlzZXMgd2hlbiBgcGYtJmd0O2NhcHMubnVtX3ZzaWAgaXMgemVybywgd2hpY2ggbGlrZWx5IGhhcHBlbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHByb2JpbmcuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGJ1ZywgYW5kIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbmUgdG8gdW5kZXJzdGFuZC4KClRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gLCBpcyBjYWxsZWQgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgc28gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIGFyb3VuZCB0aGF0IHBhcnQuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBtb3JlIGNvbnRleHQgYXJvdW5kIHRoZSBmdW5jdGlvbiBjYWxscyBhcm91bmQgdGhpcyBjYWxsLiBJIHdpbGwgcHJvYmFibHkgd2FudCB0byBjaGVjayBgZW5ldGM0X3BmX3Byb2JlYCBhbmQgYGVuZXRjNF9wZl9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05YUF9FTkVUQzQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgICAmIzM0O2VuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAgICYjMzQ7ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9pbml0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlhQX0VORVRDNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24mIzM0OywKICAgICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgICAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydF9zaSYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzQuMzE1NTQ1MTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwODU3NjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlhQX0VORVRDNFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25cIixcbiAgICBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRcIixcbiAgICBcImVuZXRjNF9wZl9pbml0XCIsXG4gICAgXCJlbmV0YzRfcGZfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzQuMzE1NTUxNDQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1Nzg2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzA1MTk2ZDliYTQ0MTNkMGExZWRmNTA1ZWM2YjNlOGI2YTdiZWFhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUwOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xcbmluZGV4IDRlNzcxZjg1MjM1ODA0Li40MzdhMTViYmI0N2JhOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG5AQCAtMzIyLDYgKzMyMiw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0dmFsID0gZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QoZmFsc2UsIG51bV90eF9iZHIsIG51bV9yeF9iZHIpO1xcbiBcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XFxuIFxcbitcXHRpZiAoIXBmLVxcdTAwM2VjYXBzLm51bV92c2kpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdG51bV9yeF9iZHIgPSBwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3J4X2JkcjtcXG4gXFx0cnhfcmVtID0gbnVtX3J4X2JkciAlIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuIFxcdG51bV9yeF9iZHIgPSBudW1fcnhfYmRyIC8gcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzUuMDAwOTg1NThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDAwMzEwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5YUF9FTkVUQzRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uXCIsXG4gICAgXCJlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3NcIixcbiAgICBcImVuZXRjNF9jb25maWd1cmVfcG9ydF9zaVwiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0XCIsXG4gICAgXCJlbmV0YzRfcGZfaW5pdFwiLFxuICAgIFwiZW5ldGM0X3BmX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aXNpb24gYnkgemVybyBpbiBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgZHVyaW5nIHRoZSBQQ0kgcHJvYmUgb2YgdGhlIEZyZWVzY2FsZSBFTkVUQzQgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDcwNTE5NmQ5YmE0NDEzZDBhMWVkZjUwNWVjNmIzZThiNmE3YmVhYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUwOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0ZTc3MWY4NTIzNTgwNC4uNDM3YTE1YmJiNDdiYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTMyMiw2ICszMjIsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4rXHRpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4gXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuIFx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDozNS4wMDA5ODcwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODMxMzkwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYC4gSXQncyB0b3VjaGluZyB0aGUgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUgaGFzIGJlZW4gYWRkZWQ6IGBpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSkgcmV0dXJuO2AuIFNtYXJ0LCBwcmV2ZW50aW5nIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIGEgc2ltaWxhciBlZGdlIGNhc2UuIEl0J3MgZ29vZCB0byBzZWUgcHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nLlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGRyaXZlci4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY2Ag4oCTIGFoLCBpdCdzIGZvciB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBtZWFucyBpdCdzIGEgUENJZSBkZXZpY2UuIFRoaXMgcmFpc2VzIHNvbWUgaW1tZWRpYXRlIHF1ZXN0aW9ucy4gQ2FuIHRoaXMgYmUgZWFzaWx5IGZ1enplZCwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQQ0llIGRyaXZlcnMsIGJlaW5nIGhhcmR3YXJlLXNwZWNpZmljLCBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiBkaXJlY3RseSB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgd2VsbC1lbXVsYXRlZCBoYXJkd2FyZSBtb2RlbCBvciBhIG1vcmUgZ2VuZXJpYyBzdWJzeXN0ZW0uXG5cbkhvd2V2ZXIuLi4gd2FpdCwgc3l6a2FsbGVyLCB0aGUgc3lzdGVtIGNhbGwgZnV6emVyLCBoYXMgYSBQQ0kgZnV6emVyISBUaGF0J3MgYSBzaWduaWZpY2FudCBkZXZlbG9wbWVudC4gSXQgZG9lcyB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBnaXZlbiBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXM/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGlmIGl0J3MgdHJpZ2dlcmFibGUgdmlhIHRoZSBQQ0kgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6NDEuMzg0MTMwMTg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDcxNzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI5MT1zdGF0aWMgdTMyIGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KGJvb2wgaXNfdmYsIHUzMiBudW1fdHhfYmRyLCB1MzIgbnVtX3J4X2JkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjMwNTpzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTMwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzQ0PXN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzozNDY6XFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTM0Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjQxLjcwODg1NDc0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzI3MTY2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBvZiBTSSBSaW5ncyB3aXRoaW4gZW5ldGM0KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byBgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIFNwYXRpYWwgSW50ZXJmYWNlIChTSSkgcmluZ3MgYXJlIGJlaW5nIGFsbG9jYXRlZC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzIHdpdGhpbiB0aGlzIGRyaXZlciwgb3IgYXQgbGVhc3QgaG93IGl0J3MgaGFuZGxlZCBpbiBgZW5ldGM0YC4gSSB3YW50IHRvIGtub3cgd2hlcmUgdGhlIHBoeXNpY2FsIG1lbW9yeSBpcyBjb21pbmcgZnJvbSwgaG93IHRoZSBkZXNjcmlwdG9ycyBhcmUgc2V0IHVwIOKAkyBhcmUgdGhleSBjb250aWd1b3VzLCBmcmFnbWVudGVkLCB3aGF0J3MgdGhlIGFsbG9jYXRpb24gc3RyYXRlZ3k/IElzIHRoaXMgYWxsIGRvbmUgaW4gb25lIGJpZyBjaHVuaywgb3IgYXJlIHRoZXJlIGNsZXZlciB0cmlja3Mgd2l0aCBETUEgbWFwcGluZyBhbmQgY2FjaGluZyB0byBtYWtlIHRoaW5ncyBlZmZpY2llbnQ/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXRpbGl6YXRpb24uIEFyZSB3ZSBvcHRpbWl6aW5nIGZvciBsb3cgbGF0ZW5jeSBvciBoaWdoIHRocm91Z2hwdXQ/IERvZXMgdGhpcyBhbGxvY2F0aW9uIHN0cmF0ZWd5IGxlbmQgaXRzZWxmIHdlbGwgdG8gZGlmZmVyZW50IHRyYWZmaWMgcHJvZmlsZXMsIHN1Y2ggYXMgdGhvc2UgdXNlZCBmb3IgaVNDU0ksIG9yIHZpZGVvIHN0cmVhbWluZz8gSSdtIGFsc28gY3VyaW91cyB0byBzZWUgaWYgdGhlcmUncyBhbnkgc29waGlzdGljYXRlZCBlcnJvciBoYW5kbGluZyBpbiBwbGFjZSwgd2hhdCBoYXBwZW5zIGlmIHRoZSBhbGxvY2F0aW9uIGZhaWxzLCBpcyB0aGlzIGFsbCBncmFjZWZ1bCBvciBjYXRhc3Ryb3BoaWM/XG5cbkZyb20gYSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSwgSSdtIHRyeWluZyB0byB2aXN1YWxpemUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIEVORVRDNCdzIGludGVybmFsIGFyY2hpdGVjdHVyZS4gSG93IGRvZXMgdGhpcyByaW5nIGFsbG9jYXRpb24gbWFwIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkgcmVnaW9ucyB0aGUgZGV2aWNlIGNhbiBhY3R1YWxseSBhY2Nlc3M/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUsIERNQSBlbmdpbmVzLCBzY2F0dGVyLWdhdGhlciBsaXN0cz8gSSdtIGhvcGluZyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBsYXllciBhbGlnbnMgd2l0aCBhbmQgb3B0aW1pemVzIGZvciB0aGUgaGFyZHdhcmUncyBjYXBhYmlsaXRpZXMuIEl0J3MgcmVhbGx5IGFib3V0IHRoYXQgaGFybW9ueSBiZXR3ZWVuIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZW5ldGM0YCBpcyBwdXR0aW5nIHRoZSBkZXNjcmlwdG9yczsgYXJlIHRoZXkgaW4gYW4gYWNjZXNzaWJsZSByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5PyBBbHNvLCBob3cgaXMgdGhlIGRldmljZSBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZW0/XG5cbkknbSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljIHN0ZXAgYnkgc3RlcCwgbG9vayBmb3IgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMsIGFuZCBleGFtaW5lIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucyBjbG9zZWx5LiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGFyZSB3aXRoaW4gYGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo0Ni4yNDE1NzQxOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNzI1MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zMDU9c3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTM0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MzQ0OnN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQwNj1zdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQxMDpcXHRlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3MocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjQ2LjU5NDMxMTk2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzk5ODUzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipUcmFjaW5nIHRoZSBDb25maWd1cmF0aW9uIEZsb3c6IGBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaWAgZnVuY3Rpb24uIE15IGluaXRpYWwgYXBwcm9hY2ggaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgaXRzICpwbGFjZSogaW4gdGhlIGdyYW5kIHNjaGVtZS4gV2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBicm9hZGVyIEVORVRDNCBkcml2ZXIgYXJjaGl0ZWN0dXJlPyBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyB0aGUgY2FsbCBncmFwaCDigJMgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgdXBzdHJlYW0gZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGlzIG9uZSBhbmQgd2hhdCB0aGUgZG93bnN0cmVhbSBjYWxscyBhcmUuIElzIGl0IGNhbGxlZCBkdXJpbmcgaW5pdGlhbCBkZXZpY2Ugc2V0dXAsIGxpbmsgY2hhbmdlcywgb3IgcGVyaGFwcyBhcyBhIHJlc3BvbnNlIHRvIHNwZWNpZmljIGV2ZW50cz8gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIHRoZSBjb250cm9sIGZsb3cuXG5cbkkgZXhwZWN0IHRvIHNlZSBpdCBoYW5kbGUgcG9ydC1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgdGhlIFN5c3RlbSBJbnRlcmZhY2UgKFNJKS4gVGhhdCBtZWFucyBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgY29uZmlndXJpbmcgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBvcnQgc3BlZWQsIGR1cGxleCBzZXR0aW5ncywgVkxBTiBjb25maWd1cmF0aW9uLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcsIGFuZCBwb3NzaWJseSBmbG93IGNvbnRyb2wgcGFyYW1ldGVycyBmb3IgdGhlIHNwZWNpZmljIHBvcnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcGFzc2VkIHRvIGl0IOKAkyB0aGluZ3MgbGlrZSB0aGUgZGV2aWNlIGNvbnRleHQgKGBlbmV0YzRfcHJpdmApLCB0aGUgcG9ydCBpbmRleC9oYW5kbGUsIGFuZCB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gZGF0YS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgYml0cyBhbmQgcGllY2VzLlxuXG5HaXZlbiBteSBwcmlvciBleHBlcmllbmNlIHdpdGggdGhlc2Ugc29ydHMgb2YgZGV2aWNlIGRyaXZlcnMsIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VyaWVzIG9mIHJlZ2lzdGVyIHdyaXRlcyBhbmQgcG9zc2libHkgc29tZSByZWFkLW1vZGlmeS13cml0ZXMgdG8gZW5zdXJlIGF0b21pY2l0eS4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBlcnJvciBoYW5kbGluZy4gQXJlIHRoZXJlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJmYWNlIHNwZWVkIG9yIG9wZXJhdGluZyBtb2RlPyBIb3cgcm9idXN0IGlzIHRoZSBlcnJvciBkZXRlY3Rpb24gYW5kIHJlY292ZXJ5PyBBcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXM/IEknbSBhbHNvIGFudGljaXBhdGluZyBjaGVja2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBpdCdzIG9wZXJhdGluZyBvbiBzaGFyZWQgZGF0YS4gSSdsbCBiZSB3YXRjaGluZyBmb3IgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyBpbiBwbGF5IGhlcmUuXG5cbkZ1cnRoZXJtb3JlLCBJJ2xsIGJlIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gQXJlIHRoZXJlIGFueSBvcGVyYXRpb25zIHRoYXQgY291bGQgYmxvY2sgb3IgaW50cm9kdWNlIHNpZ25pZmljYW50IGxhdGVuY3k/IERvZXMgaXQgbGV2ZXJhZ2UgYW55IERNQSBvciBpbnRlcnJ1cHQgbWVjaGFuaXNtcyBmb3IgbW9yZSBlZmZpY2llbnQgZGF0YSB0cmFuc2ZlcnMsIHBhcnRpY3VsYXJseSBmb3IgdGhlIGxvbmdlciBjb25maWd1cmF0aW9uIHRhc2tzPyBBcmUgdGhlcmUgYW55IG9wdGltaXphdGlvbnMgZm9yIGJ1bGsgb3BlcmF0aW9ucyBvciBjb25maWd1cmF0aW9ucyB0byBtaW5pbWl6ZSB0aGUgb3ZlcmhlYWQ/XG5cbkZpbmFsbHksIEknbGwgYmUgY29tcGFyaW5nIHRoZSBjb2RlIHdpdGggdGhlIHJlbGV2YW50IGRhdGFzaGVldCBhbmQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEVORVRDNCBzaWxpY29uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG1hdGNoZXMgdGhlIGludGVuZGVkIGhhcmR3YXJlIGJlaGF2aW9yIGFuZCB0aGF0IG5vIGFzc3VtcHRpb25zIGFyZSBiZWluZyBtYWRlIHRoYXQgY29udHJhZGljdCB0aGUgaGFyZHdhcmUncyBkb2N1bWVudGVkIGZ1bmN0aW9uYWxpdHkuIEFueSBjb21tZW50cyB3b3VsZCBiZSByZWFsbHkgaGVscGZ1bCBpbiBwb2ludGluZyBtZSB0byB0aG9zZSBzZWN0aW9ucywgb3RoZXJ3aXNlLCBJIHdpbGwgYmUganVtcGluZyBpbiBhbmQgZ2V0dGluZyBmYW1pbGlhciB3aXRoIHRoZSBzaWxpY29uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6NTIuNDM0MzAwNjg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjMxODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzkyPXN0YXRpYyB2b2lkIGVuZXRjNF9lbmFibGVfYWxsX3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0MDY6c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NDQ2PXN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ5LVxcdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo1Mi42MTA2MjU1MTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM4MTQ3MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoZSBjb2RlIG15c2VsZjpcblxuKipUcmFjaW5nIGBlbmV0YzRfY29uZmlndXJlX3BvcnRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9jb25maWd1cmVfcG9ydGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIEVORVRDIChFdGhlcm5ldCBOZXR3b3JrIENvbnRyb2xsZXIpIGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgcHJvYmFibHkgaGFuZGxlcyB0aGUgcG9ydC1zcGVjaWZpYyBzZXR1cCwgYWZ0ZXIgdGhlIGNvcmUgRU5FVEMgY29udHJvbGxlciBoYXMgYmVlbiBpbml0aWFsaXplZC4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHdoZXJlIHdlJ3JlIG1hcHBpbmcgcmVnaXN0ZXJzLCBzZXR0aW5nIHVwIGludGVycnVwdCBsaW5lcywgYW5kIGNvbmZpZ3VyaW5nIHRoZSB2YXJpb3VzIHF1ZXVlcyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHdlIG1ha2UgdGhlIGFic3RyYWN0IGNvbnRyb2xsZXIgcmVsZXZhbnQgdG8gYSBwYXJ0aWN1bGFyICpwb3J0KiBvciBwaHlzaWNhbCBpbnRlcmZhY2UuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGxpa2VseSB0YWtlcyBhcyBhcmd1bWVudHMuIEknbSBhc3N1bWluZyB3ZSdsbCBnZXQgYSBwb2ludGVyIHRvIHRoZSBFTkVUQyBkZXZpY2Ugc3RydWN0dXJlLCB3aGljaCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSwgYW5kIHRoZW4gbGlrZWx5IGEgcG9pbnRlciB0byBhIHBvcnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgc2V0dGluZ3Mgd2Ugd2FudCB0byBhcHBseSB0byB0aGlzIGludGVyZmFjZS4gSXQncyBwcm9iYWJseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIG9yIHdyaXRlcyB0byBnZXQgdGhhdCBwb3J0IHVwIGFuZCBydW5uaW5nLlxuXG5JIHdhbnQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgaG93IGl0IGhhbmRsZXMgdGhlIGRpZmZlcmVudCBzcGVlZCBhbmQgZHVwbGV4IGNvbmZpZ3VyYXRpb25zLiBJcyB0aGlzIGZ1bmN0aW9uIHVzaW5nIGEgc2VyaWVzIG9mIGJpdCBtYW5pcHVsYXRpb25zIHdpdGhpbiBjZXJ0YWluIHJlZ2lzdGVycz8gT3IgaXMgaXQgZW1wbG95aW5nIHNvbWUgc29ydCBvZiBhZHZhbmNlZCBjb25maWd1cmF0aW9uIGludGVyZmFjZSAobGlrZSBzb21lIG5ld2VyIGNvbnRyb2xsZXJzIHVzZSk/IEkgZXhwZWN0IHRvIHNlZSBjaGVja3Mgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgbGF5ZXIgY29ubmVjdGlvbuKAlCB0aGluZ3MgbGlrZSBhdXRvbmVnb3RpYXRpb24sIE1BQyBhZGRyZXNzIGNvbmZpZ3VyYXRpb24sIGFuZCBwb3NzaWJseSBmbG93IGNvbnRyb2wgc2V0dXAuXG5cbkJleW9uZCB0aGUgYmFzaWMgaW5pdGlhbGl6YXRpb24sIGl0J3MgYWxzbyB3b3J0aCBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgYW5kIG90aGVyIGFkdmFuY2VkIEV0aGVybmV0IGZlYXR1cmVzLiBJcyBpdCB1c2luZyBoYXJkd2FyZSBvZmZsb2FkIGZvciB0aGVzZSBmdW5jdGlvbnM/IERvZXMgdGhlIGNvZGUgcmVseSBvbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjayBmb3IgdGhlc2UgZGV0YWlscyBvciBkb2VzIGl0IG1hbmFnZSB0aGVtIGluIGhhcmR3YXJlP1xuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmFpbHM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXRyeSBtZWNoYW5pc21zPyBUaGlzIGlzIGNyaXRpY2FsIGZvciByb2J1c3QgZHJpdmVyIG9wZXJhdGlvbi4gSSBuZWVkIHRvIG5vdGUgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGhpcyBhcmVhLlxuXG5VbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgc2VxdWVuY2U6IGhvdyB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGRhdGEgaXQgbmVlZHMgdG8gd29yaywgd2hhdCByZWdpc3RlcnMgaXQgbW9kaWZpZXMsIGFuZCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHBvcnQgYWZ0ZXIgaXQgaGFzIGNvbXBsZXRlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdG8gY29uZmlndXJlIG9yIGRlYnVnIGEgc3BlY2lmaWMgcG9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjU3LjA0ODc3NjA4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0NzM1Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjNF9jb25maWd1cmVfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zOTI9c3RhdGljIHZvaWQgZW5ldGM0X2VuYWJsZV9hbGxfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQwNjpzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00MzY9c3RhdGljIHZvaWQgZW5ldGM0X3NldF90cnhfZnJhbWVfc2l6ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDQ2OnN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ5LVxcdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQ2OD1zdGF0aWMgaW50IGVuZXRjNF9wZl9pbml0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0ODY6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo1Ny4zMTM1MTc2MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzNjgzMjYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgdHJhY2luZyBgZW5ldGM0X3BmX2luaXRgOlxuXG4qKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBFTkVUQzQgUGh5c2ljYWwgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgZW5ldGM0X3BmX2luaXRgIGZ1bmN0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgYSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIFBoeXNpY2FsIEZ1bmN0aW9uIChQRikgb2YgdGhlIEVORVRDNCBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyLiBHaXZlbiB0aGUgXCJQRlwiIGRlc2lnbmF0aW9uLCBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBjb3JlIHNldHVwIHJlcXVpcmVkIGZvciB0aGUgZGV2aWNlIHRvIGJlIHJlY29nbml6ZWQsIHByb2JlZCwgYW5kIGdlbmVyYWxseSBicm91Z2h0IG9ubGluZSB3aXRoaW4gdGhlIHN5c3RlbS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gbG9vayBmb3Iga2V5IGFyZWFzOlxuXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIFdoYXQgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdCBsaW5lcywgYW5kIG90aGVyIHN5c3RlbSByZXNvdXJjZXMgaXMgdGhpcyBmdW5jdGlvbiBjbGFpbWluZyBmb3IgdGhlIFBGPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYXBzIHRoZSBkZXZpY2UgaW50byB0aGUgc3lzdGVtLiBBcmUgd2UgZGVhbGluZyB3aXRoIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLCBtZW1vcnktbWFwcGVkIEkvTywgb3IgaW50ZXJydXB0IGhhbmRsaW5nP1xuKiAgICoqSGFyZHdhcmUgSW5pdGlhbGl6YXRpb246KiogV2hhdCBsb3ctbGV2ZWwgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkPyBBcmUgd2Ugc2V0dGluZyB1cCBjbG9ja3MsIGVuYWJsaW5nIGNlcnRhaW4gZmVhdHVyZXMsIG9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2UncyBiYXNlIHN0YXRlPyBJ4oCZbGwgYmUgd2F0Y2hpbmcgZm9yIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgdGhhdCBlc3RhYmxpc2ggdGhlIGRldmljZSdzIG9wZXJhdGlvbmFsIG1vZGUuXG4qICAgKipEcml2ZXIgU3RydWN0dXJlIFNldHVwOioqIEhvdyBpcyB0aGlzIGZ1bmN0aW9uIGludGVncmF0aW5nIHdpdGggdGhlIGV4aXN0aW5nIG5ldHdvcmsgZHJpdmVyIGZyYW1ld29yaz8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBvcHVsYXRlZCAoZS5nLiwgbmV0XFxfZGV2aWNlIHN0cnVjdHVyZSwgRU5FVEMtc3BlY2lmaWMgc3RydWN0cykgYW5kIGhvdyBhcmUgdGhleSBiZWluZyBsaW5rZWQ/IFRoaXMgZ2l2ZXMgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCdzIHRoZSBlcnJvciBjaGVja2luZyBsaWtlPyBEb2VzIHRoaXMgZnVuY3Rpb24gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9ycyBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgcmV0cmllcyBvciBmYWxsYmFjayBtZWNoYW5pc21zIGluIHBsYWNlP1xuKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIERvZXMgdGhpcyBmdW5jdGlvbiByZWdpc3RlciBpbnRlcnJ1cHQgaGFuZGxlcnM/IElmIHNvLCB3aGF0IGludGVycnVwdCBsaW5lcyBpcyBpdCB1c2luZywgYW5kIHdoaWNoIGZ1bmN0aW9ucyBhcmUgaGFuZGxpbmcgdGhlIGludGVycnVwdHM/IEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gcmVzcG9uZHMgdG8gZGV2aWNlIGV2ZW50cy5cbiogICAqKkZ1bmN0aW9uIENhbGxzOioqIElzIHRoZXJlIGFueXRoaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBjYWxscywgb3IgdGhhdCBjYWxscyB0aGlzIGZ1bmN0aW9uPyBUaGUgZnVuY3Rpb24gY2FsbCBoaWVyYXJjaHkgdGVsbHMgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2NvcGUgb2YgdGhlIFBGIGluaXRpYWxpemF0aW9uLlxuXG5VbHRpbWF0ZWx5LCBJIGV4cGVjdCB0byBzZWUgYSBjYXJlZnVsbHkgb3JjaGVzdHJhdGVkIHNlcXVlbmNlIHRoYXQgdHJhbnNpdGlvbnMgdGhlIEVORVRDNCBQRiBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUgdG8gYSByZWFkeS10by11c2UgbmV0d29yayBpbnRlcmZhY2UuIEkgd2lsbCBjYXJlZnVsbHkgdHJhY2UgZWFjaCBmdW5jdGlvbiBjYWxsLCBtZW1vcnkgYWNjZXNzLCBhbmQgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIHRvIGdyYXNwIHRoZSBjb3JlIGRldGFpbHMgb2YgdGhlIHNldHVwIGFuZCBnYWluIGEgZGV0YWlsZWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGV2aWNlIGRyaXZlcidzIHBlcnNwZWN0aXZlIG9uIGluaXRpYWxpemluZyB0aGUgRU5FVEM0IFBGLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDEuNzUwMzU1MDAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc1NDMyNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5ldGM0X3BmX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NDYzPXN0YXRpYyB2b2lkIGVuZXRjNF9mcmVlX250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDY4OnN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0xMTExPXN0YXRpYyBpbnQgZW5ldGM0X3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDQtXFx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MTE0NTpcXHRlcnIgPSBlbmV0YzRfcGZfaW5pdChwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDEuOTA3OTA2MTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODIxOTMwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipQQ0kgUHJvYmUgQ29udGV4dCBhbmQgS2NvbmZpZyBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHRoaW5nIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBlbmV0YzRfcGZfcHJvYmVgLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgaXQncyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gQW5kIHRoZSByZWFsIGtpY2tlcj8gVGhpcyBlbnRyeSBwb2ludCBpcyByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZywgd2hpY2ggaGFzIHNlcmlvdXMgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBLY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBhc3Nlc3NtZW50LiBJdCdsbCByZXZlYWwgaG93IHRoZSBkcml2ZXIgaXMgZW5hYmxlZCwgd2hpY2ggaW4gdHVybiBpbmZvcm1zIGhvdyByZWFkaWx5IGEgZnV6emVyIGNhbiByZWFjaCB0aGlzIGVudHJ5IHBvaW50LiBPbmNlIEkgZmluZCBpdCwgSSBjYW4gdGhlbiBjb25zaWRlciBpdHMgaW1wbGljYXRpb25zIGZvciBhIHRhcmdldGVkIFBDSSBGdXp6LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDUuMjkwMTAyOTI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxNTk1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5ldGM0X3BmLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX05YUF9FTkVUQzQpICs9IG54cC1lbmV0YzQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9NYWtlZmlsZToxODpueHAtZW5ldGM0LXkgOj0gZW5ldGM0X3BmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvTWFrZWZpbGUtMTktbnhwLWVuZXRjNC0kKENPTkZJR19ERUJVR19GUykgKz0gZW5ldGM0X2RlYnVnZnMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI1Mz1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMjczLVxcdC5zZXRfc2lfcHJpbWFyeV9tYWMgPSBlbmV0YzRfcGZfc2V0X3NpX3ByaW1hcnlfbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI3Nz1zdGF0aWMgaW50IGVuZXRjNF9wZl9zdHJ1Y3RfaW5pdChzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4Mi1cXHRwZi1cXHUwMDNldG90YWxfdmZzID0gcGNpX3NyaW92X2dldF90b3RhbHZmcyhzaS1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjI4MzpcXHRwZi1cXHUwMDNlb3BzID0gXFx1MDAyNmVuZXRjNF9wZl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDUuNDEyMjcxNjMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDMwMjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEVORVRDNCBLY29uZmlnIE9wdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJJ3ZlIGdvdCB0byBkZWFsIHdpdGggYENPTkZJR19OWFBfRU5FVEM0YC4gTXkgZmlyc3QgbW92ZSBpcyBvYnZpb3VzOyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSBhcHByb3ByaWF0ZSBmaWxlIGFuZCBxdWlja2x5IHNjYW5uaW5nIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGhhcy4gQXJlIHRoZXJlIGFueSBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIGBDT05GSUdfTlhQX0VORVRDNGAgdG8gZXZlbiBzaG93IHVwLCBvciB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEl0J3MgdGhlIHN0YW5kYXJkIGZpcnN0IHN0ZXAgLSBmaWd1cmUgb3V0IHRoZSBwcmVyZXF1aXNpdGVzIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBnZXR0aW5nIGxvc3QgaW4gdGhlIGRldGFpbHMgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTowOC43NTUzMDM0NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzA4ODM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlhQX0VORVRDNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjQ4OmNvbmZpZyBOWFBfRU5FVEM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkVORVRDNCBQRiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjA4Ljk3MjQwMTU1NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk1NTM0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOlxuXG4qKkV4YW1pbmluZyB0aGUgRU5FVEMgS2NvbmZpZyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ4LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmUgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVORVRDIChFbmhhbmNlZCBOZXR3b3JrIEV0aGVybmV0IENvbnRyb2xsZXIpIGRyaXZlci4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBjdXN0b21pemluZyB0aGUgRU5FVEMncyBiZWhhdmlvciBpbiB0aGUga2VybmVsIGJ1aWxkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzZXR0aW5ncywgYW55dGhpbmcgcmVsYXRlZCB0byBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydCwgaGFyZHdhcmUgb2ZmbG9hZGluZyBjYXBhYmlsaXRpZXMsIGRpZmZlcmVudCBQSFkgY29uZmlndXJhdGlvbnMsIG9yIHBlcmhhcHMgZXZlbiBwb3dlciBtYW5hZ2VtZW50IGNvbnRyb2xzLiBUaGlzIHNlY3Rpb24gcHJvYmFibHkgZGVmaW5lcyB3aGF0IGZlYXR1cmVzIGFyZSBidWlsdC1pbiwgbW9kdWxhcml6ZWQsIG9yIGNvbXBsZXRlbHkgZGlzYWJsZWQuIEknbSBob3BpbmcgaXQncyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgY2xlYXIgb3B0aW9uIGRlc2NyaXB0aW9ucy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBrbm9icyBmb3IgdGhpcyBkcml2ZXIgc28gSSB1bmRlcnN0YW5kIGhvdyB0byB0dW5lIGl0IGZvciBhIHBhcnRpY3VsYXIgZW1iZWRkZWQgc3lzdGVtIG9yIG5ldHdvcmsgYXBwbGlhbmNlIEknbSB3b3JraW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MTIuNjY3OTM5ODg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHRzZWxlY3QgRElNTElCXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE5YUCBFTkVUQyBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXIgUENJZVxcbiAgNDM6XFx0XFx0ICBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGRldmljZXMsIG1hbmFnaW5nIEVORVRDIFBvcnRzIGF0IGEgcHJpdmlsZWdlZFxcbiAgNDQ6XFx0XFx0ICBsZXZlbC5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBJZiBjb21waWxlZCBhcyBtb2R1bGUgKE0pLCB0aGUgbW9kdWxlIG5hbWUgaXMgZnNsLWVuZXRjLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRjb25maWcgTlhQX0VORVRDNFxcbiAgNDk6XFx0XFx0dHJpc3RhdGUgXFxcIkVORVRDNCBQRiBkcml2ZXJcXFwiXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDUyOlxcdFxcdHNlbGVjdCBGU0xfRU5FVENfQ09SRVxcbiAgNTM6XFx0XFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuICA1NDpcXHRcXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxcbiAgNTU6XFx0XFx0c2VsZWN0IE5YUF9OVE1QXFxuICA1NjpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgNTc6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiAgNTg6XFx0XFx0aGVscFxcbiAgNTk6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBOWFAgRU5FVEMgZGV2aWNlcyB3aXRoIG1ham9yIHJldmlzaW9uIDQuIEVORVRDIGlzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjEyLjY2ODA2OTU0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU0NjU1ODE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkFuYWx5emluZyB0aGUgRU5FVEM0IERyaXZlciBGaXgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IHJlbGF0ZWQgdG8gdGhlIGBOWFBfRU5FVEM0YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGVyZSdzIGEgcGF0Y2ggYWRkcmVzc2luZyBhIGRpdmlzaW9uLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoZSBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGlzc3VlIGFyaXNlcyB3aGVuIGBwZi1cdTAwM2VjYXBzLm51bV92c2lgIGlzIHplcm8sIHdoaWNoIGxpa2VseSBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBwcm9iaW5nLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBidWcsIGFuZCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb25lIHRvIHVuZGVyc3RhbmQuXG5cblRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gLCBpcyBjYWxsZWQgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgc28gSSdsbCB3YW50IHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gYXJvdW5kIHRoYXQgcGFydC4gVGhlIGNvZGUgbWVudGlvbnMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgcHJvYmUsIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIG1vcmUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGNhbGxzIGFyb3VuZCB0aGlzIGNhbGwuIEkgd2lsbCBwcm9iYWJseSB3YW50IHRvIGNoZWNrIGBlbmV0YzRfcGZfcHJvYmVgIGFuZCBgZW5ldGM0X3BmX2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjIzLjIxNDYzMDkxMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjY1NzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlhQX0VORVRDNFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25cIixcbiAgICBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRcIixcbiAgICBcImVuZXRjNF9wZl9pbml0XCIsXG4gICAgXCJlbmV0YzRfcGZfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOWFBfRU5FVEM0XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvblwiLFxuICAgIFwiZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lcIixcbiAgICBcImVuZXRjNF9jb25maWd1cmVfcG9ydFwiLFxuICAgIFwiZW5ldGM0X3BmX2luaXRcIixcbiAgICBcImVuZXRjNF9wZl9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 07:36:56 +0000 UTC FinishedAt: 2026-06-24 07:51:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NXP_ENETC4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NXP_ENETC4" ], "series_id": "dce3339c-ece0-43ba-874b-2bb03d0d5ac8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "enetc4_default_rings_allocation", "enetc4_allocate_si_rings", "enetc4_configure_port_si", "enetc4_configure_port", "enetc4_pf_init", "enetc4_pf_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05YUF9FTkVUQzQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgICAmIzM0O2VuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAgICYjMzQ7ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9pbml0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3MDUxOTZkOWJhNDQxM2QwYTFlZGY1MDVlYzZiM2U4YjZhN2JlYWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MDozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDRlNzcxZjg1MjM1ODA0Li40MzdhMTViYmI0N2JhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5AQCAtMzIyLDYgJiM0MzszMjIsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4mIzQzO1x0aWYgKCFwZi1cdTAwM2VjYXBzLm51bV92c2kpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4gXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuIFx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlhQX0VORVRDNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24mIzM0OywKICAgICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgICAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydF9zaSYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzA1MTk2ZDliYTQ0MTNkMGExZWRmNTA1ZWM2YjNlOGI2YTdiZWFhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDc6NTA6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKaW5kZXggNGU3NzFmODUyMzU4MDQuLjQzN2ExNWJiYjQ3YmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jCkBAIC0zMjIsNiAmIzQzOzMyMiw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZikKIAl2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7CiAJZW5ldGNfcG9ydF93cihodywgRU5FVEM0X1BTSUNGR1IwKDApLCB2YWwpOwogCiYjNDM7CWlmICghcGYtJmd0O2NhcHMubnVtX3ZzaSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAludW1fcnhfYmRyID0gcGYtJmd0O2NhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7CiAJcnhfcmVtID0gbnVtX3J4X2JkciAlIHBmLSZndDtjYXBzLm51bV92c2k7CiAJbnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi0mZ3Q7Y2Fwcy5udW1fdnNpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYC4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlIGhhcyBiZWVuIGFkZGVkOiBgaWYgKCFwZi0mZ3Q7Y2Fwcy5udW1fdnNpKSByZXR1cm47YC4gU21hcnQsIHByZXZlbnRpbmcgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3IgYSBzaW1pbGFyIGVkZ2UgY2FzZS4gSXQmIzM5O3MgZ29vZCB0byBzZWUgcHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgZHJpdmVyLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYCDigJMgYWgsIGl0JiMzOTtzIGZvciB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIFBDSWUgZGV2aWNlLiBUaGlzIHJhaXNlcyBzb21lIGltbWVkaWF0ZSBxdWVzdGlvbnMuIENhbiB0aGlzIGJlIGVhc2lseSBmdXp6ZWQsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUENJZSBkcml2ZXJzLCBiZWluZyBoYXJkd2FyZS1zcGVjaWZpYywgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkgdW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSB3ZWxsLWVtdWxhdGVkIGhhcmR3YXJlIG1vZGVsIG9yIGEgbW9yZSBnZW5lcmljIHN1YnN5c3RlbS4KCkhvd2V2ZXIuLi4gd2FpdCwgc3l6a2FsbGVyLCB0aGUgc3lzdGVtIGNhbGwgZnV6emVyLCBoYXMgYSBQQ0kgZnV6emVyISBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgZGV2ZWxvcG1lbnQuIEl0IGRvZXMgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBtZW1vcnktbWFwcGVkIEkvTywgd2hpY2ggb3BlbnMgdXAgdGhlIHBvc3NpYmlsaXR5IG9mIGZ1enppbmcgdGhpcy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgZ2l2ZW4gc3l6a2FsbGVyJiMzOTtzIGNhcGFiaWxpdGllcz8gVGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGlmIGl0JiMzOTtzIHRyaWdnZXJhYmxlIHZpYSB0aGUgUENJIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MjkxPXN0YXRpYyB1MzIgZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QoYm9vbCBpc192ZiwgdTMyIG51bV90eF9iZHIsIHUzMiBudW1fcnhfYmRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MzA1OnN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zNDQ9c3RhdGljIHZvaWQgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzozNDY6XHRlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuCgoqKlRyYWNpbmcgdGhlIEFsbG9jYXRpb24gb2YgU0kgUmluZ3Mgd2l0aGluIGVuZXRjNCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIFNwYXRpYWwgSW50ZXJmYWNlIChTSSkgcmluZ3MgYXJlIGJlaW5nIGFsbG9jYXRlZC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzIHdpdGhpbiB0aGlzIGRyaXZlciwgb3IgYXQgbGVhc3QgaG93IGl0JiMzOTtzIGhhbmRsZWQgaW4gYGVuZXRjNGAuIEkgd2FudCB0byBrbm93IHdoZXJlIHRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgY29taW5nIGZyb20sIGhvdyB0aGUgZGVzY3JpcHRvcnMgYXJlIHNldCB1cCDigJMgYXJlIHRoZXkgY29udGlndW91cywgZnJhZ21lbnRlZCwgd2hhdCYjMzk7cyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneT8gSXMgdGhpcyBhbGwgZG9uZSBpbiBvbmUgYmlnIGNodW5rLCBvciBhcmUgdGhlcmUgY2xldmVyIHRyaWNrcyB3aXRoIERNQSBtYXBwaW5nIGFuZCBjYWNoaW5nIHRvIG1ha2UgdGhpbmdzIGVmZmljaWVudD8KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHV0aWxpemF0aW9uLiBBcmUgd2Ugb3B0aW1pemluZyBmb3IgbG93IGxhdGVuY3kgb3IgaGlnaCB0aHJvdWdocHV0PyBEb2VzIHRoaXMgYWxsb2NhdGlvbiBzdHJhdGVneSBsZW5kIGl0c2VsZiB3ZWxsIHRvIGRpZmZlcmVudCB0cmFmZmljIHByb2ZpbGVzLCBzdWNoIGFzIHRob3NlIHVzZWQgZm9yIGlTQ1NJLCBvciB2aWRlbyBzdHJlYW1pbmc/IEkmIzM5O20gYWxzbyBjdXJpb3VzIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc29waGlzdGljYXRlZCBlcnJvciBoYW5kbGluZyBpbiBwbGFjZSwgd2hhdCBoYXBwZW5zIGlmIHRoZSBhbGxvY2F0aW9uIGZhaWxzLCBpcyB0aGlzIGFsbCBncmFjZWZ1bCBvciBjYXRhc3Ryb3BoaWM/CgpGcm9tIGEgaGFyZHdhcmUgcGVyc3BlY3RpdmUsIEkmIzM5O20gdHJ5aW5nIHRvIHZpc3VhbGl6ZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgRU5FVEM0JiMzOTtzIGludGVybmFsIGFyY2hpdGVjdHVyZS4gSG93IGRvZXMgdGhpcyByaW5nIGFsbG9jYXRpb24gbWFwIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkgcmVnaW9ucyB0aGUgZGV2aWNlIGNhbiBhY3R1YWxseSBhY2Nlc3M/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUsIERNQSBlbmdpbmVzLCBzY2F0dGVyLWdhdGhlciBsaXN0cz8gSSYjMzk7bSBob3BpbmcgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgbGF5ZXIgYWxpZ25zIHdpdGggYW5kIG9wdGltaXplcyBmb3IgdGhlIGhhcmR3YXJlJiMzOTtzIGNhcGFiaWxpdGllcy4gSXQmIzM5O3MgcmVhbGx5IGFib3V0IHRoYXQgaGFybW9ueSBiZXR3ZWVuIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZW5ldGM0YCBpcyBwdXR0aW5nIHRoZSBkZXNjcmlwdG9yczsgYXJlIHRoZXkgaW4gYW4gYWNjZXNzaWJsZSByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5PyBBbHNvLCBob3cgaXMgdGhlIGRldmljZSBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZW0/CgpJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgbG9naWMgc3RlcCBieSBzdGVwLCBsb29rIGZvciBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucywgYW5kIGV4YW1pbmUgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zIGNsb3NlbHkuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGFyZSB3aXRoaW4gYGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzA1PXN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMzQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjM0NDpzdGF0aWMgdm9pZCBlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3Moc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00MDY9c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0MTA6XHRlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3MocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdzogYGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGFwcHJvYWNoIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyAqcGxhY2UqIGluIHRoZSBncmFuZCBzY2hlbWUuIFdoZXJlIGRvZXMgaXQgZml0IHdpdGhpbiB0aGUgYnJvYWRlciBFTkVUQzQgZHJpdmVyIGFyY2hpdGVjdHVyZT8gSSYjMzk7bSBhbHJlYWR5IHZpc3VhbGl6aW5nIHRoZSBjYWxsIGdyYXBoIOKAkyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMgdGhhdCBjYWxsIHRoaXMgb25lIGFuZCB3aGF0IHRoZSBkb3duc3RyZWFtIGNhbGxzIGFyZS4gSXMgaXQgY2FsbGVkIGR1cmluZyBpbml0aWFsIGRldmljZSBzZXR1cCwgbGluayBjaGFuZ2VzLCBvciBwZXJoYXBzIGFzIGEgcmVzcG9uc2UgdG8gc3BlY2lmaWMgZXZlbnRzPyBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBtYXAgdGhlIGNvbnRyb2wgZmxvdy4KCkkgZXhwZWN0IHRvIHNlZSBpdCBoYW5kbGUgcG9ydC1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgdGhlIFN5c3RlbSBJbnRlcmZhY2UgKFNJKS4gVGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgcmVsYXRlZCB0byB0aGluZ3MgbGlrZSBwb3J0IHNwZWVkLCBkdXBsZXggc2V0dGluZ3MsIFZMQU4gY29uZmlndXJhdGlvbiwgTUFDIGFkZHJlc3MgZmlsdGVyaW5nLCBhbmQgcG9zc2libHkgZmxvdyBjb250cm9sIHBhcmFtZXRlcnMgZm9yIHRoZSBzcGVjaWZpYyBwb3J0LiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gaXQg4oCTIHRoaW5ncyBsaWtlIHRoZSBkZXZpY2UgY29udGV4dCAoYGVuZXRjNF9wcml2YCksIHRoZSBwb3J0IGluZGV4L2hhbmRsZSwgYW5kIHRoZSBhY3R1YWwgY29uZmlndXJhdGlvbiBkYXRhLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgYml0cyBhbmQgcGllY2VzLgoKR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGRldmljZSBkcml2ZXJzLCBJIGFudGljaXBhdGUgdGhlcmUgd2lsbCBiZSBhIHNlcmllcyBvZiByZWdpc3RlciB3cml0ZXMgYW5kIHBvc3NpYmx5IHNvbWUgcmVhZC1tb2RpZnktd3JpdGVzIHRvIGVuc3VyZSBhdG9taWNpdHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBhbnkgY29uZGl0aW9uYWwgbG9naWMgYW5kIGVycm9yIGhhbmRsaW5nLiBBcmUgdGhlcmUgZGlmZmVyZW50IGNvZGUgcGF0aHMgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2Ugc3BlZWQgb3Igb3BlcmF0aW5nIG1vZGU/IEhvdyByb2J1c3QgaXMgdGhlIGVycm9yIGRldGVjdGlvbiBhbmQgcmVjb3Zlcnk/IEFyZSB0aGVyZSBhbnkgcmV0cnkgbWVjaGFuaXNtcz8gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBjaGVja2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBvcGVyYXRpbmcgb24gc2hhcmVkIGRhdGEuIEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgbG9ja2luZyBtZWNoYW5pc21zIGluIHBsYXkgaGVyZS4KCkZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBiZSBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIEFyZSB0aGVyZSBhbnkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIG9yIGludHJvZHVjZSBzaWduaWZpY2FudCBsYXRlbmN5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBETUEgb3IgaW50ZXJydXB0IG1lY2hhbmlzbXMgZm9yIG1vcmUgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXJzLCBwYXJ0aWN1bGFybHkgZm9yIHRoZSBsb25nZXIgY29uZmlndXJhdGlvbiB0YXNrcz8gQXJlIHRoZXJlIGFueSBvcHRpbWl6YXRpb25zIGZvciBidWxrIG9wZXJhdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgdG8gbWluaW1pemUgdGhlIG92ZXJoZWFkPwoKRmluYWxseSwgSSYjMzk7bGwgYmUgY29tcGFyaW5nIHRoZSBjb2RlIHdpdGggdGhlIHJlbGV2YW50IGRhdGFzaGVldCBhbmQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEVORVRDNCBzaWxpY29uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG1hdGNoZXMgdGhlIGludGVuZGVkIGhhcmR3YXJlIGJlaGF2aW9yIGFuZCB0aGF0IG5vIGFzc3VtcHRpb25zIGFyZSBiZWluZyBtYWRlIHRoYXQgY29udHJhZGljdCB0aGUgaGFyZHdhcmUmIzM5O3MgZG9jdW1lbnRlZCBmdW5jdGlvbmFsaXR5LiBBbnkgY29tbWVudHMgd291bGQgYmUgcmVhbGx5IGhlbHBmdWwgaW4gcG9pbnRpbmcgbWUgdG8gdGhvc2Ugc2VjdGlvbnMsIG90aGVyd2lzZSwgSSB3aWxsIGJlIGp1bXBpbmcgaW4gYW5kIGdldHRpbmcgZmFtaWxpYXIgd2l0aCB0aGUgc2lsaWNvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zOTI9c3RhdGljIHZvaWQgZW5ldGM0X2VuYWJsZV9hbGxfc2koc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQwNjpzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00NDY9c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XHRlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0OS1cdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhlIGNvZGUgbXlzZWxmOgoKKipUcmFjaW5nIGBlbmV0YzRfY29uZmlndXJlX3BvcnRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgRU5FVEMgKEV0aGVybmV0IE5ldHdvcmsgQ29udHJvbGxlcikgZHJpdmVyIGZyYW1ld29yay4gVGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBwb3J0LXNwZWNpZmljIHNldHVwLCBhZnRlciB0aGUgY29yZSBFTkVUQyBjb250cm9sbGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHdoZXJlIHdlJiMzOTtyZSBtYXBwaW5nIHJlZ2lzdGVycywgc2V0dGluZyB1cCBpbnRlcnJ1cHQgbGluZXMsIGFuZCBjb25maWd1cmluZyB0aGUgdmFyaW91cyBxdWV1ZXMgZm9yIHRyYW5zbWl0IGFuZCByZWNlaXZlLiBJdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgd2UgbWFrZSB0aGUgYWJzdHJhY3QgY29udHJvbGxlciByZWxldmFudCB0byBhIHBhcnRpY3VsYXIgKnBvcnQqIG9yIHBoeXNpY2FsIGludGVyZmFjZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGxpa2VseSB0YWtlcyBhcyBhcmd1bWVudHMuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O2xsIGdldCBhIHBvaW50ZXIgdG8gdGhlIEVORVRDIGRldmljZSBzdHJ1Y3R1cmUsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlLCBhbmQgdGhlbiBsaWtlbHkgYSBwb2ludGVyIHRvIGEgcG9ydC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBzZXR0aW5ncyB3ZSB3YW50IHRvIGFwcGx5IHRvIHRoaXMgaW50ZXJmYWNlLiBJdCYjMzk7cyBwcm9iYWJseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIG9yIHdyaXRlcyB0byBnZXQgdGhhdCBwb3J0IHVwIGFuZCBydW5uaW5nLgoKSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIGFib3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgc3BlZWQgYW5kIGR1cGxleCBjb25maWd1cmF0aW9ucy4gSXMgdGhpcyBmdW5jdGlvbiB1c2luZyBhIHNlcmllcyBvZiBiaXQgbWFuaXB1bGF0aW9ucyB3aXRoaW4gY2VydGFpbiByZWdpc3RlcnM/IE9yIGlzIGl0IGVtcGxveWluZyBzb21lIHNvcnQgb2YgYWR2YW5jZWQgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgKGxpa2Ugc29tZSBuZXdlciBjb250cm9sbGVycyB1c2UpPyBJIGV4cGVjdCB0byBzZWUgY2hlY2tzIG9yIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIGxheWVyIGNvbm5lY3Rpb27igJQgdGhpbmdzIGxpa2UgYXV0b25lZ290aWF0aW9uLCBNQUMgYWRkcmVzcyBjb25maWd1cmF0aW9uLCBhbmQgcG9zc2libHkgZmxvdyBjb250cm9sIHNldHVwLgoKQmV5b25kIHRoZSBiYXNpYyBpbml0aWFsaXphdGlvbiwgaXQmIzM5O3MgYWxzbyB3b3J0aCBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgYW5kIG90aGVyIGFkdmFuY2VkIEV0aGVybmV0IGZlYXR1cmVzLiBJcyBpdCB1c2luZyBoYXJkd2FyZSBvZmZsb2FkIGZvciB0aGVzZSBmdW5jdGlvbnM/IERvZXMgdGhlIGNvZGUgcmVseSBvbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2sgZm9yIHRoZXNlIGRldGFpbHMgb3IgZG9lcyBpdCBtYW5hZ2UgdGhlbSBpbiBoYXJkd2FyZT8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmFpbHM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXRyeSBtZWNoYW5pc21zPyBUaGlzIGlzIGNyaXRpY2FsIGZvciByb2J1c3QgZHJpdmVyIG9wZXJhdGlvbi4gSSBuZWVkIHRvIG5vdGUgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGhpcyBhcmVhLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHNlcXVlbmNlOiBob3cgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2hhdCBkYXRhIGl0IG5lZWRzIHRvIHdvcmssIHdoYXQgcmVnaXN0ZXJzIGl0IG1vZGlmaWVzLCBhbmQgdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSBwb3J0IGFmdGVyIGl0IGhhcyBjb21wbGV0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSBvciBkZWJ1ZyBhIHNwZWNpZmljIHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTM5Mj1zdGF0aWMgdm9pZCBlbmV0YzRfZW5hYmxlX2FsbF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDA2OnN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQzNj1zdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3RyeF9mcmFtZV9zaXplKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDY6c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XHRlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0OS1cdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00Njg9c3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDg2Olx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00ODctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHRyYWNpbmcgYGVuZXRjNF9wZl9pbml0YDoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgdGhlIEVORVRDNCBQaHlzaWNhbCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9wZl9pbml0YCBmdW5jdGlvbi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgYSBQaHlzaWNhbCBGdW5jdGlvbiAoUEYpIG9mIHRoZSBFTkVUQzQgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlci4gR2l2ZW4gdGhlICYjMzQ7UEYmIzM0OyBkZXNpZ25hdGlvbiwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvcmUgc2V0dXAgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgcmVjb2duaXplZCwgcHJvYmVkLCBhbmQgZ2VuZXJhbGx5IGJyb3VnaHQgb25saW5lIHdpdGhpbiB0aGUgc3lzdGVtLgoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gbG9vayBmb3Iga2V5IGFyZWFzOgoKKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBXaGF0IG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgbGluZXMsIGFuZCBvdGhlciBzeXN0ZW0gcmVzb3VyY2VzIGlzIHRoaXMgZnVuY3Rpb24gY2xhaW1pbmcgZm9yIHRoZSBQRj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgZGV2aWNlIGludG8gdGhlIHN5c3RlbS4gQXJlIHdlIGRlYWxpbmcgd2l0aCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgbWVtb3J5LW1hcHBlZCBJL08sIG9yIGludGVycnVwdCBoYW5kbGluZz8KKiAgICoqSGFyZHdhcmUgSW5pdGlhbGl6YXRpb246KiogV2hhdCBsb3ctbGV2ZWwgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkPyBBcmUgd2Ugc2V0dGluZyB1cCBjbG9ja3MsIGVuYWJsaW5nIGNlcnRhaW4gZmVhdHVyZXMsIG9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2UmIzM5O3MgYmFzZSBzdGF0ZT8gSeKAmWxsIGJlIHdhdGNoaW5nIGZvciByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIHRoYXQgZXN0YWJsaXNoIHRoZSBkZXZpY2UmIzM5O3Mgb3BlcmF0aW9uYWwgbW9kZS4KKiAgICoqRHJpdmVyIFN0cnVjdHVyZSBTZXR1cDoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGluZyB3aXRoIHRoZSBleGlzdGluZyBuZXR3b3JrIGRyaXZlciBmcmFtZXdvcms/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgKGUuZy4sIG5ldFxfZGV2aWNlIHN0cnVjdHVyZSwgRU5FVEMtc3BlY2lmaWMgc3RydWN0cykgYW5kIGhvdyBhcmUgdGhleSBiZWluZyBsaW5rZWQ/IFRoaXMgZ2l2ZXMgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBXaGF0JiMzOTtzIHRoZSBlcnJvciBjaGVja2luZyBsaWtlPyBEb2VzIHRoaXMgZnVuY3Rpb24gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9ycyBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgcmV0cmllcyBvciBmYWxsYmFjayBtZWNoYW5pc21zIGluIHBsYWNlPwoqICAgKipJbnRlcnJ1cHQgSGFuZGxpbmc6KiogRG9lcyB0aGlzIGZ1bmN0aW9uIHJlZ2lzdGVyIGludGVycnVwdCBoYW5kbGVycz8gSWYgc28sIHdoYXQgaW50ZXJydXB0IGxpbmVzIGlzIGl0IHVzaW5nLCBhbmQgd2hpY2ggZnVuY3Rpb25zIGFyZSBoYW5kbGluZyB0aGUgaW50ZXJydXB0cz8gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gcmVzcG9uZHMgdG8gZGV2aWNlIGV2ZW50cy4KKiAgICoqRnVuY3Rpb24gQ2FsbHM6KiogSXMgdGhlcmUgYW55dGhpbmcgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbGxzLCBvciB0aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24/IFRoZSBmdW5jdGlvbiBjYWxsIGhpZXJhcmNoeSB0ZWxscyBhIGxvdCBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzY29wZSBvZiB0aGUgUEYgaW5pdGlhbGl6YXRpb24uCgpVbHRpbWF0ZWx5LCBJIGV4cGVjdCB0byBzZWUgYSBjYXJlZnVsbHkgb3JjaGVzdHJhdGVkIHNlcXVlbmNlIHRoYXQgdHJhbnNpdGlvbnMgdGhlIEVORVRDNCBQRiBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUgdG8gYSByZWFkeS10by11c2UgbmV0d29yayBpbnRlcmZhY2UuIEkgd2lsbCBjYXJlZnVsbHkgdHJhY2UgZWFjaCBmdW5jdGlvbiBjYWxsLCBtZW1vcnkgYWNjZXNzLCBhbmQgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIHRvIGdyYXNwIHRoZSBjb3JlIGRldGFpbHMgb2YgdGhlIHNldHVwIGFuZCBnYWluIGEgZGV0YWlsZWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGV2aWNlIGRyaXZlciYjMzk7cyBwZXJzcGVjdGl2ZSBvbiBpbml0aWFsaXppbmcgdGhlIEVORVRDNCBQRi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00NjM9c3RhdGljIHZvaWQgZW5ldGM0X2ZyZWVfbnRtcF91c2VyKHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0Njg6c3RhdGljIGludCBlbmV0YzRfcGZfaW5pdChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTExMTE9c3RhdGljIGludCBlbmV0YzRfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDQtXHRwZiA9IGVuZXRjX3NpX3ByaXYoc2kpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExNDU6XHRlcnIgPSBlbmV0YzRfcGZfaW5pdChwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE0Ni1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKlBDSSBQcm9iZSBDb250ZXh0IGFuZCBLY29uZmlnIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyB0aGluZyBpcyBiZWluZyBjYWxsZWQgZnJvbSBgZW5ldGM0X3BmX3Byb2JlYC4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGl0JiMzOTtzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBBbmQgdGhlIHJlYWwga2lja2VyPyBUaGlzIGVudHJ5IHBvaW50IGlzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBmdXp6aW5nLCB3aGljaCBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaGVyZS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBLY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBhc3Nlc3NtZW50LiBJdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIHdoaWNoIGluIHR1cm4gaW5mb3JtcyBob3cgcmVhZGlseSBhIGZ1enplciBjYW4gcmVhY2ggdGhpcyBlbnRyeSBwb2ludC4gT25jZSBJIGZpbmQgaXQsIEkgY2FuIHRoZW4gY29uc2lkZXIgaXRzIGltcGxpY2F0aW9ucyBmb3IgYSB0YXJnZXRlZCBQQ0kgRnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5ldGM0X3BmLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfTlhQX0VORVRDNCkgJiM0Mzs9IG54cC1lbmV0YzQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL01ha2VmaWxlOjE4Om54cC1lbmV0YzQteSA6PSBlbmV0YzRfcGYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL01ha2VmaWxlLTE5LW54cC1lbmV0YzQtJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBlbmV0YzRfZGVidWdmcy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI1Mz1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0yNzMtXHQuc2V0X3NpX3ByaW1hcnlfbWFjID0gZW5ldGM0X3BmX3NldF9zaV9wcmltYXJ5X21hYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9Mjc3PXN0YXRpYyBpbnQgZW5ldGM0X3BmX3N0cnVjdF9pbml0KHN0cnVjdCBlbmV0Y19zaSAqc2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4Mi1cdHBmLVx1MDAzZXRvdGFsX3ZmcyA9IHBjaV9zcmlvdl9nZXRfdG90YWx2ZnMoc2ktXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MjgzOlx0cGYtXHUwMDNlb3BzID0gXHUwMDI2ZW5ldGM0X3BmX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0yODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRU5FVEM0IEtjb25maWcgT3B0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJJiMzOTt2ZSBnb3QgdG8gZGVhbCB3aXRoIGBDT05GSUdfTlhQX0VORVRDNGAuIE15IGZpcnN0IG1vdmUgaXMgb2J2aW91czsgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHB1bGxpbmcgdXAgdGhlIGFwcHJvcHJpYXRlIGZpbGUgYW5kIHF1aWNrbHkgc2Nhbm5pbmcgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgcGFydGljdWxhciBvcHRpb24gaGFzLiBBcmUgdGhlcmUgYW55IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgYENPTkZJR19OWFBfRU5FVEM0YCB0byBldmVuIHNob3cgdXAsIG9yIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGZpcnN0IHN0ZXAgLSBmaWd1cmUgb3V0IHRoZSBwcmVyZXF1aXNpdGVzIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBnZXR0aW5nIGxvc3QgaW4gdGhlIGRldGFpbHMgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOWFBfRU5FVEM0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo0ODpjb25maWcgTlhQX0VORVRDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDktXHR0cmlzdGF0ZSBcJiMzNDtFTkVUQzQgUEYgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkV4YW1pbmluZyB0aGUgRU5FVEMgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ4LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmUgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVORVRDIChFbmhhbmNlZCBOZXR3b3JrIEV0aGVybmV0IENvbnRyb2xsZXIpIGRyaXZlci4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBjdXN0b21pemluZyB0aGUgRU5FVEMmIzM5O3MgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbCBidWlsZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHNldHRpbmdzLCBhbnl0aGluZyByZWxhdGVkIHRvIGZlYXR1cmVzIGxpa2UgVkxBTiBzdXBwb3J0LCBoYXJkd2FyZSBvZmZsb2FkaW5nIGNhcGFiaWxpdGllcywgZGlmZmVyZW50IFBIWSBjb25maWd1cmF0aW9ucywgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQgY29udHJvbHMuIFRoaXMgc2VjdGlvbiBwcm9iYWJseSBkZWZpbmVzIHdoYXQgZmVhdHVyZXMgYXJlIGJ1aWx0LWluLCBtb2R1bGFyaXplZCwgb3IgY29tcGxldGVseSBkaXNhYmxlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIGFuZCB1c2VzIGNsZWFyIG9wdGlvbiBkZXNjcmlwdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24ga25vYnMgZm9yIHRoaXMgZHJpdmVyIHNvIEkgdW5kZXJzdGFuZCBob3cgdG8gdHVuZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIGVtYmVkZGVkIHN5c3RlbSBvciBuZXR3b3JrIGFwcGxpYW5jZSBJJiMzOTttIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRzZWxlY3QgRElNTElCXG4gIDQxOlx0XHRoZWxwXG4gIDQyOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE5YUCBFTkVUQyBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXIgUENJZVxuICA0MzpcdFx0ICBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGRldmljZXMsIG1hbmFnaW5nIEVORVRDIFBvcnRzIGF0IGEgcHJpdmlsZWdlZFxuICA0NDpcdFx0ICBsZXZlbC5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgSWYgY29tcGlsZWQgYXMgbW9kdWxlIChNKSwgdGhlIG1vZHVsZSBuYW1lIGlzIGZzbC1lbmV0Yy5cbiAgNDc6XHRcbiAgNDg6XHRjb25maWcgTlhQX0VORVRDNFxuICA0OTpcdFx0dHJpc3RhdGUgXCYjMzQ7RU5FVEM0IFBGIGRyaXZlclwmIzM0O1xuICA1MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA1MTpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDUyOlx0XHRzZWxlY3QgRlNMX0VORVRDX0NPUkVcbiAgNTM6XHRcdHNlbGVjdCBGU0xfRU5FVENfTURJT1xuICA1NDpcdFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cbiAgNTU6XHRcdHNlbGVjdCBOWFBfTlRNUFxuICA1NjpcdFx0c2VsZWN0IFBIWUxJTktcbiAgNTc6XHRcdHNlbGVjdCBESU1MSUJcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTlhQIEVORVRDIGRldmljZXMgd2l0aCBtYWpvciByZXZpc2lvbiA0LiBFTkVUQyBpc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQzCgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqQW5hbHl6aW5nIHRoZSBFTkVUQzQgRHJpdmVyIEZpeCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IHJlbGF0ZWQgdG8gdGhlIGBOWFBfRU5FVEM0YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGVyZSYjMzk7cyBhIHBhdGNoIGFkZHJlc3NpbmcgYSBkaXZpc2lvbi1ieS16ZXJvIGVycm9yIHdpdGhpbiB0aGUgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBhcmlzZXMgd2hlbiBgcGYtJmd0O2NhcHMubnVtX3ZzaWAgaXMgemVybywgd2hpY2ggbGlrZWx5IGhhcHBlbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHByb2JpbmcuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGJ1ZywgYW5kIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbmUgdG8gdW5kZXJzdGFuZC4KClRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gLCBpcyBjYWxsZWQgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgc28gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIGFyb3VuZCB0aGF0IHBhcnQuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBtb3JlIGNvbnRleHQgYXJvdW5kIHRoZSBmdW5jdGlvbiBjYWxscyBhcm91bmQgdGhpcyBjYWxsLiBJIHdpbGwgcHJvYmFibHkgd2FudCB0byBjaGVjayBgZW5ldGM0X3BmX3Byb2JlYCBhbmQgYGVuZXRjNF9wZl9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05YUF9FTkVUQzQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uJiMzNDssCiAgICAmIzM0O2VuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnRfc2kmIzM0OywKICAgICYjMzQ7ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9pbml0JiMzNDssCiAgICAmIzM0O2VuZXRjNF9wZl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlhQX0VORVRDNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24mIzM0OywKICAgICYjMzQ7ZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzJiMzNDssCiAgICAmIzM0O2VuZXRjNF9jb25maWd1cmVfcG9ydF9zaSYjMzQ7LAogICAgJiMzNDtlbmV0YzRfY29uZmlndXJlX3BvcnQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX2luaXQmIzM0OywKICAgICYjMzQ7ZW5ldGM0X3BmX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzQuMzE1NTQ1MTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwODU3NjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlhQX0VORVRDNFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25cIixcbiAgICBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRcIixcbiAgICBcImVuZXRjNF9wZl9pbml0XCIsXG4gICAgXCJlbmV0YzRfcGZfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzQuMzE1NTUxNDQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1Nzg2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzA1MTk2ZDliYTQ0MTNkMGExZWRmNTA1ZWM2YjNlOGI2YTdiZWFhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUwOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xcbmluZGV4IDRlNzcxZjg1MjM1ODA0Li40MzdhMTViYmI0N2JhOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcXG5AQCAtMzIyLDYgKzMyMiw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb24oc3RydWN0IGVuZXRjX3BmICpwZilcXG4gXFx0dmFsID0gZW5ldGM0X3BzaWNmZ3IwX3ZhbF9jb25zdHJ1Y3QoZmFsc2UsIG51bV90eF9iZHIsIG51bV9yeF9iZHIpO1xcbiBcXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XFxuIFxcbitcXHRpZiAoIXBmLVxcdTAwM2VjYXBzLm51bV92c2kpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdG51bV9yeF9iZHIgPSBwZi1cXHUwMDNlY2Fwcy5udW1fcnhfYmRyIC0gbnVtX3J4X2JkcjtcXG4gXFx0cnhfcmVtID0gbnVtX3J4X2JkciAlIHBmLVxcdTAwM2VjYXBzLm51bV92c2k7XFxuIFxcdG51bV9yeF9iZHIgPSBudW1fcnhfYmRyIC8gcGYtXFx1MDAzZWNhcHMubnVtX3ZzaTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6MzUuMDAwOTg1NThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDAwMzEwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5YUF9FTkVUQzRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uXCIsXG4gICAgXCJlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3NcIixcbiAgICBcImVuZXRjNF9jb25maWd1cmVfcG9ydF9zaVwiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0XCIsXG4gICAgXCJlbmV0YzRfcGZfaW5pdFwiLFxuICAgIFwiZW5ldGM0X3BmX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aXNpb24gYnkgemVybyBpbiBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgZHVyaW5nIHRoZSBQQ0kgcHJvYmUgb2YgdGhlIEZyZWVzY2FsZSBFTkVUQzQgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDcwNTE5NmQ5YmE0NDEzZDBhMWVkZjUwNWVjNmIzZThiNmE3YmVhYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUwOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0ZTc3MWY4NTIzNTgwNC4uNDM3YTE1YmJiNDdiYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTMyMiw2ICszMjIsOSBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4gXHR2YWwgPSBlbmV0YzRfcHNpY2ZncjBfdmFsX2NvbnN0cnVjdChmYWxzZSwgbnVtX3R4X2JkciwgbnVtX3J4X2Jkcik7XG4gXHRlbmV0Y19wb3J0X3dyKGh3LCBFTkVUQzRfUFNJQ0ZHUjAoMCksIHZhbCk7XG4gXG4rXHRpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0bnVtX3J4X2JkciA9IHBmLVx1MDAzZWNhcHMubnVtX3J4X2JkciAtIG51bV9yeF9iZHI7XG4gXHRyeF9yZW0gPSBudW1fcnhfYmRyICUgcGYtXHUwMDNlY2Fwcy5udW1fdnNpO1xuIFx0bnVtX3J4X2JkciA9IG51bV9yeF9iZHIgLyBwZi1cdTAwM2VjYXBzLm51bV92c2k7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDozNS4wMDA5ODcwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODMxMzkwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jYC4gSXQncyB0b3VjaGluZyB0aGUgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUgaGFzIGJlZW4gYWRkZWQ6IGBpZiAoIXBmLVx1MDAzZWNhcHMubnVtX3ZzaSkgcmV0dXJuO2AuIFNtYXJ0LCBwcmV2ZW50aW5nIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIGEgc2ltaWxhciBlZGdlIGNhc2UuIEl0J3MgZ29vZCB0byBzZWUgcHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nLlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGRyaXZlci4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY2Ag4oCTIGFoLCBpdCdzIGZvciB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBtZWFucyBpdCdzIGEgUENJZSBkZXZpY2UuIFRoaXMgcmFpc2VzIHNvbWUgaW1tZWRpYXRlIHF1ZXN0aW9ucy4gQ2FuIHRoaXMgYmUgZWFzaWx5IGZ1enplZCwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQQ0llIGRyaXZlcnMsIGJlaW5nIGhhcmR3YXJlLXNwZWNpZmljLCBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiBkaXJlY3RseSB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgd2VsbC1lbXVsYXRlZCBoYXJkd2FyZSBtb2RlbCBvciBhIG1vcmUgZ2VuZXJpYyBzdWJzeXN0ZW0uXG5cbkhvd2V2ZXIuLi4gd2FpdCwgc3l6a2FsbGVyLCB0aGUgc3lzdGVtIGNhbGwgZnV6emVyLCBoYXMgYSBQQ0kgZnV6emVyISBUaGF0J3MgYSBzaWduaWZpY2FudCBkZXZlbG9wbWVudC4gSXQgZG9lcyB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBnaXZlbiBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXM/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGlmIGl0J3MgdHJpZ2dlcmFibGUgdmlhIHRoZSBQQ0kgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6NDEuMzg0MTMwMTg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDcxNzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI5MT1zdGF0aWMgdTMyIGVuZXRjNF9wc2ljZmdyMF92YWxfY29uc3RydWN0KGJvb2wgaXNfdmYsIHUzMiBudW1fdHhfYmRyLCB1MzIgbnVtX3J4X2JkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjMwNTpzdGF0aWMgdm9pZCBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTMwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzQ0PXN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzozNDY6XFx0ZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTM0Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjQxLjcwODg1NDc0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzI3MTY2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBvZiBTSSBSaW5ncyB3aXRoaW4gZW5ldGM0KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byBgZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIFNwYXRpYWwgSW50ZXJmYWNlIChTSSkgcmluZ3MgYXJlIGJlaW5nIGFsbG9jYXRlZC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzIHdpdGhpbiB0aGlzIGRyaXZlciwgb3IgYXQgbGVhc3QgaG93IGl0J3MgaGFuZGxlZCBpbiBgZW5ldGM0YC4gSSB3YW50IHRvIGtub3cgd2hlcmUgdGhlIHBoeXNpY2FsIG1lbW9yeSBpcyBjb21pbmcgZnJvbSwgaG93IHRoZSBkZXNjcmlwdG9ycyBhcmUgc2V0IHVwIOKAkyBhcmUgdGhleSBjb250aWd1b3VzLCBmcmFnbWVudGVkLCB3aGF0J3MgdGhlIGFsbG9jYXRpb24gc3RyYXRlZ3k/IElzIHRoaXMgYWxsIGRvbmUgaW4gb25lIGJpZyBjaHVuaywgb3IgYXJlIHRoZXJlIGNsZXZlciB0cmlja3Mgd2l0aCBETUEgbWFwcGluZyBhbmQgY2FjaGluZyB0byBtYWtlIHRoaW5ncyBlZmZpY2llbnQ/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXRpbGl6YXRpb24uIEFyZSB3ZSBvcHRpbWl6aW5nIGZvciBsb3cgbGF0ZW5jeSBvciBoaWdoIHRocm91Z2hwdXQ/IERvZXMgdGhpcyBhbGxvY2F0aW9uIHN0cmF0ZWd5IGxlbmQgaXRzZWxmIHdlbGwgdG8gZGlmZmVyZW50IHRyYWZmaWMgcHJvZmlsZXMsIHN1Y2ggYXMgdGhvc2UgdXNlZCBmb3IgaVNDU0ksIG9yIHZpZGVvIHN0cmVhbWluZz8gSSdtIGFsc28gY3VyaW91cyB0byBzZWUgaWYgdGhlcmUncyBhbnkgc29waGlzdGljYXRlZCBlcnJvciBoYW5kbGluZyBpbiBwbGFjZSwgd2hhdCBoYXBwZW5zIGlmIHRoZSBhbGxvY2F0aW9uIGZhaWxzLCBpcyB0aGlzIGFsbCBncmFjZWZ1bCBvciBjYXRhc3Ryb3BoaWM/XG5cbkZyb20gYSBoYXJkd2FyZSBwZXJzcGVjdGl2ZSwgSSdtIHRyeWluZyB0byB2aXN1YWxpemUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIEVORVRDNCdzIGludGVybmFsIGFyY2hpdGVjdHVyZS4gSG93IGRvZXMgdGhpcyByaW5nIGFsbG9jYXRpb24gbWFwIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkgcmVnaW9ucyB0aGUgZGV2aWNlIGNhbiBhY3R1YWxseSBhY2Nlc3M/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUsIERNQSBlbmdpbmVzLCBzY2F0dGVyLWdhdGhlciBsaXN0cz8gSSdtIGhvcGluZyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBsYXllciBhbGlnbnMgd2l0aCBhbmQgb3B0aW1pemVzIGZvciB0aGUgaGFyZHdhcmUncyBjYXBhYmlsaXRpZXMuIEl0J3MgcmVhbGx5IGFib3V0IHRoYXQgaGFybW9ueSBiZXR3ZWVuIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZW5ldGM0YCBpcyBwdXR0aW5nIHRoZSBkZXNjcmlwdG9yczsgYXJlIHRoZXkgaW4gYW4gYWNjZXNzaWJsZSByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5PyBBbHNvLCBob3cgaXMgdGhlIGRldmljZSBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZW0/XG5cbkknbSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljIHN0ZXAgYnkgc3RlcCwgbG9vayBmb3IgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMsIGFuZCBleGFtaW5lIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucyBjbG9zZWx5LiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGFyZSB3aXRoaW4gYGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo0Ni4yNDE1NzQxOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNzI1MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zMDU9c3RhdGljIHZvaWQgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbihzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTM0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MzQ0OnN0YXRpYyB2b2lkIGVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5ncyhzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0zNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQwNj1zdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQxMDpcXHRlbmV0YzRfYWxsb2NhdGVfc2lfcmluZ3MocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjQ2LjU5NDMxMTk2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzk5ODUzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipUcmFjaW5nIHRoZSBDb25maWd1cmF0aW9uIEZsb3c6IGBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9jb25maWd1cmVfcG9ydF9zaWAgZnVuY3Rpb24uIE15IGluaXRpYWwgYXBwcm9hY2ggaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgaXRzICpwbGFjZSogaW4gdGhlIGdyYW5kIHNjaGVtZS4gV2hlcmUgZG9lcyBpdCBmaXQgd2l0aGluIHRoZSBicm9hZGVyIEVORVRDNCBkcml2ZXIgYXJjaGl0ZWN0dXJlPyBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyB0aGUgY2FsbCBncmFwaCDigJMgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgdXBzdHJlYW0gZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGlzIG9uZSBhbmQgd2hhdCB0aGUgZG93bnN0cmVhbSBjYWxscyBhcmUuIElzIGl0IGNhbGxlZCBkdXJpbmcgaW5pdGlhbCBkZXZpY2Ugc2V0dXAsIGxpbmsgY2hhbmdlcywgb3IgcGVyaGFwcyBhcyBhIHJlc3BvbnNlIHRvIHNwZWNpZmljIGV2ZW50cz8gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIHRoZSBjb250cm9sIGZsb3cuXG5cbkkgZXhwZWN0IHRvIHNlZSBpdCBoYW5kbGUgcG9ydC1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgdGhlIFN5c3RlbSBJbnRlcmZhY2UgKFNJKS4gVGhhdCBtZWFucyBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgY29uZmlndXJpbmcgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBvcnQgc3BlZWQsIGR1cGxleCBzZXR0aW5ncywgVkxBTiBjb25maWd1cmF0aW9uLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcsIGFuZCBwb3NzaWJseSBmbG93IGNvbnRyb2wgcGFyYW1ldGVycyBmb3IgdGhlIHNwZWNpZmljIHBvcnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcGFzc2VkIHRvIGl0IOKAkyB0aGluZ3MgbGlrZSB0aGUgZGV2aWNlIGNvbnRleHQgKGBlbmV0YzRfcHJpdmApLCB0aGUgcG9ydCBpbmRleC9oYW5kbGUsIGFuZCB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gZGF0YS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgYml0cyBhbmQgcGllY2VzLlxuXG5HaXZlbiBteSBwcmlvciBleHBlcmllbmNlIHdpdGggdGhlc2Ugc29ydHMgb2YgZGV2aWNlIGRyaXZlcnMsIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VyaWVzIG9mIHJlZ2lzdGVyIHdyaXRlcyBhbmQgcG9zc2libHkgc29tZSByZWFkLW1vZGlmeS13cml0ZXMgdG8gZW5zdXJlIGF0b21pY2l0eS4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBlcnJvciBoYW5kbGluZy4gQXJlIHRoZXJlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJmYWNlIHNwZWVkIG9yIG9wZXJhdGluZyBtb2RlPyBIb3cgcm9idXN0IGlzIHRoZSBlcnJvciBkZXRlY3Rpb24gYW5kIHJlY292ZXJ5PyBBcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXM/IEknbSBhbHNvIGFudGljaXBhdGluZyBjaGVja2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBpdCdzIG9wZXJhdGluZyBvbiBzaGFyZWQgZGF0YS4gSSdsbCBiZSB3YXRjaGluZyBmb3IgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyBpbiBwbGF5IGhlcmUuXG5cbkZ1cnRoZXJtb3JlLCBJJ2xsIGJlIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gQXJlIHRoZXJlIGFueSBvcGVyYXRpb25zIHRoYXQgY291bGQgYmxvY2sgb3IgaW50cm9kdWNlIHNpZ25pZmljYW50IGxhdGVuY3k/IERvZXMgaXQgbGV2ZXJhZ2UgYW55IERNQSBvciBpbnRlcnJ1cHQgbWVjaGFuaXNtcyBmb3IgbW9yZSBlZmZpY2llbnQgZGF0YSB0cmFuc2ZlcnMsIHBhcnRpY3VsYXJseSBmb3IgdGhlIGxvbmdlciBjb25maWd1cmF0aW9uIHRhc2tzPyBBcmUgdGhlcmUgYW55IG9wdGltaXphdGlvbnMgZm9yIGJ1bGsgb3BlcmF0aW9ucyBvciBjb25maWd1cmF0aW9ucyB0byBtaW5pbWl6ZSB0aGUgb3ZlcmhlYWQ/XG5cbkZpbmFsbHksIEknbGwgYmUgY29tcGFyaW5nIHRoZSBjb2RlIHdpdGggdGhlIHJlbGV2YW50IGRhdGFzaGVldCBhbmQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEVORVRDNCBzaWxpY29uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG1hdGNoZXMgdGhlIGludGVuZGVkIGhhcmR3YXJlIGJlaGF2aW9yIGFuZCB0aGF0IG5vIGFzc3VtcHRpb25zIGFyZSBiZWluZyBtYWRlIHRoYXQgY29udHJhZGljdCB0aGUgaGFyZHdhcmUncyBkb2N1bWVudGVkIGZ1bmN0aW9uYWxpdHkuIEFueSBjb21tZW50cyB3b3VsZCBiZSByZWFsbHkgaGVscGZ1bCBpbiBwb2ludGluZyBtZSB0byB0aG9zZSBzZWN0aW9ucywgb3RoZXJ3aXNlLCBJIHdpbGwgYmUganVtcGluZyBpbiBhbmQgZ2V0dGluZyBmYW1pbGlhciB3aXRoIHRoZSBzaWxpY29uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTA6NTIuNDM0MzAwNjg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjMxODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MzkyPXN0YXRpYyB2b2lkIGVuZXRjNF9lbmFibGVfYWxsX3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0MDY6c3RhdGljIHZvaWQgZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NDQ2PXN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ5LVxcdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo1Mi42MTA2MjU1MTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM4MTQ3MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoZSBjb2RlIG15c2VsZjpcblxuKipUcmFjaW5nIGBlbmV0YzRfY29uZmlndXJlX3BvcnRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGVuZXRjNF9jb25maWd1cmVfcG9ydGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIEVORVRDIChFdGhlcm5ldCBOZXR3b3JrIENvbnRyb2xsZXIpIGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgcHJvYmFibHkgaGFuZGxlcyB0aGUgcG9ydC1zcGVjaWZpYyBzZXR1cCwgYWZ0ZXIgdGhlIGNvcmUgRU5FVEMgY29udHJvbGxlciBoYXMgYmVlbiBpbml0aWFsaXplZC4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHdoZXJlIHdlJ3JlIG1hcHBpbmcgcmVnaXN0ZXJzLCBzZXR0aW5nIHVwIGludGVycnVwdCBsaW5lcywgYW5kIGNvbmZpZ3VyaW5nIHRoZSB2YXJpb3VzIHF1ZXVlcyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHdlIG1ha2UgdGhlIGFic3RyYWN0IGNvbnRyb2xsZXIgcmVsZXZhbnQgdG8gYSBwYXJ0aWN1bGFyICpwb3J0KiBvciBwaHlzaWNhbCBpbnRlcmZhY2UuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGxpa2VseSB0YWtlcyBhcyBhcmd1bWVudHMuIEknbSBhc3N1bWluZyB3ZSdsbCBnZXQgYSBwb2ludGVyIHRvIHRoZSBFTkVUQyBkZXZpY2Ugc3RydWN0dXJlLCB3aGljaCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSwgYW5kIHRoZW4gbGlrZWx5IGEgcG9pbnRlciB0byBhIHBvcnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgc2V0dGluZ3Mgd2Ugd2FudCB0byBhcHBseSB0byB0aGlzIGludGVyZmFjZS4gSXQncyBwcm9iYWJseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIG9yIHdyaXRlcyB0byBnZXQgdGhhdCBwb3J0IHVwIGFuZCBydW5uaW5nLlxuXG5JIHdhbnQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgaG93IGl0IGhhbmRsZXMgdGhlIGRpZmZlcmVudCBzcGVlZCBhbmQgZHVwbGV4IGNvbmZpZ3VyYXRpb25zLiBJcyB0aGlzIGZ1bmN0aW9uIHVzaW5nIGEgc2VyaWVzIG9mIGJpdCBtYW5pcHVsYXRpb25zIHdpdGhpbiBjZXJ0YWluIHJlZ2lzdGVycz8gT3IgaXMgaXQgZW1wbG95aW5nIHNvbWUgc29ydCBvZiBhZHZhbmNlZCBjb25maWd1cmF0aW9uIGludGVyZmFjZSAobGlrZSBzb21lIG5ld2VyIGNvbnRyb2xsZXJzIHVzZSk/IEkgZXhwZWN0IHRvIHNlZSBjaGVja3Mgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgbGF5ZXIgY29ubmVjdGlvbuKAlCB0aGluZ3MgbGlrZSBhdXRvbmVnb3RpYXRpb24sIE1BQyBhZGRyZXNzIGNvbmZpZ3VyYXRpb24sIGFuZCBwb3NzaWJseSBmbG93IGNvbnRyb2wgc2V0dXAuXG5cbkJleW9uZCB0aGUgYmFzaWMgaW5pdGlhbGl6YXRpb24sIGl0J3MgYWxzbyB3b3J0aCBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgYW5kIG90aGVyIGFkdmFuY2VkIEV0aGVybmV0IGZlYXR1cmVzLiBJcyBpdCB1c2luZyBoYXJkd2FyZSBvZmZsb2FkIGZvciB0aGVzZSBmdW5jdGlvbnM/IERvZXMgdGhlIGNvZGUgcmVseSBvbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjayBmb3IgdGhlc2UgZGV0YWlscyBvciBkb2VzIGl0IG1hbmFnZSB0aGVtIGluIGhhcmR3YXJlP1xuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmFpbHM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXRyeSBtZWNoYW5pc21zPyBUaGlzIGlzIGNyaXRpY2FsIGZvciByb2J1c3QgZHJpdmVyIG9wZXJhdGlvbi4gSSBuZWVkIHRvIG5vdGUgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGhpcyBhcmVhLlxuXG5VbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgc2VxdWVuY2U6IGhvdyB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGRhdGEgaXQgbmVlZHMgdG8gd29yaywgd2hhdCByZWdpc3RlcnMgaXQgbW9kaWZpZXMsIGFuZCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHBvcnQgYWZ0ZXIgaXQgaGFzIGNvbXBsZXRlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdG8gY29uZmlndXJlIG9yIGRlYnVnIGEgc3BlY2lmaWMgcG9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUwOjU3LjA0ODc3NjA4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0NzM1Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuZXRjNF9jb25maWd1cmVfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0zOTI9c3RhdGljIHZvaWQgZW5ldGM0X2VuYWJsZV9hbGxfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjQwNjpzdGF0aWMgdm9pZCBlbmV0YzRfY29uZmlndXJlX3BvcnRfc2koc3RydWN0IGVuZXRjX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz00MzY9c3RhdGljIHZvaWQgZW5ldGM0X3NldF90cnhfZnJhbWVfc2l6ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDQ2OnN0YXRpYyB2b2lkIGVuZXRjNF9jb25maWd1cmVfcG9ydChzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0NDg6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDQ5LVxcdGVuZXRjNF9zZXRfdHJ4X2ZyYW1lX3NpemUocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTQ2OD1zdGF0aWMgaW50IGVuZXRjNF9wZl9pbml0KHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo0ODY6XFx0ZW5ldGM0X2NvbmZpZ3VyZV9wb3J0KHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MDo1Ny4zMTM1MTc2MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzNjgzMjYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgdHJhY2luZyBgZW5ldGM0X3BmX2luaXRgOlxuXG4qKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBFTkVUQzQgUGh5c2ljYWwgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgZW5ldGM0X3BmX2luaXRgIGZ1bmN0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgYSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIFBoeXNpY2FsIEZ1bmN0aW9uIChQRikgb2YgdGhlIEVORVRDNCBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyLiBHaXZlbiB0aGUgXCJQRlwiIGRlc2lnbmF0aW9uLCBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBjb3JlIHNldHVwIHJlcXVpcmVkIGZvciB0aGUgZGV2aWNlIHRvIGJlIHJlY29nbml6ZWQsIHByb2JlZCwgYW5kIGdlbmVyYWxseSBicm91Z2h0IG9ubGluZSB3aXRoaW4gdGhlIHN5c3RlbS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gbG9vayBmb3Iga2V5IGFyZWFzOlxuXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIFdoYXQgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdCBsaW5lcywgYW5kIG90aGVyIHN5c3RlbSByZXNvdXJjZXMgaXMgdGhpcyBmdW5jdGlvbiBjbGFpbWluZyBmb3IgdGhlIFBGPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYXBzIHRoZSBkZXZpY2UgaW50byB0aGUgc3lzdGVtLiBBcmUgd2UgZGVhbGluZyB3aXRoIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLCBtZW1vcnktbWFwcGVkIEkvTywgb3IgaW50ZXJydXB0IGhhbmRsaW5nP1xuKiAgICoqSGFyZHdhcmUgSW5pdGlhbGl6YXRpb246KiogV2hhdCBsb3ctbGV2ZWwgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkPyBBcmUgd2Ugc2V0dGluZyB1cCBjbG9ja3MsIGVuYWJsaW5nIGNlcnRhaW4gZmVhdHVyZXMsIG9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2UncyBiYXNlIHN0YXRlPyBJ4oCZbGwgYmUgd2F0Y2hpbmcgZm9yIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgdGhhdCBlc3RhYmxpc2ggdGhlIGRldmljZSdzIG9wZXJhdGlvbmFsIG1vZGUuXG4qICAgKipEcml2ZXIgU3RydWN0dXJlIFNldHVwOioqIEhvdyBpcyB0aGlzIGZ1bmN0aW9uIGludGVncmF0aW5nIHdpdGggdGhlIGV4aXN0aW5nIG5ldHdvcmsgZHJpdmVyIGZyYW1ld29yaz8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBvcHVsYXRlZCAoZS5nLiwgbmV0XFxfZGV2aWNlIHN0cnVjdHVyZSwgRU5FVEMtc3BlY2lmaWMgc3RydWN0cykgYW5kIGhvdyBhcmUgdGhleSBiZWluZyBsaW5rZWQ/IFRoaXMgZ2l2ZXMgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCdzIHRoZSBlcnJvciBjaGVja2luZyBsaWtlPyBEb2VzIHRoaXMgZnVuY3Rpb24gZ3JhY2VmdWxseSBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9ycyBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgcmV0cmllcyBvciBmYWxsYmFjayBtZWNoYW5pc21zIGluIHBsYWNlP1xuKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIERvZXMgdGhpcyBmdW5jdGlvbiByZWdpc3RlciBpbnRlcnJ1cHQgaGFuZGxlcnM/IElmIHNvLCB3aGF0IGludGVycnVwdCBsaW5lcyBpcyBpdCB1c2luZywgYW5kIHdoaWNoIGZ1bmN0aW9ucyBhcmUgaGFuZGxpbmcgdGhlIGludGVycnVwdHM/IEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gcmVzcG9uZHMgdG8gZGV2aWNlIGV2ZW50cy5cbiogICAqKkZ1bmN0aW9uIENhbGxzOioqIElzIHRoZXJlIGFueXRoaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBjYWxscywgb3IgdGhhdCBjYWxscyB0aGlzIGZ1bmN0aW9uPyBUaGUgZnVuY3Rpb24gY2FsbCBoaWVyYXJjaHkgdGVsbHMgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2NvcGUgb2YgdGhlIFBGIGluaXRpYWxpemF0aW9uLlxuXG5VbHRpbWF0ZWx5LCBJIGV4cGVjdCB0byBzZWUgYSBjYXJlZnVsbHkgb3JjaGVzdHJhdGVkIHNlcXVlbmNlIHRoYXQgdHJhbnNpdGlvbnMgdGhlIEVORVRDNCBQRiBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUgdG8gYSByZWFkeS10by11c2UgbmV0d29yayBpbnRlcmZhY2UuIEkgd2lsbCBjYXJlZnVsbHkgdHJhY2UgZWFjaCBmdW5jdGlvbiBjYWxsLCBtZW1vcnkgYWNjZXNzLCBhbmQgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIHRvIGdyYXNwIHRoZSBjb3JlIGRldGFpbHMgb2YgdGhlIHNldHVwIGFuZCBnYWluIGEgZGV0YWlsZWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGV2aWNlIGRyaXZlcidzIHBlcnNwZWN0aXZlIG9uIGluaXRpYWxpemluZyB0aGUgRU5FVEM0IFBGLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDEuNzUwMzU1MDAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc1NDMyNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5ldGM0X3BmX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NDYzPXN0YXRpYyB2b2lkIGVuZXRjNF9mcmVlX250bXBfdXNlcihzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6NDY4OnN0YXRpYyBpbnQgZW5ldGM0X3BmX2luaXQoc3RydWN0IGVuZXRjX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNDY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz0xMTExPXN0YXRpYyBpbnQgZW5ldGM0X3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDQtXFx0cGYgPSBlbmV0Y19zaV9wcml2KHNpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6MTE0NTpcXHRlcnIgPSBlbmV0YzRfcGZfaW5pdChwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExNDYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDEuOTA3OTA2MTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODIxOTMwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipQQ0kgUHJvYmUgQ29udGV4dCBhbmQgS2NvbmZpZyBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHRoaW5nIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBlbmV0YzRfcGZfcHJvYmVgLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgaXQncyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gQW5kIHRoZSByZWFsIGtpY2tlcj8gVGhpcyBlbnRyeSBwb2ludCBpcyByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZywgd2hpY2ggaGFzIHNlcmlvdXMgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBLY29uZmlnIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBhc3Nlc3NtZW50LiBJdCdsbCByZXZlYWwgaG93IHRoZSBkcml2ZXIgaXMgZW5hYmxlZCwgd2hpY2ggaW4gdHVybiBpbmZvcm1zIGhvdyByZWFkaWx5IGEgZnV6emVyIGNhbiByZWFjaCB0aGlzIGVudHJ5IHBvaW50LiBPbmNlIEkgZmluZCBpdCwgSSBjYW4gdGhlbiBjb25zaWRlciBpdHMgaW1wbGljYXRpb25zIGZvciBhIHRhcmdldGVkIFBDSSBGdXp6LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDUuMjkwMTAyOTI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxNTk1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5ldGM0X3BmLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX05YUF9FTkVUQzQpICs9IG54cC1lbmV0YzQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9NYWtlZmlsZToxODpueHAtZW5ldGM0LXkgOj0gZW5ldGM0X3BmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvTWFrZWZpbGUtMTktbnhwLWVuZXRjNC0kKENPTkZJR19ERUJVR19GUykgKz0gZW5ldGM0X2RlYnVnZnMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI1Mz1zdGF0aWMgdm9pZCBlbmV0YzRfcGZfc2V0X21hY19maWx0ZXIoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCBlbmV0Y19wZl9vcHMgZW5ldGM0X3BmX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMjczLVxcdC5zZXRfc2lfcHJpbWFyeV9tYWMgPSBlbmV0YzRfcGZfc2V0X3NpX3ByaW1hcnlfbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTI3Nz1zdGF0aWMgaW50IGVuZXRjNF9wZl9zdHJ1Y3RfaW5pdChzdHJ1Y3QgZW5ldGNfc2kgKnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4Mi1cXHRwZi1cXHUwMDNldG90YWxfdmZzID0gcGNpX3NyaW92X2dldF90b3RhbHZmcyhzaS1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjI4MzpcXHRwZi1cXHUwMDNlb3BzID0gXFx1MDAyNmVuZXRjNF9wZl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTI4NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MDUuNDEyMjcxNjMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDMwMjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEVORVRDNCBLY29uZmlnIE9wdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJJ3ZlIGdvdCB0byBkZWFsIHdpdGggYENPTkZJR19OWFBfRU5FVEM0YC4gTXkgZmlyc3QgbW92ZSBpcyBvYnZpb3VzOyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSBhcHByb3ByaWF0ZSBmaWxlIGFuZCBxdWlja2x5IHNjYW5uaW5nIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGhhcy4gQXJlIHRoZXJlIGFueSBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIGBDT05GSUdfTlhQX0VORVRDNGAgdG8gZXZlbiBzaG93IHVwLCBvciB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEl0J3MgdGhlIHN0YW5kYXJkIGZpcnN0IHN0ZXAgLSBmaWd1cmUgb3V0IHRoZSBwcmVyZXF1aXNpdGVzIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBnZXR0aW5nIGxvc3QgaW4gdGhlIGRldGFpbHMgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTowOC43NTUzMDM0NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzA4ODM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlhQX0VORVRDNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjQ4OmNvbmZpZyBOWFBfRU5FVEM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkVORVRDNCBQRiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjA4Ljk3MjQwMTU1NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk1NTM0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOlxuXG4qKkV4YW1pbmluZyB0aGUgRU5FVEMgS2NvbmZpZyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ4LiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmUgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVORVRDIChFbmhhbmNlZCBOZXR3b3JrIEV0aGVybmV0IENvbnRyb2xsZXIpIGRyaXZlci4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBjdXN0b21pemluZyB0aGUgRU5FVEMncyBiZWhhdmlvciBpbiB0aGUga2VybmVsIGJ1aWxkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzZXR0aW5ncywgYW55dGhpbmcgcmVsYXRlZCB0byBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydCwgaGFyZHdhcmUgb2ZmbG9hZGluZyBjYXBhYmlsaXRpZXMsIGRpZmZlcmVudCBQSFkgY29uZmlndXJhdGlvbnMsIG9yIHBlcmhhcHMgZXZlbiBwb3dlciBtYW5hZ2VtZW50IGNvbnRyb2xzLiBUaGlzIHNlY3Rpb24gcHJvYmFibHkgZGVmaW5lcyB3aGF0IGZlYXR1cmVzIGFyZSBidWlsdC1pbiwgbW9kdWxhcml6ZWQsIG9yIGNvbXBsZXRlbHkgZGlzYWJsZWQuIEknbSBob3BpbmcgaXQncyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgY2xlYXIgb3B0aW9uIGRlc2NyaXB0aW9ucy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBrbm9icyBmb3IgdGhpcyBkcml2ZXIgc28gSSB1bmRlcnN0YW5kIGhvdyB0byB0dW5lIGl0IGZvciBhIHBhcnRpY3VsYXIgZW1iZWRkZWQgc3lzdGVtIG9yIG5ldHdvcmsgYXBwbGlhbmNlIEknbSB3b3JraW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6MTIuNjY3OTM5ODg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHRzZWxlY3QgRElNTElCXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE5YUCBFTkVUQyBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXIgUENJZVxcbiAgNDM6XFx0XFx0ICBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGRldmljZXMsIG1hbmFnaW5nIEVORVRDIFBvcnRzIGF0IGEgcHJpdmlsZWdlZFxcbiAgNDQ6XFx0XFx0ICBsZXZlbC5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBJZiBjb21waWxlZCBhcyBtb2R1bGUgKE0pLCB0aGUgbW9kdWxlIG5hbWUgaXMgZnNsLWVuZXRjLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRjb25maWcgTlhQX0VORVRDNFxcbiAgNDk6XFx0XFx0dHJpc3RhdGUgXFxcIkVORVRDNCBQRiBkcml2ZXJcXFwiXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDUyOlxcdFxcdHNlbGVjdCBGU0xfRU5FVENfQ09SRVxcbiAgNTM6XFx0XFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuICA1NDpcXHRcXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxcbiAgNTU6XFx0XFx0c2VsZWN0IE5YUF9OVE1QXFxuICA1NjpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgNTc6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiAgNTg6XFx0XFx0aGVscFxcbiAgNTk6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBOWFAgRU5FVEMgZGV2aWNlcyB3aXRoIG1ham9yIHJldmlzaW9uIDQuIEVORVRDIGlzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjEyLjY2ODA2OTU0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU0NjU1ODE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkFuYWx5emluZyB0aGUgRU5FVEM0IERyaXZlciBGaXgqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IHJlbGF0ZWQgdG8gdGhlIGBOWFBfRU5FVEM0YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGVyZSdzIGEgcGF0Y2ggYWRkcmVzc2luZyBhIGRpdmlzaW9uLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoZSBgZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvbmAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGlzc3VlIGFyaXNlcyB3aGVuIGBwZi1cdTAwM2VjYXBzLm51bV92c2lgIGlzIHplcm8sIHdoaWNoIGxpa2VseSBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBwcm9iaW5nLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBidWcsIGFuZCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb25lIHRvIHVuZGVyc3RhbmQuXG5cblRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gLCBpcyBjYWxsZWQgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgc28gSSdsbCB3YW50IHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gYXJvdW5kIHRoYXQgcGFydC4gVGhlIGNvZGUgbWVudGlvbnMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgcHJvYmUsIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIG1vcmUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIGNhbGxzIGFyb3VuZCB0aGlzIGNhbGwuIEkgd2lsbCBwcm9iYWJseSB3YW50IHRvIGNoZWNrIGBlbmV0YzRfcGZfcHJvYmVgIGFuZCBgZW5ldGM0X3BmX2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjIzLjIxNDYzMDkxMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjY1NzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlhQX0VORVRDNFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25cIixcbiAgICBcImVuZXRjNF9hbGxvY2F0ZV9zaV9yaW5nc1wiLFxuICAgIFwiZW5ldGM0X2NvbmZpZ3VyZV9wb3J0X3NpXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRcIixcbiAgICBcImVuZXRjNF9wZl9pbml0XCIsXG4gICAgXCJlbmV0YzRfcGZfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIGluIGBlbmV0YzRfZGVmYXVsdF9yaW5nc19hbGxvY2F0aW9uYCBkdXJpbmcgdGhlIFBDSSBwcm9iZSBvZiB0aGUgRnJlZXNjYWxlIEVORVRDNCBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOWFBfRU5FVEM0XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW5ldGM0X2RlZmF1bHRfcmluZ3NfYWxsb2NhdGlvblwiLFxuICAgIFwiZW5ldGM0X2FsbG9jYXRlX3NpX3JpbmdzXCIsXG4gICAgXCJlbmV0YzRfY29uZmlndXJlX3BvcnRfc2lcIixcbiAgICBcImVuZXRjNF9jb25maWd1cmVfcG9ydFwiLFxuICAgIFwiZW5ldGM0X3BmX2luaXRcIixcbiAgICBcImVuZXRjNF9wZl9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gYGVuZXRjNF9kZWZhdWx0X3JpbmdzX2FsbG9jYXRpb25gIGR1cmluZyB0aGUgUENJIHByb2JlIG9mIHRoZSBGcmVlc2NhbGUgRU5FVEM0IGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[1] Phase: Succeeded StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 07:52:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 07:52:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2] Phase: Succeeded StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 07:52:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 07:52:19 +0000 UTC FinishedAt: 2026-06-24 07:52:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow95tbj/series-workflow95tbj-convert-artifact-2921291169/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 07:52:48 +0000 UTC FinishedAt: 2026-06-24 08:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 07:52:48 +0000 UTC FinishedAt: 2026-06-24 08:17:54 +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:*54a019c8-b7f6-4c9d-9ab6-027957bc959d,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-workflow95tbj/series-workflow95tbj-convert-artifact-2921291169/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": "4fdbaac0-ad35-4b73-85bb-cf94f50098a8", "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-workflow95tbj/series-workflow95tbj-build-action-2392863951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 07:52:48 +0000 UTC FinishedAt: 2026-06-24 08:17:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*54a019c8-b7f6-4c9d-9ab6-027957bc959d,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-workflow95tbj/series-workflow95tbj-convert-artifact-2921291169/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": "4fdbaac0-ad35-4b73-85bb-cf94f50098a8", "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-workflow95tbj/series-workflow95tbj-build-action-2392863951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 08:17:54 +0000 UTC FinishedAt: 2026-06-24 08:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 08:17:55 +0000 UTC FinishedAt: 2026-06-24 08:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 08:17:55 +0000 UTC FinishedAt: 2026-06-24 08:18:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 08:17:55 +0000 UTC FinishedAt: 2026-06-24 08:18:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow95tbj/series-workflow95tbj-convert-artifact-3993309684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 08:18:29 +0000 UTC FinishedAt: 2026-06-24 08:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 08:18:29 +0000 UTC FinishedAt: 2026-06-24 08:19:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4fdbaac0-ad35-4b73-85bb-cf94f50098a8,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-workflow95tbj/series-workflow95tbj-build-action-2392863951/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-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 08:20:06 +0000 UTC FinishedAt: 2026-06-24 08:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:20:06 +0000 UTC FinishedAt: 2026-06-24 08:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 08:20:06 +0000 UTC FinishedAt: 2026-06-24 08:48:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 08:20:06 +0000 UTC FinishedAt: 2026-06-24 08:48:25 +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:*54a019c8-b7f6-4c9d-9ab6-027957bc959d,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-workflow95tbj/series-workflow95tbj-convert-artifact-3993309684/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": "c230c986-77e5-410b-bdb4-27b685bc7a9f", "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-workflow95tbj/series-workflow95tbj-build-action-2722383552/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 08:20:07 +0000 UTC FinishedAt: 2026-06-24 08:47:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*54a019c8-b7f6-4c9d-9ab6-027957bc959d,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-workflow95tbj/series-workflow95tbj-convert-artifact-3993309684/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": "c230c986-77e5-410b-bdb4-27b685bc7a9f", "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-workflow95tbj/series-workflow95tbj-build-action-2722383552/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 08:48:25 +0000 UTC FinishedAt: 2026-06-24 08:48:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 08:48:25 +0000 UTC FinishedAt: 2026-06-24 08:48:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 08:48:25 +0000 UTC FinishedAt: 2026-06-24 08:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 08:48:25 +0000 UTC FinishedAt: 2026-06-24 08:50:11 +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:*c230c986-77e5-410b-bdb4-27b685bc7a9f,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-workflow95tbj/series-workflow95tbj-build-action-2722383552/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-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +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":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*4fdbaac0-ad35-4b73-85bb-cf94f50098a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c230c986-77e5-410b-bdb4-27b685bc7a9f,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-workflow95tbj/series-workflow95tbj-build-action-2392863951/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-workflow95tbj/series-workflow95tbj-build-action-2722383552/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:50:28 +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":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow95tbj/series-workflow95tbj-convert-artifact-3725212189/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:50:21 +0000 UTC FinishedAt: 2026-06-24 08:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 08:50:31 +0000 UTC FinishedAt: 2026-06-24 08:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95tbj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["enetc4_default_rings_allocation","enetc4_allocate_si_rings","enetc4_configure_port_si","enetc4_configure_port","enetc4_pf_init","enetc4_pf_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["NXP_ENETC4"],"series_id":"dce3339c-ece0-43ba-874b-2bb03d0d5ac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 08:50:31 +0000 UTC FinishedAt: 2026-06-24 08:52:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4fdbaac0-ad35-4b73-85bb-cf94f50098a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c230c986-77e5-410b-bdb4-27b685bc7a9f,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-workflow95tbj/series-workflow95tbj-build-action-2392863951/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-workflow95tbj/series-workflow95tbj-build-action-2722383552/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-workflow95tbj/series-workflow95tbj-convert-artifact-3725212189/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,}