Name: series-workflowp7frd Phase: Succeeded StartedAt: 2026-07-11 10:50:12 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[0] Phase: Succeeded StartedAt: 2026-07-11 10:50:12 +0000 UTC FinishedAt: 2026-07-11 11:30:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 10:50:12 +0000 UTC FinishedAt: 2026-07-11 11:30:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "eb2a58a36ca36dd2df22cc8284663aa2f86db9c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "eb2a58a36ca36dd2df22cc8284663aa2f86db9c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "21e38dc8-e40a-4b79-9c74-13da7cc601e8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFnZSBhbGxvY2F0b3ImIzM5O3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDJkMzAwYTliZTVhNzk1YzVkNGMwYWMzNGMyNzI2M2YzODhmZDJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6Mjg6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfYWxsb2MuY1xuQEAgLTQ4ODMsNiAmIzQzOzQ4ODMsMjYgQEAgX19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0LyogSWYgYWxsb2NhdGlvbiBoYXMgdGFrZW4gZXhjZXNzaXZlbHkgbG9uZywgd2FybiBhYm91dCBpdCAqL1xuIFx0Y2hlY2tfYWxsb2Nfc3RhbGxfd2FybihnZnBfbWFzaywgYWMtXHUwMDNlbm9kZW1hc2ssIG9yZGVyLCBhbGxvY19zdGFydF90aW1lKTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24mIzM5O3RcbiYjNDM7XHQgKiBzdGFsbCBvbiBkaXJlY3QgY29tcGFjdGlvbiBvciByZWNsYWltOyBpbnN0ZWFkLCBraWNrXG4mIzQzO1x0ICoga2NvbXBhY3RkIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBzbyBsYXJnZSBwYWdlcyBtYXkgYmVjb21lXG4mIzQzO1x0ICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBEaXJlY3QgY29tcGFjdGlvbiBpcyB3YXkgdG9vIGNvc3RseSBmb3IgaG90IGFsbG9jYXRpb24gcGF0aHMgb25cbiYjNDM7XHQgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJc1xuJiM0MztcdCAqIGV2ZXJ5IENQVS4gIE9ubHkgd2FrZSBrY29tcGFjdGQgb24gdGhlIGxvY2FsIG5vZGUgdG8gYXZvaWRcbiYjNDM7XHQgKiBjcm9zcy1OVU1BIGludGVyZmVyZW5jZSB3aXRoIHVucmVsYXRlZCB3b3JrbG9hZHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGNvc3RseV9vcmRlciBcdTAwMjZcdTAwMjYgKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9OT1JFVFJZKSkge1xuJiM0MztcdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocHJlZmVycmVkX3pvbmUpXG4mIzQzO1x0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG4mIzQzO1x0XHRcdFx0XHQgYWMtXHUwMDNlaGlnaGVzdF96b25laWR4KTtcbiYjNDM7XHRcdGdvdG8gbm9wYWdlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBUcnkgZGlyZWN0IHJlY2xhaW0gYW5kIHRoZW4gYWxsb2NhdGluZyAqL1xuIFx0aWYgKCFjb21wYWN0X2ZpcnN0KSB7XG4gXHRcdHBhZ2UgPSBfX2FsbG9jX3BhZ2VzX2RpcmVjdF9yZWNsYWltKGdmcF9tYXNrLCBvcmRlciwgYWxsb2NfZmxhZ3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWdlIGFsbG9jYXRvciYjMzk7cyBzbG93IHBhdGggdG8gZmFpbCBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGVhcmx5LCB3aGlsZSB3YWtpbmcgdXAga2NvbXBhY3RkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhZmZlY3RzIGFsbG9jYXRpb24gc3VjY2VzcyByYXRlcyBhbmQgY29tcGFjdGlvbiBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDExOjI4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IGE2MzczM2RhYzY1OWUzLi4yZDAyNzAzZDhmMGY2NyAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtNDg4Myw2ICYjNDM7NDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsCiAJLyogSWYgYWxsb2NhdGlvbiBoYXMgdGFrZW4gZXhjZXNzaXZlbHkgbG9uZywgd2FybiBhYm91dCBpdCAqLwogCWNoZWNrX2FsbG9jX3N0YWxsX3dhcm4oZ2ZwX21hc2ssIGFjLSZndDtub2RlbWFzaywgb3JkZXIsIGFsbG9jX3N0YXJ0X3RpbWUpOwogCiYjNDM7CS8qCiYjNDM7CSAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24mIzM5O3QKJiM0MzsJICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2ljawomIzQzOwkgKiBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlIHNvIGxhcmdlIHBhZ2VzIG1heSBiZWNvbWUKJiM0MzsJICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuCiYjNDM7CSAqCiYjNDM7CSAqIERpcmVjdCBjb21wYWN0aW9uIGlzIHdheSB0b28gY29zdGx5IGZvciBob3QgYWxsb2NhdGlvbiBwYXRocyBvbgomIzQzOwkgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJcwomIzQzOwkgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkCiYjNDM7CSAqIGNyb3NzLU5VTUEgaW50ZXJmZXJlbmNlIHdpdGggdW5yZWxhdGVkIHdvcmtsb2Fkcy4KJiM0MzsJICovCiYjNDM7CWlmIChjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSkpIHsKJiM0MzsJCXN0cnVjdCB6b25lICpwcmVmZXJyZWRfem9uZSA9IGFjLSZndDtwcmVmZXJyZWRfem9uZXJlZi0mZ3Q7em9uZTsKJiM0MzsKJiM0MzsJCWlmIChwcmVmZXJyZWRfem9uZSkKJiM0MzsJCQl3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLSZndDt6b25lX3BnZGF0LCBvcmRlciwKJiM0MzsJCQkJCSBhYy0mZ3Q7aGlnaGVzdF96b25laWR4KTsKJiM0MzsJCWdvdG8gbm9wYWdlOwomIzQzOwl9CiYjNDM7CiAJLyogVHJ5IGRpcmVjdCByZWNsYWltIGFuZCB0aGVuIGFsbG9jYXRpbmcgKi8KIAlpZiAoIWNvbXBhY3RfZmlyc3QpIHsKIAkJcGFnZSA9IF9fYWxsb2NfcGFnZXNfZGlyZWN0X3JlY2xhaW0oZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBtbS9wYWdlX2FsbG9jLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEsIG9idmlvdXNseSwgZGVhbGluZyB3aXRoIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBpbml0aWFsIGFsbG9jYXRpb24gYXR0ZW1wdHMgZmFpbC4gSSYjMzk7bSBzZWVpbmcgYSBuZXcgY29uZGl0aW9uIGJlaW5nIGludHJvZHVjZWQ6IGBjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSlgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7Y29zdGx5JiMzNDsgaW4gdGhpcyBjb250ZXh0PyBIaWdoZXIgb3JkZXIgYWxsb2NhdGlvbnMsIEkmIzM5O2QgYXNzdW1lLCBnaXZlbiB0aGUgYGNvc3RseV9vcmRlcmAgdmFyaWFibGUuIEFuZCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcuLi4gdGhhdCYjMzk7cyB0aGUgcmVhbCBrZXkgaGVyZS4gVGhpcyBzdWdnZXN0cyB0aGUgY2FsbGVyIGlzIGV4cGxpY2l0bHkgc2F5aW5nICYjMzQ7ZG9uJiMzOTt0IHJldHJ5LCBmYWlsIGZhc3QmIzM0OyB3aGljaCBpcyBpbXBvcnRhbnQgaW4gc3BlY2lmaWMsIHNlbnNpdGl2ZSBzaXR1YXRpb25zLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgdGhpcyB2ZXJ5IHNwZWNpZmljIHNjZW5hcmlvOiBhICpjb3N0bHkqIGFsbG9jYXRpb24gYW5kIHRoZSByZXF1ZXN0IGlzIHRvICpub3QgcmV0cnkqLiBUaGUgcGF0Y2ggdGhlbiB0cmlnZ2VycyBhIGBrY29tcGFjdGRgIHdha2V1cCBvbiB0aGUgcHJlZmVycmVkIG5vZGUgYW5kLCBjcnVjaWFsbHksIGp1bXBzIHRvIGBub3BhZ2VgLiBTbywgdGhlIGxvZ2ljIGlzLCBpbiB0aGlzIHNwZWNpZmljIGNhc2UsIHJhdGhlciB0aGFuIHJldHJ5aW5nIGluIHRoZSBzbG93IHBhdGggb3IgYXR0ZW1wdGluZyBtb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHRhc2tzLCB3ZSYjMzk7cmUgZ2l2aW5nIHVwIGFuZCBnb2luZyBzdHJhaWdodCB0byBgbm9wYWdlYCwgcHJlc3VtYWJseSB0byBhbGxvdyB0aGUgZmF1bHQgdG8gYmUgaGFuZGxlZCBpbiBhbm90aGVyIHdheSAobGlrZSByZXR1cm5pbmcgYW4gZXJyb3IgdG8gdGhlIGNhbGxlciwgb3Igc2ltaWxhcikuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzk7Y29zdGx5IG9yZGVyJiMzOTsgdHJ1bHkgbWVhbnMgZm9yIGEgc3RhcnQsIGJ1dCB0aGUgaW1wbGljYXRpb24gc2VlbXMgY2xlYXI6IG9wdGltaXplIGZvciBzaXR1YXRpb25zIHdoZXJlIHdlICphYnNvbHV0ZWx5KiBjYW5ub3Qgc3RhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSBsZXZlbCBvZiB0aGUgbWVtb3J5IGFsbG9jYXRvci4gSXQmIzM5O3Mgbm90IGNvc21ldGljOyBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZmxvdyBvZiBjb250cm9sIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMuIEkgd2FudCB0byB0cmFjZSB0aGUgY29kZSBwYXRocyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcnMgb3Igc3Vic3lzdGVtcyB0aGF0IHNldCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcgb24gYWxsb2NhdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlICYjMzQ7Y29zdGx5JiMzNDssIGFuZCBzZWUgdGhlIHBvc3NpYmxlIGNvbnNlcXVlbmNlcy4gSXQmIzM5O3MgZ29pbmcgdG8gYWZmZWN0IGFsbG9jYXRpb24gcGF0aHMgdGhhdCBkZW1hbmQgdGhpcyBwYXJ0aWN1bGFyIGZhc3QtZmFpbCBiZWhhdmlvdXIuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYG1tL3BhZ2VfYWxsb2MuY2AgdG8gc2VlIGhvdyBvdGhlciBwYXJ0cyBpbnRlcmFjdCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hbGxvY19wYWdlc19zbG93cGF0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9NDczMj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpcbm1tL3BhZ2VfYWxsb2MuYzo0NzMzOl9fYWxsb2NfcGFnZXNfc2xvd3BhdGgoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbm1tL3BhZ2VfYWxsb2MuYy00NzM0LVx0XHRcdFx0XHRcdHN0cnVjdCBhbGxvY19jb250ZXh0ICphYylcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTM1Mj1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01NDE3LVxubW0vcGFnZV9hbGxvYy5jOjU0MTg6XHRwYWdlID0gX19hbGxvY19wYWdlc19zbG93cGF0aChhbGxvY19nZnAsIG9yZGVyLCBcdTAwMjZhYyk7XG5tbS9wYWdlX2FsbG9jLmMtNTQxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODY4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgX19hbGxvY19wYWdlc19zbG93cGF0aGAgaW4gdGhlIHBhZ2UgYWxsb2NhdG9yLi4uIHRoYXQmIzM5O3MgYSAqa2V5KiBmdW5jdGlvbi4gSXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY3JpdGljYWwgcm9sZS4gSSBzZWUgdGhlIGNoYW5nZSBmb2N1c2VzIG9uIGBjb3N0bHlfb3JkZXJgIGFuZCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcuIEludGVyZXN0aW5nLiBBbmQgaXQgY2FsbHMgYHdha2V1cF9rY29tcGFjdGRgIOKAkyB0aGF0IGNvdWxkIGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0IGZvciBzdGF0ZSB0cmFuc2l0aW9ucy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGNvbWUgaW50byBwbGF5IGhlcmUuIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMuIFNpbmNlIGBtbS9wYWdlX2FsbG9jLmNgIGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQsIHRoYXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4uIEJ1dCBgd2FrZXVwX2tjb21wYWN0ZGAgaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AsIHJpZ2h0PyBUaGF0IHBvaW50cyBkaXJlY3RseSB0byB0aGUgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBkZXBlbmRlbmN5LiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgSSYjMzk7bSBzZWVpbmcgYWN0dWFsbHkgaW50ZXJhY3RzIHdpdGggdGhlIGNvbXBhY3Rpb24gY29kZS4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBmaWd1cmluZyBvdXQgd2hhdCBtaWdodCBiZSByZWFjaGFibGUgYnkgbXkgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dha2V1cF9rY29tcGFjdGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vY29tcGFjdGlvbi5jPTI5NjU9c3RhdGljIGludCBjb21wYWN0aW9uX3Byb2FjdGl2ZW5lc3Nfc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9jb21wYWN0aW9uLmMtMjk4MS1cdFx0XHRwZ2RhdC1cdTAwM2Vwcm9hY3RpdmVfY29tcGFjdF90cmlnZ2VyID0gdHJ1ZTtcbm1tL2NvbXBhY3Rpb24uYzoyOTgyOlx0XHRcdHRyYWNlX21tX2NvbXBhY3Rpb25fd2FrZXVwX2tjb21wYWN0ZChwZ2RhdC1cdTAwM2Vub2RlX2lkLCAtMSxcbm1tL2NvbXBhY3Rpb24uYy0yOTgzLVx0XHRcdFx0XHRcdFx0ICAgICBwZ2RhdC1cdTAwM2Vucl96b25lcyAtIDEpO1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0zMDc0PXN0YXRpYyB2b2lkIGtjb21wYWN0ZF9kb193b3JrKHBnX2RhdGFfdCAqcGdkYXQpXG4tLVxubW0vY29tcGFjdGlvbi5jLTMxNTMtXG5tbS9jb21wYWN0aW9uLmM6MzE1NDp2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCwgaW50IG9yZGVyLCBpbnQgaGlnaGVzdF96b25laWR4KVxubW0vY29tcGFjdGlvbi5jLTMxNTUte1xuLS1cbm1tL2NvbXBhY3Rpb24uYy0zMTc0LVxubW0vY29tcGFjdGlvbi5jOjMxNzU6XHR0cmFjZV9tbV9jb21wYWN0aW9uX3dha2V1cF9rY29tcGFjdGQocGdkYXQtXHUwMDNlbm9kZV9pZCwgb3JkZXIsXG5tbS9jb21wYWN0aW9uLmMtMzE3Ni1cdFx0XHRcdFx0XHRcdGhpZ2hlc3Rfem9uZWlkeCk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ3MzM9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00OTAwLVx0XHRpZiAocHJlZmVycmVkX3pvbmUpXG5tbS9wYWdlX2FsbG9jLmM6NDkwMTpcdFx0XHR3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLVx1MDAzZXpvbmVfcGdkYXQsIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQ5MDItXHRcdFx0XHRcdCBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xuLS1cbm1tL3Ztc2Nhbi5jPTcwNTQ9c3RhdGljIGludCBiYWxhbmNlX3BnZGF0KHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcbi0tXG5tbS92bXNjYW4uYy03MjU2LVx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjcyNTc6XHRcdHdha2V1cF9rY29tcGFjdGQocGdkYXQsIHBhZ2VibG9ja19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTcyNTgtXHR9XG4tLVxubW0vdm1zY2FuLmM9NzI5Mj1zdGF0aWMgdm9pZCBrc3dhcGRfdHJ5X3RvX3NsZWVwKHBnX2RhdGFfdCAqcGdkYXQsIGludCBhbGxvY19vcmRlciwgaW50IHJlY2xhaW1fb3JkZXIsXG4tLVxubW0vdm1zY2FuLmMtNzMyMi1cdFx0ICovXG5tbS92bXNjYW4uYzo3MzIzOlx0XHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBhbGxvY19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTczMjQtXG4tLVxubW0vdm1zY2FuLmM9NzQ3MD12b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9mbGFncywgaW50IG9yZGVyLFxuLS1cbm1tL3Ztc2Nhbi5jLTc1MDUtXHRcdGlmICghKGdmcF9mbGFncyBcdTAwMjYgX19HRlBfRElSRUNUX1JFQ0xBSU0pKVxubW0vdm1zY2FuLmM6NzUwNjpcdFx0XHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBvcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTc1MDctXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDExCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktlcm5lbCBNZW1vcnkgQ29tcGFjdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gYHdha2V1cF9rY29tcGFjdGRgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGl0cyBsb2NhdGlvbiDigJMgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0JiMzOTtzIHR1Y2tlZCBhd2F5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGtlcm5lbCYjMzk7cyBhIHNwcmF3bGluZyBjb2RlYmFzZSwgc28gSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O2xsIG1ha2Ugc3VyZSBgY29tcGFjdGlvbi5jYCBpcyBhY3R1YWxseSBiZWluZyBjb21waWxlZCB3aXRoaW4gdGhlIGBtbWAgc3Vic3lzdGVtLiBUaGlzIGlzIGFib3V0IHNvbGlkaWZ5aW5nIG15IG1lbnRhbCBtb2RlbCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSwgdmVyaWZ5aW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGllY2VzIGFuZCByZWZyZXNoaW5nIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1vZHVsZXMuIEkgd2FudCB0byBrZWVwIHRoZSBtZW50YWwgbWFwIHVwIHRvIGRhdGUuIEkgd2FudCB0byBidWlsZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgY29tcGFjdGlvbiBpcyBzZXQgdXAgaW4gbWVtb3J5LiBJdCYjMzk7cyBzZWNvbmQgbmF0dXJlIHRvIGNyb3NzLXJlZmVyZW5jZSBsaWtlIHRoaXMsIGtlZXBzIG1lIHNoYXJwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBhY3Rpb24ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTUxPW9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuLS1cbm1tL01ha2VmaWxlLTU1LVx0XHRcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXG5tbS9NYWtlZmlsZTo1NjpcdFx0XHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQwNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBjb21wYWN0aW9uLm9gJiMzOTtzIEJ1aWxkIExvY2F0aW9uKioKCkhtbSwgc28gYGNvbXBhY3Rpb24ub2AgaXMgYmVpbmcgYnVpbHQgYXMgcGFydCBvZiB0aGUgYG9iai15YCBsaXN0LiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgaW5jbHVzaW9uIGFuZCBkZXRlcm1pbmUgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBzb3VyY2UgZmlsZSBpcyB1bHRpbWF0ZWx5IGdldHRpbmcgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBydWxlcyB0aGF0IGdvdmVybiB0aGlzIHNwZWNpZmljIG9iamVjdCBmaWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgY29uZmlybSBpZiB0aGUgYnVpbGQgbG9jYXRpb24gaXMgYXMgZXhwZWN0ZWQgb3IsIGlmIG5vdCwgcmV2ZWFsIHRoZSBpbmNsdWRlIGNoYWluIHdoaWNoIG1heSBwcm92aWRlIGluc2lnaHRzIGludG8gYSBidWlsZCBpc3N1ZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdG9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuICA1MjpcdFx0XHRcdCAgIG1hY2Nlc3MubyBwYWdlLXdyaXRlYmFjay5vIGZvbGlvLWNvbXBhdC5vIFxcXG4gIDUzOlx0XHRcdFx0ICAgcmVhZGFoZWFkLm8gc3dhcC5vIHRydW5jYXRlLm8gdm1zY2FuLm8gc2hyaW5rZXIubyBcXFxuICA1NDpcdFx0XHRcdCAgIHNobWVtLm8gdXRpbC5vIG1tem9uZS5vIHZtc3RhdC5vIGJhY2tpbmctZGV2Lm8gXFxcbiAgNTU6XHRcdFx0XHQgICBtbV9pbml0Lm8gcGVyY3B1Lm8gc2xhYl9jb21tb24ubyBcXFxuICA1NjpcdFx0XHRcdCAgIGNvbXBhY3Rpb24ubyBzaG93X21lbS5vIFxcXG4gIDU3Olx0XHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4gIDU4Olx0XHRcdFx0ICAgZGVidWcubyBndXAubyBtbWFwX2xvY2subyB2bWFfaW5pdC5vICQobW11LXkpXG4gIDU5Olx0XG4gIDYwOlx0IyBHaXZlICYjMzk7cGFnZV9hbGxvYyYjMzk7IGl0cyBvd24gbW9kdWxlLXBhcmFtZXRlciBuYW1lc3BhY2VcbiAgNjE6XHRwYWdlLWFsbG9jLXkgOj0gcGFnZV9hbGxvYy5vXG4gIDYyOlx0cGFnZS1hbGxvYy0kKENPTkZJR19TSFVGRkxFX1BBR0VfQUxMT0NBVE9SKSAmIzQzOz0gc2h1ZmZsZS5vXG4gIDYzOlx0XG4gIDY0Olx0IyBHaXZlICYjMzk7bWVtb3J5X2hvdHBsdWcmIzM5OyBpdHMgb3duIG1vZHVsZS1wYXJhbWV0ZXIgbmFtZXNwYWNlXG4gIDY1Olx0bWVtb3J5LWhvdHBsdWctJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBtZW1vcnlfaG90cGx1Zy5vXG4gIDY2Olx0XG4gIDY3Olx0b2JqLXkgJiM0Mzs9IHBhZ2UtYWxsb2Mub1xuICA2ODpcdG9iai15ICYjNDM7PSBwYWdlX2ZyYWdfY2FjaGUub1xuICA2OTpcdG9iai15ICYjNDM7PSBpbml0LW1tLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBDb21wYWN0aW9uIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIGBjb21wYWN0aW9uLm9gIGlzIGJlaW5nIGJ1aWx0IGV2ZXJ5IHRpbWUuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIGtub3cgdGhlcmUmIzM5O3MgYSBgQ09ORklHX0NPTVBBQ1RJT05gIG9wdGlvbiBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2sgZm9yIHRoYXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBgI2lmZGVmIENPTkZJR19DT01QQUNUSU9OYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBpbiB0aGVyZSBkZXRlcm1pbmluZyBpZiB0aGUgY29tcGFjdGlvbiBjb2RlIGlzIGFjdHVhbGx5IGluY2x1ZGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgaW4gdGhlcmUgdGhhdCBhcmUgY2F1c2luZyBpdCB0byBiZSBidWlsdCB3aGVuIGl0IHNob3VsZG4mIzM5O3QuIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQ09NUEFDVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmMtMjktXG5tbS9jb21wYWN0aW9uLmM6MzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMzEtLypcbi0tXG5tbS9jb21wYWN0aW9uLmM9NjA9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG4tLVxubW0vY29tcGFjdGlvbi5jLTYyLVxubW0vY29tcGFjdGlvbi5jOjYzOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxubW0vY29tcGFjdGlvbi5jLTY0LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz05Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXG4tLVxubW0vY29tcGFjdGlvbi5jLTExNi1cbm1tL2NvbXBhY3Rpb24uYzoxMTc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTE4LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz00OTE9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy00OTQtfVxubW0vY29tcGFjdGlvbi5jOjQ5NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cbm1tL2NvbXBhY3Rpb24uYy00OTYtXG4tLVxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xMzcyLVxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cbm1tL2NvbXBhY3Rpb24uYzoxMzc0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vY29tcGFjdGlvbi5jLTEzNzUtXG4tLVxubW0vY29tcGFjdGlvbi5jPTMzNTE9c3Vic3lzX2luaXRjYWxsKGtjb21wYWN0ZF9pbml0KVxubW0vY29tcGFjdGlvbi5jLTMzNTItXG5tbS9jb21wYWN0aW9uLmM6MzM1MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqVmVyaWZ5aW5nIENvbXBhY3Rpb24gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX0NPTVBBQ1RJT05gIGlzIGRlZmluaXRlbHkgdXNlZCB3aXRoaW4gYG1tL2NvbXBhY3Rpb24uY2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCB0aG91Z2gsIGlzIGhvdyBgd2FrZXVwX2tjb21wYWN0ZGAgYmVoYXZlcyAqd2l0aG91dCogY29tcGFjdGlvbiBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQgZnVuY3Rpb24gaXMgKm5vdCogZGVmaW5lZCB3aGVuIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB1bnNldC4gSXQmIzM5O3MgYSBrZXkgc2FuaXR5IGNoZWNrLiBJJiMzOTtkIGV4cGVjdCB0aGUgY29kZSB0byBndWFyZCBpdHMgZGVmaW5pdGlvbiB3aXRoIGFuIGAjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05gIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIG9yIHNvbWV0aGluZyBsb2dpY2FsbHkgZXF1aXZhbGVudCwgc3VjaCB0aGF0IHdoZW4gdGhlIGZlYXR1cmUgaXMgdHVybmVkIG9mZiwgdGhlIGZ1bmN0aW9uIGlzIGVpdGhlciB1bmRlZmluZWQsIHJlcGxhY2VkIHdpdGggYSBwbGFjZWhvbGRlciwgb3IgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBwcmV2ZW50cyB0aGUgcmVsYXRlZCBjb2RlIGZyb20gYmVpbmcgaW52b2tlZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoYXQgYXNzdW1wdGlvbiwgYmVjYXVzZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjb2RlIGJhc2UgaGFuZGxlcyB0aGUgYWJzZW5jZSBvZiB0aGUgY29tcGFjdGlvbiBmdW5jdGlvbmFsaXR5IGdyYWNlZnVsbHkuIE5vIHBvaW50IGNhbGxpbmcgYSBmdW5jdGlvbiBpZiBpdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlcmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNvdXJjZSBvZiBydW50aW1lIGVycm9ycywgc28gSSYjMzk7bSBsb29raW5nIGZvciBzb2xpZCBwcmVwcm9jZXNzb3IgZ3VhcmRyYWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2FrZXVwX2tjb21wYWN0ZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEwNz1leHRlcm4gdm9pZCBfX21lbWluaXQga2NvbXBhY3RkX3N0b3AoaW50IG5pZCk7XG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMDg6ZXh0ZXJuIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpO1xuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTA5LVxuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyNT1zdGF0aWMgaW5saW5lIHZvaWQga2NvbXBhY3RkX3N0b3AoaW50IG5pZClcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMjgtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMjk6c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEzMC1cdFx0XHRcdGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxNgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gRmlyc3QsIGl0JiMzOTtzIGNsZWFyIHRoYXQgYHdha2V1cF9rY29tcGFjdGRgIGRvZXMgbm90aGluZyB3aXRob3V0IGBDT05GSUdfQ09NUEFDVElPTmAsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgcHJvcGVyIHRlc3RpbmcuIFRoZSBwYXRjaCBhbHNvIHJlZmVyZW5jZXMgYGNvc3RseV9vcmRlcmAgYW5kIGBfX0dGUF9OT1JFVFJZYC4gYGNvc3RseV9vcmRlcmAgdHlwaWNhbGx5IG1lYW5zIGFuIG9yZGVyIGdyZWF0ZXIgdGhhbiAzLCB3aGljaCBpcyBmYWlybHkgc2lnbmlmaWNhbnQuIFRoZSBjb3JlIGNoYW5nZSByZXNpZGVzIHdpdGhpbiBgX19hbGxvY19wYWdlc19zbG93cGF0aGAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIGlmIGBDT05GSUdfTlVNQWAgd2FzIHJlcXVpcmVkLCBnaXZlbiB0aGUgbWVudGlvbiBvZiAmIzM0O2Nyb3NzLU5VTUEgaW50ZXJmZXJlbmNlLCYjMzQ7IGJ1dCBpdCBhcHBlYXJzIHRoaXMgaXNuJiMzOTt0IHRoZSBjYXNlLiBUaGUgdXNlIG9mIGBwcmVmZXJyZWRfem9uZS0mZ3Q7em9uZV9wZ2RhdGAgaW5kaWNhdGVzIHRoaXMgd29ya3MgZXZlbiB3aXRob3V0IE5VTUEgZW5hYmxlZCwgaXQgaXMgbWVyZWx5IHdha2luZyB1cCBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlLgoKVGhlIHBhdGNoJiMzOTtzIGNvcmUgbG9naWMgbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIHRvIGFkZDoKCmBgYGMKCWlmIChjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSkpIHsKCQlzdHJ1Y3Qgem9uZSAqcHJlZmVycmVkX3pvbmUgPSBhYy0mZ3Q7cHJlZmVycmVkX3pvbmVyZWYtJmd0O3pvbmU7CgoJCWlmIChwcmVmZXJyZWRfem9uZSkKCQkJd2FrZXVwX2tjb21wYWN0ZChwcmVmZXJyZWRfem9uZS0mZ3Q7em9uZV9wZ2RhdCwgb3JkZXIsCgkJCQkJIGFjLSZndDtoaWdoZXN0X3pvbmVpZHgpOwoJCWdvdG8gbm9wYWdlOwoJfQpgYGAKClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2tpcHMgZGlyZWN0IGNvbXBhY3Rpb24gYW5kIGRpcmVjdCByZWNsYWltIGZvciBjb3N0bHksIG5vbi1yZXRyaWFibGUgYWxsb2NhdGlvbnMsIGluc3RlYWQgd2FraW5nIHVwIGBrY29tcGFjdGRgIGFuZCBpbW1lZGlhdGVseSBmYWlsaW5nIHRoZSBhbGxvY2F0aW9uLiBUaGlzIGNhbiBpbmZsdWVuY2UgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IgYW5kIGNvbXBhY3Rpb24uCgpOb3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbGJlaXQgYSBzbG93ZXIgb25lIHRoYW4gYF9fYWxsb2NfcGFnZXNgLiBTbywgZG8gSSBwdXQgaXQgaW50byBgRm9jdXNTeW1ib2xzYD8gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IG5vdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBJIHByb2JhYmx5IHNob3VsZCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgLiBNYXliZSBJJiMzOTtsbCBwdXQgaXQgaW4gYW55d2F5LiBCdXQgdGhpcyBpcyB0aGUga2V5IHRvIHRlc3RpbmcgdGhpcyBzcGVjaWZpYyBwYXRoLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZvciBhbG1vc3QgYWxsIGFsbG9jYXRpb25zIHRoYXQgZG9uJiMzOTt0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIEZvciBub3csIEkmIzM5O2xsIGtlZXAgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LgoKRG91YmxlLWNoZWNraW5nLCBgQ09ORklHX0NPTVBBQ1RJT05gIHJlbWFpbnMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgc2xvdyBwYXRoIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gSXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBgX19HRlBfTk9SRVRSWWAsIHBvdGVudGlhbGx5IGltcGFjdGluZyBhbGxvY2F0aW9uIHN1Y2Nlc3MgYW5kIGNvbXBhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJiMzOTtzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJiMzOTtzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6MzcuODg4MzE0Nzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNjU1MzY2MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWdlIGFsbG9jYXRvcidzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyODozNy44ODgzMjAxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyNDQxMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyODozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXFxuKysrIGIvbW0vcGFnZV9hbGxvYy5jXFxuQEAgLTQ4ODMsNiArNDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuIFxcdC8qIElmIGFsbG9jYXRpb24gaGFzIHRha2VuIGV4Y2Vzc2l2ZWx5IGxvbmcsIHdhcm4gYWJvdXQgaXQgKi9cXG4gXFx0Y2hlY2tfYWxsb2Nfc3RhbGxfd2FybihnZnBfbWFzaywgYWMtXFx1MDAzZW5vZGVtYXNrLCBvcmRlciwgYWxsb2Nfc3RhcnRfdGltZSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBDb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGFyZSBvcHBvcnR1bmlzdGljIC0gRG9uJ3RcXG4rXFx0ICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2lja1xcbitcXHQgKiBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlIHNvIGxhcmdlIHBhZ2VzIG1heSBiZWNvbWVcXG4rXFx0ICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuXFxuK1xcdCAqXFxuK1xcdCAqIERpcmVjdCBjb21wYWN0aW9uIGlzIHdheSB0b28gY29zdGx5IGZvciBob3QgYWxsb2NhdGlvbiBwYXRocyBvblxcbitcXHQgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJc1xcbitcXHQgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkXFxuK1xcdCAqIGNyb3NzLU5VTUEgaW50ZXJmZXJlbmNlIHdpdGggdW5yZWxhdGVkIHdvcmtsb2Fkcy5cXG4rXFx0ICovXFxuK1xcdGlmIChjb3N0bHlfb3JkZXIgXFx1MDAyNlxcdTAwMjYgKGdmcF9tYXNrIFxcdTAwMjYgX19HRlBfTk9SRVRSWSkpIHtcXG4rXFx0XFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXFx1MDAzZXByZWZlcnJlZF96b25lcmVmLVxcdTAwM2V6b25lO1xcbitcXG4rXFx0XFx0aWYgKHByZWZlcnJlZF96b25lKVxcbitcXHRcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLVxcdTAwM2V6b25lX3BnZGF0LCBvcmRlcixcXG4rXFx0XFx0XFx0XFx0XFx0IGFjLVxcdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xcbitcXHRcXHRnb3RvIG5vcGFnZTtcXG4rXFx0fVxcbitcXG4gXFx0LyogVHJ5IGRpcmVjdCByZWNsYWltIGFuZCB0aGVuIGFsbG9jYXRpbmcgKi9cXG4gXFx0aWYgKCFjb21wYWN0X2ZpcnN0KSB7XFxuIFxcdFxcdHBhZ2UgPSBfX2FsbG9jX3BhZ2VzX2RpcmVjdF9yZWNsYWltKGdmcF9tYXNrLCBvcmRlciwgYWxsb2NfZmxhZ3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjM4LjI5MTU2NzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk2MjI3NjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJ3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDExOjI4OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcbisrKyBiL21tL3BhZ2VfYWxsb2MuY1xuQEAgLTQ4ODMsNiArNDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXHQvKiBJZiBhbGxvY2F0aW9uIGhhcyB0YWtlbiBleGNlc3NpdmVseSBsb25nLCB3YXJuIGFib3V0IGl0ICovXG4gXHRjaGVja19hbGxvY19zdGFsbF93YXJuKGdmcF9tYXNrLCBhYy1cdTAwM2Vub2RlbWFzaywgb3JkZXIsIGFsbG9jX3N0YXJ0X3RpbWUpO1xuIFxuK1x0LypcbitcdCAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24ndFxuK1x0ICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2lja1xuK1x0ICoga2NvbXBhY3RkIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBzbyBsYXJnZSBwYWdlcyBtYXkgYmVjb21lXG4rXHQgKiBhdmFpbGFibGUgZm9yIGZ1dHVyZSBhbGxvY2F0aW9ucyBhbmQgbGV0IHRoZSBjYWxsZXIgZmFsbCBiYWNrIG5vdy5cbitcdCAqXG4rXHQgKiBEaXJlY3QgY29tcGFjdGlvbiBpcyB3YXkgdG9vIGNvc3RseSBmb3IgaG90IGFsbG9jYXRpb24gcGF0aHMgb25cbitcdCAqIGxhcmdlIHN5c3RlbXM6IGVhY2ggYXR0ZW1wdCBjYWxscyBkcmFpbl9hbGxfcGFnZXMoKSB3aGljaCBJUElzXG4rXHQgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkXG4rXHQgKiBjcm9zcy1OVU1BIGludGVyZmVyZW5jZSB3aXRoIHVucmVsYXRlZCB3b3JrbG9hZHMuXG4rXHQgKi9cbitcdGlmIChjb3N0bHlfb3JkZXIgXHUwMDI2XHUwMDI2IChnZnBfbWFzayBcdTAwMjYgX19HRlBfTk9SRVRSWSkpIHtcbitcdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcbitcbitcdFx0aWYgKHByZWZlcnJlZF96b25lKVxuK1x0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG4rXHRcdFx0XHRcdCBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xuK1x0XHRnb3RvIG5vcGFnZTtcbitcdH1cbitcbiBcdC8qIFRyeSBkaXJlY3QgcmVjbGFpbSBhbmQgdGhlbiBhbGxvY2F0aW5nICovXG4gXHRpZiAoIWNvbXBhY3RfZmlyc3QpIHtcbiBcdFx0cGFnZSA9IF9fYWxsb2NfcGFnZXNfZGlyZWN0X3JlY2xhaW0oZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncyxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjM4LjI5MTU2ODU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2MjEyMzQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL3BhZ2VfYWxsb2MuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSwgb2J2aW91c2x5LCBkZWFsaW5nIHdpdGggd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBhdHRlbXB0cyBmYWlsLiBJJ20gc2VlaW5nIGEgbmV3IGNvbmRpdGlvbiBiZWluZyBpbnRyb2R1Y2VkOiBgY29zdGx5X29yZGVyIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX05PUkVUUlkpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyBjb25zaWRlcmVkIFwiY29zdGx5XCIgaW4gdGhpcyBjb250ZXh0PyBIaWdoZXIgb3JkZXIgYWxsb2NhdGlvbnMsIEknZCBhc3N1bWUsIGdpdmVuIHRoZSBgY29zdGx5X29yZGVyYCB2YXJpYWJsZS4gQW5kIHRoZSBgX19HRlBfTk9SRVRSWWAgZmxhZy4uLiB0aGF0J3MgdGhlIHJlYWwga2V5IGhlcmUuIFRoaXMgc3VnZ2VzdHMgdGhlIGNhbGxlciBpcyBleHBsaWNpdGx5IHNheWluZyBcImRvbid0IHJldHJ5LCBmYWlsIGZhc3RcIiB3aGljaCBpcyBpbXBvcnRhbnQgaW4gc3BlY2lmaWMsIHNlbnNpdGl2ZSBzaXR1YXRpb25zLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCB0aGlzIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW86IGEgKmNvc3RseSogYWxsb2NhdGlvbiBhbmQgdGhlIHJlcXVlc3QgaXMgdG8gKm5vdCByZXRyeSouIFRoZSBwYXRjaCB0aGVuIHRyaWdnZXJzIGEgYGtjb21wYWN0ZGAgd2FrZXVwIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBhbmQsIGNydWNpYWxseSwganVtcHMgdG8gYG5vcGFnZWAuIFNvLCB0aGUgbG9naWMgaXMsIGluIHRoaXMgc3BlY2lmaWMgY2FzZSwgcmF0aGVyIHRoYW4gcmV0cnlpbmcgaW4gdGhlIHNsb3cgcGF0aCBvciBhdHRlbXB0aW5nIG1vcmUgbWVtb3J5IG1hbmFnZW1lbnQgdGFza3MsIHdlJ3JlIGdpdmluZyB1cCBhbmQgZ29pbmcgc3RyYWlnaHQgdG8gYG5vcGFnZWAsIHByZXN1bWFibHkgdG8gYWxsb3cgdGhlIGZhdWx0IHRvIGJlIGhhbmRsZWQgaW4gYW5vdGhlciB3YXkgKGxpa2UgcmV0dXJuaW5nIGFuIGVycm9yIHRvIHRoZSBjYWxsZXIsIG9yIHNpbWlsYXIpLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICdjb3N0bHkgb3JkZXInIHRydWx5IG1lYW5zIGZvciBhIHN0YXJ0LCBidXQgdGhlIGltcGxpY2F0aW9uIHNlZW1zIGNsZWFyOiBvcHRpbWl6ZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB3ZSAqYWJzb2x1dGVseSogY2Fubm90IHN0YWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwgb2YgdGhlIG1lbW9yeSBhbGxvY2F0b3IuIEl0J3Mgbm90IGNvc21ldGljOyBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZmxvdyBvZiBjb250cm9sIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMuIEkgd2FudCB0byB0cmFjZSB0aGUgY29kZSBwYXRocyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcnMgb3Igc3Vic3lzdGVtcyB0aGF0IHNldCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcgb24gYWxsb2NhdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIFwiY29zdGx5XCIsIGFuZCBzZWUgdGhlIHBvc3NpYmxlIGNvbnNlcXVlbmNlcy4gSXQncyBnb2luZyB0byBhZmZlY3QgYWxsb2NhdGlvbiBwYXRocyB0aGF0IGRlbWFuZCB0aGlzIHBhcnRpY3VsYXIgZmFzdC1mYWlsIGJlaGF2aW91ci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgcmVzdCBvZiBgbW0vcGFnZV9hbGxvYy5jYCB0byBzZWUgaG93IG90aGVyIHBhcnRzIGludGVyYWN0IHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjQzLjM1MzY5NDY4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDczNTg2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hbGxvY19wYWdlc19zbG93cGF0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTQ3MzI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqXFxubW0vcGFnZV9hbGxvYy5jOjQ3MzM6X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00NzM0LVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBhbGxvY19jb250ZXh0ICphYylcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz01MzUyPXN0cnVjdCBwYWdlICpfX2FsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNTQxNy1cXG5tbS9wYWdlX2FsbG9jLmM6NTQxODpcXHRwYWdlID0gX19hbGxvY19wYWdlc19zbG93cGF0aChhbGxvY19nZnAsIG9yZGVyLCBcXHUwMDI2YWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy01NDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyODo0My42MDEwNjcxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc0NDk2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIGluIHRoZSBwYWdlIGFsbG9jYXRvci4uLiB0aGF0J3MgYSAqa2V5KiBmdW5jdGlvbi4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjcml0aWNhbCByb2xlLiBJIHNlZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gYGNvc3RseV9vcmRlcmAgYW5kIHRoZSBgX19HRlBfTk9SRVRSWWAgZmxhZy4gSW50ZXJlc3RpbmcuIEFuZCBpdCBjYWxscyBgd2FrZXVwX2tjb21wYWN0ZGAg4oCTIHRoYXQgY291bGQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBTaW5jZSBgbW0vcGFnZV9hbGxvYy5jYCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0LCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4uIEJ1dCBgd2FrZXVwX2tjb21wYWN0ZGAgaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AsIHJpZ2h0PyBUaGF0IHBvaW50cyBkaXJlY3RseSB0byB0aGUgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBkZXBlbmRlbmN5LiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgSSdtIHNlZWluZyBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgY29tcGFjdGlvbiBjb2RlLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZpZ3VyaW5nIG91dCB3aGF0IG1pZ2h0IGJlIHJlYWNoYWJsZSBieSBteSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NDcuNDM4NTE5OTEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzUxNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndha2V1cF9rY29tcGFjdGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYz0yOTY1PXN0YXRpYyBpbnQgY29tcGFjdGlvbl9wcm9hY3RpdmVuZXNzX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMjk4MS1cXHRcXHRcXHRwZ2RhdC1cXHUwMDNlcHJvYWN0aXZlX2NvbXBhY3RfdHJpZ2dlciA9IHRydWU7XFxubW0vY29tcGFjdGlvbi5jOjI5ODI6XFx0XFx0XFx0dHJhY2VfbW1fY29tcGFjdGlvbl93YWtldXBfa2NvbXBhY3RkKHBnZGF0LVxcdTAwM2Vub2RlX2lkLCAtMSxcXG5tbS9jb21wYWN0aW9uLmMtMjk4My1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHBnZGF0LVxcdTAwM2Vucl96b25lcyAtIDEpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jPTMwNzQ9c3RhdGljIHZvaWQga2NvbXBhY3RkX2RvX3dvcmsocGdfZGF0YV90ICpwZ2RhdClcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0zMTUzLVxcbm1tL2NvbXBhY3Rpb24uYzozMTU0OnZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpXFxubW0vY29tcGFjdGlvbi5jLTMxNTUte1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTMxNzQtXFxubW0vY29tcGFjdGlvbi5jOjMxNzU6XFx0dHJhY2VfbW1fY29tcGFjdGlvbl93YWtldXBfa2NvbXBhY3RkKHBnZGF0LVxcdTAwM2Vub2RlX2lkLCBvcmRlcixcXG5tbS9jb21wYWN0aW9uLmMtMzE3Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHRoaWdoZXN0X3pvbmVpZHgpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MzM9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ5MDAtXFx0XFx0aWYgKHByZWZlcnJlZF96b25lKVxcbm1tL3BhZ2VfYWxsb2MuYzo0OTAxOlxcdFxcdFxcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXFx1MDAzZXpvbmVfcGdkYXQsIG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00OTAyLVxcdFxcdFxcdFxcdFxcdCBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4KTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTcwNTQ9c3RhdGljIGludCBiYWxhbmNlX3BnZGF0KHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTcyNTYtXFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NzI1NzpcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBwYWdlYmxvY2tfb3JkZXIsIGhpZ2hlc3Rfem9uZWlkeCk7XFxubW0vdm1zY2FuLmMtNzI1OC1cXHR9XFxuLS1cXG5tbS92bXNjYW4uYz03MjkyPXN0YXRpYyB2b2lkIGtzd2FwZF90cnlfdG9fc2xlZXAocGdfZGF0YV90ICpwZ2RhdCwgaW50IGFsbG9jX29yZGVyLCBpbnQgcmVjbGFpbV9vcmRlcixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTczMjItXFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NzMyMzpcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBhbGxvY19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcXG5tbS92bXNjYW4uYy03MzI0LVxcbi0tXFxubW0vdm1zY2FuLmM9NzQ3MD12b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9mbGFncywgaW50IG9yZGVyLFxcbi0tXFxubW0vdm1zY2FuLmMtNzUwNS1cXHRcXHRpZiAoIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSkpXFxubW0vdm1zY2FuLmM6NzUwNjpcXHRcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBvcmRlciwgaGlnaGVzdF96b25laWR4KTtcXG5tbS92bXNjYW4uYy03NTA3LVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NDcuNTE4Mjc3NTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNzM0MzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBNZW1vcnkgQ29tcGFjdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBgd2FrZXVwX2tjb21wYWN0ZGAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgaXRzIGxvY2F0aW9uIOKAkyBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHR1Y2tlZCBhd2F5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGtlcm5lbCdzIGEgc3ByYXdsaW5nIGNvZGViYXNlLCBzbyBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0J3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbWFrZSBzdXJlIGBjb21wYWN0aW9uLmNgIGlzIGFjdHVhbGx5IGJlaW5nIGNvbXBpbGVkIHdpdGhpbiB0aGUgYG1tYCBzdWJzeXN0ZW0uIFRoaXMgaXMgYWJvdXQgc29saWRpZnlpbmcgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCB2ZXJpZnlpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwaWVjZXMgYW5kIHJlZnJlc2hpbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcy4gSSB3YW50IHRvIGtlZXAgdGhlIG1lbnRhbCBtYXAgdXAgdG8gZGF0ZS4gSSB3YW50IHRvIGJ1aWxkIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb21wYWN0aW9uIGlzIHNldCB1cCBpbiBtZW1vcnkuIEl0J3Mgc2Vjb25kIG5hdHVyZSB0byBjcm9zcy1yZWZlcmVuY2UgbGlrZSB0aGlzLCBrZWVwcyBtZSBzaGFycC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjUwLjY0NTYyMzIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY2OTI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wYWN0aW9uLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9NTE9b2JqLXlcXHRcXHRcXHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXFxcXG4tLVxcbm1tL01ha2VmaWxlLTU1LVxcdFxcdFxcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXFxcXG5tbS9NYWtlZmlsZTo1NjpcXHRcXHRcXHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxcXFxubW0vTWFrZWZpbGUtNTctXFx0XFx0XFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTAuNzA4Mjk2MzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwMjgwOTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGNvbXBhY3Rpb24ub2AncyBCdWlsZCBMb2NhdGlvbioqXG5cbkhtbSwgc28gYGNvbXBhY3Rpb24ub2AgaXMgYmVpbmcgYnVpbHQgYXMgcGFydCBvZiB0aGUgYG9iai15YCBsaXN0LiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgaW5jbHVzaW9uIGFuZCBkZXRlcm1pbmUgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBzb3VyY2UgZmlsZSBpcyB1bHRpbWF0ZWx5IGdldHRpbmcgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgYnVpbGQgcnVsZXMgdGhhdCBnb3Zlcm4gdGhpcyBzcGVjaWZpYyBvYmplY3QgZmlsZSdzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgY29uZmlybSBpZiB0aGUgYnVpbGQgbG9jYXRpb24gaXMgYXMgZXhwZWN0ZWQgb3IsIGlmIG5vdCwgcmV2ZWFsIHRoZSBpbmNsdWRlIGNoYWluIHdoaWNoIG1heSBwcm92aWRlIGluc2lnaHRzIGludG8gYSBidWlsZCBpc3N1ZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTMuODExMTA4MDI5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcbiAgNTE6XFx0b2JqLXlcXHRcXHRcXHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXFxcXG4gIDUyOlxcdFxcdFxcdFxcdCAgIG1hY2Nlc3MubyBwYWdlLXdyaXRlYmFjay5vIGZvbGlvLWNvbXBhdC5vIFxcXFxcXG4gIDUzOlxcdFxcdFxcdFxcdCAgIHJlYWRhaGVhZC5vIHN3YXAubyB0cnVuY2F0ZS5vIHZtc2Nhbi5vIHNocmlua2VyLm8gXFxcXFxcbiAgNTQ6XFx0XFx0XFx0XFx0ICAgc2htZW0ubyB1dGlsLm8gbW16b25lLm8gdm1zdGF0Lm8gYmFja2luZy1kZXYubyBcXFxcXFxuICA1NTpcXHRcXHRcXHRcXHQgICBtbV9pbml0Lm8gcGVyY3B1Lm8gc2xhYl9jb21tb24ubyBcXFxcXFxuICA1NjpcXHRcXHRcXHRcXHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxcXFxuICA1NzpcXHRcXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcbiAgNTg6XFx0XFx0XFx0XFx0ICAgZGVidWcubyBndXAubyBtbWFwX2xvY2subyB2bWFfaW5pdC5vICQobW11LXkpXFxuICA1OTpcXHRcXG4gIDYwOlxcdCMgR2l2ZSAncGFnZV9hbGxvYycgaXRzIG93biBtb2R1bGUtcGFyYW1ldGVyIG5hbWVzcGFjZVxcbiAgNjE6XFx0cGFnZS1hbGxvYy15IDo9IHBhZ2VfYWxsb2Mub1xcbiAgNjI6XFx0cGFnZS1hbGxvYy0kKENPTkZJR19TSFVGRkxFX1BBR0VfQUxMT0NBVE9SKSArPSBzaHVmZmxlLm9cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0IyBHaXZlICdtZW1vcnlfaG90cGx1ZycgaXRzIG93biBtb2R1bGUtcGFyYW1ldGVyIG5hbWVzcGFjZVxcbiAgNjU6XFx0bWVtb3J5LWhvdHBsdWctJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICs9IG1lbW9yeV9ob3RwbHVnLm9cXG4gIDY2OlxcdFxcbiAgNjc6XFx0b2JqLXkgKz0gcGFnZS1hbGxvYy5vXFxuICA2ODpcXHRvYmoteSArPSBwYWdlX2ZyYWdfY2FjaGUub1xcbiAgNjk6XFx0b2JqLXkgKz0gaW5pdC1tbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjUzLjgxMTE2OTA0OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU4MTI2Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29tcGFjdGlvbiBEZXBlbmRlbmN5KipcblxuUmlnaHQsIHNvIGBjb21wYWN0aW9uLm9gIGlzIGJlaW5nIGJ1aWx0IGV2ZXJ5IHRpbWUuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyB0aGVyZSdzIGEgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24gaW4gdGhlIGtlcm5lbCBjb25maWcuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBpbiBgbW0vY29tcGFjdGlvbi5jYC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGAjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05gIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGluIHRoZXJlIGRldGVybWluaW5nIGlmIHRoZSBjb21wYWN0aW9uIGNvZGUgaXMgYWN0dWFsbHkgaW5jbHVkZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGVyZSB0aGF0IGFyZSBjYXVzaW5nIGl0IHRvIGJlIGJ1aWx0IHdoZW4gaXQgc2hvdWxkbid0LiBUaW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIHNvdXJjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTYuNDY5Mjk3NTEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzMTI1ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vY29tcGFjdGlvbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYy0yOS1cXG5tbS9jb21wYWN0aW9uLmM6MzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTMxLS8qXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9NjA9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNjItXFxubW0vY29tcGFjdGlvbi5jOjYzOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxcbm1tL2NvbXBhY3Rpb24uYy02NC1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz05Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTE2LVxcbm1tL2NvbXBhY3Rpb24uYzoxMTc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTExOC1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz00OTE9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTQ5NC19XFxubW0vY29tcGFjdGlvbi5jOjQ5NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9jb21wYWN0aW9uLmMtNDk2LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTEzNzItXFxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9jb21wYWN0aW9uLmM6MTM3NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0zMzUxPXN1YnN5c19pbml0Y2FsbChrY29tcGFjdGRfaW5pdClcXG5tbS9jb21wYWN0aW9uLmMtMzM1Mi1cXG5tbS9jb21wYWN0aW9uLmM6MzM1MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTYuNzUxNjMzOTU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDU3NzI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIENvbXBhY3Rpb24gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZGVmaW5pdGVseSB1c2VkIHdpdGhpbiBgbW0vY29tcGFjdGlvbi5jYCDigJMgdGhhdCdzIGEgZ2l2ZW4uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgYHdha2V1cF9rY29tcGFjdGRgIGJlaGF2ZXMgKndpdGhvdXQqIGNvbXBhY3Rpb24gZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0IGZ1bmN0aW9uIGlzICpub3QqIGRlZmluZWQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgdW5zZXQuIEl0J3MgYSBrZXkgc2FuaXR5IGNoZWNrLiBJJ2QgZXhwZWN0IHRoZSBjb2RlIHRvIGd1YXJkIGl0cyBkZWZpbml0aW9uIHdpdGggYW4gYCNpZmRlZiBDT05GSUdfQ09NUEFDVElPTmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSwgb3Igc29tZXRoaW5nIGxvZ2ljYWxseSBlcXVpdmFsZW50LCBzdWNoIHRoYXQgd2hlbiB0aGUgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmLCB0aGUgZnVuY3Rpb24gaXMgZWl0aGVyIHVuZGVmaW5lZCwgcmVwbGFjZWQgd2l0aCBhIHBsYWNlaG9sZGVyLCBvciBjb25kaXRpb25hbCBsb2dpYyB0aGF0IHByZXZlbnRzIHRoZSByZWxhdGVkIGNvZGUgZnJvbSBiZWluZyBpbnZva2VkLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGFzc3VtcHRpb24sIGJlY2F1c2UgSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgY29kZSBiYXNlIGhhbmRsZXMgdGhlIGFic2VuY2Ugb2YgdGhlIGNvbXBhY3Rpb24gZnVuY3Rpb25hbGl0eSBncmFjZWZ1bGx5LiBObyBwb2ludCBjYWxsaW5nIGEgZnVuY3Rpb24gaWYgaXQncyBub3QgYWN0dWFsbHkgdGhlcmUuIFRoYXQncyBhIGNsYXNzaWMgc291cmNlIG9mIHJ1bnRpbWUgZXJyb3JzLCBzbyBJJ20gbG9va2luZyBmb3Igc29saWQgcHJlcHJvY2Vzc29yIGd1YXJkcmFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyOTowMC4xNTc0MDg0NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjkxOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndha2V1cF9rY29tcGFjdGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg9MTA3PWV4dGVybiB2b2lkIF9fbWVtaW5pdCBrY29tcGFjdGRfc3RvcChpbnQgbmlkKTtcXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMDg6ZXh0ZXJuIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpO1xcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEwOS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyNT1zdGF0aWMgaW5saW5lIHZvaWQga2NvbXBhY3RkX3N0b3AoaW50IG5pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEyOC1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMjk6c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzAtXFx0XFx0XFx0XFx0aW50IG9yZGVyLCBpbnQgaGlnaGVzdF96b25laWR4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyOTowMC4yMjYxMDU3NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDk4NDExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gRmlyc3QsIGl0J3MgY2xlYXIgdGhhdCBgd2FrZXVwX2tjb21wYWN0ZGAgZG9lcyBub3RoaW5nIHdpdGhvdXQgYENPTkZJR19DT01QQUNUSU9OYCwgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBwcm9wZXIgdGVzdGluZy4gVGhlIHBhdGNoIGFsc28gcmVmZXJlbmNlcyBgY29zdGx5X29yZGVyYCBhbmQgYF9fR0ZQX05PUkVUUllgLiBgY29zdGx5X29yZGVyYCB0eXBpY2FsbHkgbWVhbnMgYW4gb3JkZXIgZ3JlYXRlciB0aGFuIDMsIHdoaWNoIGlzIGZhaXJseSBzaWduaWZpY2FudC4gVGhlIGNvcmUgY2hhbmdlIHJlc2lkZXMgd2l0aGluIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjaGVjayBpZiBgQ09ORklHX05VTUFgIHdhcyByZXF1aXJlZCwgZ2l2ZW4gdGhlIG1lbnRpb24gb2YgXCJjcm9zcy1OVU1BIGludGVyZmVyZW5jZSxcIiBidXQgaXQgYXBwZWFycyB0aGlzIGlzbid0IHRoZSBjYXNlLiBUaGUgdXNlIG9mIGBwcmVmZXJyZWRfem9uZS1cdTAwM2V6b25lX3BnZGF0YCBpbmRpY2F0ZXMgdGhpcyB3b3JrcyBldmVuIHdpdGhvdXQgTlVNQSBlbmFibGVkLCBpdCBpcyBtZXJlbHkgd2FraW5nIHVwIGtjb21wYWN0ZCBvbiB0aGUgcHJlZmVycmVkIG5vZGUuXG5cblRoZSBwYXRjaCdzIGNvcmUgbG9naWMgbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIHRvIGFkZDpcblxuYGBgY1xuXHRpZiAoY29zdGx5X29yZGVyIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX05PUkVUUlkpKSB7XG5cdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcblxuXHRcdGlmIChwcmVmZXJyZWRfem9uZSlcblx0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG5cdFx0XHRcdFx0IGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCk7XG5cdFx0Z290byBub3BhZ2U7XG5cdH1cbmBgYFxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNraXBzIGRpcmVjdCBjb21wYWN0aW9uIGFuZCBkaXJlY3QgcmVjbGFpbSBmb3IgY29zdGx5LCBub24tcmV0cmlhYmxlIGFsbG9jYXRpb25zLCBpbnN0ZWFkIHdha2luZyB1cCBga2NvbXBhY3RkYCBhbmQgaW1tZWRpYXRlbHkgZmFpbGluZyB0aGUgYWxsb2NhdGlvbi4gVGhpcyBjYW4gaW5mbHVlbmNlIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yIGFuZCBjb21wYWN0aW9uLlxuXG5Ob3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbGJlaXQgYSBzbG93ZXIgb25lIHRoYW4gYF9fYWxsb2NfcGFnZXNgLiBTbywgZG8gSSBwdXQgaXQgaW50byBgRm9jdXNTeW1ib2xzYD8gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IG5vdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBJIHByb2JhYmx5IHNob3VsZCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgLiBNYXliZSBJJ2xsIHB1dCBpdCBpbiBhbnl3YXkuIEJ1dCB0aGlzIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzIHNwZWNpZmljIHBhdGgsIGJ1dCBpdCdzIGNhbGxlZCBmb3IgYWxtb3N0IGFsbCBhbGxvY2F0aW9ucyB0aGF0IGRvbid0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIEZvciBub3csIEknbGwga2VlcCB0aGUgYEZvY3VzU3ltYm9sc2AgZW1wdHkuXG5cbkRvdWJsZS1jaGVja2luZywgYENPTkZJR19DT01QQUNUSU9OYCByZW1haW5zIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgc2xvdyBwYXRoIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gSXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBgX19HRlBfTk9SRVRSWWAsIHBvdGVudGlhbGx5IGltcGFjdGluZyBhbGxvY2F0aW9uIHN1Y2Nlc3MgYW5kIGNvbXBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTYsIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjk6MTEuMTc1OTQ4OTMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4OTE5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFnZSBhbGxvY2F0b3IncyBzbG93IHBhdGggdG8gZmFpbCBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGVhcmx5LCB3aGlsZSB3YWtpbmcgdXAga2NvbXBhY3RkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhZmZlY3RzIGFsbG9jYXRpb24gc3VjY2VzcyByYXRlcyBhbmQgY29tcGFjdGlvbiBiZWhhdmlvci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJ3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 10:50:12 +0000 UTC FinishedAt: 2026-07-11 11:29:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "eb2a58a36ca36dd2df22cc8284663aa2f86db9c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "eb2a58a36ca36dd2df22cc8284663aa2f86db9c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "21e38dc8-e40a-4b79-9c74-13da7cc601e8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFnZSBhbGxvY2F0b3ImIzM5O3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDJkMzAwYTliZTVhNzk1YzVkNGMwYWMzNGMyNzI2M2YzODhmZDJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6Mjg6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfYWxsb2MuY1xuQEAgLTQ4ODMsNiAmIzQzOzQ4ODMsMjYgQEAgX19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0LyogSWYgYWxsb2NhdGlvbiBoYXMgdGFrZW4gZXhjZXNzaXZlbHkgbG9uZywgd2FybiBhYm91dCBpdCAqL1xuIFx0Y2hlY2tfYWxsb2Nfc3RhbGxfd2FybihnZnBfbWFzaywgYWMtXHUwMDNlbm9kZW1hc2ssIG9yZGVyLCBhbGxvY19zdGFydF90aW1lKTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24mIzM5O3RcbiYjNDM7XHQgKiBzdGFsbCBvbiBkaXJlY3QgY29tcGFjdGlvbiBvciByZWNsYWltOyBpbnN0ZWFkLCBraWNrXG4mIzQzO1x0ICoga2NvbXBhY3RkIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBzbyBsYXJnZSBwYWdlcyBtYXkgYmVjb21lXG4mIzQzO1x0ICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBEaXJlY3QgY29tcGFjdGlvbiBpcyB3YXkgdG9vIGNvc3RseSBmb3IgaG90IGFsbG9jYXRpb24gcGF0aHMgb25cbiYjNDM7XHQgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJc1xuJiM0MztcdCAqIGV2ZXJ5IENQVS4gIE9ubHkgd2FrZSBrY29tcGFjdGQgb24gdGhlIGxvY2FsIG5vZGUgdG8gYXZvaWRcbiYjNDM7XHQgKiBjcm9zcy1OVU1BIGludGVyZmVyZW5jZSB3aXRoIHVucmVsYXRlZCB3b3JrbG9hZHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGNvc3RseV9vcmRlciBcdTAwMjZcdTAwMjYgKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9OT1JFVFJZKSkge1xuJiM0MztcdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocHJlZmVycmVkX3pvbmUpXG4mIzQzO1x0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG4mIzQzO1x0XHRcdFx0XHQgYWMtXHUwMDNlaGlnaGVzdF96b25laWR4KTtcbiYjNDM7XHRcdGdvdG8gbm9wYWdlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBUcnkgZGlyZWN0IHJlY2xhaW0gYW5kIHRoZW4gYWxsb2NhdGluZyAqL1xuIFx0aWYgKCFjb21wYWN0X2ZpcnN0KSB7XG4gXHRcdHBhZ2UgPSBfX2FsbG9jX3BhZ2VzX2RpcmVjdF9yZWNsYWltKGdmcF9tYXNrLCBvcmRlciwgYWxsb2NfZmxhZ3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWdlIGFsbG9jYXRvciYjMzk7cyBzbG93IHBhdGggdG8gZmFpbCBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGVhcmx5LCB3aGlsZSB3YWtpbmcgdXAga2NvbXBhY3RkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhZmZlY3RzIGFsbG9jYXRpb24gc3VjY2VzcyByYXRlcyBhbmQgY29tcGFjdGlvbiBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDExOjI4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IGE2MzczM2RhYzY1OWUzLi4yZDAyNzAzZDhmMGY2NyAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtNDg4Myw2ICYjNDM7NDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsCiAJLyogSWYgYWxsb2NhdGlvbiBoYXMgdGFrZW4gZXhjZXNzaXZlbHkgbG9uZywgd2FybiBhYm91dCBpdCAqLwogCWNoZWNrX2FsbG9jX3N0YWxsX3dhcm4oZ2ZwX21hc2ssIGFjLSZndDtub2RlbWFzaywgb3JkZXIsIGFsbG9jX3N0YXJ0X3RpbWUpOwogCiYjNDM7CS8qCiYjNDM7CSAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24mIzM5O3QKJiM0MzsJICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2ljawomIzQzOwkgKiBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlIHNvIGxhcmdlIHBhZ2VzIG1heSBiZWNvbWUKJiM0MzsJICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuCiYjNDM7CSAqCiYjNDM7CSAqIERpcmVjdCBjb21wYWN0aW9uIGlzIHdheSB0b28gY29zdGx5IGZvciBob3QgYWxsb2NhdGlvbiBwYXRocyBvbgomIzQzOwkgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJcwomIzQzOwkgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkCiYjNDM7CSAqIGNyb3NzLU5VTUEgaW50ZXJmZXJlbmNlIHdpdGggdW5yZWxhdGVkIHdvcmtsb2Fkcy4KJiM0MzsJICovCiYjNDM7CWlmIChjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSkpIHsKJiM0MzsJCXN0cnVjdCB6b25lICpwcmVmZXJyZWRfem9uZSA9IGFjLSZndDtwcmVmZXJyZWRfem9uZXJlZi0mZ3Q7em9uZTsKJiM0MzsKJiM0MzsJCWlmIChwcmVmZXJyZWRfem9uZSkKJiM0MzsJCQl3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLSZndDt6b25lX3BnZGF0LCBvcmRlciwKJiM0MzsJCQkJCSBhYy0mZ3Q7aGlnaGVzdF96b25laWR4KTsKJiM0MzsJCWdvdG8gbm9wYWdlOwomIzQzOwl9CiYjNDM7CiAJLyogVHJ5IGRpcmVjdCByZWNsYWltIGFuZCB0aGVuIGFsbG9jYXRpbmcgKi8KIAlpZiAoIWNvbXBhY3RfZmlyc3QpIHsKIAkJcGFnZSA9IF9fYWxsb2NfcGFnZXNfZGlyZWN0X3JlY2xhaW0oZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBtbS9wYWdlX2FsbG9jLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEsIG9idmlvdXNseSwgZGVhbGluZyB3aXRoIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBpbml0aWFsIGFsbG9jYXRpb24gYXR0ZW1wdHMgZmFpbC4gSSYjMzk7bSBzZWVpbmcgYSBuZXcgY29uZGl0aW9uIGJlaW5nIGludHJvZHVjZWQ6IGBjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSlgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7Y29zdGx5JiMzNDsgaW4gdGhpcyBjb250ZXh0PyBIaWdoZXIgb3JkZXIgYWxsb2NhdGlvbnMsIEkmIzM5O2QgYXNzdW1lLCBnaXZlbiB0aGUgYGNvc3RseV9vcmRlcmAgdmFyaWFibGUuIEFuZCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcuLi4gdGhhdCYjMzk7cyB0aGUgcmVhbCBrZXkgaGVyZS4gVGhpcyBzdWdnZXN0cyB0aGUgY2FsbGVyIGlzIGV4cGxpY2l0bHkgc2F5aW5nICYjMzQ7ZG9uJiMzOTt0IHJldHJ5LCBmYWlsIGZhc3QmIzM0OyB3aGljaCBpcyBpbXBvcnRhbnQgaW4gc3BlY2lmaWMsIHNlbnNpdGl2ZSBzaXR1YXRpb25zLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgdGhpcyB2ZXJ5IHNwZWNpZmljIHNjZW5hcmlvOiBhICpjb3N0bHkqIGFsbG9jYXRpb24gYW5kIHRoZSByZXF1ZXN0IGlzIHRvICpub3QgcmV0cnkqLiBUaGUgcGF0Y2ggdGhlbiB0cmlnZ2VycyBhIGBrY29tcGFjdGRgIHdha2V1cCBvbiB0aGUgcHJlZmVycmVkIG5vZGUgYW5kLCBjcnVjaWFsbHksIGp1bXBzIHRvIGBub3BhZ2VgLiBTbywgdGhlIGxvZ2ljIGlzLCBpbiB0aGlzIHNwZWNpZmljIGNhc2UsIHJhdGhlciB0aGFuIHJldHJ5aW5nIGluIHRoZSBzbG93IHBhdGggb3IgYXR0ZW1wdGluZyBtb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHRhc2tzLCB3ZSYjMzk7cmUgZ2l2aW5nIHVwIGFuZCBnb2luZyBzdHJhaWdodCB0byBgbm9wYWdlYCwgcHJlc3VtYWJseSB0byBhbGxvdyB0aGUgZmF1bHQgdG8gYmUgaGFuZGxlZCBpbiBhbm90aGVyIHdheSAobGlrZSByZXR1cm5pbmcgYW4gZXJyb3IgdG8gdGhlIGNhbGxlciwgb3Igc2ltaWxhcikuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzk7Y29zdGx5IG9yZGVyJiMzOTsgdHJ1bHkgbWVhbnMgZm9yIGEgc3RhcnQsIGJ1dCB0aGUgaW1wbGljYXRpb24gc2VlbXMgY2xlYXI6IG9wdGltaXplIGZvciBzaXR1YXRpb25zIHdoZXJlIHdlICphYnNvbHV0ZWx5KiBjYW5ub3Qgc3RhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSBsZXZlbCBvZiB0aGUgbWVtb3J5IGFsbG9jYXRvci4gSXQmIzM5O3Mgbm90IGNvc21ldGljOyBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZmxvdyBvZiBjb250cm9sIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMuIEkgd2FudCB0byB0cmFjZSB0aGUgY29kZSBwYXRocyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcnMgb3Igc3Vic3lzdGVtcyB0aGF0IHNldCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcgb24gYWxsb2NhdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlICYjMzQ7Y29zdGx5JiMzNDssIGFuZCBzZWUgdGhlIHBvc3NpYmxlIGNvbnNlcXVlbmNlcy4gSXQmIzM5O3MgZ29pbmcgdG8gYWZmZWN0IGFsbG9jYXRpb24gcGF0aHMgdGhhdCBkZW1hbmQgdGhpcyBwYXJ0aWN1bGFyIGZhc3QtZmFpbCBiZWhhdmlvdXIuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYG1tL3BhZ2VfYWxsb2MuY2AgdG8gc2VlIGhvdyBvdGhlciBwYXJ0cyBpbnRlcmFjdCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hbGxvY19wYWdlc19zbG93cGF0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9NDczMj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpcbm1tL3BhZ2VfYWxsb2MuYzo0NzMzOl9fYWxsb2NfcGFnZXNfc2xvd3BhdGgoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbm1tL3BhZ2VfYWxsb2MuYy00NzM0LVx0XHRcdFx0XHRcdHN0cnVjdCBhbGxvY19jb250ZXh0ICphYylcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTM1Mj1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01NDE3LVxubW0vcGFnZV9hbGxvYy5jOjU0MTg6XHRwYWdlID0gX19hbGxvY19wYWdlc19zbG93cGF0aChhbGxvY19nZnAsIG9yZGVyLCBcdTAwMjZhYyk7XG5tbS9wYWdlX2FsbG9jLmMtNTQxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODY4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgX19hbGxvY19wYWdlc19zbG93cGF0aGAgaW4gdGhlIHBhZ2UgYWxsb2NhdG9yLi4uIHRoYXQmIzM5O3MgYSAqa2V5KiBmdW5jdGlvbi4gSXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY3JpdGljYWwgcm9sZS4gSSBzZWUgdGhlIGNoYW5nZSBmb2N1c2VzIG9uIGBjb3N0bHlfb3JkZXJgIGFuZCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcuIEludGVyZXN0aW5nLiBBbmQgaXQgY2FsbHMgYHdha2V1cF9rY29tcGFjdGRgIOKAkyB0aGF0IGNvdWxkIGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0IGZvciBzdGF0ZSB0cmFuc2l0aW9ucy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGNvbWUgaW50byBwbGF5IGhlcmUuIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMuIFNpbmNlIGBtbS9wYWdlX2FsbG9jLmNgIGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQsIHRoYXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4uIEJ1dCBgd2FrZXVwX2tjb21wYWN0ZGAgaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AsIHJpZ2h0PyBUaGF0IHBvaW50cyBkaXJlY3RseSB0byB0aGUgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBkZXBlbmRlbmN5LiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgSSYjMzk7bSBzZWVpbmcgYWN0dWFsbHkgaW50ZXJhY3RzIHdpdGggdGhlIGNvbXBhY3Rpb24gY29kZS4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBmaWd1cmluZyBvdXQgd2hhdCBtaWdodCBiZSByZWFjaGFibGUgYnkgbXkgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dha2V1cF9rY29tcGFjdGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vY29tcGFjdGlvbi5jPTI5NjU9c3RhdGljIGludCBjb21wYWN0aW9uX3Byb2FjdGl2ZW5lc3Nfc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9jb21wYWN0aW9uLmMtMjk4MS1cdFx0XHRwZ2RhdC1cdTAwM2Vwcm9hY3RpdmVfY29tcGFjdF90cmlnZ2VyID0gdHJ1ZTtcbm1tL2NvbXBhY3Rpb24uYzoyOTgyOlx0XHRcdHRyYWNlX21tX2NvbXBhY3Rpb25fd2FrZXVwX2tjb21wYWN0ZChwZ2RhdC1cdTAwM2Vub2RlX2lkLCAtMSxcbm1tL2NvbXBhY3Rpb24uYy0yOTgzLVx0XHRcdFx0XHRcdFx0ICAgICBwZ2RhdC1cdTAwM2Vucl96b25lcyAtIDEpO1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0zMDc0PXN0YXRpYyB2b2lkIGtjb21wYWN0ZF9kb193b3JrKHBnX2RhdGFfdCAqcGdkYXQpXG4tLVxubW0vY29tcGFjdGlvbi5jLTMxNTMtXG5tbS9jb21wYWN0aW9uLmM6MzE1NDp2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCwgaW50IG9yZGVyLCBpbnQgaGlnaGVzdF96b25laWR4KVxubW0vY29tcGFjdGlvbi5jLTMxNTUte1xuLS1cbm1tL2NvbXBhY3Rpb24uYy0zMTc0LVxubW0vY29tcGFjdGlvbi5jOjMxNzU6XHR0cmFjZV9tbV9jb21wYWN0aW9uX3dha2V1cF9rY29tcGFjdGQocGdkYXQtXHUwMDNlbm9kZV9pZCwgb3JkZXIsXG5tbS9jb21wYWN0aW9uLmMtMzE3Ni1cdFx0XHRcdFx0XHRcdGhpZ2hlc3Rfem9uZWlkeCk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ3MzM9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00OTAwLVx0XHRpZiAocHJlZmVycmVkX3pvbmUpXG5tbS9wYWdlX2FsbG9jLmM6NDkwMTpcdFx0XHR3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLVx1MDAzZXpvbmVfcGdkYXQsIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQ5MDItXHRcdFx0XHRcdCBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xuLS1cbm1tL3Ztc2Nhbi5jPTcwNTQ9c3RhdGljIGludCBiYWxhbmNlX3BnZGF0KHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcbi0tXG5tbS92bXNjYW4uYy03MjU2LVx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjcyNTc6XHRcdHdha2V1cF9rY29tcGFjdGQocGdkYXQsIHBhZ2VibG9ja19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTcyNTgtXHR9XG4tLVxubW0vdm1zY2FuLmM9NzI5Mj1zdGF0aWMgdm9pZCBrc3dhcGRfdHJ5X3RvX3NsZWVwKHBnX2RhdGFfdCAqcGdkYXQsIGludCBhbGxvY19vcmRlciwgaW50IHJlY2xhaW1fb3JkZXIsXG4tLVxubW0vdm1zY2FuLmMtNzMyMi1cdFx0ICovXG5tbS92bXNjYW4uYzo3MzIzOlx0XHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBhbGxvY19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTczMjQtXG4tLVxubW0vdm1zY2FuLmM9NzQ3MD12b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9mbGFncywgaW50IG9yZGVyLFxuLS1cbm1tL3Ztc2Nhbi5jLTc1MDUtXHRcdGlmICghKGdmcF9mbGFncyBcdTAwMjYgX19HRlBfRElSRUNUX1JFQ0xBSU0pKVxubW0vdm1zY2FuLmM6NzUwNjpcdFx0XHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBvcmRlciwgaGlnaGVzdF96b25laWR4KTtcbm1tL3Ztc2Nhbi5jLTc1MDctXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDExCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktlcm5lbCBNZW1vcnkgQ29tcGFjdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gYHdha2V1cF9rY29tcGFjdGRgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGl0cyBsb2NhdGlvbiDigJMgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0JiMzOTtzIHR1Y2tlZCBhd2F5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGtlcm5lbCYjMzk7cyBhIHNwcmF3bGluZyBjb2RlYmFzZSwgc28gSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O2xsIG1ha2Ugc3VyZSBgY29tcGFjdGlvbi5jYCBpcyBhY3R1YWxseSBiZWluZyBjb21waWxlZCB3aXRoaW4gdGhlIGBtbWAgc3Vic3lzdGVtLiBUaGlzIGlzIGFib3V0IHNvbGlkaWZ5aW5nIG15IG1lbnRhbCBtb2RlbCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSwgdmVyaWZ5aW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGllY2VzIGFuZCByZWZyZXNoaW5nIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1vZHVsZXMuIEkgd2FudCB0byBrZWVwIHRoZSBtZW50YWwgbWFwIHVwIHRvIGRhdGUuIEkgd2FudCB0byBidWlsZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgY29tcGFjdGlvbiBpcyBzZXQgdXAgaW4gbWVtb3J5LiBJdCYjMzk7cyBzZWNvbmQgbmF0dXJlIHRvIGNyb3NzLXJlZmVyZW5jZSBsaWtlIHRoaXMsIGtlZXBzIG1lIHNoYXJwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBhY3Rpb24ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTUxPW9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuLS1cbm1tL01ha2VmaWxlLTU1LVx0XHRcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXG5tbS9NYWtlZmlsZTo1NjpcdFx0XHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQwNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBjb21wYWN0aW9uLm9gJiMzOTtzIEJ1aWxkIExvY2F0aW9uKioKCkhtbSwgc28gYGNvbXBhY3Rpb24ub2AgaXMgYmVpbmcgYnVpbHQgYXMgcGFydCBvZiB0aGUgYG9iai15YCBsaXN0LiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgaW5jbHVzaW9uIGFuZCBkZXRlcm1pbmUgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBzb3VyY2UgZmlsZSBpcyB1bHRpbWF0ZWx5IGdldHRpbmcgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBydWxlcyB0aGF0IGdvdmVybiB0aGlzIHNwZWNpZmljIG9iamVjdCBmaWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgY29uZmlybSBpZiB0aGUgYnVpbGQgbG9jYXRpb24gaXMgYXMgZXhwZWN0ZWQgb3IsIGlmIG5vdCwgcmV2ZWFsIHRoZSBpbmNsdWRlIGNoYWluIHdoaWNoIG1heSBwcm92aWRlIGluc2lnaHRzIGludG8gYSBidWlsZCBpc3N1ZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdG9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuICA1MjpcdFx0XHRcdCAgIG1hY2Nlc3MubyBwYWdlLXdyaXRlYmFjay5vIGZvbGlvLWNvbXBhdC5vIFxcXG4gIDUzOlx0XHRcdFx0ICAgcmVhZGFoZWFkLm8gc3dhcC5vIHRydW5jYXRlLm8gdm1zY2FuLm8gc2hyaW5rZXIubyBcXFxuICA1NDpcdFx0XHRcdCAgIHNobWVtLm8gdXRpbC5vIG1tem9uZS5vIHZtc3RhdC5vIGJhY2tpbmctZGV2Lm8gXFxcbiAgNTU6XHRcdFx0XHQgICBtbV9pbml0Lm8gcGVyY3B1Lm8gc2xhYl9jb21tb24ubyBcXFxuICA1NjpcdFx0XHRcdCAgIGNvbXBhY3Rpb24ubyBzaG93X21lbS5vIFxcXG4gIDU3Olx0XHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4gIDU4Olx0XHRcdFx0ICAgZGVidWcubyBndXAubyBtbWFwX2xvY2subyB2bWFfaW5pdC5vICQobW11LXkpXG4gIDU5Olx0XG4gIDYwOlx0IyBHaXZlICYjMzk7cGFnZV9hbGxvYyYjMzk7IGl0cyBvd24gbW9kdWxlLXBhcmFtZXRlciBuYW1lc3BhY2VcbiAgNjE6XHRwYWdlLWFsbG9jLXkgOj0gcGFnZV9hbGxvYy5vXG4gIDYyOlx0cGFnZS1hbGxvYy0kKENPTkZJR19TSFVGRkxFX1BBR0VfQUxMT0NBVE9SKSAmIzQzOz0gc2h1ZmZsZS5vXG4gIDYzOlx0XG4gIDY0Olx0IyBHaXZlICYjMzk7bWVtb3J5X2hvdHBsdWcmIzM5OyBpdHMgb3duIG1vZHVsZS1wYXJhbWV0ZXIgbmFtZXNwYWNlXG4gIDY1Olx0bWVtb3J5LWhvdHBsdWctJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBtZW1vcnlfaG90cGx1Zy5vXG4gIDY2Olx0XG4gIDY3Olx0b2JqLXkgJiM0Mzs9IHBhZ2UtYWxsb2Mub1xuICA2ODpcdG9iai15ICYjNDM7PSBwYWdlX2ZyYWdfY2FjaGUub1xuICA2OTpcdG9iai15ICYjNDM7PSBpbml0LW1tLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBDb21wYWN0aW9uIERlcGVuZGVuY3kqKgoKUmlnaHQsIHNvIGBjb21wYWN0aW9uLm9gIGlzIGJlaW5nIGJ1aWx0IGV2ZXJ5IHRpbWUuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIGtub3cgdGhlcmUmIzM5O3MgYSBgQ09ORklHX0NPTVBBQ1RJT05gIG9wdGlvbiBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2sgZm9yIHRoYXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBgI2lmZGVmIENPTkZJR19DT01QQUNUSU9OYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBpbiB0aGVyZSBkZXRlcm1pbmluZyBpZiB0aGUgY29tcGFjdGlvbiBjb2RlIGlzIGFjdHVhbGx5IGluY2x1ZGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgaW4gdGhlcmUgdGhhdCBhcmUgY2F1c2luZyBpdCB0byBiZSBidWlsdCB3aGVuIGl0IHNob3VsZG4mIzM5O3QuIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQ09NUEFDVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmMtMjktXG5tbS9jb21wYWN0aW9uLmM6MzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMzEtLypcbi0tXG5tbS9jb21wYWN0aW9uLmM9NjA9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG4tLVxubW0vY29tcGFjdGlvbi5jLTYyLVxubW0vY29tcGFjdGlvbi5jOjYzOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxubW0vY29tcGFjdGlvbi5jLTY0LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz05Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXG4tLVxubW0vY29tcGFjdGlvbi5jLTExNi1cbm1tL2NvbXBhY3Rpb24uYzoxMTc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTE4LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz00OTE9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy00OTQtfVxubW0vY29tcGFjdGlvbi5jOjQ5NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cbm1tL2NvbXBhY3Rpb24uYy00OTYtXG4tLVxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xMzcyLVxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cbm1tL2NvbXBhY3Rpb24uYzoxMzc0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vY29tcGFjdGlvbi5jLTEzNzUtXG4tLVxubW0vY29tcGFjdGlvbi5jPTMzNTE9c3Vic3lzX2luaXRjYWxsKGtjb21wYWN0ZF9pbml0KVxubW0vY29tcGFjdGlvbi5jLTMzNTItXG5tbS9jb21wYWN0aW9uLmM6MzM1MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqVmVyaWZ5aW5nIENvbXBhY3Rpb24gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX0NPTVBBQ1RJT05gIGlzIGRlZmluaXRlbHkgdXNlZCB3aXRoaW4gYG1tL2NvbXBhY3Rpb24uY2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCB0aG91Z2gsIGlzIGhvdyBgd2FrZXVwX2tjb21wYWN0ZGAgYmVoYXZlcyAqd2l0aG91dCogY29tcGFjdGlvbiBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQgZnVuY3Rpb24gaXMgKm5vdCogZGVmaW5lZCB3aGVuIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB1bnNldC4gSXQmIzM5O3MgYSBrZXkgc2FuaXR5IGNoZWNrLiBJJiMzOTtkIGV4cGVjdCB0aGUgY29kZSB0byBndWFyZCBpdHMgZGVmaW5pdGlvbiB3aXRoIGFuIGAjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05gIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIG9yIHNvbWV0aGluZyBsb2dpY2FsbHkgZXF1aXZhbGVudCwgc3VjaCB0aGF0IHdoZW4gdGhlIGZlYXR1cmUgaXMgdHVybmVkIG9mZiwgdGhlIGZ1bmN0aW9uIGlzIGVpdGhlciB1bmRlZmluZWQsIHJlcGxhY2VkIHdpdGggYSBwbGFjZWhvbGRlciwgb3IgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBwcmV2ZW50cyB0aGUgcmVsYXRlZCBjb2RlIGZyb20gYmVpbmcgaW52b2tlZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoYXQgYXNzdW1wdGlvbiwgYmVjYXVzZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjb2RlIGJhc2UgaGFuZGxlcyB0aGUgYWJzZW5jZSBvZiB0aGUgY29tcGFjdGlvbiBmdW5jdGlvbmFsaXR5IGdyYWNlZnVsbHkuIE5vIHBvaW50IGNhbGxpbmcgYSBmdW5jdGlvbiBpZiBpdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlcmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNvdXJjZSBvZiBydW50aW1lIGVycm9ycywgc28gSSYjMzk7bSBsb29raW5nIGZvciBzb2xpZCBwcmVwcm9jZXNzb3IgZ3VhcmRyYWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2FrZXVwX2tjb21wYWN0ZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEwNz1leHRlcm4gdm9pZCBfX21lbWluaXQga2NvbXBhY3RkX3N0b3AoaW50IG5pZCk7XG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMDg6ZXh0ZXJuIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpO1xuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTA5LVxuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyNT1zdGF0aWMgaW5saW5lIHZvaWQga2NvbXBhY3RkX3N0b3AoaW50IG5pZClcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMjgtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMjk6c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEzMC1cdFx0XHRcdGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxNgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gRmlyc3QsIGl0JiMzOTtzIGNsZWFyIHRoYXQgYHdha2V1cF9rY29tcGFjdGRgIGRvZXMgbm90aGluZyB3aXRob3V0IGBDT05GSUdfQ09NUEFDVElPTmAsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgcHJvcGVyIHRlc3RpbmcuIFRoZSBwYXRjaCBhbHNvIHJlZmVyZW5jZXMgYGNvc3RseV9vcmRlcmAgYW5kIGBfX0dGUF9OT1JFVFJZYC4gYGNvc3RseV9vcmRlcmAgdHlwaWNhbGx5IG1lYW5zIGFuIG9yZGVyIGdyZWF0ZXIgdGhhbiAzLCB3aGljaCBpcyBmYWlybHkgc2lnbmlmaWNhbnQuIFRoZSBjb3JlIGNoYW5nZSByZXNpZGVzIHdpdGhpbiBgX19hbGxvY19wYWdlc19zbG93cGF0aGAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIGlmIGBDT05GSUdfTlVNQWAgd2FzIHJlcXVpcmVkLCBnaXZlbiB0aGUgbWVudGlvbiBvZiAmIzM0O2Nyb3NzLU5VTUEgaW50ZXJmZXJlbmNlLCYjMzQ7IGJ1dCBpdCBhcHBlYXJzIHRoaXMgaXNuJiMzOTt0IHRoZSBjYXNlLiBUaGUgdXNlIG9mIGBwcmVmZXJyZWRfem9uZS0mZ3Q7em9uZV9wZ2RhdGAgaW5kaWNhdGVzIHRoaXMgd29ya3MgZXZlbiB3aXRob3V0IE5VTUEgZW5hYmxlZCwgaXQgaXMgbWVyZWx5IHdha2luZyB1cCBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlLgoKVGhlIHBhdGNoJiMzOTtzIGNvcmUgbG9naWMgbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIHRvIGFkZDoKCmBgYGMKCWlmIChjb3N0bHlfb3JkZXIgJmFtcDsmYW1wOyAoZ2ZwX21hc2sgJmFtcDsgX19HRlBfTk9SRVRSWSkpIHsKCQlzdHJ1Y3Qgem9uZSAqcHJlZmVycmVkX3pvbmUgPSBhYy0mZ3Q7cHJlZmVycmVkX3pvbmVyZWYtJmd0O3pvbmU7CgoJCWlmIChwcmVmZXJyZWRfem9uZSkKCQkJd2FrZXVwX2tjb21wYWN0ZChwcmVmZXJyZWRfem9uZS0mZ3Q7em9uZV9wZ2RhdCwgb3JkZXIsCgkJCQkJIGFjLSZndDtoaWdoZXN0X3pvbmVpZHgpOwoJCWdvdG8gbm9wYWdlOwoJfQpgYGAKClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2tpcHMgZGlyZWN0IGNvbXBhY3Rpb24gYW5kIGRpcmVjdCByZWNsYWltIGZvciBjb3N0bHksIG5vbi1yZXRyaWFibGUgYWxsb2NhdGlvbnMsIGluc3RlYWQgd2FraW5nIHVwIGBrY29tcGFjdGRgIGFuZCBpbW1lZGlhdGVseSBmYWlsaW5nIHRoZSBhbGxvY2F0aW9uLiBUaGlzIGNhbiBpbmZsdWVuY2UgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IgYW5kIGNvbXBhY3Rpb24uCgpOb3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbGJlaXQgYSBzbG93ZXIgb25lIHRoYW4gYF9fYWxsb2NfcGFnZXNgLiBTbywgZG8gSSBwdXQgaXQgaW50byBgRm9jdXNTeW1ib2xzYD8gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IG5vdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBJIHByb2JhYmx5IHNob3VsZCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgLiBNYXliZSBJJiMzOTtsbCBwdXQgaXQgaW4gYW55d2F5LiBCdXQgdGhpcyBpcyB0aGUga2V5IHRvIHRlc3RpbmcgdGhpcyBzcGVjaWZpYyBwYXRoLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZvciBhbG1vc3QgYWxsIGFsbG9jYXRpb25zIHRoYXQgZG9uJiMzOTt0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIEZvciBub3csIEkmIzM5O2xsIGtlZXAgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LgoKRG91YmxlLWNoZWNraW5nLCBgQ09ORklHX0NPTVBBQ1RJT05gIHJlbWFpbnMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgc2xvdyBwYXRoIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gSXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBgX19HRlBfTk9SRVRSWWAsIHBvdGVudGlhbGx5IGltcGFjdGluZyBhbGxvY2F0aW9uIHN1Y2Nlc3MgYW5kIGNvbXBhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJiMzOTtzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJiMzOTtzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6MzcuODg4MzE0Nzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNjU1MzY2MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWdlIGFsbG9jYXRvcidzIHNsb3cgcGF0aCB0byBmYWlsIGNvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgZWFybHksIHdoaWxlIHdha2luZyB1cCBrY29tcGFjdGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGFmZmVjdHMgYWxsb2NhdGlvbiBzdWNjZXNzIHJhdGVzIGFuZCBjb21wYWN0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyODozNy44ODgzMjAxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyNDQxMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyODozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXFxuKysrIGIvbW0vcGFnZV9hbGxvYy5jXFxuQEAgLTQ4ODMsNiArNDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuIFxcdC8qIElmIGFsbG9jYXRpb24gaGFzIHRha2VuIGV4Y2Vzc2l2ZWx5IGxvbmcsIHdhcm4gYWJvdXQgaXQgKi9cXG4gXFx0Y2hlY2tfYWxsb2Nfc3RhbGxfd2FybihnZnBfbWFzaywgYWMtXFx1MDAzZW5vZGVtYXNrLCBvcmRlciwgYWxsb2Nfc3RhcnRfdGltZSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBDb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGFyZSBvcHBvcnR1bmlzdGljIC0gRG9uJ3RcXG4rXFx0ICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2lja1xcbitcXHQgKiBrY29tcGFjdGQgb24gdGhlIHByZWZlcnJlZCBub2RlIHNvIGxhcmdlIHBhZ2VzIG1heSBiZWNvbWVcXG4rXFx0ICogYXZhaWxhYmxlIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgYW5kIGxldCB0aGUgY2FsbGVyIGZhbGwgYmFjayBub3cuXFxuK1xcdCAqXFxuK1xcdCAqIERpcmVjdCBjb21wYWN0aW9uIGlzIHdheSB0b28gY29zdGx5IGZvciBob3QgYWxsb2NhdGlvbiBwYXRocyBvblxcbitcXHQgKiBsYXJnZSBzeXN0ZW1zOiBlYWNoIGF0dGVtcHQgY2FsbHMgZHJhaW5fYWxsX3BhZ2VzKCkgd2hpY2ggSVBJc1xcbitcXHQgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkXFxuK1xcdCAqIGNyb3NzLU5VTUEgaW50ZXJmZXJlbmNlIHdpdGggdW5yZWxhdGVkIHdvcmtsb2Fkcy5cXG4rXFx0ICovXFxuK1xcdGlmIChjb3N0bHlfb3JkZXIgXFx1MDAyNlxcdTAwMjYgKGdmcF9tYXNrIFxcdTAwMjYgX19HRlBfTk9SRVRSWSkpIHtcXG4rXFx0XFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXFx1MDAzZXByZWZlcnJlZF96b25lcmVmLVxcdTAwM2V6b25lO1xcbitcXG4rXFx0XFx0aWYgKHByZWZlcnJlZF96b25lKVxcbitcXHRcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHByZWZlcnJlZF96b25lLVxcdTAwM2V6b25lX3BnZGF0LCBvcmRlcixcXG4rXFx0XFx0XFx0XFx0XFx0IGFjLVxcdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xcbitcXHRcXHRnb3RvIG5vcGFnZTtcXG4rXFx0fVxcbitcXG4gXFx0LyogVHJ5IGRpcmVjdCByZWNsYWltIGFuZCB0aGVuIGFsbG9jYXRpbmcgKi9cXG4gXFx0aWYgKCFjb21wYWN0X2ZpcnN0KSB7XFxuIFxcdFxcdHBhZ2UgPSBfX2FsbG9jX3BhZ2VzX2RpcmVjdF9yZWNsYWltKGdmcF9tYXNrLCBvcmRlciwgYWxsb2NfZmxhZ3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjM4LjI5MTU2NzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk2MjI3NjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJ3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjAyZDMwMGE5YmU1YTc5NWM1ZDRjMGFjMzRjMjcyNjNmMzg4ZmQyZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDExOjI4OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jXG5pbmRleCBhNjM3MzNkYWM2NTllMy4uMmQwMjcwM2Q4ZjBmNjcgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcbisrKyBiL21tL3BhZ2VfYWxsb2MuY1xuQEAgLTQ4ODMsNiArNDg4MywyNiBAQCBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXHQvKiBJZiBhbGxvY2F0aW9uIGhhcyB0YWtlbiBleGNlc3NpdmVseSBsb25nLCB3YXJuIGFib3V0IGl0ICovXG4gXHRjaGVja19hbGxvY19zdGFsbF93YXJuKGdmcF9tYXNrLCBhYy1cdTAwM2Vub2RlbWFzaywgb3JkZXIsIGFsbG9jX3N0YXJ0X3RpbWUpO1xuIFxuK1x0LypcbitcdCAqIENvc3RseSBhbGxvY2F0aW9ucyB3aXRoIF9fR0ZQX05PUkVUUlkgYXJlIG9wcG9ydHVuaXN0aWMgLSBEb24ndFxuK1x0ICogc3RhbGwgb24gZGlyZWN0IGNvbXBhY3Rpb24gb3IgcmVjbGFpbTsgaW5zdGVhZCwga2lja1xuK1x0ICoga2NvbXBhY3RkIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBzbyBsYXJnZSBwYWdlcyBtYXkgYmVjb21lXG4rXHQgKiBhdmFpbGFibGUgZm9yIGZ1dHVyZSBhbGxvY2F0aW9ucyBhbmQgbGV0IHRoZSBjYWxsZXIgZmFsbCBiYWNrIG5vdy5cbitcdCAqXG4rXHQgKiBEaXJlY3QgY29tcGFjdGlvbiBpcyB3YXkgdG9vIGNvc3RseSBmb3IgaG90IGFsbG9jYXRpb24gcGF0aHMgb25cbitcdCAqIGxhcmdlIHN5c3RlbXM6IGVhY2ggYXR0ZW1wdCBjYWxscyBkcmFpbl9hbGxfcGFnZXMoKSB3aGljaCBJUElzXG4rXHQgKiBldmVyeSBDUFUuICBPbmx5IHdha2Uga2NvbXBhY3RkIG9uIHRoZSBsb2NhbCBub2RlIHRvIGF2b2lkXG4rXHQgKiBjcm9zcy1OVU1BIGludGVyZmVyZW5jZSB3aXRoIHVucmVsYXRlZCB3b3JrbG9hZHMuXG4rXHQgKi9cbitcdGlmIChjb3N0bHlfb3JkZXIgXHUwMDI2XHUwMDI2IChnZnBfbWFzayBcdTAwMjYgX19HRlBfTk9SRVRSWSkpIHtcbitcdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcbitcbitcdFx0aWYgKHByZWZlcnJlZF96b25lKVxuK1x0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG4rXHRcdFx0XHRcdCBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgpO1xuK1x0XHRnb3RvIG5vcGFnZTtcbitcdH1cbitcbiBcdC8qIFRyeSBkaXJlY3QgcmVjbGFpbSBhbmQgdGhlbiBhbGxvY2F0aW5nICovXG4gXHRpZiAoIWNvbXBhY3RfZmlyc3QpIHtcbiBcdFx0cGFnZSA9IF9fYWxsb2NfcGFnZXNfZGlyZWN0X3JlY2xhaW0oZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncyxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjM4LjI5MTU2ODU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2MjEyMzQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL3BhZ2VfYWxsb2MuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSwgb2J2aW91c2x5LCBkZWFsaW5nIHdpdGggd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBhdHRlbXB0cyBmYWlsLiBJJ20gc2VlaW5nIGEgbmV3IGNvbmRpdGlvbiBiZWluZyBpbnRyb2R1Y2VkOiBgY29zdGx5X29yZGVyIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX05PUkVUUlkpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyBjb25zaWRlcmVkIFwiY29zdGx5XCIgaW4gdGhpcyBjb250ZXh0PyBIaWdoZXIgb3JkZXIgYWxsb2NhdGlvbnMsIEknZCBhc3N1bWUsIGdpdmVuIHRoZSBgY29zdGx5X29yZGVyYCB2YXJpYWJsZS4gQW5kIHRoZSBgX19HRlBfTk9SRVRSWWAgZmxhZy4uLiB0aGF0J3MgdGhlIHJlYWwga2V5IGhlcmUuIFRoaXMgc3VnZ2VzdHMgdGhlIGNhbGxlciBpcyBleHBsaWNpdGx5IHNheWluZyBcImRvbid0IHJldHJ5LCBmYWlsIGZhc3RcIiB3aGljaCBpcyBpbXBvcnRhbnQgaW4gc3BlY2lmaWMsIHNlbnNpdGl2ZSBzaXR1YXRpb25zLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCB0aGlzIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW86IGEgKmNvc3RseSogYWxsb2NhdGlvbiBhbmQgdGhlIHJlcXVlc3QgaXMgdG8gKm5vdCByZXRyeSouIFRoZSBwYXRjaCB0aGVuIHRyaWdnZXJzIGEgYGtjb21wYWN0ZGAgd2FrZXVwIG9uIHRoZSBwcmVmZXJyZWQgbm9kZSBhbmQsIGNydWNpYWxseSwganVtcHMgdG8gYG5vcGFnZWAuIFNvLCB0aGUgbG9naWMgaXMsIGluIHRoaXMgc3BlY2lmaWMgY2FzZSwgcmF0aGVyIHRoYW4gcmV0cnlpbmcgaW4gdGhlIHNsb3cgcGF0aCBvciBhdHRlbXB0aW5nIG1vcmUgbWVtb3J5IG1hbmFnZW1lbnQgdGFza3MsIHdlJ3JlIGdpdmluZyB1cCBhbmQgZ29pbmcgc3RyYWlnaHQgdG8gYG5vcGFnZWAsIHByZXN1bWFibHkgdG8gYWxsb3cgdGhlIGZhdWx0IHRvIGJlIGhhbmRsZWQgaW4gYW5vdGhlciB3YXkgKGxpa2UgcmV0dXJuaW5nIGFuIGVycm9yIHRvIHRoZSBjYWxsZXIsIG9yIHNpbWlsYXIpLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICdjb3N0bHkgb3JkZXInIHRydWx5IG1lYW5zIGZvciBhIHN0YXJ0LCBidXQgdGhlIGltcGxpY2F0aW9uIHNlZW1zIGNsZWFyOiBvcHRpbWl6ZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB3ZSAqYWJzb2x1dGVseSogY2Fubm90IHN0YWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwgb2YgdGhlIG1lbW9yeSBhbGxvY2F0b3IuIEl0J3Mgbm90IGNvc21ldGljOyBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZmxvdyBvZiBjb250cm9sIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMuIEkgd2FudCB0byB0cmFjZSB0aGUgY29kZSBwYXRocyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcnMgb3Igc3Vic3lzdGVtcyB0aGF0IHNldCB0aGUgYF9fR0ZQX05PUkVUUllgIGZsYWcgb24gYWxsb2NhdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIFwiY29zdGx5XCIsIGFuZCBzZWUgdGhlIHBvc3NpYmxlIGNvbnNlcXVlbmNlcy4gSXQncyBnb2luZyB0byBhZmZlY3QgYWxsb2NhdGlvbiBwYXRocyB0aGF0IGRlbWFuZCB0aGlzIHBhcnRpY3VsYXIgZmFzdC1mYWlsIGJlaGF2aW91ci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgcmVzdCBvZiBgbW0vcGFnZV9hbGxvYy5jYCB0byBzZWUgaG93IG90aGVyIHBhcnRzIGludGVyYWN0IHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjQzLjM1MzY5NDY4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDczNTg2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hbGxvY19wYWdlc19zbG93cGF0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTQ3MzI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqXFxubW0vcGFnZV9hbGxvYy5jOjQ3MzM6X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00NzM0LVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBhbGxvY19jb250ZXh0ICphYylcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz01MzUyPXN0cnVjdCBwYWdlICpfX2FsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNTQxNy1cXG5tbS9wYWdlX2FsbG9jLmM6NTQxODpcXHRwYWdlID0gX19hbGxvY19wYWdlc19zbG93cGF0aChhbGxvY19nZnAsIG9yZGVyLCBcXHUwMDI2YWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy01NDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyODo0My42MDEwNjcxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc0NDk2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIGluIHRoZSBwYWdlIGFsbG9jYXRvci4uLiB0aGF0J3MgYSAqa2V5KiBmdW5jdGlvbi4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjcml0aWNhbCByb2xlLiBJIHNlZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gYGNvc3RseV9vcmRlcmAgYW5kIHRoZSBgX19HRlBfTk9SRVRSWWAgZmxhZy4gSW50ZXJlc3RpbmcuIEFuZCBpdCBjYWxscyBgd2FrZXVwX2tjb21wYWN0ZGAg4oCTIHRoYXQgY291bGQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBTaW5jZSBgbW0vcGFnZV9hbGxvYy5jYCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0LCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4uIEJ1dCBgd2FrZXVwX2tjb21wYWN0ZGAgaXMgaW4gYG1tL2NvbXBhY3Rpb24uY2AsIHJpZ2h0PyBUaGF0IHBvaW50cyBkaXJlY3RseSB0byB0aGUgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBkZXBlbmRlbmN5LiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgSSdtIHNlZWluZyBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgY29tcGFjdGlvbiBjb2RlLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZpZ3VyaW5nIG91dCB3aGF0IG1pZ2h0IGJlIHJlYWNoYWJsZSBieSBteSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NDcuNDM4NTE5OTEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzUxNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndha2V1cF9rY29tcGFjdGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYz0yOTY1PXN0YXRpYyBpbnQgY29tcGFjdGlvbl9wcm9hY3RpdmVuZXNzX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMjk4MS1cXHRcXHRcXHRwZ2RhdC1cXHUwMDNlcHJvYWN0aXZlX2NvbXBhY3RfdHJpZ2dlciA9IHRydWU7XFxubW0vY29tcGFjdGlvbi5jOjI5ODI6XFx0XFx0XFx0dHJhY2VfbW1fY29tcGFjdGlvbl93YWtldXBfa2NvbXBhY3RkKHBnZGF0LVxcdTAwM2Vub2RlX2lkLCAtMSxcXG5tbS9jb21wYWN0aW9uLmMtMjk4My1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHBnZGF0LVxcdTAwM2Vucl96b25lcyAtIDEpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jPTMwNzQ9c3RhdGljIHZvaWQga2NvbXBhY3RkX2RvX3dvcmsocGdfZGF0YV90ICpwZ2RhdClcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0zMTUzLVxcbm1tL2NvbXBhY3Rpb24uYzozMTU0OnZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpXFxubW0vY29tcGFjdGlvbi5jLTMxNTUte1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTMxNzQtXFxubW0vY29tcGFjdGlvbi5jOjMxNzU6XFx0dHJhY2VfbW1fY29tcGFjdGlvbl93YWtldXBfa2NvbXBhY3RkKHBnZGF0LVxcdTAwM2Vub2RlX2lkLCBvcmRlcixcXG5tbS9jb21wYWN0aW9uLmMtMzE3Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHRoaWdoZXN0X3pvbmVpZHgpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MzM9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ5MDAtXFx0XFx0aWYgKHByZWZlcnJlZF96b25lKVxcbm1tL3BhZ2VfYWxsb2MuYzo0OTAxOlxcdFxcdFxcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXFx1MDAzZXpvbmVfcGdkYXQsIG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00OTAyLVxcdFxcdFxcdFxcdFxcdCBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4KTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTcwNTQ9c3RhdGljIGludCBiYWxhbmNlX3BnZGF0KHBnX2RhdGFfdCAqcGdkYXQsIGludCBvcmRlciwgaW50IGhpZ2hlc3Rfem9uZWlkeClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTcyNTYtXFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NzI1NzpcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBwYWdlYmxvY2tfb3JkZXIsIGhpZ2hlc3Rfem9uZWlkeCk7XFxubW0vdm1zY2FuLmMtNzI1OC1cXHR9XFxuLS1cXG5tbS92bXNjYW4uYz03MjkyPXN0YXRpYyB2b2lkIGtzd2FwZF90cnlfdG9fc2xlZXAocGdfZGF0YV90ICpwZ2RhdCwgaW50IGFsbG9jX29yZGVyLCBpbnQgcmVjbGFpbV9vcmRlcixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTczMjItXFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NzMyMzpcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBhbGxvY19vcmRlciwgaGlnaGVzdF96b25laWR4KTtcXG5tbS92bXNjYW4uYy03MzI0LVxcbi0tXFxubW0vdm1zY2FuLmM9NzQ3MD12b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9mbGFncywgaW50IG9yZGVyLFxcbi0tXFxubW0vdm1zY2FuLmMtNzUwNS1cXHRcXHRpZiAoIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSkpXFxubW0vdm1zY2FuLmM6NzUwNjpcXHRcXHRcXHR3YWtldXBfa2NvbXBhY3RkKHBnZGF0LCBvcmRlciwgaGlnaGVzdF96b25laWR4KTtcXG5tbS92bXNjYW4uYy03NTA3LVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NDcuNTE4Mjc3NTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNzM0MzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBNZW1vcnkgQ29tcGFjdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBgd2FrZXVwX2tjb21wYWN0ZGAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgaXRzIGxvY2F0aW9uIOKAkyBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHR1Y2tlZCBhd2F5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGtlcm5lbCdzIGEgc3ByYXdsaW5nIGNvZGViYXNlLCBzbyBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0J3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbWFrZSBzdXJlIGBjb21wYWN0aW9uLmNgIGlzIGFjdHVhbGx5IGJlaW5nIGNvbXBpbGVkIHdpdGhpbiB0aGUgYG1tYCBzdWJzeXN0ZW0uIFRoaXMgaXMgYWJvdXQgc29saWRpZnlpbmcgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCB2ZXJpZnlpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwaWVjZXMgYW5kIHJlZnJlc2hpbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcy4gSSB3YW50IHRvIGtlZXAgdGhlIG1lbnRhbCBtYXAgdXAgdG8gZGF0ZS4gSSB3YW50IHRvIGJ1aWxkIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb21wYWN0aW9uIGlzIHNldCB1cCBpbiBtZW1vcnkuIEl0J3Mgc2Vjb25kIG5hdHVyZSB0byBjcm9zcy1yZWZlcmVuY2UgbGlrZSB0aGlzLCBrZWVwcyBtZSBzaGFycC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjUwLjY0NTYyMzIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY2OTI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wYWN0aW9uLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9NTE9b2JqLXlcXHRcXHRcXHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXFxcXG4tLVxcbm1tL01ha2VmaWxlLTU1LVxcdFxcdFxcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXFxcXG5tbS9NYWtlZmlsZTo1NjpcXHRcXHRcXHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxcXFxubW0vTWFrZWZpbGUtNTctXFx0XFx0XFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTAuNzA4Mjk2MzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwMjgwOTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGNvbXBhY3Rpb24ub2AncyBCdWlsZCBMb2NhdGlvbioqXG5cbkhtbSwgc28gYGNvbXBhY3Rpb24ub2AgaXMgYmVpbmcgYnVpbHQgYXMgcGFydCBvZiB0aGUgYG9iai15YCBsaXN0LiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgaW5jbHVzaW9uIGFuZCBkZXRlcm1pbmUgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBzb3VyY2UgZmlsZSBpcyB1bHRpbWF0ZWx5IGdldHRpbmcgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgYnVpbGQgcnVsZXMgdGhhdCBnb3Zlcm4gdGhpcyBzcGVjaWZpYyBvYmplY3QgZmlsZSdzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgY29uZmlybSBpZiB0aGUgYnVpbGQgbG9jYXRpb24gaXMgYXMgZXhwZWN0ZWQgb3IsIGlmIG5vdCwgcmV2ZWFsIHRoZSBpbmNsdWRlIGNoYWluIHdoaWNoIG1heSBwcm92aWRlIGluc2lnaHRzIGludG8gYSBidWlsZCBpc3N1ZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTMuODExMTA4MDI5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcbiAgNTE6XFx0b2JqLXlcXHRcXHRcXHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXFxcXG4gIDUyOlxcdFxcdFxcdFxcdCAgIG1hY2Nlc3MubyBwYWdlLXdyaXRlYmFjay5vIGZvbGlvLWNvbXBhdC5vIFxcXFxcXG4gIDUzOlxcdFxcdFxcdFxcdCAgIHJlYWRhaGVhZC5vIHN3YXAubyB0cnVuY2F0ZS5vIHZtc2Nhbi5vIHNocmlua2VyLm8gXFxcXFxcbiAgNTQ6XFx0XFx0XFx0XFx0ICAgc2htZW0ubyB1dGlsLm8gbW16b25lLm8gdm1zdGF0Lm8gYmFja2luZy1kZXYubyBcXFxcXFxuICA1NTpcXHRcXHRcXHRcXHQgICBtbV9pbml0Lm8gcGVyY3B1Lm8gc2xhYl9jb21tb24ubyBcXFxcXFxuICA1NjpcXHRcXHRcXHRcXHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxcXFxuICA1NzpcXHRcXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcbiAgNTg6XFx0XFx0XFx0XFx0ICAgZGVidWcubyBndXAubyBtbWFwX2xvY2subyB2bWFfaW5pdC5vICQobW11LXkpXFxuICA1OTpcXHRcXG4gIDYwOlxcdCMgR2l2ZSAncGFnZV9hbGxvYycgaXRzIG93biBtb2R1bGUtcGFyYW1ldGVyIG5hbWVzcGFjZVxcbiAgNjE6XFx0cGFnZS1hbGxvYy15IDo9IHBhZ2VfYWxsb2Mub1xcbiAgNjI6XFx0cGFnZS1hbGxvYy0kKENPTkZJR19TSFVGRkxFX1BBR0VfQUxMT0NBVE9SKSArPSBzaHVmZmxlLm9cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0IyBHaXZlICdtZW1vcnlfaG90cGx1ZycgaXRzIG93biBtb2R1bGUtcGFyYW1ldGVyIG5hbWVzcGFjZVxcbiAgNjU6XFx0bWVtb3J5LWhvdHBsdWctJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICs9IG1lbW9yeV9ob3RwbHVnLm9cXG4gIDY2OlxcdFxcbiAgNjc6XFx0b2JqLXkgKz0gcGFnZS1hbGxvYy5vXFxuICA2ODpcXHRvYmoteSArPSBwYWdlX2ZyYWdfY2FjaGUub1xcbiAgNjk6XFx0b2JqLXkgKz0gaW5pdC1tbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI4OjUzLjgxMTE2OTA0OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU4MTI2Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29tcGFjdGlvbiBEZXBlbmRlbmN5KipcblxuUmlnaHQsIHNvIGBjb21wYWN0aW9uLm9gIGlzIGJlaW5nIGJ1aWx0IGV2ZXJ5IHRpbWUuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyB0aGVyZSdzIGEgYENPTkZJR19DT01QQUNUSU9OYCBvcHRpb24gaW4gdGhlIGtlcm5lbCBjb25maWcuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBpbiBgbW0vY29tcGFjdGlvbi5jYC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGAjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05gIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGluIHRoZXJlIGRldGVybWluaW5nIGlmIHRoZSBjb21wYWN0aW9uIGNvZGUgaXMgYWN0dWFsbHkgaW5jbHVkZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGVyZSB0aGF0IGFyZSBjYXVzaW5nIGl0IHRvIGJlIGJ1aWx0IHdoZW4gaXQgc2hvdWxkbid0LiBUaW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIHNvdXJjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTYuNDY5Mjk3NTEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzMTI1ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vY29tcGFjdGlvbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYy0yOS1cXG5tbS9jb21wYWN0aW9uLmM6MzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTMxLS8qXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9NjA9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNjItXFxubW0vY29tcGFjdGlvbi5jOjYzOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxcbm1tL2NvbXBhY3Rpb24uYy02NC1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz05Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTE2LVxcbm1tL2NvbXBhY3Rpb24uYzoxMTc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTExOC1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz00OTE9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTQ5NC19XFxubW0vY29tcGFjdGlvbi5jOjQ5NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9jb21wYWN0aW9uLmMtNDk2LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTEzNzItXFxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9jb21wYWN0aW9uLmM6MTM3NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0zMzUxPXN1YnN5c19pbml0Y2FsbChrY29tcGFjdGRfaW5pdClcXG5tbS9jb21wYWN0aW9uLmMtMzM1Mi1cXG5tbS9jb21wYWN0aW9uLmM6MzM1MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjg6NTYuNzUxNjMzOTU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDU3NzI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIENvbXBhY3Rpb24gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZGVmaW5pdGVseSB1c2VkIHdpdGhpbiBgbW0vY29tcGFjdGlvbi5jYCDigJMgdGhhdCdzIGEgZ2l2ZW4uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgYHdha2V1cF9rY29tcGFjdGRgIGJlaGF2ZXMgKndpdGhvdXQqIGNvbXBhY3Rpb24gZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0IGZ1bmN0aW9uIGlzICpub3QqIGRlZmluZWQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgdW5zZXQuIEl0J3MgYSBrZXkgc2FuaXR5IGNoZWNrLiBJJ2QgZXhwZWN0IHRoZSBjb2RlIHRvIGd1YXJkIGl0cyBkZWZpbml0aW9uIHdpdGggYW4gYCNpZmRlZiBDT05GSUdfQ09NUEFDVElPTmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSwgb3Igc29tZXRoaW5nIGxvZ2ljYWxseSBlcXVpdmFsZW50LCBzdWNoIHRoYXQgd2hlbiB0aGUgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmLCB0aGUgZnVuY3Rpb24gaXMgZWl0aGVyIHVuZGVmaW5lZCwgcmVwbGFjZWQgd2l0aCBhIHBsYWNlaG9sZGVyLCBvciBjb25kaXRpb25hbCBsb2dpYyB0aGF0IHByZXZlbnRzIHRoZSByZWxhdGVkIGNvZGUgZnJvbSBiZWluZyBpbnZva2VkLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGFzc3VtcHRpb24sIGJlY2F1c2UgSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgY29kZSBiYXNlIGhhbmRsZXMgdGhlIGFic2VuY2Ugb2YgdGhlIGNvbXBhY3Rpb24gZnVuY3Rpb25hbGl0eSBncmFjZWZ1bGx5LiBObyBwb2ludCBjYWxsaW5nIGEgZnVuY3Rpb24gaWYgaXQncyBub3QgYWN0dWFsbHkgdGhlcmUuIFRoYXQncyBhIGNsYXNzaWMgc291cmNlIG9mIHJ1bnRpbWUgZXJyb3JzLCBzbyBJJ20gbG9va2luZyBmb3Igc29saWQgcHJlcHJvY2Vzc29yIGd1YXJkcmFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyOTowMC4xNTc0MDg0NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjkxOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndha2V1cF9rY29tcGFjdGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg9MTA3PWV4dGVybiB2b2lkIF9fbWVtaW5pdCBrY29tcGFjdGRfc3RvcChpbnQgbmlkKTtcXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMDg6ZXh0ZXJuIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LCBpbnQgb3JkZXIsIGludCBoaWdoZXN0X3pvbmVpZHgpO1xcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEwOS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyNT1zdGF0aWMgaW5saW5lIHZvaWQga2NvbXBhY3RkX3N0b3AoaW50IG5pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTEyOC1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMjk6c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzAtXFx0XFx0XFx0XFx0aW50IG9yZGVyLCBpbnQgaGlnaGVzdF96b25laWR4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyOTowMC4yMjYxMDU3NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDk4NDExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gRmlyc3QsIGl0J3MgY2xlYXIgdGhhdCBgd2FrZXVwX2tjb21wYWN0ZGAgZG9lcyBub3RoaW5nIHdpdGhvdXQgYENPTkZJR19DT01QQUNUSU9OYCwgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBwcm9wZXIgdGVzdGluZy4gVGhlIHBhdGNoIGFsc28gcmVmZXJlbmNlcyBgY29zdGx5X29yZGVyYCBhbmQgYF9fR0ZQX05PUkVUUllgLiBgY29zdGx5X29yZGVyYCB0eXBpY2FsbHkgbWVhbnMgYW4gb3JkZXIgZ3JlYXRlciB0aGFuIDMsIHdoaWNoIGlzIGZhaXJseSBzaWduaWZpY2FudC4gVGhlIGNvcmUgY2hhbmdlIHJlc2lkZXMgd2l0aGluIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjaGVjayBpZiBgQ09ORklHX05VTUFgIHdhcyByZXF1aXJlZCwgZ2l2ZW4gdGhlIG1lbnRpb24gb2YgXCJjcm9zcy1OVU1BIGludGVyZmVyZW5jZSxcIiBidXQgaXQgYXBwZWFycyB0aGlzIGlzbid0IHRoZSBjYXNlLiBUaGUgdXNlIG9mIGBwcmVmZXJyZWRfem9uZS1cdTAwM2V6b25lX3BnZGF0YCBpbmRpY2F0ZXMgdGhpcyB3b3JrcyBldmVuIHdpdGhvdXQgTlVNQSBlbmFibGVkLCBpdCBpcyBtZXJlbHkgd2FraW5nIHVwIGtjb21wYWN0ZCBvbiB0aGUgcHJlZmVycmVkIG5vZGUuXG5cblRoZSBwYXRjaCdzIGNvcmUgbG9naWMgbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgIHRvIGFkZDpcblxuYGBgY1xuXHRpZiAoY29zdGx5X29yZGVyIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX05PUkVUUlkpKSB7XG5cdFx0c3RydWN0IHpvbmUgKnByZWZlcnJlZF96b25lID0gYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYtXHUwMDNlem9uZTtcblxuXHRcdGlmIChwcmVmZXJyZWRfem9uZSlcblx0XHRcdHdha2V1cF9rY29tcGFjdGQocHJlZmVycmVkX3pvbmUtXHUwMDNlem9uZV9wZ2RhdCwgb3JkZXIsXG5cdFx0XHRcdFx0IGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCk7XG5cdFx0Z290byBub3BhZ2U7XG5cdH1cbmBgYFxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNraXBzIGRpcmVjdCBjb21wYWN0aW9uIGFuZCBkaXJlY3QgcmVjbGFpbSBmb3IgY29zdGx5LCBub24tcmV0cmlhYmxlIGFsbG9jYXRpb25zLCBpbnN0ZWFkIHdha2luZyB1cCBga2NvbXBhY3RkYCBhbmQgaW1tZWRpYXRlbHkgZmFpbGluZyB0aGUgYWxsb2NhdGlvbi4gVGhpcyBjYW4gaW5mbHVlbmNlIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yIGFuZCBjb21wYWN0aW9uLlxuXG5Ob3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIGBfX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbGJlaXQgYSBzbG93ZXIgb25lIHRoYW4gYF9fYWxsb2NfcGFnZXNgLiBTbywgZG8gSSBwdXQgaXQgaW50byBgRm9jdXNTeW1ib2xzYD8gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IG5vdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBJIHByb2JhYmx5IHNob3VsZCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYF9fYWxsb2NfcGFnZXNfc2xvd3BhdGhgLiBNYXliZSBJJ2xsIHB1dCBpdCBpbiBhbnl3YXkuIEJ1dCB0aGlzIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzIHNwZWNpZmljIHBhdGgsIGJ1dCBpdCdzIGNhbGxlZCBmb3IgYWxtb3N0IGFsbCBhbGxvY2F0aW9ucyB0aGF0IGRvbid0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIEZvciBub3csIEknbGwga2VlcCB0aGUgYEZvY3VzU3ltYm9sc2AgZW1wdHkuXG5cbkRvdWJsZS1jaGVja2luZywgYENPTkZJR19DT01QQUNUSU9OYCByZW1haW5zIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgc2xvdyBwYXRoIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gSXQgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBgX19HRlBfTk9SRVRSWWAsIHBvdGVudGlhbGx5IGltcGFjdGluZyBhbGxvY2F0aW9uIHN1Y2Nlc3MgYW5kIGNvbXBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTYsIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6Mjk6MTEuMTc1OTQ4OTMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4OTE5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFnZSBhbGxvY2F0b3IncyBzbG93IHBhdGggdG8gZmFpbCBjb3N0bHkgYWxsb2NhdGlvbnMgd2l0aCBfX0dGUF9OT1JFVFJZIGVhcmx5LCB3aGlsZSB3YWtpbmcgdXAga2NvbXBhY3RkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhZmZlY3RzIGFsbG9jYXRpb24gc3VjY2VzcyByYXRlcyBhbmQgY29tcGFjdGlvbiBiZWhhdmlvci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhZ2UgYWxsb2NhdG9yJ3Mgc2xvdyBwYXRoIHRvIGZhaWwgY29zdGx5IGFsbG9jYXRpb25zIHdpdGggX19HRlBfTk9SRVRSWSBlYXJseSwgd2hpbGUgd2FraW5nIHVwIGtjb21wYWN0ZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWZmZWN0cyBhbGxvY2F0aW9uIHN1Y2Nlc3MgcmF0ZXMgYW5kIGNvbXBhY3Rpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[1] Phase: Succeeded StartedAt: 2026-07-11 11:30:45 +0000 UTC FinishedAt: 2026-07-11 11:30:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 11:30:45 +0000 UTC FinishedAt: 2026-07-11 11:30:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2] Phase: Succeeded StartedAt: 2026-07-11 11:30:45 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 11:30:46 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 11:30:46 +0000 UTC FinishedAt: 2026-07-11 11:31:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 11:30:46 +0000 UTC FinishedAt: 2026-07-11 11:31:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7frd/series-workflowp7frd-convert-artifact-2423829099/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 11:31:31 +0000 UTC FinishedAt: 2026-07-11 12:06:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 11:31:31 +0000 UTC FinishedAt: 2026-07-11 12:06:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00daab65-fd22-4c34-b210-3a1e35384475,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-workflowp7frd/series-workflowp7frd-convert-artifact-2423829099/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": "2c54d9e4-2928-4b2f-b7f2-cd8326afede4", "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-workflowp7frd/series-workflowp7frd-build-action-1469785705/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 11:31:31 +0000 UTC FinishedAt: 2026-07-11 12:05:52 +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:*00daab65-fd22-4c34-b210-3a1e35384475,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-workflowp7frd/series-workflowp7frd-convert-artifact-2423829099/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": "2c54d9e4-2928-4b2f-b7f2-cd8326afede4", "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-workflowp7frd/series-workflowp7frd-build-action-1469785705/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 12:06:03 +0000 UTC FinishedAt: 2026-07-11 12:06:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 12:06:03 +0000 UTC FinishedAt: 2026-07-11 12:06:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 12:06:03 +0000 UTC FinishedAt: 2026-07-11 12:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 12:06:03 +0000 UTC FinishedAt: 2026-07-11 12:06:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7frd/series-workflowp7frd-convert-artifact-1374627394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 12:06:15 +0000 UTC FinishedAt: 2026-07-11 12:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 12:06:15 +0000 UTC FinishedAt: 2026-07-11 12:08:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2c54d9e4-2928-4b2f-b7f2-cd8326afede4,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-workflowp7frd/series-workflowp7frd-build-action-1469785705/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-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 12:08:35 +0000 UTC FinishedAt: 2026-07-11 12:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 12:08:35 +0000 UTC FinishedAt: 2026-07-11 12:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 12:08:35 +0000 UTC FinishedAt: 2026-07-11 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 12:08:35 +0000 UTC FinishedAt: 2026-07-11 12:41:37 +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:*00daab65-fd22-4c34-b210-3a1e35384475,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-workflowp7frd/series-workflowp7frd-convert-artifact-1374627394/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": "90959083-51a9-48ed-8bf2-58885d415bd9", "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-workflowp7frd/series-workflowp7frd-build-action-2230179990/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 12:08:35 +0000 UTC FinishedAt: 2026-07-11 12:41:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00daab65-fd22-4c34-b210-3a1e35384475,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-workflowp7frd/series-workflowp7frd-convert-artifact-1374627394/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": "90959083-51a9-48ed-8bf2-58885d415bd9", "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-workflowp7frd/series-workflowp7frd-build-action-2230179990/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 12:41:37 +0000 UTC FinishedAt: 2026-07-11 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 12:41:37 +0000 UTC FinishedAt: 2026-07-11 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 12:41:37 +0000 UTC FinishedAt: 2026-07-11 12:43:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 12:41:37 +0000 UTC FinishedAt: 2026-07-11 12:43:30 +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:*90959083-51a9-48ed-8bf2-58885d415bd9,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-workflowp7frd/series-workflowp7frd-build-action-2230179990/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-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},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:*2c54d9e4-2928-4b2f-b7f2-cd8326afede4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90959083-51a9-48ed-8bf2-58885d415bd9,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-workflowp7frd/series-workflowp7frd-build-action-1469785705/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-workflowp7frd/series-workflowp7frd-build-action-2230179990/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 12:43:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 12:43:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},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-workflowp7frd/series-workflowp7frd-convert-artifact-1980176503/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 12:43:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 12:43:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 12:43:40 +0000 UTC FinishedAt: 2026-07-11 12:43:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 12:43:50 +0000 UTC FinishedAt: 2026-07-11 15:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7frd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"eb2a58a36ca36dd2df22cc8284663aa2f86db9c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"21e38dc8-e40a-4b79-9c74-13da7cc601e8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 12:43:50 +0000 UTC FinishedAt: 2026-07-11 15:46:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2c54d9e4-2928-4b2f-b7f2-cd8326afede4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90959083-51a9-48ed-8bf2-58885d415bd9,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-workflowp7frd/series-workflowp7frd-build-action-1469785705/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-workflowp7frd/series-workflowp7frd-build-action-2230179990/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-workflowp7frd/series-workflowp7frd-convert-artifact-1980176503/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,}