Name: series-workflow8nzrb Phase: Succeeded StartedAt: 2026-07-21 19:06:08 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[0] Phase: Succeeded StartedAt: 2026-07-21 19:06:08 +0000 UTC FinishedAt: 2026-07-21 19:27:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 19:06:08 +0000 UTC FinishedAt: 2026-07-21 19:27:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PROC_PAGE_MONITOR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PROC_PAGE_MONITOR" ], "series_id": "50ce4c5b-cd37-4576-b641-9f0fe01702a4" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "smap_gather_stats" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAwNjBmMzBhN2IwMDNhMzcxOTcyMTk0YzgzMzFlZGI1MTFkNzI2MGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDRcbi0tLSBhL2ZzL3Byb2MvdGFza19tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy90YXNrX21tdS5jXG5AQCAtMTM2OSw5ICYjNDM7MTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtXHUwMDNldm1fZW5kO1xuJiM0MztcbiYjNDM7XHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4mIzQzO1x0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAodm1hID09IGdldF9nYXRlX3ZtYShwcml2LVx1MDAzZWxvY2tfY3R4Lm1tKSlcbkBAIC0xNDAxLDEwICYjNDM7MTQwNCw3IEBAIHN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aWYgKCFzdGFydClcbi1cdFx0d2Fsa19wYWdlX3ZtYSh2bWEsIG9wcywgbXNzKTtcbi1cdGVsc2Vcbi1cdFx0d2Fsa19wYWdlX3JhbmdlKHZtYS1cdTAwM2V2bV9tbSwgc3RhcnQsIHZtYS1cdTAwM2V2bV9lbmQsIG9wcywgbXNzKTtcbiYjNDM7XHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuIFxuIFx0cmVhY3F1aXJlX3JjdShwcml2KTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDA2MGYzMGE3YjAwM2EzNzE5NzIxOTRjODMzMWVkYjUxMWQ3MjYwYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5jIGIvZnMvcHJvYy90YXNrX21tdS5jCmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDQKLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Byb2MvdGFza19tbXUuYwpAQCAtMTM2OSw5ICYjNDM7MTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsCiAJCQkgICAgICBzdHJ1Y3QgbWVtX3NpemVfc3RhdHMgKm1zcywgdW5zaWduZWQgbG9uZyBzdGFydCkKIHsKIAljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyA9IGdldF9zbWFwc193YWxrX29wcyhwcml2KTsKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsKJiM0MzsJc3RhcnQgPSBzdGFydCA/OiB2bWEtJmd0O3ZtX3N0YXJ0OwogCiAJLyogSW52YWxpZCBzdGFydCAqLwotCWlmIChzdGFydCAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJaWYgKHN0YXJ0ICZndDs9IGVuZCkKIAkJcmV0dXJuOwogCiAJaWYgKHZtYSA9PSBnZXRfZ2F0ZV92bWEocHJpdi0mZ3Q7bG9ja19jdHgubW0pKQpAQCAtMTQwMSwxMCAmIzQzOzE0MDQsNyBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsCiAJCX0KIAl9CiAKLQlpZiAoIXN0YXJ0KQotCQl3YWxrX3BhZ2Vfdm1hKHZtYSwgb3BzLCBtc3MpOwotCWVsc2UKLQkJd2Fsa19wYWdlX3JhbmdlKHZtYS0mZ3Q7dm1fbW0sIHN0YXJ0LCB2bWEtJmd0O3ZtX2VuZCwgb3BzLCBtc3MpOwomIzQzOwl3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpOwogCiAJcmVhY3F1aXJlX3JjdShwcml2KTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFNNQVAgU3RhdCBHYXRoZXJpbmcgUGF0Y2gqKgoKUmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBmcy9wcm9jL3Rhc2tfbW11LmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYSBmdW5jdGlvbiBjYWxsZWQgYHNtYXBfZ2F0aGVyX3N0YXRzYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcGVyZm9ybWFuY2UgYW5kIGxvZ2ljIGNoYW5nZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpbnZvbHZlcyByZXBsYWNpbmcgdGhlIG9sZCBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGNhbGxzIHdpdGggYSBuZXcgdW5pZmllZCBmdW5jdGlvbjogYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZGlnIGludG8gYHNtYXBfZ2F0aGVyX3N0YXRzYCB3aXRoaW4gYGZzL3Byb2MvdGFza19tbXUuY2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLiBUaGUgY2hhbmdlIGxpa2VseSBhaW1zIGZvciBvcHRpbWl6YXRpb24gb3Igc2ltcGxpZmljYXRpb24gb2YgbWVtb3J5IG1hbmFnZW1lbnQgc3RhdHMgZ2F0aGVyaW5nLCBtYXliZSBib3RoLCBnaXZlbiB0aGUgY29uc29saWRhdGlvbiBvZiB0aGUgZnVuY3Rpb25zLiBVbmRlcnN0YW5kaW5nICp3aHkqIHRoZXkgY2hvc2UgdG8gY29tYmluZSB0aGVzZSB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTEzNTQ9Z2V0X3NtYXBzX3NobWVtX3dhbGtfb3BzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM2Ni0gKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMzY3OnN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbmZzL3Byb2MvdGFza19tbXUuYy0xMzY4LVx0XHRcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xNDU2PXN0YXRpYyBpbnQgc2hvd19zbWFwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQ2MS1cbmZzL3Byb2MvdGFza19tbXUuYzoxNDYyOlx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcdTAwMjZtc3MsIDApO1xuZnMvcHJvYy90YXNrX21tdS5jLTE0NjMtXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTE0ODQ9c3RhdGljIGludCBzaG93X3NtYXBzX3JvbGx1cChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1MTQtXHRkbyB7XG5mcy9wcm9jL3Rhc2tfbW11LmM6MTUxNTpcdFx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcdTAwMjZtc3MsIDApO1xuZnMvcHJvYy90YXNrX21tdS5jLTE1MTYtXHRcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1NzMtXHRcdFx0aWYgKHZtYS1cdTAwM2V2bV9zdGFydCBcdTAwM2U9IGxhc3Rfdm1hX2VuZCkge1xuZnMvcHJvYy90YXNrX21tdS5jOjE1NzQ6XHRcdFx0XHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFx1MDAyNm1zcywgMCk7XG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU3NS1cdFx0XHRcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1ODAtXHRcdFx0aWYgKHZtYS1cdTAwM2V2bV9lbmQgXHUwMDNlIGxhc3Rfdm1hX2VuZCkge1xuZnMvcHJvYy90YXNrX21tdS5jOjE1ODE6XHRcdFx0XHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFx1MDAyNm1zcywgbGFzdF92bWFfZW5kKTtcbmZzL3Byb2MvdGFza19tbXUuYy0xNTgyLVx0XHRcdFx0bGFzdF92bWFfZW5kID0gdm1hLVx1MDAzZXZtX2VuZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgYHNtYXBfZ2F0aGVyX3N0YXRzYCBNb2RpZmljYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgc21hcF9nYXRoZXJfc3RhdHNgLCB0aGUgZnVuY3Rpb24gdGhhdCBwdWxscyB0aGUgc3RhdHMgZnJvbSBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLiBHb29kLCBpdCYjMzk7cyBmdW5jdGlvbmFsLCBJIGNhbiB0cmFjZSBpdHMgcmVhY2hhYmlsaXR5LCBzbyB0aGF0JiMzOTtzIGEgcGx1cy4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBEb2VzIHRoaXMgcmVseSBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBjb25maWc/IEkgbmVlZCB0byBrbm93IHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgY29tcGlsZWQuIGBmcy9wcm9jL3Rhc2tfbW11LmNg4oCmQWgsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlbGV2YW50IGxvZ2ljIGxpdmVzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IHRpZWQgdG8gYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmA/IE9yLCBtYXliZSBpdCYjMzk7cyBqdXN0IHJlbGF0ZWQgdG8gYENPTkZJR19QUk9DX0ZTYD8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIGFuZCBpZiBhbnkgc3BlY2lmaWMgbW9kdWxlIG9yIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgaXQgdG8gd29yay4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFza19tbXUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgJiM0Mzs9IHByb2Mub1xuZnMvcHJvYy9NYWtlZmlsZS03LVxuZnMvcHJvYy9NYWtlZmlsZTo4OkNGTEFHU190YXNrX21tdS5vXHQmIzQzOz0gLVduby1vdmVycmlkZS1pbml0XG5mcy9wcm9jL01ha2VmaWxlLTktcHJvYy15XHRcdFx0Oj0gbm9tbXUubyB0YXNrX25vbW11Lm9cbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXHQ6PSB0YXNrX21tdS5vXG5mcy9wcm9jL01ha2VmaWxlLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHNtYXBzYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBgc21hcHNgIGdldHMgYnVpbHQuIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRoYXQgaXQmIzM5O3MgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGl0IHRvIGV2ZW4gYmUgKmNvbnNpZGVyZWQqIGZvciBjb21waWxhdGlvbiBhcmUgYENPTkZJR19NTVVgIGFuZCBgQ09ORklHX1BST0NfRlNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IG11Y2ggY29yZSBjb21wb25lbnRzIG9mIGEgbW9kZXJuIExpbnV4IHN5c3RlbS4gVGhleSBhcmUsIGluIGEgd29yZCwgc3RhbmRhcmQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgdGhlIGBQUk9DX1BBR0VfTU9OSVRPUmAgb3B0aW9uIGlzIGEgbmVjZXNzYXJ5IGRlcGVuZGVuY3kgZm9yIHRoZSBgc21hcHNgIGZlYXR1cmUgdG8gd29yayBjb3JyZWN0bHkuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgdG8gY29uZmlybSB0aGF0LCBhcyBteSBnb2FsIGlzIHRvIGFzc2VzcyBkZXBlbmRlbmNpZXMuIEkgYW0gcHJldHR5IHN1cmUgaXQmIzM5O3Mgbm90IGFuZCB0aGF0IGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgYWN0dWFsbHkgc2VwYXJhdGUgYnV0IHJlbGF0ZWQuIEl0IGlzIHRoZSBuZXh0IHBsYWNlIEkgd2lsbCBsb29rIGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtYXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMtMjYtICpcbmZzL3Byb2MvYmFzZS5jOjI3OiAqICBBIG5ldyBwcm9jZXNzIHNwZWNpZmljIGVudHJ5IChzbWFwcykgaW5jbHVkZWQgaW4gL3Byb2MuIEl0IHNob3dzIHRoZVxuZnMvcHJvYy9iYXNlLmMtMjgtICogIHNpemUgb2YgcnNzIGZvciBlYWNoIG1lbW9yeSBhcmVhLiBUaGUgbWFwcyBlbnRyeSBsYWNrcyBpbmZvcm1hdGlvblxuLS1cbmZzL3Byb2MvYmFzZS5jLTQ3LSAqICBQYXVsIE11bmR0IFx1MDAzY3BhdWwubXVuZHRAbm9raWEuY29tXHUwMDNlOlxuZnMvcHJvYy9iYXNlLmM6NDg6ICogIE92ZXJhbGwgcmV2aXNpb24gYWJvdXQgc21hcHMuXG5mcy9wcm9jL2Jhc2UuYy00OS0gKi9cbi0tXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTMzMjItXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcdFJFRyhcJiMzNDtzbWFwc1wmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjQ6XHRSRUcoXCYjMzQ7c21hcHNfcm9sbHVwXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI1LVx0UkVHKFwmIzM0O3BhZ2VtYXBcJiMzNDssICAgIFNfSVJVU1IsIHByb2NfcGFnZW1hcF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cdFJFRyhcJiMzNDtjbGVhcl9yZWZzXCYjMzQ7LCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc4Olx0UkVHKFwmIzM0O3NtYXBzXCYjMzQ7LCAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc5Olx0UkVHKFwmIzM0O3NtYXBzX3JvbGx1cFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY4MC1cdFJFRyhcJiMzNDtwYWdlbWFwXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBrZXJuZWwgaW50ZXJuYWxzIGFuZCBkZWJ1Z2dpbmc6CgoqKktlcm5lbCBTeW1ib2wgRXhwbG9yYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZSBgcHJvY19waWRfc21hcHNfb3BlcmF0aW9uc2Agc3RydWN0dXJlIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0IGFyZSB3cmFwcGVkIGluc2lkZSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBUaGlzIGNvdWxkIGJlIGR1ZSB0byBhIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGJ1aWxkIGZsYWdzLiBJdCYjMzk7cyBhIGNvbW1vbiBvdmVyc2lnaHQsIGFuZCBhIHF1aWNrIGNoZWNrIGhlcmUgY2FuIHNhdmUgYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIEkgc3RhcnQgcG9raW5nIGFyb3VuZCBhbmQgbm90IGZpbmRpbmcgYW55dGhpbmcuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBsZXQmIzM5O3MgZW5zdXJlIEkmIzM5O20gZXZlbiAqc3VwcG9zZWQqIHRvIGJlIHNlZWluZyB0aGlzIHRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBpbml0aWFsIGRpYWdub3N0aWMgaXMgY3JpdGljYWwgdG8gYXZvaWRpbmcgYSB3aWxkIGdvb3NlIGNoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0Z2lkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzIyLVx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjM6XHRSRUcoXCYjMzQ7c21hcHNcJiMzNDssICAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVx0UkVHKFwmIzM0O3NtYXBzX3JvbGx1cFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jPTM2NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGlkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zNjc3LVx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjM2Nzg6XHRSRUcoXCYjMzQ7c21hcHNcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jLTM2NzktXHRSRUcoXCYjMzQ7c21hcHNfcm9sbHVwXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9pbnRlcm5hbC5oPTQwOD1leHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3BpZF9udW1hX21hcHNfb3BlcmF0aW9ucztcbmZzL3Byb2MvaW50ZXJuYWwuaDo0MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucztcbmZzL3Byb2MvaW50ZXJuYWwuaC00MTAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnM7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTE2NDg9c3RhdGljIGludCBzbWFwc19yb2xsdXBfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTY1OS1cbmZzL3Byb2MvdGFza19tbXUuYzoxNjYwOmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyA9IHtcbmZzL3Byb2MvdGFza19tbXUuYy0xNjYxLVx0Lm9wZW5cdFx0PSBwaWRfc21hcHNfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHRnaWRfYmFzZV9zdHVmZmAgYW5kIGBzbWFwc2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgdGdpZF9iYXNlX3N0dWZmYCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBmdW5jdGlvbnMuIE15IGFpbSBpcyB0byBkZXRlcm1pbmUgaWYgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBsaWtlbHkgYCNpZmRlZmAgc3RhdGVtZW50cywgc3Vycm91bmQgdGhlIGluY2x1c2lvbiBvciB1c2Ugb2YgYHNtYXBzYCB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUuIFRoZSBvYmplY3RpdmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiBgc21hcHNgIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBiYXNlZCBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywga2VybmVsIHZlcnNpb25zLCBvciBidWlsZCBvcHRpb25zLiBUaGlzIGNvdWxkIGV4cGxhaW4gYmVoYXZpb3JhbCBkaXNjcmVwYW5jaWVzIG9yIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyB0aGF0IGRlcGVuZCBvbiB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBkZXRhaWxlZCBtZW1vcnkgbWFwcGluZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgcHJhY3RpY2UuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIG1vdmUgZm9yd2FyZCwgc28gSSYjMzk7bGwgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzMTA6XHRcdFJFRyhcJiMzNDttYXBzXCYjMzQ7LCAgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9tYXBzX29wZXJhdGlvbnMpLFxuMzMxMTpcdCNpZmRlZiBDT05GSUdfTlVNQVxuMzMxMjpcdFx0UkVHKFwmIzM0O251bWFfbWFwc1wmIzM0OywgIFNfSVJVR08sIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zKSxcbjMzMTM6XHQjZW5kaWZcbjMzMTQ6XHRcdFJFRyhcJiMzNDttZW1cJiMzNDssICAgICAgICBTX0lSVVNSfFNfSVdVU1IsIHByb2NfbWVtX29wZXJhdGlvbnMpLFxuMzMxNTpcdFx0TE5LKFwmIzM0O2N3ZFwmIzM0OywgICAgICAgIHByb2NfY3dkX2xpbmspLFxuMzMxNjpcdFx0TE5LKFwmIzM0O3Jvb3RcJiMzNDssICAgICAgIHByb2Nfcm9vdF9saW5rKSxcbjMzMTc6XHRcdExOSyhcJiMzNDtleGVcJiMzNDssICAgICAgICBwcm9jX2V4ZV9saW5rKSxcbjMzMTg6XHRcdFJFRyhcJiMzNDttb3VudHNcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX21vdW50c19vcGVyYXRpb25zKSxcbjMzMTk6XHRcdFJFRyhcJiMzNDttb3VudGluZm9cJiMzNDssICBTX0lSVUdPLCBwcm9jX21vdW50aW5mb19vcGVyYXRpb25zKSxcbjMzMjA6XHRcdFJFRyhcJiMzNDttb3VudHN0YXRzXCYjMzQ7LCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXG4zMzIxOlx0I2lmZGVmIENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUlxuMzMyMjpcdFx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbjMzMjM6XHRcdFJFRyhcJiMzNDtzbWFwc1wmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbjMzMjQ6XHRcdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbjMzMjU6XHRcdFJFRyhcJiMzNDtwYWdlbWFwXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXG4zMzI2Olx0I2VuZGlmXG4zMzI3Olx0I2lmZGVmIENPTkZJR19TRUNVUklUWVxuMzMyODpcdFx0RElSKFwmIzM0O2F0dHJcJiMzNDssICAgICAgIFNfSVJVR098U19JWFVHTywgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX2F0dHJfZGlyX29wZXJhdGlvbnMpLFxuMzMyOTpcdCNlbmRpZlxuMzMzMDpcdCNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbjMzMzE6XHRcdE9ORShcJiMzNDt3Y2hhblwmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF93Y2hhbiksXG4zMzMyOlx0I2VuZGlmXG4zMzMzOlx0I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXG4zMzM0Olx0XHRPTkUoXCYjMzQ7c3RhY2tcJiMzNDssICAgICAgU19JUlVTUiwgcHJvY19waWRfc3RhY2spLFxuMzMzNTpcdCNlbmRpZlxuMzMzNjpcdCNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xuMzMzNzpcdFx0T05FKFwmIzM0O3NjaGVkc3RhdFwmIzM0OywgIFNfSVJVR08sIHByb2NfcGlkX3NjaGVkc3RhdCksXG4zMzM4Olx0I2VuZGlmXG4zMzM5Olx0I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUFQIFBhZ2UgTW9uaXRvcmluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCBpcyBkZWZpbml0ZWx5IG5lY2Vzc2FyeSBoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBgUFJPQ19QQUdFX01PTklUT1JgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gUmVnYXJkbGVzcywgSSBzaG91bGQganVzdCBnbyBhaGVhZCBhbmQgZW5zdXJlIGl0JiMzOTtzIGluY2x1ZGVkIHdpdGhpbiBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgc2FmZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBzbWFwX2dhdGhlcl9zdGF0c2AgZnVuY3Rpb24uIFdhaXQgYSBtb21lbnQsIHRoYXQmIzM5O3MgYSAqc3RhdGljKiBmdW5jdGlvbi4uLiBwZXJmZWN0ISBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBJIGNhbiBob25lIGluIG9uIGl0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0ZXJuYWwgcmVmZXJlbmNlcy4gTm93LCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhlIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBmdW5jdGlvbiBpcyBhIG5ldyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIHRoYXQgYWxyZWFkeSBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBoYW5kbGUgb24gaG93IHRoaXMgYWxsIGludGVncmF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbGtfcGFnZV9yYW5nZV92bWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jPTIxMj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIGZpbmRfemVyb3BhZ2Vfb3BzID0ge1xuLS1cbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yMjctICogbW0gY29udHJhY3RzIHdpdGggczM5MCwgdGhhdCBldmVuIGlmIG1tIHdlcmUgdG8gcmVtb3ZlIGEgcGFnZSB0YWJsZSxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYzoyMjg6ICogYW5kIHJhY2luZyB3aXRoIHdhbGtfcGFnZV9yYW5nZV92bWEoKSBjYWxsaW5nIHB0ZV9vZmZzZXRfbWFwX2xvY2soKVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTIyOS0gKiB3b3VsZCBmYWlsLCBpdCB3aWxsIG5ldmVyIGluc2VydCBhIHBhZ2UgdGFibGUgY29udGFpbmluZyBlbXB0eSB6ZXJvXG4tLVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jPTIzMz1zdGF0aWMgaW50IF9fZ21hcF9oZWxwZXJfdW5zaGFyZV96ZXJvcGFnZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4tLVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTI1MS1yZXRyeTpcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYzoyNTI6XHRcdHJjID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGFkZHIsIHZtYS1cdTAwM2V2bV9lbmQsXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmMtMjUzLVx0XHRcdFx0XHQgXHUwMDI2ZmluZF96ZXJvcGFnZV9vcHMsIFx1MDAyNmFkZHIpO1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xMzY3PXN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQwNi1cbmZzL3Byb2MvdGFza19tbXUuYzoxNDA3Olx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTtcbmZzL3Byb2MvdGFza19tbXUuYy0xNDA4LVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzc9aW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTM5LVx0XHRwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKTtcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaDoxNDA6aW50IHdhbGtfcGFnZV9yYW5nZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTQxLVx0XHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTIzOD1zdGF0aWMgdm9pZCBkYW1vbl92YV93YWxrX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy0yNTMtXHRcdG9wcy1cdTAwM2V3YWxrX2xvY2sgPSBQR1dBTEtfVk1BX1JETE9DS19WRVJJRlk7XG5tbS9kYW1vbi92YWRkci5jOjI1NDpcdFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgcHJpdmF0ZSk7XG5tbS9kYW1vbi92YWRkci5jLTI1NS1cdH1cbi0tXG5tbS9pbnRlcm5hbC5oPTE4Mzc9aW50IHdhbGtfcGFnZV9yYW5nZV9tbV91bnNhZmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vaW50ZXJuYWwuaC0xODM5LVx0XHR2b2lkICpwcml2YXRlKTtcbm1tL2ludGVybmFsLmg6MTg0MDppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYV91bnNhZmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5tbS9pbnRlcm5hbC5oLTE4NDEtXHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9rc20uYz02OTI9c3RhdGljIGludCBicmVha19rc20oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9rc20uYy03MDItXHRcdGNvbmRfcmVzY2hlZCgpO1xubW0va3NtLmM6NzAzOlx0XHRrc21fcGFnZSA9IHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBhZGRyLCBlbmQsIG9wcywgXHUwMDI2YWRkcik7XG5tbS9rc20uYy03MDQtXHRcdGlmIChrc21fcGFnZSBcdTAwM2M9IDApXG4tLVxubW0va3NtLmM9MjU3Nz1zdGF0aWMgc3RydWN0IGtzbV9ybWFwX2l0ZW0gKnNjYW5fZ2V0X25leHRfcm1hcF9pdGVtKHN0cnVjdCBwYWdlICoqcGFnZSlcbi0tXG5tbS9rc20uYy0yNjcyLVxubW0va3NtLmM6MjY3MzpcdFx0XHRmb3VuZCA9IHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBrc21fc2Nhbi5hZGRyZXNzLFxubW0va3NtLmMtMjY3NC1cdFx0XHRcdFx0XHQgICAgdm1hLVx1MDAzZXZtX2VuZCxcbi0tXG5tbS9tYWR2aXNlLmM9MjgxPXN0YXRpYyBsb25nIG1hZHZpc2Vfd2lsbG5lZWQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXG4tLVxubW0vbWFkdmlzZS5jLTI5MS1cdGlmICghZmlsZSkge1xubW0vbWFkdmlzZS5jOjI5MjpcdFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIFx1MDAyNnN3YXBpbl93YWxrX29wcywgdm1hKTtcbm1tL21hZHZpc2UuYy0yOTMtXHRcdGxydV9hZGRfZHJhaW4oKTsgLyogUHVzaCBhbnkgbmV3IHBhZ2VzIG9udG8gdGhlIExSVSBub3cgKi9cbi0tXG5tbS9tYWR2aXNlLmM9NTczPXN0YXRpYyB2b2lkIG1hZHZpc2VfY29sZF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXG4tLVxubW0vbWFkdmlzZS5jLTU4NC1cdHRsYl9zdGFydF92bWEodGxiLCB2bWEpO1xubW0vbWFkdmlzZS5jOjU4NTpcdHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCByYW5nZS1cdTAwM2VzdGFydCwgcmFuZ2UtXHUwMDNlZW5kLCBcdTAwMjZjb2xkX3dhbGtfb3BzLFxubW0vbWFkdmlzZS5jLTU4Ni1cdFx0XHRcdTAwMjZ3YWxrX3ByaXZhdGUpO1xuLS1cbm1tL21hZHZpc2UuYz02MTE9c3RhdGljIHZvaWQgbWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcbi0tXG5tbS9tYWR2aXNlLmMtNjIwLVx0dGxiX3N0YXJ0X3ZtYSh0bGIsIHZtYSk7XG5tbS9tYWR2aXNlLmM6NjIxOlx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsIFx1MDAyNmNvbGRfd2Fsa19vcHMsXG5tbS9tYWR2aXNlLmMtNjIyLVx0XHRcdCAgICBcdTAwMjZ3YWxrX3ByaXZhdGUpO1xuLS1cbm1tL21hZHZpc2UuYz03OTk9c3RhdGljIGludCBtYWR2aXNlX2ZyZWVfc2luZ2xlX3ZtYShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtODI0LVx0d2Fsa19vcHMud2Fsa19sb2NrID0gZ2V0X3dhbGtfbG9jayhtYWR2X2JlaGF2aW9yLVx1MDAzZWxvY2tfbW9kZSk7XG5tbS9tYWR2aXNlLmM6ODI1Olx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQsXG5tbS9tYWR2aXNlLmMtODI2LVx0XHRcdFx1MDAyNndhbGtfb3BzLCB0bGIpO1xuLS1cbm1tL21hZHZpc2UuYz0xMTE1PXN0YXRpYyBsb25nIG1hZHZpc2VfZ3VhcmRfaW5zdGFsbChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMTE3My1cdFx0aWYgKG1hZHZfYmVoYXZpb3ItXHUwMDNlbG9ja19tb2RlID09IE1BRFZJU0VfVk1BX1JFQURfTE9DSylcbm1tL21hZHZpc2UuYzoxMTc0Olx0XHRcdGVyciA9IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKG1hZHZfYmVoYXZpb3ItXHUwMDNldm1hLFxubW0vbWFkdmlzZS5jLTExNzUtXHRcdFx0XHRcdHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsIFx1MDAyNndhbGtfb3BzLFxuLS1cbm1tL21hZHZpc2UuYz0xMjQzPXN0YXRpYyBsb25nIG1hZHZpc2VfZ3VhcmRfcmVtb3ZlKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy0xMjYwLVxubW0vbWFkdmlzZS5jOjEyNjE6XHRyZXR1cm4gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG5tbS9tYWR2aXNlLmMtMTI2Mi1cdFx0XHRcdCAgIFx1MDAyNndhbGxrX29wcywgTlVMTCk7XG4tLVxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTcxNS1cbm1tL3BhZ2V3YWxrLmM6NzE2OmludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL3BhZ2V3YWxrLmMtNzE3LVx0XHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHZvaWQgKnByaXZhdGUpXG4tLVxubW0vcGFnZXdhbGsuYy03MzUtXG5tbS9wYWdld2Fsay5jOjczNjppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL3BhZ2V3YWxrLmMtNzM3LVx0XHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9wYWdld2Fsay5jLTc0Mi1cbm1tL3BhZ2V3YWxrLmM6NzQzOlx0cmV0dXJuIHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBwcml2YXRlKTtcbm1tL3BhZ2V3YWxrLmMtNzQ0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI0OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lLCByZWFsbHkuIFRoZXkmIzM5O3JlIHN3YXBwaW5nIG91dCBhIGNvdXBsZSBvZiBleGlzdGluZyBwYWdlLXdhbGtpbmcgZnVuY3Rpb25zLCBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgLCBhbmQgcmVwbGFjaW5nIHRoZW0gd2l0aCBgd2Fsa19wYWdlX3JhbmdlX3ZtYWAgd2l0aGluIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIGNvbnRleHQuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2Ugd2hpbGUgaXQgbG9va3Mgc2ltcGxlIG9uIHRoZSBzdXJmYWNlLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQW55IG1vZGlmaWNhdGlvbiB0byBmdW5kYW1lbnRhbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyBsaWtlIHRoaXMgZGVzZXJ2ZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVwbGFjZW1lbnQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBiZWhhdmVzIGRpZmZlcmVudGx5IGVub3VnaCBmcm9tIHRoZSBvcmlnaW5hbCBmdW5jdGlvbnMgdG8gYWZmZWN0IHRoZSBzdGF0aXN0aWNzIGdhdGhlcmluZywgb3Igd2hldGhlciB0aGlzIGlzIGEgY29ycmVjdGlvbiBvZiBhIHN1YnRsZSBidWcgd2hlcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdhcyBiZWluZyB1c2VkIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQmIzM5O3MgdGhlICphY3R1YWwqIGRpZmZlcmVuY2UgYmV0d2VlbiBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYD8gTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGFuZCBpbnZlc3RpZ2F0ZSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3YWxrX3BhZ2Vfdm1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZXdhbGsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdld2Fsay5jPTU0Mz1zdGF0aWMgYm9vbCBjaGVja19vcHNfc2FmZShjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcylcbi0tXG5tbS9wYWdld2Fsay5jLTU5My0gKiBMb2NraW5nOlxubW0vcGFnZXdhbGsuYzo1OTQ6ICogICBDYWxsZXJzIG9mIHdhbGtfcGFnZV9yYW5nZSgpIGFuZCB3YWxrX3BhZ2Vfdm1hKCkgc2hvdWxkIGhvbGQgQG1tLVx1MDAzZW1tYXBfbG9jayxcbm1tL3BhZ2V3YWxrLmMtNTk1LSAqICAgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbiB0cmF2ZXJzZSB2bWEgbGlzdCBhbmQvb3IgYWNjZXNzIHRvIHZtYSYjMzk7cyBkYXRhLlxuLS1cbm1tL3BhZ2V3YWxrLmM9NzM2PWludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL3BhZ2V3YWxrLmMtNzQ1LVxubW0vcGFnZXdhbGsuYzo3NDY6aW50IHdhbGtfcGFnZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxubW0vcGFnZXdhbGsuYy03NDctXHRcdHZvaWQgKnByaXZhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzbWFwX2dhdGhlcl9zdGF0cyBTaW1wbGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2ltcGxpZnlpbmcgYHNtYXBfZ2F0aGVyX3N0YXRzYC4gVGhlIGtleSBpcyB0aGUgc2hpZnQgZnJvbSBicmFuY2hpbmcgYmV0d2VlbiBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIHRvIGp1c3QgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBIYW5nIG9uLCB3YXNuJiMzOTt0IGB3YWxrX3BhZ2Vfdm1hYCBmb3IgdGhlICplbnRpcmUqIFZNQSwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGZvciBhIHNwZWNpZmljIHJhbmdlPyBSaWdodCwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb2RlIGxpa2Ugc286CgpgYGBjCi0JaWYgKCFzdGFydCkKLQkJd2Fsa19wYWdlX3ZtYSh2bWEsIG9wcywgbXNzKTsKLQllbHNlCi0JCXdhbGtfcGFnZV9yYW5nZSh2bWEtJmd0O3ZtX21tLCBzdGFydCwgdm1hLSZndDt2bV9lbmQsIG9wcywgbXNzKTsKJiM0MzsJd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTsKYGBgCgphbmQgYWxzbyBhZGRpbmcgdGhlIGZvbGxvd2luZzoKCmBgYGMKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsKJiM0MzsJc3RhcnQgPSBzdGFydCA/OiB2bWEtJmd0O3ZtX3N0YXJ0OwogCiAJLyogSW52YWxpZCBzdGFydCAqLwotCWlmIChzdGFydCAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJaWYgKHN0YXJ0ICZndDs9IGVuZCkKIAkJcmV0dXJuOwpgYGAKClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBtZWFucyBmdXp6aW5nIGlzIGEgZ29vZCBpZGVhLiBgc21hcF9nYXRoZXJfc3RhdHNgIGlzIHRoZSB0YXJnZXQsIG9idmlvdXNseS4gVGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaXMgYFBST0NfUEFHRV9NT05JVE9SYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYFBST0NfUEFHRV9NT05JVE9SYCB0aGUgKm9ubHkqIG9uZT8gT2theSwgYENPTkZJR19QUk9DX0ZTYCBpcyBuZWVkZWQgdG9vLCBidXQgdGhhdCYjMzk7cyB2ZXJ5IGdlbmVyaWMuIGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgdGhlIG1vcmUgc3BlY2lmaWMgb25lLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0IGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgZXZlbiByZWFjaGFibGUuIFllcCwgdmlhIHJlYWRpbmcgYC9wcm9jL3BpZC9zbWFwc2Agb3IgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCB0aGF0JiMzOTtzIGZpbmUuCgpBbHJpZ2h0LCBmdXp6aW5nIGBzbWFwX2dhdGhlcl9zdGF0c2AgaXQgaXMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBwcmlvcml0aXplIHRoYXQuCgpIbW0sIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGNoZWNrIGBmcy9wcm9jL0tjb25maWdgIGFuZCBkb3VibGUtY2hlY2ssIGxvb2tpbmcgZm9yIGBQUk9DX1BBR0VfTU9OSVRPUmAganVzdCBpbiBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFJPQ19QQUdFX01PTklUT1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9LY29uZmlnPTgzPWNvbmZpZyBQUk9DX1NZU0NUTFxuLS1cbmZzL3Byb2MvS2NvbmZpZy0xMDEtXG5mcy9wcm9jL0tjb25maWc6MTAyOmNvbmZpZyBQUk9DX1BBR0VfTU9OSVRPUlxuZnMvcHJvYy9LY29uZmlnLTEwMy0gXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5MwoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIFBhdGNoKioKCk9rYXksIHNvIHRoZSBkZWZhdWx0IGZvciB0aGlzIHNlZW1zIHRvIGJlIGB5YCBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCYjMzk7cyBhIHBvaW50IGluIHRoZSByaWdodCBkaXJlY3Rpb24uIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBlbHNlIHdhcyBtb2RpZmllZCwganVzdCB0byBiZSB0aG9yb3VnaC4gQWxyaWdodCwgbG9va3MgbGlrZSBgc21hcF9nYXRoZXJfc3RhdHNgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQgaW4gYGZzL3Byb2MvdGFza19tbXUuY2AuCgpOb3csIGxldCYjMzk7cyBkaXZlIGJhY2sgaW50byB0aGUgcGF0Y2ggaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gQWgsIHJpZ2h0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgbWlub3IgcmVmYWN0b3JpbmcgYW5kIGEgZml4LiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBzaGlmdCBmcm9tIHVzaW5nIGVpdGhlciBgd2Fsa19wYWdlX3JhbmdlYCBvciBgd2Fsa19wYWdlX3ZtYWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgc3RhcnRgLCB0byBhbHdheXMgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHdhbGtfcGFnZV9yYW5nZWAgaWYgYHN0YXJ0YCB3YXMgbm9uLXplcm8gYW5kIGB3YWxrX3BhZ2Vfdm1hYCBvdGhlcndpc2UuIFRoZSBjaGFuZ2UgY29uc29saWRhdGVzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24sIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gIGB3YWxrX3BhZ2VfcmFuZ2VgIHdvdWxkIGxvb2sgdXAgdGhlIFZNQSBhZ2FpbiwgYnV0IGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB0YWtlcyB0aGUgVk1BIGFzIGlucHV0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG9mIGEgY29kZSBjbGVhbnVwIHRoYXQgYWxzbyBjaGFuZ2VzIGJlaGF2aW9yLgoKVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgdXNlZCB0byBidWlsZCB0aGUgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwIGVudHJpZXMuICBVc2Vyc3BhY2UgY2FuIG9idmlvdXNseSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKT2theSwgc28gSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFuZCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBbJiMzNDtzbWFwX2dhdGhlcl9zdGF0cyYjMzQ7XWAuIEkmIzM5O2xsIGFsc28gZW5hYmxlIHRoZSBgUFJPQ19QQUdFX01PTklUT1JgIGNvbmZpZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGBzbWFwX2dhdGhlcl9zdGF0c2AsIGNoYW5naW5nIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIHRoYXQgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUk9DX1BBR0VfTU9OSVRPUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtYXBfZ2F0aGVyX3N0YXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjExLjYyNTYxNDYxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDEwNDg4OTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUk9DX1BBR0VfTU9OSVRPUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtYXBfZ2F0aGVyX3N0YXRzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTEuNjI1Njg5ODkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTQ4ODk0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMDYwZjMwYTdiMDAzYTM3MTk3MjE5NGM4MzMxZWRiNTExZDcyNjBhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuY1xcbmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDRcXG4tLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmNcXG4rKysgYi9mcy9wcm9jL3Rhc2tfbW11LmNcXG5AQCAtMTM2OSw5ICsxMzY5LDEyIEBAIHN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZW5kID0gdm1hLVxcdTAwM2V2bV9lbmQ7XFxuK1xcbitcXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuIFxcbiBcXHQvKiBJbnZhbGlkIHN0YXJ0ICovXFxuLVxcdGlmIChzdGFydCBcXHUwMDNlPSB2bWEtXFx1MDAzZXZtX2VuZClcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKHZtYSA9PSBnZXRfZ2F0ZV92bWEocHJpdi1cXHUwMDNlbG9ja19jdHgubW0pKVxcbkBAIC0xNDAxLDEwICsxNDA0LDcgQEAgc3RhdGljIHZvaWQgc21hcF9nYXRoZXJfc3RhdHMoc3RydWN0IHByb2NfbWFwc19wcml2YXRlICpwcml2LFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghc3RhcnQpXFxuLVxcdFxcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0d2Fsa19wYWdlX3JhbmdlKHZtYS1cXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXFx1MDAzZXZtX2VuZCwgb3BzLCBtc3MpO1xcbitcXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xcbiBcXG4gXFx0cmVhY3F1aXJlX3JjdShwcml2KTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMi4zNDE3NTE4MzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDMzODg3MzYxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDA2MGYzMGE3YjAwM2EzNzE5NzIxOTRjODMzMWVkYjUxMWQ3MjYwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5jIGIvZnMvcHJvYy90YXNrX21tdS5jXG5pbmRleCBkMzI0MDhmN2NkNWVkMi4uNWQzMDFiZGQwNWZjZTkgMTAwNjQ0XG4tLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmNcbisrKyBiL2ZzL3Byb2MvdGFza19tbXUuY1xuQEAgLTEzNjksOSArMTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XG4rXHR1bnNpZ25lZCBsb25nIGVuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4rXG4rXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4rXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmICh2bWEgPT0gZ2V0X2dhdGVfdm1hKHByaXYtXHUwMDNlbG9ja19jdHgubW0pKVxuQEAgLTE0MDEsMTAgKzE0MDQsNyBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghc3RhcnQpXG4tXHRcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XG4tXHRlbHNlXG4tXHRcdHdhbGtfcGFnZV9yYW5nZSh2bWEtXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXHUwMDNldm1fZW5kLCBvcHMsIG1zcyk7XG4rXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuIFxuIFx0cmVhY3F1aXJlX3JjdShwcml2KTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMi4zNDE3NTUwNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU1MDcyODM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgU01BUCBTdGF0IEdhdGhlcmluZyBQYXRjaCoqXG5cblJpZ2h0LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYGZzL3Byb2MvdGFza19tbXUuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBhIGZ1bmN0aW9uIGNhbGxlZCBgc21hcF9nYXRoZXJfc3RhdHNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwZXJmb3JtYW5jZSBhbmQgbG9naWMgY2hhbmdlIGhlcmUuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgbW9kaWZpY2F0aW9uIGludm9sdmVzIHJlcGxhY2luZyB0aGUgb2xkIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZWAgY2FsbHMgd2l0aCBhIG5ldyB1bmlmaWVkIGZ1bmN0aW9uOiBgd2Fsa19wYWdlX3JhbmdlX3ZtYWAuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGRpZyBpbnRvIGBzbWFwX2dhdGhlcl9zdGF0c2Agd2l0aGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGNoYW5nZSBsaWtlbHkgYWltcyBmb3Igb3B0aW1pemF0aW9uIG9yIHNpbXBsaWZpY2F0aW9uIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHN0YXRzIGdhdGhlcmluZywgbWF5YmUgYm90aCwgZ2l2ZW4gdGhlIGNvbnNvbGlkYXRpb24gb2YgdGhlIGZ1bmN0aW9ucy4gVW5kZXJzdGFuZGluZyAqd2h5KiB0aGV5IGNob3NlIHRvIGNvbWJpbmUgdGhlc2Ugd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTozOC44OTI0ODg1NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMzg5MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWFwX2dhdGhlcl9zdGF0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTEzNTQ9Z2V0X3NtYXBzX3NobWVtX3dhbGtfb3BzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMzY2LSAqL1xcbmZzL3Byb2MvdGFza19tbXUuYzoxMzY3OnN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM2OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xNDU2PXN0YXRpYyBpbnQgc2hvd19zbWFwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNDYxLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxNDYyOlxcdHNtYXBfZ2F0aGVyX3N0YXRzKHByaXYsIHZtYSwgXFx1MDAyNm1zcywgMCk7XFxuZnMvcHJvYy90YXNrX21tdS5jLTE0NjMtXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTQ4ND1zdGF0aWMgaW50IHNob3dfc21hcHNfcm9sbHVwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNTE0LVxcdGRvIHtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTUxNTpcXHRcXHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFxcdTAwMjZtc3MsIDApO1xcbmZzL3Byb2MvdGFza19tbXUuYy0xNTE2LVxcdFxcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cXHUwMDNldm1fZW5kO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTE1NzMtXFx0XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAzZT0gbGFzdF92bWFfZW5kKSB7XFxuZnMvcHJvYy90YXNrX21tdS5jOjE1NzQ6XFx0XFx0XFx0XFx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcXHUwMDI2bXNzLCAwKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU3NS1cXHRcXHRcXHRcXHRsYXN0X3ZtYV9lbmQgPSB2bWEtXFx1MDAzZXZtX2VuZDtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNTgwLVxcdFxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2VuZCBcXHUwMDNlIGxhc3Rfdm1hX2VuZCkge1xcbmZzL3Byb2MvdGFza19tbXUuYzoxNTgxOlxcdFxcdFxcdFxcdHNtYXBfZ2F0aGVyX3N0YXRzKHByaXYsIHZtYSwgXFx1MDAyNm1zcywgbGFzdF92bWFfZW5kKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU4Mi1cXHRcXHRcXHRcXHRsYXN0X3ZtYV9lbmQgPSB2bWEtXFx1MDAzZXZtX2VuZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6NDEuMDA2Mzg5OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgzNTY0MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIE1vZGlmaWNhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgc21hcF9nYXRoZXJfc3RhdHNgLCB0aGUgZnVuY3Rpb24gdGhhdCBwdWxscyB0aGUgc3RhdHMgZnJvbSBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLiBHb29kLCBpdCdzIGZ1bmN0aW9uYWwsIEkgY2FuIHRyYWNlIGl0cyByZWFjaGFiaWxpdHksIHNvIHRoYXQncyBhIHBsdXMuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gRG9lcyB0aGlzIHJlbHkgb24gc29tZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlnPyBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGljaCBjb25kaXRpb25zIGl0J3MgZ29pbmcgdG8gYmUgY29tcGlsZWQuIGBmcy9wcm9jL3Rhc2tfbW11LmNg4oCmQWgsIHNvIHRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgbG9naWMgbGl2ZXMuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgdGllZCB0byBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYD8gT3IsIG1heWJlIGl0J3MganVzdCByZWxhdGVkIHRvIGBDT05GSUdfUFJPQ19GU2A/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgdG8gZGV0ZXJtaW5pbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZSBhbmQgaWYgYW55IHNwZWNpZmljIG1vZHVsZSBvciBmdW5jdGlvbmFsaXR5IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIHdvcmsuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6NDQuNTg5OTU3MTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDE4NTQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXNrX21tdS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgKz0gcHJvYy5vXFxuZnMvcHJvYy9NYWtlZmlsZS03LVxcbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1xcdCs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbmZzL3Byb2MvTWFrZWZpbGUtOS1wcm9jLXlcXHRcXHRcXHQ6PSBub21tdS5vIHRhc2tfbm9tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXFx0Oj0gdGFza19tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjQ1LjEyNDE1ODcxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDg2NTc1Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHNtYXBzYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgYHNtYXBzYCBnZXRzIGJ1aWx0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0aGF0IGl0J3MgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGl0IHRvIGV2ZW4gYmUgKmNvbnNpZGVyZWQqIGZvciBjb21waWxhdGlvbiBhcmUgYENPTkZJR19NTVVgIGFuZCBgQ09ORklHX1BST0NfRlNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IG11Y2ggY29yZSBjb21wb25lbnRzIG9mIGEgbW9kZXJuIExpbnV4IHN5c3RlbS4gVGhleSBhcmUsIGluIGEgd29yZCwgc3RhbmRhcmQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMgYWJvdXQgd2hldGhlciB0aGUgYFBST0NfUEFHRV9NT05JVE9SYCBvcHRpb24gaXMgYSBuZWNlc3NhcnkgZGVwZW5kZW5jeSBmb3IgdGhlIGBzbWFwc2AgZmVhdHVyZSB0byB3b3JrIGNvcnJlY3RseS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtIHRoYXQsIGFzIG15IGdvYWwgaXMgdG8gYXNzZXNzIGRlcGVuZGVuY2llcy4gSSBhbSBwcmV0dHkgc3VyZSBpdCdzIG5vdCBhbmQgdGhhdCBgUFJPQ19QQUdFX01PTklUT1JgIGlzIGFjdHVhbGx5IHNlcGFyYXRlIGJ1dCByZWxhdGVkLiBJdCBpcyB0aGUgbmV4dCBwbGFjZSBJIHdpbGwgbG9vayBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjU3LjYxMDczODE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MzQ5MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWFwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL2Jhc2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYy0yNi0gKlxcbmZzL3Byb2MvYmFzZS5jOjI3OiAqICBBIG5ldyBwcm9jZXNzIHNwZWNpZmljIGVudHJ5IChzbWFwcykgaW5jbHVkZWQgaW4gL3Byb2MuIEl0IHNob3dzIHRoZVxcbmZzL3Byb2MvYmFzZS5jLTI4LSAqICBzaXplIG9mIHJzcyBmb3IgZWFjaCBtZW1vcnkgYXJlYS4gVGhlIG1hcHMgZW50cnkgbGFja3MgaW5mb3JtYXRpb25cXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTQ3LSAqICBQYXVsIE11bmR0IFxcdTAwM2NwYXVsLm11bmR0QG5va2lhLmNvbVxcdTAwM2U6XFxuZnMvcHJvYy9iYXNlLmM6NDg6ICogIE92ZXJhbGwgcmV2aXNpb24gYWJvdXQgc21hcHMuXFxuZnMvcHJvYy9iYXNlLmMtNDktICovXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMzI0OlxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTMzMjUtXFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzY3ODpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2Nzk6XFx0UkVHKFxcXCJzbWFwc19yb2xsdXBcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzY4MC1cXHRSRUcoXFxcInBhZ2VtYXBcXFwiLCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjU4LjI5NDIzODQyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzYxMDkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFscyBhbmQgZGVidWdnaW5nOlxuXG4qKktlcm5lbCBTeW1ib2wgRXhwbG9yYXRpb24qKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZSBgcHJvY19waWRfc21hcHNfb3BlcmF0aW9uc2Agc3RydWN0dXJlIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0IGFyZSB3cmFwcGVkIGluc2lkZSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBUaGlzIGNvdWxkIGJlIGR1ZSB0byBhIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGJ1aWxkIGZsYWdzLiBJdCdzIGEgY29tbW9uIG92ZXJzaWdodCwgYW5kIGEgcXVpY2sgY2hlY2sgaGVyZSBjYW4gc2F2ZSBhIGxvdCBvZiBoZWFkLXNjcmF0Y2hpbmcgbGF0ZXIgaWYgSSBzdGFydCBwb2tpbmcgYXJvdW5kIGFuZCBub3QgZmluZGluZyBhbnl0aGluZy4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCdzIGVuc3VyZSBJJ20gZXZlbiAqc3VwcG9zZWQqIHRvIGJlIHNlZWluZyB0aGlzIHRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBpbml0aWFsIGRpYWdub3N0aWMgaXMgY3JpdGljYWwgdG8gYXZvaWRpbmcgYSB3aWxkIGdvb3NlIGNoYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MDIuODMwMzUxNDc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NTgyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY19waWRfc21hcHNfb3BlcmF0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzY3ODpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2NzktXFx0UkVHKFxcXCJzbWFwc19yb2xsdXBcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2ludGVybmFsLmg9NDA4PWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zO1xcbmZzL3Byb2MvaW50ZXJuYWwuaDo0MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucztcXG5mcy9wcm9jL2ludGVybmFsLmgtNDEwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTE2NDg9c3RhdGljIGludCBzbWFwc19yb2xsdXBfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNjU5LVxcbmZzL3Byb2MvdGFza19tbXUuYzoxNjYwOmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyA9IHtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTY2MS1cXHQub3BlblxcdFxcdD0gcGlkX3NtYXBzX29wZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjAzLjAxNjMyODUxN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc5NzEyNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgdGdpZF9iYXNlX3N0dWZmYCBhbmQgYHNtYXBzYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgdGdpZF9iYXNlX3N0dWZmYCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBmdW5jdGlvbnMuIE15IGFpbSBpcyB0byBkZXRlcm1pbmUgaWYgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBsaWtlbHkgYCNpZmRlZmAgc3RhdGVtZW50cywgc3Vycm91bmQgdGhlIGluY2x1c2lvbiBvciB1c2Ugb2YgYHNtYXBzYCB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUuIFRoZSBvYmplY3RpdmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEknbSB0cnlpbmcgdG8gc2VlIGlmIGBzbWFwc2AgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBrZXJuZWwgdmVyc2lvbnMsIG9yIGJ1aWxkIG9wdGlvbnMuIFRoaXMgY291bGQgZXhwbGFpbiBiZWhhdmlvcmFsIGRpc2NyZXBhbmNpZXMgb3IgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgZGVwZW5kIG9uIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIGRldGFpbGVkIG1lbW9yeSBtYXBwaW5nIGluZm9ybWF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIGRlYnVnZ2luZyBwcmFjdGljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBJJ2xsIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MTYuODEzNDYxNDc3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9wcm9jL2Jhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzEwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzEwOlxcdFxcdFJFRyhcXFwibWFwc1xcXCIsICAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXFxuMzMxMTpcXHQjaWZkZWYgQ09ORklHX05VTUFcXG4zMzEyOlxcdFxcdFJFRyhcXFwibnVtYV9tYXBzXFxcIiwgIFNfSVJVR08sIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zKSxcXG4zMzEzOlxcdCNlbmRpZlxcbjMzMTQ6XFx0XFx0UkVHKFxcXCJtZW1cXFwiLCAgICAgICAgU19JUlVTUnxTX0lXVVNSLCBwcm9jX21lbV9vcGVyYXRpb25zKSxcXG4zMzE1OlxcdFxcdExOSyhcXFwiY3dkXFxcIiwgICAgICAgIHByb2NfY3dkX2xpbmspLFxcbjMzMTY6XFx0XFx0TE5LKFxcXCJyb290XFxcIiwgICAgICAgcHJvY19yb290X2xpbmspLFxcbjMzMTc6XFx0XFx0TE5LKFxcXCJleGVcXFwiLCAgICAgICAgcHJvY19leGVfbGluayksXFxuMzMxODpcXHRcXHRSRUcoXFxcIm1vdW50c1xcXCIsICAgICBTX0lSVUdPLCBwcm9jX21vdW50c19vcGVyYXRpb25zKSxcXG4zMzE5OlxcdFxcdFJFRyhcXFwibW91bnRpbmZvXFxcIiwgIFNfSVJVR08sIHByb2NfbW91bnRpbmZvX29wZXJhdGlvbnMpLFxcbjMzMjA6XFx0XFx0UkVHKFxcXCJtb3VudHN0YXRzXFxcIiwgU19JUlVTUiwgcHJvY19tb3VudHN0YXRzX29wZXJhdGlvbnMpLFxcbjMzMjE6XFx0I2lmZGVmIENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUlxcbjMzMjI6XFx0XFx0UkVHKFxcXCJjbGVhcl9yZWZzXFxcIiwgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxcbjMzMjM6XFx0XFx0UkVHKFxcXCJzbWFwc1xcXCIsICAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXFxuMzMyNDpcXHRcXHRSRUcoXFxcInNtYXBzX3JvbGx1cFxcXCIsIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcXG4zMzI1OlxcdFxcdFJFRyhcXFwicGFnZW1hcFxcXCIsICAgIFNfSVJVU1IsIHByb2NfcGFnZW1hcF9vcGVyYXRpb25zKSxcXG4zMzI2OlxcdCNlbmRpZlxcbjMzMjc6XFx0I2lmZGVmIENPTkZJR19TRUNVUklUWVxcbjMzMjg6XFx0XFx0RElSKFxcXCJhdHRyXFxcIiwgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXFxuMzMyOTpcXHQjZW5kaWZcXG4zMzMwOlxcdCNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG4zMzMxOlxcdFxcdE9ORShcXFwid2NoYW5cXFwiLCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG4zMzMyOlxcdCNlbmRpZlxcbjMzMzM6XFx0I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuMzMzNDpcXHRcXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuMzMzNTpcXHQjZW5kaWZcXG4zMzM2OlxcdCNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbjMzMzc6XFx0XFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcXG4zMzM4OlxcdCNlbmRpZlxcbjMzMzk6XFx0I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjE2LjgxNDEzMDU3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2Mjg1NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01BUCBQYWdlIE1vbml0b3JpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBsaWtlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5IGhlcmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBSZWdhcmRsZXNzLCBJIHNob3VsZCBqdXN0IGdvIGFoZWFkIGFuZCBlbnN1cmUgaXQncyBpbmNsdWRlZCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgIHRvIGJlIHNhZmUuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIGZ1bmN0aW9uLiBXYWl0IGEgbW9tZW50LCB0aGF0J3MgYSAqc3RhdGljKiBmdW5jdGlvbi4uLiBwZXJmZWN0ISBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBJIGNhbiBob25lIGluIG9uIGl0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0ZXJuYWwgcmVmZXJlbmNlcy4gTm93LCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhlIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBmdW5jdGlvbiBpcyBhIG5ldyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIHRoYXQgYWxyZWFkeSBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBoYW5kbGUgb24gaG93IHRoaXMgYWxsIGludGVncmF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjoyMS40OTA0MjIwMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTU0NzUxMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfcGFnZV9yYW5nZV92bWFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYz0yMTI9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBmaW5kX3plcm9wYWdlX29wcyA9IHtcXG4tLVxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yMjctICogbW0gY29udHJhY3RzIHdpdGggczM5MCwgdGhhdCBldmVuIGlmIG1tIHdlcmUgdG8gcmVtb3ZlIGEgcGFnZSB0YWJsZSxcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmM6MjI4OiAqIGFuZCByYWNpbmcgd2l0aCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKCkgY2FsbGluZyBwdGVfb2Zmc2V0X21hcF9sb2NrKClcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmMtMjI5LSAqIHdvdWxkIGZhaWwsIGl0IHdpbGwgbmV2ZXIgaW5zZXJ0IGEgcGFnZSB0YWJsZSBjb250YWluaW5nIGVtcHR5IHplcm9cXG4tLVxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYz0yMzM9c3RhdGljIGludCBfX2dtYXBfaGVscGVyX3Vuc2hhcmVfemVyb3BhZ2VzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTI1MS1yZXRyeTpcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmM6MjUyOlxcdFxcdHJjID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGFkZHIsIHZtYS1cXHUwMDNldm1fZW5kLFxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yNTMtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmaW5kX3plcm9wYWdlX29wcywgXFx1MDAyNmFkZHIpO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTEzNjc9c3RhdGljIHZvaWQgc21hcF9nYXRoZXJfc3RhdHMoc3RydWN0IHByb2NfbWFwc19wcml2YXRlICpwcml2LFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTE0MDYtXFxuZnMvcHJvYy90YXNrX21tdS5jOjE0MDc6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQwOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzc9aW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzktXFx0XFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjE0MDppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTQxLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9MjM4PXN0YXRpYyB2b2lkIGRhbW9uX3ZhX3dhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtMjUzLVxcdFxcdG9wcy1cXHUwMDNld2Fsa19sb2NrID0gUEdXQUxLX1ZNQV9SRExPQ0tfVkVSSUZZO1xcbm1tL2RhbW9uL3ZhZGRyLmM6MjU0OlxcdFxcdHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBzdGFydCwgZW5kLCBvcHMsIHByaXZhdGUpO1xcbm1tL2RhbW9uL3ZhZGRyLmMtMjU1LVxcdH1cXG4tLVxcbm1tL2ludGVybmFsLmg9MTgzNz1pbnQgd2Fsa19wYWdlX3JhbmdlX21tX3Vuc2FmZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2ludGVybmFsLmgtMTgzOS1cXHRcXHR2b2lkICpwcml2YXRlKTtcXG5tbS9pbnRlcm5hbC5oOjE4NDA6aW50IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbm1tL2ludGVybmFsLmgtMTg0MS1cXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9rc20uYz02OTI9c3RhdGljIGludCBicmVha19rc20oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2tzbS5jLTcwMi1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5tbS9rc20uYzo3MDM6XFx0XFx0a3NtX3BhZ2UgPSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgYWRkciwgZW5kLCBvcHMsIFxcdTAwMjZhZGRyKTtcXG5tbS9rc20uYy03MDQtXFx0XFx0aWYgKGtzbV9wYWdlIFxcdTAwM2M9IDApXFxuLS1cXG5tbS9rc20uYz0yNTc3PXN0YXRpYyBzdHJ1Y3Qga3NtX3JtYXBfaXRlbSAqc2Nhbl9nZXRfbmV4dF9ybWFwX2l0ZW0oc3RydWN0IHBhZ2UgKipwYWdlKVxcbi0tXFxubW0va3NtLmMtMjY3Mi1cXG5tbS9rc20uYzoyNjczOlxcdFxcdFxcdGZvdW5kID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGtzbV9zY2FuLmFkZHJlc3MsXFxubW0va3NtLmMtMjY3NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgdm1hLVxcdTAwM2V2bV9lbmQsXFxuLS1cXG5tbS9tYWR2aXNlLmM9MjgxPXN0YXRpYyBsb25nIG1hZHZpc2Vfd2lsbG5lZWQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMjkxLVxcdGlmICghZmlsZSkge1xcbm1tL21hZHZpc2UuYzoyOTI6XFx0XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIFxcdTAwMjZzd2FwaW5fd2Fsa19vcHMsIHZtYSk7XFxubW0vbWFkdmlzZS5jLTI5My1cXHRcXHRscnVfYWRkX2RyYWluKCk7IC8qIFB1c2ggYW55IG5ldyBwYWdlcyBvbnRvIHRoZSBMUlUgbm93ICovXFxuLS1cXG5tbS9tYWR2aXNlLmM9NTczPXN0YXRpYyB2b2lkIG1hZHZpc2VfY29sZF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXFxuLS1cXG5tbS9tYWR2aXNlLmMtNTg0LVxcdHRsYl9zdGFydF92bWEodGxiLCB2bWEpO1xcbm1tL21hZHZpc2UuYzo1ODU6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVxcdTAwM2VzdGFydCwgcmFuZ2UtXFx1MDAzZWVuZCwgXFx1MDAyNmNvbGRfd2Fsa19vcHMsXFxubW0vbWFkdmlzZS5jLTU4Ni1cXHRcXHRcXHRcXHUwMDI2d2Fsa19wcml2YXRlKTtcXG4tLVxcbm1tL21hZHZpc2UuYz02MTE9c3RhdGljIHZvaWQgbWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21hZHZpc2UuYy02MjAtXFx0dGxiX3N0YXJ0X3ZtYSh0bGIsIHZtYSk7XFxubW0vbWFkdmlzZS5jOjYyMTpcXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLCBcXHUwMDI2Y29sZF93YWxrX29wcyxcXG5tbS9tYWR2aXNlLmMtNjIyLVxcdFxcdFxcdCAgICBcXHUwMDI2d2Fsa19wcml2YXRlKTtcXG4tLVxcbm1tL21hZHZpc2UuYz03OTk9c3RhdGljIGludCBtYWR2aXNlX2ZyZWVfc2luZ2xlX3ZtYShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy04MjQtXFx0d2Fsa19vcHMud2Fsa19sb2NrID0gZ2V0X3dhbGtfbG9jayhtYWR2X2JlaGF2aW9yLVxcdTAwM2Vsb2NrX21vZGUpO1xcbm1tL21hZHZpc2UuYzo4MjU6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQsXFxubW0vbWFkdmlzZS5jLTgyNi1cXHRcXHRcXHRcXHUwMDI2d2Fsa19vcHMsIHRsYik7XFxuLS1cXG5tbS9tYWR2aXNlLmM9MTExNT1zdGF0aWMgbG9uZyBtYWR2aXNlX2d1YXJkX2luc3RhbGwoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMTE3My1cXHRcXHRpZiAobWFkdl9iZWhhdmlvci1cXHUwMDNlbG9ja19tb2RlID09IE1BRFZJU0VfVk1BX1JFQURfTE9DSylcXG5tbS9tYWR2aXNlLmM6MTE3NDpcXHRcXHRcXHRlcnIgPSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShtYWR2X2JlaGF2aW9yLVxcdTAwM2V2bWEsXFxubW0vbWFkdmlzZS5jLTExNzUtXFx0XFx0XFx0XFx0XFx0cmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLCBcXHUwMDI2d2Fsa19vcHMsXFxuLS1cXG5tbS9tYWR2aXNlLmM9MTI0Mz1zdGF0aWMgbG9uZyBtYWR2aXNlX2d1YXJkX3JlbW92ZShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy0xMjYwLVxcbm1tL21hZHZpc2UuYzoxMjYxOlxcdHJldHVybiB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLFxcbm1tL21hZHZpc2UuYy0xMjYyLVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZ3YWxsa19vcHMsIE5VTEwpO1xcbi0tXFxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzE1LVxcbm1tL3BhZ2V3YWxrLmM6NzE2OmludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9wYWdld2Fsay5jLTcxNy1cXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHZvaWQgKnByaXZhdGUpXFxuLS1cXG5tbS9wYWdld2Fsay5jLTczNS1cXG5tbS9wYWdld2Fsay5jOjczNjppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9wYWdld2Fsay5jLTczNy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTc0Mi1cXG5tbS9wYWdld2Fsay5jOjc0MzpcXHRyZXR1cm4gd2Fsa19wYWdlX3JhbmdlX3ZtYV91bnNhZmUodm1hLCBzdGFydCwgZW5kLCBvcHMsIHByaXZhdGUpO1xcbm1tL3BhZ2V3YWxrLmMtNzQ0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MzcuNjQ1MTg1MDUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjEwNzcyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lLCByZWFsbHkuIFRoZXkncmUgc3dhcHBpbmcgb3V0IGEgY291cGxlIG9mIGV4aXN0aW5nIHBhZ2Utd2Fsa2luZyBmdW5jdGlvbnMsIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZWAsIGFuZCByZXBsYWNpbmcgdGhlbSB3aXRoIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aXRoaW4gdGhlIGBzbWFwX2dhdGhlcl9zdGF0c2AgY29udGV4dC4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIHdoaWxlIGl0IGxvb2tzIHNpbXBsZSBvbiB0aGUgc3VyZmFjZSwgdGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSBtb2RpZmljYXRpb24gdG8gZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgcm91dGluZXMgbGlrZSB0aGlzIGRlc2VydmVzIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHJlcGxhY2VtZW50LiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBiZWhhdmVzIGRpZmZlcmVudGx5IGVub3VnaCBmcm9tIHRoZSBvcmlnaW5hbCBmdW5jdGlvbnMgdG8gYWZmZWN0IHRoZSBzdGF0aXN0aWNzIGdhdGhlcmluZywgb3Igd2hldGhlciB0aGlzIGlzIGEgY29ycmVjdGlvbiBvZiBhIHN1YnRsZSBidWcgd2hlcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdhcyBiZWluZyB1c2VkIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQncyB0aGUgKmFjdHVhbCogZGlmZmVyZW5jZSBiZXR3ZWVuIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZV92bWFgPyBMZXQncyBkaXZlIGRlZXBlciBhbmQgaW52ZXN0aWdhdGUgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI0OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjo0My4wNjYyNjc4NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzc2ODY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3YWxrX3BhZ2Vfdm1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2V3YWxrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZXdhbGsuYz01NDM9c3RhdGljIGJvb2wgY2hlY2tfb3BzX3NhZmUoY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMpXFxuLS1cXG5tbS9wYWdld2Fsay5jLTU5My0gKiBMb2NraW5nOlxcbm1tL3BhZ2V3YWxrLmM6NTk0OiAqICAgQ2FsbGVycyBvZiB3YWxrX3BhZ2VfcmFuZ2UoKSBhbmQgd2Fsa19wYWdlX3ZtYSgpIHNob3VsZCBob2xkIEBtbS1cXHUwMDNlbW1hcF9sb2NrLFxcbm1tL3BhZ2V3YWxrLmMtNTk1LSAqICAgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbiB0cmF2ZXJzZSB2bWEgbGlzdCBhbmQvb3IgYWNjZXNzIHRvIHZtYSdzIGRhdGEuXFxuLS1cXG5tbS9wYWdld2Fsay5jPTczNj1pbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzQ1LVxcbm1tL3BhZ2V3YWxrLmM6NzQ2OmludCB3YWxrX3BhZ2Vfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcXG5tbS9wYWdld2Fsay5jLTc0Ny1cXHRcXHR2b2lkICpwcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjo0My42NzQwNDUxNzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODAwOTk3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzbWFwX2dhdGhlcl9zdGF0cyBTaW1wbGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCdzIHNpbXBsaWZ5aW5nIGBzbWFwX2dhdGhlcl9zdGF0c2AuIFRoZSBrZXkgaXMgdGhlIHNoaWZ0IGZyb20gYnJhbmNoaW5nIGJldHdlZW4gYHdhbGtfcGFnZV92bWFgIGFuZCBgd2Fsa19wYWdlX3JhbmdlYCB0byBqdXN0IHVzaW5nIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYC4gSGFuZyBvbiwgd2Fzbid0IGB3YWxrX3BhZ2Vfdm1hYCBmb3IgdGhlICplbnRpcmUqIFZNQSwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGZvciBhIHNwZWNpZmljIHJhbmdlPyBSaWdodCwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb2RlIGxpa2Ugc286XG5cbmBgYGNcbi1cdGlmICghc3RhcnQpXG4tXHRcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XG4tXHRlbHNlXG4tXHRcdHdhbGtfcGFnZV9yYW5nZSh2bWEtXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXHUwMDNldm1fZW5kLCBvcHMsIG1zcyk7XG4rXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuYGBgXG5cbmFuZCBhbHNvIGFkZGluZyB0aGUgZm9sbG93aW5nOlxuXG5gYGBjXG4rXHR1bnNpZ25lZCBsb25nIGVuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4rXG4rXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4rXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4gXHRcdHJldHVybjtcbmBgYFxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgZnV6emluZyBpcyBhIGdvb2QgaWRlYS4gYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB0aGUgdGFyZ2V0LCBvYnZpb3VzbHkuIFRoZSByZWxldmFudCBjb25maWcgdG8gZW5hYmxlIGlzIGBQUk9DX1BBR0VfTU9OSVRPUmAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYFBST0NfUEFHRV9NT05JVE9SYCB0aGUgKm9ubHkqIG9uZT8gT2theSwgYENPTkZJR19QUk9DX0ZTYCBpcyBuZWVkZWQgdG9vLCBidXQgdGhhdCdzIHZlcnkgZ2VuZXJpYy4gYFBST0NfUEFHRV9NT05JVE9SYCBpcyB0aGUgbW9yZSBzcGVjaWZpYyBvbmUuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGF0IGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgZXZlbiByZWFjaGFibGUuIFllcCwgdmlhIHJlYWRpbmcgYC9wcm9jL3BpZC9zbWFwc2Agb3IgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCB0aGF0J3MgZmluZS5cblxuQWxyaWdodCwgZnV6emluZyBgc21hcF9nYXRoZXJfc3RhdHNgIGl0IGlzLiBJJ2xsIG1ha2Ugc3VyZSB0byBwcmlvcml0aXplIHRoYXQuXG5cbkhtbSwgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEJlc3QgdG8gY2hlY2sgYGZzL3Byb2MvS2NvbmZpZ2AgYW5kIGRvdWJsZS1jaGVjaywgbG9va2luZyBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCBqdXN0IGluIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mjc6MjYuNTU0MTUxMTY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTIwNDg2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBST0NfUEFHRV9NT05JVE9SXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL0tjb25maWc9ODM9Y29uZmlnIFBST0NfU1lTQ1RMXFxuLS1cXG5mcy9wcm9jL0tjb25maWctMTAxLVxcbmZzL3Byb2MvS2NvbmZpZzoxMDI6Y29uZmlnIFBST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy9LY29uZmlnLTEwMy0gXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI3OjI2LjkwNjIxNzY1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDg5MDMwMjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHNtYXBfZ2F0aGVyX3N0YXRzYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBkZWZhdWx0IGZvciB0aGlzIHNlZW1zIHRvIGJlIGB5YCBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEgcG9pbnQgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSB3YXMgbW9kaWZpZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEFscmlnaHQsIGxvb2tzIGxpa2UgYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHdhcyB0b3VjaGVkIGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgLlxuXG5Ob3csIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uIEFoLCByaWdodC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgbWlub3IgcmVmYWN0b3JpbmcgYW5kIGEgZml4LiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBzaGlmdCBmcm9tIHVzaW5nIGVpdGhlciBgd2Fsa19wYWdlX3JhbmdlYCBvciBgd2Fsa19wYWdlX3ZtYWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgc3RhcnRgLCB0byBhbHdheXMgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHdhbGtfcGFnZV9yYW5nZWAgaWYgYHN0YXJ0YCB3YXMgbm9uLXplcm8gYW5kIGB3YWxrX3BhZ2Vfdm1hYCBvdGhlcndpc2UuIFRoZSBjaGFuZ2UgY29uc29saWRhdGVzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24sIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gIGB3YWxrX3BhZ2VfcmFuZ2VgIHdvdWxkIGxvb2sgdXAgdGhlIFZNQSBhZ2FpbiwgYnV0IGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB0YWtlcyB0aGUgVk1BIGFzIGlucHV0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG9mIGEgY29kZSBjbGVhbnVwIHRoYXQgYWxzbyBjaGFuZ2VzIGJlaGF2aW9yLlxuXG5UaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAgZW50cmllcy4gIFVzZXJzcGFjZSBjYW4gb2J2aW91c2x5IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cbk9rYXksIHNvIEkgd2lsbCBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgW1wic21hcF9nYXRoZXJfc3RhdHNcIl1gLiBJJ2xsIGFsc28gZW5hYmxlIHRoZSBgUFJPQ19QQUdFX01PTklUT1JgIGNvbmZpZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGBzbWFwX2dhdGhlcl9zdGF0c2AsIGNoYW5naW5nIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIHRoYXQgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTMsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI3OjM1LjM5NTI1Mjg2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTIyNzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 19:06:08 +0000 UTC FinishedAt: 2026-07-21 19:27:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PROC_PAGE_MONITOR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PROC_PAGE_MONITOR" ], "series_id": "50ce4c5b-cd37-4576-b641-9f0fe01702a4" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "smap_gather_stats" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAwNjBmMzBhN2IwMDNhMzcxOTcyMTk0YzgzMzFlZGI1MTFkNzI2MGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDRcbi0tLSBhL2ZzL3Byb2MvdGFza19tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy90YXNrX21tdS5jXG5AQCAtMTM2OSw5ICYjNDM7MTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtXHUwMDNldm1fZW5kO1xuJiM0MztcbiYjNDM7XHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4mIzQzO1x0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAodm1hID09IGdldF9nYXRlX3ZtYShwcml2LVx1MDAzZWxvY2tfY3R4Lm1tKSlcbkBAIC0xNDAxLDEwICYjNDM7MTQwNCw3IEBAIHN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aWYgKCFzdGFydClcbi1cdFx0d2Fsa19wYWdlX3ZtYSh2bWEsIG9wcywgbXNzKTtcbi1cdGVsc2Vcbi1cdFx0d2Fsa19wYWdlX3JhbmdlKHZtYS1cdTAwM2V2bV9tbSwgc3RhcnQsIHZtYS1cdTAwM2V2bV9lbmQsIG9wcywgbXNzKTtcbiYjNDM7XHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuIFxuIFx0cmVhY3F1aXJlX3JjdShwcml2KTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDA2MGYzMGE3YjAwM2EzNzE5NzIxOTRjODMzMWVkYjUxMWQ3MjYwYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5jIGIvZnMvcHJvYy90YXNrX21tdS5jCmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDQKLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Byb2MvdGFza19tbXUuYwpAQCAtMTM2OSw5ICYjNDM7MTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsCiAJCQkgICAgICBzdHJ1Y3QgbWVtX3NpemVfc3RhdHMgKm1zcywgdW5zaWduZWQgbG9uZyBzdGFydCkKIHsKIAljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyA9IGdldF9zbWFwc193YWxrX29wcyhwcml2KTsKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsKJiM0MzsJc3RhcnQgPSBzdGFydCA/OiB2bWEtJmd0O3ZtX3N0YXJ0OwogCiAJLyogSW52YWxpZCBzdGFydCAqLwotCWlmIChzdGFydCAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJaWYgKHN0YXJ0ICZndDs9IGVuZCkKIAkJcmV0dXJuOwogCiAJaWYgKHZtYSA9PSBnZXRfZ2F0ZV92bWEocHJpdi0mZ3Q7bG9ja19jdHgubW0pKQpAQCAtMTQwMSwxMCAmIzQzOzE0MDQsNyBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsCiAJCX0KIAl9CiAKLQlpZiAoIXN0YXJ0KQotCQl3YWxrX3BhZ2Vfdm1hKHZtYSwgb3BzLCBtc3MpOwotCWVsc2UKLQkJd2Fsa19wYWdlX3JhbmdlKHZtYS0mZ3Q7dm1fbW0sIHN0YXJ0LCB2bWEtJmd0O3ZtX2VuZCwgb3BzLCBtc3MpOwomIzQzOwl3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpOwogCiAJcmVhY3F1aXJlX3JjdShwcml2KTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFNNQVAgU3RhdCBHYXRoZXJpbmcgUGF0Y2gqKgoKUmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBmcy9wcm9jL3Rhc2tfbW11LmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYSBmdW5jdGlvbiBjYWxsZWQgYHNtYXBfZ2F0aGVyX3N0YXRzYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcGVyZm9ybWFuY2UgYW5kIGxvZ2ljIGNoYW5nZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpbnZvbHZlcyByZXBsYWNpbmcgdGhlIG9sZCBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGNhbGxzIHdpdGggYSBuZXcgdW5pZmllZCBmdW5jdGlvbjogYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZGlnIGludG8gYHNtYXBfZ2F0aGVyX3N0YXRzYCB3aXRoaW4gYGZzL3Byb2MvdGFza19tbXUuY2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLiBUaGUgY2hhbmdlIGxpa2VseSBhaW1zIGZvciBvcHRpbWl6YXRpb24gb3Igc2ltcGxpZmljYXRpb24gb2YgbWVtb3J5IG1hbmFnZW1lbnQgc3RhdHMgZ2F0aGVyaW5nLCBtYXliZSBib3RoLCBnaXZlbiB0aGUgY29uc29saWRhdGlvbiBvZiB0aGUgZnVuY3Rpb25zLiBVbmRlcnN0YW5kaW5nICp3aHkqIHRoZXkgY2hvc2UgdG8gY29tYmluZSB0aGVzZSB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTEzNTQ9Z2V0X3NtYXBzX3NobWVtX3dhbGtfb3BzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM2Ni0gKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMzY3OnN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbmZzL3Byb2MvdGFza19tbXUuYy0xMzY4LVx0XHRcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xNDU2PXN0YXRpYyBpbnQgc2hvd19zbWFwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQ2MS1cbmZzL3Byb2MvdGFza19tbXUuYzoxNDYyOlx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcdTAwMjZtc3MsIDApO1xuZnMvcHJvYy90YXNrX21tdS5jLTE0NjMtXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTE0ODQ9c3RhdGljIGludCBzaG93X3NtYXBzX3JvbGx1cChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1MTQtXHRkbyB7XG5mcy9wcm9jL3Rhc2tfbW11LmM6MTUxNTpcdFx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcdTAwMjZtc3MsIDApO1xuZnMvcHJvYy90YXNrX21tdS5jLTE1MTYtXHRcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1NzMtXHRcdFx0aWYgKHZtYS1cdTAwM2V2bV9zdGFydCBcdTAwM2U9IGxhc3Rfdm1hX2VuZCkge1xuZnMvcHJvYy90YXNrX21tdS5jOjE1NzQ6XHRcdFx0XHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFx1MDAyNm1zcywgMCk7XG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU3NS1cdFx0XHRcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTE1ODAtXHRcdFx0aWYgKHZtYS1cdTAwM2V2bV9lbmQgXHUwMDNlIGxhc3Rfdm1hX2VuZCkge1xuZnMvcHJvYy90YXNrX21tdS5jOjE1ODE6XHRcdFx0XHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFx1MDAyNm1zcywgbGFzdF92bWFfZW5kKTtcbmZzL3Byb2MvdGFza19tbXUuYy0xNTgyLVx0XHRcdFx0bGFzdF92bWFfZW5kID0gdm1hLVx1MDAzZXZtX2VuZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgYHNtYXBfZ2F0aGVyX3N0YXRzYCBNb2RpZmljYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgc21hcF9nYXRoZXJfc3RhdHNgLCB0aGUgZnVuY3Rpb24gdGhhdCBwdWxscyB0aGUgc3RhdHMgZnJvbSBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLiBHb29kLCBpdCYjMzk7cyBmdW5jdGlvbmFsLCBJIGNhbiB0cmFjZSBpdHMgcmVhY2hhYmlsaXR5LCBzbyB0aGF0JiMzOTtzIGEgcGx1cy4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBEb2VzIHRoaXMgcmVseSBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBjb25maWc/IEkgbmVlZCB0byBrbm93IHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgY29tcGlsZWQuIGBmcy9wcm9jL3Rhc2tfbW11LmNg4oCmQWgsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlbGV2YW50IGxvZ2ljIGxpdmVzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IHRpZWQgdG8gYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmA/IE9yLCBtYXliZSBpdCYjMzk7cyBqdXN0IHJlbGF0ZWQgdG8gYENPTkZJR19QUk9DX0ZTYD8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIGFuZCBpZiBhbnkgc3BlY2lmaWMgbW9kdWxlIG9yIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgaXQgdG8gd29yay4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFza19tbXUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgJiM0Mzs9IHByb2Mub1xuZnMvcHJvYy9NYWtlZmlsZS03LVxuZnMvcHJvYy9NYWtlZmlsZTo4OkNGTEFHU190YXNrX21tdS5vXHQmIzQzOz0gLVduby1vdmVycmlkZS1pbml0XG5mcy9wcm9jL01ha2VmaWxlLTktcHJvYy15XHRcdFx0Oj0gbm9tbXUubyB0YXNrX25vbW11Lm9cbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXHQ6PSB0YXNrX21tdS5vXG5mcy9wcm9jL01ha2VmaWxlLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHNtYXBzYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBgc21hcHNgIGdldHMgYnVpbHQuIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRoYXQgaXQmIzM5O3MgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGl0IHRvIGV2ZW4gYmUgKmNvbnNpZGVyZWQqIGZvciBjb21waWxhdGlvbiBhcmUgYENPTkZJR19NTVVgIGFuZCBgQ09ORklHX1BST0NfRlNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IG11Y2ggY29yZSBjb21wb25lbnRzIG9mIGEgbW9kZXJuIExpbnV4IHN5c3RlbS4gVGhleSBhcmUsIGluIGEgd29yZCwgc3RhbmRhcmQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgdGhlIGBQUk9DX1BBR0VfTU9OSVRPUmAgb3B0aW9uIGlzIGEgbmVjZXNzYXJ5IGRlcGVuZGVuY3kgZm9yIHRoZSBgc21hcHNgIGZlYXR1cmUgdG8gd29yayBjb3JyZWN0bHkuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgdG8gY29uZmlybSB0aGF0LCBhcyBteSBnb2FsIGlzIHRvIGFzc2VzcyBkZXBlbmRlbmNpZXMuIEkgYW0gcHJldHR5IHN1cmUgaXQmIzM5O3Mgbm90IGFuZCB0aGF0IGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgYWN0dWFsbHkgc2VwYXJhdGUgYnV0IHJlbGF0ZWQuIEl0IGlzIHRoZSBuZXh0IHBsYWNlIEkgd2lsbCBsb29rIGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtYXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMtMjYtICpcbmZzL3Byb2MvYmFzZS5jOjI3OiAqICBBIG5ldyBwcm9jZXNzIHNwZWNpZmljIGVudHJ5IChzbWFwcykgaW5jbHVkZWQgaW4gL3Byb2MuIEl0IHNob3dzIHRoZVxuZnMvcHJvYy9iYXNlLmMtMjgtICogIHNpemUgb2YgcnNzIGZvciBlYWNoIG1lbW9yeSBhcmVhLiBUaGUgbWFwcyBlbnRyeSBsYWNrcyBpbmZvcm1hdGlvblxuLS1cbmZzL3Byb2MvYmFzZS5jLTQ3LSAqICBQYXVsIE11bmR0IFx1MDAzY3BhdWwubXVuZHRAbm9raWEuY29tXHUwMDNlOlxuZnMvcHJvYy9iYXNlLmM6NDg6ICogIE92ZXJhbGwgcmV2aXNpb24gYWJvdXQgc21hcHMuXG5mcy9wcm9jL2Jhc2UuYy00OS0gKi9cbi0tXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTMzMjItXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcdFJFRyhcJiMzNDtzbWFwc1wmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjQ6XHRSRUcoXCYjMzQ7c21hcHNfcm9sbHVwXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI1LVx0UkVHKFwmIzM0O3BhZ2VtYXBcJiMzNDssICAgIFNfSVJVU1IsIHByb2NfcGFnZW1hcF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cdFJFRyhcJiMzNDtjbGVhcl9yZWZzXCYjMzQ7LCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc4Olx0UkVHKFwmIzM0O3NtYXBzXCYjMzQ7LCAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc5Olx0UkVHKFwmIzM0O3NtYXBzX3JvbGx1cFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY4MC1cdFJFRyhcJiMzNDtwYWdlbWFwXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBrZXJuZWwgaW50ZXJuYWxzIGFuZCBkZWJ1Z2dpbmc6CgoqKktlcm5lbCBTeW1ib2wgRXhwbG9yYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZSBgcHJvY19waWRfc21hcHNfb3BlcmF0aW9uc2Agc3RydWN0dXJlIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0IGFyZSB3cmFwcGVkIGluc2lkZSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBUaGlzIGNvdWxkIGJlIGR1ZSB0byBhIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGJ1aWxkIGZsYWdzLiBJdCYjMzk7cyBhIGNvbW1vbiBvdmVyc2lnaHQsIGFuZCBhIHF1aWNrIGNoZWNrIGhlcmUgY2FuIHNhdmUgYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIEkgc3RhcnQgcG9raW5nIGFyb3VuZCBhbmQgbm90IGZpbmRpbmcgYW55dGhpbmcuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBsZXQmIzM5O3MgZW5zdXJlIEkmIzM5O20gZXZlbiAqc3VwcG9zZWQqIHRvIGJlIHNlZWluZyB0aGlzIHRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBpbml0aWFsIGRpYWdub3N0aWMgaXMgY3JpdGljYWwgdG8gYXZvaWRpbmcgYSB3aWxkIGdvb3NlIGNoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0Z2lkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzIyLVx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjM6XHRSRUcoXCYjMzQ7c21hcHNcJiMzNDssICAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVx0UkVHKFwmIzM0O3NtYXBzX3JvbGx1cFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jPTM2NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGlkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zNjc3LVx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjM2Nzg6XHRSRUcoXCYjMzQ7c21hcHNcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jLTM2NzktXHRSRUcoXCYjMzQ7c21hcHNfcm9sbHVwXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9pbnRlcm5hbC5oPTQwOD1leHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3BpZF9udW1hX21hcHNfb3BlcmF0aW9ucztcbmZzL3Byb2MvaW50ZXJuYWwuaDo0MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucztcbmZzL3Byb2MvaW50ZXJuYWwuaC00MTAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnM7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTE2NDg9c3RhdGljIGludCBzbWFwc19yb2xsdXBfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTY1OS1cbmZzL3Byb2MvdGFza19tbXUuYzoxNjYwOmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyA9IHtcbmZzL3Byb2MvdGFza19tbXUuYy0xNjYxLVx0Lm9wZW5cdFx0PSBwaWRfc21hcHNfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHRnaWRfYmFzZV9zdHVmZmAgYW5kIGBzbWFwc2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgdGdpZF9iYXNlX3N0dWZmYCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBmdW5jdGlvbnMuIE15IGFpbSBpcyB0byBkZXRlcm1pbmUgaWYgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBsaWtlbHkgYCNpZmRlZmAgc3RhdGVtZW50cywgc3Vycm91bmQgdGhlIGluY2x1c2lvbiBvciB1c2Ugb2YgYHNtYXBzYCB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUuIFRoZSBvYmplY3RpdmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiBgc21hcHNgIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBiYXNlZCBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywga2VybmVsIHZlcnNpb25zLCBvciBidWlsZCBvcHRpb25zLiBUaGlzIGNvdWxkIGV4cGxhaW4gYmVoYXZpb3JhbCBkaXNjcmVwYW5jaWVzIG9yIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyB0aGF0IGRlcGVuZCBvbiB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBkZXRhaWxlZCBtZW1vcnkgbWFwcGluZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgcHJhY3RpY2UuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIG1vdmUgZm9yd2FyZCwgc28gSSYjMzk7bGwgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvcHJvYy9iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzMTA6XHRcdFJFRyhcJiMzNDttYXBzXCYjMzQ7LCAgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9tYXBzX29wZXJhdGlvbnMpLFxuMzMxMTpcdCNpZmRlZiBDT05GSUdfTlVNQVxuMzMxMjpcdFx0UkVHKFwmIzM0O251bWFfbWFwc1wmIzM0OywgIFNfSVJVR08sIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zKSxcbjMzMTM6XHQjZW5kaWZcbjMzMTQ6XHRcdFJFRyhcJiMzNDttZW1cJiMzNDssICAgICAgICBTX0lSVVNSfFNfSVdVU1IsIHByb2NfbWVtX29wZXJhdGlvbnMpLFxuMzMxNTpcdFx0TE5LKFwmIzM0O2N3ZFwmIzM0OywgICAgICAgIHByb2NfY3dkX2xpbmspLFxuMzMxNjpcdFx0TE5LKFwmIzM0O3Jvb3RcJiMzNDssICAgICAgIHByb2Nfcm9vdF9saW5rKSxcbjMzMTc6XHRcdExOSyhcJiMzNDtleGVcJiMzNDssICAgICAgICBwcm9jX2V4ZV9saW5rKSxcbjMzMTg6XHRcdFJFRyhcJiMzNDttb3VudHNcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX21vdW50c19vcGVyYXRpb25zKSxcbjMzMTk6XHRcdFJFRyhcJiMzNDttb3VudGluZm9cJiMzNDssICBTX0lSVUdPLCBwcm9jX21vdW50aW5mb19vcGVyYXRpb25zKSxcbjMzMjA6XHRcdFJFRyhcJiMzNDttb3VudHN0YXRzXCYjMzQ7LCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXG4zMzIxOlx0I2lmZGVmIENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUlxuMzMyMjpcdFx0UkVHKFwmIzM0O2NsZWFyX3JlZnNcJiMzNDssIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcbjMzMjM6XHRcdFJFRyhcJiMzNDtzbWFwc1wmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcbjMzMjQ6XHRcdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbjMzMjU6XHRcdFJFRyhcJiMzNDtwYWdlbWFwXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXG4zMzI2Olx0I2VuZGlmXG4zMzI3Olx0I2lmZGVmIENPTkZJR19TRUNVUklUWVxuMzMyODpcdFx0RElSKFwmIzM0O2F0dHJcJiMzNDssICAgICAgIFNfSVJVR098U19JWFVHTywgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX2F0dHJfZGlyX29wZXJhdGlvbnMpLFxuMzMyOTpcdCNlbmRpZlxuMzMzMDpcdCNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbjMzMzE6XHRcdE9ORShcJiMzNDt3Y2hhblwmIzM0OywgICAgICBTX0lSVUdPLCBwcm9jX3BpZF93Y2hhbiksXG4zMzMyOlx0I2VuZGlmXG4zMzMzOlx0I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXG4zMzM0Olx0XHRPTkUoXCYjMzQ7c3RhY2tcJiMzNDssICAgICAgU19JUlVTUiwgcHJvY19waWRfc3RhY2spLFxuMzMzNTpcdCNlbmRpZlxuMzMzNjpcdCNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xuMzMzNzpcdFx0T05FKFwmIzM0O3NjaGVkc3RhdFwmIzM0OywgIFNfSVJVR08sIHByb2NfcGlkX3NjaGVkc3RhdCksXG4zMzM4Olx0I2VuZGlmXG4zMzM5Olx0I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUFQIFBhZ2UgTW9uaXRvcmluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCBpcyBkZWZpbml0ZWx5IG5lY2Vzc2FyeSBoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBgUFJPQ19QQUdFX01PTklUT1JgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gUmVnYXJkbGVzcywgSSBzaG91bGQganVzdCBnbyBhaGVhZCBhbmQgZW5zdXJlIGl0JiMzOTtzIGluY2x1ZGVkIHdpdGhpbiBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgc2FmZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBzbWFwX2dhdGhlcl9zdGF0c2AgZnVuY3Rpb24uIFdhaXQgYSBtb21lbnQsIHRoYXQmIzM5O3MgYSAqc3RhdGljKiBmdW5jdGlvbi4uLiBwZXJmZWN0ISBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBJIGNhbiBob25lIGluIG9uIGl0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0ZXJuYWwgcmVmZXJlbmNlcy4gTm93LCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhlIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBmdW5jdGlvbiBpcyBhIG5ldyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIHRoYXQgYWxyZWFkeSBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBoYW5kbGUgb24gaG93IHRoaXMgYWxsIGludGVncmF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbGtfcGFnZV9yYW5nZV92bWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jPTIxMj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIGZpbmRfemVyb3BhZ2Vfb3BzID0ge1xuLS1cbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yMjctICogbW0gY29udHJhY3RzIHdpdGggczM5MCwgdGhhdCBldmVuIGlmIG1tIHdlcmUgdG8gcmVtb3ZlIGEgcGFnZSB0YWJsZSxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYzoyMjg6ICogYW5kIHJhY2luZyB3aXRoIHdhbGtfcGFnZV9yYW5nZV92bWEoKSBjYWxsaW5nIHB0ZV9vZmZzZXRfbWFwX2xvY2soKVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTIyOS0gKiB3b3VsZCBmYWlsLCBpdCB3aWxsIG5ldmVyIGluc2VydCBhIHBhZ2UgdGFibGUgY29udGFpbmluZyBlbXB0eSB6ZXJvXG4tLVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jPTIzMz1zdGF0aWMgaW50IF9fZ21hcF9oZWxwZXJfdW5zaGFyZV96ZXJvcGFnZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4tLVxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTI1MS1yZXRyeTpcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYzoyNTI6XHRcdHJjID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGFkZHIsIHZtYS1cdTAwM2V2bV9lbmQsXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmMtMjUzLVx0XHRcdFx0XHQgXHUwMDI2ZmluZF96ZXJvcGFnZV9vcHMsIFx1MDAyNmFkZHIpO1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xMzY3PXN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQwNi1cbmZzL3Byb2MvdGFza19tbXUuYzoxNDA3Olx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTtcbmZzL3Byb2MvdGFza19tbXUuYy0xNDA4LVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzc9aW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTM5LVx0XHRwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKTtcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaDoxNDA6aW50IHdhbGtfcGFnZV9yYW5nZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTQxLVx0XHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTIzOD1zdGF0aWMgdm9pZCBkYW1vbl92YV93YWxrX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy0yNTMtXHRcdG9wcy1cdTAwM2V3YWxrX2xvY2sgPSBQR1dBTEtfVk1BX1JETE9DS19WRVJJRlk7XG5tbS9kYW1vbi92YWRkci5jOjI1NDpcdFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgcHJpdmF0ZSk7XG5tbS9kYW1vbi92YWRkci5jLTI1NS1cdH1cbi0tXG5tbS9pbnRlcm5hbC5oPTE4Mzc9aW50IHdhbGtfcGFnZV9yYW5nZV9tbV91bnNhZmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vaW50ZXJuYWwuaC0xODM5LVx0XHR2b2lkICpwcml2YXRlKTtcbm1tL2ludGVybmFsLmg6MTg0MDppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYV91bnNhZmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5tbS9pbnRlcm5hbC5oLTE4NDEtXHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9rc20uYz02OTI9c3RhdGljIGludCBicmVha19rc20oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9rc20uYy03MDItXHRcdGNvbmRfcmVzY2hlZCgpO1xubW0va3NtLmM6NzAzOlx0XHRrc21fcGFnZSA9IHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBhZGRyLCBlbmQsIG9wcywgXHUwMDI2YWRkcik7XG5tbS9rc20uYy03MDQtXHRcdGlmIChrc21fcGFnZSBcdTAwM2M9IDApXG4tLVxubW0va3NtLmM9MjU3Nz1zdGF0aWMgc3RydWN0IGtzbV9ybWFwX2l0ZW0gKnNjYW5fZ2V0X25leHRfcm1hcF9pdGVtKHN0cnVjdCBwYWdlICoqcGFnZSlcbi0tXG5tbS9rc20uYy0yNjcyLVxubW0va3NtLmM6MjY3MzpcdFx0XHRmb3VuZCA9IHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBrc21fc2Nhbi5hZGRyZXNzLFxubW0va3NtLmMtMjY3NC1cdFx0XHRcdFx0XHQgICAgdm1hLVx1MDAzZXZtX2VuZCxcbi0tXG5tbS9tYWR2aXNlLmM9MjgxPXN0YXRpYyBsb25nIG1hZHZpc2Vfd2lsbG5lZWQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXG4tLVxubW0vbWFkdmlzZS5jLTI5MS1cdGlmICghZmlsZSkge1xubW0vbWFkdmlzZS5jOjI5MjpcdFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIFx1MDAyNnN3YXBpbl93YWxrX29wcywgdm1hKTtcbm1tL21hZHZpc2UuYy0yOTMtXHRcdGxydV9hZGRfZHJhaW4oKTsgLyogUHVzaCBhbnkgbmV3IHBhZ2VzIG9udG8gdGhlIExSVSBub3cgKi9cbi0tXG5tbS9tYWR2aXNlLmM9NTczPXN0YXRpYyB2b2lkIG1hZHZpc2VfY29sZF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXG4tLVxubW0vbWFkdmlzZS5jLTU4NC1cdHRsYl9zdGFydF92bWEodGxiLCB2bWEpO1xubW0vbWFkdmlzZS5jOjU4NTpcdHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCByYW5nZS1cdTAwM2VzdGFydCwgcmFuZ2UtXHUwMDNlZW5kLCBcdTAwMjZjb2xkX3dhbGtfb3BzLFxubW0vbWFkdmlzZS5jLTU4Ni1cdFx0XHRcdTAwMjZ3YWxrX3ByaXZhdGUpO1xuLS1cbm1tL21hZHZpc2UuYz02MTE9c3RhdGljIHZvaWQgbWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcbi0tXG5tbS9tYWR2aXNlLmMtNjIwLVx0dGxiX3N0YXJ0X3ZtYSh0bGIsIHZtYSk7XG5tbS9tYWR2aXNlLmM6NjIxOlx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsIFx1MDAyNmNvbGRfd2Fsa19vcHMsXG5tbS9tYWR2aXNlLmMtNjIyLVx0XHRcdCAgICBcdTAwMjZ3YWxrX3ByaXZhdGUpO1xuLS1cbm1tL21hZHZpc2UuYz03OTk9c3RhdGljIGludCBtYWR2aXNlX2ZyZWVfc2luZ2xlX3ZtYShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtODI0LVx0d2Fsa19vcHMud2Fsa19sb2NrID0gZ2V0X3dhbGtfbG9jayhtYWR2X2JlaGF2aW9yLVx1MDAzZWxvY2tfbW9kZSk7XG5tbS9tYWR2aXNlLmM6ODI1Olx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQsXG5tbS9tYWR2aXNlLmMtODI2LVx0XHRcdFx1MDAyNndhbGtfb3BzLCB0bGIpO1xuLS1cbm1tL21hZHZpc2UuYz0xMTE1PXN0YXRpYyBsb25nIG1hZHZpc2VfZ3VhcmRfaW5zdGFsbChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMTE3My1cdFx0aWYgKG1hZHZfYmVoYXZpb3ItXHUwMDNlbG9ja19tb2RlID09IE1BRFZJU0VfVk1BX1JFQURfTE9DSylcbm1tL21hZHZpc2UuYzoxMTc0Olx0XHRcdGVyciA9IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKG1hZHZfYmVoYXZpb3ItXHUwMDNldm1hLFxubW0vbWFkdmlzZS5jLTExNzUtXHRcdFx0XHRcdHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsIFx1MDAyNndhbGtfb3BzLFxuLS1cbm1tL21hZHZpc2UuYz0xMjQzPXN0YXRpYyBsb25nIG1hZHZpc2VfZ3VhcmRfcmVtb3ZlKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy0xMjYwLVxubW0vbWFkdmlzZS5jOjEyNjE6XHRyZXR1cm4gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG5tbS9tYWR2aXNlLmMtMTI2Mi1cdFx0XHRcdCAgIFx1MDAyNndhbGxrX29wcywgTlVMTCk7XG4tLVxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTcxNS1cbm1tL3BhZ2V3YWxrLmM6NzE2OmludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL3BhZ2V3YWxrLmMtNzE3LVx0XHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHZvaWQgKnByaXZhdGUpXG4tLVxubW0vcGFnZXdhbGsuYy03MzUtXG5tbS9wYWdld2Fsay5jOjczNjppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL3BhZ2V3YWxrLmMtNzM3LVx0XHRcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9wYWdld2Fsay5jLTc0Mi1cbm1tL3BhZ2V3YWxrLmM6NzQzOlx0cmV0dXJuIHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBwcml2YXRlKTtcbm1tL3BhZ2V3YWxrLmMtNzQ0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI0OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lLCByZWFsbHkuIFRoZXkmIzM5O3JlIHN3YXBwaW5nIG91dCBhIGNvdXBsZSBvZiBleGlzdGluZyBwYWdlLXdhbGtpbmcgZnVuY3Rpb25zLCBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgLCBhbmQgcmVwbGFjaW5nIHRoZW0gd2l0aCBgd2Fsa19wYWdlX3JhbmdlX3ZtYWAgd2l0aGluIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIGNvbnRleHQuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2Ugd2hpbGUgaXQgbG9va3Mgc2ltcGxlIG9uIHRoZSBzdXJmYWNlLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQW55IG1vZGlmaWNhdGlvbiB0byBmdW5kYW1lbnRhbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyBsaWtlIHRoaXMgZGVzZXJ2ZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVwbGFjZW1lbnQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBiZWhhdmVzIGRpZmZlcmVudGx5IGVub3VnaCBmcm9tIHRoZSBvcmlnaW5hbCBmdW5jdGlvbnMgdG8gYWZmZWN0IHRoZSBzdGF0aXN0aWNzIGdhdGhlcmluZywgb3Igd2hldGhlciB0aGlzIGlzIGEgY29ycmVjdGlvbiBvZiBhIHN1YnRsZSBidWcgd2hlcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdhcyBiZWluZyB1c2VkIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQmIzM5O3MgdGhlICphY3R1YWwqIGRpZmZlcmVuY2UgYmV0d2VlbiBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYD8gTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGFuZCBpbnZlc3RpZ2F0ZSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3YWxrX3BhZ2Vfdm1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZXdhbGsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdld2Fsay5jPTU0Mz1zdGF0aWMgYm9vbCBjaGVja19vcHNfc2FmZShjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcylcbi0tXG5tbS9wYWdld2Fsay5jLTU5My0gKiBMb2NraW5nOlxubW0vcGFnZXdhbGsuYzo1OTQ6ICogICBDYWxsZXJzIG9mIHdhbGtfcGFnZV9yYW5nZSgpIGFuZCB3YWxrX3BhZ2Vfdm1hKCkgc2hvdWxkIGhvbGQgQG1tLVx1MDAzZW1tYXBfbG9jayxcbm1tL3BhZ2V3YWxrLmMtNTk1LSAqICAgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbiB0cmF2ZXJzZSB2bWEgbGlzdCBhbmQvb3IgYWNjZXNzIHRvIHZtYSYjMzk7cyBkYXRhLlxuLS1cbm1tL3BhZ2V3YWxrLmM9NzM2PWludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL3BhZ2V3YWxrLmMtNzQ1LVxubW0vcGFnZXdhbGsuYzo3NDY6aW50IHdhbGtfcGFnZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxubW0vcGFnZXdhbGsuYy03NDctXHRcdHZvaWQgKnByaXZhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzbWFwX2dhdGhlcl9zdGF0cyBTaW1wbGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2ltcGxpZnlpbmcgYHNtYXBfZ2F0aGVyX3N0YXRzYC4gVGhlIGtleSBpcyB0aGUgc2hpZnQgZnJvbSBicmFuY2hpbmcgYmV0d2VlbiBgd2Fsa19wYWdlX3ZtYWAgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIHRvIGp1c3QgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBIYW5nIG9uLCB3YXNuJiMzOTt0IGB3YWxrX3BhZ2Vfdm1hYCBmb3IgdGhlICplbnRpcmUqIFZNQSwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGZvciBhIHNwZWNpZmljIHJhbmdlPyBSaWdodCwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb2RlIGxpa2Ugc286CgpgYGBjCi0JaWYgKCFzdGFydCkKLQkJd2Fsa19wYWdlX3ZtYSh2bWEsIG9wcywgbXNzKTsKLQllbHNlCi0JCXdhbGtfcGFnZV9yYW5nZSh2bWEtJmd0O3ZtX21tLCBzdGFydCwgdm1hLSZndDt2bV9lbmQsIG9wcywgbXNzKTsKJiM0MzsJd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTsKYGBgCgphbmQgYWxzbyBhZGRpbmcgdGhlIGZvbGxvd2luZzoKCmBgYGMKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsKJiM0MzsJc3RhcnQgPSBzdGFydCA/OiB2bWEtJmd0O3ZtX3N0YXJ0OwogCiAJLyogSW52YWxpZCBzdGFydCAqLwotCWlmIChzdGFydCAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJaWYgKHN0YXJ0ICZndDs9IGVuZCkKIAkJcmV0dXJuOwpgYGAKClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBtZWFucyBmdXp6aW5nIGlzIGEgZ29vZCBpZGVhLiBgc21hcF9nYXRoZXJfc3RhdHNgIGlzIHRoZSB0YXJnZXQsIG9idmlvdXNseS4gVGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaXMgYFBST0NfUEFHRV9NT05JVE9SYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYFBST0NfUEFHRV9NT05JVE9SYCB0aGUgKm9ubHkqIG9uZT8gT2theSwgYENPTkZJR19QUk9DX0ZTYCBpcyBuZWVkZWQgdG9vLCBidXQgdGhhdCYjMzk7cyB2ZXJ5IGdlbmVyaWMuIGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgdGhlIG1vcmUgc3BlY2lmaWMgb25lLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0IGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgZXZlbiByZWFjaGFibGUuIFllcCwgdmlhIHJlYWRpbmcgYC9wcm9jL3BpZC9zbWFwc2Agb3IgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCB0aGF0JiMzOTtzIGZpbmUuCgpBbHJpZ2h0LCBmdXp6aW5nIGBzbWFwX2dhdGhlcl9zdGF0c2AgaXQgaXMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBwcmlvcml0aXplIHRoYXQuCgpIbW0sIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGNoZWNrIGBmcy9wcm9jL0tjb25maWdgIGFuZCBkb3VibGUtY2hlY2ssIGxvb2tpbmcgZm9yIGBQUk9DX1BBR0VfTU9OSVRPUmAganVzdCBpbiBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFJPQ19QQUdFX01PTklUT1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy9LY29uZmlnPTgzPWNvbmZpZyBQUk9DX1NZU0NUTFxuLS1cbmZzL3Byb2MvS2NvbmZpZy0xMDEtXG5mcy9wcm9jL0tjb25maWc6MTAyOmNvbmZpZyBQUk9DX1BBR0VfTU9OSVRPUlxuZnMvcHJvYy9LY29uZmlnLTEwMy0gXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5MwoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIFBhdGNoKioKCk9rYXksIHNvIHRoZSBkZWZhdWx0IGZvciB0aGlzIHNlZW1zIHRvIGJlIGB5YCBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCYjMzk7cyBhIHBvaW50IGluIHRoZSByaWdodCBkaXJlY3Rpb24uIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBlbHNlIHdhcyBtb2RpZmllZCwganVzdCB0byBiZSB0aG9yb3VnaC4gQWxyaWdodCwgbG9va3MgbGlrZSBgc21hcF9nYXRoZXJfc3RhdHNgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQgaW4gYGZzL3Byb2MvdGFza19tbXUuY2AuCgpOb3csIGxldCYjMzk7cyBkaXZlIGJhY2sgaW50byB0aGUgcGF0Y2ggaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gQWgsIHJpZ2h0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgbWlub3IgcmVmYWN0b3JpbmcgYW5kIGEgZml4LiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBzaGlmdCBmcm9tIHVzaW5nIGVpdGhlciBgd2Fsa19wYWdlX3JhbmdlYCBvciBgd2Fsa19wYWdlX3ZtYWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgc3RhcnRgLCB0byBhbHdheXMgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHdhbGtfcGFnZV9yYW5nZWAgaWYgYHN0YXJ0YCB3YXMgbm9uLXplcm8gYW5kIGB3YWxrX3BhZ2Vfdm1hYCBvdGhlcndpc2UuIFRoZSBjaGFuZ2UgY29uc29saWRhdGVzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24sIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gIGB3YWxrX3BhZ2VfcmFuZ2VgIHdvdWxkIGxvb2sgdXAgdGhlIFZNQSBhZ2FpbiwgYnV0IGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB0YWtlcyB0aGUgVk1BIGFzIGlucHV0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG9mIGEgY29kZSBjbGVhbnVwIHRoYXQgYWxzbyBjaGFuZ2VzIGJlaGF2aW9yLgoKVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgdXNlZCB0byBidWlsZCB0aGUgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwIGVudHJpZXMuICBVc2Vyc3BhY2UgY2FuIG9idmlvdXNseSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKT2theSwgc28gSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFuZCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBbJiMzNDtzbWFwX2dhdGhlcl9zdGF0cyYjMzQ7XWAuIEkmIzM5O2xsIGFsc28gZW5hYmxlIHRoZSBgUFJPQ19QQUdFX01PTklUT1JgIGNvbmZpZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGBzbWFwX2dhdGhlcl9zdGF0c2AsIGNoYW5naW5nIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIHRoYXQgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUk9DX1BBR0VfTU9OSVRPUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtYXBfZ2F0aGVyX3N0YXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21hcF9nYXRoZXJfc3RhdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjExLjYyNTYxNDYxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDEwNDg4OTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUk9DX1BBR0VfTU9OSVRPUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtYXBfZ2F0aGVyX3N0YXRzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc21hcF9nYXRoZXJfc3RhdHMgdG8gdXNlIHdhbGtfcGFnZV9yYW5nZV92bWEgaW5zdGVhZCBvZiB3YWxrX3BhZ2VfcmFuZ2Uvd2Fsa19wYWdlX3ZtYS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTEuNjI1Njg5ODkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTQ4ODk0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMDYwZjMwYTdiMDAzYTM3MTk3MjE5NGM4MzMxZWRiNTExZDcyNjBhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuY1xcbmluZGV4IGQzMjQwOGY3Y2Q1ZWQyLi41ZDMwMWJkZDA1ZmNlOSAxMDA2NDRcXG4tLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmNcXG4rKysgYi9mcy9wcm9jL3Rhc2tfbW11LmNcXG5AQCAtMTM2OSw5ICsxMzY5LDEyIEBAIHN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZW5kID0gdm1hLVxcdTAwM2V2bV9lbmQ7XFxuK1xcbitcXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuIFxcbiBcXHQvKiBJbnZhbGlkIHN0YXJ0ICovXFxuLVxcdGlmIChzdGFydCBcXHUwMDNlPSB2bWEtXFx1MDAzZXZtX2VuZClcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKHZtYSA9PSBnZXRfZ2F0ZV92bWEocHJpdi1cXHUwMDNlbG9ja19jdHgubW0pKVxcbkBAIC0xNDAxLDEwICsxNDA0LDcgQEAgc3RhdGljIHZvaWQgc21hcF9nYXRoZXJfc3RhdHMoc3RydWN0IHByb2NfbWFwc19wcml2YXRlICpwcml2LFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghc3RhcnQpXFxuLVxcdFxcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0d2Fsa19wYWdlX3JhbmdlKHZtYS1cXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXFx1MDAzZXZtX2VuZCwgb3BzLCBtc3MpO1xcbitcXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xcbiBcXG4gXFx0cmVhY3F1aXJlX3JjdShwcml2KTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMi4zNDE3NTE4MzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDMzODg3MzYxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDA2MGYzMGE3YjAwM2EzNzE5NzIxOTRjODMzMWVkYjUxMWQ3MjYwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5jIGIvZnMvcHJvYy90YXNrX21tdS5jXG5pbmRleCBkMzI0MDhmN2NkNWVkMi4uNWQzMDFiZGQwNWZjZTkgMTAwNjQ0XG4tLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmNcbisrKyBiL2ZzL3Byb2MvdGFza19tbXUuY1xuQEAgLTEzNjksOSArMTM2OSwxMiBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSBnZXRfc21hcHNfd2Fsa19vcHMocHJpdik7XG4rXHR1bnNpZ25lZCBsb25nIGVuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4rXG4rXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4rXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmICh2bWEgPT0gZ2V0X2dhdGVfdm1hKHByaXYtXHUwMDNlbG9ja19jdHgubW0pKVxuQEAgLTE0MDEsMTAgKzE0MDQsNyBAQCBzdGF0aWMgdm9pZCBzbWFwX2dhdGhlcl9zdGF0cyhzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghc3RhcnQpXG4tXHRcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XG4tXHRlbHNlXG4tXHRcdHdhbGtfcGFnZV9yYW5nZSh2bWEtXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXHUwMDNldm1fZW5kLCBvcHMsIG1zcyk7XG4rXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuIFxuIFx0cmVhY3F1aXJlX3JjdShwcml2KTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMi4zNDE3NTUwNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU1MDcyODM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgU01BUCBTdGF0IEdhdGhlcmluZyBQYXRjaCoqXG5cblJpZ2h0LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYGZzL3Byb2MvdGFza19tbXUuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBhIGZ1bmN0aW9uIGNhbGxlZCBgc21hcF9nYXRoZXJfc3RhdHNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwZXJmb3JtYW5jZSBhbmQgbG9naWMgY2hhbmdlIGhlcmUuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgbW9kaWZpY2F0aW9uIGludm9sdmVzIHJlcGxhY2luZyB0aGUgb2xkIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZWAgY2FsbHMgd2l0aCBhIG5ldyB1bmlmaWVkIGZ1bmN0aW9uOiBgd2Fsa19wYWdlX3JhbmdlX3ZtYWAuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGRpZyBpbnRvIGBzbWFwX2dhdGhlcl9zdGF0c2Agd2l0aGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGNoYW5nZSBsaWtlbHkgYWltcyBmb3Igb3B0aW1pemF0aW9uIG9yIHNpbXBsaWZpY2F0aW9uIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHN0YXRzIGdhdGhlcmluZywgbWF5YmUgYm90aCwgZ2l2ZW4gdGhlIGNvbnNvbGlkYXRpb24gb2YgdGhlIGZ1bmN0aW9ucy4gVW5kZXJzdGFuZGluZyAqd2h5KiB0aGV5IGNob3NlIHRvIGNvbWJpbmUgdGhlc2Ugd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTozOC44OTI0ODg1NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMzg5MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWFwX2dhdGhlcl9zdGF0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTEzNTQ9Z2V0X3NtYXBzX3NobWVtX3dhbGtfb3BzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMzY2LSAqL1xcbmZzL3Byb2MvdGFza19tbXUuYzoxMzY3OnN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdixcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM2OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xNDU2PXN0YXRpYyBpbnQgc2hvd19zbWFwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNDYxLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxNDYyOlxcdHNtYXBfZ2F0aGVyX3N0YXRzKHByaXYsIHZtYSwgXFx1MDAyNm1zcywgMCk7XFxuZnMvcHJvYy90YXNrX21tdS5jLTE0NjMtXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTQ4ND1zdGF0aWMgaW50IHNob3dfc21hcHNfcm9sbHVwKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNTE0LVxcdGRvIHtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTUxNTpcXHRcXHRzbWFwX2dhdGhlcl9zdGF0cyhwcml2LCB2bWEsIFxcdTAwMjZtc3MsIDApO1xcbmZzL3Byb2MvdGFza19tbXUuYy0xNTE2LVxcdFxcdGxhc3Rfdm1hX2VuZCA9IHZtYS1cXHUwMDNldm1fZW5kO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTE1NzMtXFx0XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAzZT0gbGFzdF92bWFfZW5kKSB7XFxuZnMvcHJvYy90YXNrX21tdS5jOjE1NzQ6XFx0XFx0XFx0XFx0c21hcF9nYXRoZXJfc3RhdHMocHJpdiwgdm1hLCBcXHUwMDI2bXNzLCAwKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU3NS1cXHRcXHRcXHRcXHRsYXN0X3ZtYV9lbmQgPSB2bWEtXFx1MDAzZXZtX2VuZDtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNTgwLVxcdFxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2VuZCBcXHUwMDNlIGxhc3Rfdm1hX2VuZCkge1xcbmZzL3Byb2MvdGFza19tbXUuYzoxNTgxOlxcdFxcdFxcdFxcdHNtYXBfZ2F0aGVyX3N0YXRzKHByaXYsIHZtYSwgXFx1MDAyNm1zcywgbGFzdF92bWFfZW5kKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTU4Mi1cXHRcXHRcXHRcXHRsYXN0X3ZtYV9lbmQgPSB2bWEtXFx1MDAzZXZtX2VuZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6NDEuMDA2Mzg5OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgzNTY0MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIE1vZGlmaWNhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgc21hcF9nYXRoZXJfc3RhdHNgLCB0aGUgZnVuY3Rpb24gdGhhdCBwdWxscyB0aGUgc3RhdHMgZnJvbSBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLiBHb29kLCBpdCdzIGZ1bmN0aW9uYWwsIEkgY2FuIHRyYWNlIGl0cyByZWFjaGFiaWxpdHksIHNvIHRoYXQncyBhIHBsdXMuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gRG9lcyB0aGlzIHJlbHkgb24gc29tZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlnPyBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGljaCBjb25kaXRpb25zIGl0J3MgZ29pbmcgdG8gYmUgY29tcGlsZWQuIGBmcy9wcm9jL3Rhc2tfbW11LmNg4oCmQWgsIHNvIHRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgbG9naWMgbGl2ZXMuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgdGllZCB0byBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYD8gT3IsIG1heWJlIGl0J3MganVzdCByZWxhdGVkIHRvIGBDT05GSUdfUFJPQ19GU2A/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgdG8gZGV0ZXJtaW5pbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZSBhbmQgaWYgYW55IHNwZWNpZmljIG1vZHVsZSBvciBmdW5jdGlvbmFsaXR5IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIHdvcmsuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6NDQuNTg5OTU3MTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDE4NTQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXNrX21tdS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgKz0gcHJvYy5vXFxuZnMvcHJvYy9NYWtlZmlsZS03LVxcbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1xcdCs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbmZzL3Byb2MvTWFrZWZpbGUtOS1wcm9jLXlcXHRcXHRcXHQ6PSBub21tdS5vIHRhc2tfbm9tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXFx0Oj0gdGFza19tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjQ1LjEyNDE1ODcxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDg2NTc1Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHNtYXBzYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgYHNtYXBzYCBnZXRzIGJ1aWx0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0aGF0IGl0J3MgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGl0IHRvIGV2ZW4gYmUgKmNvbnNpZGVyZWQqIGZvciBjb21waWxhdGlvbiBhcmUgYENPTkZJR19NTVVgIGFuZCBgQ09ORklHX1BST0NfRlNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IG11Y2ggY29yZSBjb21wb25lbnRzIG9mIGEgbW9kZXJuIExpbnV4IHN5c3RlbS4gVGhleSBhcmUsIGluIGEgd29yZCwgc3RhbmRhcmQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMgYWJvdXQgd2hldGhlciB0aGUgYFBST0NfUEFHRV9NT05JVE9SYCBvcHRpb24gaXMgYSBuZWNlc3NhcnkgZGVwZW5kZW5jeSBmb3IgdGhlIGBzbWFwc2AgZmVhdHVyZSB0byB3b3JrIGNvcnJlY3RseS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtIHRoYXQsIGFzIG15IGdvYWwgaXMgdG8gYXNzZXNzIGRlcGVuZGVuY2llcy4gSSBhbSBwcmV0dHkgc3VyZSBpdCdzIG5vdCBhbmQgdGhhdCBgUFJPQ19QQUdFX01PTklUT1JgIGlzIGFjdHVhbGx5IHNlcGFyYXRlIGJ1dCByZWxhdGVkLiBJdCBpcyB0aGUgbmV4dCBwbGFjZSBJIHdpbGwgbG9vayBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjU3LjYxMDczODE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MzQ5MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWFwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL2Jhc2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYy0yNi0gKlxcbmZzL3Byb2MvYmFzZS5jOjI3OiAqICBBIG5ldyBwcm9jZXNzIHNwZWNpZmljIGVudHJ5IChzbWFwcykgaW5jbHVkZWQgaW4gL3Byb2MuIEl0IHNob3dzIHRoZVxcbmZzL3Byb2MvYmFzZS5jLTI4LSAqICBzaXplIG9mIHJzcyBmb3IgZWFjaCBtZW1vcnkgYXJlYS4gVGhlIG1hcHMgZW50cnkgbGFja3MgaW5mb3JtYXRpb25cXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTQ3LSAqICBQYXVsIE11bmR0IFxcdTAwM2NwYXVsLm11bmR0QG5va2lhLmNvbVxcdTAwM2U6XFxuZnMvcHJvYy9iYXNlLmM6NDg6ICogIE92ZXJhbGwgcmV2aXNpb24gYWJvdXQgc21hcHMuXFxuZnMvcHJvYy9iYXNlLmMtNDktICovXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMzI0OlxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTMzMjUtXFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzY3ODpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2Nzk6XFx0UkVHKFxcXCJzbWFwc19yb2xsdXBcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzY4MC1cXHRSRUcoXFxcInBhZ2VtYXBcXFwiLCAgICBTX0lSVVNSLCBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjU4LjI5NDIzODQyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzYxMDkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFscyBhbmQgZGVidWdnaW5nOlxuXG4qKktlcm5lbCBTeW1ib2wgRXhwbG9yYXRpb24qKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZSBgcHJvY19waWRfc21hcHNfb3BlcmF0aW9uc2Agc3RydWN0dXJlIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0IGFyZSB3cmFwcGVkIGluc2lkZSBhbiBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLiBUaGlzIGNvdWxkIGJlIGR1ZSB0byBhIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGJ1aWxkIGZsYWdzLiBJdCdzIGEgY29tbW9uIG92ZXJzaWdodCwgYW5kIGEgcXVpY2sgY2hlY2sgaGVyZSBjYW4gc2F2ZSBhIGxvdCBvZiBoZWFkLXNjcmF0Y2hpbmcgbGF0ZXIgaWYgSSBzdGFydCBwb2tpbmcgYXJvdW5kIGFuZCBub3QgZmluZGluZyBhbnl0aGluZy4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCdzIGVuc3VyZSBJJ20gZXZlbiAqc3VwcG9zZWQqIHRvIGJlIHNlZWluZyB0aGlzIHRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBpbml0aWFsIGRpYWdub3N0aWMgaXMgY3JpdGljYWwgdG8gYXZvaWRpbmcgYSB3aWxkIGdvb3NlIGNoYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MDIuODMwMzUxNDc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NTgyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY19waWRfc21hcHNfb3BlcmF0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMzpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3Ny1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzY3ODpcXHRSRUcoXFxcInNtYXBzXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2NzktXFx0UkVHKFxcXCJzbWFwc19yb2xsdXBcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zbWFwc19yb2xsdXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2ludGVybmFsLmg9NDA4PWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zO1xcbmZzL3Byb2MvaW50ZXJuYWwuaDo0MDk6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucztcXG5mcy9wcm9jL2ludGVybmFsLmgtNDEwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTE2NDg9c3RhdGljIGludCBzbWFwc19yb2xsdXBfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xNjU5LVxcbmZzL3Byb2MvdGFza19tbXUuYzoxNjYwOmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyA9IHtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTY2MS1cXHQub3BlblxcdFxcdD0gcGlkX3NtYXBzX29wZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjAzLjAxNjMyODUxN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc5NzEyNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgdGdpZF9iYXNlX3N0dWZmYCBhbmQgYHNtYXBzYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgdGdpZF9iYXNlX3N0dWZmYCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBmdW5jdGlvbnMuIE15IGFpbSBpcyB0byBkZXRlcm1pbmUgaWYgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBsaWtlbHkgYCNpZmRlZmAgc3RhdGVtZW50cywgc3Vycm91bmQgdGhlIGluY2x1c2lvbiBvciB1c2Ugb2YgYHNtYXBzYCB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUuIFRoZSBvYmplY3RpdmUgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEknbSB0cnlpbmcgdG8gc2VlIGlmIGBzbWFwc2AgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBrZXJuZWwgdmVyc2lvbnMsIG9yIGJ1aWxkIG9wdGlvbnMuIFRoaXMgY291bGQgZXhwbGFpbiBiZWhhdmlvcmFsIGRpc2NyZXBhbmNpZXMgb3IgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgZGVwZW5kIG9uIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIGRldGFpbGVkIG1lbW9yeSBtYXBwaW5nIGluZm9ybWF0aW9uLiBUaGlzIGlzIGEgY29tbW9uIGRlYnVnZ2luZyBwcmFjdGljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBJJ2xsIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MTYuODEzNDYxNDc3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9wcm9jL2Jhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzEwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzEwOlxcdFxcdFJFRyhcXFwibWFwc1xcXCIsICAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXFxuMzMxMTpcXHQjaWZkZWYgQ09ORklHX05VTUFcXG4zMzEyOlxcdFxcdFJFRyhcXFwibnVtYV9tYXBzXFxcIiwgIFNfSVJVR08sIHByb2NfcGlkX251bWFfbWFwc19vcGVyYXRpb25zKSxcXG4zMzEzOlxcdCNlbmRpZlxcbjMzMTQ6XFx0XFx0UkVHKFxcXCJtZW1cXFwiLCAgICAgICAgU19JUlVTUnxTX0lXVVNSLCBwcm9jX21lbV9vcGVyYXRpb25zKSxcXG4zMzE1OlxcdFxcdExOSyhcXFwiY3dkXFxcIiwgICAgICAgIHByb2NfY3dkX2xpbmspLFxcbjMzMTY6XFx0XFx0TE5LKFxcXCJyb290XFxcIiwgICAgICAgcHJvY19yb290X2xpbmspLFxcbjMzMTc6XFx0XFx0TE5LKFxcXCJleGVcXFwiLCAgICAgICAgcHJvY19leGVfbGluayksXFxuMzMxODpcXHRcXHRSRUcoXFxcIm1vdW50c1xcXCIsICAgICBTX0lSVUdPLCBwcm9jX21vdW50c19vcGVyYXRpb25zKSxcXG4zMzE5OlxcdFxcdFJFRyhcXFwibW91bnRpbmZvXFxcIiwgIFNfSVJVR08sIHByb2NfbW91bnRpbmZvX29wZXJhdGlvbnMpLFxcbjMzMjA6XFx0XFx0UkVHKFxcXCJtb3VudHN0YXRzXFxcIiwgU19JUlVTUiwgcHJvY19tb3VudHN0YXRzX29wZXJhdGlvbnMpLFxcbjMzMjE6XFx0I2lmZGVmIENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUlxcbjMzMjI6XFx0XFx0UkVHKFxcXCJjbGVhcl9yZWZzXFxcIiwgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxcbjMzMjM6XFx0XFx0UkVHKFxcXCJzbWFwc1xcXCIsICAgICAgU19JUlVHTywgcHJvY19waWRfc21hcHNfb3BlcmF0aW9ucyksXFxuMzMyNDpcXHRcXHRSRUcoXFxcInNtYXBzX3JvbGx1cFxcXCIsIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcXG4zMzI1OlxcdFxcdFJFRyhcXFwicGFnZW1hcFxcXCIsICAgIFNfSVJVU1IsIHByb2NfcGFnZW1hcF9vcGVyYXRpb25zKSxcXG4zMzI2OlxcdCNlbmRpZlxcbjMzMjc6XFx0I2lmZGVmIENPTkZJR19TRUNVUklUWVxcbjMzMjg6XFx0XFx0RElSKFxcXCJhdHRyXFxcIiwgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXFxuMzMyOTpcXHQjZW5kaWZcXG4zMzMwOlxcdCNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG4zMzMxOlxcdFxcdE9ORShcXFwid2NoYW5cXFwiLCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG4zMzMyOlxcdCNlbmRpZlxcbjMzMzM6XFx0I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuMzMzNDpcXHRcXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuMzMzNTpcXHQjZW5kaWZcXG4zMzM2OlxcdCNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbjMzMzc6XFx0XFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcXG4zMzM4OlxcdCNlbmRpZlxcbjMzMzk6XFx0I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjE2LjgxNDEzMDU3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2Mjg1NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01BUCBQYWdlIE1vbml0b3JpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBsaWtlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5IGhlcmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQUk9DX1BBR0VfTU9OSVRPUmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBSZWdhcmRsZXNzLCBJIHNob3VsZCBqdXN0IGdvIGFoZWFkIGFuZCBlbnN1cmUgaXQncyBpbmNsdWRlZCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgIHRvIGJlIHNhZmUuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBgc21hcF9nYXRoZXJfc3RhdHNgIGZ1bmN0aW9uLiBXYWl0IGEgbW9tZW50LCB0aGF0J3MgYSAqc3RhdGljKiBmdW5jdGlvbi4uLiBwZXJmZWN0ISBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBJIGNhbiBob25lIGluIG9uIGl0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0ZXJuYWwgcmVmZXJlbmNlcy4gTm93LCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhlIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBmdW5jdGlvbiBpcyBhIG5ldyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIHRoYXQgYWxyZWFkeSBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBoYW5kbGUgb24gaG93IHRoaXMgYWxsIGludGVncmF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjoyMS40OTA0MjIwMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTU0NzUxMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfcGFnZV9yYW5nZV92bWFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYz0yMTI9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBmaW5kX3plcm9wYWdlX29wcyA9IHtcXG4tLVxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yMjctICogbW0gY29udHJhY3RzIHdpdGggczM5MCwgdGhhdCBldmVuIGlmIG1tIHdlcmUgdG8gcmVtb3ZlIGEgcGFnZSB0YWJsZSxcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmM6MjI4OiAqIGFuZCByYWNpbmcgd2l0aCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKCkgY2FsbGluZyBwdGVfb2Zmc2V0X21hcF9sb2NrKClcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmMtMjI5LSAqIHdvdWxkIGZhaWwsIGl0IHdpbGwgbmV2ZXIgaW5zZXJ0IGEgcGFnZSB0YWJsZSBjb250YWluaW5nIGVtcHR5IHplcm9cXG4tLVxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYz0yMzM9c3RhdGljIGludCBfX2dtYXBfaGVscGVyX3Vuc2hhcmVfemVyb3BhZ2VzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuYXJjaC9zMzkwL21tL2dtYXBfaGVscGVycy5jLTI1MS1yZXRyeTpcXG5hcmNoL3MzOTAvbW0vZ21hcF9oZWxwZXJzLmM6MjUyOlxcdFxcdHJjID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGFkZHIsIHZtYS1cXHUwMDNldm1fZW5kLFxcbmFyY2gvczM5MC9tbS9nbWFwX2hlbHBlcnMuYy0yNTMtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmaW5kX3plcm9wYWdlX29wcywgXFx1MDAyNmFkZHIpO1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTEzNjc9c3RhdGljIHZvaWQgc21hcF9nYXRoZXJfc3RhdHMoc3RydWN0IHByb2NfbWFwc19wcml2YXRlICpwcml2LFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTE0MDYtXFxuZnMvcHJvYy90YXNrX21tdS5jOjE0MDc6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIG9wcywgbXNzKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTQwOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzc9aW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzktXFx0XFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjE0MDppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTQxLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9MjM4PXN0YXRpYyB2b2lkIGRhbW9uX3ZhX3dhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtMjUzLVxcdFxcdG9wcy1cXHUwMDNld2Fsa19sb2NrID0gUEdXQUxLX1ZNQV9SRExPQ0tfVkVSSUZZO1xcbm1tL2RhbW9uL3ZhZGRyLmM6MjU0OlxcdFxcdHdhbGtfcGFnZV9yYW5nZV92bWEodm1hLCBzdGFydCwgZW5kLCBvcHMsIHByaXZhdGUpO1xcbm1tL2RhbW9uL3ZhZGRyLmMtMjU1LVxcdH1cXG4tLVxcbm1tL2ludGVybmFsLmg9MTgzNz1pbnQgd2Fsa19wYWdlX3JhbmdlX21tX3Vuc2FmZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2ludGVybmFsLmgtMTgzOS1cXHRcXHR2b2lkICpwcml2YXRlKTtcXG5tbS9pbnRlcm5hbC5oOjE4NDA6aW50IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbm1tL2ludGVybmFsLmgtMTg0MS1cXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9rc20uYz02OTI9c3RhdGljIGludCBicmVha19rc20oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2tzbS5jLTcwMi1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5tbS9rc20uYzo3MDM6XFx0XFx0a3NtX3BhZ2UgPSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgYWRkciwgZW5kLCBvcHMsIFxcdTAwMjZhZGRyKTtcXG5tbS9rc20uYy03MDQtXFx0XFx0aWYgKGtzbV9wYWdlIFxcdTAwM2M9IDApXFxuLS1cXG5tbS9rc20uYz0yNTc3PXN0YXRpYyBzdHJ1Y3Qga3NtX3JtYXBfaXRlbSAqc2Nhbl9nZXRfbmV4dF9ybWFwX2l0ZW0oc3RydWN0IHBhZ2UgKipwYWdlKVxcbi0tXFxubW0va3NtLmMtMjY3Mi1cXG5tbS9rc20uYzoyNjczOlxcdFxcdFxcdGZvdW5kID0gd2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIGtzbV9zY2FuLmFkZHJlc3MsXFxubW0va3NtLmMtMjY3NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgdm1hLVxcdTAwM2V2bV9lbmQsXFxuLS1cXG5tbS9tYWR2aXNlLmM9MjgxPXN0YXRpYyBsb25nIG1hZHZpc2Vfd2lsbG5lZWQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMjkxLVxcdGlmICghZmlsZSkge1xcbm1tL21hZHZpc2UuYzoyOTI6XFx0XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHN0YXJ0LCBlbmQsIFxcdTAwMjZzd2FwaW5fd2Fsa19vcHMsIHZtYSk7XFxubW0vbWFkdmlzZS5jLTI5My1cXHRcXHRscnVfYWRkX2RyYWluKCk7IC8qIFB1c2ggYW55IG5ldyBwYWdlcyBvbnRvIHRoZSBMUlUgbm93ICovXFxuLS1cXG5tbS9tYWR2aXNlLmM9NTczPXN0YXRpYyB2b2lkIG1hZHZpc2VfY29sZF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXFxuLS1cXG5tbS9tYWR2aXNlLmMtNTg0LVxcdHRsYl9zdGFydF92bWEodGxiLCB2bWEpO1xcbm1tL21hZHZpc2UuYzo1ODU6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLVxcdTAwM2VzdGFydCwgcmFuZ2UtXFx1MDAzZWVuZCwgXFx1MDAyNmNvbGRfd2Fsa19vcHMsXFxubW0vbWFkdmlzZS5jLTU4Ni1cXHRcXHRcXHRcXHUwMDI2d2Fsa19wcml2YXRlKTtcXG4tLVxcbm1tL21hZHZpc2UuYz02MTE9c3RhdGljIHZvaWQgbWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21hZHZpc2UuYy02MjAtXFx0dGxiX3N0YXJ0X3ZtYSh0bGIsIHZtYSk7XFxubW0vbWFkdmlzZS5jOjYyMTpcXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLCBcXHUwMDI2Y29sZF93YWxrX29wcyxcXG5tbS9tYWR2aXNlLmMtNjIyLVxcdFxcdFxcdCAgICBcXHUwMDI2d2Fsa19wcml2YXRlKTtcXG4tLVxcbm1tL21hZHZpc2UuYz03OTk9c3RhdGljIGludCBtYWR2aXNlX2ZyZWVfc2luZ2xlX3ZtYShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy04MjQtXFx0d2Fsa19vcHMud2Fsa19sb2NrID0gZ2V0X3dhbGtfbG9jayhtYWR2X2JlaGF2aW9yLVxcdTAwM2Vsb2NrX21vZGUpO1xcbm1tL21hZHZpc2UuYzo4MjU6XFx0d2Fsa19wYWdlX3JhbmdlX3ZtYSh2bWEsIHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQsXFxubW0vbWFkdmlzZS5jLTgyNi1cXHRcXHRcXHRcXHUwMDI2d2Fsa19vcHMsIHRsYik7XFxuLS1cXG5tbS9tYWR2aXNlLmM9MTExNT1zdGF0aWMgbG9uZyBtYWR2aXNlX2d1YXJkX2luc3RhbGwoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMTE3My1cXHRcXHRpZiAobWFkdl9iZWhhdmlvci1cXHUwMDNlbG9ja19tb2RlID09IE1BRFZJU0VfVk1BX1JFQURfTE9DSylcXG5tbS9tYWR2aXNlLmM6MTE3NDpcXHRcXHRcXHRlcnIgPSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShtYWR2X2JlaGF2aW9yLVxcdTAwM2V2bWEsXFxubW0vbWFkdmlzZS5jLTExNzUtXFx0XFx0XFx0XFx0XFx0cmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLCBcXHUwMDI2d2Fsa19vcHMsXFxuLS1cXG5tbS9tYWR2aXNlLmM9MTI0Mz1zdGF0aWMgbG9uZyBtYWR2aXNlX2d1YXJkX3JlbW92ZShzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy0xMjYwLVxcbm1tL21hZHZpc2UuYzoxMjYxOlxcdHJldHVybiB3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLFxcbm1tL21hZHZpc2UuYy0xMjYyLVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZ3YWxsa19vcHMsIE5VTEwpO1xcbi0tXFxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzE1LVxcbm1tL3BhZ2V3YWxrLmM6NzE2OmludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9wYWdld2Fsay5jLTcxNy1cXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHZvaWQgKnByaXZhdGUpXFxuLS1cXG5tbS9wYWdld2Fsay5jLTczNS1cXG5tbS9wYWdld2Fsay5jOjczNjppbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9wYWdld2Fsay5jLTczNy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTc0Mi1cXG5tbS9wYWdld2Fsay5jOjc0MzpcXHRyZXR1cm4gd2Fsa19wYWdlX3JhbmdlX3ZtYV91bnNhZmUodm1hLCBzdGFydCwgZW5kLCBvcHMsIHByaXZhdGUpO1xcbm1tL3BhZ2V3YWxrLmMtNzQ0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MzcuNjQ1MTg1MDUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjEwNzcyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lLCByZWFsbHkuIFRoZXkncmUgc3dhcHBpbmcgb3V0IGEgY291cGxlIG9mIGV4aXN0aW5nIHBhZ2Utd2Fsa2luZyBmdW5jdGlvbnMsIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZWAsIGFuZCByZXBsYWNpbmcgdGhlbSB3aXRoIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aXRoaW4gdGhlIGBzbWFwX2dhdGhlcl9zdGF0c2AgY29udGV4dC4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIHdoaWxlIGl0IGxvb2tzIHNpbXBsZSBvbiB0aGUgc3VyZmFjZSwgdGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSBtb2RpZmljYXRpb24gdG8gZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgcm91dGluZXMgbGlrZSB0aGlzIGRlc2VydmVzIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHJlcGxhY2VtZW50LiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCBiZWhhdmVzIGRpZmZlcmVudGx5IGVub3VnaCBmcm9tIHRoZSBvcmlnaW5hbCBmdW5jdGlvbnMgdG8gYWZmZWN0IHRoZSBzdGF0aXN0aWNzIGdhdGhlcmluZywgb3Igd2hldGhlciB0aGlzIGlzIGEgY29ycmVjdGlvbiBvZiBhIHN1YnRsZSBidWcgd2hlcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdhcyBiZWluZyB1c2VkIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQncyB0aGUgKmFjdHVhbCogZGlmZmVyZW5jZSBiZXR3ZWVuIGB3YWxrX3BhZ2Vfdm1hYCBhbmQgYHdhbGtfcGFnZV9yYW5nZV92bWFgPyBMZXQncyBkaXZlIGRlZXBlciBhbmQgaW52ZXN0aWdhdGUgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI0OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjo0My4wNjYyNjc4NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzc2ODY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3YWxrX3BhZ2Vfdm1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2V3YWxrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZXdhbGsuYz01NDM9c3RhdGljIGJvb2wgY2hlY2tfb3BzX3NhZmUoY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMpXFxuLS1cXG5tbS9wYWdld2Fsay5jLTU5My0gKiBMb2NraW5nOlxcbm1tL3BhZ2V3YWxrLmM6NTk0OiAqICAgQ2FsbGVycyBvZiB3YWxrX3BhZ2VfcmFuZ2UoKSBhbmQgd2Fsa19wYWdlX3ZtYSgpIHNob3VsZCBob2xkIEBtbS1cXHUwMDNlbW1hcF9sb2NrLFxcbm1tL3BhZ2V3YWxrLmMtNTk1LSAqICAgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbiB0cmF2ZXJzZSB2bWEgbGlzdCBhbmQvb3IgYWNjZXNzIHRvIHZtYSdzIGRhdGEuXFxuLS1cXG5tbS9wYWdld2Fsay5jPTczNj1pbnQgd2Fsa19wYWdlX3JhbmdlX3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzQ1LVxcbm1tL3BhZ2V3YWxrLmM6NzQ2OmludCB3YWxrX3BhZ2Vfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcXG5tbS9wYWdld2Fsay5jLTc0Ny1cXHRcXHR2b2lkICpwcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjo0My42NzQwNDUxNzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODAwOTk3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzbWFwX2dhdGhlcl9zdGF0cyBTaW1wbGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCdzIHNpbXBsaWZ5aW5nIGBzbWFwX2dhdGhlcl9zdGF0c2AuIFRoZSBrZXkgaXMgdGhlIHNoaWZ0IGZyb20gYnJhbmNoaW5nIGJldHdlZW4gYHdhbGtfcGFnZV92bWFgIGFuZCBgd2Fsa19wYWdlX3JhbmdlYCB0byBqdXN0IHVzaW5nIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYC4gSGFuZyBvbiwgd2Fzbid0IGB3YWxrX3BhZ2Vfdm1hYCBmb3IgdGhlICplbnRpcmUqIFZNQSwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VgIGZvciBhIHNwZWNpZmljIHJhbmdlPyBSaWdodCwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb2RlIGxpa2Ugc286XG5cbmBgYGNcbi1cdGlmICghc3RhcnQpXG4tXHRcdHdhbGtfcGFnZV92bWEodm1hLCBvcHMsIG1zcyk7XG4tXHRlbHNlXG4tXHRcdHdhbGtfcGFnZV9yYW5nZSh2bWEtXHUwMDNldm1fbW0sIHN0YXJ0LCB2bWEtXHUwMDNldm1fZW5kLCBvcHMsIG1zcyk7XG4rXHR3YWxrX3BhZ2VfcmFuZ2Vfdm1hKHZtYSwgc3RhcnQsIGVuZCwgb3BzLCBtc3MpO1xuYGBgXG5cbmFuZCBhbHNvIGFkZGluZyB0aGUgZm9sbG93aW5nOlxuXG5gYGBjXG4rXHR1bnNpZ25lZCBsb25nIGVuZCA9IHZtYS1cdTAwM2V2bV9lbmQ7XG4rXG4rXHRzdGFydCA9IHN0YXJ0ID86IHZtYS1cdTAwM2V2bV9zdGFydDtcbiBcbiBcdC8qIEludmFsaWQgc3RhcnQgKi9cbi1cdGlmIChzdGFydCBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4rXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4gXHRcdHJldHVybjtcbmBgYFxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgZnV6emluZyBpcyBhIGdvb2QgaWRlYS4gYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB0aGUgdGFyZ2V0LCBvYnZpb3VzbHkuIFRoZSByZWxldmFudCBjb25maWcgdG8gZW5hYmxlIGlzIGBQUk9DX1BBR0VfTU9OSVRPUmAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYFBST0NfUEFHRV9NT05JVE9SYCB0aGUgKm9ubHkqIG9uZT8gT2theSwgYENPTkZJR19QUk9DX0ZTYCBpcyBuZWVkZWQgdG9vLCBidXQgdGhhdCdzIHZlcnkgZ2VuZXJpYy4gYFBST0NfUEFHRV9NT05JVE9SYCBpcyB0aGUgbW9yZSBzcGVjaWZpYyBvbmUuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGF0IGBzbWFwX2dhdGhlcl9zdGF0c2AgaXMgZXZlbiByZWFjaGFibGUuIFllcCwgdmlhIHJlYWRpbmcgYC9wcm9jL3BpZC9zbWFwc2Agb3IgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCB0aGF0J3MgZmluZS5cblxuQWxyaWdodCwgZnV6emluZyBgc21hcF9nYXRoZXJfc3RhdHNgIGl0IGlzLiBJJ2xsIG1ha2Ugc3VyZSB0byBwcmlvcml0aXplIHRoYXQuXG5cbkhtbSwgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEJlc3QgdG8gY2hlY2sgYGZzL3Byb2MvS2NvbmZpZ2AgYW5kIGRvdWJsZS1jaGVjaywgbG9va2luZyBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCBqdXN0IGluIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mjc6MjYuNTU0MTUxMTY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTIwNDg2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBST0NfUEFHRV9NT05JVE9SXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL0tjb25maWc9ODM9Y29uZmlnIFBST0NfU1lTQ1RMXFxuLS1cXG5mcy9wcm9jL0tjb25maWctMTAxLVxcbmZzL3Byb2MvS2NvbmZpZzoxMDI6Y29uZmlnIFBST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy9LY29uZmlnLTEwMy0gXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI3OjI2LjkwNjIxNzY1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDg5MDMwMjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHNtYXBfZ2F0aGVyX3N0YXRzYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBkZWZhdWx0IGZvciB0aGlzIHNlZW1zIHRvIGJlIGB5YCBmb3IgYFBST0NfUEFHRV9NT05JVE9SYCwgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEgcG9pbnQgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSB3YXMgbW9kaWZpZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEFscmlnaHQsIGxvb2tzIGxpa2UgYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHdhcyB0b3VjaGVkIGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgLlxuXG5Ob3csIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uIEFoLCByaWdodC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgbWlub3IgcmVmYWN0b3JpbmcgYW5kIGEgZml4LiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBzaGlmdCBmcm9tIHVzaW5nIGVpdGhlciBgd2Fsa19wYWdlX3JhbmdlYCBvciBgd2Fsa19wYWdlX3ZtYWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgc3RhcnRgLCB0byBhbHdheXMgdXNpbmcgYHdhbGtfcGFnZV9yYW5nZV92bWFgLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHdhbGtfcGFnZV9yYW5nZWAgaWYgYHN0YXJ0YCB3YXMgbm9uLXplcm8gYW5kIGB3YWxrX3BhZ2Vfdm1hYCBvdGhlcndpc2UuIFRoZSBjaGFuZ2UgY29uc29saWRhdGVzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24sIGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gIGB3YWxrX3BhZ2VfcmFuZ2VgIHdvdWxkIGxvb2sgdXAgdGhlIFZNQSBhZ2FpbiwgYnV0IGB3YWxrX3BhZ2VfcmFuZ2Vfdm1hYCB0YWtlcyB0aGUgVk1BIGFzIGlucHV0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG9mIGEgY29kZSBjbGVhbnVwIHRoYXQgYWxzbyBjaGFuZ2VzIGJlaGF2aW9yLlxuXG5UaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYHNtYXBfZ2F0aGVyX3N0YXRzYCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSAvcHJvYy9waWQvc21hcHMgYW5kIC9wcm9jL3BpZC9zbWFwc19yb2xsdXAgZW50cmllcy4gIFVzZXJzcGFjZSBjYW4gb2J2aW91c2x5IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cbk9rYXksIHNvIEkgd2lsbCBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgW1wic21hcF9nYXRoZXJfc3RhdHNcIl1gLiBJJ2xsIGFsc28gZW5hYmxlIHRoZSBgUFJPQ19QQUdFX01PTklUT1JgIGNvbmZpZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGBzbWFwX2dhdGhlcl9zdGF0c2AsIGNoYW5naW5nIGhvdyBwYWdlIHRhYmxlcyBhcmUgd2Fsa2VkIGZvciBgL3Byb2MvcGlkL3NtYXBzYCBhbmQgYC9wcm9jL3BpZC9zbWFwc19yb2xsdXBgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIHRoYXQgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTMsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI3OjM1LjM5NTI1Mjg2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTIyNzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWFwX2dhdGhlcl9zdGF0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNtYXBfZ2F0aGVyX3N0YXRzIHRvIHVzZSB3YWxrX3BhZ2VfcmFuZ2Vfdm1hIGluc3RlYWQgb2Ygd2Fsa19wYWdlX3JhbmdlL3dhbGtfcGFnZV92bWEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgcGFnZSB0YWJsZXMgYXJlIHdhbGtlZCBmb3IgL3Byb2MvcGlkL3NtYXBzIGFuZCAvcHJvYy9waWQvc21hcHNfcm9sbHVwLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[1] Phase: Succeeded StartedAt: 2026-07-21 19:27:50 +0000 UTC FinishedAt: 2026-07-21 19:27:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 19:27:51 +0000 UTC FinishedAt: 2026-07-21 19:27:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2] Phase: Succeeded StartedAt: 2026-07-21 19:27:51 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-21 19:27:53 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 19:27:54 +0000 UTC FinishedAt: 2026-07-21 19:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 19:27:54 +0000 UTC FinishedAt: 2026-07-21 19:28:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8nzrb/series-workflow8nzrb-convert-artifact-3598726416/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 19:28:27 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 19:28:27 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +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:*2bf36a30-cf65-4e88-a8b1-83469a727ff0,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-workflow8nzrb/series-workflow8nzrb-convert-artifact-3598726416/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": "1a769e20-6371-4897-992a-d169be330ce8", "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-workflow8nzrb/series-workflow8nzrb-build-action-3442037142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 19:28:28 +0000 UTC FinishedAt: 2026-07-21 20:01:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2bf36a30-cf65-4e88-a8b1-83469a727ff0,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-workflow8nzrb/series-workflow8nzrb-convert-artifact-3598726416/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": "1a769e20-6371-4897-992a-d169be330ce8", "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-workflow8nzrb/series-workflow8nzrb-build-action-3442037142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8nzrb/series-workflow8nzrb-convert-artifact-2100900727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 20:02:33 +0000 UTC FinishedAt: 2026-07-21 20:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 20:02:33 +0000 UTC FinishedAt: 2026-07-21 20:04:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1a769e20-6371-4897-992a-d169be330ce8,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-workflow8nzrb/series-workflow8nzrb-build-action-3442037142/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-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-21 20:04:36 +0000 UTC FinishedAt: 2026-07-21 20:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-21 20:04:36 +0000 UTC FinishedAt: 2026-07-21 20:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-21 20:04:36 +0000 UTC FinishedAt: 2026-07-21 20:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-21 20:04:36 +0000 UTC FinishedAt: 2026-07-21 20:49: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:*2bf36a30-cf65-4e88-a8b1-83469a727ff0,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-workflow8nzrb/series-workflow8nzrb-convert-artifact-2100900727/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": "1ac8f174-f074-40d1-a3c7-8844918396f5", "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-workflow8nzrb/series-workflow8nzrb-build-action-1287783995/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-21 20:04:36 +0000 UTC FinishedAt: 2026-07-21 20:49:33 +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:*2bf36a30-cf65-4e88-a8b1-83469a727ff0,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-workflow8nzrb/series-workflow8nzrb-convert-artifact-2100900727/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": "1ac8f174-f074-40d1-a3c7-8844918396f5", "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-workflow8nzrb/series-workflow8nzrb-build-action-1287783995/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-21 20:49:43 +0000 UTC FinishedAt: 2026-07-21 20:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-21 20:49:43 +0000 UTC FinishedAt: 2026-07-21 20:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-21 20:49:43 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-21 20:49:43 +0000 UTC FinishedAt: 2026-07-21 20:52:29 +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:*1ac8f174-f074-40d1-a3c7-8844918396f5,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-workflow8nzrb/series-workflow8nzrb-build-action-1287783995/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-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*1a769e20-6371-4897-992a-d169be330ce8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ac8f174-f074-40d1-a3c7-8844918396f5,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-workflow8nzrb/series-workflow8nzrb-build-action-3442037142/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-workflow8nzrb/series-workflow8nzrb-build-action-1287783995/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8nzrb/series-workflow8nzrb-convert-artifact-2885207216/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-21 20:52:49 +0000 UTC FinishedAt: 2026-07-21 23:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nzrb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["smap_gather_stats"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["PROC_PAGE_MONITOR"],"series_id":"50ce4c5b-cd37-4576-b641-9f0fe01702a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-21 20:52:49 +0000 UTC FinishedAt: 2026-07-21 23:54:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1a769e20-6371-4897-992a-d169be330ce8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ac8f174-f074-40d1-a3c7-8844918396f5,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-workflow8nzrb/series-workflow8nzrb-build-action-3442037142/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-workflow8nzrb/series-workflow8nzrb-build-action-1287783995/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-workflow8nzrb/series-workflow8nzrb-convert-artifact-2885207216/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,}