Name: series-workflowcx4hz Phase: Succeeded StartedAt: 2026-07-02 11:49:44 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[0] Phase: Succeeded StartedAt: 2026-07-02 11:49:44 +0000 UTC FinishedAt: 2026-07-02 12:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 11:49:44 +0000 UTC FinishedAt: 2026-07-02 12:11:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "4b2b7ea2-812e-4251-903a-962ca626d4bc" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_file_write_iter", "ntfs_filemap_page_mkwrite" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMjoxMTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2ZpbGUuYyBiL2ZzL250ZnMvZmlsZS5jXG5pbmRleCA2YTdiNjM4ZTUyM2Q5MS4uMGQ4ZjExZTVjY2I3OGEgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2ZpbGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9maWxlLmNcbkBAIC01NTAsNiAmIzQzOzU1MCwxMiBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbiBcdGlmIChOVm9sU2h1dGRvd24odm9sKSlcbiBcdFx0cmV0dXJuIC1FSU87XG4gXG4mIzQzO1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuJiM0MztcdFx0bnRmc19lcnJvcih2aS1cdTAwM2VpX3NiLCBcJiMzNDtBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8pO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChOSW5vRW5jcnlwdGVkKG5pKSkge1xuIFx0XHRudGZzX2Vycm9yKHZpLVx1MDAzZWlfc2IsIFwmIzM0O1dyaXRpbmcgZm9yICVzIGZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCYjMzQ7LFxuIFx0XHRcdCAgIE5Jbm9Db21wcmVzc2VkKG5pKSA/IFwmIzM0O0NvbXByZXNzZWRcJiMzNDsgOiBcJiMzNDtFbmNyeXB0ZWRcJiMzNDspO1xuQEAgLTYxOCw4ICYjNDM7NjI0LDE1IEBAIHN0YXRpYyBzc2l6ZV90IG50ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuIHN0YXRpYyB2bV9mYXVsdF90IG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4ge1xuIFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9maWxlKTtcbiYjNDM7XHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXG4mIzQzO1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuJiM0MztcdFx0bnRmc19lcnJvcihpbm9kZS1cdTAwM2VpX3NiLCBcJiMzNDtBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8pO1xuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c2Jfc3RhcnRfcGFnZWZhdWx0KGlub2RlLVx1MDAzZWlfc2IpO1xuIFx0ZmlsZV91cGRhdGVfdGltZSh2bWYtXHUwMDNldm1hLVx1MDAzZXZtX2ZpbGUpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ0NmI5M2M5Zjk4ZTU0OGIwYjc3YjJjYmJmMjY5Yjg0MDY0NDRmMzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDEyOjExOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9maWxlLmMgYi9mcy9udGZzL2ZpbGUuYwppbmRleCA2YTdiNjM4ZTUyM2Q5MS4uMGQ4ZjExZTVjY2I3OGEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvZmlsZS5jCkBAIC01NTAsNiAmIzQzOzU1MCwxMiBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkKIAlpZiAoTlZvbFNodXRkb3duKHZvbCkpCiAJCXJldHVybiAtRUlPOwogCiYjNDM7CWlmIChuaS0mZ3Q7bWZ0X25vID09IEZJTEVfTUZUKSB7CiYjNDM7CQludGZzX2Vycm9yKHZpLSZndDtpX3NiLCAmIzM0O0F0dGVtcHQgdG8gd3JpdGUgdG8gJE1GVCBkZW5pZWQgKG1mdF9ubzogMHglbHgpJiMzNDssCiYjNDM7CQkJCW5pLSZndDttZnRfbm8pOwomIzQzOwkJcmV0dXJuIC1FQUNDRVM7CiYjNDM7CX0KJiM0MzsKIAlpZiAoTklub0VuY3J5cHRlZChuaSkpIHsKIAkJbnRmc19lcnJvcih2aS0mZ3Q7aV9zYiwgJiMzNDtXcml0aW5nIGZvciAlcyBmaWxlcyBpcyBub3Qgc3VwcG9ydGVkIHlldCYjMzQ7LAogCQkJICAgTklub0NvbXByZXNzZWQobmkpID8gJiMzNDtDb21wcmVzc2VkJiMzNDsgOiAmIzM0O0VuY3J5cHRlZCYjMzQ7KTsKQEAgLTYxOCw4ICYjNDM7NjI0LDE1IEBAIHN0YXRpYyBzc2l6ZV90IG50ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKQogc3RhdGljIHZtX2ZhdWx0X3QgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZSh2bWYtJmd0O3ZtYS0mZ3Q7dm1fZmlsZSk7CiYjNDM7CXN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7CiAJdm1fZmF1bHRfdCByZXQ7CiAKJiM0MzsJaWYgKG5pLSZndDttZnRfbm8gPT0gRklMRV9NRlQpIHsKJiM0MzsJCW50ZnNfZXJyb3IoaW5vZGUtJmd0O2lfc2IsICYjMzQ7QXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIHZpYSBtbWFwIGRlbmllZCAobWZ0X25vOiAweCVseCkmIzM0OywKJiM0MzsJCQkJbmktJmd0O21mdF9ubyk7CiYjNDM7CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwomIzQzOwl9CiYjNDM7CiAJc2Jfc3RhcnRfcGFnZWZhdWx0KGlub2RlLSZndDtpX3NiKTsKIAlmaWxlX3VwZGF0ZV90aW1lKHZtZi0mZ3Q7dm1hLSZndDt2bV9maWxlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBXcml0ZSBQcm90ZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZnMvbnRmcy9maWxlLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRpbmcgd3JpdGUgcHJvdGVjdGlvbiBmb3IgdGhlIGAkTUZUYCBmaWxlIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIE1hc3RlciBGaWxlIFRhYmxlLiBGcm9tIHdoYXQgSSBzZWUsIHRoZXkmIzM5O3ZlIGFkZGVkIGNoZWNrcyB3aXRoaW4gYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIGNvZGUgaXMgdmVyaWZ5aW5nIGlmIGBuaS0mZ3Q7bWZ0X25vYCBtYXRjaGVzIGBGSUxFX01GVGAuIElmIGl0IGRvZXMsIGluZGljYXRpbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYCRNRlRgLCB0aGUgcGF0Y2ggcmV0dXJucyBlaXRoZXIgYC1FQUNDRVNgIChwZXJtaXNzaW9uIGRlbmllZCkgb3IgYFZNX0ZBVUxUX1NJR0JVU2AuIFRoaXMgbWFrZXMgc2Vuc2U7IGRpcmVjdCBtb2RpZmljYXRpb24gb2YgdGhlIGAkTUZUYCBjb3VsZCBjb3JydXB0IHRoZSBlbnRpcmUgZmlsZXN5c3RlbS4KCk5vdywgSSB3YW50IHRvIGNvbmZpcm0gYSBmZXcgdGhpbmdzLiBGaXJzdCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgZnMvbnRmcy9maWxlLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBuZXcgY2hlY2tzLiBJ4oCZbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgZnVydGhlciBhbmFseXNpcy4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE5URlMuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgcHJvdGVjdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBlZmZlY3RpdmVuZXNzIG9yIGJlaGF2aW9yIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBhIHByb2JsZW0gaWYgdGhpcyBuZXcgY29kZSBjb25mbGljdGVkIHdpdGggYW55dGhpbmcgZWxzZSwgc28gcmV2aWV3aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsLiBPdmVyYWxsLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgbmVjZXNzYXJ5IGFkZGl0aW9uIHRvIG1haW50YWluIGZpbGUgc3lzdGVtIGludGVncml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5URlMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIGluZGljYXRpbmcgaXQmIzM5O3MgdXNpbmcgdGhlIGBOVEZTX0ZTYCBjb25maWd1cmF0aW9uLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICphbGwqIG9mIGl0PyBUaGVyZSYjMzk7cyBhIG5hZ2dpbmcgZmVlbGluZywgYSBmbGlja2VyIG9mIG1lbW9yeS4uLiB3YXNuJiMzOTt0IHRoZXJlIGFsc28gYSBgTlRGU19SV2Agb3B0aW9uIGtpY2tpbmcgYXJvdW5kPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdC4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gc2NvcGUuIE9rYXksIGJldHRlciBnZXQgb3ZlciB0byBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBzZXR0aW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBidWlsZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgTlRGUy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gaXRzZWxmLiBUaGF0IHdvdWxkIGJlIGBmcy9udGZzL0tjb25maWdgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGUgZXhpc3RlbmNlLCBzdGF0ZSwgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGUgcmVhZC13cml0ZSBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGlvbnMgbmFtZWQgYE5URlNfUldgIGFuZCBgTlRGU19GU19SV2AuIEFyZSB0aGV5IGRlZmluZWQ/IEFyZSB0aGV5IGVuYWJsZWQ/IFdoYXQgb3RoZXIgc2V0dGluZ3MgaW5mbHVlbmNlIHRoZW0/IFRoaXMgaXMgdGhlIHVzdWFsIHNwb3QgdG8gbG9vayBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbnRyb2xzIHRoYXQgZGV0ZXJtaW5lIGlmIHRoZSBOVEZTIGRyaXZlciBpbmNsdWRlcyByZWFkLXdyaXRlIGNhcGFiaWxpdGllcy4gVGltZSB0byBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW5pdGlhbCBSZWFjdGlvbiB0byBOVEZTX1JXIFJlbW92YWwqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgTlRGU19SV2AgaXMgKmdvbmUqPyBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcyBpbW1lZGlhdGVseS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSBhbmQgcG9yZSBvdmVyIGl0IGNvbXBsZXRlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXYXMgaXQgYSBwZXJmb3JtYW5jZSBkZWNpc2lvbj8gU2VjdXJpdHkgdnVsbmVyYWJpbGl0eT8gSXMgaXQgYSBwZXJtYW5lbnQgcmVtb3ZhbCBvciBhIHRlbXBvcmFyeSBkaXNhYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB1c2VycyB3aG8gcmVseSBvbiByZWFkLXdyaXRlIE5URlMgc3VwcG9ydD8gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGRpc3NlY3QgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhpcyB3aWxsIHJlcXVpcmUgYSB0aG9yb3VnaCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSwgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipOVEZTIENvbmZpZ3VyYXRpb24gLSBEZWNvZGluZyB0aGUgS2NvbmZpZyoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFscmVhZHkgZXhwZWN0aW5nIGl0IHRvIG91dGxpbmUgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgaXQgcHJlc2VudHMgdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgdXN1YWwgc3VzcGVjdHM6IHN1cHBvcnQgZm9yIHJlYWQvd3JpdGUgYWNjZXNzLCBleHRlbmRlZCBhdHRyaWJ1dGVzLCBwZXJoYXBzIGV2ZW4gam91cm5hbCByZWNvdmVyeSBvcHRpb25zLiBNeSBnb2FsIGlzIHRvIHNlZSBob3cgdGhlIGRldmVsb3BlcnMgaGF2ZSBiYWxhbmNlZCBmdW5jdGlvbmFsaXR5IHdpdGggcG90ZW50aWFsIHJlc291cmNlIGNvbnN0cmFpbnRzLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGZlYXR1cmVzLiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyByZWdhcmRpbmcgYW55IGNoYW5nZXMgb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIGRyaXZlciBvdmVyIHRoZSBoaXN0b3J5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYW55IHByZXZpb3VzIHdlYWtuZXNzZXMgb3IgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOVEZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBOTFNcbiAgIDU6XHRcdHNlbGVjdCBGU19JT01BUFxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXG4gICA4Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxuICAgOTpcdFxuICAxMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgbnRmcy5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTlRGU19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxuICAxODpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXG4gIDE5Olx0XHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cbiAgMjA6XHRcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXG4gIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uICoqSW52ZXN0aWdhdGluZyBhIFJlbW92ZWQgRmVhdHVyZSoqCgpIbW0sIHNvIGBOVEZTX1JXYCBpcyBubyBsb25nZXIgaW4gYGZzL250ZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgd29uZGVyIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIGlmIGBudGZzX2ZpbGVfd3JpdGVfaXRlcmAgaXMgc3RpbGwgY29tcGlsZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgZnMvbnRmcy9maWxlLmNgIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyB3cml0ZSBvcGVyYXRpb24gaXMgc3RpbGwgcHJlc2VudCBpbiB0aGUgY29kZSwgZXZlbiB3aXRob3V0IHRoZSBhc3NvY2lhdGVkIEtjb25maWcgb3B0aW9uLiBLbm93aW5nIHRoaXMgaGVscHMgbWUgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyByZW1vdmFsLCB3aGV0aGVyIGl0JiMzOTtzIHNpbXBseSBkaXNhYmxpbmcgYSBmZWF0dXJlLCBvciBpZiBpdCBoYXMgcmFtaWZpY2F0aW9ucyBmb3Igb3RoZXIgY29kZSB0aGF0IG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTQ5NT1zdGF0aWMgc3NpemVfdCBudGZzX2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL250ZnMvZmlsZS5jLTUzNy1cbmZzL250ZnMvZmlsZS5jOjUzODpzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbmZzL250ZnMvZmlsZS5jLTUzOS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTE1OT1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG50ZnNfZmlsZV9vcHMgPSB7XG4tLVxuZnMvbnRmcy9maWxlLmMtMTE2MS1cdC5yZWFkX2l0ZXJcdD0gbnRmc19maWxlX3JlYWRfaXRlcixcbmZzL250ZnMvZmlsZS5jOjExNjI6XHQud3JpdGVfaXRlclx0PSBudGZzX2ZpbGVfd3JpdGVfaXRlcixcbmZzL250ZnMvZmlsZS5jLTExNjMtXHQuZnN5bmNcdFx0PSBudGZzX2ZpbGVfZnN5bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIERyaXZlciBDb25mdXNpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGNsYXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBOVEZTIGRyaXZlcnMuIElzIGBmcy9udGZzYCB0aGUgbGVnYWN5IGRyaXZlciwgb3IgaXMgdGhhdCB0aGUgbmV3LCBpbXByb3ZlZCBvbmU/IFJpZ2h0LCB0aGUgbmV3IG9uZSBpcyBkZWZpbml0ZWx5IGBmcy9udGZzM2AuIFNvIHRoYXQgbWFrZXMgYGZzL250ZnNgIHRoZSBvbGRlciBvbmUuIEJ1dCBJJiMzOTttIHJlbWVtYmVyaW5nIHNvbWV0aGluZyBhYm91dCBgZnMvbnRmc2AgaGF2aW5nIGBOVEZTX1JXYCBhdCBzb21lIHBvaW50LiBEaWQgdGhleSBldmVudHVhbGx5IGdldCByaWQgb2YgdGhhdCBkZWZpbmUgYW5kIGp1c3QgbWFrZSBpdCBhbHdheXMgcmVhZC13cml0ZT8gSSBjYW4mIzM5O3QgcXVpdGUgcmVjYWxsLiBUaGUgZWFzaWVzdCB3YXkgdG8gY29uZmlybSB0aGlzIGlzIHRvIGp1c3QgZ28gY2hlY2sgdGhlIGBmcy9udGZzL01ha2VmaWxlYCwgaXQmIzM5O3MgYWxsIGluIHRoZXJlLiBUaW1lIHRvIGRpZyBpbiBhbmQgY29uZmlybSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMwoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTlRGUyBEcml2ZXI6IFdyaXRlIE9wZXJhdGlvbnMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGBmcy9udGZzL2ZpbGUuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIGFuZCBgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZWAgZnVuY3Rpb25zLCB3aGljaCBtZWFucyBpdCYjMzk7cyB0b3VjaGluZyB0aGUgb2xkIE5URlMgZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBmdXp6LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgdGVzdGluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSBOVEZTIHdyaXRlIGl0ZXJhdG9yIOKAkyBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLCB3aGljaCBoYW5kbGVzIHBhZ2UgZmF1bHRzIGR1cmluZyBtbWFwIHdyaXRlcy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB3cml0ZXMsIGJvdGggZGlyZWN0IGFuZCBtZW1vcnktbWFwcGVkLCBhcmUgaGFuZGxlZCBjb3JyZWN0bHksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBjb3JlIGNoZWNrcy4KCkxvb2tpbmcgYXQgdGhlIGNvbmZpZ3MsIEkgc2VlIGl0IG9ubHkgbmVlZHMgYE5URlNfRlNgLCBzbyB0aGF0JiMzOTtzIHNpbXBsZSBlbm91Z2guCgpSZS1leGFtaW5pbmcgdGhlIHBhdGNoLCB0aGVyZSYjMzk7cyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZXJlIHByZXZlbnRpbmcgd3JpdGVzIHRvIHRoZSBgJE1GVGAgZmlsZSB0aHJvdWdoIGVpdGhlciBtZXRob2QuIFRoaXMgcHJvdGVjdGlvbiBpcyBrZXksIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWwgdGhhdCBJIGZ1enogdGhpcyB0byBlbnN1cmUgdGhlIGNoZWNrcyB3b3JrIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiBUaGUgcGF0Y2ggbm93IGNoZWNrcyBmb3IgdGhlIE1GVCBudW1iZXIgYW5kIHJlamVjdHMgd3JpdGVzLgoKU28sIGhlcmUmIzM5O3MgdGhlIHBsYW4uIE15IGZvY3VzIHN5bWJvbHMgYXJlIGRlZmluaXRlbHkgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBUaGUgY29uZmlndXJhdGlvbiBpcyBqdXN0IGBOVEZTX0ZTYC4gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIGAkTUZUYCB3cml0ZSBwcm90ZWN0aW9uIHdvcmtzLiBOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7bnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGZ1bmN0aW9uYWwgY2hlY2tzIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgJE1GVCBmaWxlIHZpYSBkaXJlY3QgZmlsZSB3cml0ZXMgb3IgbWVtb3J5LW1hcHBlZCB3cml0ZXMgaW4gdGhlIE5URlMgZHJpdmVyLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3Mgd2l0aG91dCBjYXVzaW5nIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7bnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGZ1bmN0aW9uYWwgY2hlY2tzIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgJE1GVCBmaWxlIHZpYSBkaXJlY3QgZmlsZSB3cml0ZXMgb3IgbWVtb3J5LW1hcHBlZCB3cml0ZXMgaW4gdGhlIE5URlMgZHJpdmVyLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3Mgd2l0aG91dCBjYXVzaW5nIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MDcuMDMwMDg0NTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2OTAzMjA5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MDcuMDMwMDkwMTI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwMDE2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTI6MTE6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9maWxlLmMgYi9mcy9udGZzL2ZpbGUuY1xcbmluZGV4IDZhN2I2MzhlNTIzZDkxLi4wZDhmMTFlNWNjYjc4YSAxMDA2NDRcXG4tLS0gYS9mcy9udGZzL2ZpbGUuY1xcbisrKyBiL2ZzL250ZnMvZmlsZS5jXFxuQEAgLTU1MCw2ICs1NTAsMTIgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuIFxcdGlmIChOVm9sU2h1dGRvd24odm9sKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbitcXHRpZiAobmktXFx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xcbitcXHRcXHRudGZzX2Vycm9yKHZpLVxcdTAwM2VpX3NiLCBcXFwiQXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIGRlbmllZCAobWZ0X25vOiAweCVseClcXFwiLFxcbitcXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChOSW5vRW5jcnlwdGVkKG5pKSkge1xcbiBcXHRcXHRudGZzX2Vycm9yKHZpLVxcdTAwM2VpX3NiLCBcXFwiV3JpdGluZyBmb3IgJXMgZmlsZXMgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXFwiLFxcbiBcXHRcXHRcXHQgICBOSW5vQ29tcHJlc3NlZChuaSkgPyBcXFwiQ29tcHJlc3NlZFxcXCIgOiBcXFwiRW5jcnlwdGVkXFxcIik7XFxuQEAgLTYxOCw4ICs2MjQsMTUgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuIHN0YXRpYyB2bV9mYXVsdF90IG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIHtcXG4gXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUodm1mLVxcdTAwM2V2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbitcXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xcbiBcXHR2bV9mYXVsdF90IHJldDtcXG4gXFxuK1xcdGlmIChuaS1cXHUwMDNlbWZ0X25vID09IEZJTEVfTUZUKSB7XFxuK1xcdFxcdG50ZnNfZXJyb3IoaW5vZGUtXFx1MDAzZWlfc2IsIFxcXCJBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVxcXCIsXFxuK1xcdFxcdFxcdFxcdG5pLVxcdTAwM2VtZnRfbm8pO1xcbitcXHRcXHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xcbitcXHR9XFxuK1xcbiBcXHRzYl9zdGFydF9wYWdlZmF1bHQoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbiBcXHRmaWxlX3VwZGF0ZV90aW1lKHZtZi1cXHUwMDNldm1hLVxcdTAwM2V2bV9maWxlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjA3LjYxNDM5MTg5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMDU5OTg3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMjoxMTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvZmlsZS5jIGIvZnMvbnRmcy9maWxlLmNcbmluZGV4IDZhN2I2MzhlNTIzZDkxLi4wZDhmMTFlNWNjYjc4YSAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvZmlsZS5jXG4rKysgYi9mcy9udGZzL2ZpbGUuY1xuQEAgLTU1MCw2ICs1NTAsMTIgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4gXHRpZiAoTlZvbFNodXRkb3duKHZvbCkpXG4gXHRcdHJldHVybiAtRUlPO1xuIFxuK1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuK1x0XHRudGZzX2Vycm9yKHZpLVx1MDAzZWlfc2IsIFwiQXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIGRlbmllZCAobWZ0X25vOiAweCVseClcIixcbitcdFx0XHRcdG5pLVx1MDAzZW1mdF9ubyk7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuIFx0aWYgKE5Jbm9FbmNyeXB0ZWQobmkpKSB7XG4gXHRcdG50ZnNfZXJyb3IodmktXHUwMDNlaV9zYiwgXCJXcml0aW5nIGZvciAlcyBmaWxlcyBpcyBub3Qgc3VwcG9ydGVkIHlldFwiLFxuIFx0XHRcdCAgIE5Jbm9Db21wcmVzc2VkKG5pKSA/IFwiQ29tcHJlc3NlZFwiIDogXCJFbmNyeXB0ZWRcIik7XG5AQCAtNjE4LDggKzYyNCwxNSBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbiBzdGF0aWMgdm1fZmF1bHRfdCBudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIHtcbiBcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKHZtZi1cdTAwM2V2bWEtXHUwMDNldm1fZmlsZSk7XG4rXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXG4rXHRpZiAobmktXHUwMDNlbWZ0X25vID09IEZJTEVfTUZUKSB7XG4rXHRcdG50ZnNfZXJyb3IoaW5vZGUtXHUwMDNlaV9zYiwgXCJBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwiLFxuK1x0XHRcdFx0bmktXHUwMDNlbWZ0X25vKTtcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcdH1cbitcbiBcdHNiX3N0YXJ0X3BhZ2VmYXVsdChpbm9kZS1cdTAwM2VpX3NiKTtcbiBcdGZpbGVfdXBkYXRlX3RpbWUodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9maWxlKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjA3LjYxNDM5Mzg5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjkzOTM0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIFdyaXRlIFByb3RlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZnMvbnRmcy9maWxlLmNgLiBJdCBzZWVtcyB0aGV5J3JlIGltcGxlbWVudGluZyB3cml0ZSBwcm90ZWN0aW9uIGZvciB0aGUgYCRNRlRgIGZpbGUgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIFRoZSBjb3JlIGlkZWEgaXMgdG8gcHJldmVudCBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgTWFzdGVyIEZpbGUgVGFibGUuIEZyb20gd2hhdCBJIHNlZSwgdGhleSd2ZSBhZGRlZCBjaGVja3Mgd2l0aGluIGBudGZzX2ZpbGVfd3JpdGVfaXRlcmAgYW5kIGBudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBjb2RlIGlzIHZlcmlmeWluZyBpZiBgbmktXHUwMDNlbWZ0X25vYCBtYXRjaGVzIGBGSUxFX01GVGAuIElmIGl0IGRvZXMsIGluZGljYXRpbmcgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgJE1GVGAsIHRoZSBwYXRjaCByZXR1cm5zIGVpdGhlciBgLUVBQ0NFU2AgKHBlcm1pc3Npb24gZGVuaWVkKSBvciBgVk1fRkFVTFRfU0lHQlVTYC4gVGhpcyBtYWtlcyBzZW5zZTsgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgYCRNRlRgIGNvdWxkIGNvcnJ1cHQgdGhlIGVudGlyZSBmaWxlc3lzdGVtLlxuXG5Ob3csIEkgd2FudCB0byBjb25maXJtIGEgZmV3IHRoaW5ncy4gRmlyc3QsIEknbGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgZnMvbnRmcy9maWxlLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBuZXcgY2hlY2tzLiBJ4oCZbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgZnVydGhlciBhbmFseXNpcy4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE5URlMuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgcHJvdGVjdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBlZmZlY3RpdmVuZXNzIG9yIGJlaGF2aW9yIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBhIHByb2JsZW0gaWYgdGhpcyBuZXcgY29kZSBjb25mbGljdGVkIHdpdGggYW55dGhpbmcgZWxzZSwgc28gcmV2aWV3aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsLiBPdmVyYWxsLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgbmVjZXNzYXJ5IGFkZGl0aW9uIHRvIG1haW50YWluIGZpbGUgc3lzdGVtIGludGVncml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjExLjk4Mzc4OTcwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU3MjYzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTIuMTk5NTI2NjA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNzY5ODM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVEZTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtJ3MgaW5kaWNhdGluZyBpdCdzIHVzaW5nIHRoZSBgTlRGU19GU2AgY29uZmlndXJhdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCAqYWxsKiBvZiBpdD8gVGhlcmUncyBhIG5hZ2dpbmcgZmVlbGluZywgYSBmbGlja2VyIG9mIG1lbW9yeS4uLiB3YXNuJ3QgdGhlcmUgYWxzbyBhIGBOVEZTX1JXYCBvcHRpb24ga2lja2luZyBhcm91bmQ/IExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0LiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBzY29wZS4gT2theSwgYmV0dGVyIGdldCBvdmVyIHRvIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIG9mIHRoZXNlIHNldHRpbmdzLiBMZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTUuMzM3MjI3NTE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg5MzA1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToxNS40OTIxMjg3NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA0Mjk4MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBOVEZTIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcmVsYXRlZCB0byByZWFkL3dyaXRlIHN1cHBvcnQgZm9yIE5URlMuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIGl0c2VsZi4gVGhhdCB3b3VsZCBiZSBgZnMvbnRmcy9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgZXhpc3RlbmNlLCBzdGF0ZSwgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGUgcmVhZC13cml0ZSBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgb3B0aW9ucyBuYW1lZCBgTlRGU19SV2AgYW5kIGBOVEZTX0ZTX1JXYC4gQXJlIHRoZXkgZGVmaW5lZD8gQXJlIHRoZXkgZW5hYmxlZD8gV2hhdCBvdGhlciBzZXR0aW5ncyBpbmZsdWVuY2UgdGhlbT8gVGhpcyBpcyB0aGUgdXN1YWwgc3BvdCB0byBsb29rIGZvciB0aGUgZnVuZGFtZW50YWwgY29udHJvbHMgdGhhdCBkZXRlcm1pbmUgaWYgdGhlIE5URlMgZHJpdmVyIGluY2x1ZGVzIHJlYWQtd3JpdGUgY2FwYWJpbGl0aWVzLiBUaW1lIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTguMjk2NDI5MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNjU2Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTguNTI4MDkyMjg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDcxNTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkluaXRpYWwgUmVhY3Rpb24gdG8gTlRGU19SVyBSZW1vdmFsKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgTlRGU19SV2AgaXMgKmdvbmUqPyBUaGF0J3MgYSBzaWduaWZpY2FudCBjaGFuZ2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIGltbWVkaWF0ZWx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUgYW5kIHBvcmUgb3ZlciBpdCBjb21wbGV0ZWx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIGNoYW5nZSB3YXMgbWFkZS4gV2FzIGl0IGEgcGVyZm9ybWFuY2UgZGVjaXNpb24/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IElzIGl0IGEgcGVybWFuZW50IHJlbW92YWwgb3IgYSB0ZW1wb3JhcnkgZGlzYWJsZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdXNlcnMgd2hvIHJlbHkgb24gcmVhZC13cml0ZSBOVEZTIHN1cHBvcnQ/IFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBkaXNzZWN0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCByZXF1aXJlIGEgdGhvcm91Z2ggZXhhbWluYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToyMi4yNTI4MTEwNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTM5NjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjIuNDE0MjEzNzIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDQwOTI0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGBmcy9udGZzL0tjb25maWdgIGZpbGUsIGFzIEkgdW5kZXJzdGFuZCBpdDpcblxuKipOVEZTIENvbmZpZ3VyYXRpb24gLSBEZWNvZGluZyB0aGUgS2NvbmZpZyoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFscmVhZHkgZXhwZWN0aW5nIGl0IHRvIG91dGxpbmUgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGZvY3VzaW5nIG9uIGhvdyBpdCBwcmVzZW50cyB0aGUgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5LiBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBzdXBwb3J0IGZvciByZWFkL3dyaXRlIGFjY2VzcywgZXh0ZW5kZWQgYXR0cmlidXRlcywgcGVyaGFwcyBldmVuIGpvdXJuYWwgcmVjb3Zlcnkgb3B0aW9ucy4gTXkgZ29hbCBpcyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgYmFsYW5jZWQgZnVuY3Rpb25hbGl0eSB3aXRoIHBvdGVudGlhbCByZXNvdXJjZSBjb25zdHJhaW50cy4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGZlYXR1cmVzLiBGaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBhbnkgY2hhbmdlcyBvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgZHJpdmVyIG92ZXIgdGhlIGhpc3Rvcnkgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgd2FudCB0byBzZWUgaWYgdGhleSdyZSBhZGRyZXNzaW5nIGFueSBwcmV2aW91cyB3ZWFrbmVzc2VzIG9yIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjUuMzE4MzA5Mzg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVEZTX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cXG4gICA4OlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMTpcXHRcXHQgIG50ZnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBOVEZTX0RFQlVHXFxuICAxNDpcXHRcXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcXG4gIDE4OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxcbiAgMTk6XFx0XFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXFxuICAyMDpcXHRcXHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxcbiAgMjE6XFx0XFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxcbiAgMjI6XFx0XFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cXG4gIDIzOlxcdFxcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxcbiAgMjQ6XFx0XFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxcbiAgMjU6XFx0XFx0ICBlY2hvIDEgXFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xcbiAgMjY6XFx0XFx0ICBSZXBsYWNpbmcgdGhlIFxcXCIxXFxcIiB3aXRoIFxcXCIwXFxcIiB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcXG4gIDI5OlxcdFxcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcXG4gIDMwOlxcdFxcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXFxuICAzMzpcXHRcXHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMzg6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcXG4gIDQxOlxcdFxcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XFxuICA0NDpcXHRcXHQgIHdpdGggbnRmczMgZHJpdmllci5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjUuMzE4Mzk4NjU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY2Nzg2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiAqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIEZlYXR1cmUqKlxuXG5IbW0sIHNvIGBOVEZTX1JXYCBpcyBubyBsb25nZXIgaW4gYGZzL250ZnMvS2NvbmZpZ2AuIFRoYXQncyBpbnRlcmVzdGluZy4gSSB3b25kZXIgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgaWYgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBpcyBzdGlsbCBjb21waWxlZC4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvZmlsZS5jYCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd3JpdGUgb3BlcmF0aW9uIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIGNvZGUsIGV2ZW4gd2l0aG91dCB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIG9wdGlvbi4gS25vd2luZyB0aGlzIGhlbHBzIG1lIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIHRoaXMgcmVtb3ZhbCwgd2hldGhlciBpdCdzIHNpbXBseSBkaXNhYmxpbmcgYSBmZWF0dXJlLCBvciBpZiBpdCBoYXMgcmFtaWZpY2F0aW9ucyBmb3Igb3RoZXIgY29kZSB0aGF0IG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODM5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToyOC4zNTUwODAwMzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTE1NjczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2ZpbGVfd3JpdGVfaXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz00OTU9c3RhdGljIHNzaXplX3QgbnRmc19kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTUzNy1cXG5mcy9udGZzL2ZpbGUuYzo1Mzg6c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuZnMvbnRmcy9maWxlLmMtNTM5LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTExNTk9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTE2MS1cXHQucmVhZF9pdGVyXFx0PSBudGZzX2ZpbGVfcmVhZF9pdGVyLFxcbmZzL250ZnMvZmlsZS5jOjExNjI6XFx0LndyaXRlX2l0ZXJcXHQ9IG50ZnNfZmlsZV93cml0ZV9pdGVyLFxcbmZzL250ZnMvZmlsZS5jLTExNjMtXFx0LmZzeW5jXFx0XFx0PSBudGZzX2ZpbGVfZnN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjI4LjU2NjI0MjQ2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc1MjQyNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5URlMgRHJpdmVyIENvbmZ1c2lvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTlRGUyBkcml2ZXJzLiBJcyBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXIsIG9yIGlzIHRoYXQgdGhlIG5ldywgaW1wcm92ZWQgb25lPyBSaWdodCwgdGhlIG5ldyBvbmUgaXMgZGVmaW5pdGVseSBgZnMvbnRmczNgLiBTbyB0aGF0IG1ha2VzIGBmcy9udGZzYCB0aGUgb2xkZXIgb25lLiBCdXQgSSdtIHJlbWVtYmVyaW5nIHNvbWV0aGluZyBhYm91dCBgZnMvbnRmc2AgaGF2aW5nIGBOVEZTX1JXYCBhdCBzb21lIHBvaW50LiBEaWQgdGhleSBldmVudHVhbGx5IGdldCByaWQgb2YgdGhhdCBkZWZpbmUgYW5kIGp1c3QgbWFrZSBpdCBhbHdheXMgcmVhZC13cml0ZT8gSSBjYW4ndCBxdWl0ZSByZWNhbGwuIFRoZSBlYXNpZXN0IHdheSB0byBjb25maXJtIHRoaXMgaXMgdG8ganVzdCBnbyBjaGVjayB0aGUgYGZzL250ZnMvTWFrZWZpbGVgLCBpdCdzIGFsbCBpbiB0aGVyZS4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozMi4zNDE0ODgwNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozMi4zNDE2MTEyMDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3MDgxMDgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBOVEZTIERyaXZlcjogV3JpdGUgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBgZnMvbnRmcy9maWxlLmNgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgIGZ1bmN0aW9ucywgd2hpY2ggbWVhbnMgaXQncyB0b3VjaGluZyB0aGUgb2xkIE5URlMgZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBmdXp6LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIOKAkyB0aGF0J3MgdGhlIE5URlMgd3JpdGUgaXRlcmF0b3Ig4oCTIGFuZCBgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZWAsIHdoaWNoIGhhbmRsZXMgcGFnZSBmYXVsdHMgZHVyaW5nIG1tYXAgd3JpdGVzLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHdyaXRlcywgYm90aCBkaXJlY3QgYW5kIG1lbW9yeS1tYXBwZWQsIGFyZSBoYW5kbGVkIGNvcnJlY3RseSwgZXNwZWNpYWxseSBhcm91bmQgdGhlIGNvcmUgY2hlY2tzLlxuXG5Mb29raW5nIGF0IHRoZSBjb25maWdzLCBJIHNlZSBpdCBvbmx5IG5lZWRzIGBOVEZTX0ZTYCwgc28gdGhhdCdzIHNpbXBsZSBlbm91Z2guXG5cblJlLWV4YW1pbmluZyB0aGUgcGF0Y2gsIHRoZXJlJ3MgYSBjcml0aWNhbCBjaGVjayBpbiB0aGVyZSBwcmV2ZW50aW5nIHdyaXRlcyB0byB0aGUgYCRNRlRgIGZpbGUgdGhyb3VnaCBlaXRoZXIgbWV0aG9kLiBUaGlzIHByb3RlY3Rpb24gaXMga2V5LCBhbmQgaXQncyBlc3NlbnRpYWwgdGhhdCBJIGZ1enogdGhpcyB0byBlbnN1cmUgdGhlIGNoZWNrcyB3b3JrIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuIFRoZSBwYXRjaCBub3cgY2hlY2tzIGZvciB0aGUgTUZUIG51bWJlciBhbmQgcmVqZWN0cyB3cml0ZXMuXG5cblNvLCBoZXJlJ3MgdGhlIHBsYW4uIE15IGZvY3VzIHN5bWJvbHMgYXJlIGRlZmluaXRlbHkgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBUaGUgY29uZmlndXJhdGlvbiBpcyBqdXN0IGBOVEZTX0ZTYC4gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIGAkTUZUYCB3cml0ZSBwcm90ZWN0aW9uIHdvcmtzLiBOb3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgzMywiT3V0cHV0VG9rZW5zIjoxMTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozOS40MTI0MjQ5ODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc5NTkwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2ZpbGVfd3JpdGVfaXRlclwiLFxuICAgIFwibnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowcx4hz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 11:49:44 +0000 UTC FinishedAt: 2026-07-02 12:11:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "4b2b7ea2-812e-4251-903a-962ca626d4bc" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_file_write_iter", "ntfs_filemap_page_mkwrite" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMjoxMTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2ZpbGUuYyBiL2ZzL250ZnMvZmlsZS5jXG5pbmRleCA2YTdiNjM4ZTUyM2Q5MS4uMGQ4ZjExZTVjY2I3OGEgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2ZpbGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9maWxlLmNcbkBAIC01NTAsNiAmIzQzOzU1MCwxMiBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbiBcdGlmIChOVm9sU2h1dGRvd24odm9sKSlcbiBcdFx0cmV0dXJuIC1FSU87XG4gXG4mIzQzO1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuJiM0MztcdFx0bnRmc19lcnJvcih2aS1cdTAwM2VpX3NiLCBcJiMzNDtBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8pO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChOSW5vRW5jcnlwdGVkKG5pKSkge1xuIFx0XHRudGZzX2Vycm9yKHZpLVx1MDAzZWlfc2IsIFwmIzM0O1dyaXRpbmcgZm9yICVzIGZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCYjMzQ7LFxuIFx0XHRcdCAgIE5Jbm9Db21wcmVzc2VkKG5pKSA/IFwmIzM0O0NvbXByZXNzZWRcJiMzNDsgOiBcJiMzNDtFbmNyeXB0ZWRcJiMzNDspO1xuQEAgLTYxOCw4ICYjNDM7NjI0LDE1IEBAIHN0YXRpYyBzc2l6ZV90IG50ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuIHN0YXRpYyB2bV9mYXVsdF90IG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4ge1xuIFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9maWxlKTtcbiYjNDM7XHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXG4mIzQzO1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuJiM0MztcdFx0bnRmc19lcnJvcihpbm9kZS1cdTAwM2VpX3NiLCBcJiMzNDtBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8pO1xuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c2Jfc3RhcnRfcGFnZWZhdWx0KGlub2RlLVx1MDAzZWlfc2IpO1xuIFx0ZmlsZV91cGRhdGVfdGltZSh2bWYtXHUwMDNldm1hLVx1MDAzZXZtX2ZpbGUpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICAgJiMzNDtudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ0NmI5M2M5Zjk4ZTU0OGIwYjc3YjJjYmJmMjY5Yjg0MDY0NDRmMzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDEyOjExOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9maWxlLmMgYi9mcy9udGZzL2ZpbGUuYwppbmRleCA2YTdiNjM4ZTUyM2Q5MS4uMGQ4ZjExZTVjY2I3OGEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvZmlsZS5jCkBAIC01NTAsNiAmIzQzOzU1MCwxMiBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkKIAlpZiAoTlZvbFNodXRkb3duKHZvbCkpCiAJCXJldHVybiAtRUlPOwogCiYjNDM7CWlmIChuaS0mZ3Q7bWZ0X25vID09IEZJTEVfTUZUKSB7CiYjNDM7CQludGZzX2Vycm9yKHZpLSZndDtpX3NiLCAmIzM0O0F0dGVtcHQgdG8gd3JpdGUgdG8gJE1GVCBkZW5pZWQgKG1mdF9ubzogMHglbHgpJiMzNDssCiYjNDM7CQkJCW5pLSZndDttZnRfbm8pOwomIzQzOwkJcmV0dXJuIC1FQUNDRVM7CiYjNDM7CX0KJiM0MzsKIAlpZiAoTklub0VuY3J5cHRlZChuaSkpIHsKIAkJbnRmc19lcnJvcih2aS0mZ3Q7aV9zYiwgJiMzNDtXcml0aW5nIGZvciAlcyBmaWxlcyBpcyBub3Qgc3VwcG9ydGVkIHlldCYjMzQ7LAogCQkJICAgTklub0NvbXByZXNzZWQobmkpID8gJiMzNDtDb21wcmVzc2VkJiMzNDsgOiAmIzM0O0VuY3J5cHRlZCYjMzQ7KTsKQEAgLTYxOCw4ICYjNDM7NjI0LDE1IEBAIHN0YXRpYyBzc2l6ZV90IG50ZnNfZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKQogc3RhdGljIHZtX2ZhdWx0X3QgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZSh2bWYtJmd0O3ZtYS0mZ3Q7dm1fZmlsZSk7CiYjNDM7CXN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7CiAJdm1fZmF1bHRfdCByZXQ7CiAKJiM0MzsJaWYgKG5pLSZndDttZnRfbm8gPT0gRklMRV9NRlQpIHsKJiM0MzsJCW50ZnNfZXJyb3IoaW5vZGUtJmd0O2lfc2IsICYjMzQ7QXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIHZpYSBtbWFwIGRlbmllZCAobWZ0X25vOiAweCVseCkmIzM0OywKJiM0MzsJCQkJbmktJmd0O21mdF9ubyk7CiYjNDM7CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwomIzQzOwl9CiYjNDM7CiAJc2Jfc3RhcnRfcGFnZWZhdWx0KGlub2RlLSZndDtpX3NiKTsKIAlmaWxlX3VwZGF0ZV90aW1lKHZtZi0mZ3Q7dm1hLSZndDt2bV9maWxlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBXcml0ZSBQcm90ZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZnMvbnRmcy9maWxlLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRpbmcgd3JpdGUgcHJvdGVjdGlvbiBmb3IgdGhlIGAkTUZUYCBmaWxlIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIE1hc3RlciBGaWxlIFRhYmxlLiBGcm9tIHdoYXQgSSBzZWUsIHRoZXkmIzM5O3ZlIGFkZGVkIGNoZWNrcyB3aXRoaW4gYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIGNvZGUgaXMgdmVyaWZ5aW5nIGlmIGBuaS0mZ3Q7bWZ0X25vYCBtYXRjaGVzIGBGSUxFX01GVGAuIElmIGl0IGRvZXMsIGluZGljYXRpbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYCRNRlRgLCB0aGUgcGF0Y2ggcmV0dXJucyBlaXRoZXIgYC1FQUNDRVNgIChwZXJtaXNzaW9uIGRlbmllZCkgb3IgYFZNX0ZBVUxUX1NJR0JVU2AuIFRoaXMgbWFrZXMgc2Vuc2U7IGRpcmVjdCBtb2RpZmljYXRpb24gb2YgdGhlIGAkTUZUYCBjb3VsZCBjb3JydXB0IHRoZSBlbnRpcmUgZmlsZXN5c3RlbS4KCk5vdywgSSB3YW50IHRvIGNvbmZpcm0gYSBmZXcgdGhpbmdzLiBGaXJzdCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgZnMvbnRmcy9maWxlLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBuZXcgY2hlY2tzLiBJ4oCZbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgZnVydGhlciBhbmFseXNpcy4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE5URlMuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgcHJvdGVjdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBlZmZlY3RpdmVuZXNzIG9yIGJlaGF2aW9yIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBhIHByb2JsZW0gaWYgdGhpcyBuZXcgY29kZSBjb25mbGljdGVkIHdpdGggYW55dGhpbmcgZWxzZSwgc28gcmV2aWV3aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsLiBPdmVyYWxsLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgbmVjZXNzYXJ5IGFkZGl0aW9uIHRvIG1haW50YWluIGZpbGUgc3lzdGVtIGludGVncml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5URlMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIGluZGljYXRpbmcgaXQmIzM5O3MgdXNpbmcgdGhlIGBOVEZTX0ZTYCBjb25maWd1cmF0aW9uLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICphbGwqIG9mIGl0PyBUaGVyZSYjMzk7cyBhIG5hZ2dpbmcgZmVlbGluZywgYSBmbGlja2VyIG9mIG1lbW9yeS4uLiB3YXNuJiMzOTt0IHRoZXJlIGFsc28gYSBgTlRGU19SV2Agb3B0aW9uIGtpY2tpbmcgYXJvdW5kPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdC4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gc2NvcGUuIE9rYXksIGJldHRlciBnZXQgb3ZlciB0byBgZnMvbnRmcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBzZXR0aW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBidWlsZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgTlRGUy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gaXRzZWxmLiBUaGF0IHdvdWxkIGJlIGBmcy9udGZzL0tjb25maWdgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGUgZXhpc3RlbmNlLCBzdGF0ZSwgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGUgcmVhZC13cml0ZSBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGlvbnMgbmFtZWQgYE5URlNfUldgIGFuZCBgTlRGU19GU19SV2AuIEFyZSB0aGV5IGRlZmluZWQ/IEFyZSB0aGV5IGVuYWJsZWQ/IFdoYXQgb3RoZXIgc2V0dGluZ3MgaW5mbHVlbmNlIHRoZW0/IFRoaXMgaXMgdGhlIHVzdWFsIHNwb3QgdG8gbG9vayBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbnRyb2xzIHRoYXQgZGV0ZXJtaW5lIGlmIHRoZSBOVEZTIGRyaXZlciBpbmNsdWRlcyByZWFkLXdyaXRlIGNhcGFiaWxpdGllcy4gVGltZSB0byBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW5pdGlhbCBSZWFjdGlvbiB0byBOVEZTX1JXIFJlbW92YWwqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgTlRGU19SV2AgaXMgKmdvbmUqPyBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcyBpbW1lZGlhdGVseS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSBhbmQgcG9yZSBvdmVyIGl0IGNvbXBsZXRlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXYXMgaXQgYSBwZXJmb3JtYW5jZSBkZWNpc2lvbj8gU2VjdXJpdHkgdnVsbmVyYWJpbGl0eT8gSXMgaXQgYSBwZXJtYW5lbnQgcmVtb3ZhbCBvciBhIHRlbXBvcmFyeSBkaXNhYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB1c2VycyB3aG8gcmVseSBvbiByZWFkLXdyaXRlIE5URlMgc3VwcG9ydD8gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGRpc3NlY3QgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhpcyB3aWxsIHJlcXVpcmUgYSB0aG9yb3VnaCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSwgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipOVEZTIENvbmZpZ3VyYXRpb24gLSBEZWNvZGluZyB0aGUgS2NvbmZpZyoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFscmVhZHkgZXhwZWN0aW5nIGl0IHRvIG91dGxpbmUgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgaXQgcHJlc2VudHMgdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgdXN1YWwgc3VzcGVjdHM6IHN1cHBvcnQgZm9yIHJlYWQvd3JpdGUgYWNjZXNzLCBleHRlbmRlZCBhdHRyaWJ1dGVzLCBwZXJoYXBzIGV2ZW4gam91cm5hbCByZWNvdmVyeSBvcHRpb25zLiBNeSBnb2FsIGlzIHRvIHNlZSBob3cgdGhlIGRldmVsb3BlcnMgaGF2ZSBiYWxhbmNlZCBmdW5jdGlvbmFsaXR5IHdpdGggcG90ZW50aWFsIHJlc291cmNlIGNvbnN0cmFpbnRzLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGZlYXR1cmVzLiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyByZWdhcmRpbmcgYW55IGNoYW5nZXMgb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIGRyaXZlciBvdmVyIHRoZSBoaXN0b3J5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYW55IHByZXZpb3VzIHdlYWtuZXNzZXMgb3IgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOVEZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBOTFNcbiAgIDU6XHRcdHNlbGVjdCBGU19JT01BUFxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXG4gICA4Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxuICAgOTpcdFxuICAxMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgbnRmcy5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTlRGU19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxuICAxODpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXG4gIDE5Olx0XHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cbiAgMjA6XHRcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXG4gIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uICoqSW52ZXN0aWdhdGluZyBhIFJlbW92ZWQgRmVhdHVyZSoqCgpIbW0sIHNvIGBOVEZTX1JXYCBpcyBubyBsb25nZXIgaW4gYGZzL250ZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgd29uZGVyIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIGlmIGBudGZzX2ZpbGVfd3JpdGVfaXRlcmAgaXMgc3RpbGwgY29tcGlsZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgZnMvbnRmcy9maWxlLmNgIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyB3cml0ZSBvcGVyYXRpb24gaXMgc3RpbGwgcHJlc2VudCBpbiB0aGUgY29kZSwgZXZlbiB3aXRob3V0IHRoZSBhc3NvY2lhdGVkIEtjb25maWcgb3B0aW9uLiBLbm93aW5nIHRoaXMgaGVscHMgbWUgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyByZW1vdmFsLCB3aGV0aGVyIGl0JiMzOTtzIHNpbXBseSBkaXNhYmxpbmcgYSBmZWF0dXJlLCBvciBpZiBpdCBoYXMgcmFtaWZpY2F0aW9ucyBmb3Igb3RoZXIgY29kZSB0aGF0IG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2ZpbGVfd3JpdGVfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTQ5NT1zdGF0aWMgc3NpemVfdCBudGZzX2Rpb193cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL250ZnMvZmlsZS5jLTUzNy1cbmZzL250ZnMvZmlsZS5jOjUzODpzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbmZzL250ZnMvZmlsZS5jLTUzOS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTE1OT1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG50ZnNfZmlsZV9vcHMgPSB7XG4tLVxuZnMvbnRmcy9maWxlLmMtMTE2MS1cdC5yZWFkX2l0ZXJcdD0gbnRmc19maWxlX3JlYWRfaXRlcixcbmZzL250ZnMvZmlsZS5jOjExNjI6XHQud3JpdGVfaXRlclx0PSBudGZzX2ZpbGVfd3JpdGVfaXRlcixcbmZzL250ZnMvZmlsZS5jLTExNjMtXHQuZnN5bmNcdFx0PSBudGZzX2ZpbGVfZnN5bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIERyaXZlciBDb25mdXNpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGNsYXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBOVEZTIGRyaXZlcnMuIElzIGBmcy9udGZzYCB0aGUgbGVnYWN5IGRyaXZlciwgb3IgaXMgdGhhdCB0aGUgbmV3LCBpbXByb3ZlZCBvbmU/IFJpZ2h0LCB0aGUgbmV3IG9uZSBpcyBkZWZpbml0ZWx5IGBmcy9udGZzM2AuIFNvIHRoYXQgbWFrZXMgYGZzL250ZnNgIHRoZSBvbGRlciBvbmUuIEJ1dCBJJiMzOTttIHJlbWVtYmVyaW5nIHNvbWV0aGluZyBhYm91dCBgZnMvbnRmc2AgaGF2aW5nIGBOVEZTX1JXYCBhdCBzb21lIHBvaW50LiBEaWQgdGhleSBldmVudHVhbGx5IGdldCByaWQgb2YgdGhhdCBkZWZpbmUgYW5kIGp1c3QgbWFrZSBpdCBhbHdheXMgcmVhZC13cml0ZT8gSSBjYW4mIzM5O3QgcXVpdGUgcmVjYWxsLiBUaGUgZWFzaWVzdCB3YXkgdG8gY29uZmlybSB0aGlzIGlzIHRvIGp1c3QgZ28gY2hlY2sgdGhlIGBmcy9udGZzL01ha2VmaWxlYCwgaXQmIzM5O3MgYWxsIGluIHRoZXJlLiBUaW1lIHRvIGRpZyBpbiBhbmQgY29uZmlybSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMwoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTlRGUyBEcml2ZXI6IFdyaXRlIE9wZXJhdGlvbnMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGBmcy9udGZzL2ZpbGUuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIGFuZCBgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZWAgZnVuY3Rpb25zLCB3aGljaCBtZWFucyBpdCYjMzk7cyB0b3VjaGluZyB0aGUgb2xkIE5URlMgZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBmdXp6LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgdGVzdGluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSBOVEZTIHdyaXRlIGl0ZXJhdG9yIOKAkyBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLCB3aGljaCBoYW5kbGVzIHBhZ2UgZmF1bHRzIGR1cmluZyBtbWFwIHdyaXRlcy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB3cml0ZXMsIGJvdGggZGlyZWN0IGFuZCBtZW1vcnktbWFwcGVkLCBhcmUgaGFuZGxlZCBjb3JyZWN0bHksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBjb3JlIGNoZWNrcy4KCkxvb2tpbmcgYXQgdGhlIGNvbmZpZ3MsIEkgc2VlIGl0IG9ubHkgbmVlZHMgYE5URlNfRlNgLCBzbyB0aGF0JiMzOTtzIHNpbXBsZSBlbm91Z2guCgpSZS1leGFtaW5pbmcgdGhlIHBhdGNoLCB0aGVyZSYjMzk7cyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZXJlIHByZXZlbnRpbmcgd3JpdGVzIHRvIHRoZSBgJE1GVGAgZmlsZSB0aHJvdWdoIGVpdGhlciBtZXRob2QuIFRoaXMgcHJvdGVjdGlvbiBpcyBrZXksIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWwgdGhhdCBJIGZ1enogdGhpcyB0byBlbnN1cmUgdGhlIGNoZWNrcyB3b3JrIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiBUaGUgcGF0Y2ggbm93IGNoZWNrcyBmb3IgdGhlIE1GVCBudW1iZXIgYW5kIHJlamVjdHMgd3JpdGVzLgoKU28sIGhlcmUmIzM5O3MgdGhlIHBsYW4uIE15IGZvY3VzIHN5bWJvbHMgYXJlIGRlZmluaXRlbHkgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBUaGUgY29uZmlndXJhdGlvbiBpcyBqdXN0IGBOVEZTX0ZTYC4gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIGAkTUZUYCB3cml0ZSBwcm90ZWN0aW9uIHdvcmtzLiBOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7bnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGZ1bmN0aW9uYWwgY2hlY2tzIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgJE1GVCBmaWxlIHZpYSBkaXJlY3QgZmlsZSB3cml0ZXMgb3IgbWVtb3J5LW1hcHBlZCB3cml0ZXMgaW4gdGhlIE5URlMgZHJpdmVyLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3Mgd2l0aG91dCBjYXVzaW5nIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19maWxlX3dyaXRlX2l0ZXImIzM0OywKICAgICYjMzQ7bnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGZ1bmN0aW9uYWwgY2hlY2tzIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgJE1GVCBmaWxlIHZpYSBkaXJlY3QgZmlsZSB3cml0ZXMgb3IgbWVtb3J5LW1hcHBlZCB3cml0ZXMgaW4gdGhlIE5URlMgZHJpdmVyLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3Mgd2l0aG91dCBjYXVzaW5nIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MDcuMDMwMDg0NTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2OTAzMjA5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MDcuMDMwMDkwMTI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwMDE2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTI6MTE6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9maWxlLmMgYi9mcy9udGZzL2ZpbGUuY1xcbmluZGV4IDZhN2I2MzhlNTIzZDkxLi4wZDhmMTFlNWNjYjc4YSAxMDA2NDRcXG4tLS0gYS9mcy9udGZzL2ZpbGUuY1xcbisrKyBiL2ZzL250ZnMvZmlsZS5jXFxuQEAgLTU1MCw2ICs1NTAsMTIgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuIFxcdGlmIChOVm9sU2h1dGRvd24odm9sKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbitcXHRpZiAobmktXFx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xcbitcXHRcXHRudGZzX2Vycm9yKHZpLVxcdTAwM2VpX3NiLCBcXFwiQXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIGRlbmllZCAobWZ0X25vOiAweCVseClcXFwiLFxcbitcXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChOSW5vRW5jcnlwdGVkKG5pKSkge1xcbiBcXHRcXHRudGZzX2Vycm9yKHZpLVxcdTAwM2VpX3NiLCBcXFwiV3JpdGluZyBmb3IgJXMgZmlsZXMgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXFwiLFxcbiBcXHRcXHRcXHQgICBOSW5vQ29tcHJlc3NlZChuaSkgPyBcXFwiQ29tcHJlc3NlZFxcXCIgOiBcXFwiRW5jcnlwdGVkXFxcIik7XFxuQEAgLTYxOCw4ICs2MjQsMTUgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuIHN0YXRpYyB2bV9mYXVsdF90IG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIHtcXG4gXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUodm1mLVxcdTAwM2V2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbitcXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xcbiBcXHR2bV9mYXVsdF90IHJldDtcXG4gXFxuK1xcdGlmIChuaS1cXHUwMDNlbWZ0X25vID09IEZJTEVfTUZUKSB7XFxuK1xcdFxcdG50ZnNfZXJyb3IoaW5vZGUtXFx1MDAzZWlfc2IsIFxcXCJBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVxcXCIsXFxuK1xcdFxcdFxcdFxcdG5pLVxcdTAwM2VtZnRfbm8pO1xcbitcXHRcXHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xcbitcXHR9XFxuK1xcbiBcXHRzYl9zdGFydF9wYWdlZmF1bHQoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbiBcXHRmaWxlX3VwZGF0ZV90aW1lKHZtZi1cXHUwMDNldm1hLVxcdTAwM2V2bV9maWxlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjA3LjYxNDM5MTg5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMDU5OTg3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNDZiOTNjOWY5OGU1NDhiMGI3N2IyY2JiZjI2OWI4NDA2NDQ0ZjMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMjoxMTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvZmlsZS5jIGIvZnMvbnRmcy9maWxlLmNcbmluZGV4IDZhN2I2MzhlNTIzZDkxLi4wZDhmMTFlNWNjYjc4YSAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvZmlsZS5jXG4rKysgYi9mcy9udGZzL2ZpbGUuY1xuQEAgLTU1MCw2ICs1NTAsMTIgQEAgc3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4gXHRpZiAoTlZvbFNodXRkb3duKHZvbCkpXG4gXHRcdHJldHVybiAtRUlPO1xuIFxuK1x0aWYgKG5pLVx1MDAzZW1mdF9ubyA9PSBGSUxFX01GVCkge1xuK1x0XHRudGZzX2Vycm9yKHZpLVx1MDAzZWlfc2IsIFwiQXR0ZW1wdCB0byB3cml0ZSB0byAkTUZUIGRlbmllZCAobWZ0X25vOiAweCVseClcIixcbitcdFx0XHRcdG5pLVx1MDAzZW1mdF9ubyk7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuIFx0aWYgKE5Jbm9FbmNyeXB0ZWQobmkpKSB7XG4gXHRcdG50ZnNfZXJyb3IodmktXHUwMDNlaV9zYiwgXCJXcml0aW5nIGZvciAlcyBmaWxlcyBpcyBub3Qgc3VwcG9ydGVkIHlldFwiLFxuIFx0XHRcdCAgIE5Jbm9Db21wcmVzc2VkKG5pKSA/IFwiQ29tcHJlc3NlZFwiIDogXCJFbmNyeXB0ZWRcIik7XG5AQCAtNjE4LDggKzYyNCwxNSBAQCBzdGF0aWMgc3NpemVfdCBudGZzX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbiBzdGF0aWMgdm1fZmF1bHRfdCBudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIHtcbiBcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKHZtZi1cdTAwM2V2bWEtXHUwMDNldm1fZmlsZSk7XG4rXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4gXG4rXHRpZiAobmktXHUwMDNlbWZ0X25vID09IEZJTEVfTUZUKSB7XG4rXHRcdG50ZnNfZXJyb3IoaW5vZGUtXHUwMDNlaV9zYiwgXCJBdHRlbXB0IHRvIHdyaXRlIHRvICRNRlQgdmlhIG1tYXAgZGVuaWVkIChtZnRfbm86IDB4JWx4KVwiLFxuK1x0XHRcdFx0bmktXHUwMDNlbWZ0X25vKTtcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcdH1cbitcbiBcdHNiX3N0YXJ0X3BhZ2VmYXVsdChpbm9kZS1cdTAwM2VpX3NiKTtcbiBcdGZpbGVfdXBkYXRlX3RpbWUodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9maWxlKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjA3LjYxNDM5Mzg5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjkzOTM0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIFdyaXRlIFByb3RlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZnMvbnRmcy9maWxlLmNgLiBJdCBzZWVtcyB0aGV5J3JlIGltcGxlbWVudGluZyB3cml0ZSBwcm90ZWN0aW9uIGZvciB0aGUgYCRNRlRgIGZpbGUgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIFRoZSBjb3JlIGlkZWEgaXMgdG8gcHJldmVudCBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgTWFzdGVyIEZpbGUgVGFibGUuIEZyb20gd2hhdCBJIHNlZSwgdGhleSd2ZSBhZGRlZCBjaGVja3Mgd2l0aGluIGBudGZzX2ZpbGVfd3JpdGVfaXRlcmAgYW5kIGBudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBjb2RlIGlzIHZlcmlmeWluZyBpZiBgbmktXHUwMDNlbWZ0X25vYCBtYXRjaGVzIGBGSUxFX01GVGAuIElmIGl0IGRvZXMsIGluZGljYXRpbmcgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgJE1GVGAsIHRoZSBwYXRjaCByZXR1cm5zIGVpdGhlciBgLUVBQ0NFU2AgKHBlcm1pc3Npb24gZGVuaWVkKSBvciBgVk1fRkFVTFRfU0lHQlVTYC4gVGhpcyBtYWtlcyBzZW5zZTsgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgYCRNRlRgIGNvdWxkIGNvcnJ1cHQgdGhlIGVudGlyZSBmaWxlc3lzdGVtLlxuXG5Ob3csIEkgd2FudCB0byBjb25maXJtIGEgZmV3IHRoaW5ncy4gRmlyc3QsIEknbGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgZnMvbnRmcy9maWxlLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBuZXcgY2hlY2tzLiBJ4oCZbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgZnVydGhlciBhbmFseXNpcy4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE5URlMuIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgcHJvdGVjdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBlZmZlY3RpdmVuZXNzIG9yIGJlaGF2aW9yIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBhIHByb2JsZW0gaWYgdGhpcyBuZXcgY29kZSBjb25mbGljdGVkIHdpdGggYW55dGhpbmcgZWxzZSwgc28gcmV2aWV3aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsLiBPdmVyYWxsLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgbmVjZXNzYXJ5IGFkZGl0aW9uIHRvIG1haW50YWluIGZpbGUgc3lzdGVtIGludGVncml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjExLjk4Mzc4OTcwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU3MjYzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTIuMTk5NTI2NjA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNzY5ODM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVEZTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtJ3MgaW5kaWNhdGluZyBpdCdzIHVzaW5nIHRoZSBgTlRGU19GU2AgY29uZmlndXJhdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCAqYWxsKiBvZiBpdD8gVGhlcmUncyBhIG5hZ2dpbmcgZmVlbGluZywgYSBmbGlja2VyIG9mIG1lbW9yeS4uLiB3YXNuJ3QgdGhlcmUgYWxzbyBhIGBOVEZTX1JXYCBvcHRpb24ga2lja2luZyBhcm91bmQ/IExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0LiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBzY29wZS4gT2theSwgYmV0dGVyIGdldCBvdmVyIHRvIGBmcy9udGZzL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIG9mIHRoZXNlIHNldHRpbmdzLiBMZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTUuMzM3MjI3NTE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg5MzA1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToxNS40OTIxMjg3NzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA0Mjk4MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBOVEZTIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcmVsYXRlZCB0byByZWFkL3dyaXRlIHN1cHBvcnQgZm9yIE5URlMuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIGl0c2VsZi4gVGhhdCB3b3VsZCBiZSBgZnMvbnRmcy9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgZXhpc3RlbmNlLCBzdGF0ZSwgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGUgcmVhZC13cml0ZSBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgb3B0aW9ucyBuYW1lZCBgTlRGU19SV2AgYW5kIGBOVEZTX0ZTX1JXYC4gQXJlIHRoZXkgZGVmaW5lZD8gQXJlIHRoZXkgZW5hYmxlZD8gV2hhdCBvdGhlciBzZXR0aW5ncyBpbmZsdWVuY2UgdGhlbT8gVGhpcyBpcyB0aGUgdXN1YWwgc3BvdCB0byBsb29rIGZvciB0aGUgZnVuZGFtZW50YWwgY29udHJvbHMgdGhhdCBkZXRlcm1pbmUgaWYgdGhlIE5URlMgZHJpdmVyIGluY2x1ZGVzIHJlYWQtd3JpdGUgY2FwYWJpbGl0aWVzLiBUaW1lIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTguMjk2NDI5MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNjU2Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MTguNTI4MDkyMjg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDcxNTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkluaXRpYWwgUmVhY3Rpb24gdG8gTlRGU19SVyBSZW1vdmFsKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgTlRGU19SV2AgaXMgKmdvbmUqPyBUaGF0J3MgYSBzaWduaWZpY2FudCBjaGFuZ2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIGltbWVkaWF0ZWx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUgYW5kIHBvcmUgb3ZlciBpdCBjb21wbGV0ZWx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIGNoYW5nZSB3YXMgbWFkZS4gV2FzIGl0IGEgcGVyZm9ybWFuY2UgZGVjaXNpb24/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IElzIGl0IGEgcGVybWFuZW50IHJlbW92YWwgb3IgYSB0ZW1wb3JhcnkgZGlzYWJsZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdXNlcnMgd2hvIHJlbHkgb24gcmVhZC13cml0ZSBOVEZTIHN1cHBvcnQ/IFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBkaXNzZWN0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCByZXF1aXJlIGEgdGhvcm91Z2ggZXhhbWluYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToyMi4yNTI4MTEwNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTM5NjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjIuNDE0MjEzNzIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDQwOTI0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGBmcy9udGZzL0tjb25maWdgIGZpbGUsIGFzIEkgdW5kZXJzdGFuZCBpdDpcblxuKipOVEZTIENvbmZpZ3VyYXRpb24gLSBEZWNvZGluZyB0aGUgS2NvbmZpZyoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFscmVhZHkgZXhwZWN0aW5nIGl0IHRvIG91dGxpbmUgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGZvY3VzaW5nIG9uIGhvdyBpdCBwcmVzZW50cyB0aGUgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5LiBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBzdXBwb3J0IGZvciByZWFkL3dyaXRlIGFjY2VzcywgZXh0ZW5kZWQgYXR0cmlidXRlcywgcGVyaGFwcyBldmVuIGpvdXJuYWwgcmVjb3Zlcnkgb3B0aW9ucy4gTXkgZ29hbCBpcyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgYmFsYW5jZWQgZnVuY3Rpb25hbGl0eSB3aXRoIHBvdGVudGlhbCByZXNvdXJjZSBjb25zdHJhaW50cy4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGZlYXR1cmVzLiBGaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBhbnkgY2hhbmdlcyBvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgZHJpdmVyIG92ZXIgdGhlIGhpc3Rvcnkgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgd2FudCB0byBzZWUgaWYgdGhleSdyZSBhZGRyZXNzaW5nIGFueSBwcmV2aW91cyB3ZWFrbmVzc2VzIG9yIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjUuMzE4MzA5Mzg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVEZTX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cXG4gICA4OlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMTpcXHRcXHQgIG50ZnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBOVEZTX0RFQlVHXFxuICAxNDpcXHRcXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcXG4gIDE4OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxcbiAgMTk6XFx0XFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXFxuICAyMDpcXHRcXHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxcbiAgMjE6XFx0XFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxcbiAgMjI6XFx0XFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cXG4gIDIzOlxcdFxcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxcbiAgMjQ6XFx0XFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxcbiAgMjU6XFx0XFx0ICBlY2hvIDEgXFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xcbiAgMjY6XFx0XFx0ICBSZXBsYWNpbmcgdGhlIFxcXCIxXFxcIiB3aXRoIFxcXCIwXFxcIiB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcXG4gIDI5OlxcdFxcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcXG4gIDMwOlxcdFxcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXFxuICAzMzpcXHRcXHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMzg6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcXG4gIDQxOlxcdFxcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XFxuICA0NDpcXHRcXHQgIHdpdGggbnRmczMgZHJpdmllci5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTI6MTE6MjUuMzE4Mzk4NjU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY2Nzg2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiAqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIEZlYXR1cmUqKlxuXG5IbW0sIHNvIGBOVEZTX1JXYCBpcyBubyBsb25nZXIgaW4gYGZzL250ZnMvS2NvbmZpZ2AuIFRoYXQncyBpbnRlcmVzdGluZy4gSSB3b25kZXIgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgaWYgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBpcyBzdGlsbCBjb21waWxlZC4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGZzL250ZnMvZmlsZS5jYCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd3JpdGUgb3BlcmF0aW9uIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIGNvZGUsIGV2ZW4gd2l0aG91dCB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIG9wdGlvbi4gS25vd2luZyB0aGlzIGhlbHBzIG1lIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIHRoaXMgcmVtb3ZhbCwgd2hldGhlciBpdCdzIHNpbXBseSBkaXNhYmxpbmcgYSBmZWF0dXJlLCBvciBpZiBpdCBoYXMgcmFtaWZpY2F0aW9ucyBmb3Igb3RoZXIgY29kZSB0aGF0IG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODM5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMToyOC4zNTUwODAwMzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTE1NjczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2ZpbGVfd3JpdGVfaXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz00OTU9c3RhdGljIHNzaXplX3QgbnRmc19kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTUzNy1cXG5mcy9udGZzL2ZpbGUuYzo1Mzg6c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuZnMvbnRmcy9maWxlLmMtNTM5LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTExNTk9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTE2MS1cXHQucmVhZF9pdGVyXFx0PSBudGZzX2ZpbGVfcmVhZF9pdGVyLFxcbmZzL250ZnMvZmlsZS5jOjExNjI6XFx0LndyaXRlX2l0ZXJcXHQ9IG50ZnNfZmlsZV93cml0ZV9pdGVyLFxcbmZzL250ZnMvZmlsZS5jLTExNjMtXFx0LmZzeW5jXFx0XFx0PSBudGZzX2ZpbGVfZnN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEyOjExOjI4LjU2NjI0MjQ2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc1MjQyNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5URlMgRHJpdmVyIENvbmZ1c2lvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTlRGUyBkcml2ZXJzLiBJcyBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXIsIG9yIGlzIHRoYXQgdGhlIG5ldywgaW1wcm92ZWQgb25lPyBSaWdodCwgdGhlIG5ldyBvbmUgaXMgZGVmaW5pdGVseSBgZnMvbnRmczNgLiBTbyB0aGF0IG1ha2VzIGBmcy9udGZzYCB0aGUgb2xkZXIgb25lLiBCdXQgSSdtIHJlbWVtYmVyaW5nIHNvbWV0aGluZyBhYm91dCBgZnMvbnRmc2AgaGF2aW5nIGBOVEZTX1JXYCBhdCBzb21lIHBvaW50LiBEaWQgdGhleSBldmVudHVhbGx5IGdldCByaWQgb2YgdGhhdCBkZWZpbmUgYW5kIGp1c3QgbWFrZSBpdCBhbHdheXMgcmVhZC13cml0ZT8gSSBjYW4ndCBxdWl0ZSByZWNhbGwuIFRoZSBlYXNpZXN0IHdheSB0byBjb25maXJtIHRoaXMgaXMgdG8ganVzdCBnbyBjaGVjayB0aGUgYGZzL250ZnMvTWFrZWZpbGVgLCBpdCdzIGFsbCBpbiB0aGVyZS4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozMi4zNDE0ODgwNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozMi4zNDE2MTEyMDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3MDgxMDgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBOVEZTIERyaXZlcjogV3JpdGUgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBgZnMvbnRmcy9maWxlLmNgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgIGZ1bmN0aW9ucywgd2hpY2ggbWVhbnMgaXQncyB0b3VjaGluZyB0aGUgb2xkIE5URlMgZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBmdXp6LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHRlc3RpbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiBgbnRmc19maWxlX3dyaXRlX2l0ZXJgIOKAkyB0aGF0J3MgdGhlIE5URlMgd3JpdGUgaXRlcmF0b3Ig4oCTIGFuZCBgbnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZWAsIHdoaWNoIGhhbmRsZXMgcGFnZSBmYXVsdHMgZHVyaW5nIG1tYXAgd3JpdGVzLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHdyaXRlcywgYm90aCBkaXJlY3QgYW5kIG1lbW9yeS1tYXBwZWQsIGFyZSBoYW5kbGVkIGNvcnJlY3RseSwgZXNwZWNpYWxseSBhcm91bmQgdGhlIGNvcmUgY2hlY2tzLlxuXG5Mb29raW5nIGF0IHRoZSBjb25maWdzLCBJIHNlZSBpdCBvbmx5IG5lZWRzIGBOVEZTX0ZTYCwgc28gdGhhdCdzIHNpbXBsZSBlbm91Z2guXG5cblJlLWV4YW1pbmluZyB0aGUgcGF0Y2gsIHRoZXJlJ3MgYSBjcml0aWNhbCBjaGVjayBpbiB0aGVyZSBwcmV2ZW50aW5nIHdyaXRlcyB0byB0aGUgYCRNRlRgIGZpbGUgdGhyb3VnaCBlaXRoZXIgbWV0aG9kLiBUaGlzIHByb3RlY3Rpb24gaXMga2V5LCBhbmQgaXQncyBlc3NlbnRpYWwgdGhhdCBJIGZ1enogdGhpcyB0byBlbnN1cmUgdGhlIGNoZWNrcyB3b3JrIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuIFRoZSBwYXRjaCBub3cgY2hlY2tzIGZvciB0aGUgTUZUIG51bWJlciBhbmQgcmVqZWN0cyB3cml0ZXMuXG5cblNvLCBoZXJlJ3MgdGhlIHBsYW4uIE15IGZvY3VzIHN5bWJvbHMgYXJlIGRlZmluaXRlbHkgYG50ZnNfZmlsZV93cml0ZV9pdGVyYCBhbmQgYG50ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGVgLiBUaGUgY29uZmlndXJhdGlvbiBpcyBqdXN0IGBOVEZTX0ZTYC4gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIGAkTUZUYCB3cml0ZSBwcm90ZWN0aW9uIHdvcmtzLiBOb3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgzMywiT3V0cHV0VG9rZW5zIjoxMTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMjoxMTozOS40MTI0MjQ5ODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc5NTkwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2ZpbGVfd3JpdGVfaXRlclwiLFxuICAgIFwibnRmc19maWxlbWFwX3BhZ2VfbWt3cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZnVuY3Rpb25hbCBjaGVja3MgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSAkTUZUIGZpbGUgdmlhIGRpcmVjdCBmaWxlIHdyaXRlcyBvciBtZW1vcnktbWFwcGVkIHdyaXRlcyBpbiB0aGUgTlRGUyBkcml2ZXIuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHRoZSBOVEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB3aXRob3V0IGNhdXNpbmcgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfZmlsZV93cml0ZV9pdGVyXCIsXG4gICAgXCJudGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBmdW5jdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlICRNRlQgZmlsZSB2aWEgZGlyZWN0IGZpbGUgd3JpdGVzIG9yIG1lbW9yeS1tYXBwZWQgd3JpdGVzIGluIHRoZSBOVEZTIGRyaXZlci4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHdpdGhvdXQgY2F1c2luZyByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowcx4hz[1] Phase: Succeeded StartedAt: 2026-07-02 12:11:51 +0000 UTC FinishedAt: 2026-07-02 12:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 12:11:51 +0000 UTC FinishedAt: 2026-07-02 12:11:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2] Phase: Succeeded StartedAt: 2026-07-02 12:11:51 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 12:11:52 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 12:11:52 +0000 UTC FinishedAt: 2026-07-02 12:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 12:11:52 +0000 UTC FinishedAt: 2026-07-02 12:12:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcx4hz/series-workflowcx4hz-convert-artifact-4223022980/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 12:12:26 +0000 UTC FinishedAt: 2026-07-02 12:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 12:12:26 +0000 UTC FinishedAt: 2026-07-02 12:53:40 +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:*99ba818c-ee41-4cb0-be0b-2b8b487031d9,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-workflowcx4hz/series-workflowcx4hz-convert-artifact-4223022980/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": "e7e4ec86-b583-4122-a874-b043049aef6f", "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-workflowcx4hz/series-workflowcx4hz-build-action-112852162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 12:12:26 +0000 UTC FinishedAt: 2026-07-02 12:53:29 +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:*99ba818c-ee41-4cb0-be0b-2b8b487031d9,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-workflowcx4hz/series-workflowcx4hz-convert-artifact-4223022980/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": "e7e4ec86-b583-4122-a874-b043049aef6f", "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-workflowcx4hz/series-workflowcx4hz-build-action-112852162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 12:53:40 +0000 UTC FinishedAt: 2026-07-02 12:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 12:53:40 +0000 UTC FinishedAt: 2026-07-02 12:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 12:53:40 +0000 UTC FinishedAt: 2026-07-02 12:56:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 12:53:41 +0000 UTC FinishedAt: 2026-07-02 12:54:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcx4hz/series-workflowcx4hz-convert-artifact-2840837123/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 12:56:17 +0000 UTC FinishedAt: 2026-07-02 12:58:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 12:56:17 +0000 UTC FinishedAt: 2026-07-02 12:58:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e7e4ec86-b583-4122-a874-b043049aef6f,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-workflowcx4hz/series-workflowcx4hz-build-action-112852162/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-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 12:58:11 +0000 UTC FinishedAt: 2026-07-02 12:58:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 12:58:11 +0000 UTC FinishedAt: 2026-07-02 12:58:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 12:58:11 +0000 UTC FinishedAt: 2026-07-02 13:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 12:58:11 +0000 UTC FinishedAt: 2026-07-02 13:27:26 +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:*99ba818c-ee41-4cb0-be0b-2b8b487031d9,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-workflowcx4hz/series-workflowcx4hz-convert-artifact-2840837123/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": "3223b0cd-02bf-4dc9-b1e4-36a5e1cbc4ac", "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-workflowcx4hz/series-workflowcx4hz-build-action-3041159863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 12:58:11 +0000 UTC FinishedAt: 2026-07-02 13:24:29 +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:*99ba818c-ee41-4cb0-be0b-2b8b487031d9,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-workflowcx4hz/series-workflowcx4hz-convert-artifact-2840837123/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": "3223b0cd-02bf-4dc9-b1e4-36a5e1cbc4ac", "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-workflowcx4hz/series-workflowcx4hz-build-action-3041159863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 13:27:26 +0000 UTC FinishedAt: 2026-07-02 13:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 13:27:26 +0000 UTC FinishedAt: 2026-07-02 13:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 13:27:27 +0000 UTC FinishedAt: 2026-07-02 13:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 13:27:27 +0000 UTC FinishedAt: 2026-07-02 13:29:33 +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:*3223b0cd-02bf-4dc9-b1e4-36a5e1cbc4ac,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-workflowcx4hz/series-workflowcx4hz-build-action-3041159863/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-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +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_file_write_iter","ntfs_filemap_page_mkwrite"],"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:*e7e4ec86-b583-4122-a874-b043049aef6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3223b0cd-02bf-4dc9-b1e4-36a5e1cbc4ac,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-workflowcx4hz/series-workflowcx4hz-build-action-112852162/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-workflowcx4hz/series-workflowcx4hz-build-action-3041159863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 13:30:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 13:30:05 +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_file_write_iter","ntfs_filemap_page_mkwrite"],"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-workflowcx4hz/series-workflowcx4hz-convert-artifact-1861353756/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 13:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 13:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 13:29:43 +0000 UTC FinishedAt: 2026-07-02 13:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 13:30:14 +0000 UTC FinishedAt: 2026-07-02 14:16:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcx4hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_file_write_iter","ntfs_filemap_page_mkwrite"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"4b2b7ea2-812e-4251-903a-962ca626d4bc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 13:30:14 +0000 UTC FinishedAt: 2026-07-02 14:16:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e7e4ec86-b583-4122-a874-b043049aef6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3223b0cd-02bf-4dc9-b1e4-36a5e1cbc4ac,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-workflowcx4hz/series-workflowcx4hz-build-action-112852162/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-workflowcx4hz/series-workflowcx4hz-build-action-3041159863/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-workflowcx4hz/series-workflowcx4hz-convert-artifact-1861353756/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,}