Name: series-workflowkcgdt Phase: Succeeded StartedAt: 2026-06-20 13:29:00 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[0] Phase: Succeeded StartedAt: 2026-06-20 13:29:00 +0000 UTC FinishedAt: 2026-06-20 13:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 13:29:00 +0000 UTC FinishedAt: 2026-06-20 13:49:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOSM", "WWAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOSM", "WWAN" ], "series_id": "26343f80-d8ee-48a3-91ff-90b859e52680" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mux_dl_process_dg", "mux_dl_adb_decode" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPU00mIzM0OywKICAgICYjMzQ7V1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O211eF9kbF9wcm9jZXNzX2RnJiMzNDssCiAgICAmIzM0O211eF9kbF9hZGJfZGVjb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMTM6NDg6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jIGIvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jXG5pbmRleCBiZmY0NmY3Y2E1OWYzZi4uZmY5YTRiYzUyZjI5MzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xuQEAgLTU1MywxOSAmIzQzOzU1MywyMSBAQCBzdGF0aWMgaW50IG11eF9kbF9wcm9jZXNzX2RnKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IG11eF9hZGJoICphZGJoLFxuIFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9vZl9kZzsgaSYjNDM7JiM0MzssIGRnJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpXG4tXHRcdFx0XHRcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpXG4mIzQzO1x0XHR1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleCk7XG4mIzQzO1xuJiM0MztcdFx0ZGdfbGVuID0gbGUxNl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1fbGVuZ3RoKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGdfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXG4tXHRcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cbi1cdFx0aWYgKGxlMzJfdG9fY3B1KGRnLVx1MDAzZWRhdGFncmFtX2luZGV4KSBcdTAwM2U9XG4tXHRcdFx0XHRcdGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xuJiM0MztcdFx0LyogSXMgdGhlIHBhY2tldCBpbnNpZGUgb2YgdGhlIEFEQiBhbmQgdGhlIHJlY2VpdmVkIHNrYiA/ICovXG4mIzQzO1x0XHRpZiAoZGdfaW5kZXggXHUwMDNlPSBsZTMyX3RvX2NwdShhZGJoLVx1MDAzZWJsb2NrX2xlbmd0aCkgfHxcbiYjNDM7XHRcdCAgICBkZ19pbmRleCBcdTAwM2U9IHNrYi1cdTAwM2VsZW4gfHxcbiYjNDM7XHRcdCAgICBkZ19sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBkZ19pbmRleCB8fFxuJiM0MztcdFx0ICAgIGRsX2hlYWRfcGFkX2xlbiBcdTAwM2U9IGRnX2xlbikge1xuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cGFja2V0X29mZnNldCA9XG4tXHRcdFx0XHRsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleCkgJiM0Mztcbi1cdFx0XHRcdGRsX2hlYWRfcGFkX2xlbjtcbi1cdFx0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuJiM0MztcdFx0XHRwYWNrZXRfb2Zmc2V0ID0gZGdfaW5kZXggJiM0MzsgZGxfaGVhZF9wYWRfbGVuO1xuIFx0XHRcdC8qIFBhc3MgdGhlIHBhY2tldCB0byB0aGUgbmV0aWYgbGF5ZXIuICovXG4gXHRcdFx0cmMgPSBpcGNfbXV4X25ldF9yZWNlaXZlKGlwY19tdXgsIGlmX2lkLCBpcGNfbXV4LVx1MDAzZXd3YW4sXG4gXHRcdFx0XHRcdFx0IHBhY2tldF9vZmZzZXQsXG5AQCAtNTk1LDYgJiM0Mzs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0YmxvY2sgPSBza2ItXHUwMDNlZGF0YTtcbiBcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XG4gXG4mIzQzO1x0LyogVGhlIGJsb2NrIGhlYWRlciBpdHNlbGYgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi9cbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpXG4mIzQzO1x0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuJiM0MztcbiBcdC8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqL1xuIFx0YWR0aF9pbmRleCA9IGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlZmlyc3RfdGFibGVfaW5kZXgpO1xuIFxuQEAgLTYwNiw2ICYjNDM7NjEyLDExIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcbiBcbiBcdC8qIExvb3AgdGhyb3VnaCBtaXhlZCBzZXNzaW9uIHRhYmxlcy4gKi9cbiBcdHdoaWxlIChhZHRoX2luZGV4KSB7XG4mIzQzO1x0XHQvKiBUaGUgdGFibGUgaGVhZGVyIG11c3QgbGllIHdpdGhpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuJiM0MztcdFx0aWYgKGFkdGhfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpIHx8XG4mIzQzO1x0XHQgICAgYWR0aF9pbmRleCBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxuJiM0MztcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuJiM0MztcbiBcdFx0LyogR2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhYmxlIGhlYWRlci4gKi9cbiBcdFx0YWR0aCA9IChzdHJ1Y3QgbXV4X2FkdGggKikoYmxvY2sgJiM0MzsgYWR0aF9pbmRleCk7XG4gXG5AQCAtNjI5LDYgJiM0Mzs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbiBcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuIFxuJiM0MztcdFx0LyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovXG4mIzQzO1x0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gYWR0aF9pbmRleClcbiYjNDM7XHRcdFx0Z290byBhZGJfZGVjb2RlX2VycjtcbiYjNDM7XG4gXHRcdC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGRhdGFncmFtcy4gKi9cbiBcdFx0bnJfb2ZfZGcgPSAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIC1cbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtdXhfYWR0aCkpIC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMTM6NDg6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMKaW5kZXggYmZmNDZmN2NhNTlmM2YuLmZmOWE0YmM1MmYyOTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jCkBAIC01NTMsMTkgJiM0Mzs1NTMsMjEgQEAgc3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCwKIAl1MzIgcGFja2V0X29mZnNldCwgaSwgcmMsIGRnX2xlbjsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9vZl9kZzsgaSYjNDM7JiM0MzssIGRnJiM0MzsmIzQzOykgewotCQlpZiAobGUzMl90b19jcHUoZGctJmd0O2RhdGFncmFtX2luZGV4KQotCQkJCSZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpCiYjNDM7CQl1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy0mZ3Q7ZGF0YWdyYW1faW5kZXgpOwomIzQzOwomIzQzOwkJZGdfbGVuID0gbGUxNl90b19jcHUoZGctJmd0O2RhdGFncmFtX2xlbmd0aCk7CiYjNDM7CiYjNDM7CQlpZiAoZGdfaW5kZXggJmx0OyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSkKIAkJCWdvdG8gZGdfZXJyb3I7CiAKLQkJLyogSXMgdGhlIHBhY2tldCBpbnNpZGUgb2YgdGhlIEFEQiAqLwotCQlpZiAobGUzMl90b19jcHUoZGctJmd0O2RhdGFncmFtX2luZGV4KSAmZ3Q7PQotCQkJCQlsZTMyX3RvX2NwdShhZGJoLSZndDtibG9ja19sZW5ndGgpKSB7CiYjNDM7CQkvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi8KJiM0MzsJCWlmIChkZ19pbmRleCAmZ3Q7PSBsZTMyX3RvX2NwdShhZGJoLSZndDtibG9ja19sZW5ndGgpIHx8CiYjNDM7CQkgICAgZGdfaW5kZXggJmd0Oz0gc2tiLSZndDtsZW4gfHwKJiM0MzsJCSAgICBkZ19sZW4gJmd0OyBza2ItJmd0O2xlbiAtIGRnX2luZGV4IHx8CiYjNDM7CQkgICAgZGxfaGVhZF9wYWRfbGVuICZndDs9IGRnX2xlbikgewogCQkJZ290byBkZ19lcnJvcjsKIAkJfSBlbHNlIHsKLQkJCXBhY2tldF9vZmZzZXQgPQotCQkJCWxlMzJfdG9fY3B1KGRnLSZndDtkYXRhZ3JhbV9pbmRleCkgJiM0MzsKLQkJCQlkbF9oZWFkX3BhZF9sZW47Ci0JCQlkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy0mZ3Q7ZGF0YWdyYW1fbGVuZ3RoKTsKJiM0MzsJCQlwYWNrZXRfb2Zmc2V0ID0gZGdfaW5kZXggJiM0MzsgZGxfaGVhZF9wYWRfbGVuOwogCQkJLyogUGFzcyB0aGUgcGFja2V0IHRvIHRoZSBuZXRpZiBsYXllci4gKi8KIAkJCXJjID0gaXBjX211eF9uZXRfcmVjZWl2ZShpcGNfbXV4LCBpZl9pZCwgaXBjX211eC0mZ3Q7d3dhbiwKIAkJCQkJCSBwYWNrZXRfb2Zmc2V0LApAQCAtNTk1LDYgJiM0Mzs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LAogCWJsb2NrID0gc2tiLSZndDtkYXRhOwogCWFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7CiAKJiM0MzsJLyogVGhlIGJsb2NrIGhlYWRlciBpdHNlbGYgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpCiYjNDM7CQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCS8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqLwogCWFkdGhfaW5kZXggPSBsZTMyX3RvX2NwdShhZGJoLSZndDtmaXJzdF90YWJsZV9pbmRleCk7CiAKQEAgLTYwNiw2ICYjNDM7NjEyLDExIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwKIAogCS8qIExvb3AgdGhyb3VnaCBtaXhlZCBzZXNzaW9uIHRhYmxlcy4gKi8KIAl3aGlsZSAoYWR0aF9pbmRleCkgewomIzQzOwkJLyogVGhlIHRhYmxlIGhlYWRlciBtdXN0IGxpZSB3aXRoaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi8KJiM0MzsJCWlmIChhZHRoX2luZGV4ICZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHwKJiM0MzsJCSAgICBhZHRoX2luZGV4ICZndDsgc2tiLSZndDtsZW4gLSBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkKJiM0MzsJCQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCQkvKiBHZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgdGFibGUgaGVhZGVyLiAqLwogCQlhZHRoID0gKHN0cnVjdCBtdXhfYWR0aCAqKShibG9jayAmIzQzOyBhZHRoX2luZGV4KTsKIApAQCAtNjI5LDYgJiM0Mzs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LAogCQlpZiAobGUxNl90b19jcHUoYWR0aC0mZ3Q7dGFibGVfbGVuZ3RoKSAmbHQ7IHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKQogCQkJZ290byBhZGJfZGVjb2RlX2VycjsKIAomIzQzOwkJLyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovCiYjNDM7CQlpZiAobGUxNl90b19jcHUoYWR0aC0mZ3Q7dGFibGVfbGVuZ3RoKSAmZ3Q7IHNrYi0mZ3Q7bGVuIC0gYWR0aF9pbmRleCkKJiM0MzsJCQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCQkvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBkYXRhZ3JhbXMuICovCiAJCW5yX29mX2RnID0gKGxlMTZfdG9fY3B1KGFkdGgtJmd0O3RhYmxlX2xlbmd0aCkgLQogCQkJCQlzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkgLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV1dBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHRoaXMgaXMgaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIg4oCTIElQQyBvdmVyIFNoYXJlZCBNZW1vcnksIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gQWx3YXlzIGEgZ29vZCB0aGluZyB0byBzZWUgbW9yZSBkZWZlbnNpdmUgY29kaW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gZmlndXJlIG91dCBhIGZldyB0aGluZ3MuIEZpcnN0LCBpcyB0aGlzIGNvZGUgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc3lzdGVtPyBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gYWN0dWFsbHkgKnVzZSogdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmVjb25kaXRpb25zIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBJIGFzc2VzcyB0aGUgc2NvcGUgb2YgdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV4X2RsX3Byb2Nlc3NfZGcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01MTg9c3RhdGljIHZvaWQgaXBjX211eF9kbF9hY2JfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTQ3LS8qIHByb2Nlc3MgZGF0YWdyYW0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo1NDg6c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01NDktXHRcdFx0ICAgICBzdHJ1Y3QgbXV4X2FkdGhfZGcgKmRnLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjUtXHRcdGRnID0gYWR0aC1cdTAwM2VkZztcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2NjY6XHRcdGlmIChtdXhfZGxfcHJvY2Vzc19kZyhpcGNfbXV4LCBhZGJoLCBkZywgc2tiLCBpZl9pZCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjctXHRcdFx0XHQgICAgICBucl9vZl9kZykgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgYGRyaXZlcnMvbmV0L3d3YW4vaW9zbS9gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBqdW1wIHN0cmFpZ2h0IGludG8gY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL25ldC93d2FuL2lvc20vYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciBzZXQgb2YgV1dBTiBkcml2ZXJzLCB3aGljaCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBmZWF0dXJlIGVuYWJsZW1lbnQsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBidWlsZC10aW1lIGNvbnRyb2xzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhlIG92ZXJhbGwgbmV0d29yayBzdWJzeXN0ZW0gYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGhvb2tzIGFyZSBhdmFpbGFibGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBhbmQgYWN0aXZhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9TTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBpbmZvcm1hdGlvbjoKCioqS2NvbmZpZyBJbnNwZWN0aW9uOiB3d2FuIGRyaXZlcnMqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB3d2FuIGRyaXZlciBjb25maWd1cmF0aW9uIGluIHRoZSBrZXJuZWwuIEZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlc2Ugc3BlY2lmaWMgd2lyZWxlc3Mgd2lkZSBhcmVhIG5ldHdvcmsgZHJpdmVycy4gVGhpcyBmaWxlIHdpbGwgdGVsbCBtZSB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSwgdGhlIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGdlbmVyYWwgY29udGV4dCBmb3IgdGhlc2Ugd3dhbiBkcml2ZXJzIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEl0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJIGV4cGVjdCB0byBmaW5kIHRoaW5ncyBsaWtlIGZlYXR1cmUgdG9nZ2xlcywgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MsIGFuZCBwcm9iYWJseSBzb21lIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQgY2VsbHVsYXIgbW9kZW0gaW1wbGVtZW50YXRpb25zIG9yIG5ldHdvcmsgcHJvdG9jb2xzLiBUaW1lIHRvIG9wZW4gaXQgdXAgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nzg9Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5Njpjb25maWcgSU9TTVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7SU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIElPU00qKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPU01gLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIG15IHJlc2VhcmNoIGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGFyY2hpdGVjdHVyZSBpcyBwYXJhbW91bnQgdG8gb3B0aW1pemF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgd2hhdCB0aGlzIHNwZWNpZmljIG1vZHVsZSwgYElPU01gLCByZWxpZXMgb24uIEkgbmVlZCB0byBrbm93IHdoaWNoIG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3IgZXh0ZXJuYWwgY29tcG9uZW50cyBpdCB1c2VzLiBUaGlzIHdpbGwgaGVscCBtZSBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHBvaW50cywgYW5kIHVsdGltYXRlbHksIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgb3ZlcmFsbCBwZXJmb3JtYW5jZSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBUaGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSBhcyBhIHdob2xlIGFuZCBiZWluZyBlZmZlY3RpdmUgd2l0aGluIG15IHJvbGUgYXMgYW4gZXhwZXJ0LiBUaGlzIGNvdWxkIGVudGFpbCBsb29raW5nIGF0IHRoZSBidWlsZCBzY3JpcHRzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBvciBldmVuIGRlbHZpbmcgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLCBpZiBuZWNlc3NhcnkuIFRoZSBnb2FsIGlzIHRvIGNyZWF0ZSBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIGRldmVsb3Agc29tZSBzcGVjaWZpYyBpZGVhcyBvbiB3aGVyZSB0aGUgbmV4dCBvcHRpbWl6YXRpb24gd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk2Olx0Y29uZmlnIElPU01cbiAgOTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gUENJXG4gIDk5Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAxMDA6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbiAxMDM6XHRcbiAxMDQ6XHRcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXG4gMTA1Olx0XHQgIExpbnV4IHNheSBZL00gaGVyZS5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMDg6XHRcbiAxMDk6XHRjb25maWcgTVRLX1Q3WFhcbiAxMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuIDExMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMTI6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgRW5hYmxlcyBNZWRpYVRlayBQQ0llIGJhc2VkIDVHIFdXQU4gbW9kZW0gKFQ3eHggc2VyaWVzKSBkZXZpY2UuXG4gMTE1Olx0XHQgIEFkYXB0cyBXV0FOIGZyYW1ld29yayBhbmQgcHJvdmlkZXMgbmV0d29yayBpbnRlcmZhY2UgbGlrZSB3d2FuMFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaU9TTSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBJT1NNYCBkcml2ZXIsIHdoaWNoIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGFuIEludGVsIE0uMiBXV0FOIGRldmljZSBhbmQgcmVsaWVzIG9uIHRoZSBgUENJYCBidXMuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuIGdldCB0byB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz8gSWYgc28sIHRoZW4gaXQmIzM5O3Mgd29ydGggY2hlY2tpbmcgaWYgaXQgaGFzIGFueSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgb3IgZnV6emVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIHZoY2kgb3IgcGNpIGZ1enplci4gV2FpdCBhIHNlY29uZCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBhIFBDSSBmdXp6ZXI/IFllcywgaXQgZG9lcyBzdXBwb3J0IGZ1enppbmcgUENJIGRldmljZXMgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBpcyBhIHZlcnkgdXNlZnVsIHByaW1pdGl2ZS4KClNvLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgYGlvc21gIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIHRhcmdldGVkLiBUaGUgZmFjdCB0aGF0IEkmIzM5O20gc2VlaW5nIGEgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBzdWdnZXN0cyB0aGF0IHN5emthbGxlciBoYXMgaW5kZWVkIGJlZW4gZmluZGluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIE15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIHJlbGV2YW50IGNvZGUsIGxldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNgLiBJIG5lZWQgdG8gZXhhbWluZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZGF0YSBjb21pbmcgKmZyb20qIHRoZSBkZXZpY2UsIHN1Y2ggYXMgYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGJlY2F1c2UgdGhleSYjMzk7cmUgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nIHRoZSBkb3dubGluayBkYXRhLiBOb3csIGdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHRoYXQgZGF0YSBpcyBsaWtlbHkgYmVpbmcgdHJhbnNmZXJyZWQgdmlhIERNQSBvciBNTUlPLiBTbyBJIG11c3QgaW52ZXN0aWdhdGUgaG93IGBtdXhfZGxfYWRiX2RlY29kZWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdnVsbmVyYWJsZSB0aGlzIGFyZWEgY291bGQgYmUgdG8gZnV6emVkIGlucHV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV4X2RsX2FkYl9kZWNvZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01NDg9c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTg1LS8qIERlY29kZSBhbiBhZ2dyZWdhdGVkIGRhdGEgYmxvY2suICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NTg2OnN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01ODctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM9Njg3PXZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02OTgtXHRjYXNlIElPU01fQUdHUl9NVVhfU0lHX0FEQkg6XHQvKiBBZ2dyZWdhdGVkIERhdGEgQmxvY2sgSGVhZGVyICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6Njk5Olx0XHRtdXhfZGxfYWRiX2RlY29kZShpcGNfbXV4LCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTcwMC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgYGlwY19tdXhfZGxfZGVjb2RlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgc2VlIGBpcGNfbXV4X2RsX2RlY29kZWAsIEkgaW1tZWRpYXRlbHkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgaXRzIHJvbGUgaW4gdGhlIEludGVyLVByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoSVBDKSBtdWx0aXBsZXhpbmcgYW5kIGRvd25saW5rIGRlY29kaW5nLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBjcnVjaWFsIHRhc2sgb2YgcmVjZWl2aW5nIGRhdGEgZnJvbSBtdWx0aXBsZSBzb3VyY2VzIChtdWx0aXBsZXhpbmcpIHNlbnQgdmlhIElQQywgYW5kIHRoZW4gdW5wYWNraW5nIChkZWNvZGluZykgdGhlIGRvd25saW5rIGluZm9ybWF0aW9uLiBUaGUgJiMzNDtkbCYjMzQ7IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSByZWNlaXZpbmcgZGF0YSB0aGF0IGlzIGdvaW5nIGRvd24sIGkuZS4sIGZyb20gYSBjZW50cmFsaXplZCBzb3VyY2UgdG8gZGlzdHJpYnV0ZWQgbm9kZXMuIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciBhIGZldyB0aGluZ3M6CiogICAqKk11bHRpcGxleGluZyBTY2hlbWU6KiogV2hhdCBhcmUgdGhlIHN1cHBvcnRlZCBtZXRob2RzIGZvciBtdWx0aXBsZXhpbmc/IElzIGl0IHRpbWUtZGl2aXNpb24gbXVsdGlwbGV4aW5nIChURE0pLCBmcmVxdWVuY3ktZGl2aXNpb24gbXVsdGlwbGV4aW5nIChGRE0pLCBjb2RlLWRpdmlzaW9uIG11bHRpcGxleGluZyAoQ0RNKSwgb3Igc29tZXRoaW5nIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWM/CiogICAqKkRlY29kaW5nIEFsZ29yaXRobToqKiBXaGF0IHNwZWNpZmljIGFsZ29yaXRobXMgb3IgcHJvdG9jb2xzIGFyZSBlbXBsb3llZCBmb3IgZGVjb2Rpbmc/IElzIGl0IHVzaW5nIGEgc3RhbmRhcmQgZm9ybWF0IGxpa2UgcHJvdG9idWYgb3Igc29tZXRoaW5nIGN1c3RvbT8gQXJlIHRoZXJlIGVycm9yLWNvcnJlY3Rpb24gbWVjaGFuaXNtcyBidWlsdCBpbj8KKiAgICoqRGF0YSBTdHJ1Y3R1cmU6KiogVGhlIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCBhbmQgdGhlIG91dHB1dC4gSG93IGlzIHRoZSBkYXRhIHBhY2tlZD8gRG9lcyBpdCByZXF1aXJlIGNvbnRleHQtYXdhcmUgZGVjb2RpbmcgYmFzZWQgb24gaGVhZGVycyBvciBtZXRhZGF0YT8KKiAgICoqRWZmaWNpZW5jeToqKiBIb3cgZG9lcyBpdCBkZWFsIHdpdGggcGVyZm9ybWFuY2UgY29uc3RyYWludHMgaW4gSVBDIGVudmlyb25tZW50cz8gSG93IGRvZXMgaXQgaGFuZGxlIGVycm9ycyBhbmQgd2hhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgdGhyb3VnaHB1dD8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcz8KCkkgd291bGQgaW1tZWRpYXRlbHkgd2FudCB0byBrbm93IGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIElQQyBmcmFtZXdvcmsuIFdoZXJlIGRvZXMgaXQgZml0IGluIHRoZSBwaXBlbGluZT8gV2hhdCBhcmUgdGhlIGRhdGEgZGVwZW5kZW5jaWVzPyBXaGF0IGtpbmQgb2YgZXJyb3JzIGRvZXMgaXQgcmVwb3J0LCBhbmQgaG93IGFyZSB0aG9zZSBoYW5kbGVkPyBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdmlzdWFsaXplIHRoaXMgZnVuY3Rpb24mIzM5O3MgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCBhbmQgd2hhdCBpbXBhY3QgaXQgaGFzIG9uIHRoZSBzeXN0ZW0mIzM5O3MgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBjX211eF9kbF9kZWNvZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9Mjk4PXN0YXRpYyB2b2lkIGlwY19pbWVtX2RsX3NrYl9wcm9jZXNzKHN0cnVjdCBpb3NtX2ltZW0gKmlwY19pbWVtLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMzI0LVx0XHRpZiAocGlwZS1cdTAwM2VjaGFubmVsLVx1MDAzZWlmX2lkID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzozMjU6XHRcdFx0aXBjX211eF9kbF9kZWNvZGUoaXBjX2ltZW0tXHUwMDNlbXV4LCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02ODEtLyoqXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NjgyOiAqIGlwY19tdXhfZGxfZGVjb2RlIC0gIFJvdXRlIHRoZSBETCBwYWNrZXQgdGhyb3VnaCB0aGUgSVAgTVVYIGxheWVyXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNjgzLSAqICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiBIZWFkZXIuXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4Ni0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2ODc6dm9pZCBpcGNfbXV4X2RsX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNjg4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmg9MjU4PXVuaW9uIG11eF90eXBlX2hlYWRlciB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2Mi1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuaDoyNjM6dm9pZCBpcGNfbXV4X2RsX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjoKCioqUmVhY2hpbmcgdGhlIFRhcmdldCBhbmQgUGxhbm5pbmcgdGhlIEZ1enoqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSB2dWxuZXJhYmlsaXR5IHRoYXQsIHdpdGhvdXQgYSBkb3VidCwgd2UgY2FuIHJlYWNoIHRocm91Z2ggdGhlIFBDSSBpbnRlcmZhY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIGluY29taW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlLCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggKmZ1bmN0aW9uYWwqIGFuZCBwb2ludHMgZGlyZWN0bHkgdG8gYSBmdXp6aW5nIHRhcmdldC4gVGhlIGNvbmZpZyBvcHRpb24gbmVjZXNzYXJ5IHRvIGdldCB0aGlzIGFjdGl2ZSBhcHBlYXJzIHRvIGJlIGBJT1NNYCwgd2l0aCBgV1dBTmAgcG9zc2libHkgcmVxdWlyZWQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGBXV0FOYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgb3IgaWYgYElPU01gIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nzg9Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5Njpjb25maWcgSU9TTVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7SU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTg3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqV1dBTiBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBvbiB0aGUgYWdlbmRhIGlzIG5haWxpbmcgZG93biB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIFdXQU4uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgdGhlIGNvcmUgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIFdXQU4gZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGZpbGUgd2lsbCBiZSB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgc3ltYm9scywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZmxhZ3MgdGhhdCBjb250cm9sIFdXQU4mIzM5O3MgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbiwgYW5kIEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBpcyBhcmNoaXRlY3RlZCBpbiB0ZXJtcyBvZiBjb25maWd1cmFibGUgZmVhdHVyZXMuIEkmIzM5O20gYWxzbyByZWFkeSB0byB0cmFjZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMgaWYgbmVlZGVkLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbWlnaHQgaW52b2x2ZSBoYXJkd2FyZSBlbmFibGVtZW50IG9yIHNwZWNpZmljIHBsYXRmb3JtIHN1cHBvcnQuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2xzIFdXQU4mIzM5O3MgcHJlc2VuY2UsIGFuZCBob3cgZ3JhbnVsYXIgd2UgY2FuIGdldCB3aXRoIGl0cyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY9bWVudSBcJiMzNDtXaXJlbGVzcyBXQU5cJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjg6Y29uZmlnIFdXQU5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7V1dBTiBEcml2ZXIgQ29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz0xOD1pZiBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjMxOmNvbmZpZyBXV0FOX0hXU0lNXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgV1dBTiBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ3MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucywgYFdXQU5gIGFuZCBgSU9TTWAuIFJpZ2h0LCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbiBhcyBkZXBlbmRlbmNpZXM/IEFoLCB5ZXMsIGBJT1NNYCBkZXBlbmRzIG9uIGBQQ0lgLCBJIHNlZS4gR29vZCwgZ29vZC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBJdCBzZWVtcyBsaWtlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIEkgc2hvdWxkIHByb2JhYmx5IGV4YW1pbmUgdGhvc2UgaW4gZGV0YWlsLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgaW4gdGhpcyByb3VuZC4gTm8sIGp1c3QgdGhvc2UgdHdvLCBhcyBleHBlY3RlZC4KClJpZ2h0LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSBjb25maWcgc2l0dWF0aW9uIGNvcnJlY3QgaW4gbXkgaGVhZC4gYElPU01gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBpbiBwbGF5IGhlcmUuIGBXV0FOYCBpcyBpdHMgcGFyZW50LCBhbmQgaXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgYElPU01gIHRvIGJlIGVuYWJsZWQsIGluIG90aGVyIHdvcmRzIGBXV0FOYCBlbmFibGVzIGBJT1NNYCAuIFNvLCBgSU9TTWAgYW5kIGBXV0FOYCBtdXN0IGJvdGggYmUgZW5hYmxlZC4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjb25maWRlbnQsIGxldCYjMzk7cyBhbHNvIGludmVzdGlnYXRlIHRoZSBNYWtlZmlsZSBhdCBgZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZWAsIHRvIGVuc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBXV0FOIGRldmljZSBkcml2ZXJzLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfV1dBTikgJiM0Mzs9IHd3YW4ub1xuICAgNzpcdHd3YW4tb2JqcyAmIzQzOz0gd3dhbl9jb3JlLm9cbiAgIDg6XHRcbiAgIDk6XHRvYmotJChDT05GSUdfV1dBTl9IV1NJTSkgJiM0Mzs9IHd3YW5faHdzaW0ub1xuICAxMDpcdFxuICAxMTpcdG9iai0kKENPTkZJR19NSElfV1dBTl9DVFJMKSAmIzQzOz0gbWhpX3d3YW5fY3RybC5vXG4gIDEyOlx0b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbiAgMTM6XHRvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgJiM0Mzs9IHFjb21fYmFtX2RtdXgub1xuICAxNDpcdG9iai0kKENPTkZJR19SUE1TR19XV0FOX0NUUkwpICYjNDM7PSBycG1zZ193d2FuX2N0cmwub1xuICAxNTpcdG9iai0kKENPTkZJR19JT1NNKSAmIzQzOz0gaW9zbS9cbiAgMTY6XHRvYmotJChDT05GSUdfTVRLX1Q3WFgpICYjNDM7PSB0N3h4L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM1CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJT1NNL1dXQU4gUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgYSBzZWNvbmQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBJT1NNYCBhbmQgYFdXQU5gIGNvbnRleHQuIEdvb2QuIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggY29uY2VybmluZyBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBkb3duc3RyZWFtIGRhdGEgZGVjb2RpbmcgcGF0aC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB0aWdodGVuIHVwLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggZGF0YSBjb21pbmcgaW4gb3ZlciBQQ0kuCgpUaGlzIG1lYW5zIHdlIGhhdmUgYSBjbGVhciBhdHRhY2sgc3VyZmFjZSB0byBpbnZlc3RpZ2F0ZS4gVGhlIHBhdGNoJiMzOTtzIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBBbmQgdGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBxdWl0ZSBzcGVjaWZpYzogYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2UgbmVlZCB0byB0YXJnZXQgZHVyaW5nIGZ1enppbmcsIHNwZWNpZmljYWxseS4gRmluYWxseSwgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgZXhwbGljaXRseSBgSU9TTWAgYW5kIGBXV0FOYCwgY29uZmlybWluZyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcuCgpUaGlzIGlzIGFsbCB2ZXJ5IHNvbGlkLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIGhlcmUuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHRlc3RpbmcgdG8gZW5zdXJlIHRoYXQgdGhlIGFkZGVkIGJvdW5kcyBjaGVja3MgYXJlIHN1ZmZpY2llbnQgYW5kIHJvYnVzdC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlIHNwZWNpZmljIGNvZGUgcmVnaW9ucyByZWZlcmVuY2VkIGJ5IHRob3NlIHN5bWJvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuNTU4ODM1MDk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODQ4NTIzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9TTVwiLFxuICAgIFwiV1dBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm11eF9kbF9wcm9jZXNzX2RnXCIsXG4gICAgXCJtdXhfZGxfYWRiX2RlY29kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuNTU4ODM5NjQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTgzMjE2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjQ4OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xcbmluZGV4IGJmZjQ2ZjdjYTU5ZjNmLi5mZjlhNGJjNTJmMjkzOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcXG5AQCAtNTUzLDE5ICs1NTMsMjEgQEAgc3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG4gXFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfb2ZfZGc7IGkrKywgZGcrKykge1xcbi1cXHRcXHRpZiAobGUzMl90b19jcHUoZGctXFx1MDAzZWRhdGFncmFtX2luZGV4KVxcbi1cXHRcXHRcXHRcXHRcXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxcbitcXHRcXHR1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1faW5kZXgpO1xcbitcXG4rXFx0XFx0ZGdfbGVuID0gbGUxNl90b19jcHUoZGctXFx1MDAzZWRhdGFncmFtX2xlbmd0aCk7XFxuK1xcbitcXHRcXHRpZiAoZGdfaW5kZXggXFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcXG4gXFx0XFx0XFx0Z290byBkZ19lcnJvcjtcXG4gXFxuLVxcdFxcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cXG4tXFx0XFx0aWYgKGxlMzJfdG9fY3B1KGRnLVxcdTAwM2VkYXRhZ3JhbV9pbmRleCkgXFx1MDAzZT1cXG4tXFx0XFx0XFx0XFx0XFx0bGUzMl90b19jcHUoYWRiaC1cXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xcbitcXHRcXHQvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi9cXG4rXFx0XFx0aWYgKGRnX2luZGV4IFxcdTAwM2U9IGxlMzJfdG9fY3B1KGFkYmgtXFx1MDAzZWJsb2NrX2xlbmd0aCkgfHxcXG4rXFx0XFx0ICAgIGRnX2luZGV4IFxcdTAwM2U9IHNrYi1cXHUwMDNlbGVuIHx8XFxuK1xcdFxcdCAgICBkZ19sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIGRnX2luZGV4IHx8XFxuK1xcdFxcdCAgICBkbF9oZWFkX3BhZF9sZW4gXFx1MDAzZT0gZGdfbGVuKSB7XFxuIFxcdFxcdFxcdGdvdG8gZGdfZXJyb3I7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHBhY2tldF9vZmZzZXQgPVxcbi1cXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1faW5kZXgpICtcXG4tXFx0XFx0XFx0XFx0ZGxfaGVhZF9wYWRfbGVuO1xcbi1cXHRcXHRcXHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1fbGVuZ3RoKTtcXG4rXFx0XFx0XFx0cGFja2V0X29mZnNldCA9IGRnX2luZGV4ICsgZGxfaGVhZF9wYWRfbGVuO1xcbiBcXHRcXHRcXHQvKiBQYXNzIHRoZSBwYWNrZXQgdG8gdGhlIG5ldGlmIGxheWVyLiAqL1xcbiBcXHRcXHRcXHRyYyA9IGlwY19tdXhfbmV0X3JlY2VpdmUoaXBjX211eCwgaWZfaWQsIGlwY19tdXgtXFx1MDAzZXd3YW4sXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBwYWNrZXRfb2Zmc2V0LFxcbkBAIC01OTUsNiArNTk3LDEwIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcXG4gXFx0YmxvY2sgPSBza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XFxuIFxcbitcXHQvKiBUaGUgYmxvY2sgaGVhZGVyIGl0c2VsZiBtdXN0IGZpdCBpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcXG4rXFx0XFx0Z290byBhZGJfZGVjb2RlX2VycjtcXG4rXFxuIFxcdC8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqL1xcbiBcXHRhZHRoX2luZGV4ID0gbGUzMl90b19jcHUoYWRiaC1cXHUwMDNlZmlyc3RfdGFibGVfaW5kZXgpO1xcbiBcXG5AQCAtNjA2LDYgKzYxMiwxMSBAQCBzdGF0aWMgdm9pZCBtdXhfZGxfYWRiX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsXFxuIFxcbiBcXHQvKiBMb29wIHRocm91Z2ggbWl4ZWQgc2Vzc2lvbiB0YWJsZXMuICovXFxuIFxcdHdoaWxlIChhZHRoX2luZGV4KSB7XFxuK1xcdFxcdC8qIFRoZSB0YWJsZSBoZWFkZXIgbXVzdCBsaWUgd2l0aGluIHRoZSByZWNlaXZlZCBza2IuICovXFxuK1xcdFxcdGlmIChhZHRoX2luZGV4IFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHxcXG4rXFx0XFx0ICAgIGFkdGhfaW5kZXggXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxcbitcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbitcXG4gXFx0XFx0LyogR2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhYmxlIGhlYWRlci4gKi9cXG4gXFx0XFx0YWR0aCA9IChzdHJ1Y3QgbXV4X2FkdGggKikoYmxvY2sgKyBhZHRoX2luZGV4KTtcXG4gXFxuQEAgLTYyOSw2ICs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbiBcXHRcXHRpZiAobGUxNl90b19jcHUoYWR0aC1cXHUwMDNldGFibGVfbGVuZ3RoKSBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxcbiBcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbiBcXG4rXFx0XFx0LyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovXFxuK1xcdFxcdGlmIChsZTE2X3RvX2NwdShhZHRoLVxcdTAwM2V0YWJsZV9sZW5ndGgpIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSBhZHRoX2luZGV4KVxcbitcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbitcXG4gXFx0XFx0LyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZGF0YWdyYW1zLiAqL1xcbiBcXHRcXHRucl9vZl9kZyA9IChsZTE2X3RvX2NwdShhZHRoLVxcdTAwM2V0YWJsZV9sZW5ndGgpIC1cXG4gXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBtdXhfYWR0aCkpIC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuOTc3ODk4NDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM2NTc3OTA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT1NNXCIsXG4gICAgXCJXV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXV4X2RsX3Byb2Nlc3NfZGdcIixcbiAgICBcIm11eF9kbF9hZGJfZGVjb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGRvd25saW5rIGRhdGEgZGVjb2RpbmcgcGF0aCBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlci4gVGhpcyBjb2RlIHByb2Nlc3NlcyBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZSB2aWEgUENJLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFiMGIxNWE5ZDZhMDdlMjI3OWNkOWFjOWRiYjk2YjI5ZWRiYTQyODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAxMzo0ODo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xuaW5kZXggYmZmNDZmN2NhNTlmM2YuLmZmOWE0YmM1MmYyOTM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcbkBAIC01NTMsMTkgKzU1MywyMSBAQCBzdGF0aWMgaW50IG11eF9kbF9wcm9jZXNzX2RnKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IG11eF9hZGJoICphZGJoLFxuIFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9vZl9kZzsgaSsrLCBkZysrKSB7XG4tXHRcdGlmIChsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleClcbi1cdFx0XHRcdFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcbitcdFx0dTMyIGRnX2luZGV4ID0gbGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpO1xuK1xuK1x0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuK1xuK1x0XHRpZiAoZGdfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXG4tXHRcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cbi1cdFx0aWYgKGxlMzJfdG9fY3B1KGRnLVx1MDAzZWRhdGFncmFtX2luZGV4KSBcdTAwM2U9XG4tXHRcdFx0XHRcdGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xuK1x0XHQvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi9cbitcdFx0aWYgKGRnX2luZGV4IFx1MDAzZT0gbGUzMl90b19jcHUoYWRiaC1cdTAwM2VibG9ja19sZW5ndGgpIHx8XG4rXHRcdCAgICBkZ19pbmRleCBcdTAwM2U9IHNrYi1cdTAwM2VsZW4gfHxcbitcdFx0ICAgIGRnX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIGRnX2luZGV4IHx8XG4rXHRcdCAgICBkbF9oZWFkX3BhZF9sZW4gXHUwMDNlPSBkZ19sZW4pIHtcbiBcdFx0XHRnb3RvIGRnX2Vycm9yO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdHBhY2tldF9vZmZzZXQgPVxuLVx0XHRcdFx0bGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpICtcbi1cdFx0XHRcdGRsX2hlYWRfcGFkX2xlbjtcbi1cdFx0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuK1x0XHRcdHBhY2tldF9vZmZzZXQgPSBkZ19pbmRleCArIGRsX2hlYWRfcGFkX2xlbjtcbiBcdFx0XHQvKiBQYXNzIHRoZSBwYWNrZXQgdG8gdGhlIG5ldGlmIGxheWVyLiAqL1xuIFx0XHRcdHJjID0gaXBjX211eF9uZXRfcmVjZWl2ZShpcGNfbXV4LCBpZl9pZCwgaXBjX211eC1cdTAwM2V3d2FuLFxuIFx0XHRcdFx0XHRcdCBwYWNrZXRfb2Zmc2V0LFxuQEAgLTU5NSw2ICs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0YmxvY2sgPSBza2ItXHUwMDNlZGF0YTtcbiBcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XG4gXG4rXHQvKiBUaGUgYmxvY2sgaGVhZGVyIGl0c2VsZiBtdXN0IGZpdCBpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuK1x0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuK1xuIFx0LyogUHJvY2VzcyB0aGUgYWdncmVnYXRlZCBkYXRhZ3JhbSB0YWJsZXMuICovXG4gXHRhZHRoX2luZGV4ID0gbGUzMl90b19jcHUoYWRiaC1cdTAwM2VmaXJzdF90YWJsZV9pbmRleCk7XG4gXG5AQCAtNjA2LDYgKzYxMiwxMSBAQCBzdGF0aWMgdm9pZCBtdXhfZGxfYWRiX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsXG4gXG4gXHQvKiBMb29wIHRocm91Z2ggbWl4ZWQgc2Vzc2lvbiB0YWJsZXMuICovXG4gXHR3aGlsZSAoYWR0aF9pbmRleCkge1xuK1x0XHQvKiBUaGUgdGFibGUgaGVhZGVyIG11c3QgbGllIHdpdGhpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuK1x0XHRpZiAoYWR0aF9pbmRleCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHxcbitcdFx0ICAgIGFkdGhfaW5kZXggXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbitcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuK1xuIFx0XHQvKiBHZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgdGFibGUgaGVhZGVyLiAqL1xuIFx0XHRhZHRoID0gKHN0cnVjdCBtdXhfYWR0aCAqKShibG9jayArIGFkdGhfaW5kZXgpO1xuIFxuQEAgLTYyOSw2ICs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbiBcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuIFxuK1x0XHQvKiBUaGUgd2hvbGUgZGF0YWdyYW0gdGFibGUgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi9cbitcdFx0aWYgKGxlMTZfdG9fY3B1KGFkdGgtXHUwMDNldGFibGVfbGVuZ3RoKSBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIGFkdGhfaW5kZXgpXG4rXHRcdFx0Z290byBhZGJfZGVjb2RlX2VycjtcbitcbiBcdFx0LyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZGF0YWdyYW1zLiAqL1xuIFx0XHRucl9vZl9kZyA9IChsZTE2X3RvX2NwdShhZHRoLVx1MDAzZXRhYmxlX2xlbmd0aCkgLVxuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkgL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuOTc3OTAwMDM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4MzczOTA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXV0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoYXQgdGhpcyBpcyBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlciDigJMgSVBDIG92ZXIgU2hhcmVkIE1lbW9yeSwgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIEFsd2F5cyBhIGdvb2QgdGhpbmcgdG8gc2VlIG1vcmUgZGVmZW5zaXZlIGNvZGluZy4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSBmZXcgdGhpbmdzLiBGaXJzdCwgaXMgdGhpcyBjb2RlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHN5c3RlbT8gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY29uZGl0aW9ucyBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBTbywgbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBJIGFzc2VzcyB0aGUgc2NvcGUgb2YgdGhpcyBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ4OjQ5Ljc2MTY0MTUwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0MDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXhfZGxfcHJvY2Vzc19kZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL2lvc20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01MTg9c3RhdGljIHZvaWQgaXBjX211eF9kbF9hY2JfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01NDctLyogcHJvY2VzcyBkYXRhZ3JhbSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo1NDg6c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTQ5LVxcdFxcdFxcdCAgICAgc3RydWN0IG11eF9hZHRoX2RnICpkZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY2NS1cXHRcXHRkZyA9IGFkdGgtXFx1MDAzZWRnO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2NjY6XFx0XFx0aWYgKG11eF9kbF9wcm9jZXNzX2RnKGlwY19tdXgsIGFkYmgsIGRnLCBza2IsIGlmX2lkLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjctXFx0XFx0XFx0XFx0ICAgICAgbnJfb2ZfZGcpIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDkuODE3Mzg1OTEzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Njg3NDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBgZHJpdmVycy9uZXQvd3dhbi9pb3NtL2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gRmlyc3QsIEknbSB0aGlua2luZyBJIHNob3VsZCBqdW1wIHN0cmFpZ2h0IGludG8gY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL25ldC93d2FuL2lvc20vYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgc2V0IG9mIFdXQU4gZHJpdmVycywgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gZmVhdHVyZSBlbmFibGVtZW50LCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgYnVpbGQtdGltZSBjb250cm9scy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBhcmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3Vic3lzdGVtIGFuZCB3aGF0IGtpbmQgb2YgY3VzdG9taXphdGlvbiBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBob29rcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgYW5kIGFjdGl2YXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0ODo1My4wMDQyNjI4MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzNTY1MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT1NNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ4OjUzLjA1ODYzMDE1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjIwODA2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBpbmZvcm1hdGlvbjpcblxuKipLY29uZmlnIEluc3BlY3Rpb246IHd3YW4gZHJpdmVycyoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgd3dhbiBkcml2ZXIgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBGaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGVzZSBzcGVjaWZpYyB3aXJlbGVzcyB3aWRlIGFyZWEgbmV0d29yayBkcml2ZXJzLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlLCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgZ2VuZXJhbCBjb250ZXh0IGZvciB0aGVzZSB3d2FuIGRyaXZlcnMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJlZC4gSSBleHBlY3QgdG8gZmluZCB0aGluZ3MgbGlrZSBmZWF0dXJlIHRvZ2dsZXMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBhbmQgcHJvYmFibHkgc29tZSBvcHRpb25zIHJlbGF0ZWQgdG8gZGlmZmVyZW50IGNlbGx1bGFyIG1vZGVtIGltcGxlbWVudGF0aW9ucyBvciBuZXR3b3JrIHByb3RvY29scy4gVGltZSB0byBvcGVuIGl0IHVwIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0ODo1OS44ODA3MTI2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM0NzU2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPU01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTc4PWNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTY6Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjAwLjI1NDE5NDg3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTE0MDczNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgSU9TTSoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJT1NNYC4gSXQncyBhIGtleSBwYXJ0IG9mIG15IHJlc2VhcmNoIGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGFyY2hpdGVjdHVyZSBpcyBwYXJhbW91bnQgdG8gb3B0aW1pemF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB3aGF0IHRoaXMgc3BlY2lmaWMgbW9kdWxlLCBgSU9TTWAsIHJlbGllcyBvbi4gSSBuZWVkIHRvIGtub3cgd2hpY2ggb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBjb21wb25lbnRzIGl0IHVzZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcywgdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzLCBhbmQgdWx0aW1hdGVseSwgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBtYWludGFpbmFiaWxpdHkuIFRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYW5kIGJlaW5nIGVmZmVjdGl2ZSB3aXRoaW4gbXkgcm9sZSBhcyBhbiBleHBlcnQuIFRoaXMgY291bGQgZW50YWlsIGxvb2tpbmcgYXQgdGhlIGJ1aWxkIHNjcmlwdHMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGV2ZW4gZGVsdmluZyBpbnRvIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIGlmIG5lY2Vzc2FyeS4gVGhlIGdvYWwgaXMgdG8gY3JlYXRlIGEgY29tcGxldGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgZGV2ZWxvcCBzb21lIHNwZWNpZmljIGlkZWFzIG9uIHdoZXJlIHRoZSBuZXh0IG9wdGltaXphdGlvbiB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDM0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDk6MDMuNTA1NjA0ODk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NjpcXHRjb25maWcgSU9TTVxcbiAgOTc6XFx0XFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuICA5ODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgOTk6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDEwMDpcXHRcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuIDEwMTpcXHRcXHRoZWxwXFxuIDEwMjpcXHRcXHQgIFRoaXMgZHJpdmVyIGVuYWJsZXMgSW50ZWwgTS4yIFdXQU4gRGV2aWNlIGNvbW11bmljYXRpb24uXFxuIDEwMzpcXHRcXG4gMTA0OlxcdFxcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXFxuIDEwNTpcXHRcXHQgIExpbnV4IHNheSBZL00gaGVyZS5cXG4gMTA2OlxcdFxcbiAxMDc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMDg6XFx0XFxuIDEwOTpcXHRjb25maWcgTVRLX1Q3WFhcXG4gMTEwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gVDd4eCBkZXZpY2VcXFwiXFxuIDExMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMTI6XFx0XFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbiAxMTM6XFx0XFx0aGVscFxcbiAxMTQ6XFx0XFx0ICBFbmFibGVzIE1lZGlhVGVrIFBDSWUgYmFzZWQgNUcgV1dBTiBtb2RlbSAoVDd4eCBzZXJpZXMpIGRldmljZS5cXG4gMTE1OlxcdFxcdCAgQWRhcHRzIFdXQU4gZnJhbWV3b3JrIGFuZCBwcm92aWRlcyBuZXR3b3JrIGludGVyZmFjZSBsaWtlIHd3YW4wXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjAzLjUwNTY3ODU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ2MDI3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaU9TTSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSU9TTWAgZHJpdmVyLCB3aGljaCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpcyBhbiBJbnRlbCBNLjIgV1dBTiBkZXZpY2UgYW5kIHJlbGllcyBvbiB0aGUgYFBDSWAgYnVzLiBUaGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIEkgZXZlbiBnZXQgdG8gdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/IElmIHNvLCB0aGVuIGl0J3Mgd29ydGggY2hlY2tpbmcgaWYgaXQgaGFzIGFueSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgb3IgZnV6emVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJ3MgdmhjaSBvciBwY2kgZnV6emVyLiBXYWl0IGEgc2Vjb25kLCBkb2VzIHN5emthbGxlciBoYXZlIGEgUENJIGZ1enplcj8gWWVzLCBpdCBkb2VzIHN1cHBvcnQgZnV6emluZyBQQ0kgZGV2aWNlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZWAsIHdoaWNoIGlzIGEgdmVyeSB1c2VmdWwgcHJpbWl0aXZlLlxuXG5TbywgbGV0J3Mgc2VlIGlmIHRoaXMgYGlvc21gIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIHRhcmdldGVkLiBUaGUgZmFjdCB0aGF0IEknbSBzZWVpbmcgYSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIHN1Z2dlc3RzIHRoYXQgc3l6a2FsbGVyIGhhcyBpbmRlZWQgYmVlbiBmaW5kaW5nIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcmVsZXZhbnQgY29kZSwgbGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jYC4gSSBuZWVkIHRvIGV4YW1pbmUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGRhdGEgY29taW5nICpmcm9tKiB0aGUgZGV2aWNlLCBzdWNoIGFzIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkncmUgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nIHRoZSBkb3dubGluayBkYXRhLiBOb3csIGdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHRoYXQgZGF0YSBpcyBsaWtlbHkgYmVpbmcgdHJhbnNmZXJyZWQgdmlhIERNQSBvciBNTUlPLiBTbyBJIG11c3QgaW52ZXN0aWdhdGUgaG93IGBtdXhfZGxfYWRiX2RlY29kZWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2dWxuZXJhYmxlIHRoaXMgYXJlYSBjb3VsZCBiZSB0byBmdXp6ZWQgaW5wdXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDk6MDguOTUxNzA4MDMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDEyOTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXhfZGxfYWRiX2RlY29kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL2lvc20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01NDg9c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01ODUtLyogRGVjb2RlIGFuIGFnZ3JlZ2F0ZWQgZGF0YSBibG9jay4gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NTg2OnN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTg3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM9Njg3PXZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY5OC1cXHRjYXNlIElPU01fQUdHUl9NVVhfU0lHX0FEQkg6XFx0LyogQWdncmVnYXRlZCBEYXRhIEJsb2NrIEhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2OTk6XFx0XFx0bXV4X2RsX2FkYl9kZWNvZGUoaXBjX211eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNzAwLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OTowOS4wMDU4NDAzNTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2NDA3MDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBpcGNfbXV4X2RsX2RlY29kZWAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgYGlwY19tdXhfZGxfZGVjb2RlYCwgSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgcm9sZSBpbiB0aGUgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uIChJUEMpIG11bHRpcGxleGluZyBhbmQgZG93bmxpbmsgZGVjb2RpbmcuIFRoaXMgc3VnZ2VzdHMgaXQncyBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHJlY2VpdmluZyBkYXRhIGZyb20gbXVsdGlwbGUgc291cmNlcyAobXVsdGlwbGV4aW5nKSBzZW50IHZpYSBJUEMsIGFuZCB0aGVuIHVucGFja2luZyAoZGVjb2RpbmcpIHRoZSBkb3dubGluayBpbmZvcm1hdGlvbi4gVGhlIFwiZGxcIiB0ZWxscyBtZSBpdCdzIGxpa2VseSByZWNlaXZpbmcgZGF0YSB0aGF0IGlzIGdvaW5nIGRvd24sIGkuZS4sIGZyb20gYSBjZW50cmFsaXplZCBzb3VyY2UgdG8gZGlzdHJpYnV0ZWQgbm9kZXMuIEknZCBuZWVkIHRvIGNvbnNpZGVyIGEgZmV3IHRoaW5nczpcbiogICAqKk11bHRpcGxleGluZyBTY2hlbWU6KiogV2hhdCBhcmUgdGhlIHN1cHBvcnRlZCBtZXRob2RzIGZvciBtdWx0aXBsZXhpbmc/IElzIGl0IHRpbWUtZGl2aXNpb24gbXVsdGlwbGV4aW5nIChURE0pLCBmcmVxdWVuY3ktZGl2aXNpb24gbXVsdGlwbGV4aW5nIChGRE0pLCBjb2RlLWRpdmlzaW9uIG11bHRpcGxleGluZyAoQ0RNKSwgb3Igc29tZXRoaW5nIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWM/XG4qICAgKipEZWNvZGluZyBBbGdvcml0aG06KiogV2hhdCBzcGVjaWZpYyBhbGdvcml0aG1zIG9yIHByb3RvY29scyBhcmUgZW1wbG95ZWQgZm9yIGRlY29kaW5nPyBJcyBpdCB1c2luZyBhIHN0YW5kYXJkIGZvcm1hdCBsaWtlIHByb3RvYnVmIG9yIHNvbWV0aGluZyBjdXN0b20/IEFyZSB0aGVyZSBlcnJvci1jb3JyZWN0aW9uIG1lY2hhbmlzbXMgYnVpbHQgaW4/XG4qICAgKipEYXRhIFN0cnVjdHVyZToqKiBUaGUgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIGlucHV0IGFuZCB0aGUgb3V0cHV0LiBIb3cgaXMgdGhlIGRhdGEgcGFja2VkPyBEb2VzIGl0IHJlcXVpcmUgY29udGV4dC1hd2FyZSBkZWNvZGluZyBiYXNlZCBvbiBoZWFkZXJzIG9yIG1ldGFkYXRhP1xuKiAgICoqRWZmaWNpZW5jeToqKiBIb3cgZG9lcyBpdCBkZWFsIHdpdGggcGVyZm9ybWFuY2UgY29uc3RyYWludHMgaW4gSVBDIGVudmlyb25tZW50cz8gSG93IGRvZXMgaXQgaGFuZGxlIGVycm9ycyBhbmQgd2hhdCdzIHRoZSBleHBlY3RlZCB0aHJvdWdocHV0PyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzP1xuXG5JIHdvdWxkIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBJUEMgZnJhbWV3b3JrLiBXaGVyZSBkb2VzIGl0IGZpdCBpbiB0aGUgcGlwZWxpbmU/IFdoYXQgYXJlIHRoZSBkYXRhIGRlcGVuZGVuY2llcz8gV2hhdCBraW5kIG9mIGVycm9ycyBkb2VzIGl0IHJlcG9ydCwgYW5kIGhvdyBhcmUgdGhvc2UgaGFuZGxlZD8gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gdmlzdWFsaXplIHRoaXMgZnVuY3Rpb24ncyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0sIGFuZCB3aGF0IGltcGFjdCBpdCBoYXMgb24gdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToxMi45Njk5MTI5NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzU1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwY19tdXhfZGxfZGVjb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0yOTg9c3RhdGljIHZvaWQgaXBjX2ltZW1fZGxfc2tiX3Byb2Nlc3Moc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNC1cXHRcXHRpZiAocGlwZS1cXHUwMDNlY2hhbm5lbC1cXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQpXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzozMjU6XFx0XFx0XFx0aXBjX211eF9kbF9kZWNvZGUoaXBjX2ltZW0tXFx1MDAzZW11eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4MS0vKipcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NjgyOiAqIGlwY19tdXhfZGxfZGVjb2RlIC0gIFJvdXRlIHRoZSBETCBwYWNrZXQgdGhyb3VnaCB0aGUgSVAgTVVYIGxheWVyXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4My0gKiAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gSGVhZGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4Ni0gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6Njg3OnZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oPTI1OD11bmlvbiBtdXhfdHlwZV9oZWFkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2Mi1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmg6MjYzOnZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmgtMjY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToxMy4wMjQyODM2NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NDg1NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipSZWFjaGluZyB0aGUgVGFyZ2V0IGFuZCBQbGFubmluZyB0aGUgRnV6eioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSB2dWxuZXJhYmlsaXR5IHRoYXQsIHdpdGhvdXQgYSBkb3VidCwgd2UgY2FuIHJlYWNoIHRocm91Z2ggdGhlIFBDSSBpbnRlcmZhY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIGluY29taW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlLCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggKmZ1bmN0aW9uYWwqIGFuZCBwb2ludHMgZGlyZWN0bHkgdG8gYSBmdXp6aW5nIHRhcmdldC4gVGhlIGNvbmZpZyBvcHRpb24gbmVjZXNzYXJ5IHRvIGdldCB0aGlzIGFjdGl2ZSBhcHBlYXJzIHRvIGJlIGBJT1NNYCwgd2l0aCBgV1dBTmAgcG9zc2libHkgcmVxdWlyZWQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGBXV0FOYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgb3IgaWYgYElPU01gIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjE2LjU5OTE0MjAzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNjU5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPU01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTc4PWNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTY6Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjE2LjY1MjUxMzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NzU1OTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV1dBTiBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIG9uIHRoZSBhZ2VuZGEgaXMgbmFpbGluZyBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gV1dBTi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBjb3JlIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBXV0FOIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBhc3N1bWluZyB0aGF0IGZpbGUgd2lsbCBiZSB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgc3ltYm9scywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBmbGFncyB0aGF0IGNvbnRyb2wgV1dBTidzIGluY2x1c2lvbiBvciBleGNsdXNpb24sIGFuZCBJ4oCZbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgaXMgYXJjaGl0ZWN0ZWQgaW4gdGVybXMgb2YgY29uZmlndXJhYmxlIGZlYXR1cmVzLiBJJ20gYWxzbyByZWFkeSB0byB0cmFjZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMgaWYgbmVlZGVkLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbWlnaHQgaW52b2x2ZSBoYXJkd2FyZSBlbmFibGVtZW50IG9yIHNwZWNpZmljIHBsYXRmb3JtIHN1cHBvcnQuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2xzIFdXQU4ncyBwcmVzZW5jZSwgYW5kIGhvdyBncmFudWxhciB3ZSBjYW4gZ2V0IHdpdGggaXRzIGZlYXR1cmUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjIwLjA0MDA3NTUyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxMjU1NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdXQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY9bWVudSBcXFwiV2lyZWxlc3MgV0FOXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo4OmNvbmZpZyBXV0FOXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIldXQU4gRHJpdmVyIENvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTg9aWYgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozMTpjb25maWcgV1dBTl9IV1NJTVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIFdXQU4gZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyMC4wOTQyMDU4NTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNzAyMTA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBXV0FOYCBhbmQgYElPU01gLiBSaWdodCwgbGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbiBhcyBkZXBlbmRlbmNpZXM/IEFoLCB5ZXMsIGBJT1NNYCBkZXBlbmRzIG9uIGBQQ0lgLCBJIHNlZS4gR29vZCwgZ29vZC5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkIGFyZSBgbXV4X2RsX3Byb2Nlc3NfZGdgIGFuZCBgbXV4X2RsX2FkYl9kZWNvZGVgLiBJIHNob3VsZCBwcm9iYWJseSBleGFtaW5lIHRob3NlIGluIGRldGFpbC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgaW4gdGhpcyByb3VuZC4gTm8sIGp1c3QgdGhvc2UgdHdvLCBhcyBleHBlY3RlZC5cblxuUmlnaHQsIGxldCdzIGdvIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZSB0aGUgY29uZmlnIHNpdHVhdGlvbiBjb3JyZWN0IGluIG15IGhlYWQuIGBJT1NNYCBpcyB0aGUgcHJpbWFyeSBjb25maWcgaW4gcGxheSBoZXJlLiBgV1dBTmAgaXMgaXRzIHBhcmVudCwgYW5kIGl0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGBJT1NNYCB0byBiZSBlbmFibGVkLCBpbiBvdGhlciB3b3JkcyBgV1dBTmAgZW5hYmxlcyBgSU9TTWAgLiBTbywgYElPU01gIGFuZCBgV1dBTmAgbXVzdCBib3RoIGJlIGVuYWJsZWQuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjb25maWRlbnQsIGxldCdzIGFsc28gaW52ZXN0aWdhdGUgdGhlIE1ha2VmaWxlIGF0IGBkcml2ZXJzL25ldC93d2FuL01ha2VmaWxlYCwgdG8gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ3MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyNC4zMDEyMjkxNjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBXV0FOIGRldmljZSBkcml2ZXJzLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfV1dBTikgKz0gd3dhbi5vXFxuICAgNzpcXHR3d2FuLW9ianMgKz0gd3dhbl9jb3JlLm9cXG4gICA4OlxcdFxcbiAgIDk6XFx0b2JqLSQoQ09ORklHX1dXQU5fSFdTSU0pICs9IHd3YW5faHdzaW0ub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRvYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgKz0gbWhpX3d3YW5fY3RybC5vXFxuICAxMjpcXHRvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuICAxMzpcXHRvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuICAxNDpcXHRvYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSArPSBycG1zZ193d2FuX2N0cmwub1xcbiAgMTU6XFx0b2JqLSQoQ09ORklHX0lPU00pICs9IGlvc20vXFxuICAxNjpcXHRvYmotJChDT05GSUdfTVRLX1Q3WFgpICs9IHQ3eHgvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjI0LjMwMTI5MjI3OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU4MTUzODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElPU00vV1dBTiBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBMZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgc2Vjb25kLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgSU9TTWAgYW5kIGBXV0FOYCBjb250ZXh0LiBHb29kLiBXZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggY29uY2VybmluZyBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBkb3duc3RyZWFtIGRhdGEgZGVjb2RpbmcgcGF0aC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB0aWdodGVuIHVwLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggZGF0YSBjb21pbmcgaW4gb3ZlciBQQ0kuXG5cblRoaXMgbWVhbnMgd2UgaGF2ZSBhIGNsZWFyIGF0dGFjayBzdXJmYWNlIHRvIGludmVzdGlnYXRlLiBUaGUgcGF0Y2gncyBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgaW1wbGllcyBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5IHRocm91Z2ggZnV6emluZy4gQW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgcXVpdGUgc3BlY2lmaWM6IGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdlIG5lZWQgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLCBzcGVjaWZpY2FsbHkuIEZpbmFsbHksIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGV4cGxpY2l0bHkgYElPU01gIGFuZCBgV1dBTmAsIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLlxuXG5UaGlzIGlzIGFsbCB2ZXJ5IHNvbGlkLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgaGVyZS4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgdGVzdGluZyB0byBlbnN1cmUgdGhhdCB0aGUgYWRkZWQgYm91bmRzIGNoZWNrcyBhcmUgc3VmZmljaWVudCBhbmQgcm9idXN0LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCB0aGUgc3BlY2lmaWMgY29kZSByZWdpb25zIHJlZmVyZW5jZWQgYnkgdGhvc2Ugc3ltYm9scy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIzNSwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyOS4yNTk0NDg3NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDIyNDA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9TTVwiLFxuICAgIFwiV1dBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm11eF9kbF9wcm9jZXNzX2RnXCIsXG4gICAgXCJtdXhfZGxfYWRiX2RlY29kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT1NNXCIsXG4gICAgXCJXV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXV4X2RsX3Byb2Nlc3NfZGdcIixcbiAgICBcIm11eF9kbF9hZGJfZGVjb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGRvd25saW5rIGRhdGEgZGVjb2RpbmcgcGF0aCBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlci4gVGhpcyBjb2RlIHByb2Nlc3NlcyBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZSB2aWEgUENJLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowkcgdt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 13:29:00 +0000 UTC FinishedAt: 2026-06-20 13:49:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOSM", "WWAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOSM", "WWAN" ], "series_id": "26343f80-d8ee-48a3-91ff-90b859e52680" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mux_dl_process_dg", "mux_dl_adb_decode" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPU00mIzM0OywKICAgICYjMzQ7V1dBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O211eF9kbF9wcm9jZXNzX2RnJiMzNDssCiAgICAmIzM0O211eF9kbF9hZGJfZGVjb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMTM6NDg6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jIGIvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jXG5pbmRleCBiZmY0NmY3Y2E1OWYzZi4uZmY5YTRiYzUyZjI5MzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xuQEAgLTU1MywxOSAmIzQzOzU1MywyMSBAQCBzdGF0aWMgaW50IG11eF9kbF9wcm9jZXNzX2RnKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IG11eF9hZGJoICphZGJoLFxuIFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9vZl9kZzsgaSYjNDM7JiM0MzssIGRnJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpXG4tXHRcdFx0XHRcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpXG4mIzQzO1x0XHR1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleCk7XG4mIzQzO1xuJiM0MztcdFx0ZGdfbGVuID0gbGUxNl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1fbGVuZ3RoKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGdfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXG4tXHRcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cbi1cdFx0aWYgKGxlMzJfdG9fY3B1KGRnLVx1MDAzZWRhdGFncmFtX2luZGV4KSBcdTAwM2U9XG4tXHRcdFx0XHRcdGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xuJiM0MztcdFx0LyogSXMgdGhlIHBhY2tldCBpbnNpZGUgb2YgdGhlIEFEQiBhbmQgdGhlIHJlY2VpdmVkIHNrYiA/ICovXG4mIzQzO1x0XHRpZiAoZGdfaW5kZXggXHUwMDNlPSBsZTMyX3RvX2NwdShhZGJoLVx1MDAzZWJsb2NrX2xlbmd0aCkgfHxcbiYjNDM7XHRcdCAgICBkZ19pbmRleCBcdTAwM2U9IHNrYi1cdTAwM2VsZW4gfHxcbiYjNDM7XHRcdCAgICBkZ19sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBkZ19pbmRleCB8fFxuJiM0MztcdFx0ICAgIGRsX2hlYWRfcGFkX2xlbiBcdTAwM2U9IGRnX2xlbikge1xuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cGFja2V0X29mZnNldCA9XG4tXHRcdFx0XHRsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleCkgJiM0Mztcbi1cdFx0XHRcdGRsX2hlYWRfcGFkX2xlbjtcbi1cdFx0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuJiM0MztcdFx0XHRwYWNrZXRfb2Zmc2V0ID0gZGdfaW5kZXggJiM0MzsgZGxfaGVhZF9wYWRfbGVuO1xuIFx0XHRcdC8qIFBhc3MgdGhlIHBhY2tldCB0byB0aGUgbmV0aWYgbGF5ZXIuICovXG4gXHRcdFx0cmMgPSBpcGNfbXV4X25ldF9yZWNlaXZlKGlwY19tdXgsIGlmX2lkLCBpcGNfbXV4LVx1MDAzZXd3YW4sXG4gXHRcdFx0XHRcdFx0IHBhY2tldF9vZmZzZXQsXG5AQCAtNTk1LDYgJiM0Mzs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0YmxvY2sgPSBza2ItXHUwMDNlZGF0YTtcbiBcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XG4gXG4mIzQzO1x0LyogVGhlIGJsb2NrIGhlYWRlciBpdHNlbGYgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi9cbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpXG4mIzQzO1x0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuJiM0MztcbiBcdC8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqL1xuIFx0YWR0aF9pbmRleCA9IGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlZmlyc3RfdGFibGVfaW5kZXgpO1xuIFxuQEAgLTYwNiw2ICYjNDM7NjEyLDExIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcbiBcbiBcdC8qIExvb3AgdGhyb3VnaCBtaXhlZCBzZXNzaW9uIHRhYmxlcy4gKi9cbiBcdHdoaWxlIChhZHRoX2luZGV4KSB7XG4mIzQzO1x0XHQvKiBUaGUgdGFibGUgaGVhZGVyIG11c3QgbGllIHdpdGhpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuJiM0MztcdFx0aWYgKGFkdGhfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpIHx8XG4mIzQzO1x0XHQgICAgYWR0aF9pbmRleCBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxuJiM0MztcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuJiM0MztcbiBcdFx0LyogR2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhYmxlIGhlYWRlci4gKi9cbiBcdFx0YWR0aCA9IChzdHJ1Y3QgbXV4X2FkdGggKikoYmxvY2sgJiM0MzsgYWR0aF9pbmRleCk7XG4gXG5AQCAtNjI5LDYgJiM0Mzs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbiBcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuIFxuJiM0MztcdFx0LyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovXG4mIzQzO1x0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gYWR0aF9pbmRleClcbiYjNDM7XHRcdFx0Z290byBhZGJfZGVjb2RlX2VycjtcbiYjNDM7XG4gXHRcdC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGRhdGFncmFtcy4gKi9cbiBcdFx0bnJfb2ZfZGcgPSAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIC1cbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtdXhfYWR0aCkpIC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMTM6NDg6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMKaW5kZXggYmZmNDZmN2NhNTlmM2YuLmZmOWE0YmM1MmYyOTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jCkBAIC01NTMsMTkgJiM0Mzs1NTMsMjEgQEAgc3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCwKIAl1MzIgcGFja2V0X29mZnNldCwgaSwgcmMsIGRnX2xlbjsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9vZl9kZzsgaSYjNDM7JiM0MzssIGRnJiM0MzsmIzQzOykgewotCQlpZiAobGUzMl90b19jcHUoZGctJmd0O2RhdGFncmFtX2luZGV4KQotCQkJCSZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpCiYjNDM7CQl1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy0mZ3Q7ZGF0YWdyYW1faW5kZXgpOwomIzQzOwomIzQzOwkJZGdfbGVuID0gbGUxNl90b19jcHUoZGctJmd0O2RhdGFncmFtX2xlbmd0aCk7CiYjNDM7CiYjNDM7CQlpZiAoZGdfaW5kZXggJmx0OyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSkKIAkJCWdvdG8gZGdfZXJyb3I7CiAKLQkJLyogSXMgdGhlIHBhY2tldCBpbnNpZGUgb2YgdGhlIEFEQiAqLwotCQlpZiAobGUzMl90b19jcHUoZGctJmd0O2RhdGFncmFtX2luZGV4KSAmZ3Q7PQotCQkJCQlsZTMyX3RvX2NwdShhZGJoLSZndDtibG9ja19sZW5ndGgpKSB7CiYjNDM7CQkvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi8KJiM0MzsJCWlmIChkZ19pbmRleCAmZ3Q7PSBsZTMyX3RvX2NwdShhZGJoLSZndDtibG9ja19sZW5ndGgpIHx8CiYjNDM7CQkgICAgZGdfaW5kZXggJmd0Oz0gc2tiLSZndDtsZW4gfHwKJiM0MzsJCSAgICBkZ19sZW4gJmd0OyBza2ItJmd0O2xlbiAtIGRnX2luZGV4IHx8CiYjNDM7CQkgICAgZGxfaGVhZF9wYWRfbGVuICZndDs9IGRnX2xlbikgewogCQkJZ290byBkZ19lcnJvcjsKIAkJfSBlbHNlIHsKLQkJCXBhY2tldF9vZmZzZXQgPQotCQkJCWxlMzJfdG9fY3B1KGRnLSZndDtkYXRhZ3JhbV9pbmRleCkgJiM0MzsKLQkJCQlkbF9oZWFkX3BhZF9sZW47Ci0JCQlkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy0mZ3Q7ZGF0YWdyYW1fbGVuZ3RoKTsKJiM0MzsJCQlwYWNrZXRfb2Zmc2V0ID0gZGdfaW5kZXggJiM0MzsgZGxfaGVhZF9wYWRfbGVuOwogCQkJLyogUGFzcyB0aGUgcGFja2V0IHRvIHRoZSBuZXRpZiBsYXllci4gKi8KIAkJCXJjID0gaXBjX211eF9uZXRfcmVjZWl2ZShpcGNfbXV4LCBpZl9pZCwgaXBjX211eC0mZ3Q7d3dhbiwKIAkJCQkJCSBwYWNrZXRfb2Zmc2V0LApAQCAtNTk1LDYgJiM0Mzs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LAogCWJsb2NrID0gc2tiLSZndDtkYXRhOwogCWFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7CiAKJiM0MzsJLyogVGhlIGJsb2NrIGhlYWRlciBpdHNlbGYgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkpCiYjNDM7CQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCS8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqLwogCWFkdGhfaW5kZXggPSBsZTMyX3RvX2NwdShhZGJoLSZndDtmaXJzdF90YWJsZV9pbmRleCk7CiAKQEAgLTYwNiw2ICYjNDM7NjEyLDExIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwKIAogCS8qIExvb3AgdGhyb3VnaCBtaXhlZCBzZXNzaW9uIHRhYmxlcy4gKi8KIAl3aGlsZSAoYWR0aF9pbmRleCkgewomIzQzOwkJLyogVGhlIHRhYmxlIGhlYWRlciBtdXN0IGxpZSB3aXRoaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi8KJiM0MzsJCWlmIChhZHRoX2luZGV4ICZsdDsgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHwKJiM0MzsJCSAgICBhZHRoX2luZGV4ICZndDsgc2tiLSZndDtsZW4gLSBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkKJiM0MzsJCQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCQkvKiBHZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgdGFibGUgaGVhZGVyLiAqLwogCQlhZHRoID0gKHN0cnVjdCBtdXhfYWR0aCAqKShibG9jayAmIzQzOyBhZHRoX2luZGV4KTsKIApAQCAtNjI5LDYgJiM0Mzs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LAogCQlpZiAobGUxNl90b19jcHUoYWR0aC0mZ3Q7dGFibGVfbGVuZ3RoKSAmbHQ7IHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKQogCQkJZ290byBhZGJfZGVjb2RlX2VycjsKIAomIzQzOwkJLyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovCiYjNDM7CQlpZiAobGUxNl90b19jcHUoYWR0aC0mZ3Q7dGFibGVfbGVuZ3RoKSAmZ3Q7IHNrYi0mZ3Q7bGVuIC0gYWR0aF9pbmRleCkKJiM0MzsJCQlnb3RvIGFkYl9kZWNvZGVfZXJyOwomIzQzOwogCQkvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBkYXRhZ3JhbXMuICovCiAJCW5yX29mX2RnID0gKGxlMTZfdG9fY3B1KGFkdGgtJmd0O3RhYmxlX2xlbmd0aCkgLQogCQkJCQlzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkgLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV1dBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHRoaXMgaXMgaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIg4oCTIElQQyBvdmVyIFNoYXJlZCBNZW1vcnksIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gQWx3YXlzIGEgZ29vZCB0aGluZyB0byBzZWUgbW9yZSBkZWZlbnNpdmUgY29kaW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gZmlndXJlIG91dCBhIGZldyB0aGluZ3MuIEZpcnN0LCBpcyB0aGlzIGNvZGUgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc3lzdGVtPyBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gYWN0dWFsbHkgKnVzZSogdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmVjb25kaXRpb25zIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBJIGFzc2VzcyB0aGUgc2NvcGUgb2YgdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV4X2RsX3Byb2Nlc3NfZGcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01MTg9c3RhdGljIHZvaWQgaXBjX211eF9kbF9hY2JfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTQ3LS8qIHByb2Nlc3MgZGF0YWdyYW0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo1NDg6c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01NDktXHRcdFx0ICAgICBzdHJ1Y3QgbXV4X2FkdGhfZGcgKmRnLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjUtXHRcdGRnID0gYWR0aC1cdTAwM2VkZztcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2NjY6XHRcdGlmIChtdXhfZGxfcHJvY2Vzc19kZyhpcGNfbXV4LCBhZGJoLCBkZywgc2tiLCBpZl9pZCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjctXHRcdFx0XHQgICAgICBucl9vZl9kZykgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgYGRyaXZlcnMvbmV0L3d3YW4vaW9zbS9gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBqdW1wIHN0cmFpZ2h0IGludG8gY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL25ldC93d2FuL2lvc20vYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciBzZXQgb2YgV1dBTiBkcml2ZXJzLCB3aGljaCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBmZWF0dXJlIGVuYWJsZW1lbnQsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBidWlsZC10aW1lIGNvbnRyb2xzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhlIG92ZXJhbGwgbmV0d29yayBzdWJzeXN0ZW0gYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGhvb2tzIGFyZSBhdmFpbGFibGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBhbmQgYWN0aXZhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9TTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBpbmZvcm1hdGlvbjoKCioqS2NvbmZpZyBJbnNwZWN0aW9uOiB3d2FuIGRyaXZlcnMqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB3d2FuIGRyaXZlciBjb25maWd1cmF0aW9uIGluIHRoZSBrZXJuZWwuIEZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlc2Ugc3BlY2lmaWMgd2lyZWxlc3Mgd2lkZSBhcmVhIG5ldHdvcmsgZHJpdmVycy4gVGhpcyBmaWxlIHdpbGwgdGVsbCBtZSB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSwgdGhlIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGdlbmVyYWwgY29udGV4dCBmb3IgdGhlc2Ugd3dhbiBkcml2ZXJzIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEl0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJIGV4cGVjdCB0byBmaW5kIHRoaW5ncyBsaWtlIGZlYXR1cmUgdG9nZ2xlcywgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MsIGFuZCBwcm9iYWJseSBzb21lIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQgY2VsbHVsYXIgbW9kZW0gaW1wbGVtZW50YXRpb25zIG9yIG5ldHdvcmsgcHJvdG9jb2xzLiBUaW1lIHRvIG9wZW4gaXQgdXAgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nzg9Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5Njpjb25maWcgSU9TTVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7SU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIElPU00qKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPU01gLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIG15IHJlc2VhcmNoIGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGFyY2hpdGVjdHVyZSBpcyBwYXJhbW91bnQgdG8gb3B0aW1pemF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgd2hhdCB0aGlzIHNwZWNpZmljIG1vZHVsZSwgYElPU01gLCByZWxpZXMgb24uIEkgbmVlZCB0byBrbm93IHdoaWNoIG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3IgZXh0ZXJuYWwgY29tcG9uZW50cyBpdCB1c2VzLiBUaGlzIHdpbGwgaGVscCBtZSBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHBvaW50cywgYW5kIHVsdGltYXRlbHksIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgb3ZlcmFsbCBwZXJmb3JtYW5jZSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBUaGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSBhcyBhIHdob2xlIGFuZCBiZWluZyBlZmZlY3RpdmUgd2l0aGluIG15IHJvbGUgYXMgYW4gZXhwZXJ0LiBUaGlzIGNvdWxkIGVudGFpbCBsb29raW5nIGF0IHRoZSBidWlsZCBzY3JpcHRzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBvciBldmVuIGRlbHZpbmcgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLCBpZiBuZWNlc3NhcnkuIFRoZSBnb2FsIGlzIHRvIGNyZWF0ZSBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIGRldmVsb3Agc29tZSBzcGVjaWZpYyBpZGVhcyBvbiB3aGVyZSB0aGUgbmV4dCBvcHRpbWl6YXRpb24gd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk2Olx0Y29uZmlnIElPU01cbiAgOTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gUENJXG4gIDk5Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAxMDA6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbiAxMDM6XHRcbiAxMDQ6XHRcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXG4gMTA1Olx0XHQgIExpbnV4IHNheSBZL00gaGVyZS5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMDg6XHRcbiAxMDk6XHRjb25maWcgTVRLX1Q3WFhcbiAxMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuIDExMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMTI6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgRW5hYmxlcyBNZWRpYVRlayBQQ0llIGJhc2VkIDVHIFdXQU4gbW9kZW0gKFQ3eHggc2VyaWVzKSBkZXZpY2UuXG4gMTE1Olx0XHQgIEFkYXB0cyBXV0FOIGZyYW1ld29yayBhbmQgcHJvdmlkZXMgbmV0d29yayBpbnRlcmZhY2UgbGlrZSB3d2FuMFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaU9TTSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBJT1NNYCBkcml2ZXIsIHdoaWNoIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGFuIEludGVsIE0uMiBXV0FOIGRldmljZSBhbmQgcmVsaWVzIG9uIHRoZSBgUENJYCBidXMuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuIGdldCB0byB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz8gSWYgc28sIHRoZW4gaXQmIzM5O3Mgd29ydGggY2hlY2tpbmcgaWYgaXQgaGFzIGFueSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgb3IgZnV6emVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIHZoY2kgb3IgcGNpIGZ1enplci4gV2FpdCBhIHNlY29uZCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBhIFBDSSBmdXp6ZXI/IFllcywgaXQgZG9lcyBzdXBwb3J0IGZ1enppbmcgUENJIGRldmljZXMgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBpcyBhIHZlcnkgdXNlZnVsIHByaW1pdGl2ZS4KClNvLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgYGlvc21gIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIHRhcmdldGVkLiBUaGUgZmFjdCB0aGF0IEkmIzM5O20gc2VlaW5nIGEgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBzdWdnZXN0cyB0aGF0IHN5emthbGxlciBoYXMgaW5kZWVkIGJlZW4gZmluZGluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIE15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIHJlbGV2YW50IGNvZGUsIGxldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNgLiBJIG5lZWQgdG8gZXhhbWluZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZGF0YSBjb21pbmcgKmZyb20qIHRoZSBkZXZpY2UsIHN1Y2ggYXMgYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGJlY2F1c2UgdGhleSYjMzk7cmUgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nIHRoZSBkb3dubGluayBkYXRhLiBOb3csIGdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHRoYXQgZGF0YSBpcyBsaWtlbHkgYmVpbmcgdHJhbnNmZXJyZWQgdmlhIERNQSBvciBNTUlPLiBTbyBJIG11c3QgaW52ZXN0aWdhdGUgaG93IGBtdXhfZGxfYWRiX2RlY29kZWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdnVsbmVyYWJsZSB0aGlzIGFyZWEgY291bGQgYmUgdG8gZnV6emVkIGlucHV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV4X2RsX2FkYl9kZWNvZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01NDg9c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTg1LS8qIERlY29kZSBhbiBhZ2dyZWdhdGVkIGRhdGEgYmxvY2suICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NTg2OnN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01ODctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM9Njg3PXZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02OTgtXHRjYXNlIElPU01fQUdHUl9NVVhfU0lHX0FEQkg6XHQvKiBBZ2dyZWdhdGVkIERhdGEgQmxvY2sgSGVhZGVyICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6Njk5Olx0XHRtdXhfZGxfYWRiX2RlY29kZShpcGNfbXV4LCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTcwMC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgYGlwY19tdXhfZGxfZGVjb2RlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgc2VlIGBpcGNfbXV4X2RsX2RlY29kZWAsIEkgaW1tZWRpYXRlbHkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgaXRzIHJvbGUgaW4gdGhlIEludGVyLVByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoSVBDKSBtdWx0aXBsZXhpbmcgYW5kIGRvd25saW5rIGRlY29kaW5nLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBjcnVjaWFsIHRhc2sgb2YgcmVjZWl2aW5nIGRhdGEgZnJvbSBtdWx0aXBsZSBzb3VyY2VzIChtdWx0aXBsZXhpbmcpIHNlbnQgdmlhIElQQywgYW5kIHRoZW4gdW5wYWNraW5nIChkZWNvZGluZykgdGhlIGRvd25saW5rIGluZm9ybWF0aW9uLiBUaGUgJiMzNDtkbCYjMzQ7IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSByZWNlaXZpbmcgZGF0YSB0aGF0IGlzIGdvaW5nIGRvd24sIGkuZS4sIGZyb20gYSBjZW50cmFsaXplZCBzb3VyY2UgdG8gZGlzdHJpYnV0ZWQgbm9kZXMuIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciBhIGZldyB0aGluZ3M6CiogICAqKk11bHRpcGxleGluZyBTY2hlbWU6KiogV2hhdCBhcmUgdGhlIHN1cHBvcnRlZCBtZXRob2RzIGZvciBtdWx0aXBsZXhpbmc/IElzIGl0IHRpbWUtZGl2aXNpb24gbXVsdGlwbGV4aW5nIChURE0pLCBmcmVxdWVuY3ktZGl2aXNpb24gbXVsdGlwbGV4aW5nIChGRE0pLCBjb2RlLWRpdmlzaW9uIG11bHRpcGxleGluZyAoQ0RNKSwgb3Igc29tZXRoaW5nIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWM/CiogICAqKkRlY29kaW5nIEFsZ29yaXRobToqKiBXaGF0IHNwZWNpZmljIGFsZ29yaXRobXMgb3IgcHJvdG9jb2xzIGFyZSBlbXBsb3llZCBmb3IgZGVjb2Rpbmc/IElzIGl0IHVzaW5nIGEgc3RhbmRhcmQgZm9ybWF0IGxpa2UgcHJvdG9idWYgb3Igc29tZXRoaW5nIGN1c3RvbT8gQXJlIHRoZXJlIGVycm9yLWNvcnJlY3Rpb24gbWVjaGFuaXNtcyBidWlsdCBpbj8KKiAgICoqRGF0YSBTdHJ1Y3R1cmU6KiogVGhlIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCBhbmQgdGhlIG91dHB1dC4gSG93IGlzIHRoZSBkYXRhIHBhY2tlZD8gRG9lcyBpdCByZXF1aXJlIGNvbnRleHQtYXdhcmUgZGVjb2RpbmcgYmFzZWQgb24gaGVhZGVycyBvciBtZXRhZGF0YT8KKiAgICoqRWZmaWNpZW5jeToqKiBIb3cgZG9lcyBpdCBkZWFsIHdpdGggcGVyZm9ybWFuY2UgY29uc3RyYWludHMgaW4gSVBDIGVudmlyb25tZW50cz8gSG93IGRvZXMgaXQgaGFuZGxlIGVycm9ycyBhbmQgd2hhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgdGhyb3VnaHB1dD8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcz8KCkkgd291bGQgaW1tZWRpYXRlbHkgd2FudCB0byBrbm93IGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIElQQyBmcmFtZXdvcmsuIFdoZXJlIGRvZXMgaXQgZml0IGluIHRoZSBwaXBlbGluZT8gV2hhdCBhcmUgdGhlIGRhdGEgZGVwZW5kZW5jaWVzPyBXaGF0IGtpbmQgb2YgZXJyb3JzIGRvZXMgaXQgcmVwb3J0LCBhbmQgaG93IGFyZSB0aG9zZSBoYW5kbGVkPyBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdmlzdWFsaXplIHRoaXMgZnVuY3Rpb24mIzM5O3MgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCBhbmQgd2hhdCBpbXBhY3QgaXQgaGFzIG9uIHRoZSBzeXN0ZW0mIzM5O3MgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBjX211eF9kbF9kZWNvZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL2lvc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9Mjk4PXN0YXRpYyB2b2lkIGlwY19pbWVtX2RsX3NrYl9wcm9jZXNzKHN0cnVjdCBpb3NtX2ltZW0gKmlwY19pbWVtLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMzI0LVx0XHRpZiAocGlwZS1cdTAwM2VjaGFubmVsLVx1MDAzZWlmX2lkID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzozMjU6XHRcdFx0aXBjX211eF9kbF9kZWNvZGUoaXBjX2ltZW0tXHUwMDNlbXV4LCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02ODEtLyoqXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NjgyOiAqIGlwY19tdXhfZGxfZGVjb2RlIC0gIFJvdXRlIHRoZSBETCBwYWNrZXQgdGhyb3VnaCB0aGUgSVAgTVVYIGxheWVyXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNjgzLSAqICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiBIZWFkZXIuXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4Ni0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2ODc6dm9pZCBpcGNfbXV4X2RsX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNjg4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmg9MjU4PXVuaW9uIG11eF90eXBlX2hlYWRlciB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2Mi1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuaDoyNjM6dm9pZCBpcGNfbXV4X2RsX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjoKCioqUmVhY2hpbmcgdGhlIFRhcmdldCBhbmQgUGxhbm5pbmcgdGhlIEZ1enoqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSB2dWxuZXJhYmlsaXR5IHRoYXQsIHdpdGhvdXQgYSBkb3VidCwgd2UgY2FuIHJlYWNoIHRocm91Z2ggdGhlIFBDSSBpbnRlcmZhY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIGluY29taW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlLCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggKmZ1bmN0aW9uYWwqIGFuZCBwb2ludHMgZGlyZWN0bHkgdG8gYSBmdXp6aW5nIHRhcmdldC4gVGhlIGNvbmZpZyBvcHRpb24gbmVjZXNzYXJ5IHRvIGdldCB0aGlzIGFjdGl2ZSBhcHBlYXJzIHRvIGJlIGBJT1NNYCwgd2l0aCBgV1dBTmAgcG9zc2libHkgcmVxdWlyZWQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGBXV0FOYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgb3IgaWYgYElPU01gIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nzg9Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5Njpjb25maWcgSU9TTVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7SU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTg3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqV1dBTiBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBvbiB0aGUgYWdlbmRhIGlzIG5haWxpbmcgZG93biB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIFdXQU4uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgdGhlIGNvcmUgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIFdXQU4gZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGZpbGUgd2lsbCBiZSB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgc3ltYm9scywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZmxhZ3MgdGhhdCBjb250cm9sIFdXQU4mIzM5O3MgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbiwgYW5kIEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBpcyBhcmNoaXRlY3RlZCBpbiB0ZXJtcyBvZiBjb25maWd1cmFibGUgZmVhdHVyZXMuIEkmIzM5O20gYWxzbyByZWFkeSB0byB0cmFjZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMgaWYgbmVlZGVkLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbWlnaHQgaW52b2x2ZSBoYXJkd2FyZSBlbmFibGVtZW50IG9yIHNwZWNpZmljIHBsYXRmb3JtIHN1cHBvcnQuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2xzIFdXQU4mIzM5O3MgcHJlc2VuY2UsIGFuZCBob3cgZ3JhbnVsYXIgd2UgY2FuIGdldCB3aXRoIGl0cyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY9bWVudSBcJiMzNDtXaXJlbGVzcyBXQU5cJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjg6Y29uZmlnIFdXQU5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7V1dBTiBEcml2ZXIgQ29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz0xOD1pZiBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjMxOmNvbmZpZyBXV0FOX0hXU0lNXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgV1dBTiBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ3MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucywgYFdXQU5gIGFuZCBgSU9TTWAuIFJpZ2h0LCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbiBhcyBkZXBlbmRlbmNpZXM/IEFoLCB5ZXMsIGBJT1NNYCBkZXBlbmRzIG9uIGBQQ0lgLCBJIHNlZS4gR29vZCwgZ29vZC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBJdCBzZWVtcyBsaWtlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIEkgc2hvdWxkIHByb2JhYmx5IGV4YW1pbmUgdGhvc2UgaW4gZGV0YWlsLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgaW4gdGhpcyByb3VuZC4gTm8sIGp1c3QgdGhvc2UgdHdvLCBhcyBleHBlY3RlZC4KClJpZ2h0LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSBjb25maWcgc2l0dWF0aW9uIGNvcnJlY3QgaW4gbXkgaGVhZC4gYElPU01gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBpbiBwbGF5IGhlcmUuIGBXV0FOYCBpcyBpdHMgcGFyZW50LCBhbmQgaXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgYElPU01gIHRvIGJlIGVuYWJsZWQsIGluIG90aGVyIHdvcmRzIGBXV0FOYCBlbmFibGVzIGBJT1NNYCAuIFNvLCBgSU9TTWAgYW5kIGBXV0FOYCBtdXN0IGJvdGggYmUgZW5hYmxlZC4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjb25maWRlbnQsIGxldCYjMzk7cyBhbHNvIGludmVzdGlnYXRlIHRoZSBNYWtlZmlsZSBhdCBgZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZWAsIHRvIGVuc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBXV0FOIGRldmljZSBkcml2ZXJzLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfV1dBTikgJiM0Mzs9IHd3YW4ub1xuICAgNzpcdHd3YW4tb2JqcyAmIzQzOz0gd3dhbl9jb3JlLm9cbiAgIDg6XHRcbiAgIDk6XHRvYmotJChDT05GSUdfV1dBTl9IV1NJTSkgJiM0Mzs9IHd3YW5faHdzaW0ub1xuICAxMDpcdFxuICAxMTpcdG9iai0kKENPTkZJR19NSElfV1dBTl9DVFJMKSAmIzQzOz0gbWhpX3d3YW5fY3RybC5vXG4gIDEyOlx0b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbiAgMTM6XHRvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgJiM0Mzs9IHFjb21fYmFtX2RtdXgub1xuICAxNDpcdG9iai0kKENPTkZJR19SUE1TR19XV0FOX0NUUkwpICYjNDM7PSBycG1zZ193d2FuX2N0cmwub1xuICAxNTpcdG9iai0kKENPTkZJR19JT1NNKSAmIzQzOz0gaW9zbS9cbiAgMTY6XHRvYmotJChDT05GSUdfTVRLX1Q3WFgpICYjNDM7PSB0N3h4L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAxMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM1CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJT1NNL1dXQU4gUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgYSBzZWNvbmQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBJT1NNYCBhbmQgYFdXQU5gIGNvbnRleHQuIEdvb2QuIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggY29uY2VybmluZyBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBkb3duc3RyZWFtIGRhdGEgZGVjb2RpbmcgcGF0aC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB0aWdodGVuIHVwLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggZGF0YSBjb21pbmcgaW4gb3ZlciBQQ0kuCgpUaGlzIG1lYW5zIHdlIGhhdmUgYSBjbGVhciBhdHRhY2sgc3VyZmFjZSB0byBpbnZlc3RpZ2F0ZS4gVGhlIHBhdGNoJiMzOTtzIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBBbmQgdGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBxdWl0ZSBzcGVjaWZpYzogYG11eF9kbF9wcm9jZXNzX2RnYCBhbmQgYG11eF9kbF9hZGJfZGVjb2RlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2UgbmVlZCB0byB0YXJnZXQgZHVyaW5nIGZ1enppbmcsIHNwZWNpZmljYWxseS4gRmluYWxseSwgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgZXhwbGljaXRseSBgSU9TTWAgYW5kIGBXV0FOYCwgY29uZmlybWluZyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcuCgpUaGlzIGlzIGFsbCB2ZXJ5IHNvbGlkLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIGhlcmUuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHRlc3RpbmcgdG8gZW5zdXJlIHRoYXQgdGhlIGFkZGVkIGJvdW5kcyBjaGVja3MgYXJlIHN1ZmZpY2llbnQgYW5kIHJvYnVzdC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlIHNwZWNpZmljIGNvZGUgcmVnaW9ucyByZWZlcmVuY2VkIGJ5IHRob3NlIHN5bWJvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT1NNJiMzNDssCiAgICAmIzM0O1dXQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdXhfZGxfcHJvY2Vzc19kZyYjMzQ7LAogICAgJiMzNDttdXhfZGxfYWRiX2RlY29kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgZG93bmxpbmsgZGF0YSBkZWNvZGluZyBwYXRoIGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBUaGlzIGNvZGUgcHJvY2Vzc2VzIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSBQQ0ksIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuNTU4ODM1MDk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODQ4NTIzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9TTVwiLFxuICAgIFwiV1dBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm11eF9kbF9wcm9jZXNzX2RnXCIsXG4gICAgXCJtdXhfZGxfYWRiX2RlY29kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuNTU4ODM5NjQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTgzMjE2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxYjBiMTVhOWQ2YTA3ZTIyNzljZDlhYzlkYmI5NmIyOWVkYmE0Mjg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDIwIDEzOjQ4OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xcbmluZGV4IGJmZjQ2ZjdjYTU5ZjNmLi5mZjlhNGJjNTJmMjkzOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcXG5AQCAtNTUzLDE5ICs1NTMsMjEgQEAgc3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG4gXFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfb2ZfZGc7IGkrKywgZGcrKykge1xcbi1cXHRcXHRpZiAobGUzMl90b19jcHUoZGctXFx1MDAzZWRhdGFncmFtX2luZGV4KVxcbi1cXHRcXHRcXHRcXHRcXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxcbitcXHRcXHR1MzIgZGdfaW5kZXggPSBsZTMyX3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1faW5kZXgpO1xcbitcXG4rXFx0XFx0ZGdfbGVuID0gbGUxNl90b19jcHUoZGctXFx1MDAzZWRhdGFncmFtX2xlbmd0aCk7XFxuK1xcbitcXHRcXHRpZiAoZGdfaW5kZXggXFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcXG4gXFx0XFx0XFx0Z290byBkZ19lcnJvcjtcXG4gXFxuLVxcdFxcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cXG4tXFx0XFx0aWYgKGxlMzJfdG9fY3B1KGRnLVxcdTAwM2VkYXRhZ3JhbV9pbmRleCkgXFx1MDAzZT1cXG4tXFx0XFx0XFx0XFx0XFx0bGUzMl90b19jcHUoYWRiaC1cXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xcbitcXHRcXHQvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi9cXG4rXFx0XFx0aWYgKGRnX2luZGV4IFxcdTAwM2U9IGxlMzJfdG9fY3B1KGFkYmgtXFx1MDAzZWJsb2NrX2xlbmd0aCkgfHxcXG4rXFx0XFx0ICAgIGRnX2luZGV4IFxcdTAwM2U9IHNrYi1cXHUwMDNlbGVuIHx8XFxuK1xcdFxcdCAgICBkZ19sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIGRnX2luZGV4IHx8XFxuK1xcdFxcdCAgICBkbF9oZWFkX3BhZF9sZW4gXFx1MDAzZT0gZGdfbGVuKSB7XFxuIFxcdFxcdFxcdGdvdG8gZGdfZXJyb3I7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHBhY2tldF9vZmZzZXQgPVxcbi1cXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1faW5kZXgpICtcXG4tXFx0XFx0XFx0XFx0ZGxfaGVhZF9wYWRfbGVuO1xcbi1cXHRcXHRcXHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cXHUwMDNlZGF0YWdyYW1fbGVuZ3RoKTtcXG4rXFx0XFx0XFx0cGFja2V0X29mZnNldCA9IGRnX2luZGV4ICsgZGxfaGVhZF9wYWRfbGVuO1xcbiBcXHRcXHRcXHQvKiBQYXNzIHRoZSBwYWNrZXQgdG8gdGhlIG5ldGlmIGxheWVyLiAqL1xcbiBcXHRcXHRcXHRyYyA9IGlwY19tdXhfbmV0X3JlY2VpdmUoaXBjX211eCwgaWZfaWQsIGlwY19tdXgtXFx1MDAzZXd3YW4sXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBwYWNrZXRfb2Zmc2V0LFxcbkBAIC01OTUsNiArNTk3LDEwIEBAIHN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcXG4gXFx0YmxvY2sgPSBza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XFxuIFxcbitcXHQvKiBUaGUgYmxvY2sgaGVhZGVyIGl0c2VsZiBtdXN0IGZpdCBpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcXG4rXFx0XFx0Z290byBhZGJfZGVjb2RlX2VycjtcXG4rXFxuIFxcdC8qIFByb2Nlc3MgdGhlIGFnZ3JlZ2F0ZWQgZGF0YWdyYW0gdGFibGVzLiAqL1xcbiBcXHRhZHRoX2luZGV4ID0gbGUzMl90b19jcHUoYWRiaC1cXHUwMDNlZmlyc3RfdGFibGVfaW5kZXgpO1xcbiBcXG5AQCAtNjA2LDYgKzYxMiwxMSBAQCBzdGF0aWMgdm9pZCBtdXhfZGxfYWRiX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsXFxuIFxcbiBcXHQvKiBMb29wIHRocm91Z2ggbWl4ZWQgc2Vzc2lvbiB0YWJsZXMuICovXFxuIFxcdHdoaWxlIChhZHRoX2luZGV4KSB7XFxuK1xcdFxcdC8qIFRoZSB0YWJsZSBoZWFkZXIgbXVzdCBsaWUgd2l0aGluIHRoZSByZWNlaXZlZCBza2IuICovXFxuK1xcdFxcdGlmIChhZHRoX2luZGV4IFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHxcXG4rXFx0XFx0ICAgIGFkdGhfaW5kZXggXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxcbitcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbitcXG4gXFx0XFx0LyogR2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhYmxlIGhlYWRlci4gKi9cXG4gXFx0XFx0YWR0aCA9IChzdHJ1Y3QgbXV4X2FkdGggKikoYmxvY2sgKyBhZHRoX2luZGV4KTtcXG4gXFxuQEAgLTYyOSw2ICs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbiBcXHRcXHRpZiAobGUxNl90b19jcHUoYWR0aC1cXHUwMDNldGFibGVfbGVuZ3RoKSBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkdGgpKVxcbiBcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbiBcXG4rXFx0XFx0LyogVGhlIHdob2xlIGRhdGFncmFtIHRhYmxlIG11c3QgZml0IGluIHRoZSByZWNlaXZlZCBza2IuICovXFxuK1xcdFxcdGlmIChsZTE2X3RvX2NwdShhZHRoLVxcdTAwM2V0YWJsZV9sZW5ndGgpIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSBhZHRoX2luZGV4KVxcbitcXHRcXHRcXHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xcbitcXG4gXFx0XFx0LyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZGF0YWdyYW1zLiAqL1xcbiBcXHRcXHRucl9vZl9kZyA9IChsZTE2X3RvX2NwdShhZHRoLVxcdTAwM2V0YWJsZV9sZW5ndGgpIC1cXG4gXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBtdXhfYWR0aCkpIC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuOTc3ODk4NDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM2NTc3OTA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT1NNXCIsXG4gICAgXCJXV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXV4X2RsX3Byb2Nlc3NfZGdcIixcbiAgICBcIm11eF9kbF9hZGJfZGVjb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGRvd25saW5rIGRhdGEgZGVjb2RpbmcgcGF0aCBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlci4gVGhpcyBjb2RlIHByb2Nlc3NlcyBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZSB2aWEgUENJLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFiMGIxNWE5ZDZhMDdlMjI3OWNkOWFjOWRiYjk2YjI5ZWRiYTQyODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAxMzo0ODo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYyBiL2RyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY1xuaW5kZXggYmZmNDZmN2NhNTlmM2YuLmZmOWE0YmM1MmYyOTM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmNcbkBAIC01NTMsMTkgKzU1MywyMSBAQCBzdGF0aWMgaW50IG11eF9kbF9wcm9jZXNzX2RnKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IG11eF9hZGJoICphZGJoLFxuIFx0dTMyIHBhY2tldF9vZmZzZXQsIGksIHJjLCBkZ19sZW47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9vZl9kZzsgaSsrLCBkZysrKSB7XG4tXHRcdGlmIChsZTMyX3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9pbmRleClcbi1cdFx0XHRcdFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZGJoKSlcbitcdFx0dTMyIGRnX2luZGV4ID0gbGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpO1xuK1xuK1x0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuK1xuK1x0XHRpZiAoZGdfaW5kZXggXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuIFx0XHRcdGdvdG8gZGdfZXJyb3I7XG4gXG4tXHRcdC8qIElzIHRoZSBwYWNrZXQgaW5zaWRlIG9mIHRoZSBBREIgKi9cbi1cdFx0aWYgKGxlMzJfdG9fY3B1KGRnLVx1MDAzZWRhdGFncmFtX2luZGV4KSBcdTAwM2U9XG4tXHRcdFx0XHRcdGxlMzJfdG9fY3B1KGFkYmgtXHUwMDNlYmxvY2tfbGVuZ3RoKSkge1xuK1x0XHQvKiBJcyB0aGUgcGFja2V0IGluc2lkZSBvZiB0aGUgQURCIGFuZCB0aGUgcmVjZWl2ZWQgc2tiID8gKi9cbitcdFx0aWYgKGRnX2luZGV4IFx1MDAzZT0gbGUzMl90b19jcHUoYWRiaC1cdTAwM2VibG9ja19sZW5ndGgpIHx8XG4rXHRcdCAgICBkZ19pbmRleCBcdTAwM2U9IHNrYi1cdTAwM2VsZW4gfHxcbitcdFx0ICAgIGRnX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIGRnX2luZGV4IHx8XG4rXHRcdCAgICBkbF9oZWFkX3BhZF9sZW4gXHUwMDNlPSBkZ19sZW4pIHtcbiBcdFx0XHRnb3RvIGRnX2Vycm9yO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdHBhY2tldF9vZmZzZXQgPVxuLVx0XHRcdFx0bGUzMl90b19jcHUoZGctXHUwMDNlZGF0YWdyYW1faW5kZXgpICtcbi1cdFx0XHRcdGRsX2hlYWRfcGFkX2xlbjtcbi1cdFx0XHRkZ19sZW4gPSBsZTE2X3RvX2NwdShkZy1cdTAwM2VkYXRhZ3JhbV9sZW5ndGgpO1xuK1x0XHRcdHBhY2tldF9vZmZzZXQgPSBkZ19pbmRleCArIGRsX2hlYWRfcGFkX2xlbjtcbiBcdFx0XHQvKiBQYXNzIHRoZSBwYWNrZXQgdG8gdGhlIG5ldGlmIGxheWVyLiAqL1xuIFx0XHRcdHJjID0gaXBjX211eF9uZXRfcmVjZWl2ZShpcGNfbXV4LCBpZl9pZCwgaXBjX211eC1cdTAwM2V3d2FuLFxuIFx0XHRcdFx0XHRcdCBwYWNrZXRfb2Zmc2V0LFxuQEAgLTU5NSw2ICs1OTcsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0YmxvY2sgPSBza2ItXHUwMDNlZGF0YTtcbiBcdGFkYmggPSAoc3RydWN0IG11eF9hZGJoICopYmxvY2s7XG4gXG4rXHQvKiBUaGUgYmxvY2sgaGVhZGVyIGl0c2VsZiBtdXN0IGZpdCBpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgbXV4X2FkYmgpKVxuK1x0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuK1xuIFx0LyogUHJvY2VzcyB0aGUgYWdncmVnYXRlZCBkYXRhZ3JhbSB0YWJsZXMuICovXG4gXHRhZHRoX2luZGV4ID0gbGUzMl90b19jcHUoYWRiaC1cdTAwM2VmaXJzdF90YWJsZV9pbmRleCk7XG4gXG5AQCAtNjA2LDYgKzYxMiwxMSBAQCBzdGF0aWMgdm9pZCBtdXhfZGxfYWRiX2RlY29kZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsXG4gXG4gXHQvKiBMb29wIHRocm91Z2ggbWl4ZWQgc2Vzc2lvbiB0YWJsZXMuICovXG4gXHR3aGlsZSAoYWR0aF9pbmRleCkge1xuK1x0XHQvKiBUaGUgdGFibGUgaGVhZGVyIG11c3QgbGllIHdpdGhpbiB0aGUgcmVjZWl2ZWQgc2tiLiAqL1xuK1x0XHRpZiAoYWR0aF9pbmRleCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBtdXhfYWRiaCkgfHxcbitcdFx0ICAgIGFkdGhfaW5kZXggXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbitcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuK1xuIFx0XHQvKiBHZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgdGFibGUgaGVhZGVyLiAqL1xuIFx0XHRhZHRoID0gKHN0cnVjdCBtdXhfYWR0aCAqKShibG9jayArIGFkdGhfaW5kZXgpO1xuIFxuQEAgLTYyOSw2ICs2NDAsMTAgQEAgc3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxuIFx0XHRpZiAobGUxNl90b19jcHUoYWR0aC1cdTAwM2V0YWJsZV9sZW5ndGgpIFx1MDAzYyBzaXplb2Yoc3RydWN0IG11eF9hZHRoKSlcbiBcdFx0XHRnb3RvIGFkYl9kZWNvZGVfZXJyO1xuIFxuK1x0XHQvKiBUaGUgd2hvbGUgZGF0YWdyYW0gdGFibGUgbXVzdCBmaXQgaW4gdGhlIHJlY2VpdmVkIHNrYi4gKi9cbitcdFx0aWYgKGxlMTZfdG9fY3B1KGFkdGgtXHUwMDNldGFibGVfbGVuZ3RoKSBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIGFkdGhfaW5kZXgpXG4rXHRcdFx0Z290byBhZGJfZGVjb2RlX2VycjtcbitcbiBcdFx0LyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZGF0YWdyYW1zLiAqL1xuIFx0XHRucl9vZl9kZyA9IChsZTE2X3RvX2NwdShhZHRoLVx1MDAzZXRhYmxlX2xlbmd0aCkgLVxuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IG11eF9hZHRoKSkgL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDUuOTc3OTAwMDM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4MzczOTA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXV0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoYXQgdGhpcyBpcyBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlciDigJMgSVBDIG92ZXIgU2hhcmVkIE1lbW9yeSwgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIEFsd2F5cyBhIGdvb2QgdGhpbmcgdG8gc2VlIG1vcmUgZGVmZW5zaXZlIGNvZGluZy4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSBmZXcgdGhpbmdzLiBGaXJzdCwgaXMgdGhpcyBjb2RlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHN5c3RlbT8gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY29uZGl0aW9ucyBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBTbywgbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBJIGFzc2VzcyB0aGUgc2NvcGUgb2YgdGhpcyBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ4OjQ5Ljc2MTY0MTUwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0MDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXhfZGxfcHJvY2Vzc19kZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL2lvc20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01MTg9c3RhdGljIHZvaWQgaXBjX211eF9kbF9hY2JfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01NDctLyogcHJvY2VzcyBkYXRhZ3JhbSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo1NDg6c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTQ5LVxcdFxcdFxcdCAgICAgc3RydWN0IG11eF9hZHRoX2RnICpkZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY2NS1cXHRcXHRkZyA9IGFkdGgtXFx1MDAzZWRnO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2NjY6XFx0XFx0aWYgKG11eF9kbF9wcm9jZXNzX2RnKGlwY19tdXgsIGFkYmgsIGRnLCBza2IsIGlmX2lkLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02NjctXFx0XFx0XFx0XFx0ICAgICAgbnJfb2ZfZGcpIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDg6NDkuODE3Mzg1OTEzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Njg3NDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBgZHJpdmVycy9uZXQvd3dhbi9pb3NtL2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gRmlyc3QsIEknbSB0aGlua2luZyBJIHNob3VsZCBqdW1wIHN0cmFpZ2h0IGludG8gY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBkcml2ZXJzL25ldC93d2FuL2lvc20vYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgc2V0IG9mIFdXQU4gZHJpdmVycywgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gZmVhdHVyZSBlbmFibGVtZW50LCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgYnVpbGQtdGltZSBjb250cm9scy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBhcmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3Vic3lzdGVtIGFuZCB3aGF0IGtpbmQgb2YgY3VzdG9taXphdGlvbiBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBob29rcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgYW5kIGFjdGl2YXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0ODo1My4wMDQyNjI4MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzNTY1MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT1NNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ4OjUzLjA1ODYzMDE1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjIwODA2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBpbmZvcm1hdGlvbjpcblxuKipLY29uZmlnIEluc3BlY3Rpb246IHd3YW4gZHJpdmVycyoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgd3dhbiBkcml2ZXIgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBGaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGVzZSBzcGVjaWZpYyB3aXJlbGVzcyB3aWRlIGFyZWEgbmV0d29yayBkcml2ZXJzLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlLCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgZ2VuZXJhbCBjb250ZXh0IGZvciB0aGVzZSB3d2FuIGRyaXZlcnMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJlZC4gSSBleHBlY3QgdG8gZmluZCB0aGluZ3MgbGlrZSBmZWF0dXJlIHRvZ2dsZXMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBhbmQgcHJvYmFibHkgc29tZSBvcHRpb25zIHJlbGF0ZWQgdG8gZGlmZmVyZW50IGNlbGx1bGFyIG1vZGVtIGltcGxlbWVudGF0aW9ucyBvciBuZXR3b3JrIHByb3RvY29scy4gVGltZSB0byBvcGVuIGl0IHVwIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0ODo1OS44ODA3MTI2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM0NzU2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPU01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTc4PWNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTY6Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjAwLjI1NDE5NDg3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTE0MDczNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgSU9TTSoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJT1NNYC4gSXQncyBhIGtleSBwYXJ0IG9mIG15IHJlc2VhcmNoIGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGFyY2hpdGVjdHVyZSBpcyBwYXJhbW91bnQgdG8gb3B0aW1pemF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB3aGF0IHRoaXMgc3BlY2lmaWMgbW9kdWxlLCBgSU9TTWAsIHJlbGllcyBvbi4gSSBuZWVkIHRvIGtub3cgd2hpY2ggb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBjb21wb25lbnRzIGl0IHVzZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcywgdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzLCBhbmQgdWx0aW1hdGVseSwgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBtYWludGFpbmFiaWxpdHkuIFRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYW5kIGJlaW5nIGVmZmVjdGl2ZSB3aXRoaW4gbXkgcm9sZSBhcyBhbiBleHBlcnQuIFRoaXMgY291bGQgZW50YWlsIGxvb2tpbmcgYXQgdGhlIGJ1aWxkIHNjcmlwdHMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGV2ZW4gZGVsdmluZyBpbnRvIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIGlmIG5lY2Vzc2FyeS4gVGhlIGdvYWwgaXMgdG8gY3JlYXRlIGEgY29tcGxldGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgZGV2ZWxvcCBzb21lIHNwZWNpZmljIGlkZWFzIG9uIHdoZXJlIHRoZSBuZXh0IG9wdGltaXphdGlvbiB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDM0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDk6MDMuNTA1NjA0ODk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NjpcXHRjb25maWcgSU9TTVxcbiAgOTc6XFx0XFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuICA5ODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgOTk6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDEwMDpcXHRcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuIDEwMTpcXHRcXHRoZWxwXFxuIDEwMjpcXHRcXHQgIFRoaXMgZHJpdmVyIGVuYWJsZXMgSW50ZWwgTS4yIFdXQU4gRGV2aWNlIGNvbW11bmljYXRpb24uXFxuIDEwMzpcXHRcXG4gMTA0OlxcdFxcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXFxuIDEwNTpcXHRcXHQgIExpbnV4IHNheSBZL00gaGVyZS5cXG4gMTA2OlxcdFxcbiAxMDc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMDg6XFx0XFxuIDEwOTpcXHRjb25maWcgTVRLX1Q3WFhcXG4gMTEwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gVDd4eCBkZXZpY2VcXFwiXFxuIDExMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMTI6XFx0XFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbiAxMTM6XFx0XFx0aGVscFxcbiAxMTQ6XFx0XFx0ICBFbmFibGVzIE1lZGlhVGVrIFBDSWUgYmFzZWQgNUcgV1dBTiBtb2RlbSAoVDd4eCBzZXJpZXMpIGRldmljZS5cXG4gMTE1OlxcdFxcdCAgQWRhcHRzIFdXQU4gZnJhbWV3b3JrIGFuZCBwcm92aWRlcyBuZXR3b3JrIGludGVyZmFjZSBsaWtlIHd3YW4wXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjAzLjUwNTY3ODU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ2MDI3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaU9TTSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSU9TTWAgZHJpdmVyLCB3aGljaCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpcyBhbiBJbnRlbCBNLjIgV1dBTiBkZXZpY2UgYW5kIHJlbGllcyBvbiB0aGUgYFBDSWAgYnVzLiBUaGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIEkgZXZlbiBnZXQgdG8gdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/IElmIHNvLCB0aGVuIGl0J3Mgd29ydGggY2hlY2tpbmcgaWYgaXQgaGFzIGFueSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgb3IgZnV6emVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJ3MgdmhjaSBvciBwY2kgZnV6emVyLiBXYWl0IGEgc2Vjb25kLCBkb2VzIHN5emthbGxlciBoYXZlIGEgUENJIGZ1enplcj8gWWVzLCBpdCBkb2VzIHN1cHBvcnQgZnV6emluZyBQQ0kgZGV2aWNlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZWAsIHdoaWNoIGlzIGEgdmVyeSB1c2VmdWwgcHJpbWl0aXZlLlxuXG5TbywgbGV0J3Mgc2VlIGlmIHRoaXMgYGlvc21gIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIHRhcmdldGVkLiBUaGUgZmFjdCB0aGF0IEknbSBzZWVpbmcgYSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIHN1Z2dlc3RzIHRoYXQgc3l6a2FsbGVyIGhhcyBpbmRlZWQgYmVlbiBmaW5kaW5nIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcmVsZXZhbnQgY29kZSwgbGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jYC4gSSBuZWVkIHRvIGV4YW1pbmUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGRhdGEgY29taW5nICpmcm9tKiB0aGUgZGV2aWNlLCBzdWNoIGFzIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkncmUgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nIHRoZSBkb3dubGluayBkYXRhLiBOb3csIGdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHRoYXQgZGF0YSBpcyBsaWtlbHkgYmVpbmcgdHJhbnNmZXJyZWQgdmlhIERNQSBvciBNTUlPLiBTbyBJIG11c3QgaW52ZXN0aWdhdGUgaG93IGBtdXhfZGxfYWRiX2RlY29kZWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2dWxuZXJhYmxlIHRoaXMgYXJlYSBjb3VsZCBiZSB0byBmdXp6ZWQgaW5wdXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMTM6NDk6MDguOTUxNzA4MDMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDEyOTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXhfZGxfYWRiX2RlY29kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL2lvc20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01NDg9c3RhdGljIGludCBtdXhfZGxfcHJvY2Vzc19kZyhzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIHN0cnVjdCBtdXhfYWRiaCAqYWRiaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy01ODUtLyogRGVjb2RlIGFuIGFnZ3JlZ2F0ZWQgZGF0YSBibG9jay4gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NTg2OnN0YXRpYyB2b2lkIG11eF9kbF9hZGJfZGVjb2RlKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNTg3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM9Njg3PXZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY5OC1cXHRjYXNlIElPU01fQUdHUl9NVVhfU0lHX0FEQkg6XFx0LyogQWdncmVnYXRlZCBEYXRhIEJsb2NrIEhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYzo2OTk6XFx0XFx0bXV4X2RsX2FkYl9kZWNvZGUoaXBjX211eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmMtNzAwLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OTowOS4wMDU4NDAzNTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2NDA3MDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBpcGNfbXV4X2RsX2RlY29kZWAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgYGlwY19tdXhfZGxfZGVjb2RlYCwgSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgcm9sZSBpbiB0aGUgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uIChJUEMpIG11bHRpcGxleGluZyBhbmQgZG93bmxpbmsgZGVjb2RpbmcuIFRoaXMgc3VnZ2VzdHMgaXQncyBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHJlY2VpdmluZyBkYXRhIGZyb20gbXVsdGlwbGUgc291cmNlcyAobXVsdGlwbGV4aW5nKSBzZW50IHZpYSBJUEMsIGFuZCB0aGVuIHVucGFja2luZyAoZGVjb2RpbmcpIHRoZSBkb3dubGluayBpbmZvcm1hdGlvbi4gVGhlIFwiZGxcIiB0ZWxscyBtZSBpdCdzIGxpa2VseSByZWNlaXZpbmcgZGF0YSB0aGF0IGlzIGdvaW5nIGRvd24sIGkuZS4sIGZyb20gYSBjZW50cmFsaXplZCBzb3VyY2UgdG8gZGlzdHJpYnV0ZWQgbm9kZXMuIEknZCBuZWVkIHRvIGNvbnNpZGVyIGEgZmV3IHRoaW5nczpcbiogICAqKk11bHRpcGxleGluZyBTY2hlbWU6KiogV2hhdCBhcmUgdGhlIHN1cHBvcnRlZCBtZXRob2RzIGZvciBtdWx0aXBsZXhpbmc/IElzIGl0IHRpbWUtZGl2aXNpb24gbXVsdGlwbGV4aW5nIChURE0pLCBmcmVxdWVuY3ktZGl2aXNpb24gbXVsdGlwbGV4aW5nIChGRE0pLCBjb2RlLWRpdmlzaW9uIG11bHRpcGxleGluZyAoQ0RNKSwgb3Igc29tZXRoaW5nIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWM/XG4qICAgKipEZWNvZGluZyBBbGdvcml0aG06KiogV2hhdCBzcGVjaWZpYyBhbGdvcml0aG1zIG9yIHByb3RvY29scyBhcmUgZW1wbG95ZWQgZm9yIGRlY29kaW5nPyBJcyBpdCB1c2luZyBhIHN0YW5kYXJkIGZvcm1hdCBsaWtlIHByb3RvYnVmIG9yIHNvbWV0aGluZyBjdXN0b20/IEFyZSB0aGVyZSBlcnJvci1jb3JyZWN0aW9uIG1lY2hhbmlzbXMgYnVpbHQgaW4/XG4qICAgKipEYXRhIFN0cnVjdHVyZToqKiBUaGUgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIGlucHV0IGFuZCB0aGUgb3V0cHV0LiBIb3cgaXMgdGhlIGRhdGEgcGFja2VkPyBEb2VzIGl0IHJlcXVpcmUgY29udGV4dC1hd2FyZSBkZWNvZGluZyBiYXNlZCBvbiBoZWFkZXJzIG9yIG1ldGFkYXRhP1xuKiAgICoqRWZmaWNpZW5jeToqKiBIb3cgZG9lcyBpdCBkZWFsIHdpdGggcGVyZm9ybWFuY2UgY29uc3RyYWludHMgaW4gSVBDIGVudmlyb25tZW50cz8gSG93IGRvZXMgaXQgaGFuZGxlIGVycm9ycyBhbmQgd2hhdCdzIHRoZSBleHBlY3RlZCB0aHJvdWdocHV0PyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzP1xuXG5JIHdvdWxkIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBJUEMgZnJhbWV3b3JrLiBXaGVyZSBkb2VzIGl0IGZpdCBpbiB0aGUgcGlwZWxpbmU/IFdoYXQgYXJlIHRoZSBkYXRhIGRlcGVuZGVuY2llcz8gV2hhdCBraW5kIG9mIGVycm9ycyBkb2VzIGl0IHJlcG9ydCwgYW5kIGhvdyBhcmUgdGhvc2UgaGFuZGxlZD8gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gdmlzdWFsaXplIHRoaXMgZnVuY3Rpb24ncyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0sIGFuZCB3aGF0IGltcGFjdCBpdCBoYXMgb24gdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToxMi45Njk5MTI5NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzU1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwY19tdXhfZGxfZGVjb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vaW9zbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0yOTg9c3RhdGljIHZvaWQgaXBjX2ltZW1fZGxfc2tiX3Byb2Nlc3Moc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNC1cXHRcXHRpZiAocGlwZS1cXHUwMDNlY2hhbm5lbC1cXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQpXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzozMjU6XFx0XFx0XFx0aXBjX211eF9kbF9kZWNvZGUoaXBjX2ltZW0tXFx1MDAzZW11eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYz01ODY9c3RhdGljIHZvaWQgbXV4X2RsX2FkYl9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4MS0vKipcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6NjgyOiAqIGlwY19tdXhfZGxfZGVjb2RlIC0gIFJvdXRlIHRoZSBETCBwYWNrZXQgdGhyb3VnaCB0aGUgSVAgTVVYIGxheWVyXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4My0gKiAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gSGVhZGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5jLTY4Ni0gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmM6Njg3OnZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXhfY29kZWMuYy02ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oPTI1OD11bmlvbiBtdXhfdHlwZV9oZWFkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eF9jb2RlYy5oLTI2Mi1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmg6MjYzOnZvaWQgaXBjX211eF9kbF9kZWNvZGUoc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4X2NvZGVjLmgtMjY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToxMy4wMjQyODM2NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NDg1NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipSZWFjaGluZyB0aGUgVGFyZ2V0IGFuZCBQbGFubmluZyB0aGUgRnV6eioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSB2dWxuZXJhYmlsaXR5IHRoYXQsIHdpdGhvdXQgYSBkb3VidCwgd2UgY2FuIHJlYWNoIHRocm91Z2ggdGhlIFBDSSBpbnRlcmZhY2UuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIGluY29taW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlLCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggKmZ1bmN0aW9uYWwqIGFuZCBwb2ludHMgZGlyZWN0bHkgdG8gYSBmdXp6aW5nIHRhcmdldC4gVGhlIGNvbmZpZyBvcHRpb24gbmVjZXNzYXJ5IHRvIGdldCB0aGlzIGFjdGl2ZSBhcHBlYXJzIHRvIGJlIGBJT1NNYCwgd2l0aCBgV1dBTmAgcG9zc2libHkgcmVxdWlyZWQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIGBXV0FOYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgb3IgaWYgYElPU01gIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjE2LjU5OTE0MjAzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNjU5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPU01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTc4PWNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTY6Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjE2LjY1MjUxMzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NzU1OTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV1dBTiBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIG9uIHRoZSBhZ2VuZGEgaXMgbmFpbGluZyBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gV1dBTi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBjb3JlIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBXV0FOIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBhc3N1bWluZyB0aGF0IGZpbGUgd2lsbCBiZSB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgc3ltYm9scywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBmbGFncyB0aGF0IGNvbnRyb2wgV1dBTidzIGluY2x1c2lvbiBvciBleGNsdXNpb24sIGFuZCBJ4oCZbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgaXMgYXJjaGl0ZWN0ZWQgaW4gdGVybXMgb2YgY29uZmlndXJhYmxlIGZlYXR1cmVzLiBJJ20gYWxzbyByZWFkeSB0byB0cmFjZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMgaWYgbmVlZGVkLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbWlnaHQgaW52b2x2ZSBoYXJkd2FyZSBlbmFibGVtZW50IG9yIHNwZWNpZmljIHBsYXRmb3JtIHN1cHBvcnQuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2xzIFdXQU4ncyBwcmVzZW5jZSwgYW5kIGhvdyBncmFudWxhciB3ZSBjYW4gZ2V0IHdpdGggaXRzIGZlYXR1cmUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjIwLjA0MDA3NTUyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxMjU1NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdXQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY9bWVudSBcXFwiV2lyZWxlc3MgV0FOXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo4OmNvbmZpZyBXV0FOXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIldXQU4gRHJpdmVyIENvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTg9aWYgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozMTpjb25maWcgV1dBTl9IV1NJTVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIFdXQU4gZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyMC4wOTQyMDU4NTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNzAyMTA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBXV0FOYCBhbmQgYElPU01gLiBSaWdodCwgbGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbiBhcyBkZXBlbmRlbmNpZXM/IEFoLCB5ZXMsIGBJT1NNYCBkZXBlbmRzIG9uIGBQQ0lgLCBJIHNlZS4gR29vZCwgZ29vZC5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkIGFyZSBgbXV4X2RsX3Byb2Nlc3NfZGdgIGFuZCBgbXV4X2RsX2FkYl9kZWNvZGVgLiBJIHNob3VsZCBwcm9iYWJseSBleGFtaW5lIHRob3NlIGluIGRldGFpbC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgaW4gdGhpcyByb3VuZC4gTm8sIGp1c3QgdGhvc2UgdHdvLCBhcyBleHBlY3RlZC5cblxuUmlnaHQsIGxldCdzIGdvIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZSB0aGUgY29uZmlnIHNpdHVhdGlvbiBjb3JyZWN0IGluIG15IGhlYWQuIGBJT1NNYCBpcyB0aGUgcHJpbWFyeSBjb25maWcgaW4gcGxheSBoZXJlLiBgV1dBTmAgaXMgaXRzIHBhcmVudCwgYW5kIGl0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGBJT1NNYCB0byBiZSBlbmFibGVkLCBpbiBvdGhlciB3b3JkcyBgV1dBTmAgZW5hYmxlcyBgSU9TTWAgLiBTbywgYElPU01gIGFuZCBgV1dBTmAgbXVzdCBib3RoIGJlIGVuYWJsZWQuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjb25maWRlbnQsIGxldCdzIGFsc28gaW52ZXN0aWdhdGUgdGhlIE1ha2VmaWxlIGF0IGBkcml2ZXJzL25ldC93d2FuL01ha2VmaWxlYCwgdG8gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ3MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyNC4zMDEyMjkxNjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBXV0FOIGRldmljZSBkcml2ZXJzLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfV1dBTikgKz0gd3dhbi5vXFxuICAgNzpcXHR3d2FuLW9ianMgKz0gd3dhbl9jb3JlLm9cXG4gICA4OlxcdFxcbiAgIDk6XFx0b2JqLSQoQ09ORklHX1dXQU5fSFdTSU0pICs9IHd3YW5faHdzaW0ub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRvYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgKz0gbWhpX3d3YW5fY3RybC5vXFxuICAxMjpcXHRvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuICAxMzpcXHRvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuICAxNDpcXHRvYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSArPSBycG1zZ193d2FuX2N0cmwub1xcbiAgMTU6XFx0b2JqLSQoQ09ORklHX0lPU00pICs9IGlvc20vXFxuICAxNjpcXHRvYmotJChDT05GSUdfTVRLX1Q3WFgpICs9IHQ3eHgvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDEzOjQ5OjI0LjMwMTI5MjI3OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU4MTUzODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElPU00vV1dBTiBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBMZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgc2Vjb25kLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgSU9TTWAgYW5kIGBXV0FOYCBjb250ZXh0LiBHb29kLiBXZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggY29uY2VybmluZyBib3VuZHMgY2hlY2tpbmcgd2l0aGluIHRoZSBJbnRlbCBJT1NNIFdXQU4gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBkb3duc3RyZWFtIGRhdGEgZGVjb2RpbmcgcGF0aC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB0aWdodGVuIHVwLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggZGF0YSBjb21pbmcgaW4gb3ZlciBQQ0kuXG5cblRoaXMgbWVhbnMgd2UgaGF2ZSBhIGNsZWFyIGF0dGFjayBzdXJmYWNlIHRvIGludmVzdGlnYXRlLiBUaGUgcGF0Y2gncyBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgaW1wbGllcyBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5IHRocm91Z2ggZnV6emluZy4gQW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgcXVpdGUgc3BlY2lmaWM6IGBtdXhfZGxfcHJvY2Vzc19kZ2AgYW5kIGBtdXhfZGxfYWRiX2RlY29kZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdlIG5lZWQgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLCBzcGVjaWZpY2FsbHkuIEZpbmFsbHksIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGV4cGxpY2l0bHkgYElPU01gIGFuZCBgV1dBTmAsIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLlxuXG5UaGlzIGlzIGFsbCB2ZXJ5IHNvbGlkLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgaGVyZS4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgdGVzdGluZyB0byBlbnN1cmUgdGhhdCB0aGUgYWRkZWQgYm91bmRzIGNoZWNrcyBhcmUgc3VmZmljaWVudCBhbmQgcm9idXN0LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCB0aGUgc3BlY2lmaWMgY29kZSByZWdpb25zIHJlZmVyZW5jZWQgYnkgdGhvc2Ugc3ltYm9scy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIzNSwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQxMzo0OToyOS4yNTk0NDg3NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDIyNDA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9TTVwiLFxuICAgIFwiV1dBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm11eF9kbF9wcm9jZXNzX2RnXCIsXG4gICAgXCJtdXhfZGxfYWRiX2RlY29kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBkb3dubGluayBkYXRhIGRlY29kaW5nIHBhdGggaW4gdGhlIEludGVsIElPU00gV1dBTiBkcml2ZXIuIFRoaXMgY29kZSBwcm9jZXNzZXMgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIFBDSSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT1NNXCIsXG4gICAgXCJXV0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXV4X2RsX3Byb2Nlc3NfZGdcIixcbiAgICBcIm11eF9kbF9hZGJfZGVjb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGRvd25saW5rIGRhdGEgZGVjb2RpbmcgcGF0aCBpbiB0aGUgSW50ZWwgSU9TTSBXV0FOIGRyaXZlci4gVGhpcyBjb2RlIHByb2Nlc3NlcyBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZSB2aWEgUENJLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowkcgdt[1] Phase: Succeeded StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 13:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 13:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2] Phase: Succeeded StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 13:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-20 13:49:40 +0000 UTC FinishedAt: 2026-06-20 13:49:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkcgdt/series-workflowkcgdt-convert-artifact-3554641398/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-20 13:49:50 +0000 UTC FinishedAt: 2026-06-20 14:11:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-20 13:49:50 +0000 UTC FinishedAt: 2026-06-20 14:11:03 +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:*ebde04ed-d744-4c3d-ad71-64a1c89ade77,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-workflowkcgdt/series-workflowkcgdt-convert-artifact-3554641398/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": "99ac5818-7aea-4326-9ff3-43cd0ac3482b", "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-workflowkcgdt/series-workflowkcgdt-build-action-122003724/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-20 13:49:50 +0000 UTC FinishedAt: 2026-06-20 14:10:53 +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:*ebde04ed-d744-4c3d-ad71-64a1c89ade77,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-workflowkcgdt/series-workflowkcgdt-convert-artifact-3554641398/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": "99ac5818-7aea-4326-9ff3-43cd0ac3482b", "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-workflowkcgdt/series-workflowkcgdt-build-action-122003724/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-20 14:11:03 +0000 UTC FinishedAt: 2026-06-20 14:11:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-20 14:11:03 +0000 UTC FinishedAt: 2026-06-20 14:11:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-20 14:11:03 +0000 UTC FinishedAt: 2026-06-20 14:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-20 14:11:03 +0000 UTC FinishedAt: 2026-06-20 14:11:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkcgdt/series-workflowkcgdt-convert-artifact-393111433/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-20 14:11:13 +0000 UTC FinishedAt: 2026-06-20 14:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-20 14:11:13 +0000 UTC FinishedAt: 2026-06-20 14:13:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*99ac5818-7aea-4326-9ff3-43cd0ac3482b,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-workflowkcgdt/series-workflowkcgdt-build-action-122003724/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-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-20 14:13:54 +0000 UTC FinishedAt: 2026-06-20 14:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-20 14:13:54 +0000 UTC FinishedAt: 2026-06-20 14:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-20 14:13:54 +0000 UTC FinishedAt: 2026-06-20 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-20 14:13:54 +0000 UTC FinishedAt: 2026-06-20 14:34:57 +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:*ebde04ed-d744-4c3d-ad71-64a1c89ade77,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-workflowkcgdt/series-workflowkcgdt-convert-artifact-393111433/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": "49befa70-deac-463f-9aa8-b0511937966b", "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-workflowkcgdt/series-workflowkcgdt-build-action-1832610149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-20 14:13:54 +0000 UTC FinishedAt: 2026-06-20 14:34:47 +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:*ebde04ed-d744-4c3d-ad71-64a1c89ade77,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-workflowkcgdt/series-workflowkcgdt-convert-artifact-393111433/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": "49befa70-deac-463f-9aa8-b0511937966b", "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-workflowkcgdt/series-workflowkcgdt-build-action-1832610149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-20 14:34:57 +0000 UTC FinishedAt: 2026-06-20 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-20 14:34:57 +0000 UTC FinishedAt: 2026-06-20 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-20 14:34:57 +0000 UTC FinishedAt: 2026-06-20 14:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-20 14:34:57 +0000 UTC FinishedAt: 2026-06-20 14:36:25 +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:*49befa70-deac-463f-9aa8-b0511937966b,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-workflowkcgdt/series-workflowkcgdt-build-action-1832610149/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-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +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":["mux_dl_process_dg","mux_dl_adb_decode"],"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:*99ac5818-7aea-4326-9ff3-43cd0ac3482b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49befa70-deac-463f-9aa8-b0511937966b,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-workflowkcgdt/series-workflowkcgdt-build-action-122003724/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-workflowkcgdt/series-workflowkcgdt-build-action-1832610149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 14:36:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 14:36:40 +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":["mux_dl_process_dg","mux_dl_adb_decode"],"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-workflowkcgdt/series-workflowkcgdt-convert-artifact-3437068766/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 14:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 14:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-20 14:36:35 +0000 UTC FinishedAt: 2026-06-20 14:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-20 14:36:45 +0000 UTC FinishedAt: 2026-06-20 15:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkcgdt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mux_dl_process_dg","mux_dl_adb_decode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOSM","WWAN"],"series_id":"26343f80-d8ee-48a3-91ff-90b859e52680","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-20 14:36:45 +0000 UTC FinishedAt: 2026-06-20 15:20:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*99ac5818-7aea-4326-9ff3-43cd0ac3482b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49befa70-deac-463f-9aa8-b0511937966b,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-workflowkcgdt/series-workflowkcgdt-build-action-122003724/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-workflowkcgdt/series-workflowkcgdt-build-action-1832610149/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-workflowkcgdt/series-workflowkcgdt-convert-artifact-3437068766/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,}