Name: series-workflowl6rkd Phase: Succeeded StartedAt: 2026-07-05 10:23:13 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[0] Phase: Succeeded StartedAt: 2026-07-05 10:23:13 +0000 UTC FinishedAt: 2026-07-05 10:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 10:23:13 +0000 UTC FinishedAt: 2026-07-05 10:41:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "8e2f13df-c8da-4019-9d03-021a8706dff1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_non_resident_attr_insert_range", "ntfs_insert_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMTM0OGU2NzZhMTg4MmJiMmQzZTI5OTQyYzQwNWY0N2MzNjQxMTU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMDo0MDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuY1xuQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiYjNDM7XHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUxMzQ4ZTY3NmExODgyYmIyZDNlMjk5NDJjNDA1ZjQ3YzM2NDExNTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmMKaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNgogCXJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7CiAJaWYgKHJldCkgewogCQl1cF93cml0ZSgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwomIzQzOwkJa2ZyZWUoaG9sZV9ybCk7CiAJCXJldHVybiByZXQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBMZWFrIEZpeCBpbiB0aGUgTlRGUyBGaWxlc3lzdGVtIENvZGUqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IGEgcHJvcG9zZWQgcGF0Y2gsIGFuZCBpdCBzZWVtcyB0byBpbnZvbHZlIGEgYGtmcmVlKGhvbGVfcmwpO2AgY2FsbCB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBpbiB0aGUgYGZzL250ZnMvYXR0cmliLmNgIGZpbGUuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBpbmRpY2F0ZXMgdGhpcyBpcyBhIG1lbW9yeSBsZWFrIGZpeC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbnRleHQgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaG9sZV9ybGAgcmVwcmVzZW50cyBhbmQgd2h5IGl0cyBmcmVlaW5nIGlzIHJlcXVpcmVkIGluIHRoaXMgc3BlY2lmaWMgcGFydCBvZiB0aGUgTlRGUyBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGZ1bmN0aW9uIGl0c2VsZiwgd2l0aGluIHRoYXQgYGF0dHJpYi5jYCBmaWxlLCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBkZWFsbG9jYXRpb24gd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhpcyBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGVmZmljYWN5IGluIGFkZHJlc3NpbmcgdGhlIGxlYWsuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYW55IHNpZGUgZWZmZWN0cyBvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MzAwLVxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRob3NlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byBOVEZTIEF0dHJpYnV0ZSBIYW5kbGluZyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBOVEZTIGF0dHJpYnV0ZSBoYW5kbGluZyBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTMwMSBpbiBgZnMvbnRmcy9hdHRyaWIuY2AuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcml0aWNhbCBsb2dpYyB0aGVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgYXR0cmlidXRlcyBhcmUgcmVhZCwgd3JpdHRlbiwgb3IgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgb2YgdGhhdCBsaW5lIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGFraW5nIHBsYWNlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBlcnJvciBjb25kaXRpb25zLCBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIGF0dHJpYnV0ZSBtYW5hZ2VtZW50LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCB0aGlzIGFyZWEgaW52b2x2ZXMgaG93IGRhdGEgc3RyZWFtcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGZpbGUgbWV0YWRhdGEsIHNvIHRoYXQgc2hvdWxkIGJlIG15IHN0YXJ0aW5nIGZvY3VzLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTI5MDpcdFx0fVxuNTI5MTpcdFx0cmV0ID0gZGF0YTtcbjUyOTI6XHRcdGlmIChkYXRhX3NpemUpXG41MjkzOlx0XHRcdCpkYXRhX3NpemUgPSBzaXplO1xuNTI5NDpcdG91dDpcbjUyOTU6XHRcdGlwdXQoYm1wX3ZpKTtcbjUyOTY6XHRlcnJfZXhpdDpcbjUyOTc6XHRcdG50ZnNfZGVidWcoXCYjMzQ7XFxuXCYjMzQ7KTtcbjUyOTg6XHRcdHJldHVybiByZXQ7XG41Mjk5Olx0fVxuNTMwMDpcdFxuNTMwMTpcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG41MzAyOlx0e1xuNTMwMzpcdFx0c3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS1cdTAwM2V2b2w7XG41MzA0Olx0XHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpob2xlX3JsLCAqcmw7XG41MzA1Olx0XHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eDtcbjUzMDY6XHRcdGludCByZXQ7XG41MzA3Olx0XHRzaXplX3QgbmV3X3JsX2NvdW50O1xuNTMwODpcdFxuNTMwOTpcdFx0aWYgKE5Jbm9BdHRyKG5pKSB8fCBuaS1cdTAwM2V0eXBlICE9IEFUX0RBVEEpXG41MzEwOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjUzMTE6XHRcdGlmIChzdGFydF92Y24gXHUwMDNlIG50ZnNfYnl0ZXNfdG9fY2x1c3Rlcih2b2wsIG5pLVx1MDAzZWFsbG9jYXRlZF9zaXplKSlcbjUzMTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG41MzEzOlx0XG41MzE0Olx0XHRob2xlX3JsID0ga21hbGxvYyhzaXplb2YoKmhvbGVfcmwpICogMiwgR0ZQX05PRlMpO1xuNTMxNTpcdFx0aWYgKCFob2xlX3JsKVxuNTMxNjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjUzMTc6XHRcdGhvbGVfcmxbMF0udmNuID0gc3RhcnRfdmNuO1xuNTMxODpcdFx0aG9sZV9ybFswXS5sY24gPSBMQ05fSE9MRTtcbjUzMTk6XHRcdGhvbGVfcmxbMF0ubGVuZ3RoID0gbGVuO1xuNTMyMDpcdFx0aG9sZV9ybFsxXS52Y24gPSBzdGFydF92Y24gJiM0MzsgbGVuO1xuNTMyMTpcdFx0aG9sZV9ybFsxXS5sY24gPSBMQ05fRU5PRU5UO1xuNTMyMjpcdFx0aG9sZV9ybFsxXS5sZW5ndGggPSAwO1xuNTMyMzpcdFxuNTMyNDpcdFx0ZG93bl93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuNTMyNTpcdFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbjUzMjY6XHRcdGlmIChyZXQpIHtcbjUzMjc6XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbjUzMjg6XHRcdFx0a2ZyZWUoaG9sZV9ybCk7XG41MzI5Olx0XHRcdHJldHVybiByZXQ7XG41MzMwOlx0XHR9XG41MzMxOlx0XG41MzMyOlx0XHRybCA9IG50ZnNfcmxfZmluZF92Y25fbm9sb2NrKG5pLVx1MDAzZXJ1bmxpc3QucmwsIHN0YXJ0X3Zjbik7XG41MzMzOlx0XHRpZiAoIXJsKSB7XG41MzM0Olx0XHRcdHVwX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG41MzM1Olx0XHRcdGtmcmVlKGhvbGVfcmwpO1xuNTMzNjpcdFx0XHRyZXR1cm4gLUVJTztcbjUzMzc6XHRcdH1cbjUzMzg6XHRcbjUzMzk6XHRcdHJsID0gbnRmc19ybF9pbnNlcnRfcmFuZ2UobmktXHUwMDNlcnVubGlzdC5ybCwgKGludCluaS1cdTAwM2VydW5saXN0LmNvdW50LFxuNTM0MDpcdFx0XHRcdFx0ICBob2xlX3JsLCAxLCBcdTAwMjZuZXdfcmxfY291bnQpO1xuNTM0MTpcdFx0aWYgKElTX0VSUihybCkpIHtcbjUzNDI6XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbjUzNDM6XHRcdFx0a2ZyZWUoaG9sZV9ybCk7XG41MzQ0Olx0XHRcdHJldHVybiBQVFJfRVJSKHJsKTtcbjUzNDU6XHRcdH1cbjUzNDY6XHRcdG5pLVx1MDAzZXJ1bmxpc3QucmwgPSAgcmw7XG41MzQ3Olx0XHRuaS1cdTAwM2VydW5saXN0LmNvdW50ID0gbmV3X3JsX2NvdW50O1xuNTM0ODpcdFxuNTM0OTpcdFx0bmktXHUwMDNlYWxsb2NhdGVkX3NpemUgJiM0Mzs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XG41MzUwOlx0XHRuaS1cdTAwM2VkYXRhX3NpemUgJiM0Mzs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XG41MzUxOlx0XHRpZiAobnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgc3RhcnRfdmNuKSBcdTAwM2MgbmktXHUwMDNlaW5pdGlhbGl6ZWRfc2l6ZSlcbjUzNTI6XHRcdFx0bmktXHUwMDNlaW5pdGlhbGl6ZWRfc2l6ZSAmIzQzOz0gbnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgbGVuKTtcbjUzNTM6XHRcdHJldCA9IG50ZnNfYXR0cl91cGRhdGVfbWFwcGluZ19wYWlycyhuaSwgMCk7XG41MzU0Olx0XHR1cF93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuNTM1NTpcdFx0aWYgKHJldClcbjUzNTY6XHRcdFx0cmV0dXJuIHJldDtcbjUzNTc6XHRcbjUzNTg6XHRcdGN0eCA9IG50ZnNfYXR0cl9nZXRfc2VhcmNoX2N0eChuaSwgTlVMTCk7XG41MzU5Olx0XHRpZiAoIWN0eCkge1xuNTM2MDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuNTM2MTpcdFx0XHRyZXR1cm4gcmV0O1xuNTM2MjpcdFx0fVxuNTM2MzpcdFxuNTM2NDpcdFx0cmV0ID0gbnRmc19hdHRyX2xvb2t1cChuaS1cdTAwM2V0eXBlLCBuaS1cdTAwM2VuYW1lLCBuaS1cdTAwM2VuYW1lX2xlbiwgQ0FTRV9TRU5TSVRJVkUsXG41MzY1Olx0XHRcdFx0ICAgICAgIDAsIE5VTEwsIDAsIGN0eCk7XG41MzY2Olx0XHRpZiAocmV0KSB7XG41MzY3Olx0XHRcdG50ZnNfYXR0cl9wdXRfc2VhcmNoX2N0eChjdHgpO1xuNTM2ODpcdFx0XHRyZXR1cm4gcmV0O1xuNTM2OTpcdFx0fVxuNTM3MDpcdFxuNTM3MTpcdFx0Y3R4LVx1MDAzZWF0dHItXHUwMDNlZGF0YS5ub25fcmVzaWRlbnQuZGF0YV9zaXplID0gY3B1X3RvX2xlNjQobmktXHUwMDNlZGF0YV9zaXplKTtcbjUzNzI6XHRcdGN0eC1cdTAwM2VhdHRyLVx1MDAzZWRhdGEubm9uX3Jlc2lkZW50LmluaXRpYWxpemVkX3NpemUgPSBjcHVfdG9fbGU2NChuaS1cdTAwM2Vpbml0aWFsaXplZF9zaXplKTtcbjUzNzM6XHRcdGlmIChuaS1cdTAwM2V0eXBlID09IEFUX0RBVEEgXHUwMDI2XHUwMDI2IG5pLVx1MDAzZW5hbWUgPT0gQVRfVU5OQU1FRClcbjUzNzQ6XHRcdFx0Tklub1NldEZpbGVOYW1lRGlydHkobmkpO1xuNTM3NTpcdFx0bWFya19tZnRfcmVjb3JkX2RpcnR5KGN0eC1cdTAwM2VudGZzX2lubyk7XG41Mzc2Olx0XHRudGZzX2F0dHJfcHV0X3NlYXJjaF9jdHgoY3R4KTtcbjUzNzc6XHRcdHJldHVybiByZXQ7XG41Mzc4Olx0fVxuNTM3OTpcdFxuNTM4MDpcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbjUzODE6XHR7XG41MzgyOlx0XHRzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCA9IG5pLVx1MDAzZXZvbDtcbjUzODM6XHRcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnB1bmNoX3JsLCAqcmw7XG41Mzg0Olx0XHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eCA9IE5VTEw7XG41Mzg1Olx0XHRzNjQgZW5kX3ZjbjtcbjUzODY6XHRcdGludCBkc3RfY250O1xuNTM4NzpcdFx0aW50IHJldDtcbjUzODg6XHRcdHNpemVfdCBuZXdfcmxfY250O1xuNTM4OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgTWVtb3J5IExlYWsgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgdGhhdCBmdW5jdGlvbiBsaXZlcyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0gY29kZSDigJMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LiBGaXJzdCB0aGluZ+KAmXMgZmlyc3Q6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBXaGVyZSBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBsZWFrIGFuZCB3aHkgdGhpcyBjb2RlIHBhdGggaXMgcHJvYmxlbWF0aWMuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgZ3JlYXQgZGVhbCBhYm91dCB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhpcyBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbmZzL250ZnMvYXR0cmliLmMtNTMwMi17XG4tLVxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xuZnMvbnRmcy9hdHRyaWIuaDoxMDk6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XG5mcy9udGZzL2F0dHJpYi5oLTExMC1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuLS1cbmZzL250ZnMvZmlsZS5jPTk5ND1zdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVx0bXV0ZXhfbG9ja19uZXN0ZWQoXHUwMDI2bmktXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XG5mcy9udGZzL2ZpbGUuYzoxMDQwOlx0ZXJyID0gbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UobmksIHN0YXJ0X3ZjbixcbmZzL250ZnMvZmlsZS5jLTEwNDEtXHRcdFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gc29tZXRoaW5nIHRoYXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBpbnNlcnRpbmcgYSByYW5nZSB3aXRoaW4gYW4gTlRGUyBmaWxlLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgdGhpcyBpcyBjb21pbmcgZGlyZWN0bHkgZnJvbSBgbnRmc19pbnNlcnRfcmFuZ2VgIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBmaXJzdCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiwgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gSXQmIzM5O3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBtZWNoYW5pY3Mgb2YgYWxsb2NhdGluZyBuZXcgY2x1c3RlcnMsIHVwZGF0aW5nIHRoZSBNRlQgZW50cmllcywgYW5kIG1hbmFnaW5nIHRoZSBmaWxlJiMzOTtzIGRhdGEgc3RyZWFtcyB0byBhY2NvbW1vZGF0ZSB0aGUgbmV3IGRhdGEgcmFuZ2UuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyBmb3IgaGFuZGxpbmcgcG90ZW50aWFsIGZyYWdtZW50YXRpb24sIGVycm9yIGNoZWNraW5nLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBibG9jayBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIE5URlMgbWV0YWRhdGEgc3RydWN0dXJlcywgcGFydGljdWxhcmx5IHRoZSBhdHRyaWJ1dGVzIGRlc2NyaWJpbmcgdGhlIGZpbGUmIzM5O3MgZGF0YS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbnVhbmNlcyByZWxhdGVkIHRvIHNwYXJzZSBmaWxlcywgcmVzaWRlbnQgZGF0YSwgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjbHVzdGVyIHNpemVzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGxvY2sgbWFuYWdlbWVudCB0byBzZWUgaG93IGl0IGVuc3VyZXMgZGF0YSBjb25zaXN0ZW5jeSBhY3Jvc3MgdGhlIGZpbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTk0OD1zdGF0aWMgaW50IG50ZnNfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTk5My1cbmZzL250ZnMvZmlsZS5jOjk5NDpzdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTk5NS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTA1NT1zdGF0aWMgbG9uZyBudGZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTExMy1cdGNhc2UgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRTpcbmZzL250ZnMvZmlsZS5jOjExMTQ6XHRcdGVyciA9IG50ZnNfaW5zZXJ0X3JhbmdlKG5pLCBvZmZzZXQsIGxlbik7XG5mcy9udGZzL2ZpbGUuYy0xMTE1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTlRGUyBGYWxsb2NhdGUgSW5zZXJ0aW9uKioKCkFscmlnaHQsIHNvIGBudGZzX2ZhbGxvY2F0ZWAgaGFzIGEgc3BlY2lmaWMgY2FsbCBwYXRoIHdoZW4gYG1vZGVgIGlzIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdGFnZ2VkIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhIG1lbW9yeSBsZWFrIGZpeCwgaW4gYSByZWFjaGFibGUgcGF0aCwgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRob3NlIHR5cGVzIG9mIGZpeGVzIGFyZSBub3RvcmlvdXMgZm9yIGludHJvZHVjaW5nIHJlZ3Jlc3Npb25zIG9yIHJldmVhbGluZyBlZGdlIGNhc2VzLiBNeSBndXQgZmVlbGluZyBpcyB3ZSBzaG91bGQgZm9jdXMgc29tZSBhdHRlbnRpb24gb24gaXQuCgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gc2V0dXAsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgaW5kaWNhdGVkIGJ5IHRoZSBgTlRGU19GU2AgY29uZmlnIG9wdGlvbiwgaXMgZXZlbiBlbmFibGVkLiBHb3R0YSBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgaW4gb3IgYnVpbHQgYXMgYSBtb2R1bGUuIExldCBtZSBsb29rIGZvciB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnkgaW4gdGhlIEtjb25maWcgdG8gdmVyaWZ5IHRoYXQgaXQgZXhpc3RzIGFuZCB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTlRGUyBEcml2ZXIgQ29uZnVzaW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTlRGUyBkcml2ZXJzLiBJIHdhcyB0aGlua2luZyBvZiBgZnMvbnRmcy9gLCBidXQgaXNuJiMzOTt0IHRoYXQgdGhlICpvbGQqIG9uZT8gRGlkbiYjMzk7dCB0aGV5IGludHJvZHVjZSBgZnMvbnRmczMvYD8gUmlnaHQsIGBmcy9udGZzL2AgaXMgZGVmaW5pdGVseSB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uLiBPa2F5LCBzbyBpdCYjMzk7cyBzdGlsbCBpbiB0aGUga2VybmVsLCBidXQgaXQmIzM5O3MgdGhlIG9sZCBvbmUsIHJpZ2h0PyBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gWWVhaCwgYGZzL250ZnMvYCBpcyB0aGUgb3V0ZGF0ZWQgb25lLiBIb2xkIHVwLiBPa2F5LCBva2F5LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbG9va2luZyBpbiB0aGUgcmlnaHQgcGxhY2UgZm9yIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBmdW5jdGlvbiBJIGFtIGxvb2tpbmcgZm9yIGV4aXN0cywgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGZzL250ZnMvYCBzdGlsbCBoYXMgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgaXQgZG9lcyBleGlzdC4KCk5vdywgd2FzbiYjMzk7dCBgZnMvbnRmcy9gIGRlcHJlY2F0ZWQgb3IgcmVtb3ZlZCBpbiBtb3JlIHJlY2VudCBrZXJuZWwgdmVyc2lvbnM/IE5vLCBubywgSSB0aGluayBpdCB3YXMgc2xhdGVkIGZvciByZW1vdmFsIGFyb3VuZCA2Ljkgb3Igc29tZXRoaW5nLiBSaWdodC4uLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGFwcGVhcnMgdG8gYmUgaW4gYGZzL250ZnMvYXR0cmliLmNgLgoKT2theSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlIHJlYWxseSBxdWljay4gSSBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlRGU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTkxTXG4gICA1Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxuICAgODpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDExOlx0XHQgIG50ZnMuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5URlNfREVCVUdcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcbiAgMTg6XHRcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxuICAxOTpcdFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXG4gIDIwOlx0XHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgZm9yIHRoZSBOVEZTX1JXIERyaXZlcioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHByZXNlbmNlIG9mIHRoZSBgTlRGU19SV2AgZHJpdmVyLCBhcyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2sgZm9yIHJlYWQvd3JpdGUgYWNjZXNzIHRvIE5URlMgdm9sdW1lcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1vZHVsZSwgbGlicmFyeSwgd2hhdGV2ZXIgaW1wbGVtZW50YXRpb24gaXMgaW4gcGxhY2UgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gY29uc2lkZXIgdGhlIGhpZ2hlci1sZXZlbCBzdHJhdGVnaWVzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWxlIHN5c3RlbS4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCByZWFsbHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXBzIGRlcGVuZCBvbiB0aGlzIGJlaW5nIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJZiBpdCYjMzk7cyBub3QsIHRoZW4gSSYjMzk7bGwgbmVlZCB0byB0cm91Ymxlc2hvb3QgdGhhdCBiZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1vdW50aW5nLCBhY2Nlc3NpbmcsIG9yLCBHb2QgZm9yYmlkLCBtb2RpZnlpbmcgdGhlIHRhcmdldCBOVEZTIHZvbHVtZS4gTm8gcG9pbnQgaW4ganVtcGluZyBhaGVhZCBiZWZvcmUgSSYjMzk7dmUgZXN0YWJsaXNoZWQgdGhlIGJhc2ljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19SVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBOVEZTIEtlcm5lbCBNb2R1bGUqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gYE5URlNfUldgLi4uIHRoYXQmIzM5O3MgcmluZ2luZyBhIGJlbGwuIEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBvcHRpb24gcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIG1vZHVsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnksIGluIG9sZGVyIGtlcm5lbCB2ZXJzaW9ucy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHdoYXQgaXQgY29udHJvbHMgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQuIEJldHRlciBoZWFkIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgLSBsZXQmIzM5O3MgcHVsbCB1cCBhbmQgYW5hbHl6ZSBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdG8gc2VlIGlmIGFueXRoaW5nIGhhcyBzaGlmdGVkIGluIHRoZSBtb3JlIHJlY2VudCBjb2RlIGJhc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMTpcdFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxuICAyMjpcdFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cbiAgMjM6XHRcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxuICAyNDpcdFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxuICAyNTpcdFx0ICBlY2hvIDEgXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXG4gIDI2Olx0XHQgIFJlcGxhY2luZyB0aGUgXCYjMzQ7MVwmIzM0OyB3aXRoIFwmIzM0OzBcJiMzNDsgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxuICAyOTpcdFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxuICAzMDpcdFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxuICAzMTpcdFxuICAzMjpcdFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXG4gIDMzOlx0XHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG4gIDM2Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAzODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcbiAgNDE6XHRcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxuICA0NDpcdFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXG4gIDQ1Olx0XG4gIDQ2Olx0XHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXG4gIDQ3Olx0XG4gIDQ4Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIERyaXZlciBDb251bmRydW0qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJiMzOTtzIG5vdCByaWdodC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBgTlRGU19SV2AgZGVmaW5lZCwgYnV0IGl0JiMzOTtzIG5vdCBwcmVzZW50LiBUaGUgb25seSBvcHRpb24gbGlzdGVkIGlzIGBOVEZTX0ZTYC4gVGhhdCYjMzk7cy4uLiB1bnVzdWFsLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gQWxyaWdodCwgdGltZSB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBmcy9udGZzL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVmaW5pdGlvbnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgY2x1ZXMgSSBuZWVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uIFRoaXMgaXMgZ29pbmcgdG8gdGVsbCB0aGUgd2hvbGUgc3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uLCBkZXNpZ25hdGVkIGFzIGBOVEZTX0ZTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGZpeCBmb3IgYSBtZW1vcnkgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGxhcmdlciBjaGFpbiwgY2FsbGVkIGJ5IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGl0c2VsZiBpcyBpbnZva2VkIGJ5IGBudGZzX2ZhbGxvY2F0ZWAgd2hlbiB1c2luZyB0aGUgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIGZsYWcuCgpUaGUga2V5IHRha2Vhd2F5IGhlcmUgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb247IGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBidWcsIG5vdCBqdXN0IGFuIG9wdGltaXphdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBhIG1lbW9yeSBsZWFrLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgdmFsaWRhdGlvbi4gVGhlIGluZGljYXRlZCBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uZmlybXMgdGhpcy4gVGhlIGBFbmFibGVDb25maWdzOiBOVEZTX0ZTYCBkaXJlY3RpdmUgZnVydGhlciBlbXBoYXNpemVzIHRoZSBjb250ZXh0LgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCByZXNvbHZlcyBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIG9jY3VyIG9uIGFuIE5URlMgZmlsZXN5c3RlbSB3aGVuIHV0aWxpemluZyBgZmFsbG9jYXRlYCB3aXRoIHRoZSBgSU5TRVJUX1JBTkdFYCBmbGFnLCBpbXBhY3RpbmcgdGhlIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgbGVhayBpcyB0cmlnZ2VyZWQgYW5kIGRldmlzZSBzb21lIHRhcmdldGVkIGZ1enppbmcgY2FtcGFpZ25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgICAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgICAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjQ0Ljk4NzY2MjYyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTUyNTY1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICAgIFwibnRmc19pbnNlcnRfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjQ0Ljk4NzY2ODM5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3NTYyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTEzNDhlNjc2YTE4ODJiYjJkM2UyOTk0MmM0MDVmNDdjMzY0MTE1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXFxuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvYXR0cmliLmNcXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXFxuQEAgLTUzMjUsNiArNTMyNSw3IEBAIGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2XFxuIFxcdHJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0dXBfd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbitcXHRcXHRrZnJlZShob2xlX3JsKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDA6NDUuMzc2MDU0NTIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc2NDE2MjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUxMzQ4ZTY3NmExODgyYmIyZDNlMjk5NDJjNDA1ZjQ3YzM2NDExNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmNcbmluZGV4IGRkODgyODA5ODUxMTgzLi41NTYwM2RmMGEyZWQ3ZCAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvYXR0cmliLmNcbisrKyBiL2ZzL250ZnMvYXR0cmliLmNcbkBAIC01MzI1LDYgKzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbitcdFx0a2ZyZWUoaG9sZV9ybCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0NS4zNzYwNTY4MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIzMzQ4Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBGaXggaW4gdGhlIE5URlMgRmlsZXN5c3RlbSBDb2RlKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgYSBwcm9wb3NlZCBwYXRjaCwgYW5kIGl0IHNlZW1zIHRvIGludm9sdmUgYSBga2ZyZWUoaG9sZV9ybCk7YCBjYWxsIHdpdGhpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGluIHRoZSBgZnMvbnRmcy9hdHRyaWIuY2AgZmlsZS4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIGluZGljYXRlcyB0aGlzIGlzIGEgbWVtb3J5IGxlYWsgZml4LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBob2xlX3JsYCByZXByZXNlbnRzIGFuZCB3aHkgaXRzIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBOVEZTIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBgYXR0cmliLmNgIGZpbGUsIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3csIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoaXMgcGF0Y2gncyBpbXBhY3QgYW5kIGVmZmljYWN5IGluIGFkZHJlc3NpbmcgdGhlIGxlYWsuIEknbGwgbmVlZCB0byBjb25zaWRlciBhbnkgc2lkZSBlZmZlY3RzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0OC41OTk0MDc0NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTA2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0OC42NTU1NjM0NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ4OTY0MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIE5URlMgQXR0cmlidXRlIEhhbmRsaW5nKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgTlRGUyBhdHRyaWJ1dGUgaGFuZGxpbmcgY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUzMDEgaW4gYGZzL250ZnMvYXR0cmliLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3JpdGljYWwgbG9naWMgdGhlcmUsIGxpa2VseSBkZWFsaW5nIHdpdGggaG93IGF0dHJpYnV0ZXMgYXJlIHJlYWQsIHdyaXR0ZW4sIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgb2YgdGhhdCBsaW5lIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGFraW5nIHBsYWNlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVycm9yIGNvbmRpdGlvbnMsIG9yIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIHJlbGF0ZWQgdG8gYXR0cmlidXRlIG1hbmFnZW1lbnQuIEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBhcmVhIGludm9sdmVzIGhvdyBkYXRhIHN0cmVhbXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBmaWxlIG1ldGFkYXRhLCBzbyB0aGF0IHNob3VsZCBiZSBteSBzdGFydGluZyBmb2N1cy4gSSdtIGhvcGluZyBpdCdzIHdlbGwtY29tbWVudGVkLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1MS43MDQ1Mjk5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjkwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTI5MDpcXHRcXHR9XFxuNTI5MTpcXHRcXHRyZXQgPSBkYXRhO1xcbjUyOTI6XFx0XFx0aWYgKGRhdGFfc2l6ZSlcXG41MjkzOlxcdFxcdFxcdCpkYXRhX3NpemUgPSBzaXplO1xcbjUyOTQ6XFx0b3V0OlxcbjUyOTU6XFx0XFx0aXB1dChibXBfdmkpO1xcbjUyOTY6XFx0ZXJyX2V4aXQ6XFxuNTI5NzpcXHRcXHRudGZzX2RlYnVnKFxcXCJcXFxcblxcXCIpO1xcbjUyOTg6XFx0XFx0cmV0dXJuIHJldDtcXG41Mjk5OlxcdH1cXG41MzAwOlxcdFxcbjUzMDE6XFx0aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG41MzAyOlxcdHtcXG41MzAzOlxcdFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG41MzA0OlxcdFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKmhvbGVfcmwsICpybDtcXG41MzA1OlxcdFxcdHN0cnVjdCBudGZzX2F0dHJfc2VhcmNoX2N0eCAqY3R4O1xcbjUzMDY6XFx0XFx0aW50IHJldDtcXG41MzA3OlxcdFxcdHNpemVfdCBuZXdfcmxfY291bnQ7XFxuNTMwODpcXHRcXG41MzA5OlxcdFxcdGlmIChOSW5vQXR0cihuaSkgfHwgbmktXFx1MDAzZXR5cGUgIT0gQVRfREFUQSlcXG41MzEwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG41MzExOlxcdFxcdGlmIChzdGFydF92Y24gXFx1MDAzZSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cXHUwMDNlYWxsb2NhdGVkX3NpemUpKVxcbjUzMTI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNTMxMzpcXHRcXG41MzE0OlxcdFxcdGhvbGVfcmwgPSBrbWFsbG9jKHNpemVvZigqaG9sZV9ybCkgKiAyLCBHRlBfTk9GUyk7XFxuNTMxNTpcXHRcXHRpZiAoIWhvbGVfcmwpXFxuNTMxNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG41MzE3OlxcdFxcdGhvbGVfcmxbMF0udmNuID0gc3RhcnRfdmNuO1xcbjUzMTg6XFx0XFx0aG9sZV9ybFswXS5sY24gPSBMQ05fSE9MRTtcXG41MzE5OlxcdFxcdGhvbGVfcmxbMF0ubGVuZ3RoID0gbGVuO1xcbjUzMjA6XFx0XFx0aG9sZV9ybFsxXS52Y24gPSBzdGFydF92Y24gKyBsZW47XFxuNTMyMTpcXHRcXHRob2xlX3JsWzFdLmxjbiA9IExDTl9FTk9FTlQ7XFxuNTMyMjpcXHRcXHRob2xlX3JsWzFdLmxlbmd0aCA9IDA7XFxuNTMyMzpcXHRcXG41MzI0OlxcdFxcdGRvd25fd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbjUzMjU6XFx0XFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcXG41MzI2OlxcdFxcdGlmIChyZXQpIHtcXG41MzI3OlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzI4OlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzMjk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzMwOlxcdFxcdH1cXG41MzMxOlxcdFxcbjUzMzI6XFx0XFx0cmwgPSBudGZzX3JsX2ZpbmRfdmNuX25vbG9jayhuaS1cXHUwMDNlcnVubGlzdC5ybCwgc3RhcnRfdmNuKTtcXG41MzMzOlxcdFxcdGlmICghcmwpIHtcXG41MzM0OlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzM1OlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzMzY6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuNTMzNzpcXHRcXHR9XFxuNTMzODpcXHRcXG41MzM5OlxcdFxcdHJsID0gbnRmc19ybF9pbnNlcnRfcmFuZ2UobmktXFx1MDAzZXJ1bmxpc3QucmwsIChpbnQpbmktXFx1MDAzZXJ1bmxpc3QuY291bnQsXFxuNTM0MDpcXHRcXHRcXHRcXHRcXHQgIGhvbGVfcmwsIDEsIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbjUzNDE6XFx0XFx0aWYgKElTX0VSUihybCkpIHtcXG41MzQyOlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzQzOlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzNDQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmwpO1xcbjUzNDU6XFx0XFx0fVxcbjUzNDY6XFx0XFx0bmktXFx1MDAzZXJ1bmxpc3QucmwgPSAgcmw7XFxuNTM0NzpcXHRcXHRuaS1cXHUwMDNlcnVubGlzdC5jb3VudCA9IG5ld19ybF9jb3VudDtcXG41MzQ4OlxcdFxcbjUzNDk6XFx0XFx0bmktXFx1MDAzZWFsbG9jYXRlZF9zaXplICs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XFxuNTM1MDpcXHRcXHRuaS1cXHUwMDNlZGF0YV9zaXplICs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XFxuNTM1MTpcXHRcXHRpZiAobnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgc3RhcnRfdmNuKSBcXHUwMDNjIG5pLVxcdTAwM2Vpbml0aWFsaXplZF9zaXplKVxcbjUzNTI6XFx0XFx0XFx0bmktXFx1MDAzZWluaXRpYWxpemVkX3NpemUgKz0gbnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgbGVuKTtcXG41MzUzOlxcdFxcdHJldCA9IG50ZnNfYXR0cl91cGRhdGVfbWFwcGluZ19wYWlycyhuaSwgMCk7XFxuNTM1NDpcXHRcXHR1cF93cml0ZShcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QubG9jayk7XFxuNTM1NTpcXHRcXHRpZiAocmV0KVxcbjUzNTY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzU3OlxcdFxcbjUzNTg6XFx0XFx0Y3R4ID0gbnRmc19hdHRyX2dldF9zZWFyY2hfY3R4KG5pLCBOVUxMKTtcXG41MzU5OlxcdFxcdGlmICghY3R4KSB7XFxuNTM2MDpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjUzNjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzYyOlxcdFxcdH1cXG41MzYzOlxcdFxcbjUzNjQ6XFx0XFx0cmV0ID0gbnRmc19hdHRyX2xvb2t1cChuaS1cXHUwMDNldHlwZSwgbmktXFx1MDAzZW5hbWUsIG5pLVxcdTAwM2VuYW1lX2xlbiwgQ0FTRV9TRU5TSVRJVkUsXFxuNTM2NTpcXHRcXHRcXHRcXHQgICAgICAgMCwgTlVMTCwgMCwgY3R4KTtcXG41MzY2OlxcdFxcdGlmIChyZXQpIHtcXG41MzY3OlxcdFxcdFxcdG50ZnNfYXR0cl9wdXRfc2VhcmNoX2N0eChjdHgpO1xcbjUzNjg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzY5OlxcdFxcdH1cXG41MzcwOlxcdFxcbjUzNzE6XFx0XFx0Y3R4LVxcdTAwM2VhdHRyLVxcdTAwM2VkYXRhLm5vbl9yZXNpZGVudC5kYXRhX3NpemUgPSBjcHVfdG9fbGU2NChuaS1cXHUwMDNlZGF0YV9zaXplKTtcXG41MzcyOlxcdFxcdGN0eC1cXHUwMDNlYXR0ci1cXHUwMDNlZGF0YS5ub25fcmVzaWRlbnQuaW5pdGlhbGl6ZWRfc2l6ZSA9IGNwdV90b19sZTY0KG5pLVxcdTAwM2Vpbml0aWFsaXplZF9zaXplKTtcXG41MzczOlxcdFxcdGlmIChuaS1cXHUwMDNldHlwZSA9PSBBVF9EQVRBIFxcdTAwMjZcXHUwMDI2IG5pLVxcdTAwM2VuYW1lID09IEFUX1VOTkFNRUQpXFxuNTM3NDpcXHRcXHRcXHROSW5vU2V0RmlsZU5hbWVEaXJ0eShuaSk7XFxuNTM3NTpcXHRcXHRtYXJrX21mdF9yZWNvcmRfZGlydHkoY3R4LVxcdTAwM2VudGZzX2lubyk7XFxuNTM3NjpcXHRcXHRudGZzX2F0dHJfcHV0X3NlYXJjaF9jdHgoY3R4KTtcXG41Mzc3OlxcdFxcdHJldHVybiByZXQ7XFxuNTM3ODpcXHR9XFxuNTM3OTpcXHRcXG41MzgwOlxcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG41MzgxOlxcdHtcXG41MzgyOlxcdFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG41MzgzOlxcdFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnB1bmNoX3JsLCAqcmw7XFxuNTM4NDpcXHRcXHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eCA9IE5VTEw7XFxuNTM4NTpcXHRcXHRzNjQgZW5kX3ZjbjtcXG41Mzg2OlxcdFxcdGludCBkc3RfY250O1xcbjUzODc6XFx0XFx0aW50IHJldDtcXG41Mzg4OlxcdFxcdHNpemVfdCBuZXdfcmxfY250O1xcbjUzODk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjUxLjcwNDc2NzA2OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzA1OTc1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIE1lbW9yeSBMZWFrIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgdGhhdCBmdW5jdGlvbiBsaXZlcyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0gY29kZSDigJMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LiBGaXJzdCB0aGluZ+KAmXMgZmlyc3Q6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBXaGVyZSBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBsZWFrIGFuZCB3aHkgdGhpcyBjb2RlIHBhdGggaXMgcHJvYmxlbWF0aWMuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgZ3JlYXQgZGVhbCBhYm91dCB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhpcyBpcyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjU0LjYzNTM2NjYwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMzYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcXG4tLVxcbmZzL250ZnMvYXR0cmliLmg9MTA4PWludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcXG5mcy9udGZzL2F0dHJpYi5oOjEwOTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcXG5mcy9udGZzL2F0dHJpYi5oLTExMC1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTAzOS1cXHRtdXRleF9sb2NrX25lc3RlZChcXHUwMDI2bmktXFx1MDAzZW1yZWNfbG9jaywgTlRGU19JTk9ERV9NVVRFWF9OT1JNQUwpO1xcbmZzL250ZnMvZmlsZS5jOjEwNDA6XFx0ZXJyID0gbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UobmksIHN0YXJ0X3ZjbixcXG5mcy9udGZzL2ZpbGUuYy0xMDQxLVxcdFxcdFxcdGVuZF92Y24gLSBzdGFydF92Y24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1NC43OTA3MDc5NzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM2MTA2OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHNvbWV0aGluZyB0aGF0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gaW5zZXJ0aW5nIGEgcmFuZ2Ugd2l0aGluIGFuIE5URlMgZmlsZS4gVGhlIGNhbGwgc3RhY2sgaW5kaWNhdGVzIHRoaXMgaXMgY29taW5nIGRpcmVjdGx5IGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCB3aXRoaW4gYGZzL250ZnMvZmlsZS5jYC4gTXkgZmlyc3QgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24sIGBudGZzX2luc2VydF9yYW5nZWAuIEl0J3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBtZWNoYW5pY3Mgb2YgYWxsb2NhdGluZyBuZXcgY2x1c3RlcnMsIHVwZGF0aW5nIHRoZSBNRlQgZW50cmllcywgYW5kIG1hbmFnaW5nIHRoZSBmaWxlJ3MgZGF0YSBzdHJlYW1zIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgZGF0YSByYW5nZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgbG9naWMgZm9yIGhhbmRsaW5nIHBvdGVudGlhbCBmcmFnbWVudGF0aW9uLCBlcnJvciBjaGVja2luZywgYW5kIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBOVEZTIG1ldGFkYXRhIHN0cnVjdHVyZXMsIHBhcnRpY3VsYXJseSB0aGUgYXR0cmlidXRlcyBkZXNjcmliaW5nIHRoZSBmaWxlJ3MgZGF0YS4gSSdsbCBiZSBsb29raW5nIGZvciBudWFuY2VzIHJlbGF0ZWQgdG8gc3BhcnNlIGZpbGVzLCByZXNpZGVudCBkYXRhLCBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGNsdXN0ZXIgc2l6ZXMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIG1hbmFnZW1lbnQgdG8gc2VlIGhvdyBpdCBlbnN1cmVzIGRhdGEgY29uc2lzdGVuY3kgYWNyb3NzIHRoZSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjU4LjMyNjgxNjY4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3NjMwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9maWxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9maWxlLmM9OTQ4PXN0YXRpYyBpbnQgbnRmc19jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy05OTMtXFxuZnMvbnRmcy9maWxlLmM6OTk0OnN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbmZzL250ZnMvZmlsZS5jLTk5NS17XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz0xMDU1PXN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTExMTMtXFx0Y2FzZSBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFOlxcbmZzL250ZnMvZmlsZS5jOjExMTQ6XFx0XFx0ZXJyID0gbnRmc19pbnNlcnRfcmFuZ2UobmksIG9mZnNldCwgbGVuKTtcXG5mcy9udGZzL2ZpbGUuYy0xMTE1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1OC4zODE1ODYxNzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDQxMTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBOVEZTIEZhbGxvY2F0ZSBJbnNlcnRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbnRmc19mYWxsb2NhdGVgIGhhcyBhIHNwZWNpZmljIGNhbGwgcGF0aCB3aGVuIGBtb2RlYCBpcyBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyB0YWdnZWQgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGEgbWVtb3J5IGxlYWsgZml4LCBpbiBhIHJlYWNoYWJsZSBwYXRoLCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldC4gVGhvc2UgdHlwZXMgb2YgZml4ZXMgYXJlIG5vdG9yaW91cyBmb3IgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgcmV2ZWFsaW5nIGVkZ2UgY2FzZXMuIE15IGd1dCBmZWVsaW5nIGlzIHdlIHNob3VsZCBmb2N1cyBzb21lIGF0dGVudGlvbiBvbiBpdC5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHNldHVwLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGluZGljYXRlZCBieSB0aGUgYE5URlNfRlNgIGNvbmZpZyBvcHRpb24sIGlzIGV2ZW4gZW5hYmxlZC4gR290dGEgZW5zdXJlIGl0J3MgYnVpbHQgaW4gb3IgYnVpbHQgYXMgYSBtb2R1bGUuIExldCBtZSBsb29rIGZvciB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnkgaW4gdGhlIEtjb25maWcgdG8gdmVyaWZ5IHRoYXQgaXQgZXhpc3RzIGFuZCB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0J3MgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowMi4xMDU5OTk4MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjE1NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDE6MDIuMTYzNjIwMjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMzU0NDg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIERyaXZlciBDb25mdXNpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIE5URlMgZHJpdmVycy4gSSB3YXMgdGhpbmtpbmcgb2YgYGZzL250ZnMvYCwgYnV0IGlzbid0IHRoYXQgdGhlICpvbGQqIG9uZT8gRGlkbid0IHRoZXkgaW50cm9kdWNlIGBmcy9udGZzMy9gPyBSaWdodCwgYGZzL250ZnMvYCBpcyBkZWZpbml0ZWx5IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24uIE9rYXksIHNvIGl0J3Mgc3RpbGwgaW4gdGhlIGtlcm5lbCwgYnV0IGl0J3MgdGhlIG9sZCBvbmUsIHJpZ2h0PyBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gWWVhaCwgYGZzL250ZnMvYCBpcyB0aGUgb3V0ZGF0ZWQgb25lLiBIb2xkIHVwLiBPa2F5LCBva2F5LlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGxvb2tpbmcgaW4gdGhlIHJpZ2h0IHBsYWNlIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gSSBhbSBsb29raW5nIGZvciBleGlzdHMsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IGBmcy9udGZzL2Agc3RpbGwgaGFzIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIEFscmlnaHQsIGl0IGRvZXMgZXhpc3QuXG5cbk5vdywgd2Fzbid0IGBmcy9udGZzL2AgZGVwcmVjYXRlZCBvciByZW1vdmVkIGluIG1vcmUgcmVjZW50IGtlcm5lbCB2ZXJzaW9ucz8gTm8sIG5vLCBJIHRoaW5rIGl0IHdhcyBzbGF0ZWQgZm9yIHJlbW92YWwgYXJvdW5kIDYuOSBvciBzb21ldGhpbmcuIFJpZ2h0Li4uIExldCBtZSBkb3VibGUtY2hlY2suIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBhcHBlYXJzIHRvIGJlIGluIGBmcy9udGZzL2F0dHJpYi5jYC5cblxuT2theSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlIHJlYWxseSBxdWljay4gSSBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowNi41ODcxNzE2NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQxOjA2LjU4NzI5MjI5MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQyMTc0MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBmb3IgdGhlIE5URlNfUlcgRHJpdmVyKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBOVEZTX1JXYCBkcml2ZXIsIGFzIHRoYXQncyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrIGZvciByZWFkL3dyaXRlIGFjY2VzcyB0byBOVEZTIHZvbHVtZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBtb2R1bGUsIGxpYnJhcnksIHdoYXRldmVyIGltcGxlbWVudGF0aW9uIGlzIGluIHBsYWNlIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBoaWdoZXItbGV2ZWwgc3RyYXRlZ2llcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciwgcmVhbGx5LiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwcyBkZXBlbmQgb24gdGhpcyBiZWluZyBwcmVzZW50IGFuZCBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSWYgaXQncyBub3QsIHRoZW4gSSdsbCBuZWVkIHRvIHRyb3VibGVzaG9vdCB0aGF0IGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbW91bnRpbmcsIGFjY2Vzc2luZywgb3IsIEdvZCBmb3JiaWQsIG1vZGlmeWluZyB0aGUgdGFyZ2V0IE5URlMgdm9sdW1lLiBObyBwb2ludCBpbiBqdW1waW5nIGFoZWFkIGJlZm9yZSBJJ3ZlIGVzdGFibGlzaGVkIHRoZSBiYXNpY3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQxOjA5LjQyOTQ2OTU4NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwODgyNjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowOS40ODg1NjUzNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNTc2MjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5URlMgS2VybmVsIE1vZHVsZSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIGBOVEZTX1JXYC4uLiB0aGF0J3MgcmluZ2luZyBhIGJlbGwuIEFoLCB5ZXMsIGl0J3MgdGhlIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gbW9kdWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZnMvbnRmcy9gIGRpcmVjdG9yeSwgaW4gb2xkZXIga2VybmVsIHZlcnNpb25zLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCdzIHN0aWxsIHJlbGV2YW50LiBCZXR0ZXIgaGVhZCBkaXJlY3RseSB0byB0aGUgc291cmNlIC0gbGV0J3MgcHVsbCB1cCBhbmQgYW5hbHl6ZSBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdG8gc2VlIGlmIGFueXRoaW5nIGhhcyBzaGlmdGVkIGluIHRoZSBtb3JlIHJlY2VudCBjb2RlIGJhc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxMi42MjQzMjk5NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxMi42MjQ0MzM1MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxMDAyNzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIERyaXZlciBDb251bmRydW0qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcncyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYE5URlNfUldgIGRlZmluZWQsIGJ1dCBpdCdzIG5vdCBwcmVzZW50LiBUaGUgb25seSBvcHRpb24gbGlzdGVkIGlzIGBOVEZTX0ZTYC4gVGhhdCdzLi4uIHVudXN1YWwuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBBbHJpZ2h0LCB0aW1lIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCdzIGRpZyBpbnRvIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcywgYW5kIHRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlZmluaXRpb25zLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGNsdWVzIEkgbmVlZC4gTGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi4gVGhpcyBpcyBnb2luZyB0byB0ZWxsIHRoZSB3aG9sZSBzdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDE6MTUuMzM0NDYzNDc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxNS4zMzQ1MjU0MTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxOTcxOTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gTlRGUyBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGRlc2lnbmF0ZWQgYXMgYE5URlNfRlNgLiBUaGUgY29yZSBvZiB0aGlzIGlzIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGZ1bmN0aW9uLiBEaWdnaW5nIGEgYml0IGRlZXBlciwgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGNoYWluLCBjYWxsZWQgYnkgYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHVzaW5nIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZy5cblxuVGhlIGtleSB0YWtlYXdheSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uOyBpdCdzIGFkZHJlc3NpbmcgYSBidWcsIG5vdCBqdXN0IGFuIG9wdGltaXphdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBhIG1lbW9yeSBsZWFrLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgdmFsaWRhdGlvbi4gVGhlIGluZGljYXRlZCBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uZmlybXMgdGhpcy4gVGhlIGBFbmFibGVDb25maWdzOiBOVEZTX0ZTYCBkaXJlY3RpdmUgZnVydGhlciBlbXBoYXNpemVzIHRoZSBjb250ZXh0LlxuXG5TbywgdGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIHJlc29sdmVzIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gb2NjdXIgb24gYW4gTlRGUyBmaWxlc3lzdGVtIHdoZW4gdXRpbGl6aW5nIGBmYWxsb2NhdGVgIHdpdGggdGhlIGBJTlNFUlRfUkFOR0VgIGZsYWcsIGltcGFjdGluZyB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBhbmQgYG50ZnNfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGxlYWsgaXMgdHJpZ2dlcmVkIGFuZCBkZXZpc2Ugc29tZSB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWducy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAxMiwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToyMC4wNTQyNDcyOTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTk2NTYxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gICAgXCJudGZzX2luc2VydF9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowl6rkd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 10:23:13 +0000 UTC FinishedAt: 2026-07-05 10:41:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "8e2f13df-c8da-4019-9d03-021a8706dff1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_non_resident_attr_insert_range", "ntfs_insert_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMTM0OGU2NzZhMTg4MmJiMmQzZTI5OTQyYzQwNWY0N2MzNjQxMTU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMDo0MDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuY1xuQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiYjNDM7XHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUxMzQ4ZTY3NmExODgyYmIyZDNlMjk5NDJjNDA1ZjQ3YzM2NDExNTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmMKaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNgogCXJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7CiAJaWYgKHJldCkgewogCQl1cF93cml0ZSgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwomIzQzOwkJa2ZyZWUoaG9sZV9ybCk7CiAJCXJldHVybiByZXQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBMZWFrIEZpeCBpbiB0aGUgTlRGUyBGaWxlc3lzdGVtIENvZGUqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IGEgcHJvcG9zZWQgcGF0Y2gsIGFuZCBpdCBzZWVtcyB0byBpbnZvbHZlIGEgYGtmcmVlKGhvbGVfcmwpO2AgY2FsbCB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBpbiB0aGUgYGZzL250ZnMvYXR0cmliLmNgIGZpbGUuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBpbmRpY2F0ZXMgdGhpcyBpcyBhIG1lbW9yeSBsZWFrIGZpeC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbnRleHQgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaG9sZV9ybGAgcmVwcmVzZW50cyBhbmQgd2h5IGl0cyBmcmVlaW5nIGlzIHJlcXVpcmVkIGluIHRoaXMgc3BlY2lmaWMgcGFydCBvZiB0aGUgTlRGUyBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGZ1bmN0aW9uIGl0c2VsZiwgd2l0aGluIHRoYXQgYGF0dHJpYi5jYCBmaWxlLCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBkZWFsbG9jYXRpb24gd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhpcyBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGVmZmljYWN5IGluIGFkZHJlc3NpbmcgdGhlIGxlYWsuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYW55IHNpZGUgZWZmZWN0cyBvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MzAwLVxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRob3NlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byBOVEZTIEF0dHJpYnV0ZSBIYW5kbGluZyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBOVEZTIGF0dHJpYnV0ZSBoYW5kbGluZyBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTMwMSBpbiBgZnMvbnRmcy9hdHRyaWIuY2AuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcml0aWNhbCBsb2dpYyB0aGVyZSwgbGlrZWx5IGRlYWxpbmcgd2l0aCBob3cgYXR0cmlidXRlcyBhcmUgcmVhZCwgd3JpdHRlbiwgb3IgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgb2YgdGhhdCBsaW5lIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGFraW5nIHBsYWNlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBlcnJvciBjb25kaXRpb25zLCBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIGF0dHJpYnV0ZSBtYW5hZ2VtZW50LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCB0aGlzIGFyZWEgaW52b2x2ZXMgaG93IGRhdGEgc3RyZWFtcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGZpbGUgbWV0YWRhdGEsIHNvIHRoYXQgc2hvdWxkIGJlIG15IHN0YXJ0aW5nIGZvY3VzLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTI5MDpcdFx0fVxuNTI5MTpcdFx0cmV0ID0gZGF0YTtcbjUyOTI6XHRcdGlmIChkYXRhX3NpemUpXG41MjkzOlx0XHRcdCpkYXRhX3NpemUgPSBzaXplO1xuNTI5NDpcdG91dDpcbjUyOTU6XHRcdGlwdXQoYm1wX3ZpKTtcbjUyOTY6XHRlcnJfZXhpdDpcbjUyOTc6XHRcdG50ZnNfZGVidWcoXCYjMzQ7XFxuXCYjMzQ7KTtcbjUyOTg6XHRcdHJldHVybiByZXQ7XG41Mjk5Olx0fVxuNTMwMDpcdFxuNTMwMTpcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG41MzAyOlx0e1xuNTMwMzpcdFx0c3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS1cdTAwM2V2b2w7XG41MzA0Olx0XHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpob2xlX3JsLCAqcmw7XG41MzA1Olx0XHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eDtcbjUzMDY6XHRcdGludCByZXQ7XG41MzA3Olx0XHRzaXplX3QgbmV3X3JsX2NvdW50O1xuNTMwODpcdFxuNTMwOTpcdFx0aWYgKE5Jbm9BdHRyKG5pKSB8fCBuaS1cdTAwM2V0eXBlICE9IEFUX0RBVEEpXG41MzEwOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjUzMTE6XHRcdGlmIChzdGFydF92Y24gXHUwMDNlIG50ZnNfYnl0ZXNfdG9fY2x1c3Rlcih2b2wsIG5pLVx1MDAzZWFsbG9jYXRlZF9zaXplKSlcbjUzMTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG41MzEzOlx0XG41MzE0Olx0XHRob2xlX3JsID0ga21hbGxvYyhzaXplb2YoKmhvbGVfcmwpICogMiwgR0ZQX05PRlMpO1xuNTMxNTpcdFx0aWYgKCFob2xlX3JsKVxuNTMxNjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjUzMTc6XHRcdGhvbGVfcmxbMF0udmNuID0gc3RhcnRfdmNuO1xuNTMxODpcdFx0aG9sZV9ybFswXS5sY24gPSBMQ05fSE9MRTtcbjUzMTk6XHRcdGhvbGVfcmxbMF0ubGVuZ3RoID0gbGVuO1xuNTMyMDpcdFx0aG9sZV9ybFsxXS52Y24gPSBzdGFydF92Y24gJiM0MzsgbGVuO1xuNTMyMTpcdFx0aG9sZV9ybFsxXS5sY24gPSBMQ05fRU5PRU5UO1xuNTMyMjpcdFx0aG9sZV9ybFsxXS5sZW5ndGggPSAwO1xuNTMyMzpcdFxuNTMyNDpcdFx0ZG93bl93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuNTMyNTpcdFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbjUzMjY6XHRcdGlmIChyZXQpIHtcbjUzMjc6XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbjUzMjg6XHRcdFx0a2ZyZWUoaG9sZV9ybCk7XG41MzI5Olx0XHRcdHJldHVybiByZXQ7XG41MzMwOlx0XHR9XG41MzMxOlx0XG41MzMyOlx0XHRybCA9IG50ZnNfcmxfZmluZF92Y25fbm9sb2NrKG5pLVx1MDAzZXJ1bmxpc3QucmwsIHN0YXJ0X3Zjbik7XG41MzMzOlx0XHRpZiAoIXJsKSB7XG41MzM0Olx0XHRcdHVwX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG41MzM1Olx0XHRcdGtmcmVlKGhvbGVfcmwpO1xuNTMzNjpcdFx0XHRyZXR1cm4gLUVJTztcbjUzMzc6XHRcdH1cbjUzMzg6XHRcbjUzMzk6XHRcdHJsID0gbnRmc19ybF9pbnNlcnRfcmFuZ2UobmktXHUwMDNlcnVubGlzdC5ybCwgKGludCluaS1cdTAwM2VydW5saXN0LmNvdW50LFxuNTM0MDpcdFx0XHRcdFx0ICBob2xlX3JsLCAxLCBcdTAwMjZuZXdfcmxfY291bnQpO1xuNTM0MTpcdFx0aWYgKElTX0VSUihybCkpIHtcbjUzNDI6XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbjUzNDM6XHRcdFx0a2ZyZWUoaG9sZV9ybCk7XG41MzQ0Olx0XHRcdHJldHVybiBQVFJfRVJSKHJsKTtcbjUzNDU6XHRcdH1cbjUzNDY6XHRcdG5pLVx1MDAzZXJ1bmxpc3QucmwgPSAgcmw7XG41MzQ3Olx0XHRuaS1cdTAwM2VydW5saXN0LmNvdW50ID0gbmV3X3JsX2NvdW50O1xuNTM0ODpcdFxuNTM0OTpcdFx0bmktXHUwMDNlYWxsb2NhdGVkX3NpemUgJiM0Mzs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XG41MzUwOlx0XHRuaS1cdTAwM2VkYXRhX3NpemUgJiM0Mzs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XG41MzUxOlx0XHRpZiAobnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgc3RhcnRfdmNuKSBcdTAwM2MgbmktXHUwMDNlaW5pdGlhbGl6ZWRfc2l6ZSlcbjUzNTI6XHRcdFx0bmktXHUwMDNlaW5pdGlhbGl6ZWRfc2l6ZSAmIzQzOz0gbnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgbGVuKTtcbjUzNTM6XHRcdHJldCA9IG50ZnNfYXR0cl91cGRhdGVfbWFwcGluZ19wYWlycyhuaSwgMCk7XG41MzU0Olx0XHR1cF93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuNTM1NTpcdFx0aWYgKHJldClcbjUzNTY6XHRcdFx0cmV0dXJuIHJldDtcbjUzNTc6XHRcbjUzNTg6XHRcdGN0eCA9IG50ZnNfYXR0cl9nZXRfc2VhcmNoX2N0eChuaSwgTlVMTCk7XG41MzU5Olx0XHRpZiAoIWN0eCkge1xuNTM2MDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuNTM2MTpcdFx0XHRyZXR1cm4gcmV0O1xuNTM2MjpcdFx0fVxuNTM2MzpcdFxuNTM2NDpcdFx0cmV0ID0gbnRmc19hdHRyX2xvb2t1cChuaS1cdTAwM2V0eXBlLCBuaS1cdTAwM2VuYW1lLCBuaS1cdTAwM2VuYW1lX2xlbiwgQ0FTRV9TRU5TSVRJVkUsXG41MzY1Olx0XHRcdFx0ICAgICAgIDAsIE5VTEwsIDAsIGN0eCk7XG41MzY2Olx0XHRpZiAocmV0KSB7XG41MzY3Olx0XHRcdG50ZnNfYXR0cl9wdXRfc2VhcmNoX2N0eChjdHgpO1xuNTM2ODpcdFx0XHRyZXR1cm4gcmV0O1xuNTM2OTpcdFx0fVxuNTM3MDpcdFxuNTM3MTpcdFx0Y3R4LVx1MDAzZWF0dHItXHUwMDNlZGF0YS5ub25fcmVzaWRlbnQuZGF0YV9zaXplID0gY3B1X3RvX2xlNjQobmktXHUwMDNlZGF0YV9zaXplKTtcbjUzNzI6XHRcdGN0eC1cdTAwM2VhdHRyLVx1MDAzZWRhdGEubm9uX3Jlc2lkZW50LmluaXRpYWxpemVkX3NpemUgPSBjcHVfdG9fbGU2NChuaS1cdTAwM2Vpbml0aWFsaXplZF9zaXplKTtcbjUzNzM6XHRcdGlmIChuaS1cdTAwM2V0eXBlID09IEFUX0RBVEEgXHUwMDI2XHUwMDI2IG5pLVx1MDAzZW5hbWUgPT0gQVRfVU5OQU1FRClcbjUzNzQ6XHRcdFx0Tklub1NldEZpbGVOYW1lRGlydHkobmkpO1xuNTM3NTpcdFx0bWFya19tZnRfcmVjb3JkX2RpcnR5KGN0eC1cdTAwM2VudGZzX2lubyk7XG41Mzc2Olx0XHRudGZzX2F0dHJfcHV0X3NlYXJjaF9jdHgoY3R4KTtcbjUzNzc6XHRcdHJldHVybiByZXQ7XG41Mzc4Olx0fVxuNTM3OTpcdFxuNTM4MDpcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbjUzODE6XHR7XG41MzgyOlx0XHRzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCA9IG5pLVx1MDAzZXZvbDtcbjUzODM6XHRcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnB1bmNoX3JsLCAqcmw7XG41Mzg0Olx0XHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eCA9IE5VTEw7XG41Mzg1Olx0XHRzNjQgZW5kX3ZjbjtcbjUzODY6XHRcdGludCBkc3RfY250O1xuNTM4NzpcdFx0aW50IHJldDtcbjUzODg6XHRcdHNpemVfdCBuZXdfcmxfY250O1xuNTM4OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgTWVtb3J5IExlYWsgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgdGhhdCBmdW5jdGlvbiBsaXZlcyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0gY29kZSDigJMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LiBGaXJzdCB0aGluZ+KAmXMgZmlyc3Q6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBXaGVyZSBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBsZWFrIGFuZCB3aHkgdGhpcyBjb2RlIHBhdGggaXMgcHJvYmxlbWF0aWMuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgZ3JlYXQgZGVhbCBhYm91dCB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhpcyBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbmZzL250ZnMvYXR0cmliLmMtNTMwMi17XG4tLVxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xuZnMvbnRmcy9hdHRyaWIuaDoxMDk6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XG5mcy9udGZzL2F0dHJpYi5oLTExMC1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuLS1cbmZzL250ZnMvZmlsZS5jPTk5ND1zdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVx0bXV0ZXhfbG9ja19uZXN0ZWQoXHUwMDI2bmktXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XG5mcy9udGZzL2ZpbGUuYzoxMDQwOlx0ZXJyID0gbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UobmksIHN0YXJ0X3ZjbixcbmZzL250ZnMvZmlsZS5jLTEwNDEtXHRcdFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gc29tZXRoaW5nIHRoYXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBpbnNlcnRpbmcgYSByYW5nZSB3aXRoaW4gYW4gTlRGUyBmaWxlLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgdGhpcyBpcyBjb21pbmcgZGlyZWN0bHkgZnJvbSBgbnRmc19pbnNlcnRfcmFuZ2VgIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBmaXJzdCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiwgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gSXQmIzM5O3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBtZWNoYW5pY3Mgb2YgYWxsb2NhdGluZyBuZXcgY2x1c3RlcnMsIHVwZGF0aW5nIHRoZSBNRlQgZW50cmllcywgYW5kIG1hbmFnaW5nIHRoZSBmaWxlJiMzOTtzIGRhdGEgc3RyZWFtcyB0byBhY2NvbW1vZGF0ZSB0aGUgbmV3IGRhdGEgcmFuZ2UuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyBmb3IgaGFuZGxpbmcgcG90ZW50aWFsIGZyYWdtZW50YXRpb24sIGVycm9yIGNoZWNraW5nLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBibG9jayBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIE5URlMgbWV0YWRhdGEgc3RydWN0dXJlcywgcGFydGljdWxhcmx5IHRoZSBhdHRyaWJ1dGVzIGRlc2NyaWJpbmcgdGhlIGZpbGUmIzM5O3MgZGF0YS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbnVhbmNlcyByZWxhdGVkIHRvIHNwYXJzZSBmaWxlcywgcmVzaWRlbnQgZGF0YSwgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjbHVzdGVyIHNpemVzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGxvY2sgbWFuYWdlbWVudCB0byBzZWUgaG93IGl0IGVuc3VyZXMgZGF0YSBjb25zaXN0ZW5jeSBhY3Jvc3MgdGhlIGZpbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTk0OD1zdGF0aWMgaW50IG50ZnNfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTk5My1cbmZzL250ZnMvZmlsZS5jOjk5NDpzdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTk5NS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTA1NT1zdGF0aWMgbG9uZyBudGZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTExMy1cdGNhc2UgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRTpcbmZzL250ZnMvZmlsZS5jOjExMTQ6XHRcdGVyciA9IG50ZnNfaW5zZXJ0X3JhbmdlKG5pLCBvZmZzZXQsIGxlbik7XG5mcy9udGZzL2ZpbGUuYy0xMTE1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTlRGUyBGYWxsb2NhdGUgSW5zZXJ0aW9uKioKCkFscmlnaHQsIHNvIGBudGZzX2ZhbGxvY2F0ZWAgaGFzIGEgc3BlY2lmaWMgY2FsbCBwYXRoIHdoZW4gYG1vZGVgIGlzIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdGFnZ2VkIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhIG1lbW9yeSBsZWFrIGZpeCwgaW4gYSByZWFjaGFibGUgcGF0aCwgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRob3NlIHR5cGVzIG9mIGZpeGVzIGFyZSBub3RvcmlvdXMgZm9yIGludHJvZHVjaW5nIHJlZ3Jlc3Npb25zIG9yIHJldmVhbGluZyBlZGdlIGNhc2VzLiBNeSBndXQgZmVlbGluZyBpcyB3ZSBzaG91bGQgZm9jdXMgc29tZSBhdHRlbnRpb24gb24gaXQuCgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gc2V0dXAsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgaW5kaWNhdGVkIGJ5IHRoZSBgTlRGU19GU2AgY29uZmlnIG9wdGlvbiwgaXMgZXZlbiBlbmFibGVkLiBHb3R0YSBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgaW4gb3IgYnVpbHQgYXMgYSBtb2R1bGUuIExldCBtZSBsb29rIGZvciB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnkgaW4gdGhlIEtjb25maWcgdG8gdmVyaWZ5IHRoYXQgaXQgZXhpc3RzIGFuZCB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTlRGUyBEcml2ZXIgQ29uZnVzaW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTlRGUyBkcml2ZXJzLiBJIHdhcyB0aGlua2luZyBvZiBgZnMvbnRmcy9gLCBidXQgaXNuJiMzOTt0IHRoYXQgdGhlICpvbGQqIG9uZT8gRGlkbiYjMzk7dCB0aGV5IGludHJvZHVjZSBgZnMvbnRmczMvYD8gUmlnaHQsIGBmcy9udGZzL2AgaXMgZGVmaW5pdGVseSB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uLiBPa2F5LCBzbyBpdCYjMzk7cyBzdGlsbCBpbiB0aGUga2VybmVsLCBidXQgaXQmIzM5O3MgdGhlIG9sZCBvbmUsIHJpZ2h0PyBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gWWVhaCwgYGZzL250ZnMvYCBpcyB0aGUgb3V0ZGF0ZWQgb25lLiBIb2xkIHVwLiBPa2F5LCBva2F5LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbG9va2luZyBpbiB0aGUgcmlnaHQgcGxhY2UgZm9yIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBmdW5jdGlvbiBJIGFtIGxvb2tpbmcgZm9yIGV4aXN0cywgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGZzL250ZnMvYCBzdGlsbCBoYXMgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgaXQgZG9lcyBleGlzdC4KCk5vdywgd2FzbiYjMzk7dCBgZnMvbnRmcy9gIGRlcHJlY2F0ZWQgb3IgcmVtb3ZlZCBpbiBtb3JlIHJlY2VudCBrZXJuZWwgdmVyc2lvbnM/IE5vLCBubywgSSB0aGluayBpdCB3YXMgc2xhdGVkIGZvciByZW1vdmFsIGFyb3VuZCA2Ljkgb3Igc29tZXRoaW5nLiBSaWdodC4uLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGFwcGVhcnMgdG8gYmUgaW4gYGZzL250ZnMvYXR0cmliLmNgLgoKT2theSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlIHJlYWxseSBxdWljay4gSSBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlRGU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTkxTXG4gICA1Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxuICAgODpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDExOlx0XHQgIG50ZnMuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5URlNfREVCVUdcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcbiAgMTg6XHRcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxuICAxOTpcdFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXG4gIDIwOlx0XHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgZm9yIHRoZSBOVEZTX1JXIERyaXZlcioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHByZXNlbmNlIG9mIHRoZSBgTlRGU19SV2AgZHJpdmVyLCBhcyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2sgZm9yIHJlYWQvd3JpdGUgYWNjZXNzIHRvIE5URlMgdm9sdW1lcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1vZHVsZSwgbGlicmFyeSwgd2hhdGV2ZXIgaW1wbGVtZW50YXRpb24gaXMgaW4gcGxhY2UgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gY29uc2lkZXIgdGhlIGhpZ2hlci1sZXZlbCBzdHJhdGVnaWVzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWxlIHN5c3RlbS4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCByZWFsbHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXBzIGRlcGVuZCBvbiB0aGlzIGJlaW5nIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJZiBpdCYjMzk7cyBub3QsIHRoZW4gSSYjMzk7bGwgbmVlZCB0byB0cm91Ymxlc2hvb3QgdGhhdCBiZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1vdW50aW5nLCBhY2Nlc3NpbmcsIG9yLCBHb2QgZm9yYmlkLCBtb2RpZnlpbmcgdGhlIHRhcmdldCBOVEZTIHZvbHVtZS4gTm8gcG9pbnQgaW4ganVtcGluZyBhaGVhZCBiZWZvcmUgSSYjMzk7dmUgZXN0YWJsaXNoZWQgdGhlIGJhc2ljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19SVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBOVEZTIEtlcm5lbCBNb2R1bGUqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gYE5URlNfUldgLi4uIHRoYXQmIzM5O3MgcmluZ2luZyBhIGJlbGwuIEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBvcHRpb24gcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIG1vZHVsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnksIGluIG9sZGVyIGtlcm5lbCB2ZXJzaW9ucy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHdoYXQgaXQgY29udHJvbHMgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQuIEJldHRlciBoZWFkIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgLSBsZXQmIzM5O3MgcHVsbCB1cCBhbmQgYW5hbHl6ZSBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdG8gc2VlIGlmIGFueXRoaW5nIGhhcyBzaGlmdGVkIGluIHRoZSBtb3JlIHJlY2VudCBjb2RlIGJhc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMTpcdFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxuICAyMjpcdFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cbiAgMjM6XHRcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxuICAyNDpcdFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxuICAyNTpcdFx0ICBlY2hvIDEgXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXG4gIDI2Olx0XHQgIFJlcGxhY2luZyB0aGUgXCYjMzQ7MVwmIzM0OyB3aXRoIFwmIzM0OzBcJiMzNDsgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxuICAyOTpcdFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxuICAzMDpcdFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxuICAzMTpcdFxuICAzMjpcdFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXG4gIDMzOlx0XHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG4gIDM2Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAzODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcbiAgNDE6XHRcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxuICA0NDpcdFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXG4gIDQ1Olx0XG4gIDQ2Olx0XHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXG4gIDQ3Olx0XG4gIDQ4Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIERyaXZlciBDb251bmRydW0qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJiMzOTtzIG5vdCByaWdodC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBgTlRGU19SV2AgZGVmaW5lZCwgYnV0IGl0JiMzOTtzIG5vdCBwcmVzZW50LiBUaGUgb25seSBvcHRpb24gbGlzdGVkIGlzIGBOVEZTX0ZTYC4gVGhhdCYjMzk7cy4uLiB1bnVzdWFsLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gQWxyaWdodCwgdGltZSB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBmcy9udGZzL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVmaW5pdGlvbnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgY2x1ZXMgSSBuZWVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uIFRoaXMgaXMgZ29pbmcgdG8gdGVsbCB0aGUgd2hvbGUgc3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uLCBkZXNpZ25hdGVkIGFzIGBOVEZTX0ZTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGZpeCBmb3IgYSBtZW1vcnkgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGxhcmdlciBjaGFpbiwgY2FsbGVkIGJ5IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGl0c2VsZiBpcyBpbnZva2VkIGJ5IGBudGZzX2ZhbGxvY2F0ZWAgd2hlbiB1c2luZyB0aGUgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIGZsYWcuCgpUaGUga2V5IHRha2Vhd2F5IGhlcmUgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb247IGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBidWcsIG5vdCBqdXN0IGFuIG9wdGltaXphdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBhIG1lbW9yeSBsZWFrLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgdmFsaWRhdGlvbi4gVGhlIGluZGljYXRlZCBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uZmlybXMgdGhpcy4gVGhlIGBFbmFibGVDb25maWdzOiBOVEZTX0ZTYCBkaXJlY3RpdmUgZnVydGhlciBlbXBoYXNpemVzIHRoZSBjb250ZXh0LgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCByZXNvbHZlcyBhIG1lbW9yeSBsZWFrIHRoYXQgY2FuIG9jY3VyIG9uIGFuIE5URlMgZmlsZXN5c3RlbSB3aGVuIHV0aWxpemluZyBgZmFsbG9jYXRlYCB3aXRoIHRoZSBgSU5TRVJUX1JBTkdFYCBmbGFnLCBpbXBhY3RpbmcgdGhlIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgbGVhayBpcyB0cmlnZ2VyZWQgYW5kIGRldmlzZSBzb21lIHRhcmdldGVkIGZ1enppbmcgY2FtcGFpZ25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgICAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgICAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjQ0Ljk4NzY2MjYyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTUyNTY1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICAgIFwibnRmc19pbnNlcnRfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjQ0Ljk4NzY2ODM5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3NTYyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTEzNDhlNjc2YTE4ODJiYjJkM2UyOTk0MmM0MDVmNDdjMzY0MTE1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXFxuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvYXR0cmliLmNcXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXFxuQEAgLTUzMjUsNiArNTMyNSw3IEBAIGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2XFxuIFxcdHJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0dXBfd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbitcXHRcXHRrZnJlZShob2xlX3JsKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDA6NDUuMzc2MDU0NTIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc2NDE2MjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUxMzQ4ZTY3NmExODgyYmIyZDNlMjk5NDJjNDA1ZjQ3YzM2NDExNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDEwOjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmNcbmluZGV4IGRkODgyODA5ODUxMTgzLi41NTYwM2RmMGEyZWQ3ZCAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvYXR0cmliLmNcbisrKyBiL2ZzL250ZnMvYXR0cmliLmNcbkBAIC01MzI1LDYgKzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbitcdFx0a2ZyZWUoaG9sZV9ybCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0NS4zNzYwNTY4MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIzMzQ4Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBGaXggaW4gdGhlIE5URlMgRmlsZXN5c3RlbSBDb2RlKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgYSBwcm9wb3NlZCBwYXRjaCwgYW5kIGl0IHNlZW1zIHRvIGludm9sdmUgYSBga2ZyZWUoaG9sZV9ybCk7YCBjYWxsIHdpdGhpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGluIHRoZSBgZnMvbnRmcy9hdHRyaWIuY2AgZmlsZS4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIGluZGljYXRlcyB0aGlzIGlzIGEgbWVtb3J5IGxlYWsgZml4LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBob2xlX3JsYCByZXByZXNlbnRzIGFuZCB3aHkgaXRzIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBOVEZTIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgZnVuY3Rpb24gaXRzZWxmLCB3aXRoaW4gdGhhdCBgYXR0cmliLmNgIGZpbGUsIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3csIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoaXMgcGF0Y2gncyBpbXBhY3QgYW5kIGVmZmljYWN5IGluIGFkZHJlc3NpbmcgdGhlIGxlYWsuIEknbGwgbmVlZCB0byBjb25zaWRlciBhbnkgc2lkZSBlZmZlY3RzIG9yIHBvdGVudGlhbCByZWdyZXNzaW9ucyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0OC41OTk0MDc0NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTA2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo0OC42NTU1NjM0NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ4OTY0MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIE5URlMgQXR0cmlidXRlIEhhbmRsaW5nKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgTlRGUyBhdHRyaWJ1dGUgaGFuZGxpbmcgY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUzMDEgaW4gYGZzL250ZnMvYXR0cmliLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3JpdGljYWwgbG9naWMgdGhlcmUsIGxpa2VseSBkZWFsaW5nIHdpdGggaG93IGF0dHJpYnV0ZXMgYXJlIHJlYWQsIHdyaXR0ZW4sIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgb2YgdGhhdCBsaW5lIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGFraW5nIHBsYWNlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVycm9yIGNvbmRpdGlvbnMsIG9yIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIHJlbGF0ZWQgdG8gYXR0cmlidXRlIG1hbmFnZW1lbnQuIEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBhcmVhIGludm9sdmVzIGhvdyBkYXRhIHN0cmVhbXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBmaWxlIG1ldGFkYXRhLCBzbyB0aGF0IHNob3VsZCBiZSBteSBzdGFydGluZyBmb2N1cy4gSSdtIGhvcGluZyBpdCdzIHdlbGwtY29tbWVudGVkLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1MS43MDQ1Mjk5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjkwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTI5MDpcXHRcXHR9XFxuNTI5MTpcXHRcXHRyZXQgPSBkYXRhO1xcbjUyOTI6XFx0XFx0aWYgKGRhdGFfc2l6ZSlcXG41MjkzOlxcdFxcdFxcdCpkYXRhX3NpemUgPSBzaXplO1xcbjUyOTQ6XFx0b3V0OlxcbjUyOTU6XFx0XFx0aXB1dChibXBfdmkpO1xcbjUyOTY6XFx0ZXJyX2V4aXQ6XFxuNTI5NzpcXHRcXHRudGZzX2RlYnVnKFxcXCJcXFxcblxcXCIpO1xcbjUyOTg6XFx0XFx0cmV0dXJuIHJldDtcXG41Mjk5OlxcdH1cXG41MzAwOlxcdFxcbjUzMDE6XFx0aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG41MzAyOlxcdHtcXG41MzAzOlxcdFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG41MzA0OlxcdFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKmhvbGVfcmwsICpybDtcXG41MzA1OlxcdFxcdHN0cnVjdCBudGZzX2F0dHJfc2VhcmNoX2N0eCAqY3R4O1xcbjUzMDY6XFx0XFx0aW50IHJldDtcXG41MzA3OlxcdFxcdHNpemVfdCBuZXdfcmxfY291bnQ7XFxuNTMwODpcXHRcXG41MzA5OlxcdFxcdGlmIChOSW5vQXR0cihuaSkgfHwgbmktXFx1MDAzZXR5cGUgIT0gQVRfREFUQSlcXG41MzEwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG41MzExOlxcdFxcdGlmIChzdGFydF92Y24gXFx1MDAzZSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cXHUwMDNlYWxsb2NhdGVkX3NpemUpKVxcbjUzMTI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNTMxMzpcXHRcXG41MzE0OlxcdFxcdGhvbGVfcmwgPSBrbWFsbG9jKHNpemVvZigqaG9sZV9ybCkgKiAyLCBHRlBfTk9GUyk7XFxuNTMxNTpcXHRcXHRpZiAoIWhvbGVfcmwpXFxuNTMxNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG41MzE3OlxcdFxcdGhvbGVfcmxbMF0udmNuID0gc3RhcnRfdmNuO1xcbjUzMTg6XFx0XFx0aG9sZV9ybFswXS5sY24gPSBMQ05fSE9MRTtcXG41MzE5OlxcdFxcdGhvbGVfcmxbMF0ubGVuZ3RoID0gbGVuO1xcbjUzMjA6XFx0XFx0aG9sZV9ybFsxXS52Y24gPSBzdGFydF92Y24gKyBsZW47XFxuNTMyMTpcXHRcXHRob2xlX3JsWzFdLmxjbiA9IExDTl9FTk9FTlQ7XFxuNTMyMjpcXHRcXHRob2xlX3JsWzFdLmxlbmd0aCA9IDA7XFxuNTMyMzpcXHRcXG41MzI0OlxcdFxcdGRvd25fd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbjUzMjU6XFx0XFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcXG41MzI2OlxcdFxcdGlmIChyZXQpIHtcXG41MzI3OlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzI4OlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzMjk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzMwOlxcdFxcdH1cXG41MzMxOlxcdFxcbjUzMzI6XFx0XFx0cmwgPSBudGZzX3JsX2ZpbmRfdmNuX25vbG9jayhuaS1cXHUwMDNlcnVubGlzdC5ybCwgc3RhcnRfdmNuKTtcXG41MzMzOlxcdFxcdGlmICghcmwpIHtcXG41MzM0OlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzM1OlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzMzY6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuNTMzNzpcXHRcXHR9XFxuNTMzODpcXHRcXG41MzM5OlxcdFxcdHJsID0gbnRmc19ybF9pbnNlcnRfcmFuZ2UobmktXFx1MDAzZXJ1bmxpc3QucmwsIChpbnQpbmktXFx1MDAzZXJ1bmxpc3QuY291bnQsXFxuNTM0MDpcXHRcXHRcXHRcXHRcXHQgIGhvbGVfcmwsIDEsIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbjUzNDE6XFx0XFx0aWYgKElTX0VSUihybCkpIHtcXG41MzQyOlxcdFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG41MzQzOlxcdFxcdFxcdGtmcmVlKGhvbGVfcmwpO1xcbjUzNDQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmwpO1xcbjUzNDU6XFx0XFx0fVxcbjUzNDY6XFx0XFx0bmktXFx1MDAzZXJ1bmxpc3QucmwgPSAgcmw7XFxuNTM0NzpcXHRcXHRuaS1cXHUwMDNlcnVubGlzdC5jb3VudCA9IG5ld19ybF9jb3VudDtcXG41MzQ4OlxcdFxcbjUzNDk6XFx0XFx0bmktXFx1MDAzZWFsbG9jYXRlZF9zaXplICs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XFxuNTM1MDpcXHRcXHRuaS1cXHUwMDNlZGF0YV9zaXplICs9IG50ZnNfY2x1c3Rlcl90b19ieXRlcyh2b2wsIGxlbik7XFxuNTM1MTpcXHRcXHRpZiAobnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgc3RhcnRfdmNuKSBcXHUwMDNjIG5pLVxcdTAwM2Vpbml0aWFsaXplZF9zaXplKVxcbjUzNTI6XFx0XFx0XFx0bmktXFx1MDAzZWluaXRpYWxpemVkX3NpemUgKz0gbnRmc19jbHVzdGVyX3RvX2J5dGVzKHZvbCwgbGVuKTtcXG41MzUzOlxcdFxcdHJldCA9IG50ZnNfYXR0cl91cGRhdGVfbWFwcGluZ19wYWlycyhuaSwgMCk7XFxuNTM1NDpcXHRcXHR1cF93cml0ZShcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QubG9jayk7XFxuNTM1NTpcXHRcXHRpZiAocmV0KVxcbjUzNTY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzU3OlxcdFxcbjUzNTg6XFx0XFx0Y3R4ID0gbnRmc19hdHRyX2dldF9zZWFyY2hfY3R4KG5pLCBOVUxMKTtcXG41MzU5OlxcdFxcdGlmICghY3R4KSB7XFxuNTM2MDpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjUzNjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzYyOlxcdFxcdH1cXG41MzYzOlxcdFxcbjUzNjQ6XFx0XFx0cmV0ID0gbnRmc19hdHRyX2xvb2t1cChuaS1cXHUwMDNldHlwZSwgbmktXFx1MDAzZW5hbWUsIG5pLVxcdTAwM2VuYW1lX2xlbiwgQ0FTRV9TRU5TSVRJVkUsXFxuNTM2NTpcXHRcXHRcXHRcXHQgICAgICAgMCwgTlVMTCwgMCwgY3R4KTtcXG41MzY2OlxcdFxcdGlmIChyZXQpIHtcXG41MzY3OlxcdFxcdFxcdG50ZnNfYXR0cl9wdXRfc2VhcmNoX2N0eChjdHgpO1xcbjUzNjg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG41MzY5OlxcdFxcdH1cXG41MzcwOlxcdFxcbjUzNzE6XFx0XFx0Y3R4LVxcdTAwM2VhdHRyLVxcdTAwM2VkYXRhLm5vbl9yZXNpZGVudC5kYXRhX3NpemUgPSBjcHVfdG9fbGU2NChuaS1cXHUwMDNlZGF0YV9zaXplKTtcXG41MzcyOlxcdFxcdGN0eC1cXHUwMDNlYXR0ci1cXHUwMDNlZGF0YS5ub25fcmVzaWRlbnQuaW5pdGlhbGl6ZWRfc2l6ZSA9IGNwdV90b19sZTY0KG5pLVxcdTAwM2Vpbml0aWFsaXplZF9zaXplKTtcXG41MzczOlxcdFxcdGlmIChuaS1cXHUwMDNldHlwZSA9PSBBVF9EQVRBIFxcdTAwMjZcXHUwMDI2IG5pLVxcdTAwM2VuYW1lID09IEFUX1VOTkFNRUQpXFxuNTM3NDpcXHRcXHRcXHROSW5vU2V0RmlsZU5hbWVEaXJ0eShuaSk7XFxuNTM3NTpcXHRcXHRtYXJrX21mdF9yZWNvcmRfZGlydHkoY3R4LVxcdTAwM2VudGZzX2lubyk7XFxuNTM3NjpcXHRcXHRudGZzX2F0dHJfcHV0X3NlYXJjaF9jdHgoY3R4KTtcXG41Mzc3OlxcdFxcdHJldHVybiByZXQ7XFxuNTM3ODpcXHR9XFxuNTM3OTpcXHRcXG41MzgwOlxcdGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG41MzgxOlxcdHtcXG41MzgyOlxcdFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG41MzgzOlxcdFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnB1bmNoX3JsLCAqcmw7XFxuNTM4NDpcXHRcXHRzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eCA9IE5VTEw7XFxuNTM4NTpcXHRcXHRzNjQgZW5kX3ZjbjtcXG41Mzg2OlxcdFxcdGludCBkc3RfY250O1xcbjUzODc6XFx0XFx0aW50IHJldDtcXG41Mzg4OlxcdFxcdHNpemVfdCBuZXdfcmxfY250O1xcbjUzODk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjUxLjcwNDc2NzA2OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzA1OTc1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIE1lbW9yeSBMZWFrIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gQWxyaWdodCwgdGhhdCBmdW5jdGlvbiBsaXZlcyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0gY29kZSDigJMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LiBGaXJzdCB0aGluZ+KAmXMgZmlyc3Q6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBXaGVyZSBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBsZWFrIGFuZCB3aHkgdGhpcyBjb2RlIHBhdGggaXMgcHJvYmxlbWF0aWMuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgZ3JlYXQgZGVhbCBhYm91dCB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhpcyBpcyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjU0LjYzNTM2NjYwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMzYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcXG4tLVxcbmZzL250ZnMvYXR0cmliLmg9MTA4PWludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcXG5mcy9udGZzL2F0dHJpYi5oOjEwOTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcXG5mcy9udGZzL2F0dHJpYi5oLTExMC1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTAzOS1cXHRtdXRleF9sb2NrX25lc3RlZChcXHUwMDI2bmktXFx1MDAzZW1yZWNfbG9jaywgTlRGU19JTk9ERV9NVVRFWF9OT1JNQUwpO1xcbmZzL250ZnMvZmlsZS5jOjEwNDA6XFx0ZXJyID0gbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UobmksIHN0YXJ0X3ZjbixcXG5mcy9udGZzL2ZpbGUuYy0xMDQxLVxcdFxcdFxcdGVuZF92Y24gLSBzdGFydF92Y24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1NC43OTA3MDc5NzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM2MTA2OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHNvbWV0aGluZyB0aGF0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gaW5zZXJ0aW5nIGEgcmFuZ2Ugd2l0aGluIGFuIE5URlMgZmlsZS4gVGhlIGNhbGwgc3RhY2sgaW5kaWNhdGVzIHRoaXMgaXMgY29taW5nIGRpcmVjdGx5IGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCB3aXRoaW4gYGZzL250ZnMvZmlsZS5jYC4gTXkgZmlyc3QgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24sIGBudGZzX2luc2VydF9yYW5nZWAuIEl0J3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBtZWNoYW5pY3Mgb2YgYWxsb2NhdGluZyBuZXcgY2x1c3RlcnMsIHVwZGF0aW5nIHRoZSBNRlQgZW50cmllcywgYW5kIG1hbmFnaW5nIHRoZSBmaWxlJ3MgZGF0YSBzdHJlYW1zIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgZGF0YSByYW5nZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgbG9naWMgZm9yIGhhbmRsaW5nIHBvdGVudGlhbCBmcmFnbWVudGF0aW9uLCBlcnJvciBjaGVja2luZywgYW5kIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBOVEZTIG1ldGFkYXRhIHN0cnVjdHVyZXMsIHBhcnRpY3VsYXJseSB0aGUgYXR0cmlidXRlcyBkZXNjcmliaW5nIHRoZSBmaWxlJ3MgZGF0YS4gSSdsbCBiZSBsb29raW5nIGZvciBudWFuY2VzIHJlbGF0ZWQgdG8gc3BhcnNlIGZpbGVzLCByZXNpZGVudCBkYXRhLCBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGNsdXN0ZXIgc2l6ZXMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIG1hbmFnZW1lbnQgdG8gc2VlIGhvdyBpdCBlbnN1cmVzIGRhdGEgY29uc2lzdGVuY3kgYWNyb3NzIHRoZSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQwOjU4LjMyNjgxNjY4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3NjMwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9maWxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9maWxlLmM9OTQ4PXN0YXRpYyBpbnQgbnRmc19jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy05OTMtXFxuZnMvbnRmcy9maWxlLmM6OTk0OnN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbmZzL250ZnMvZmlsZS5jLTk5NS17XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz0xMDU1PXN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTExMTMtXFx0Y2FzZSBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFOlxcbmZzL250ZnMvZmlsZS5jOjExMTQ6XFx0XFx0ZXJyID0gbnRmc19pbnNlcnRfcmFuZ2UobmksIG9mZnNldCwgbGVuKTtcXG5mcy9udGZzL2ZpbGUuYy0xMTE1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MDo1OC4zODE1ODYxNzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDQxMTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBOVEZTIEZhbGxvY2F0ZSBJbnNlcnRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbnRmc19mYWxsb2NhdGVgIGhhcyBhIHNwZWNpZmljIGNhbGwgcGF0aCB3aGVuIGBtb2RlYCBpcyBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyB0YWdnZWQgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGEgbWVtb3J5IGxlYWsgZml4LCBpbiBhIHJlYWNoYWJsZSBwYXRoLCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldC4gVGhvc2UgdHlwZXMgb2YgZml4ZXMgYXJlIG5vdG9yaW91cyBmb3IgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgcmV2ZWFsaW5nIGVkZ2UgY2FzZXMuIE15IGd1dCBmZWVsaW5nIGlzIHdlIHNob3VsZCBmb2N1cyBzb21lIGF0dGVudGlvbiBvbiBpdC5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHNldHVwLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGluZGljYXRlZCBieSB0aGUgYE5URlNfRlNgIGNvbmZpZyBvcHRpb24sIGlzIGV2ZW4gZW5hYmxlZC4gR290dGEgZW5zdXJlIGl0J3MgYnVpbHQgaW4gb3IgYnVpbHQgYXMgYSBtb2R1bGUuIExldCBtZSBsb29rIGZvciB0aGUgYGZzL250ZnMvYCBkaXJlY3RvcnkgaW4gdGhlIEtjb25maWcgdG8gdmVyaWZ5IHRoYXQgaXQgZXhpc3RzIGFuZCB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0J3MgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowMi4xMDU5OTk4MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjE1NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDE6MDIuMTYzNjIwMjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMzU0NDg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIERyaXZlciBDb25mdXNpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIE5URlMgZHJpdmVycy4gSSB3YXMgdGhpbmtpbmcgb2YgYGZzL250ZnMvYCwgYnV0IGlzbid0IHRoYXQgdGhlICpvbGQqIG9uZT8gRGlkbid0IHRoZXkgaW50cm9kdWNlIGBmcy9udGZzMy9gPyBSaWdodCwgYGZzL250ZnMvYCBpcyBkZWZpbml0ZWx5IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24uIE9rYXksIHNvIGl0J3Mgc3RpbGwgaW4gdGhlIGtlcm5lbCwgYnV0IGl0J3MgdGhlIG9sZCBvbmUsIHJpZ2h0PyBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gWWVhaCwgYGZzL250ZnMvYCBpcyB0aGUgb3V0ZGF0ZWQgb25lLiBIb2xkIHVwLiBPa2F5LCBva2F5LlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGxvb2tpbmcgaW4gdGhlIHJpZ2h0IHBsYWNlIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gSSBhbSBsb29raW5nIGZvciBleGlzdHMsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IGBmcy9udGZzL2Agc3RpbGwgaGFzIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIEFscmlnaHQsIGl0IGRvZXMgZXhpc3QuXG5cbk5vdywgd2Fzbid0IGBmcy9udGZzL2AgZGVwcmVjYXRlZCBvciByZW1vdmVkIGluIG1vcmUgcmVjZW50IGtlcm5lbCB2ZXJzaW9ucz8gTm8sIG5vLCBJIHRoaW5rIGl0IHdhcyBzbGF0ZWQgZm9yIHJlbW92YWwgYXJvdW5kIDYuOSBvciBzb21ldGhpbmcuIFJpZ2h0Li4uIExldCBtZSBkb3VibGUtY2hlY2suIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBhcHBlYXJzIHRvIGJlIGluIGBmcy9udGZzL2F0dHJpYi5jYC5cblxuT2theSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlIHJlYWxseSBxdWljay4gSSBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowNi41ODcxNzE2NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQxOjA2LjU4NzI5MjI5MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQyMTc0MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBmb3IgdGhlIE5URlNfUlcgRHJpdmVyKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBOVEZTX1JXYCBkcml2ZXIsIGFzIHRoYXQncyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrIGZvciByZWFkL3dyaXRlIGFjY2VzcyB0byBOVEZTIHZvbHVtZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBtb2R1bGUsIGxpYnJhcnksIHdoYXRldmVyIGltcGxlbWVudGF0aW9uIGlzIGluIHBsYWNlIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBoaWdoZXItbGV2ZWwgc3RyYXRlZ2llcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciwgcmVhbGx5LiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwcyBkZXBlbmQgb24gdGhpcyBiZWluZyBwcmVzZW50IGFuZCBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSWYgaXQncyBub3QsIHRoZW4gSSdsbCBuZWVkIHRvIHRyb3VibGVzaG9vdCB0aGF0IGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbW91bnRpbmcsIGFjY2Vzc2luZywgb3IsIEdvZCBmb3JiaWQsIG1vZGlmeWluZyB0aGUgdGFyZ2V0IE5URlMgdm9sdW1lLiBObyBwb2ludCBpbiBqdW1waW5nIGFoZWFkIGJlZm9yZSBJJ3ZlIGVzdGFibGlzaGVkIHRoZSBiYXNpY3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDEwOjQxOjA5LjQyOTQ2OTU4NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwODgyNjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MTowOS40ODg1NjUzNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNTc2MjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5URlMgS2VybmVsIE1vZHVsZSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIGBOVEZTX1JXYC4uLiB0aGF0J3MgcmluZ2luZyBhIGJlbGwuIEFoLCB5ZXMsIGl0J3MgdGhlIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gbW9kdWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZnMvbnRmcy9gIGRpcmVjdG9yeSwgaW4gb2xkZXIga2VybmVsIHZlcnNpb25zLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCdzIHN0aWxsIHJlbGV2YW50LiBCZXR0ZXIgaGVhZCBkaXJlY3RseSB0byB0aGUgc291cmNlIC0gbGV0J3MgcHVsbCB1cCBhbmQgYW5hbHl6ZSBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgdG8gc2VlIGlmIGFueXRoaW5nIGhhcyBzaGlmdGVkIGluIHRoZSBtb3JlIHJlY2VudCBjb2RlIGJhc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxMi42MjQzMjk5NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxMi42MjQ0MzM1MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxMDAyNzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIERyaXZlciBDb251bmRydW0qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcncyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYE5URlNfUldgIGRlZmluZWQsIGJ1dCBpdCdzIG5vdCBwcmVzZW50LiBUaGUgb25seSBvcHRpb24gbGlzdGVkIGlzIGBOVEZTX0ZTYC4gVGhhdCdzLi4uIHVudXN1YWwuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBBbHJpZ2h0LCB0aW1lIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCdzIGRpZyBpbnRvIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcywgYW5kIHRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlZmluaXRpb25zLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGNsdWVzIEkgbmVlZC4gTGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi4gVGhpcyBpcyBnb2luZyB0byB0ZWxsIHRoZSB3aG9sZSBzdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTA6NDE6MTUuMzM0NDYzNDc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToxNS4zMzQ1MjU0MTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxOTcxOTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gTlRGUyBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGRlc2lnbmF0ZWQgYXMgYE5URlNfRlNgLiBUaGUgY29yZSBvZiB0aGlzIGlzIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGZ1bmN0aW9uLiBEaWdnaW5nIGEgYml0IGRlZXBlciwgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGNoYWluLCBjYWxsZWQgYnkgYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHVzaW5nIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZy5cblxuVGhlIGtleSB0YWtlYXdheSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uOyBpdCdzIGFkZHJlc3NpbmcgYSBidWcsIG5vdCBqdXN0IGFuIG9wdGltaXphdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBhIG1lbW9yeSBsZWFrLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhbmQgdmFsaWRhdGlvbi4gVGhlIGluZGljYXRlZCBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uZmlybXMgdGhpcy4gVGhlIGBFbmFibGVDb25maWdzOiBOVEZTX0ZTYCBkaXJlY3RpdmUgZnVydGhlciBlbXBoYXNpemVzIHRoZSBjb250ZXh0LlxuXG5TbywgdGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIHJlc29sdmVzIGEgbWVtb3J5IGxlYWsgdGhhdCBjYW4gb2NjdXIgb24gYW4gTlRGUyBmaWxlc3lzdGVtIHdoZW4gdXRpbGl6aW5nIGBmYWxsb2NhdGVgIHdpdGggdGhlIGBJTlNFUlRfUkFOR0VgIGZsYWcsIGltcGFjdGluZyB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBhbmQgYG50ZnNfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGxlYWsgaXMgdHJpZ2dlcmVkIGFuZCBkZXZpc2Ugc29tZSB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWducy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAxMiwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMDo0MToyMC4wNTQyNDcyOTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTk2NTYxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gICAgXCJudGZzX2luc2VydF9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZXN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowl6rkd[1] Phase: Succeeded StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 10:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 10:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2] Phase: Succeeded StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 10:41:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-05 10:41:31 +0000 UTC FinishedAt: 2026-07-05 10:41:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl6rkd/series-workflowl6rkd-convert-artifact-2298847187/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-05 10:41:41 +0000 UTC FinishedAt: 2026-07-05 11:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-05 10:41:41 +0000 UTC FinishedAt: 2026-07-05 11:03:17 +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:*20e20f29-d7b3-4d94-b8b7-86d44fae6c4a,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-workflowl6rkd/series-workflowl6rkd-convert-artifact-2298847187/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": "170d3d39-1318-4a57-b258-76470fcd536f", "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-workflowl6rkd/series-workflowl6rkd-build-action-1492443905/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-05 10:41:41 +0000 UTC FinishedAt: 2026-07-05 11:03:07 +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:*20e20f29-d7b3-4d94-b8b7-86d44fae6c4a,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-workflowl6rkd/series-workflowl6rkd-convert-artifact-2298847187/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": "170d3d39-1318-4a57-b258-76470fcd536f", "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-workflowl6rkd/series-workflowl6rkd-build-action-1492443905/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-05 11:03:17 +0000 UTC FinishedAt: 2026-07-05 11:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-05 11:03:17 +0000 UTC FinishedAt: 2026-07-05 11:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-05 11:03:17 +0000 UTC FinishedAt: 2026-07-05 11:03:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-05 11:03:17 +0000 UTC FinishedAt: 2026-07-05 11:03:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl6rkd/series-workflowl6rkd-convert-artifact-3684652746/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-05 11:03:27 +0000 UTC FinishedAt: 2026-07-05 11:05:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-05 11:03:27 +0000 UTC FinishedAt: 2026-07-05 11:05:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*170d3d39-1318-4a57-b258-76470fcd536f,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-workflowl6rkd/series-workflowl6rkd-build-action-1492443905/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-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-05 11:05:14 +0000 UTC FinishedAt: 2026-07-05 11:05:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-05 11:05:14 +0000 UTC FinishedAt: 2026-07-05 11:05:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-05 11:05:14 +0000 UTC FinishedAt: 2026-07-05 11:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-05 11:05:14 +0000 UTC FinishedAt: 2026-07-05 11:27:27 +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:*20e20f29-d7b3-4d94-b8b7-86d44fae6c4a,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-workflowl6rkd/series-workflowl6rkd-convert-artifact-3684652746/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": "29a1926d-f1f4-403a-adcc-67efe08a41a9", "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-workflowl6rkd/series-workflowl6rkd-build-action-217561838/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-05 11:05:14 +0000 UTC FinishedAt: 2026-07-05 11:25:53 +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:*20e20f29-d7b3-4d94-b8b7-86d44fae6c4a,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-workflowl6rkd/series-workflowl6rkd-convert-artifact-3684652746/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": "29a1926d-f1f4-403a-adcc-67efe08a41a9", "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-workflowl6rkd/series-workflowl6rkd-build-action-217561838/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-05 11:27:27 +0000 UTC FinishedAt: 2026-07-05 11:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-05 11:27:27 +0000 UTC FinishedAt: 2026-07-05 11:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-05 11:27:27 +0000 UTC FinishedAt: 2026-07-05 11:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-05 11:27:27 +0000 UTC FinishedAt: 2026-07-05 11:29:04 +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:*29a1926d-f1f4-403a-adcc-67efe08a41a9,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-workflowl6rkd/series-workflowl6rkd-build-action-217561838/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-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"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:*170d3d39-1318-4a57-b258-76470fcd536f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*29a1926d-f1f4-403a-adcc-67efe08a41a9,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-workflowl6rkd/series-workflowl6rkd-build-action-1492443905/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-workflowl6rkd/series-workflowl6rkd-build-action-217561838/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 11:29:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 11:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"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-workflowl6rkd/series-workflowl6rkd-convert-artifact-2577952607/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 11:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 11:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-05 11:29:14 +0000 UTC FinishedAt: 2026-07-05 11:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-05 11:29:24 +0000 UTC FinishedAt: 2026-07-05 12:10:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6rkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"8e2f13df-c8da-4019-9d03-021a8706dff1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-05 11:29:24 +0000 UTC FinishedAt: 2026-07-05 12:10:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*170d3d39-1318-4a57-b258-76470fcd536f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*29a1926d-f1f4-403a-adcc-67efe08a41a9,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-workflowl6rkd/series-workflowl6rkd-build-action-1492443905/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-workflowl6rkd/series-workflowl6rkd-build-action-217561838/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-workflowl6rkd/series-workflowl6rkd-convert-artifact-2577952607/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,}