Name: series-workflowqk25t Phase: Succeeded StartedAt: 2026-07-30 04:03:07 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[0] Phase: Succeeded StartedAt: 2026-07-30 04:03:07 +0000 UTC FinishedAt: 2026-07-30 04:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 04:03:07 +0000 UTC FinishedAt: 2026-07-30 04:29:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_NAT" ], "series_id": "828787f8-bc51-47de-b74b-840feb36de07" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_ext_add", "nf_ct_helper_ext_add", "nf_ct_nat_ext_add", "nf_ct_ecache_ext_add" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X2hlbHBlcl9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X25hdF9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X2VjYWNoZV9leHRfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYyB3aGVyZSBga3JlYWxsb2NgIGNvdWxkIG1vdmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgKGFuIGBobGlzdF9oZWFkYCkgd2l0aG91dCB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGxlYWRpbmcgdG8gbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgbGlzdCBkdXJpbmcgcmVhbGxvY2F0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXRmaWx0ZXIgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI0ZjMxOTllMDkwMTc0YzM5MjU0YjdlNzM0N2ZlMzk1MjMzMjgzODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXG5pbmRleCAwZGExMDVlMWRlZDkzLi5lYTc3OTVhMjQ2MWYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXG5AQCAtODcsOSAmIzQzOzg3LDM0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IHRvdGFsX2V4dGVuc2lvbl9zaXplKHZvaWQpXG4gXHQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IGhsaXN0X2hlYWQgKmV4cGVjdGF0aW9ucylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XG4mIzQzO1xuJiM0MztcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XG4mIzQzO1x0aWYgKCFoZWxwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRobGlzdF9tb3ZlX2xpc3QoXHUwMDI2aGVscC1cdTAwM2VleHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiYjNDM7XG4mIzQzO1x0aGVscCA9IG5mX2N0X2V4dF9maW5kKGN0LCBORl9DVF9FWFRfSEVMUEVSKTtcbiYjNDM7XHRpZiAoIWhlbHApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGhsaXN0X21vdmVfbGlzdChleHBlY3RhdGlvbnMsIFx1MDAyNmhlbHAtXHUwMDNlZXhwZWN0YXRpb25zKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbmV3bGVuLCBuZXdvZmYsIG9sZGxlbiwgYWxsb2M7XG4mIzQzO1x0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xuIFx0c3RydWN0IG5mX2N0X2V4dCAqbmV3O1xuIFxuIFx0LyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovXG5AQCAtMTA4LDEzICYjNDM7MTMzLDE3IEBAIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxuIFx0XHRvbGRsZW4gPSBzaXplb2YoKm5ldyk7XG4gXHR9XG4gXG4mIzQzO1x0bmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCBcdTAwMjZleHBlY3RhdGlvbnMpO1xuJiM0MztcbiBcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xuIFx0bmV3bGVuID0gbmV3b2ZmICYjNDM7IG5mX2N0X2V4dF90eXBlX2xlbltpZF07XG4gXG4gXHRhbGxvYyA9IG1heChuZXdsZW4sIE5GX0NUX0VYVF9QUkVBTExPQyk7XG4gXHRuZXcgPSBrcmVhbGxvYyhjdC1cdTAwM2VleHQsIGFsbG9jLCBnZnApO1xuLVx0aWYgKCFuZXcpXG4mIzQzO1x0aWYgKCFuZXcpIHtcbiYjNDM7XHRcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKCFjdC1cdTAwM2VleHQpXG4gXHRcdG1lbXNldChuZXctXHUwMDNlb2Zmc2V0LCAwLCBzaXplb2YobmV3LVx1MDAzZW9mZnNldCkpO1xuQEAgLTEyNCw2ICYjNDM7MTUzLDggQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4gXHRtZW1zZXQoKHZvaWQgKiluZXcgJiM0MzsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xuIFxuIFx0Y3QtXHUwMDNlZXh0ID0gbmV3O1xuJiM0MztcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiYjNDM7XG4gXHRyZXR1cm4gKHZvaWQgKiluZXcgJiM0MzsgbmV3b2ZmO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNGYzMTk5ZTA5MDE3NGMzOTI1NGI3ZTczNDdmZTM5NTIzMzI4MzgxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDQ6Mjk6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCmluZGV4IDBkYTEwNWUxZGVkOTMuLmVhNzc5NWEyNDYxZjAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCkBAIC04Nyw5ICYjNDM7ODcsMzQgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQgdG90YWxfZXh0ZW5zaW9uX3NpemUodm9pZCkKIAk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LAomIzQzOwkJCQkgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwOwomIzQzOwomIzQzOwloZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpOwomIzQzOwlpZiAoIWhlbHApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWhsaXN0X21vdmVfbGlzdCgmYW1wO2hlbHAtJmd0O2V4cGVjdGF0aW9ucywgZXhwZWN0YXRpb25zKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKHN0cnVjdCBuZl9jb25uICpjdCwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKQomIzQzO3sKJiM0MzsJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDsKJiM0MzsKJiM0MzsJaGVscCA9IG5mX2N0X2V4dF9maW5kKGN0LCBORl9DVF9FWFRfSEVMUEVSKTsKJiM0MzsJaWYgKCFoZWxwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlobGlzdF9tb3ZlX2xpc3QoZXhwZWN0YXRpb25zLCAmYW1wO2hlbHAtJmd0O2V4cGVjdGF0aW9ucyk7CiYjNDM7fQomIzQzOwogdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiB7CiAJdW5zaWduZWQgaW50IG5ld2xlbiwgbmV3b2ZmLCBvbGRsZW4sIGFsbG9jOwomIzQzOwlITElTVF9IRUFEKGV4cGVjdGF0aW9ucyk7CiAJc3RydWN0IG5mX2N0X2V4dCAqbmV3OwogCiAJLyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovCkBAIC0xMDgsMTMgJiM0MzsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiAJCW9sZGxlbiA9IHNpemVvZigqbmV3KTsKIAl9CiAKJiM0MzsJbmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCAmYW1wO2V4cGVjdGF0aW9ucyk7CiYjNDM7CiAJbmV3b2ZmID0gQUxJR04ob2xkbGVuLCBfX2FsaWdub2ZfXyhzdHJ1Y3QgbmZfY3RfZXh0KSk7CiAJbmV3bGVuID0gbmV3b2ZmICYjNDM7IG5mX2N0X2V4dF90eXBlX2xlbltpZF07CiAKIAlhbGxvYyA9IG1heChuZXdsZW4sIE5GX0NUX0VYVF9QUkVBTExPQyk7CiAJbmV3ID0ga3JlYWxsb2MoY3QtJmd0O2V4dCwgYWxsb2MsIGdmcCk7Ci0JaWYgKCFuZXcpCiYjNDM7CWlmICghbmV3KSB7CiYjNDM7CQluZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoY3QsICZhbXA7ZXhwZWN0YXRpb25zKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWlmICghY3QtJmd0O2V4dCkKIAkJbWVtc2V0KG5ldy0mZ3Q7b2Zmc2V0LCAwLCBzaXplb2YobmV3LSZndDtvZmZzZXQpKTsKQEAgLTEyNCw2ICYjNDM7MTUzLDggQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiAJbWVtc2V0KCh2b2lkICopbmV3ICYjNDM7IG5ld29mZiwgMCwgbmV3bGVuIC0gbmV3b2ZmKTsKIAogCWN0LSZndDtleHQgPSBuZXc7CiYjNDM7CW5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgJmFtcDtleHBlY3RhdGlvbnMpOwomIzQzOwogCXJldHVybiAodm9pZCAqKW5ldyAmIzQzOyBuZXdvZmY7CiB9CiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIEl0JiMzOTtzIGFkZGluZyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAsIHdoaWNoIGFyZSB0aGVuIGJlaW5nIGNhbGxlZCBmcm9tIGBuZl9jdF9leHRfYWRkYC4gVGhpcyBzb3VuZHMgbGlrZSB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcHJlc2VydmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3Qgd2l0aGluIGBuZl9jb25uX2hlbHBgIHdoZW5ldmVyIHRoZSBleHRlbnNpb24gYXJlYSBpcyByZWFsbG9jYXRlZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5mX2N0X2V4dF9hZGRgIG1vcmUgY2xvc2VseS4gSXQmIzM5O3Mgb2J2aW91c2x5IGV4cG9ydGVkLCBhbmQgdGhlIG5hbWluZyBzdWdnZXN0cyBpdCYjMzk7cyBmb3IgYWRkaW5nIHRoZXNlIGV4dGVuc2lvbnMgdG8gYSBjb25udHJhY2sgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29ubnRyYWNrIGZyYW1ld29yay4gQWxzbywgSSBuZWVkIHRvIHZlcmlmeSB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxhdGVkLiBMZXQgbWUgbWFrZSBzdXJlIGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBlbmFibGVkLgoKSSYjMzk7bGwgcXVpY2tseSBncmVwIGZvciBgTkZfQ09OTlRSQUNLYCBhbmQgcmVsYXRlZCBzeW1ib2xzIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIG9yIHNpbWlsYXIgY29uZmlnIGZpbGVzLiBOZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSwgb3IgdGhhdCBtaWdodCByZXF1aXJlIHNwZWNpYWwgYXR0ZW50aW9uIGR1cmluZyB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG5mX2N0X2V4dF9hZGRgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiBhIG1vZGlmaWNhdGlvbiB0byBgbmZfY3RfZXh0X2FkZGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgY2hhbmdlIHRoZXJlOyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGV4dGVuc2lvbnMgaW4gY29ubnRyYWNrIGVudHJpZXMuJiMzNDsgTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGFjdCouIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGVycyBvZiBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgd2lsbCB0ZWxsIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIG92ZXJhbGwgY29ubnRyYWNrIG1hY2hpbmVyeS4gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJcyBpdCBpbiB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVyLCBvciBzb21lIGtpbmQgb2YgbG9nZ2luZywgb3Igc29tZSBzcGVjaWZpYyBob29rPyBHb3R0YSBlc3RhYmxpc2ggdGhhdCBiZWZvcmUgSSBjYW4gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4dF9hZGRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMjQ9Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzUwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzUxOlx0ZSA9IG5mX2N0X2V4dF9hZGQoY3QsIE5GX0NUX0VYVF9FQ0FDSEUsIGdmcCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNTItXHRpZiAoZSkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jPTEwMj1zdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjExNDp2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc5PW5mX2N0X2hlbHBlcl9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE4Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjE4MzpcdGhlbHAgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfSEVMUEVSLCBnZnApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTg0LVx0aWYgKGhlbHApIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM9NDM0PWNvbm50cmFja19wcHRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTQ1OC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYzo0NTk6XHRcdGlmICghbmF0IFx1MDAyNlx1MDAyNiAhbmZfY3RfZXh0X2FkZChjdCwgTkZfQ1RfRVhUX05BVCwgR0ZQX0FUT01JQykpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtNDYwLVx0XHRcdHJldHVybiBORl9EUk9QO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz03NTE9c3RydWN0IG5mX2Nvbm5fbmF0ICpuZl9jdF9uYXRfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1Ny1cdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTg6XHRcdG5hdCA9IG5mX2N0X2V4dF9hZGQoY3QsIE5GX0NUX0VYVF9OQVQsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbm50cmFjayBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb25udHJhY2sgZXh0ZW5zaW9uIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgdGhlIGBORl9DVF9FWFRfSEVMUEVSYCBleHRlbnNpb24gaXMgaGFuZGxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG5mX2N0X2V4dF9hZGRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYXMgaXQmIzM5O3MgdGhlIG9uZSB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBhIGJ1bmNoIG9mIG90aGVyczogYG5mX2N0X2VjYWNoZV9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYGNvbm50cmFja19wcHRwX2hlbHBgLCBhbmQgYG5mX2N0X25hdF9leHRfYWRkYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgLCB3aGljaCBhcmUgY2FsbGVkIHdpdGhpbiBgbmZfY3RfZXh0X2FkZGAuIFRoZXNlIGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGRlc2lnbmVkIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QsIHdoaWNoIGlzIGFuIGBobGlzdF9oZWFkYCwgZnJvbSB0aGUgYE5GX0NUX0VYVF9IRUxQRVJgIGV4dGVuc2lvbi4KCkFoLCBJIGdldCBpdCBub3cuIFRoaXMgaXMgYSBmaXggZm9yIHdoZW4gYGtyZWFsbG9jYCBpcyB1c2VkLiBJZiBga3JlYWxsb2NgIG1vdmVzIHRoZSBleHRlbnNpb24gYXJlYSwgaXQgbWVhbnMgcG9pbnRlcnMgd2l0aGluIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IG1pZ2h0IG5lZWQgdG8gYmUgdXBkYXRlZC4gSXQgbG9va3MgbGlrZSB0aGUgZml4IGlzIHRvIGhhbmRsZSB0aGUgYGhsaXN0X2hlYWRgIGl0c2VsZiBiZWluZyBtb3ZlZCBieSBga3JlYWxsb2NgLiBXYWl0LCB0aGUgYGhsaXN0X21vdmVfbGlzdGAgZnVuY3Rpb24gKmRvZXMqIHVwZGF0ZSB0aGUgaGVhZCBhbmQgdGhlIGZpcnN0IG5vZGUmIzM5O3MgYHBwcmV2YCBwb2ludGVyLiBTbywgaW4gdGhlIGNhc2Ugb2YgdGhlIGhlYWQgbW92aW5nLCBpdCBlbnN1cmVzIHRoZSBmaXJzdCBub2RlJiMzOTtzIGBwcHJldmAgY29ycmVjdGx5IHBvaW50cyB0byB0aGUgbmV3IGhlYWQuIFRoaXMgbWFrZXMgc2Vuc2UuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBpZiBga3JlYWxsb2NgIG1vdmVzIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgYXJvdW5kLCBJIHRoaW5rIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mX2N0X2V4dF9hZGRgLCBhcyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IHRhcmdldCBvZiB0aGUgcGF0Y2guIEkgY2FuIGFsc28gaW5jbHVkZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaW4gdGhlIGZ1enppbmcgaGFybmVzcyB0byB0cnkgdG8gdHJpZ2dlciB0aGlzIGJ1ZyBpbmRpcmVjdGx5LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYG5mX2N0X2V4dF9hZGRgIGlzIHN0YXRpYyBvciBleHBvcnRlZC4gQWgsIGl0JiMzOTtzIGV4cG9ydGVkLiBHb29kLiBJIHNob3VsZCBhbHNvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgYXJlIHN0YXRpYy4gWWVwLCB0aGV5IGFyZS4gVGhhdCYjMzk7cyBmaW5lLgoKVGltZSB0byBoZWFkIG92ZXIgdG8gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jYCBhbmQgZGlnIGludG8gdGhlIGNvZGUgbW9yZSBkaXJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9leHRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MTAyPXN0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTEzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTE0OnZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTE1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xNTktfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTYwOkVYUE9SVF9TWU1CT0wobmZfY3RfZXh0X2FkZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc0MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbioqCgpPa2F5LCBzbyBgbmZfY3RfZXh0X2FkZGAgaXMgZGVmaW5pdGVseSBleHBvcnRlZCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgdGhpbmc/IE9idmlvdXNseSwgYE5GX0NPTk5UUkFDS2AgaGFzIHRvIGJlIGVuYWJsZWQ7IHRoYXQmIzM5O3MgdGhlIGJhc2UuIEJ1dCBhcmUgdGhlcmUgKm90aGVyKiBkZXBlbmRlbmNpZXMsIG1vcmUgZ3JhbnVsYXIgb25lcz8gVGltZSB0byBkaWcgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIHNlZSBob3cgYG5mX2Nvbm50cmFja19leHRlbmQub2AgaXMgY29uc3RydWN0ZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGllZCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX2V4dGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT01PW5mX2Nvbm50cmFjay15XHQ6PSBuZl9jb25udHJhY2tfY29yZS5vIG5mX2Nvbm50cmFja19zdGFuZGFsb25lLm8gbmZfY29ubnRyYWNrX2V4cGVjdC5vIG5mX2Nvbm50cmFja19oZWxwZXIubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNy1cdFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvX2ljbXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4Olx0XHQgICBuZl9jb25udHJhY2tfZXh0ZW5kLm8gbmZfY29ubnRyYWNrX2FjY3QubyBuZl9jb25udHJhY2tfc2VxYWRqLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbiBCdWcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBuZl9jb25udHJhY2steWAgY29kZSBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZyBmbGFncy4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGBuZl9jb25udHJhY2tgLCBvYnZpb3VzbHkgYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHByaW1hcnkgc3VzcGVjdC4gV2FpdCwgdG8gdHJpZ2dlciB0aGUgYnVnLCBJIHJlY2FsbCBmcm9tIHRoZSBkZXNjcmlwdGlvbiB0aGF0IGBORl9DVF9FWFRfSEVMUEVSYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgdGhlbiBhbm90aGVyIGV4dGVuc2lvbiBnZXRzIGFkZGVkLCB3aGljaCBzb21laG93IHJlc3VsdHMgaW4gYGtyZWFsbG9jYCBnZXR0aW5nIHRyaWdnZXJlZCBpbiBhIHByb2JsZW1hdGljIHdheS4KCmBORl9DVF9FWFRfSEVMUEVSYCBzZWVtcyB0byBiZSBhZGRlZCBieSBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLiBUaGF0IGZ1bmN0aW9uIGlzIGtleS4gQW5kIHdoYXQgZW5hYmxlcyBoZWxwZXJzPyBXZWxsLCB0aGluZ3MgbGlrZSBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBhbmQgc28gb24uIFNvLCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGFuZCBlbnN1cmUgaGVscGVycyBhcmUgYWN0dWFsbHkgZW5hYmxlZCwgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgTkZfQ09OTlRSQUNLYCAqYW5kKiBtYXliZSBvbmUgb2YgdGhvc2Ugc3BlY2lmaWMgaGVscGVyIGNvbmZpZ3MgbGlrZSBgTkZfQ09OTlRSQUNLX0ZUUGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGxpa2UgYE5GX0NPTk5UUkFDS19BTUFOREFgLgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgKnNwZWNpZmljYWxseSogYXNrcyBmb3Igd2hhdCYjMzk7cyBuZWVkZWQgdG8gKmNvbXBpbGUqIGFuZCB0ZXN0IHRoZSAqbW9kaWZpZWQqIGNvZGUuIFNvLCBwZXJoYXBzIGBORl9DT05OVFJBQ0tgIGFsb25lIGlzIGVub3VnaCB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGlsZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSAqbWVudGlvbnMqIHRoZSBoZWxwZXJzLCBzbyBJIG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGEgaGVscGVyIHRvIHRyaWdnZXIgdGhlIGJ1Zywgc28gSSBzaG91bGQgaW5jbHVkZSBpdC4gVGhlIHByb21wdCBkb2VzIHNheTogJiMzNDtMaXN0IG9mIGtlcm5lbCBjb25maWcgZmxhZ3MgdGhhdCBtdXN0IGJlIGV4cGxpY2l0bHkgZW5hYmxlZCB0byBjb21waWxlIGFuZCB0ZXN0IHRoZSBtb2RpZmllZCBjb2RlLiYjMzQ7IFNvIHRvIGJlIGNlcnRhaW4sIEkgd2lsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gdGhlIGZpbmFsIGxpc3QuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIG9idmlvdXMgY29uZmlnIGZsYWdzIG5lZWRlZC4gT2theSwgYW5kIEkgc2VlIGBORl9DT05OVFJBQ0tgIGlzIGEgdHJpc3RhdGUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBJJiMzOTtsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpOb3cgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUga2V5IHN5bWJvbHMgdGhlIGJ1ZyBpcyByZWxhdGVkIHRvLiBUaGUgbW9zdCBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgbmZfY3RfZXh0X2FkZGAsIGBuZl9jdF9oZWxwZXJfZXh0X2FkZGAsIGBuZl9jdF9uYXRfZXh0X2FkZGAsIGFuZCBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgLiBTbyBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkIGFuZCBhY2Nlc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MTktXHRcdFx0aWYgKGFzc2lnbl9oZWxwZXIpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxODIwOlx0XHRcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xODIxLVx0XHRcdFx0aWYgKGhlbHAgXHUwMDI2XHUwMDI2IHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZhc3NpZ25faGVscGVyLVx1MDAzZWN0X3JlZmNudCkpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc4PXN0cnVjdCBuZl9jb25uX2hlbHAgKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTc5Om5mX2N0X2hlbHBlcl9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZ2ZwX3QgZ2ZwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTgwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODktfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTkwOkVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2hlbHBlcl9leHRfYWRkKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE5MS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jPTE5Mj1pbnQgX19uZl9jdF90cnlfYXNzaWduX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25uICp0bXBsLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyMi1cdGlmIChoZWxwID09IE5VTEwpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjIyMzpcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0yMjQtXHRcdGlmIChoZWxwID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjI9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjc1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyNzY6XHRcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjc3LVx0XHRcdGlmIChoZWxwID09IE5VTEwpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYz04NT1pbnQgbmZfY3RfYWRkX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IGNoYXIgKm5hbWUsIHU4IGZhbWlseSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYy05NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jOjk2Olx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfS0VSTkVMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jLTk3LVx0aWYgKCFoZWxwKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMTEyPXN0YXRpYyB2b2lkIG5mdF9jdF9oZWxwZXJfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNDQtXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjExNDU6XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMTQ2LVx0aWYgKGhlbHAgXHUwMDI2XHUwMDI2IHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZ0b19hc3NpZ24tXHUwMDNlY3RfcmVmY250KSkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MTMwMD1zdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIwLVx0aWYgKCFoZWxwKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzIxOlx0XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIyLVx0aWYgKCFoZWxwKSB7XG4tLVxubmV0L25ldGZpbHRlci94dF9DVC5jPTc0PXh0X2N0X3NldF9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBjaGFyICpoZWxwZXJfbmFtZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtOTMtXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM6OTQ6XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9LRVJORUwpO1xubmV0L25ldGZpbHRlci94dF9DVC5jLTk1LVx0aWYgKGhlbHAgPT0gTlVMTCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyBFeHRlbnNpb24gUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZXhwb3J0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBleHRlbnNpb25zIGluIE5ldGZpbHRlci4gSSBzZWUgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfZXh0X2FkZGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgIGFyZSBhbGwgZGVmaW5pdGl2ZWx5IGV4cG9ydGVkLiBUaGF0JiMzOTtzIGFzIGV4cGVjdGVkLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciByZWdpc3RlcmluZyBkaWZmZXJlbnQga2luZHMgb2YgZXh0ZW5zaW9ucyB3aXRoIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN5c3RlbS4gTm93LCB0aGUgcXVlc3Rpb24gdGhhdOKAmXMgbmFnZ2luZyBhdCBtZSBpcyB3aGV0aGVyIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGhlIEV4dGVuZGVkIENvbm5lY3Rpb24gQ2FjaGUgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHNvIGlmIHRoaXMgZnVuY3Rpb24gKmlzKiBleHBvcnRlZCwgaXQgbWVhbnMgd2XigJl2ZSBnb3QgYSBkZWZpbmVkIGludGVyZmFjZSBmb3IgbWFuYWdpbmcgdGhlIGVjYWNoZSBleHRlbnNpb25zIGFuZCBob3cgdG8gZ2V0IHRoZXNlIGFkZGVkIHRvIHRoZSB0cmFja2luZyB0YWJsZS4gSeKAmWxsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIHRvIGNvbmZpcm0gaXRzIGV4cG9ydCBzdGF0dXMgdG8gdW5kZXJzdGFuZCB0aGUgZWNhY2hlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gcHJvY2VzcyB3aXRoaW4gTmV0ZmlsdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3OTgtXHRpZiAoKGVjYWNoZSB8fCBuZXQtXHUwMDNlY3Quc3lzY3RsX2V2ZW50cykgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6MTc5OTpcdCAgICAhbmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIGVjYWNoZSA/IGVjYWNoZS1cdTAwM2VjdG1hc2sgOiAwLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MDAtXHRcdFx0XHQgIGVjYWNoZSA/IGVjYWNoZS1cdTAwM2VleHBtYXNrIDogMCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMTI9c3RhdGljIHZvaWQgbmZfY3RfZWNhY2hlX3RzdGFtcF9uZXcoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozMjQ6Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM1OS19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozNjA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZWNhY2hlX2V4dF9hZGQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzYxLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjIyPWN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMwMS1cdG5mX2N0X3RzdGFtcF9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyMzAyOlx0bmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIDAsIDAsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMDMtXHRuZl9jdF9sYWJlbHNfZXh0X2FkZChjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMyNi1cdFx0aWYgKGN0bWFzayBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX2NvbmZpcm1lZChjdCkpXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMyNzpcdFx0XHRuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgY3RtYXNrLCAwLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzI4LVx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM9MTU1PXN0YXRpYyBpbnQgeHRfY3RfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIsXG4tLVxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5MS1cdGlmICgoaW5mby1cdTAwM2VjdF9ldmVudHMgfHwgaW5mby1cdTAwM2VleHBfZXZlbnRzKSBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIveHRfQ1QuYzoxOTI6XHQgICAgIW5mX2N0X2VjYWNoZV9leHRfYWRkKGN0LCBpbmZvLVx1MDAzZWN0X2V2ZW50cywgaW5mby1cdTAwM2VleHBfZXZlbnRzLFxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5My1cdFx0XHRcdCAgR0ZQX0tFUk5FTCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBDb25udHJhY2sgRXh0ZW5zaW9uIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSBjYW4gY29uZmlybSB0aGF0IGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgaW5kZWVkIGV4cG9ydGVkLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbmFsaXR5LiBCYXNlZCBvbiB0aGUgbmFtZXMgYW5kIHBvdGVudGlhbCB1c2UgY2FzZXMsIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBhcHBlYXIgdG8gYmU6IGBuZl9jdF9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIG9mIGNvdXJzZSwgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC4KCk5vdywgSSYjMzk7bSBhbHJlYWR5IGF3YXJlIHRoYXQgYE5GX0NPTk5UUkFDS2AgaXMgYSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBlbmFibGluZyBgTkZfTkFUYCBpcyBhbHNvIHJlcXVpcmVkIGZvciBwcm9wZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBuZl9jdF9uYXRfZXh0X2FkZGAuIFRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGF0IHBvdGVudGlhbCBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz02ODk9Z2V0X3VuaXF1ZV90dXBsZShzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlICp0dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzUwLVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jOjc1MTpzdHJ1Y3QgbmZfY29ubl9uYXQgKm5mX2N0X25hdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NjEtfVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jOjc2MjpFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9uYXRfZXh0X2FkZCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYz0yOD1uZl9uYXRfbWFzcXVlcmFkZV9pcHY0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy01OS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYzo2MDpcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy02MS1cdGlmIChuYXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jPTIyND1uZl9uYXRfbWFzcXVlcmFkZV9pcHY2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9uYXRfcmFuZ2UyICpyYW5nZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtMjQwLVxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jOjI0MTpcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy0yNDItXHRpZiAobmF0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jPTg4PWludCBuZl9jdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jLTk3LVx0LyogQWRkIE5BVCBleHRlbnNpb24gaWYgbm90IGNvbmZpcm1lZCB5ZXQuICovXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9vdnMuYzo5ODpcdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSBcdTAwMjZcdTAwMjYgIW5mX2N0X25hdF9leHRfYWRkKGN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jLTk5LVx0XHRyZXR1cm4gTkZfRFJPUDsgICAvKiBDYW4mIzM5O3QgTkFULiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkVuc3VyaW5nIE5BVCBFeHRlbnNpb24gQWRkaXRpb24gaXMgUG9zc2libGUqKgoKUmlnaHQsIHNvIGBuZl9jdF9uYXRfZXh0X2FkZGAgZGVmaW5pdGVseSByZXNpZGVzIGluIGBuZl9uYXRfY29yZS5jYC4gQW5kIHRoYXQgY29kZSBpcyBvbmx5IGJ1aWx0IGlmIHdlJiMzOTt2ZSBlbmFibGVkIGBORl9OQVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBjYW4gcmVhY2ggdGhhdCBOQVQgZXh0ZW5zaW9uIGFkZGl0aW9uIGZ1bmN0aW9uLCBJIG5lZWQgdG8gYWRkIGBORl9OQVRgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gcXVlc3Rpb24gYWJvdXQgdGhhdC4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdmVyaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3ksIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHdoZXJlIGBORl9OQVRgIGlzIGRlZmluZWQuIEkmIzM5O2xsIHBlZWsgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIGl0JiMzOTtzIHdoZXJlIEkgZXhwZWN0LiBNYWtpbmcgc3VyZSBJIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGFsd2F5cyBtYWtlcyB0aGUgZGV2ZWxvcG1lbnQgYSBzbW9vdGhlciBqb3VybmV5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfTkFUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDE2OmNvbmZpZyBORl9OQVRfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjY6Y29uZmlnIE5GX05BVF9JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQxOmNvbmZpZyBORl9OQVRfUkVESVJFQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDUtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0Nzpjb25maWcgTkZfTkFUX09WU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5ODQKCQkJCQkJCW91dHB1dDogMTg3CgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXh0ZW5zaW9uIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRlYWxzIHdpdGggYSBjcml0aWNhbCBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljLiBTcGVjaWZpY2FsbHksIHRoZSBwb3RlbnRpYWwgZm9yIG1lbW9yeSBjb3JydXB0aW9uIGFyaXNlcyBiZWNhdXNlIGBrcmVhbGxvY2AgbWlnaHQgcmVsb2NhdGUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QsIGFuIGBobGlzdF9oZWFkYCwgd2l0aG91dCBjb3JyZWN0bHkgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBjYXVzaW5nIGlzc3Vlcy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGUgYE5GX05BVGAgaXMgdHJpc3RhdGUgYW5kIEkmIzM5O20gYWRkaW5nIGBORl9OQVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBhZGRyZXNzIHRoaXMgZml4LgoKTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCBpcyB3aGF0IEkmIzM5O20gY29uY2VybmVkIHdpdGguCiogICBUaGUgcHJpbWFyeSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZSBmb2xsb3dpbmcgc3ltYm9sczoKICAgICogICBgbmZfY3RfZXh0X2FkZGAKICAgICogICBgbmZfY3RfaGVscGVyX2V4dF9hZGRgCiAgICAqICAgYG5mX2N0X25hdF9leHRfYWRkYAogICAgKiAgIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAKKiAgIFRoZSBzeXN0ZW0gY29uZmlncyBJJiMzOTtsbCBuZWVkIGVuYWJsZWQgYXJlOgogICAgKiAgIGBORl9DT05OVFJBQ0tgCiAgICAqICAgYE5GX05BVGAKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGNvcmUgY29kZSBhbmQgaXMgdGhlcmVmb3JlIHJlYWNoYWJsZSwgYW5kIGl0JiMzOTtzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB0aG9yb3VnaGx5IGZ1enplZC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIGhhbmRsZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCBjb3JyZWN0bHkgZHVyaW5nIHJlYWxsb2NhdGlvbi4KCk5vdywgSSYjMzk7bSBqdXN0IGRvdWJsZSBjaGVja2luZyB0byBjb25maXJtIHRoYXQgYG5mX2N0X2V4dF9hZGRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZ290IHRvdWNoZWQuIFllcCwgaXQgb25seSBtb2RpZmllZCBgbmZfY3RfZXh0X2FkZGAgYW5kIGludHJvZHVjZXMgdHdvIHN0YXRpYyBoZWxwZXJzLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gSSYjMzk7bSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfaGVscGVyX2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfbmF0X2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfZWNhY2hlX2V4dF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljIHdoZXJlIGBrcmVhbGxvY2AgY291bGQgbW92ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCAoYW4gYGhsaXN0X2hlYWRgKSB3aXRob3V0IHVwZGF0aW5nIHRoZSBwb2ludGVycywgbGVhZGluZyB0byBtZW1vcnkgY29ycnVwdGlvbi4gSXQgaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBsaXN0IGR1cmluZyByZWFsbG9jYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldGZpbHRlciBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowMi41NDMzNzMxMjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc2MjAwNjI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfZWNhY2hlX2V4dF9hZGRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjAyLjU0MzM3NzU0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwNjIzNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjRmMzE5OWUwOTAxNzRjMzkyNTRiN2U3MzQ3ZmUzOTUyMzMyODM4MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXFxuaW5kZXggMGRhMTA1ZTFkZWQ5My4uZWE3Nzk1YTI0NjFmMCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXFxuQEAgLTg3LDkgKzg3LDM0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IHRvdGFsX2V4dGVuc2lvbl9zaXplKHZvaWQpXFxuIFxcdDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbmZfY3RfZXh0X2hlbHBlcl9zYXZlKHN0cnVjdCBuZl9jb25uICpjdCxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxcbit7XFxuK1xcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XFxuK1xcbitcXHRoZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpO1xcbitcXHRpZiAoIWhlbHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGhsaXN0X21vdmVfbGlzdChcXHUwMDI2aGVscC1cXHUwMDNlZXhwZWN0YXRpb25zLCBleHBlY3RhdGlvbnMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpXFxuK3tcXG4rXFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcXG4rXFxuK1xcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XFxuK1xcdGlmICghaGVscClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aGxpc3RfbW92ZV9saXN0KGV4cGVjdGF0aW9ucywgXFx1MDAyNmhlbHAtXFx1MDAzZWV4cGVjdGF0aW9ucyk7XFxuK31cXG4rXFxuIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBuZXdsZW4sIG5ld29mZiwgb2xkbGVuLCBhbGxvYztcXG4rXFx0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xcbiBcXHRzdHJ1Y3QgbmZfY3RfZXh0ICpuZXc7XFxuIFxcbiBcXHQvKiBDb25udHJhY2sgbXVzdCBub3QgYmUgY29uZmlybWVkIHRvIGF2b2lkIHJhY2VzIG9uIHJlYWxsb2NhdGlvbi4gKi9cXG5AQCAtMTA4LDEzICsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXFxuIFxcdFxcdG9sZGxlbiA9IHNpemVvZigqbmV3KTtcXG4gXFx0fVxcbiBcXG4rXFx0bmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCBcXHUwMDI2ZXhwZWN0YXRpb25zKTtcXG4rXFxuIFxcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xcbiBcXHRuZXdsZW4gPSBuZXdvZmYgKyBuZl9jdF9leHRfdHlwZV9sZW5baWRdO1xcbiBcXG4gXFx0YWxsb2MgPSBtYXgobmV3bGVuLCBORl9DVF9FWFRfUFJFQUxMT0MpO1xcbiBcXHRuZXcgPSBrcmVhbGxvYyhjdC1cXHUwMDNlZXh0LCBhbGxvYywgZ2ZwKTtcXG4tXFx0aWYgKCFuZXcpXFxuK1xcdGlmICghbmV3KSB7XFxuK1xcdFxcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXFx1MDAyNmV4cGVjdGF0aW9ucyk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoIWN0LVxcdTAwM2VleHQpXFxuIFxcdFxcdG1lbXNldChuZXctXFx1MDAzZW9mZnNldCwgMCwgc2l6ZW9mKG5ldy1cXHUwMDNlb2Zmc2V0KSk7XFxuQEAgLTEyNCw2ICsxNTMsOCBAQCB2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcXG4gXFx0bWVtc2V0KCh2b2lkICopbmV3ICsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xcbiBcXG4gXFx0Y3QtXFx1MDAzZWV4dCA9IG5ldztcXG4rXFx0bmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKGN0LCBcXHUwMDI2ZXhwZWN0YXRpb25zKTtcXG4rXFxuIFxcdHJldHVybiAodm9pZCAqKW5ldyArIG5ld29mZjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowMi45MTQ1ODAxMDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjM5MDc5MTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfZWNhY2hlX2V4dF9hZGRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI0ZjMxOTllMDkwMTc0YzM5MjU0YjdlNzM0N2ZlMzk1MjMzMjgzODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbmluZGV4IDBkYTEwNWUxZGVkOTMuLmVhNzc5NWEyNDYxZjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbkBAIC04Nyw5ICs4NywzNCBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCB0b3RhbF9leHRlbnNpb25fc2l6ZSh2b2lkKVxuIFx0O1xuIH1cbiBcbitzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxuK3tcbitcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XG4rXG4rXHRoZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpO1xuK1x0aWYgKCFoZWxwKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRobGlzdF9tb3ZlX2xpc3QoXHUwMDI2aGVscC1cdTAwM2VleHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpXG4re1xuK1x0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbitcbitcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XG4rXHRpZiAoIWhlbHApXG4rXHRcdHJldHVybjtcbitcbitcdGhsaXN0X21vdmVfbGlzdChleHBlY3RhdGlvbnMsIFx1MDAyNmhlbHAtXHUwMDNlZXhwZWN0YXRpb25zKTtcbit9XG4rXG4gdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4ge1xuIFx0dW5zaWduZWQgaW50IG5ld2xlbiwgbmV3b2ZmLCBvbGRsZW4sIGFsbG9jO1xuK1x0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xuIFx0c3RydWN0IG5mX2N0X2V4dCAqbmV3O1xuIFxuIFx0LyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovXG5AQCAtMTA4LDEzICsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4gXHRcdG9sZGxlbiA9IHNpemVvZigqbmV3KTtcbiBcdH1cbiBcbitcdG5mX2N0X2V4dF9oZWxwZXJfc2F2ZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbitcbiBcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xuIFx0bmV3bGVuID0gbmV3b2ZmICsgbmZfY3RfZXh0X3R5cGVfbGVuW2lkXTtcbiBcbiBcdGFsbG9jID0gbWF4KG5ld2xlbiwgTkZfQ1RfRVhUX1BSRUFMTE9DKTtcbiBcdG5ldyA9IGtyZWFsbG9jKGN0LVx1MDAzZWV4dCwgYWxsb2MsIGdmcCk7XG4tXHRpZiAoIW5ldylcbitcdGlmICghbmV3KSB7XG4rXHRcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRpZiAoIWN0LVx1MDAzZWV4dClcbiBcdFx0bWVtc2V0KG5ldy1cdTAwM2VvZmZzZXQsIDAsIHNpemVvZihuZXctXHUwMDNlb2Zmc2V0KSk7XG5AQCAtMTI0LDYgKzE1Myw4IEBAIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxuIFx0bWVtc2V0KCh2b2lkICopbmV3ICsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xuIFxuIFx0Y3QtXHUwMDNlZXh0ID0gbmV3O1xuK1x0bmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKGN0LCBcdTAwMjZleHBlY3RhdGlvbnMpO1xuK1xuIFx0cmV0dXJuICh2b2lkICopbmV3ICsgbmV3b2ZmO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MDIuOTE0NTgxNTY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNjczNzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBFeHRlbnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdOKAmXMgdHdlYWtpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jYC4gSXQncyBhZGRpbmcgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgLCB3aGljaCBhcmUgdGhlbiBiZWluZyBjYWxsZWQgZnJvbSBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgc291bmRzIGxpa2UgdGhleSdyZSB0cnlpbmcgdG8gcHJlc2VydmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3Qgd2l0aGluIGBuZl9jb25uX2hlbHBgIHdoZW5ldmVyIHRoZSBleHRlbnNpb24gYXJlYSBpcyByZWFsbG9jYXRlZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmZfY3RfZXh0X2FkZGAgbW9yZSBjbG9zZWx5LiBJdCdzIG9idmlvdXNseSBleHBvcnRlZCwgYW5kIHRoZSBuYW1pbmcgc3VnZ2VzdHMgaXQncyBmb3IgYWRkaW5nIHRoZXNlIGV4dGVuc2lvbnMgdG8gYSBjb25udHJhY2sgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hlcmUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLiBBbHNvLCBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQuIExldCBtZSBtYWtlIHN1cmUgYENPTkZJR19ORl9DT05OVFJBQ0tgIGlzIGVuYWJsZWQuXG5cbkknbGwgcXVpY2tseSBncmVwIGZvciBgTkZfQ09OTlRSQUNLYCBhbmQgcmVsYXRlZCBzeW1ib2xzIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIG9yIHNpbWlsYXIgY29uZmlnIGZpbGVzLiBOZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSwgb3IgdGhhdCBtaWdodCByZXF1aXJlIHNwZWNpYWwgYXR0ZW50aW9uIGR1cmluZyB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MDcuMTIxMzIxMzU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTkzMDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowNy4xNjU1MTYyOThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTMwMzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBuZl9jdF9leHRfYWRkYCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiBhIG1vZGlmaWNhdGlvbiB0byBgbmZfY3RfZXh0X2FkZGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgY2hhbmdlIHRoZXJlOyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGV4dGVuc2lvbnMgaW4gY29ubnRyYWNrIGVudHJpZXMuXCIgTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGFjdCouIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGVycyBvZiBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgd2lsbCB0ZWxsIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIG92ZXJhbGwgY29ubnRyYWNrIG1hY2hpbmVyeS4gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJcyBpdCBpbiB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVyLCBvciBzb21lIGtpbmQgb2YgbG9nZ2luZywgb3Igc29tZSBzcGVjaWZpYyBob29rPyBHb3R0YSBlc3RhYmxpc2ggdGhhdCBiZWZvcmUgSSBjYW4gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTEuMDc0MDQ4ODEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTQ4NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2V4dF9hZGRcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMjQ9Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzUxOlxcdGUgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfRUNBQ0hFLCBnZnApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM1Mi1cXHRpZiAoZSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MTAyPXN0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xMTMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTE0OnZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYz0xNzk9bmZfY3RfaGVscGVyX2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTgzOlxcdGhlbHAgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfSEVMUEVSLCBnZnApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE4NC1cXHRpZiAoaGVscCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jPTQzND1jb25udHJhY2tfcHB0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTQ1OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6NDU5OlxcdFxcdGlmICghbmF0IFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfTkFULCBHRlBfQVRPTUlDKSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtNDYwLVxcdFxcdFxcdHJldHVybiBORl9EUk9QO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTc1MT1zdHJ1Y3QgbmZfY29ubl9uYXQgKm5mX2N0X25hdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NTctXFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTg6XFx0XFx0bmF0ID0gbmZfY3RfZXh0X2FkZChjdCwgTkZfQ1RfRVhUX05BVCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTEuMTIxMDAxNjQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI1Mzc2MTM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25udHJhY2sgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIGNhbiBzZWUgaXQncyB0b3VjaGluZyB0aGUgY29ubnRyYWNrIGV4dGVuc2lvbiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBhcm91bmQgaG93IHRoZSBgTkZfQ1RfRVhUX0hFTFBFUmAgZXh0ZW5zaW9uIGlzIGhhbmRsZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBuZl9jdF9leHRfYWRkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGFzIGl0J3MgdGhlIG9uZSB0aGF0J3MgYmVpbmcgY2FsbGVkIGJ5IGEgYnVuY2ggb2Ygb3RoZXJzOiBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgLCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgY29ubnRyYWNrX3BwdHBfaGVscGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAsIHdoaWNoIGFyZSBjYWxsZWQgd2l0aGluIGBuZl9jdF9leHRfYWRkYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gdG8gYmUgZGVzaWduZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCwgd2hpY2ggaXMgYW4gYGhsaXN0X2hlYWRgLCBmcm9tIHRoZSBgTkZfQ1RfRVhUX0hFTFBFUmAgZXh0ZW5zaW9uLlxuXG5BaCwgSSBnZXQgaXQgbm93LiBUaGlzIGlzIGEgZml4IGZvciB3aGVuIGBrcmVhbGxvY2AgaXMgdXNlZC4gSWYgYGtyZWFsbG9jYCBtb3ZlcyB0aGUgZXh0ZW5zaW9uIGFyZWEsIGl0IG1lYW5zIHBvaW50ZXJzIHdpdGhpbiB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCBtaWdodCBuZWVkIHRvIGJlIHVwZGF0ZWQuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byBoYW5kbGUgdGhlIGBobGlzdF9oZWFkYCBpdHNlbGYgYmVpbmcgbW92ZWQgYnkgYGtyZWFsbG9jYC4gV2FpdCwgdGhlIGBobGlzdF9tb3ZlX2xpc3RgIGZ1bmN0aW9uICpkb2VzKiB1cGRhdGUgdGhlIGhlYWQgYW5kIHRoZSBmaXJzdCBub2RlJ3MgYHBwcmV2YCBwb2ludGVyLiBTbywgaW4gdGhlIGNhc2Ugb2YgdGhlIGhlYWQgbW92aW5nLCBpdCBlbnN1cmVzIHRoZSBmaXJzdCBub2RlJ3MgYHBwcmV2YCBjb3JyZWN0bHkgcG9pbnRzIHRvIHRoZSBuZXcgaGVhZC4gVGhpcyBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgaWYgYGtyZWFsbG9jYCBtb3ZlcyB0aGlzIGRhdGEgc3RydWN0dXJlIGFyb3VuZCwgSSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mX2N0X2V4dF9hZGRgLCBhcyB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0IG9mIHRoZSBwYXRjaC4gSSBjYW4gYWxzbyBpbmNsdWRlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfbmF0X2V4dF9hZGRgLCBhbmQgYG5mX2N0X2VjYWNoZV9leHRfYWRkYCBpbiB0aGUgZnV6emluZyBoYXJuZXNzIHRvIHRyeSB0byB0cmlnZ2VyIHRoaXMgYnVnIGluZGlyZWN0bHkuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBuZl9jdF9leHRfYWRkYCBpcyBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCBpdCdzIGV4cG9ydGVkLiBHb29kLiBJIHNob3VsZCBhbHNvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgYXJlIHN0YXRpYy4gWWVwLCB0aGV5IGFyZS4gVGhhdCdzIGZpbmUuXG5cblRpbWUgdG8gaGVhZCBvdmVyIHRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AgYW5kIGRpZyBpbnRvIHRoZSBjb2RlIG1vcmUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTguMzc0NzY1MjkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTQyNjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jPTEwMj1zdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTEzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjExNDp2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xMTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTU5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzoxNjA6RVhQT1JUX1NZTUJPTChuZl9jdF9leHRfYWRkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTguNjk2MTk4NzEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2OTkzNDE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIENvbm50cmFjayBFeHRlbnNpb24qKlxuXG5Pa2F5LCBzbyBgbmZfY3RfZXh0X2FkZGAgaXMgZGVmaW5pdGVseSBleHBvcnRlZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gYWN0dWFsbHkgKnVzZSogdGhpcyB0aGluZz8gT2J2aW91c2x5LCBgTkZfQ09OTlRSQUNLYCBoYXMgdG8gYmUgZW5hYmxlZDsgdGhhdCdzIHRoZSBiYXNlLiBCdXQgYXJlIHRoZXJlICpvdGhlciogZGVwZW5kZW5jaWVzLCBtb3JlIGdyYW51bGFyIG9uZXM/IFRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIHNlZSBob3cgYG5mX2Nvbm50cmFja19leHRlbmQub2AgaXMgY29uc3RydWN0ZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGllZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc0MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjIxLjc2NjEzNDQ2OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzMDkxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2V4dGVuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9NT1uZl9jb25udHJhY2steVxcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNy1cXHRcXHQgICBuZl9jb25udHJhY2tfcHJvdG9faWNtcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg6XFx0XFx0ICAgbmZfY29ubnRyYWNrX2V4dGVuZC5vIG5mX2Nvbm50cmFja19hY2N0Lm8gbmZfY29ubnRyYWNrX3NlcWFkai5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyMS44MDg0NDU1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDY1Mjg4ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb25udHJhY2sgRXh0ZW5zaW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZl9jb25udHJhY2steWAgY29kZSBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZyBmbGFncy4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGBuZl9jb25udHJhY2tgLCBvYnZpb3VzbHkgYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHByaW1hcnkgc3VzcGVjdC4gV2FpdCwgdG8gdHJpZ2dlciB0aGUgYnVnLCBJIHJlY2FsbCBmcm9tIHRoZSBkZXNjcmlwdGlvbiB0aGF0IGBORl9DVF9FWFRfSEVMUEVSYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgdGhlbiBhbm90aGVyIGV4dGVuc2lvbiBnZXRzIGFkZGVkLCB3aGljaCBzb21laG93IHJlc3VsdHMgaW4gYGtyZWFsbG9jYCBnZXR0aW5nIHRyaWdnZXJlZCBpbiBhIHByb2JsZW1hdGljIHdheS5cblxuYE5GX0NUX0VYVF9IRUxQRVJgIHNlZW1zIHRvIGJlIGFkZGVkIGJ5IGBuZl9jdF9oZWxwZXJfZXh0X2FkZGAuIFRoYXQgZnVuY3Rpb24gaXMga2V5LiBBbmQgd2hhdCBlbmFibGVzIGhlbHBlcnM/IFdlbGwsIHRoaW5ncyBsaWtlIGBDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUGAsIGBDT05GSUdfTkZfQ09OTlRSQUNLX0lSQ2AsIGFuZCBzbyBvbi4gU28sIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgYW5kIGVuc3VyZSBoZWxwZXJzIGFyZSBhY3R1YWxseSBlbmFibGVkLCBJIHNob3VsZCBwcm9iYWJseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgICphbmQqIG1heWJlIG9uZSBvZiB0aG9zZSBzcGVjaWZpYyBoZWxwZXIgY29uZmlncyBsaWtlIGBORl9DT05OVFJBQ0tfRlRQYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSBgTkZfQ09OTlRSQUNLX0FNQU5EQWAuXG5cbkJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIGFza3MgZm9yIHdoYXQncyBuZWVkZWQgdG8gKmNvbXBpbGUqIGFuZCB0ZXN0IHRoZSAqbW9kaWZpZWQqIGNvZGUuIFNvLCBwZXJoYXBzIGBORl9DT05OVFJBQ0tgIGFsb25lIGlzIGVub3VnaCB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGlsZS4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlICptZW50aW9ucyogdGhlIGhlbHBlcnMsIHNvIEkgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYSBoZWxwZXIgdG8gdHJpZ2dlciB0aGUgYnVnLCBzbyBJIHNob3VsZCBpbmNsdWRlIGl0LiBUaGUgcHJvbXB0IGRvZXMgc2F5OiBcIkxpc3Qgb2Yga2VybmVsIGNvbmZpZyBmbGFncyB0aGF0IG11c3QgYmUgZXhwbGljaXRseSBlbmFibGVkIHRvIGNvbXBpbGUgYW5kIHRlc3QgdGhlIG1vZGlmaWVkIGNvZGUuXCIgU28gdG8gYmUgY2VydGFpbiwgSSB3aWxsIGFkZCBgTkZfQ09OTlRSQUNLYCB0byB0aGUgZmluYWwgbGlzdC5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWcgZmxhZ3MgbmVlZGVkLiBPa2F5LCBhbmQgSSBzZWUgYE5GX0NPTk5UUkFDS2AgaXMgYSB0cmlzdGF0ZS4gVGhhdCdzIGdvb2QgdG8ga25vdy4gSSdsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuXG5cbk5vdyBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIGtleSBzeW1ib2xzIHRoZSBidWcgaXMgcmVsYXRlZCB0by4gVGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgYG5mX2N0X2V4dF9hZGRgLCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfbmF0X2V4dF9hZGRgLCBhbmQgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC4gU28gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyOC4yNzM3MzYyMTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTAyNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTgxOS1cXHRcXHRcXHRpZiAoYXNzaWduX2hlbHBlcikge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxODIwOlxcdFxcdFxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MjEtXFx0XFx0XFx0XFx0aWYgKGhlbHAgXFx1MDAyNlxcdTAwMjYgcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZhc3NpZ25faGVscGVyLVxcdTAwM2VjdF9yZWZjbnQpKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc4PXN0cnVjdCBuZl9jb25uX2hlbHAgKlxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjE3OTpuZl9jdF9oZWxwZXJfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTg5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYzoxOTA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfaGVscGVyX2V4dF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE5MS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYz0xOTI9aW50IF9fbmZfY3RfdHJ5X2Fzc2lnbl9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubiAqdG1wbCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyMi1cXHRpZiAoaGVscCA9PSBOVUxMKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MjIzOlxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgZmxhZ3MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyNC1cXHRcXHRpZiAoaGVscCA9PSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjI9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyNzUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyNzY6XFx0XFx0XFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjI3Ny1cXHRcXHRcXHRpZiAoaGVscCA9PSBOVUxMKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYz04NT1pbnQgbmZfY3RfYWRkX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IGNoYXIgKm5hbWUsIHU4IGZhbWlseSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jLTk1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jOjk2OlxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0tFUk5FTCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfb3ZzLmMtOTctXFx0aWYgKCFoZWxwKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTExMTI9c3RhdGljIHZvaWQgbmZ0X2N0X2hlbHBlcl9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMTQ0LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTE0NTpcXHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE0Ni1cXHRpZiAoaGVscCBcXHUwMDI2XFx1MDAyNiByZWZjb3VudF9pbmNfbm90X3plcm8oXFx1MDAyNnRvX2Fzc2lnbi1cXHUwMDNlY3RfcmVmY250KSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzAwPXN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMyMC1cXHRpZiAoIWhlbHApXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzIxOlxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIyLVxcdGlmICghaGVscCkge1xcbi0tXFxubmV0L25ldGZpbHRlci94dF9DVC5jPTc0PXh0X2N0X3NldF9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBjaGFyICpoZWxwZXJfbmFtZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfQ1QuYy05My1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM6OTQ6XFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfS0VSTkVMKTtcXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtOTUtXFx0aWYgKGhlbHAgPT0gTlVMTCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyOC4zMjQyNDM0NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1MjQzODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIEV4dGVuc2lvbiBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZXhwb3J0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBleHRlbnNpb25zIGluIE5ldGZpbHRlci4gSSBzZWUgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfZXh0X2FkZGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgIGFyZSBhbGwgZGVmaW5pdGl2ZWx5IGV4cG9ydGVkLiBUaGF0J3MgYXMgZXhwZWN0ZWQuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgZm9yIHJlZ2lzdGVyaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleHRlbnNpb25zIHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3lzdGVtLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF04oCZcyBuYWdnaW5nIGF0IG1lIGlzIHdoZXRoZXIgYG5mX2N0X2VjYWNoZV9leHRfYWRkYCBpcyBhbHNvIGV4cG9ydGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgRXh0ZW5kZWQgQ29ubmVjdGlvbiBDYWNoZSBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc28gaWYgdGhpcyBmdW5jdGlvbiAqaXMqIGV4cG9ydGVkLCBpdCBtZWFucyB3ZeKAmXZlIGdvdCBhIGRlZmluZWQgaW50ZXJmYWNlIGZvciBtYW5hZ2luZyB0aGUgZWNhY2hlIGV4dGVuc2lvbnMgYW5kIGhvdyB0byBnZXQgdGhlc2UgYWRkZWQgdG8gdGhlIHRyYWNraW5nIHRhYmxlLiBJ4oCZbGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgdG8gY29uZmlybSBpdHMgZXhwb3J0IHN0YXR1cyB0byB1bmRlcnN0YW5kIHRoZSBlY2FjaGUgZXh0ZW5zaW9uIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdpdGhpbiBOZXRmaWx0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTozMS42NTk0ODk5MThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTAzMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2VjYWNoZV9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc5OC1cXHRpZiAoKGVjYWNoZSB8fCBuZXQtXFx1MDAzZWN0LnN5c2N0bF9ldmVudHMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3OTk6XFx0ICAgICFuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgZWNhY2hlID8gZWNhY2hlLVxcdTAwM2VjdG1hc2sgOiAwLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xODAwLVxcdFxcdFxcdFxcdCAgZWNhY2hlID8gZWNhY2hlLVxcdTAwM2VleHBtYXNrIDogMCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTMxMj1zdGF0aWMgdm9pZCBuZl9jdF9lY2FjaGVfdHN0YW1wX25ldyhjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzIzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjMyNDpib29sIG5mX2N0X2VjYWNoZV9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgdTE2IGN0bWFzaywgdTE2IGV4cG1hc2ssIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzU5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozNjA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZWNhY2hlX2V4dF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM2MS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjIyPWN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMzAxLVxcdG5mX2N0X3RzdGFtcF9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMwMjpcXHRuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgMCwgMCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMDMtXFx0bmZfY3RfbGFiZWxzX2V4dF9hZGQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzI2LVxcdFxcdGlmIChjdG1hc2sgXFx1MDAyNlxcdTAwMjYgIW5mX2N0X2lzX2NvbmZpcm1lZChjdCkpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMjc6XFx0XFx0XFx0bmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIGN0bWFzaywgMCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM9MTU1PXN0YXRpYyBpbnQgeHRfY3RfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtMTkxLVxcdGlmICgoaW5mby1cXHUwMDNlY3RfZXZlbnRzIHx8IGluZm8tXFx1MDAzZWV4cF9ldmVudHMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci94dF9DVC5jOjE5MjpcXHQgICAgIW5mX2N0X2VjYWNoZV9leHRfYWRkKGN0LCBpbmZvLVxcdTAwM2VjdF9ldmVudHMsIGluZm8tXFx1MDAzZWV4cF9ldmVudHMsXFxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5My1cXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjMxLjcwNTk5NzU0OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg5Mjk2NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQ29ubnRyYWNrIEV4dGVuc2lvbiBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSBjYW4gY29uZmlybSB0aGF0IGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgaW5kZWVkIGV4cG9ydGVkLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbmFsaXR5LiBCYXNlZCBvbiB0aGUgbmFtZXMgYW5kIHBvdGVudGlhbCB1c2UgY2FzZXMsIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBhcHBlYXIgdG8gYmU6IGBuZl9jdF9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIG9mIGNvdXJzZSwgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC5cblxuTm93LCBJJ20gYWxyZWFkeSBhd2FyZSB0aGF0IGBORl9DT05OVFJBQ0tgIGlzIGEgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgZW5hYmxpbmcgYE5GX05BVGAgaXMgYWxzbyByZXF1aXJlZCBmb3IgcHJvcGVyIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgbmZfY3RfbmF0X2V4dF9hZGRgLiBUaW1lIHRvIGRpZyBkZWVwZXIgb24gdGhhdCBwb3RlbnRpYWwgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MzUuMDk1Mjk1Njc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY5MTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM9Njg5PWdldF91bmlxdWVfdHVwbGUoc3RydWN0IG5mX2Nvbm50cmFja190dXBsZSAqdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTE6c3RydWN0IG5mX2Nvbm5fbmF0ICpuZl9jdF9uYXRfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1Mi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYxLX1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6NzYyOkVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X25hdF9leHRfYWRkKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYzLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jPTI4PW5mX25hdF9tYXNxdWVyYWRlX2lwdjQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtNTktXFxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jOjYwOlxcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtNjEtXFx0aWYgKG5hdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYz0yMjQ9bmZfbmF0X21hc3F1ZXJhZGVfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfbmF0X3JhbmdlMiAqcmFuZ2UsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtMjQwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYzoyNDE6XFx0bmF0ID0gbmZfY3RfbmF0X2V4dF9hZGQoY3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy0yNDItXFx0aWYgKG5hdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jPTg4PWludCBuZl9jdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmMtOTctXFx0LyogQWRkIE5BVCBleHRlbnNpb24gaWYgbm90IGNvbmZpcm1lZCB5ZXQuICovXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmM6OTg6XFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpIFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9uYXRfZXh0X2FkZChjdCkpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmMtOTktXFx0XFx0cmV0dXJuIE5GX0RST1A7ICAgLyogQ2FuJ3QgTkFULiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTozNS4xNDA5ODk1NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNjcyMDU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRW5zdXJpbmcgTkFUIEV4dGVuc2lvbiBBZGRpdGlvbiBpcyBQb3NzaWJsZSoqXG5cblJpZ2h0LCBzbyBgbmZfY3RfbmF0X2V4dF9hZGRgIGRlZmluaXRlbHkgcmVzaWRlcyBpbiBgbmZfbmF0X2NvcmUuY2AuIEFuZCB0aGF0IGNvZGUgaXMgb25seSBidWlsdCBpZiB3ZSd2ZSBlbmFibGVkIGBORl9OQVRgLiBUaGF0J3MgdGhlIGtleS4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlIGNhbiByZWFjaCB0aGF0IE5BVCBleHRlbnNpb24gYWRkaXRpb24gZnVuY3Rpb24sIEkgbmVlZCB0byBhZGQgYE5GX05BVGAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHZlcmlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5LCBJIHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB3aGVyZSBgTkZfTkFUYCBpcyBkZWZpbmVkLiBJJ2xsIHBlZWsgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIGl0J3Mgd2hlcmUgSSBleHBlY3QuIE1ha2luZyBzdXJlIEkgaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgYWx3YXlzIG1ha2VzIHRoZSBkZXZlbG9wbWVudCBhIHNtb290aGVyIGpvdXJuZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjAzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MzguNzc3NzExODQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5NjkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjY6Y29uZmlnIE5GX05BVF9JUkNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQxOmNvbmZpZyBORl9OQVRfUkVESVJFQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0NS1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ3OmNvbmZpZyBORl9OQVRfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjM4LjgyMjYxMTgyNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDA4MTQwMjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXh0ZW5zaW9uIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGNvcnJ1cHRpb24gYXJpc2VzIGJlY2F1c2UgYGtyZWFsbG9jYCBtaWdodCByZWxvY2F0ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCwgYW4gYGhsaXN0X2hlYWRgLCB3aXRob3V0IGNvcnJlY3RseSB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGNhdXNpbmcgaXNzdWVzLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhlIGBORl9OQVRgIGlzIHRyaXN0YXRlIGFuZCBJJ20gYWRkaW5nIGBORl9OQVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBhZGRyZXNzIHRoaXMgZml4LlxuXG5MZXQgbWUgYnJlYWsgZG93biB3aGF0IEknbSBkZWFsaW5nIHdpdGguXG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCBpcyB3aGF0IEknbSBjb25jZXJuZWQgd2l0aC5cbiogICBUaGUgcHJpbWFyeSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZSBmb2xsb3dpbmcgc3ltYm9sczpcbiAgICAqICAgYG5mX2N0X2V4dF9hZGRgXG4gICAgKiAgIGBuZl9jdF9oZWxwZXJfZXh0X2FkZGBcbiAgICAqICAgYG5mX2N0X25hdF9leHRfYWRkYFxuICAgICogICBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgXG4qICAgVGhlIHN5c3RlbSBjb25maWdzIEknbGwgbmVlZCBlbmFibGVkIGFyZTpcbiAgICAqICAgYE5GX0NPTk5UUkFDS2BcbiAgICAqICAgYE5GX05BVGBcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBuZXRmaWx0ZXIgY29yZSBjb2RlIGFuZCBpcyB0aGVyZWZvcmUgcmVhY2hhYmxlLCBhbmQgaXQncyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGhvcm91Z2hseSBmdXp6ZWQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBoYW5kbGUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgY29ycmVjdGx5IGR1cmluZyByZWFsbG9jYXRpb24uXG5cbk5vdywgSSdtIGp1c3QgZG91YmxlIGNoZWNraW5nIHRvIGNvbmZpcm0gdGhhdCBgbmZfY3RfZXh0X2FkZGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBnb3QgdG91Y2hlZC4gWWVwLCBpdCBvbmx5IG1vZGlmaWVkIGBuZl9jdF9leHRfYWRkYCBhbmQgaW50cm9kdWNlcyB0d28gc3RhdGljIGhlbHBlcnMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTg0LCJPdXRwdXRUb2tlbnMiOjE4NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTo0NS4yMzA3NTQyNDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDYxNTIzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9oZWxwZXJfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfbmF0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2VjYWNoZV9leHRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljIHdoZXJlIGBrcmVhbGxvY2AgY291bGQgbW92ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCAoYW4gYGhsaXN0X2hlYWRgKSB3aXRob3V0IHVwZGF0aW5nIHRoZSBwb2ludGVycywgbGVhZGluZyB0byBtZW1vcnkgY29ycnVwdGlvbi4gSXQgaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBsaXN0IGR1cmluZyByZWFsbG9jYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldGZpbHRlciBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfaGVscGVyX2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X25hdF9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9lY2FjaGVfZXh0X2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYyB3aGVyZSBga3JlYWxsb2NgIGNvdWxkIG1vdmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgKGFuIGBobGlzdF9oZWFkYCkgd2l0aG91dCB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGxlYWRpbmcgdG8gbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgbGlzdCBkdXJpbmcgcmVhbGxvY2F0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXRmaWx0ZXIgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 04:03:07 +0000 UTC FinishedAt: 2026-07-30 04:29:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_NAT" ], "series_id": "828787f8-bc51-47de-b74b-840feb36de07" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_ext_add", "nf_ct_helper_ext_add", "nf_ct_nat_ext_add", "nf_ct_ecache_ext_add" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X2hlbHBlcl9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X25hdF9leHRfYWRkJiMzNDssCiAgICAmIzM0O25mX2N0X2VjYWNoZV9leHRfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYyB3aGVyZSBga3JlYWxsb2NgIGNvdWxkIG1vdmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgKGFuIGBobGlzdF9oZWFkYCkgd2l0aG91dCB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGxlYWRpbmcgdG8gbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgbGlzdCBkdXJpbmcgcmVhbGxvY2F0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXRmaWx0ZXIgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI0ZjMxOTllMDkwMTc0YzM5MjU0YjdlNzM0N2ZlMzk1MjMzMjgzODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXG5pbmRleCAwZGExMDVlMWRlZDkzLi5lYTc3OTVhMjQ2MWYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXG5AQCAtODcsOSAmIzQzOzg3LDM0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IHRvdGFsX2V4dGVuc2lvbl9zaXplKHZvaWQpXG4gXHQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IGhsaXN0X2hlYWQgKmV4cGVjdGF0aW9ucylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XG4mIzQzO1xuJiM0MztcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XG4mIzQzO1x0aWYgKCFoZWxwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRobGlzdF9tb3ZlX2xpc3QoXHUwMDI2aGVscC1cdTAwM2VleHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiYjNDM7XG4mIzQzO1x0aGVscCA9IG5mX2N0X2V4dF9maW5kKGN0LCBORl9DVF9FWFRfSEVMUEVSKTtcbiYjNDM7XHRpZiAoIWhlbHApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGhsaXN0X21vdmVfbGlzdChleHBlY3RhdGlvbnMsIFx1MDAyNmhlbHAtXHUwMDNlZXhwZWN0YXRpb25zKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbmV3bGVuLCBuZXdvZmYsIG9sZGxlbiwgYWxsb2M7XG4mIzQzO1x0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xuIFx0c3RydWN0IG5mX2N0X2V4dCAqbmV3O1xuIFxuIFx0LyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovXG5AQCAtMTA4LDEzICYjNDM7MTMzLDE3IEBAIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxuIFx0XHRvbGRsZW4gPSBzaXplb2YoKm5ldyk7XG4gXHR9XG4gXG4mIzQzO1x0bmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCBcdTAwMjZleHBlY3RhdGlvbnMpO1xuJiM0MztcbiBcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xuIFx0bmV3bGVuID0gbmV3b2ZmICYjNDM7IG5mX2N0X2V4dF90eXBlX2xlbltpZF07XG4gXG4gXHRhbGxvYyA9IG1heChuZXdsZW4sIE5GX0NUX0VYVF9QUkVBTExPQyk7XG4gXHRuZXcgPSBrcmVhbGxvYyhjdC1cdTAwM2VleHQsIGFsbG9jLCBnZnApO1xuLVx0aWYgKCFuZXcpXG4mIzQzO1x0aWYgKCFuZXcpIHtcbiYjNDM7XHRcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKCFjdC1cdTAwM2VleHQpXG4gXHRcdG1lbXNldChuZXctXHUwMDNlb2Zmc2V0LCAwLCBzaXplb2YobmV3LVx1MDAzZW9mZnNldCkpO1xuQEAgLTEyNCw2ICYjNDM7MTUzLDggQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4gXHRtZW1zZXQoKHZvaWQgKiluZXcgJiM0MzsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xuIFxuIFx0Y3QtXHUwMDNlZXh0ID0gbmV3O1xuJiM0MztcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiYjNDM7XG4gXHRyZXR1cm4gKHZvaWQgKiluZXcgJiM0MzsgbmV3b2ZmO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNGYzMTk5ZTA5MDE3NGMzOTI1NGI3ZTczNDdmZTM5NTIzMzI4MzgxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDQ6Mjk6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCmluZGV4IDBkYTEwNWUxZGVkOTMuLmVhNzc5NWEyNDYxZjAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCkBAIC04Nyw5ICYjNDM7ODcsMzQgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQgdG90YWxfZXh0ZW5zaW9uX3NpemUodm9pZCkKIAk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LAomIzQzOwkJCQkgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwOwomIzQzOwomIzQzOwloZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpOwomIzQzOwlpZiAoIWhlbHApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWhsaXN0X21vdmVfbGlzdCgmYW1wO2hlbHAtJmd0O2V4cGVjdGF0aW9ucywgZXhwZWN0YXRpb25zKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKHN0cnVjdCBuZl9jb25uICpjdCwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKQomIzQzO3sKJiM0MzsJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDsKJiM0MzsKJiM0MzsJaGVscCA9IG5mX2N0X2V4dF9maW5kKGN0LCBORl9DVF9FWFRfSEVMUEVSKTsKJiM0MzsJaWYgKCFoZWxwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlobGlzdF9tb3ZlX2xpc3QoZXhwZWN0YXRpb25zLCAmYW1wO2hlbHAtJmd0O2V4cGVjdGF0aW9ucyk7CiYjNDM7fQomIzQzOwogdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiB7CiAJdW5zaWduZWQgaW50IG5ld2xlbiwgbmV3b2ZmLCBvbGRsZW4sIGFsbG9jOwomIzQzOwlITElTVF9IRUFEKGV4cGVjdGF0aW9ucyk7CiAJc3RydWN0IG5mX2N0X2V4dCAqbmV3OwogCiAJLyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovCkBAIC0xMDgsMTMgJiM0MzsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiAJCW9sZGxlbiA9IHNpemVvZigqbmV3KTsKIAl9CiAKJiM0MzsJbmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCAmYW1wO2V4cGVjdGF0aW9ucyk7CiYjNDM7CiAJbmV3b2ZmID0gQUxJR04ob2xkbGVuLCBfX2FsaWdub2ZfXyhzdHJ1Y3QgbmZfY3RfZXh0KSk7CiAJbmV3bGVuID0gbmV3b2ZmICYjNDM7IG5mX2N0X2V4dF90eXBlX2xlbltpZF07CiAKIAlhbGxvYyA9IG1heChuZXdsZW4sIE5GX0NUX0VYVF9QUkVBTExPQyk7CiAJbmV3ID0ga3JlYWxsb2MoY3QtJmd0O2V4dCwgYWxsb2MsIGdmcCk7Ci0JaWYgKCFuZXcpCiYjNDM7CWlmICghbmV3KSB7CiYjNDM7CQluZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoY3QsICZhbXA7ZXhwZWN0YXRpb25zKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWlmICghY3QtJmd0O2V4dCkKIAkJbWVtc2V0KG5ldy0mZ3Q7b2Zmc2V0LCAwLCBzaXplb2YobmV3LSZndDtvZmZzZXQpKTsKQEAgLTEyNCw2ICYjNDM7MTUzLDggQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiAJbWVtc2V0KCh2b2lkICopbmV3ICYjNDM7IG5ld29mZiwgMCwgbmV3bGVuIC0gbmV3b2ZmKTsKIAogCWN0LSZndDtleHQgPSBuZXc7CiYjNDM7CW5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgJmFtcDtleHBlY3RhdGlvbnMpOwomIzQzOwogCXJldHVybiAodm9pZCAqKW5ldyAmIzQzOyBuZXdvZmY7CiB9CiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIEl0JiMzOTtzIGFkZGluZyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAsIHdoaWNoIGFyZSB0aGVuIGJlaW5nIGNhbGxlZCBmcm9tIGBuZl9jdF9leHRfYWRkYC4gVGhpcyBzb3VuZHMgbGlrZSB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcHJlc2VydmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3Qgd2l0aGluIGBuZl9jb25uX2hlbHBgIHdoZW5ldmVyIHRoZSBleHRlbnNpb24gYXJlYSBpcyByZWFsbG9jYXRlZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5mX2N0X2V4dF9hZGRgIG1vcmUgY2xvc2VseS4gSXQmIzM5O3Mgb2J2aW91c2x5IGV4cG9ydGVkLCBhbmQgdGhlIG5hbWluZyBzdWdnZXN0cyBpdCYjMzk7cyBmb3IgYWRkaW5nIHRoZXNlIGV4dGVuc2lvbnMgdG8gYSBjb25udHJhY2sgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29ubnRyYWNrIGZyYW1ld29yay4gQWxzbywgSSBuZWVkIHRvIHZlcmlmeSB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxhdGVkLiBMZXQgbWUgbWFrZSBzdXJlIGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBlbmFibGVkLgoKSSYjMzk7bGwgcXVpY2tseSBncmVwIGZvciBgTkZfQ09OTlRSQUNLYCBhbmQgcmVsYXRlZCBzeW1ib2xzIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIG9yIHNpbWlsYXIgY29uZmlnIGZpbGVzLiBOZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSwgb3IgdGhhdCBtaWdodCByZXF1aXJlIHNwZWNpYWwgYXR0ZW50aW9uIGR1cmluZyB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG5mX2N0X2V4dF9hZGRgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiBhIG1vZGlmaWNhdGlvbiB0byBgbmZfY3RfZXh0X2FkZGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgY2hhbmdlIHRoZXJlOyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGV4dGVuc2lvbnMgaW4gY29ubnRyYWNrIGVudHJpZXMuJiMzNDsgTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGFjdCouIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGVycyBvZiBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgd2lsbCB0ZWxsIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIG92ZXJhbGwgY29ubnRyYWNrIG1hY2hpbmVyeS4gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJcyBpdCBpbiB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVyLCBvciBzb21lIGtpbmQgb2YgbG9nZ2luZywgb3Igc29tZSBzcGVjaWZpYyBob29rPyBHb3R0YSBlc3RhYmxpc2ggdGhhdCBiZWZvcmUgSSBjYW4gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4dF9hZGRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMjQ9Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzUwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzUxOlx0ZSA9IG5mX2N0X2V4dF9hZGQoY3QsIE5GX0NUX0VYVF9FQ0FDSEUsIGdmcCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNTItXHRpZiAoZSkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jPTEwMj1zdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjExNDp2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc5PW5mX2N0X2hlbHBlcl9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE4Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjE4MzpcdGhlbHAgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfSEVMUEVSLCBnZnApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTg0LVx0aWYgKGhlbHApIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM9NDM0PWNvbm50cmFja19wcHRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTQ1OC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYzo0NTk6XHRcdGlmICghbmF0IFx1MDAyNlx1MDAyNiAhbmZfY3RfZXh0X2FkZChjdCwgTkZfQ1RfRVhUX05BVCwgR0ZQX0FUT01JQykpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtNDYwLVx0XHRcdHJldHVybiBORl9EUk9QO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz03NTE9c3RydWN0IG5mX2Nvbm5fbmF0ICpuZl9jdF9uYXRfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1Ny1cdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTg6XHRcdG5hdCA9IG5mX2N0X2V4dF9hZGQoY3QsIE5GX0NUX0VYVF9OQVQsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbm50cmFjayBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBjYW4gc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb25udHJhY2sgZXh0ZW5zaW9uIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgdGhlIGBORl9DVF9FWFRfSEVMUEVSYCBleHRlbnNpb24gaXMgaGFuZGxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG5mX2N0X2V4dF9hZGRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYXMgaXQmIzM5O3MgdGhlIG9uZSB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBhIGJ1bmNoIG9mIG90aGVyczogYG5mX2N0X2VjYWNoZV9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYGNvbm50cmFja19wcHRwX2hlbHBgLCBhbmQgYG5mX2N0X25hdF9leHRfYWRkYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgLCB3aGljaCBhcmUgY2FsbGVkIHdpdGhpbiBgbmZfY3RfZXh0X2FkZGAuIFRoZXNlIGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGRlc2lnbmVkIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QsIHdoaWNoIGlzIGFuIGBobGlzdF9oZWFkYCwgZnJvbSB0aGUgYE5GX0NUX0VYVF9IRUxQRVJgIGV4dGVuc2lvbi4KCkFoLCBJIGdldCBpdCBub3cuIFRoaXMgaXMgYSBmaXggZm9yIHdoZW4gYGtyZWFsbG9jYCBpcyB1c2VkLiBJZiBga3JlYWxsb2NgIG1vdmVzIHRoZSBleHRlbnNpb24gYXJlYSwgaXQgbWVhbnMgcG9pbnRlcnMgd2l0aGluIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IG1pZ2h0IG5lZWQgdG8gYmUgdXBkYXRlZC4gSXQgbG9va3MgbGlrZSB0aGUgZml4IGlzIHRvIGhhbmRsZSB0aGUgYGhsaXN0X2hlYWRgIGl0c2VsZiBiZWluZyBtb3ZlZCBieSBga3JlYWxsb2NgLiBXYWl0LCB0aGUgYGhsaXN0X21vdmVfbGlzdGAgZnVuY3Rpb24gKmRvZXMqIHVwZGF0ZSB0aGUgaGVhZCBhbmQgdGhlIGZpcnN0IG5vZGUmIzM5O3MgYHBwcmV2YCBwb2ludGVyLiBTbywgaW4gdGhlIGNhc2Ugb2YgdGhlIGhlYWQgbW92aW5nLCBpdCBlbnN1cmVzIHRoZSBmaXJzdCBub2RlJiMzOTtzIGBwcHJldmAgY29ycmVjdGx5IHBvaW50cyB0byB0aGUgbmV3IGhlYWQuIFRoaXMgbWFrZXMgc2Vuc2UuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBpZiBga3JlYWxsb2NgIG1vdmVzIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgYXJvdW5kLCBJIHRoaW5rIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mX2N0X2V4dF9hZGRgLCBhcyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IHRhcmdldCBvZiB0aGUgcGF0Y2guIEkgY2FuIGFsc28gaW5jbHVkZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaW4gdGhlIGZ1enppbmcgaGFybmVzcyB0byB0cnkgdG8gdHJpZ2dlciB0aGlzIGJ1ZyBpbmRpcmVjdGx5LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYG5mX2N0X2V4dF9hZGRgIGlzIHN0YXRpYyBvciBleHBvcnRlZC4gQWgsIGl0JiMzOTtzIGV4cG9ydGVkLiBHb29kLiBJIHNob3VsZCBhbHNvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgYXJlIHN0YXRpYy4gWWVwLCB0aGV5IGFyZS4gVGhhdCYjMzk7cyBmaW5lLgoKVGltZSB0byBoZWFkIG92ZXIgdG8gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jYCBhbmQgZGlnIGludG8gdGhlIGNvZGUgbW9yZSBkaXJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9leHRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MTAyPXN0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTEzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTE0OnZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTE1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xNTktfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTYwOkVYUE9SVF9TWU1CT0wobmZfY3RfZXh0X2FkZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc0MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbioqCgpPa2F5LCBzbyBgbmZfY3RfZXh0X2FkZGAgaXMgZGVmaW5pdGVseSBleHBvcnRlZCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgdGhpbmc/IE9idmlvdXNseSwgYE5GX0NPTk5UUkFDS2AgaGFzIHRvIGJlIGVuYWJsZWQ7IHRoYXQmIzM5O3MgdGhlIGJhc2UuIEJ1dCBhcmUgdGhlcmUgKm90aGVyKiBkZXBlbmRlbmNpZXMsIG1vcmUgZ3JhbnVsYXIgb25lcz8gVGltZSB0byBkaWcgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIHNlZSBob3cgYG5mX2Nvbm50cmFja19leHRlbmQub2AgaXMgY29uc3RydWN0ZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGllZCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX2V4dGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT01PW5mX2Nvbm50cmFjay15XHQ6PSBuZl9jb25udHJhY2tfY29yZS5vIG5mX2Nvbm50cmFja19zdGFuZGFsb25lLm8gbmZfY29ubnRyYWNrX2V4cGVjdC5vIG5mX2Nvbm50cmFja19oZWxwZXIubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNy1cdFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvX2ljbXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4Olx0XHQgICBuZl9jb25udHJhY2tfZXh0ZW5kLm8gbmZfY29ubnRyYWNrX2FjY3QubyBuZl9jb25udHJhY2tfc2VxYWRqLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29ubnRyYWNrIEV4dGVuc2lvbiBCdWcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBuZl9jb25udHJhY2steWAgY29kZSBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZyBmbGFncy4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGBuZl9jb25udHJhY2tgLCBvYnZpb3VzbHkgYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHByaW1hcnkgc3VzcGVjdC4gV2FpdCwgdG8gdHJpZ2dlciB0aGUgYnVnLCBJIHJlY2FsbCBmcm9tIHRoZSBkZXNjcmlwdGlvbiB0aGF0IGBORl9DVF9FWFRfSEVMUEVSYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgdGhlbiBhbm90aGVyIGV4dGVuc2lvbiBnZXRzIGFkZGVkLCB3aGljaCBzb21laG93IHJlc3VsdHMgaW4gYGtyZWFsbG9jYCBnZXR0aW5nIHRyaWdnZXJlZCBpbiBhIHByb2JsZW1hdGljIHdheS4KCmBORl9DVF9FWFRfSEVMUEVSYCBzZWVtcyB0byBiZSBhZGRlZCBieSBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLiBUaGF0IGZ1bmN0aW9uIGlzIGtleS4gQW5kIHdoYXQgZW5hYmxlcyBoZWxwZXJzPyBXZWxsLCB0aGluZ3MgbGlrZSBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBhbmQgc28gb24uIFNvLCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGFuZCBlbnN1cmUgaGVscGVycyBhcmUgYWN0dWFsbHkgZW5hYmxlZCwgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgTkZfQ09OTlRSQUNLYCAqYW5kKiBtYXliZSBvbmUgb2YgdGhvc2Ugc3BlY2lmaWMgaGVscGVyIGNvbmZpZ3MgbGlrZSBgTkZfQ09OTlRSQUNLX0ZUUGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGxpa2UgYE5GX0NPTk5UUkFDS19BTUFOREFgLgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgKnNwZWNpZmljYWxseSogYXNrcyBmb3Igd2hhdCYjMzk7cyBuZWVkZWQgdG8gKmNvbXBpbGUqIGFuZCB0ZXN0IHRoZSAqbW9kaWZpZWQqIGNvZGUuIFNvLCBwZXJoYXBzIGBORl9DT05OVFJBQ0tgIGFsb25lIGlzIGVub3VnaCB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGlsZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSAqbWVudGlvbnMqIHRoZSBoZWxwZXJzLCBzbyBJIG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGEgaGVscGVyIHRvIHRyaWdnZXIgdGhlIGJ1Zywgc28gSSBzaG91bGQgaW5jbHVkZSBpdC4gVGhlIHByb21wdCBkb2VzIHNheTogJiMzNDtMaXN0IG9mIGtlcm5lbCBjb25maWcgZmxhZ3MgdGhhdCBtdXN0IGJlIGV4cGxpY2l0bHkgZW5hYmxlZCB0byBjb21waWxlIGFuZCB0ZXN0IHRoZSBtb2RpZmllZCBjb2RlLiYjMzQ7IFNvIHRvIGJlIGNlcnRhaW4sIEkgd2lsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gdGhlIGZpbmFsIGxpc3QuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIG9idmlvdXMgY29uZmlnIGZsYWdzIG5lZWRlZC4gT2theSwgYW5kIEkgc2VlIGBORl9DT05OVFJBQ0tgIGlzIGEgdHJpc3RhdGUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBJJiMzOTtsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpOb3cgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUga2V5IHN5bWJvbHMgdGhlIGJ1ZyBpcyByZWxhdGVkIHRvLiBUaGUgbW9zdCBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgbmZfY3RfZXh0X2FkZGAsIGBuZl9jdF9oZWxwZXJfZXh0X2FkZGAsIGBuZl9jdF9uYXRfZXh0X2FkZGAsIGFuZCBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgLiBTbyBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkIGFuZCBhY2Nlc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MTktXHRcdFx0aWYgKGFzc2lnbl9oZWxwZXIpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxODIwOlx0XHRcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xODIxLVx0XHRcdFx0aWYgKGhlbHAgXHUwMDI2XHUwMDI2IHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZhc3NpZ25faGVscGVyLVx1MDAzZWN0X3JlZmNudCkpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc4PXN0cnVjdCBuZl9jb25uX2hlbHAgKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTc5Om5mX2N0X2hlbHBlcl9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZ2ZwX3QgZ2ZwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTgwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODktfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTkwOkVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2hlbHBlcl9leHRfYWRkKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE5MS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jPTE5Mj1pbnQgX19uZl9jdF90cnlfYXNzaWduX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25uICp0bXBsLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyMi1cdGlmIChoZWxwID09IE5VTEwpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjIyMzpcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0yMjQtXHRcdGlmIChoZWxwID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjI9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjc1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyNzY6XHRcdFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjc3LVx0XHRcdGlmIChoZWxwID09IE5VTEwpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYz04NT1pbnQgbmZfY3RfYWRkX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IGNoYXIgKm5hbWUsIHU4IGZhbWlseSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYy05NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jOjk2Olx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfS0VSTkVMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jLTk3LVx0aWYgKCFoZWxwKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMTEyPXN0YXRpYyB2b2lkIG5mdF9jdF9oZWxwZXJfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNDQtXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjExNDU6XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMTQ2LVx0aWYgKGhlbHAgXHUwMDI2XHUwMDI2IHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZ0b19hc3NpZ24tXHUwMDNlY3RfcmVmY250KSkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MTMwMD1zdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIwLVx0aWYgKCFoZWxwKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzIxOlx0XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIyLVx0aWYgKCFoZWxwKSB7XG4tLVxubmV0L25ldGZpbHRlci94dF9DVC5jPTc0PXh0X2N0X3NldF9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBjaGFyICpoZWxwZXJfbmFtZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtOTMtXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM6OTQ6XHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9LRVJORUwpO1xubmV0L25ldGZpbHRlci94dF9DVC5jLTk1LVx0aWYgKGhlbHAgPT0gTlVMTCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgQ29ubmVjdGlvbiBUcmFja2luZyBFeHRlbnNpb24gUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZXhwb3J0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBleHRlbnNpb25zIGluIE5ldGZpbHRlci4gSSBzZWUgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfZXh0X2FkZGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgIGFyZSBhbGwgZGVmaW5pdGl2ZWx5IGV4cG9ydGVkLiBUaGF0JiMzOTtzIGFzIGV4cGVjdGVkLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciByZWdpc3RlcmluZyBkaWZmZXJlbnQga2luZHMgb2YgZXh0ZW5zaW9ucyB3aXRoIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN5c3RlbS4gTm93LCB0aGUgcXVlc3Rpb24gdGhhdOKAmXMgbmFnZ2luZyBhdCBtZSBpcyB3aGV0aGVyIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGhlIEV4dGVuZGVkIENvbm5lY3Rpb24gQ2FjaGUgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHNvIGlmIHRoaXMgZnVuY3Rpb24gKmlzKiBleHBvcnRlZCwgaXQgbWVhbnMgd2XigJl2ZSBnb3QgYSBkZWZpbmVkIGludGVyZmFjZSBmb3IgbWFuYWdpbmcgdGhlIGVjYWNoZSBleHRlbnNpb25zIGFuZCBob3cgdG8gZ2V0IHRoZXNlIGFkZGVkIHRvIHRoZSB0cmFja2luZyB0YWJsZS4gSeKAmWxsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIHRvIGNvbmZpcm0gaXRzIGV4cG9ydCBzdGF0dXMgdG8gdW5kZXJzdGFuZCB0aGUgZWNhY2hlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gcHJvY2VzcyB3aXRoaW4gTmV0ZmlsdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3OTgtXHRpZiAoKGVjYWNoZSB8fCBuZXQtXHUwMDNlY3Quc3lzY3RsX2V2ZW50cykgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6MTc5OTpcdCAgICAhbmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIGVjYWNoZSA/IGVjYWNoZS1cdTAwM2VjdG1hc2sgOiAwLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MDAtXHRcdFx0XHQgIGVjYWNoZSA/IGVjYWNoZS1cdTAwM2VleHBtYXNrIDogMCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMTI9c3RhdGljIHZvaWQgbmZfY3RfZWNhY2hlX3RzdGFtcF9uZXcoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozMjQ6Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM1OS19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozNjA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZWNhY2hlX2V4dF9hZGQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzYxLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjIyPWN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMwMS1cdG5mX2N0X3RzdGFtcF9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyMzAyOlx0bmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIDAsIDAsIEdGUF9BVE9NSUMpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMDMtXHRuZl9jdF9sYWJlbHNfZXh0X2FkZChjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMyNi1cdFx0aWYgKGN0bWFzayBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX2NvbmZpcm1lZChjdCkpXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMyNzpcdFx0XHRuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgY3RtYXNrLCAwLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzI4LVx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM9MTU1PXN0YXRpYyBpbnQgeHRfY3RfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIsXG4tLVxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5MS1cdGlmICgoaW5mby1cdTAwM2VjdF9ldmVudHMgfHwgaW5mby1cdTAwM2VleHBfZXZlbnRzKSBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIveHRfQ1QuYzoxOTI6XHQgICAgIW5mX2N0X2VjYWNoZV9leHRfYWRkKGN0LCBpbmZvLVx1MDAzZWN0X2V2ZW50cywgaW5mby1cdTAwM2VleHBfZXZlbnRzLFxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5My1cdFx0XHRcdCAgR0ZQX0tFUk5FTCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBDb25udHJhY2sgRXh0ZW5zaW9uIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSBjYW4gY29uZmlybSB0aGF0IGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgaW5kZWVkIGV4cG9ydGVkLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbmFsaXR5LiBCYXNlZCBvbiB0aGUgbmFtZXMgYW5kIHBvdGVudGlhbCB1c2UgY2FzZXMsIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBhcHBlYXIgdG8gYmU6IGBuZl9jdF9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIG9mIGNvdXJzZSwgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC4KCk5vdywgSSYjMzk7bSBhbHJlYWR5IGF3YXJlIHRoYXQgYE5GX0NPTk5UUkFDS2AgaXMgYSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBlbmFibGluZyBgTkZfTkFUYCBpcyBhbHNvIHJlcXVpcmVkIGZvciBwcm9wZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBuZl9jdF9uYXRfZXh0X2FkZGAuIFRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGF0IHBvdGVudGlhbCBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz02ODk9Z2V0X3VuaXF1ZV90dXBsZShzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlICp0dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzUwLVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jOjc1MTpzdHJ1Y3QgbmZfY29ubl9uYXQgKm5mX2N0X25hdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NjEtfVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jOjc2MjpFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9uYXRfZXh0X2FkZCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYz0yOD1uZl9uYXRfbWFzcXVlcmFkZV9pcHY0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy01OS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYzo2MDpcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy02MS1cdGlmIChuYXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jPTIyND1uZl9uYXRfbWFzcXVlcmFkZV9pcHY2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9uYXRfcmFuZ2UyICpyYW5nZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtMjQwLVxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jOjI0MTpcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy0yNDItXHRpZiAobmF0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jPTg4PWludCBuZl9jdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jLTk3LVx0LyogQWRkIE5BVCBleHRlbnNpb24gaWYgbm90IGNvbmZpcm1lZCB5ZXQuICovXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9vdnMuYzo5ODpcdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSBcdTAwMjZcdTAwMjYgIW5mX2N0X25hdF9leHRfYWRkKGN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jLTk5LVx0XHRyZXR1cm4gTkZfRFJPUDsgICAvKiBDYW4mIzM5O3QgTkFULiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkVuc3VyaW5nIE5BVCBFeHRlbnNpb24gQWRkaXRpb24gaXMgUG9zc2libGUqKgoKUmlnaHQsIHNvIGBuZl9jdF9uYXRfZXh0X2FkZGAgZGVmaW5pdGVseSByZXNpZGVzIGluIGBuZl9uYXRfY29yZS5jYC4gQW5kIHRoYXQgY29kZSBpcyBvbmx5IGJ1aWx0IGlmIHdlJiMzOTt2ZSBlbmFibGVkIGBORl9OQVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBjYW4gcmVhY2ggdGhhdCBOQVQgZXh0ZW5zaW9uIGFkZGl0aW9uIGZ1bmN0aW9uLCBJIG5lZWQgdG8gYWRkIGBORl9OQVRgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gcXVlc3Rpb24gYWJvdXQgdGhhdC4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdmVyaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3ksIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHdoZXJlIGBORl9OQVRgIGlzIGRlZmluZWQuIEkmIzM5O2xsIHBlZWsgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIGl0JiMzOTtzIHdoZXJlIEkgZXhwZWN0LiBNYWtpbmcgc3VyZSBJIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGFsd2F5cyBtYWtlcyB0aGUgZGV2ZWxvcG1lbnQgYSBzbW9vdGhlciBqb3VybmV5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfTkFUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDE2OmNvbmZpZyBORl9OQVRfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjY6Y29uZmlnIE5GX05BVF9JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQxOmNvbmZpZyBORl9OQVRfUkVESVJFQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDUtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0Nzpjb25maWcgTkZfTkFUX09WU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5ODQKCQkJCQkJCW91dHB1dDogMTg3CgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXh0ZW5zaW9uIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRlYWxzIHdpdGggYSBjcml0aWNhbCBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljLiBTcGVjaWZpY2FsbHksIHRoZSBwb3RlbnRpYWwgZm9yIG1lbW9yeSBjb3JydXB0aW9uIGFyaXNlcyBiZWNhdXNlIGBrcmVhbGxvY2AgbWlnaHQgcmVsb2NhdGUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QsIGFuIGBobGlzdF9oZWFkYCwgd2l0aG91dCBjb3JyZWN0bHkgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBjYXVzaW5nIGlzc3Vlcy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGUgYE5GX05BVGAgaXMgdHJpc3RhdGUgYW5kIEkmIzM5O20gYWRkaW5nIGBORl9OQVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBhZGRyZXNzIHRoaXMgZml4LgoKTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCBpcyB3aGF0IEkmIzM5O20gY29uY2VybmVkIHdpdGguCiogICBUaGUgcHJpbWFyeSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZSBmb2xsb3dpbmcgc3ltYm9sczoKICAgICogICBgbmZfY3RfZXh0X2FkZGAKICAgICogICBgbmZfY3RfaGVscGVyX2V4dF9hZGRgCiAgICAqICAgYG5mX2N0X25hdF9leHRfYWRkYAogICAgKiAgIGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAKKiAgIFRoZSBzeXN0ZW0gY29uZmlncyBJJiMzOTtsbCBuZWVkIGVuYWJsZWQgYXJlOgogICAgKiAgIGBORl9DT05OVFJBQ0tgCiAgICAqICAgYE5GX05BVGAKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGNvcmUgY29kZSBhbmQgaXMgdGhlcmVmb3JlIHJlYWNoYWJsZSwgYW5kIGl0JiMzOTtzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB0aG9yb3VnaGx5IGZ1enplZC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIGhhbmRsZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCBjb3JyZWN0bHkgZHVyaW5nIHJlYWxsb2NhdGlvbi4KCk5vdywgSSYjMzk7bSBqdXN0IGRvdWJsZSBjaGVja2luZyB0byBjb25maXJtIHRoYXQgYG5mX2N0X2V4dF9hZGRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZ290IHRvdWNoZWQuIFllcCwgaXQgb25seSBtb2RpZmllZCBgbmZfY3RfZXh0X2FkZGAgYW5kIGludHJvZHVjZXMgdHdvIHN0YXRpYyBoZWxwZXJzLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gSSYjMzk7bSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfaGVscGVyX2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfbmF0X2V4dF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY3RfZWNhY2hlX2V4dF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljIHdoZXJlIGBrcmVhbGxvY2AgY291bGQgbW92ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCAoYW4gYGhsaXN0X2hlYWRgKSB3aXRob3V0IHVwZGF0aW5nIHRoZSBwb2ludGVycywgbGVhZGluZyB0byBtZW1vcnkgY29ycnVwdGlvbi4gSXQgaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBsaXN0IGR1cmluZyByZWFsbG9jYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldGZpbHRlciBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9oZWxwZXJfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9uYXRfZXh0X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jdF9lY2FjaGVfZXh0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowMi41NDMzNzMxMjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc2MjAwNjI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfZWNhY2hlX2V4dF9hZGRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjAyLjU0MzM3NzU0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwNjIzNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjRmMzE5OWUwOTAxNzRjMzkyNTRiN2U3MzQ3ZmUzOTUyMzMyODM4MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXFxuaW5kZXggMGRhMTA1ZTFkZWQ5My4uZWE3Nzk1YTI0NjFmMCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXFxuQEAgLTg3LDkgKzg3LDM0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IHRvdGFsX2V4dGVuc2lvbl9zaXplKHZvaWQpXFxuIFxcdDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbmZfY3RfZXh0X2hlbHBlcl9zYXZlKHN0cnVjdCBuZl9jb25uICpjdCxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxcbit7XFxuK1xcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XFxuK1xcbitcXHRoZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpO1xcbitcXHRpZiAoIWhlbHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGhsaXN0X21vdmVfbGlzdChcXHUwMDI2aGVscC1cXHUwMDNlZXhwZWN0YXRpb25zLCBleHBlY3RhdGlvbnMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpXFxuK3tcXG4rXFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcXG4rXFxuK1xcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XFxuK1xcdGlmICghaGVscClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aGxpc3RfbW92ZV9saXN0KGV4cGVjdGF0aW9ucywgXFx1MDAyNmhlbHAtXFx1MDAzZWV4cGVjdGF0aW9ucyk7XFxuK31cXG4rXFxuIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBuZXdsZW4sIG5ld29mZiwgb2xkbGVuLCBhbGxvYztcXG4rXFx0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xcbiBcXHRzdHJ1Y3QgbmZfY3RfZXh0ICpuZXc7XFxuIFxcbiBcXHQvKiBDb25udHJhY2sgbXVzdCBub3QgYmUgY29uZmlybWVkIHRvIGF2b2lkIHJhY2VzIG9uIHJlYWxsb2NhdGlvbi4gKi9cXG5AQCAtMTA4LDEzICsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXFxuIFxcdFxcdG9sZGxlbiA9IHNpemVvZigqbmV3KTtcXG4gXFx0fVxcbiBcXG4rXFx0bmZfY3RfZXh0X2hlbHBlcl9zYXZlKGN0LCBcXHUwMDI2ZXhwZWN0YXRpb25zKTtcXG4rXFxuIFxcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xcbiBcXHRuZXdsZW4gPSBuZXdvZmYgKyBuZl9jdF9leHRfdHlwZV9sZW5baWRdO1xcbiBcXG4gXFx0YWxsb2MgPSBtYXgobmV3bGVuLCBORl9DVF9FWFRfUFJFQUxMT0MpO1xcbiBcXHRuZXcgPSBrcmVhbGxvYyhjdC1cXHUwMDNlZXh0LCBhbGxvYywgZ2ZwKTtcXG4tXFx0aWYgKCFuZXcpXFxuK1xcdGlmICghbmV3KSB7XFxuK1xcdFxcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXFx1MDAyNmV4cGVjdGF0aW9ucyk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoIWN0LVxcdTAwM2VleHQpXFxuIFxcdFxcdG1lbXNldChuZXctXFx1MDAzZW9mZnNldCwgMCwgc2l6ZW9mKG5ldy1cXHUwMDNlb2Zmc2V0KSk7XFxuQEAgLTEyNCw2ICsxNTMsOCBAQCB2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcXG4gXFx0bWVtc2V0KCh2b2lkICopbmV3ICsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xcbiBcXG4gXFx0Y3QtXFx1MDAzZWV4dCA9IG5ldztcXG4rXFx0bmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKGN0LCBcXHUwMDI2ZXhwZWN0YXRpb25zKTtcXG4rXFxuIFxcdHJldHVybiAodm9pZCAqKW5ldyArIG5ld29mZjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowMi45MTQ1ODAxMDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjM5MDc5MTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfZWNhY2hlX2V4dF9hZGRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMgd2hlcmUgYGtyZWFsbG9jYCBjb3VsZCBtb3ZlIHRoZSBgZXhwZWN0YXRpb25zYCBsaXN0IChhbiBgaGxpc3RfaGVhZGApIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHBvaW50ZXJzLCBsZWFkaW5nIHRvIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGxpc3QgZHVyaW5nIHJlYWxsb2NhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0ZmlsdGVyIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI0ZjMxOTllMDkwMTc0YzM5MjU0YjdlNzM0N2ZlMzk1MjMzMjgzODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNDoyOTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbmluZGV4IDBkYTEwNWUxZGVkOTMuLmVhNzc5NWEyNDYxZjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmNcbkBAIC04Nyw5ICs4NywzNCBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCB0b3RhbF9leHRlbnNpb25fc2l6ZSh2b2lkKVxuIFx0O1xuIH1cbiBcbitzdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3NhdmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgaGxpc3RfaGVhZCAqZXhwZWN0YXRpb25zKVxuK3tcbitcdHN0cnVjdCBuZl9jb25uX2hlbHAgKmhlbHA7XG4rXG4rXHRoZWxwID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9IRUxQRVIpO1xuK1x0aWYgKCFoZWxwKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRobGlzdF9tb3ZlX2xpc3QoXHUwMDI2aGVscC1cdTAwM2VleHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBobGlzdF9oZWFkICpleHBlY3RhdGlvbnMpXG4re1xuK1x0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbitcbitcdGhlbHAgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0hFTFBFUik7XG4rXHRpZiAoIWhlbHApXG4rXHRcdHJldHVybjtcbitcbitcdGhsaXN0X21vdmVfbGlzdChleHBlY3RhdGlvbnMsIFx1MDAyNmhlbHAtXHUwMDNlZXhwZWN0YXRpb25zKTtcbit9XG4rXG4gdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4ge1xuIFx0dW5zaWduZWQgaW50IG5ld2xlbiwgbmV3b2ZmLCBvbGRsZW4sIGFsbG9jO1xuK1x0SExJU1RfSEVBRChleHBlY3RhdGlvbnMpO1xuIFx0c3RydWN0IG5mX2N0X2V4dCAqbmV3O1xuIFxuIFx0LyogQ29ubnRyYWNrIG11c3Qgbm90IGJlIGNvbmZpcm1lZCB0byBhdm9pZCByYWNlcyBvbiByZWFsbG9jYXRpb24uICovXG5AQCAtMTA4LDEzICsxMzMsMTcgQEAgdm9pZCAqbmZfY3RfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApXG4gXHRcdG9sZGxlbiA9IHNpemVvZigqbmV3KTtcbiBcdH1cbiBcbitcdG5mX2N0X2V4dF9oZWxwZXJfc2F2ZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbitcbiBcdG5ld29mZiA9IEFMSUdOKG9sZGxlbiwgX19hbGlnbm9mX18oc3RydWN0IG5mX2N0X2V4dCkpO1xuIFx0bmV3bGVuID0gbmV3b2ZmICsgbmZfY3RfZXh0X3R5cGVfbGVuW2lkXTtcbiBcbiBcdGFsbG9jID0gbWF4KG5ld2xlbiwgTkZfQ1RfRVhUX1BSRUFMTE9DKTtcbiBcdG5ldyA9IGtyZWFsbG9jKGN0LVx1MDAzZWV4dCwgYWxsb2MsIGdmcCk7XG4tXHRpZiAoIW5ldylcbitcdGlmICghbmV3KSB7XG4rXHRcdG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShjdCwgXHUwMDI2ZXhwZWN0YXRpb25zKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRpZiAoIWN0LVx1MDAzZWV4dClcbiBcdFx0bWVtc2V0KG5ldy1cdTAwM2VvZmZzZXQsIDAsIHNpemVvZihuZXctXHUwMDNlb2Zmc2V0KSk7XG5AQCAtMTI0LDYgKzE1Myw4IEBAIHZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxuIFx0bWVtc2V0KCh2b2lkICopbmV3ICsgbmV3b2ZmLCAwLCBuZXdsZW4gLSBuZXdvZmYpO1xuIFxuIFx0Y3QtXHUwMDNlZXh0ID0gbmV3O1xuK1x0bmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlKGN0LCBcdTAwMjZleHBlY3RhdGlvbnMpO1xuK1xuIFx0cmV0dXJuICh2b2lkICopbmV3ICsgbmV3b2ZmO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG5mX2N0X2V4dF9hZGQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MDIuOTE0NTgxNTY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNjczNzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBFeHRlbnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdOKAmXMgdHdlYWtpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jYC4gSXQncyBhZGRpbmcgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgLCB3aGljaCBhcmUgdGhlbiBiZWluZyBjYWxsZWQgZnJvbSBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgc291bmRzIGxpa2UgdGhleSdyZSB0cnlpbmcgdG8gcHJlc2VydmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3Qgd2l0aGluIGBuZl9jb25uX2hlbHBgIHdoZW5ldmVyIHRoZSBleHRlbnNpb24gYXJlYSBpcyByZWFsbG9jYXRlZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmZfY3RfZXh0X2FkZGAgbW9yZSBjbG9zZWx5LiBJdCdzIG9idmlvdXNseSBleHBvcnRlZCwgYW5kIHRoZSBuYW1pbmcgc3VnZ2VzdHMgaXQncyBmb3IgYWRkaW5nIHRoZXNlIGV4dGVuc2lvbnMgdG8gYSBjb25udHJhY2sgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hlcmUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLiBBbHNvLCBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQuIExldCBtZSBtYWtlIHN1cmUgYENPTkZJR19ORl9DT05OVFJBQ0tgIGlzIGVuYWJsZWQuXG5cbkknbGwgcXVpY2tseSBncmVwIGZvciBgTkZfQ09OTlRSQUNLYCBhbmQgcmVsYXRlZCBzeW1ib2xzIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIG9yIHNpbWlsYXIgY29uZmlnIGZpbGVzLiBOZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSwgb3IgdGhhdCBtaWdodCByZXF1aXJlIHNwZWNpYWwgYXR0ZW50aW9uIGR1cmluZyB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MDcuMTIxMzIxMzU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTkzMDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTowNy4xNjU1MTYyOThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTMwMzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBuZl9jdF9leHRfYWRkYCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiBhIG1vZGlmaWNhdGlvbiB0byBgbmZfY3RfZXh0X2FkZGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgY2hhbmdlIHRoZXJlOyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGV4dGVuc2lvbnMgaW4gY29ubnRyYWNrIGVudHJpZXMuXCIgTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGFjdCouIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGVycyBvZiBgbmZfY3RfZXh0X2FkZGAuIFRoaXMgd2lsbCB0ZWxsIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIG92ZXJhbGwgY29ubnRyYWNrIG1hY2hpbmVyeS4gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJcyBpdCBpbiB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVyLCBvciBzb21lIGtpbmQgb2YgbG9nZ2luZywgb3Igc29tZSBzcGVjaWZpYyBob29rPyBHb3R0YSBlc3RhYmxpc2ggdGhhdCBiZWZvcmUgSSBjYW4gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTEuMDc0MDQ4ODEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTQ4NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2V4dF9hZGRcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0zMjQ9Ym9vbCBuZl9jdF9lY2FjaGVfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIHUxNiBjdG1hc2ssIHUxNiBleHBtYXNrLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzUxOlxcdGUgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfRUNBQ0hFLCBnZnApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM1Mi1cXHRpZiAoZSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MTAyPXN0YXRpYyB2b2lkIG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZShzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xMTMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6MTE0OnZvaWQgKm5mX2N0X2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2V4dF9pZCBpZCwgZ2ZwX3QgZ2ZwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTExNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYz0xNzk9bmZfY3RfaGVscGVyX2V4dF9hZGQoc3RydWN0IG5mX2Nvbm4gKmN0LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MTgzOlxcdGhlbHAgPSBuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfSEVMUEVSLCBnZnApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE4NC1cXHRpZiAoaGVscCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jPTQzND1jb25udHJhY2tfcHB0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTQ1OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6NDU5OlxcdFxcdGlmICghbmF0IFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9leHRfYWRkKGN0LCBORl9DVF9FWFRfTkFULCBHRlBfQVRPTUlDKSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtNDYwLVxcdFxcdFxcdHJldHVybiBORl9EUk9QO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTc1MT1zdHJ1Y3QgbmZfY29ubl9uYXQgKm5mX2N0X25hdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy03NTctXFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTg6XFx0XFx0bmF0ID0gbmZfY3RfZXh0X2FkZChjdCwgTkZfQ1RfRVhUX05BVCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTEuMTIxMDAxNjQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI1Mzc2MTM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25udHJhY2sgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIGNhbiBzZWUgaXQncyB0b3VjaGluZyB0aGUgY29ubnRyYWNrIGV4dGVuc2lvbiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBhcm91bmQgaG93IHRoZSBgTkZfQ1RfRVhUX0hFTFBFUmAgZXh0ZW5zaW9uIGlzIGhhbmRsZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBuZl9jdF9leHRfYWRkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGFzIGl0J3MgdGhlIG9uZSB0aGF0J3MgYmVpbmcgY2FsbGVkIGJ5IGEgYnVuY2ggb2Ygb3RoZXJzOiBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgLCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgY29ubnRyYWNrX3BwdHBfaGVscGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAsIHdoaWNoIGFyZSBjYWxsZWQgd2l0aGluIGBuZl9jdF9leHRfYWRkYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gdG8gYmUgZGVzaWduZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCwgd2hpY2ggaXMgYW4gYGhsaXN0X2hlYWRgLCBmcm9tIHRoZSBgTkZfQ1RfRVhUX0hFTFBFUmAgZXh0ZW5zaW9uLlxuXG5BaCwgSSBnZXQgaXQgbm93LiBUaGlzIGlzIGEgZml4IGZvciB3aGVuIGBrcmVhbGxvY2AgaXMgdXNlZC4gSWYgYGtyZWFsbG9jYCBtb3ZlcyB0aGUgZXh0ZW5zaW9uIGFyZWEsIGl0IG1lYW5zIHBvaW50ZXJzIHdpdGhpbiB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCBtaWdodCBuZWVkIHRvIGJlIHVwZGF0ZWQuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byBoYW5kbGUgdGhlIGBobGlzdF9oZWFkYCBpdHNlbGYgYmVpbmcgbW92ZWQgYnkgYGtyZWFsbG9jYC4gV2FpdCwgdGhlIGBobGlzdF9tb3ZlX2xpc3RgIGZ1bmN0aW9uICpkb2VzKiB1cGRhdGUgdGhlIGhlYWQgYW5kIHRoZSBmaXJzdCBub2RlJ3MgYHBwcmV2YCBwb2ludGVyLiBTbywgaW4gdGhlIGNhc2Ugb2YgdGhlIGhlYWQgbW92aW5nLCBpdCBlbnN1cmVzIHRoZSBmaXJzdCBub2RlJ3MgYHBwcmV2YCBjb3JyZWN0bHkgcG9pbnRzIHRvIHRoZSBuZXcgaGVhZC4gVGhpcyBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgaWYgYGtyZWFsbG9jYCBtb3ZlcyB0aGlzIGRhdGEgc3RydWN0dXJlIGFyb3VuZCwgSSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mX2N0X2V4dF9hZGRgLCBhcyB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0IG9mIHRoZSBwYXRjaC4gSSBjYW4gYWxzbyBpbmNsdWRlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfbmF0X2V4dF9hZGRgLCBhbmQgYG5mX2N0X2VjYWNoZV9leHRfYWRkYCBpbiB0aGUgZnV6emluZyBoYXJuZXNzIHRvIHRyeSB0byB0cmlnZ2VyIHRoaXMgYnVnIGluZGlyZWN0bHkuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBuZl9jdF9leHRfYWRkYCBpcyBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCBpdCdzIGV4cG9ydGVkLiBHb29kLiBJIHNob3VsZCBhbHNvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgYXJlIHN0YXRpYy4gWWVwLCB0aGV5IGFyZS4gVGhhdCdzIGZpbmUuXG5cblRpbWUgdG8gaGVhZCBvdmVyIHRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuY2AgYW5kIGRpZyBpbnRvIHRoZSBjb2RlIG1vcmUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTguMzc0NzY1MjkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTQyNjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jPTEwMj1zdGF0aWMgdm9pZCBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmUoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTEzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjExNDp2b2lkICpuZl9jdF9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9leHRfaWQgaWQsIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0xMTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMTU5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzoxNjA6RVhQT1JUX1NZTUJPTChuZl9jdF9leHRfYWRkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MTguNjk2MTk4NzEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2OTkzNDE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIENvbm50cmFjayBFeHRlbnNpb24qKlxuXG5Pa2F5LCBzbyBgbmZfY3RfZXh0X2FkZGAgaXMgZGVmaW5pdGVseSBleHBvcnRlZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gYWN0dWFsbHkgKnVzZSogdGhpcyB0aGluZz8gT2J2aW91c2x5LCBgTkZfQ09OTlRSQUNLYCBoYXMgdG8gYmUgZW5hYmxlZDsgdGhhdCdzIHRoZSBiYXNlLiBCdXQgYXJlIHRoZXJlICpvdGhlciogZGVwZW5kZW5jaWVzLCBtb3JlIGdyYW51bGFyIG9uZXM/IFRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIHNlZSBob3cgYG5mX2Nvbm50cmFja19leHRlbmQub2AgaXMgY29uc3RydWN0ZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGllZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc0MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjIxLjc2NjEzNDQ2OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzMDkxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2V4dGVuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9NT1uZl9jb25udHJhY2steVxcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNy1cXHRcXHQgICBuZl9jb25udHJhY2tfcHJvdG9faWNtcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg6XFx0XFx0ICAgbmZfY29ubnRyYWNrX2V4dGVuZC5vIG5mX2Nvbm50cmFja19hY2N0Lm8gbmZfY29ubnRyYWNrX3NlcWFkai5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyMS44MDg0NDU1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDY1Mjg4ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb25udHJhY2sgRXh0ZW5zaW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZl9jb25udHJhY2steWAgY29kZSBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZyBmbGFncy4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGBuZl9jb25udHJhY2tgLCBvYnZpb3VzbHkgYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHByaW1hcnkgc3VzcGVjdC4gV2FpdCwgdG8gdHJpZ2dlciB0aGUgYnVnLCBJIHJlY2FsbCBmcm9tIHRoZSBkZXNjcmlwdGlvbiB0aGF0IGBORl9DVF9FWFRfSEVMUEVSYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgdGhlbiBhbm90aGVyIGV4dGVuc2lvbiBnZXRzIGFkZGVkLCB3aGljaCBzb21laG93IHJlc3VsdHMgaW4gYGtyZWFsbG9jYCBnZXR0aW5nIHRyaWdnZXJlZCBpbiBhIHByb2JsZW1hdGljIHdheS5cblxuYE5GX0NUX0VYVF9IRUxQRVJgIHNlZW1zIHRvIGJlIGFkZGVkIGJ5IGBuZl9jdF9oZWxwZXJfZXh0X2FkZGAuIFRoYXQgZnVuY3Rpb24gaXMga2V5LiBBbmQgd2hhdCBlbmFibGVzIGhlbHBlcnM/IFdlbGwsIHRoaW5ncyBsaWtlIGBDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUGAsIGBDT05GSUdfTkZfQ09OTlRSQUNLX0lSQ2AsIGFuZCBzbyBvbi4gU28sIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgYW5kIGVuc3VyZSBoZWxwZXJzIGFyZSBhY3R1YWxseSBlbmFibGVkLCBJIHNob3VsZCBwcm9iYWJseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgICphbmQqIG1heWJlIG9uZSBvZiB0aG9zZSBzcGVjaWZpYyBoZWxwZXIgY29uZmlncyBsaWtlIGBORl9DT05OVFJBQ0tfRlRQYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSBgTkZfQ09OTlRSQUNLX0FNQU5EQWAuXG5cbkJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIGFza3MgZm9yIHdoYXQncyBuZWVkZWQgdG8gKmNvbXBpbGUqIGFuZCB0ZXN0IHRoZSAqbW9kaWZpZWQqIGNvZGUuIFNvLCBwZXJoYXBzIGBORl9DT05OVFJBQ0tgIGFsb25lIGlzIGVub3VnaCB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGlsZS4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlICptZW50aW9ucyogdGhlIGhlbHBlcnMsIHNvIEkgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYSBoZWxwZXIgdG8gdHJpZ2dlciB0aGUgYnVnLCBzbyBJIHNob3VsZCBpbmNsdWRlIGl0LiBUaGUgcHJvbXB0IGRvZXMgc2F5OiBcIkxpc3Qgb2Yga2VybmVsIGNvbmZpZyBmbGFncyB0aGF0IG11c3QgYmUgZXhwbGljaXRseSBlbmFibGVkIHRvIGNvbXBpbGUgYW5kIHRlc3QgdGhlIG1vZGlmaWVkIGNvZGUuXCIgU28gdG8gYmUgY2VydGFpbiwgSSB3aWxsIGFkZCBgTkZfQ09OTlRSQUNLYCB0byB0aGUgZmluYWwgbGlzdC5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWcgZmxhZ3MgbmVlZGVkLiBPa2F5LCBhbmQgSSBzZWUgYE5GX0NPTk5UUkFDS2AgaXMgYSB0cmlzdGF0ZS4gVGhhdCdzIGdvb2QgdG8ga25vdy4gSSdsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuXG5cbk5vdyBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIGtleSBzeW1ib2xzIHRoZSBidWcgaXMgcmVsYXRlZCB0by4gVGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgYG5mX2N0X2V4dF9hZGRgLCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfbmF0X2V4dF9hZGRgLCBhbmQgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC4gU28gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyOC4yNzM3MzYyMTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTAyNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2hlbHBlcl9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTgxOS1cXHRcXHRcXHRpZiAoYXNzaWduX2hlbHBlcikge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxODIwOlxcdFxcdFxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE4MjEtXFx0XFx0XFx0XFx0aWYgKGhlbHAgXFx1MDAyNlxcdTAwMjYgcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZhc3NpZ25faGVscGVyLVxcdTAwM2VjdF9yZWZjbnQpKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM9MTc4PXN0cnVjdCBuZl9jb25uX2hlbHAgKlxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jOjE3OTpuZl9jdF9oZWxwZXJfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYy0xODAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmMtMTg5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYzoxOTA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfaGVscGVyX2V4dF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTE5MS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuYz0xOTI9aW50IF9fbmZfY3RfdHJ5X2Fzc2lnbl9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubiAqdG1wbCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyMi1cXHRpZiAoaGVscCA9PSBOVUxMKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmM6MjIzOlxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgZmxhZ3MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5jLTIyNC1cXHRcXHRpZiAoaGVscCA9PSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjI9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyNzUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyNzY6XFx0XFx0XFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjI3Ny1cXHRcXHRcXHRpZiAoaGVscCA9PSBOVUxMKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19vdnMuYz04NT1pbnQgbmZfY3RfYWRkX2hlbHBlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IGNoYXIgKm5hbWUsIHU4IGZhbWlseSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jLTk1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX292cy5jOjk2OlxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0tFUk5FTCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfb3ZzLmMtOTctXFx0aWYgKCFoZWxwKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTExMTI9c3RhdGljIHZvaWQgbmZ0X2N0X2hlbHBlcl9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMTQ0LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTE0NTpcXHRoZWxwID0gbmZfY3RfaGVscGVyX2V4dF9hZGQoY3QsIEdGUF9BVE9NSUMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE0Ni1cXHRpZiAoaGVscCBcXHUwMDI2XFx1MDAyNiByZWZjb3VudF9pbmNfbm90X3plcm8oXFx1MDAyNnRvX2Fzc2lnbi1cXHUwMDNlY3RfcmVmY250KSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzAwPXN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMyMC1cXHRpZiAoIWhlbHApXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzIxOlxcdFxcdGhlbHAgPSBuZl9jdF9oZWxwZXJfZXh0X2FkZChjdCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzIyLVxcdGlmICghaGVscCkge1xcbi0tXFxubmV0L25ldGZpbHRlci94dF9DVC5jPTc0PXh0X2N0X3NldF9oZWxwZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBjaGFyICpoZWxwZXJfbmFtZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfQ1QuYy05My1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM6OTQ6XFx0aGVscCA9IG5mX2N0X2hlbHBlcl9leHRfYWRkKGN0LCBHRlBfS0VSTkVMKTtcXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtOTUtXFx0aWYgKGhlbHAgPT0gTlVMTCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOToyOC4zMjQyNDM0NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1MjQzODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIEV4dGVuc2lvbiBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZXhwb3J0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBleHRlbnNpb25zIGluIE5ldGZpbHRlci4gSSBzZWUgdGhhdCBgbmZfY3RfaGVscGVyX2V4dF9hZGRgLCBgbmZfY3RfZXh0X2FkZGAsIGFuZCBgbmZfY3RfbmF0X2V4dF9hZGRgIGFyZSBhbGwgZGVmaW5pdGl2ZWx5IGV4cG9ydGVkLiBUaGF0J3MgYXMgZXhwZWN0ZWQuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgZm9yIHJlZ2lzdGVyaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleHRlbnNpb25zIHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3lzdGVtLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF04oCZcyBuYWdnaW5nIGF0IG1lIGlzIHdoZXRoZXIgYG5mX2N0X2VjYWNoZV9leHRfYWRkYCBpcyBhbHNvIGV4cG9ydGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgRXh0ZW5kZWQgQ29ubmVjdGlvbiBDYWNoZSBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc28gaWYgdGhpcyBmdW5jdGlvbiAqaXMqIGV4cG9ydGVkLCBpdCBtZWFucyB3ZeKAmXZlIGdvdCBhIGRlZmluZWQgaW50ZXJmYWNlIGZvciBtYW5hZ2luZyB0aGUgZWNhY2hlIGV4dGVuc2lvbnMgYW5kIGhvdyB0byBnZXQgdGhlc2UgYWRkZWQgdG8gdGhlIHRyYWNraW5nIHRhYmxlLiBJ4oCZbGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgdG8gY29uZmlybSBpdHMgZXhwb3J0IHN0YXR1cyB0byB1bmRlcnN0YW5kIHRoZSBlY2FjaGUgZXh0ZW5zaW9uIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdpdGhpbiBOZXRmaWx0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTozMS42NTk0ODk5MThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTAzMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2VjYWNoZV9leHRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc5OC1cXHRpZiAoKGVjYWNoZSB8fCBuZXQtXFx1MDAzZWN0LnN5c2N0bF9ldmVudHMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3OTk6XFx0ICAgICFuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgZWNhY2hlID8gZWNhY2hlLVxcdTAwM2VjdG1hc2sgOiAwLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xODAwLVxcdFxcdFxcdFxcdCAgZWNhY2hlID8gZWNhY2hlLVxcdTAwM2VleHBtYXNrIDogMCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTMxMj1zdGF0aWMgdm9pZCBuZl9jdF9lY2FjaGVfdHN0YW1wX25ldyhjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzIzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjMyNDpib29sIG5mX2N0X2VjYWNoZV9leHRfYWRkKHN0cnVjdCBuZl9jb25uICpjdCwgdTE2IGN0bWFzaywgdTE2IGV4cG1hc2ssIGdmcF90IGdmcClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zMjUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMzU5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzozNjA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZWNhY2hlX2V4dF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM2MS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjIyPWN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMzAxLVxcdG5mX2N0X3RzdGFtcF9leHRfYWRkKGN0LCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMwMjpcXHRuZl9jdF9lY2FjaGVfZXh0X2FkZChjdCwgMCwgMCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMDMtXFx0bmZfY3RfbGFiZWxzX2V4dF9hZGQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzI2LVxcdFxcdGlmIChjdG1hc2sgXFx1MDAyNlxcdTAwMjYgIW5mX2N0X2lzX2NvbmZpcm1lZChjdCkpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMjc6XFx0XFx0XFx0bmZfY3RfZWNhY2hlX2V4dF9hZGQoY3QsIGN0bWFzaywgMCwgR0ZQX0FUT01JQyk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmM9MTU1PXN0YXRpYyBpbnQgeHRfY3RfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0NULmMtMTkxLVxcdGlmICgoaW5mby1cXHUwMDNlY3RfZXZlbnRzIHx8IGluZm8tXFx1MDAzZWV4cF9ldmVudHMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci94dF9DVC5jOjE5MjpcXHQgICAgIW5mX2N0X2VjYWNoZV9leHRfYWRkKGN0LCBpbmZvLVxcdTAwM2VjdF9ldmVudHMsIGluZm8tXFx1MDAzZWV4cF9ldmVudHMsXFxubmV0L25ldGZpbHRlci94dF9DVC5jLTE5My1cXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjMxLjcwNTk5NzU0OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg5Mjk2NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQ29ubnRyYWNrIEV4dGVuc2lvbiBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSBjYW4gY29uZmlybSB0aGF0IGBuZl9jdF9lY2FjaGVfZXh0X2FkZGAgaXMgaW5kZWVkIGV4cG9ydGVkLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbmFsaXR5LiBCYXNlZCBvbiB0aGUgbmFtZXMgYW5kIHBvdGVudGlhbCB1c2UgY2FzZXMsIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBhcHBlYXIgdG8gYmU6IGBuZl9jdF9leHRfYWRkYCwgYG5mX2N0X2hlbHBlcl9leHRfYWRkYCwgYG5mX2N0X25hdF9leHRfYWRkYCwgYW5kIG9mIGNvdXJzZSwgYG5mX2N0X2VjYWNoZV9leHRfYWRkYC5cblxuTm93LCBJJ20gYWxyZWFkeSBhd2FyZSB0aGF0IGBORl9DT05OVFJBQ0tgIGlzIGEgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgZW5hYmxpbmcgYE5GX05BVGAgaXMgYWxzbyByZXF1aXJlZCBmb3IgcHJvcGVyIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgbmZfY3RfbmF0X2V4dF9hZGRgLiBUaW1lIHRvIGRpZyBkZWVwZXIgb24gdGhhdCBwb3RlbnRpYWwgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MzUuMDk1Mjk1Njc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY5MTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9uYXRfZXh0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM9Njg5PWdldF91bmlxdWVfdHVwbGUoc3RydWN0IG5mX2Nvbm50cmFja190dXBsZSAqdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo3NTE6c3RydWN0IG5mX2Nvbm5fbmF0ICpuZl9jdF9uYXRfZXh0X2FkZChzdHJ1Y3QgbmZfY29ubiAqY3QpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTc1Mi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYxLX1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6NzYyOkVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X25hdF9leHRfYWRkKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtNzYzLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jPTI4PW5mX25hdF9tYXNxdWVyYWRlX2lwdjQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtNTktXFxubmV0L25ldGZpbHRlci9uZl9uYXRfbWFzcXVlcmFkZS5jOjYwOlxcdG5hdCA9IG5mX2N0X25hdF9leHRfYWRkKGN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtNjEtXFx0aWYgKG5hdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYz0yMjQ9bmZfbmF0X21hc3F1ZXJhZGVfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfbmF0X3JhbmdlMiAqcmFuZ2UsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9tYXNxdWVyYWRlLmMtMjQwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYzoyNDE6XFx0bmF0ID0gbmZfY3RfbmF0X2V4dF9hZGQoY3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X21hc3F1ZXJhZGUuYy0yNDItXFx0aWYgKG5hdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X292cy5jPTg4PWludCBuZl9jdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmMtOTctXFx0LyogQWRkIE5BVCBleHRlbnNpb24gaWYgbm90IGNvbmZpcm1lZCB5ZXQuICovXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmM6OTg6XFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpIFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9uYXRfZXh0X2FkZChjdCkpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfb3ZzLmMtOTktXFx0XFx0cmV0dXJuIE5GX0RST1A7ICAgLyogQ2FuJ3QgTkFULiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTozNS4xNDA5ODk1NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNjcyMDU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRW5zdXJpbmcgTkFUIEV4dGVuc2lvbiBBZGRpdGlvbiBpcyBQb3NzaWJsZSoqXG5cblJpZ2h0LCBzbyBgbmZfY3RfbmF0X2V4dF9hZGRgIGRlZmluaXRlbHkgcmVzaWRlcyBpbiBgbmZfbmF0X2NvcmUuY2AuIEFuZCB0aGF0IGNvZGUgaXMgb25seSBidWlsdCBpZiB3ZSd2ZSBlbmFibGVkIGBORl9OQVRgLiBUaGF0J3MgdGhlIGtleS4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlIGNhbiByZWFjaCB0aGF0IE5BVCBleHRlbnNpb24gYWRkaXRpb24gZnVuY3Rpb24sIEkgbmVlZCB0byBhZGQgYE5GX05BVGAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHZlcmlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5LCBJIHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB3aGVyZSBgTkZfTkFUYCBpcyBkZWZpbmVkLiBJJ2xsIHBlZWsgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIGl0J3Mgd2hlcmUgSSBleHBlY3QuIE1ha2luZyBzdXJlIEkgaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgYWx3YXlzIG1ha2VzIHRoZSBkZXZlbG9wbWVudCBhIHNtb290aGVyIGpvdXJuZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjAzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDQ6Mjk6MzguNzc3NzExODQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5NjkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjY6Y29uZmlnIE5GX05BVF9JUkNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQxOmNvbmZpZyBORl9OQVRfUkVESVJFQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0NS1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ3OmNvbmZpZyBORl9OQVRfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA0OjI5OjM4LjgyMjYxMTgyNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDA4MTQwMjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXh0ZW5zaW9uIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCBhIGNyaXRpY2FsIGJ1ZyBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBleHRlbnNpb24gbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGNvcnJ1cHRpb24gYXJpc2VzIGJlY2F1c2UgYGtyZWFsbG9jYCBtaWdodCByZWxvY2F0ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCwgYW4gYGhsaXN0X2hlYWRgLCB3aXRob3V0IGNvcnJlY3RseSB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGNhdXNpbmcgaXNzdWVzLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhlIGBORl9OQVRgIGlzIHRyaXN0YXRlIGFuZCBJJ20gYWRkaW5nIGBORl9OQVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBhZGRyZXNzIHRoaXMgZml4LlxuXG5MZXQgbWUgYnJlYWsgZG93biB3aGF0IEknbSBkZWFsaW5nIHdpdGguXG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCBpcyB3aGF0IEknbSBjb25jZXJuZWQgd2l0aC5cbiogICBUaGUgcHJpbWFyeSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZSBmb2xsb3dpbmcgc3ltYm9sczpcbiAgICAqICAgYG5mX2N0X2V4dF9hZGRgXG4gICAgKiAgIGBuZl9jdF9oZWxwZXJfZXh0X2FkZGBcbiAgICAqICAgYG5mX2N0X25hdF9leHRfYWRkYFxuICAgICogICBgbmZfY3RfZWNhY2hlX2V4dF9hZGRgXG4qICAgVGhlIHN5c3RlbSBjb25maWdzIEknbGwgbmVlZCBlbmFibGVkIGFyZTpcbiAgICAqICAgYE5GX0NPTk5UUkFDS2BcbiAgICAqICAgYE5GX05BVGBcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBuZXRmaWx0ZXIgY29yZSBjb2RlIGFuZCBpcyB0aGVyZWZvcmUgcmVhY2hhYmxlLCBhbmQgaXQncyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGhvcm91Z2hseSBmdXp6ZWQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBuZl9jdF9leHRfaGVscGVyX3NhdmVgIGFuZCBgbmZfY3RfZXh0X2hlbHBlcl9yZXN0b3JlYCB0byBoYW5kbGUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgY29ycmVjdGx5IGR1cmluZyByZWFsbG9jYXRpb24uXG5cbk5vdywgSSdtIGp1c3QgZG91YmxlIGNoZWNraW5nIHRvIGNvbmZpcm0gdGhhdCBgbmZfY3RfZXh0X2FkZGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBnb3QgdG91Y2hlZC4gWWVwLCBpdCBvbmx5IG1vZGlmaWVkIGBuZl9jdF9leHRfYWRkYCBhbmQgaW50cm9kdWNlcyB0d28gc3RhdGljIGhlbHBlcnMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTg0LCJPdXRwdXRUb2tlbnMiOjE4NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNDoyOTo0NS4yMzA3NTQyNDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDYxNTIzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9oZWxwZXJfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfbmF0X2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X2VjYWNoZV9leHRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXh0ZW5zaW9uIGxvZ2ljIHdoZXJlIGBrcmVhbGxvY2AgY291bGQgbW92ZSB0aGUgYGV4cGVjdGF0aW9uc2AgbGlzdCAoYW4gYGhsaXN0X2hlYWRgKSB3aXRob3V0IHVwZGF0aW5nIHRoZSBwb2ludGVycywgbGVhZGluZyB0byBtZW1vcnkgY29ycnVwdGlvbi4gSXQgaW50cm9kdWNlcyBgbmZfY3RfZXh0X2hlbHBlcl9zYXZlYCBhbmQgYG5mX2N0X2V4dF9oZWxwZXJfcmVzdG9yZWAgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBsaXN0IGR1cmluZyByZWFsbG9jYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldGZpbHRlciBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXh0X2FkZFwiLFxuICAgIFwibmZfY3RfaGVscGVyX2V4dF9hZGRcIixcbiAgICBcIm5mX2N0X25hdF9leHRfYWRkXCIsXG4gICAgXCJuZl9jdF9lY2FjaGVfZXh0X2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4dGVuc2lvbiBsb2dpYyB3aGVyZSBga3JlYWxsb2NgIGNvdWxkIG1vdmUgdGhlIGBleHBlY3RhdGlvbnNgIGxpc3QgKGFuIGBobGlzdF9oZWFkYCkgd2l0aG91dCB1cGRhdGluZyB0aGUgcG9pbnRlcnMsIGxlYWRpbmcgdG8gbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGludHJvZHVjZXMgYG5mX2N0X2V4dF9oZWxwZXJfc2F2ZWAgYW5kIGBuZl9jdF9leHRfaGVscGVyX3Jlc3RvcmVgIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgbGlzdCBkdXJpbmcgcmVhbGxvY2F0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXRmaWx0ZXIgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[1] Phase: Succeeded StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 04:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 04:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2] Phase: Succeeded StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 04:30:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 04:29:57 +0000 UTC FinishedAt: 2026-07-30 04:30:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowqk25t/series-workflowqk25t-convert-artifact-3563000409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 04:30:08 +0000 UTC FinishedAt: 2026-07-30 04:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 04:30:08 +0000 UTC FinishedAt: 2026-07-30 04:53:37 +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:*00dbaee9-c4d9-4cbd-8d5b-af5eccbebe47,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-workflowqk25t/series-workflowqk25t-convert-artifact-3563000409/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": "dc554e9a-aaab-4b29-bc5e-9760cbb3ffa2", "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-workflowqk25t/series-workflowqk25t-build-action-265499383/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 04:30:08 +0000 UTC FinishedAt: 2026-07-30 04:53:27 +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:*00dbaee9-c4d9-4cbd-8d5b-af5eccbebe47,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-workflowqk25t/series-workflowqk25t-convert-artifact-3563000409/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": "dc554e9a-aaab-4b29-bc5e-9760cbb3ffa2", "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-workflowqk25t/series-workflowqk25t-build-action-265499383/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 04:53:37 +0000 UTC FinishedAt: 2026-07-30 04:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 04:53:37 +0000 UTC FinishedAt: 2026-07-30 04:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 04:53:37 +0000 UTC FinishedAt: 2026-07-30 04:53:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 04:53:37 +0000 UTC FinishedAt: 2026-07-30 04:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowqk25t/series-workflowqk25t-convert-artifact-439227948/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 04:53:47 +0000 UTC FinishedAt: 2026-07-30 04:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 04:53:47 +0000 UTC FinishedAt: 2026-07-30 04:55:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc554e9a-aaab-4b29-bc5e-9760cbb3ffa2,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-workflowqk25t/series-workflowqk25t-build-action-265499383/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-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 04:55:38 +0000 UTC FinishedAt: 2026-07-30 04:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 04:55:38 +0000 UTC FinishedAt: 2026-07-30 04:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 04:55:38 +0000 UTC FinishedAt: 2026-07-30 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 04:55:39 +0000 UTC FinishedAt: 2026-07-30 05:17:43 +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:*00dbaee9-c4d9-4cbd-8d5b-af5eccbebe47,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-workflowqk25t/series-workflowqk25t-convert-artifact-439227948/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": "cca345d5-7f58-4523-965b-29e1336f2383", "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-workflowqk25t/series-workflowqk25t-build-action-2270141640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 04:55:39 +0000 UTC FinishedAt: 2026-07-30 05:17:08 +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:*00dbaee9-c4d9-4cbd-8d5b-af5eccbebe47,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-workflowqk25t/series-workflowqk25t-convert-artifact-439227948/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": "cca345d5-7f58-4523-965b-29e1336f2383", "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-workflowqk25t/series-workflowqk25t-build-action-2270141640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 05:17:43 +0000 UTC FinishedAt: 2026-07-30 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 05:17:43 +0000 UTC FinishedAt: 2026-07-30 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 05:17:43 +0000 UTC FinishedAt: 2026-07-30 05:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 05:17:43 +0000 UTC FinishedAt: 2026-07-30 05:19:40 +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:*cca345d5-7f58-4523-965b-29e1336f2383,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-workflowqk25t/series-workflowqk25t-build-action-2270141640/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-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*dc554e9a-aaab-4b29-bc5e-9760cbb3ffa2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cca345d5-7f58-4523-965b-29e1336f2383,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-workflowqk25t/series-workflowqk25t-build-action-265499383/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-workflowqk25t/series-workflowqk25t-build-action-2270141640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 05:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 05:19:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk25t/series-workflowqk25t-convert-artifact-1191332629/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 05:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 05:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 05:19:50 +0000 UTC FinishedAt: 2026-07-30 05:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 05:20:00 +0000 UTC FinishedAt: 2026-07-30 08:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk25t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_ext_add","nf_ct_helper_ext_add","nf_ct_nat_ext_add","nf_ct_ecache_ext_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_NAT"],"series_id":"828787f8-bc51-47de-b74b-840feb36de07","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 05:20:00 +0000 UTC FinishedAt: 2026-07-30 08:23:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc554e9a-aaab-4b29-bc5e-9760cbb3ffa2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cca345d5-7f58-4523-965b-29e1336f2383,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-workflowqk25t/series-workflowqk25t-build-action-265499383/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-workflowqk25t/series-workflowqk25t-build-action-2270141640/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-workflowqk25t/series-workflowqk25t-convert-artifact-1191332629/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,}