Name: series-workflow9hrmv Phase: Succeeded StartedAt: 2026-08-02 06:05:37 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[0] Phase: Succeeded StartedAt: 2026-08-02 06:05:37 +0000 UTC FinishedAt: 2026-08-02 06:33:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 06:05:37 +0000 UTC FinishedAt: 2026-08-02 06:33:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "abb08b35-1063-4ed7-9bfd-e68f08d687a7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bloom_map_alloc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkY2MyMzkyMjI3YmU0YjhhMzk3ZDM2NGY1ZDYyNzAxNzkwYmYzODNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwNjozMzoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xuaW5kZXggYjczMzM2Yzk3NmI3Yy4uOGU2NTMyZmE0MTgyNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbkBAIC05NCw5ICYjNDM7OTQsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4mIzQzO1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4mIzQzO1x0dTY0IGJpdHNldF9ieXRlcywgYWxsb2Nfc2l6ZTtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZWtleV9zaXplICE9IDAgfHwgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbiBcdCAgICBhdHRyLVx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcbkBAIC0xMjcsMjMgJiM0MzsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbiYjNDM7XHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7XG4gXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbi1cdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbiYjNDM7XHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgXHUwMDI2YWxsb2Nfc2l6ZSkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRTJCSUcpO1xuJiM0MztcbiYjNDM7XHRibG9vbSA9IGJwZl9tYXBfYXJlYV9hbGxvYyhhbGxvY19zaXplLCBudW1hX25vZGUpO1xuIFxuIFx0aWYgKCFibG9vbSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkY2MyMzkyMjI3YmU0YjhhMzk3ZDM2NGY1ZDYyNzAxNzkwYmYzODNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNjozMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jCmluZGV4IGI3MzMzNmM5NzZiN2MuLjhlNjUzMmZhNDE4MjYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYwpAQCAtOTQsOSAmIzQzOzk0LDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKQogCiBzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cikKIHsKLQl1MzIgYml0c2V0X2J5dGVzLCBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0czsKJiM0MzsJdTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzOwogCWludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpOwogCXN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTsKJiM0MzsJdTY0IGJpdHNldF9ieXRlcywgYWxsb2Nfc2l6ZTsKIAogCWlmIChhdHRyLSZndDtrZXlfc2l6ZSAhPSAwIHx8IGF0dHItJmd0O3ZhbHVlX3NpemUgPT0gMCB8fAogCSAgICBhdHRyLSZndDttYXhfZW50cmllcyA9PSAwIHx8CkBAIC0xMjcsMjMgJiM0MzsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpCiAJaWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLSZndDttYXhfZW50cmllcywgbnJfaGFzaF9mdW5jcywgJmFtcDtucl9iaXRzKSB8fAogCSAgICBjaGVja19tdWxfb3ZlcmZsb3cobnJfYml0cyAvIDUsICh1MzIpNywgJmFtcDtucl9iaXRzKSB8fAogCSAgICBucl9iaXRzICZndDsgKDFVTCAmbHQ7Jmx0OyAzMSkpIHsKLQkJLyogVGhlIGJpdCBhcnJheSBzaXplIGlzIDJeMzIgYml0cyBidXQgdG8gYXZvaWQgb3ZlcmZsb3dpbmcgdGhlCi0JCSAqIHUzMiwgd2UgdXNlIFUzMl9NQVgsIHdoaWNoIHdpbGwgcm91bmQgdXAgdG8gdGhlIGVxdWl2YWxlbnQKLQkJICogbnVtYmVyIG9mIGJ5dGVzCi0JCSAqLwotCQliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKFUzMl9NQVgpOwogCQliaXRzZXRfbWFzayA9IFUzMl9NQVg7CiAJfSBlbHNlIHsKIAkJaWYgKG5yX2JpdHMgJmx0Oz0gQklUU19QRVJfTE9ORykKIAkJCW5yX2JpdHMgPSBCSVRTX1BFUl9MT05HOwogCQllbHNlCiAJCQlucl9iaXRzID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5yX2JpdHMpOwotCQliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKG5yX2JpdHMpOwogCQliaXRzZXRfbWFzayA9IG5yX2JpdHMgLSAxOwogCX0KIAomIzQzOwliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7CiAJYml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7Ci0JYmxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgJiM0MzsgYml0c2V0X2J5dGVzLCBudW1hX25vZGUpOwomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgJmFtcDthbGxvY19zaXplKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FMkJJRyk7CiYjNDM7CiYjNDM7CWJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKGFsbG9jX3NpemUsIG51bWFfbm9kZSk7CiAKIAlpZiAoIWJsb29tKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBCbG9vbSBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGJsb29tIGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGZpeCwgbm90IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2UuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGJsb29tX21hcF9hbGxvY2AgdG8gdXNlIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYHU2NGAsIGZvciBgYml0c2V0X2J5dGVzYCBhbmQgYGFsbG9jX3NpemVgLiBTbWFydCBtb3ZlLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGVzZSB2YWx1ZXMgdG8gZ2V0IHF1aXRlIGxhcmdlIGluIGEgQlBGIGNvbnRleHQuIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGV5JiMzOTtyZSBub3cgZXhwbGljaXRseSBjaGVja2luZyBmb3Igb3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBzaXplLCB3aGljaCBpcyBjcml0aWNhbC4gVGhleSBhcmUgdXNpbmcgYHNpemVvZigqYmxvb20pYCBwbHVzIGBiaXRzZXRfYnl0ZXNgLCBzbyB0aGUgYWRkaXRpb24gY291bGQgYmUgbm9uLXRyaXZpYWwuCgpUaGUgd2F5IHRoZXkmIzM5O3JlIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgIGhhcyBhbHNvIGNoYW5nZWQuIEluc3RlYWQgb2YgaGFyZGNvZGluZyBhIG1heGltdW0gb3IgcmVseWluZyBvbiB0aGUgbnVtYmVyIG9mIGJpdHMgZGlyZWN0bHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgbm93IGRlcml2aW5nIGl0IGZyb20gYGJpdHNldF9tYXNrYCwgc3BlY2lmaWNhbGx5IHVzaW5nIGBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSlgLiBUaGF0IHNlZW1zIG1vcmUgZmxleGlibGUgYW5kIGxlc3MgcHJvbmUgdG8gZml4ZWQtc2l6ZSBsaW1pdGF0aW9ucy4gVGhhdCBzZWVtcyBiZXR0ZXIuCgpUaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgY29ycmVjdGx5IGhhbmRsaW5nIHBvdGVudGlhbGx5IGxhcmdlIGJpdHNldHMsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBhbmQsIGZyYW5rbHksIHZ1bG5lcmFiaWxpdGllcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkICp0aG9yb3VnaGx5Ki4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB1bmRlciB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIGFuZCBpbnB1dCBzY2VuYXJpb3MsIHRoZSBzaXplIGNhbGN1bGF0aW9ucyBhcmUgYWx3YXlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGludGVnZXIgb3ZlcmZsb3dzLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBibG9vbSBmaWx0ZXIgaW4gdGhlIGtlcm5lbCBzbyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHkuIEkmIzM5O2xsIHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIGZvciBlaXRoZXIgdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uIGl0c2VsZiwgb3IgYGJsb29tX2ZpbHRlci5jYCB3aXRoaW4gdGhlIGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0IE1ha2VmaWxlIG9yIEtjb25maWcgZmlsZSB3aWxsIGJlIG15IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZCBhbmQgd2hpY2ggY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGZvciBhIHByb3BlciBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkV4YW1pbmluZyB0aGUgQlBGIFN5c3RlbSBDYWxsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGtlcm5lbCBjb25maWcgdmFyaWFibGUgaW4gcGxheSBoZXJlIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHdoYXQmIzM5O3Mgb3VyIGN1cnJlbnQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGFyZWE/IFdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIGJlY2F1c2Ugb2YgdGhlIGJsb29tIGZpbHRlciwgYW5kLCBzcGVjaWZpY2FsbHksIEkgYmVsaWV2ZSB3ZSYjMzk7cmUgZXhhbWluaW5nIGBibG9vbV9tYXBfYWxsb2NgLiBMZXQmIzM5O3MgY29uZmlybSBob3cgdGhlIGJsb29tIGZpbHRlciB3aWxsIGJlIGFsbG9jYXRlZC4gVGltZSB0byBjaGVjayBob3cgdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBXaGF0IGRvIHdlIGtub3cgYWJvdXQgdGhpcz8gTGV0JiMzOTtzIHRyYWNlIHRoaXMgZnVuY3Rpb24gbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX21hcF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz03OD1zdGF0aWMgaW50IGJsb29tX21hcF9nZXRfbmV4dF9rZXkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICpuZXh0X2tleSlcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTgzLS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6ODQ6c3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTg1LXtcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk0LVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo5NTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtOTYte1xuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjAzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjA0LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDU6XHQubWFwX2FsbG9jX2NoZWNrID0gYmxvb21fbWFwX2FsbG9jX2NoZWNrLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDY6XHQubWFwX2FsbG9jID0gYmxvb21fbWFwX2FsbG9jLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMDctXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIGBibG9vbV9tYXBfYWxsb2NgIGZvciBCUEYgTWFwIEFsbG9jYXRpb24gVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSB0ZXN0IHRoZSBCUEYgbWFwIGFsbG9jYXRpb24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBibG9vbSBmaWx0ZXIgbWFwLiBUaGUgY29kZSBjYWxscyBgYmxvb21fbWFwX2FsbG9jYCBmcm9tIHRoZSBzeXNjYWxsIHRocm91Z2ggYGJsb29tX2ZpbHRlcl9tYXBfb3BzLm1hcF9hbGxvY2AuIFRoZSB0aGluZyBpcywgc2luY2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd291bGRuJiMzOTt0IGJlIGRpcmVjdGx5IGFjY2Vzc2libGUgYXMgYSBzeW1ib2wgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCwgaXQmIzM5O3MgYW4gQVBJIGVudHJ5IHBvaW50IGZvciBCUEYgbWFwIGFsbG9jYXRpb24gYW5kIGlzIGNhbGxlZCB2aWEgZnVuY3Rpb24gcG9pbnRlciBzbyBpdCBpcyBhIGZvY3VzIHN5bWJvbCBhbmQgaXMgbm90IGlubGluZWQuIEl0JiMzOTtzIG5vdCBpbiB0aGUgZ2xvYmFsIHN5bWJvbCB0YWJsZSwgc28gdGhhdCB3b3VsZG4mIzM5O3Qgd29yay4KCkhvbGQgb24sIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGNhc2UgaGVyZS4gU28sIGBibG9vbV9tYXBfYWxsb2NgIGlzIGEgcGVyZmVjdGx5IHJlYXNvbmFibGUgdGFyZ2V0IGZvciBmb2N1c2luZyB0aGUgZnV6emVyIG9uLiBUaG91Z2gsIEkgZGlkIHF1aWNrbHkgY29uc2lkZXIgYGJwZl9tYXBfYWxsb2NgIG9yIGBtYXBfY3JlYXRlYCBhcyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMsIGJ1dCBgYmxvb21fbWFwX2FsbG9jYCBpcyBpZGVhbCBhcyBpdCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRoZSBgYnBmX21hcF9vcHNgIHN0cnVjdHVyZS4gVGhpcyBlbnN1cmVzIGl0JiMzOTtzIG5vdCBpbmxpbmVkIGFuZCB0aHVzLCBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkga25vdyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBvbmUsIGJ1dCBJIHNob3VsZCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlcnMgdGhhdCBtaWdodCBiZSByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBibG9vbSBmaWx0ZXIgcGF0aC4gQW5kIHRoZW4sIEkgc2hvdWxkIGFsc28gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkxvY2F0aW5nIHRoZSBTeXN0ZW0gQ2FsbCBOdW1iZXIgZm9yIEJQRioqCgpBbHJpZ2h0LCB0aGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcGluZyBpbnRvIG15IGhlYWQgaXM6IHdoZXJlIGV4YWN0bHkgaXMgdGhpcyBgQlBGX1NZU0NBTExgIHRoaW5nIGRlZmluZWQ/IEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGxpa2VseSBhIGNydWNpYWwgY29uc3RhbnQgcmVsYXRlZCB0byB0aGUgQlBGIHN5c3RlbSBjYWxsLiBJIG5lZWQgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyB2YWx1ZS4gSXMgaXQgYSBtYWNybywgYW4gZW51bSB2YWx1ZSwgYSBkZWZpbmVkIGNvbnN0YW50IGluIGEgaGVhZGVyIGZpbGU/IEkgbmVlZCB0aGUgZXhhY3QgbG9jYXRpb24gdG8gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHByb2JhYmx5IGEgc2luZ2xlIGludGVnZXIsIGJ1dCBpdHMgc3BlY2lmaWMgdmFsdWUgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyNy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBwcm9iYWJseSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGF0IGFyZWEuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGZvdW5kYXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBmZWF0dXJlIHRvZ2dsZXMsIG9yIHBlcmhhcHMgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzICpjb25maWd1cmFibGUqIGFuZCBob3cgdGhhdCBjb25maWd1cmFiaWxpdHkgaXMgcHJlc2VudGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxuICAyMTpcdCMgZGVmYXVsdCBmb3Iga2VybmVscyB0aGF0IHdlcmUgY29tcGlsZWQgd2l0aCBCUEYgSklUIHN1cHBvcnQuXG4gIDIyOlx0Y29uZmlnIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcbiAgMjM6XHRcdGJvb2xcbiAgMjQ6XHRcbiAgMjU6XHRtZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgQlBGX1NZU0NBTExcbiAgMjg6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4gIDI5Olx0XHRzZWxlY3QgQlBGXG4gIDMwOlx0XHRzZWxlY3QgSVJRX1dPUktcbiAgMzE6XHRcdHNlbGVjdCBORUVEX1RBU0tTX1JDVVxuICAzMjpcdFx0c2VsZWN0IFRBU0tTX1RSQUNFX1JDVVxuICAzMzpcdFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbiAgMzQ6XHRcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG4gIDM1Olx0XHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbiAgMzY6XHRcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXG4gIDM3Olx0XHRkZWZhdWx0IG5cbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIHRoZSBicGYoKSBzeXN0ZW0gY2FsbCB0aGF0IGFsbG93cyB0byBtYW5pcHVsYXRlIEJQRiBwcm9ncmFtc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzk3CgkJCQkJCQlvdXRwdXQ6IDEwOAoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBCbG9vbSBGaWx0ZXIgTWFwIEFsbG9jYXRpb24gRml4KioKCk9rYXksIHNvIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGp1c3QgZW5hYmxpbmcgYEJQRl9TWVNDQUxMYC4gVGhhdCBzaG91bGQgYmUgdGhlIG9ubHkgY2hhbmdlIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiByZWxhdGlvbiB0byB0aGlzIGZpeC4KClRoaXMgc2VlbXMgaW1wb3J0YW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcsIGRlZmluaXRlbHkuIEZpeGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBCUEYgbWFwIGFsbG9jYXRpb24gcHJvY2VzcyBpcyBhIGJpZyBkZWFsLCBhbmQgaWYgd2UgY2FuIGhpdCBpdCBkdXJpbmcgZnV6emluZyB0aGF0IGlzIGZhbnRhc3RpYy4KCk15IGZvY3VzIHNob3VsZCBiZSBjbGVhcmx5IG9uIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBzeW1ib2wuCgpUaGVyZWZvcmUgbXkgY29uZmlndXJhdGlvbiB3aWxsIHJlbWFpbjoKLSBgQlBGX1NZU0NBTExgCgpUaGlzIGlzIGJlY2F1c2UgdGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpY+KAlHNwZWNpZmljYWxseSwgd2l0aGluIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBhIGNvcmUga2VybmVsIGxvZ2ljIHBhdGggdmlhIHRoZSBCUEYgc3lzY2FsbHMuIFRoZSBmdXp6aW5nIGVmZm9ydHMgKm11c3QqIGNvbmNlbnRyYXRlIG9uIHRoaXMgYGJsb29tX21hcF9hbGxvY2AgdG8gdmFsaWRhdGUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9ucyBhbmQgdGhlIHJvYnVzdCBuYXR1cmUgb2YgdGhlIG92ZXJmbG93IGNoZWNrcy4KCk5vdywgYSBxdWljayBjb25maXJtYXRpb24sIEkmIzM5O2xsIGp1c3QgY2hlY2sgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyBub3QgaW5saW5lZC4gR3JlYXQsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGJsb29tX2ZpbHRlcl9tYXBfb3BzYCwgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBpdCBnaXZlcyBtZSBtb3JlIGNvbnRyb2wuCgpJJiMzOTttIHJlYWR5IHRvIHByb3ZpZGUgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjEzLjc0NDQ5MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTAxMjE3NDU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjEzLjc0NDUwMTMyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MzUwNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGNjMjM5MjIyN2JlNGI4YTM5N2QzNjRmNWQ2MjcwMTc5MGJmMzgzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjMzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXFxuaW5kZXggYjczMzM2Yzk3NmI3Yy4uOGU2NTMyZmE0MTgyNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXFxuKysrIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbkBAIC05NCw5ICs5NCwxMCBAQCBzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiB7XFxuLVxcdHUzMiBiaXRzZXRfYnl0ZXMsIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xcbitcXHR1MzIgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XFxuIFxcdGludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpO1xcbiBcXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XFxuK1xcdHU2NCBiaXRzZXRfYnl0ZXMsIGFsbG9jX3NpemU7XFxuIFxcbiBcXHRpZiAoYXR0ci1cXHUwMDNla2V5X3NpemUgIT0gMCB8fCBhdHRyLVxcdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcXG4gXFx0ICAgIGF0dHItXFx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcXG5AQCAtMTI3LDIzICsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuIFxcdGlmIChjaGVja19tdWxfb3ZlcmZsb3coYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFxcdTAwMjZucl9iaXRzKSB8fFxcbiBcXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFxcdTAwMjZucl9iaXRzKSB8fFxcbiBcXHQgICAgbnJfYml0cyBcXHUwMDNlICgxVUwgXFx1MDAzY1xcdTAwM2MgMzEpKSB7XFxuLVxcdFxcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxcbi1cXHRcXHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XFxuLVxcdFxcdCAqIG51bWJlciBvZiBieXRlc1xcbi1cXHRcXHQgKi9cXG4tXFx0XFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcXG4gXFx0XFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRpZiAobnJfYml0cyBcXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxcbiBcXHRcXHRcXHRucl9iaXRzID0gQklUU19QRVJfTE9ORztcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRucl9iaXRzID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5yX2JpdHMpO1xcbi1cXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKG5yX2JpdHMpO1xcbiBcXHRcXHRiaXRzZXRfbWFzayA9IG5yX2JpdHMgLSAxO1xcbiBcXHR9XFxuIFxcbitcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgKyAxKTtcXG4gXFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XFxuLVxcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICsgYml0c2V0X2J5dGVzLCBudW1hX25vZGUpO1xcbitcXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgXFx1MDAyNmFsbG9jX3NpemUpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRTJCSUcpO1xcbitcXG4rXFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2MoYWxsb2Nfc2l6ZSwgbnVtYV9ub2RlKTtcXG4gXFxuIFxcdGlmICghYmxvb20pXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoxNC4xNjM0MTQ1MDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODU5MzI0MDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRjYzIzOTIyMjdiZTRiOGEzOTdkMzY0ZjVkNjI3MDE3OTBiZjM4M2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjMzOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbmluZGV4IGI3MzMzNmM5NzZiN2MuLjhlNjUzMmZhNDE4MjYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG4rKysgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG5AQCAtOTQsOSArOTQsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4rXHR1MzIgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4gXHRpbnQgbnVtYV9ub2RlID0gYnBmX21hcF9hdHRyX251bWFfbm9kZShhdHRyKTtcbiBcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcbitcdHU2NCBiaXRzZXRfYnl0ZXMsIGFsbG9jX3NpemU7XG4gXG4gXHRpZiAoYXR0ci1cdTAwM2VrZXlfc2l6ZSAhPSAwIHx8IGF0dHItXHUwMDNldmFsdWVfc2l6ZSA9PSAwIHx8XG4gXHQgICAgYXR0ci1cdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8XG5AQCAtMTI3LDIzICsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbitcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpO1xuIFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XG4tXHRibG9vbSA9IGJwZl9tYXBfYXJlYV9hbGxvYyhzaXplb2YoKmJsb29tKSArIGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbitcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHU2NClzaXplb2YoKmJsb29tKSwgYml0c2V0X2J5dGVzLCBcdTAwMjZhbGxvY19zaXplKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUUyQklHKTtcbitcbitcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKGFsbG9jX3NpemUsIG51bWFfbm9kZSk7XG4gXG4gXHRpZiAoIWJsb29tKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjE0LjE2MzQxNTgzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzI2NzE0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQmxvb20gRmlsdGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYmxvb20gZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSBpdCdzIGEgZnVuY3Rpb25hbCBmaXgsIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLiBUaGV5J3ZlIHVwZGF0ZWQgYGJsb29tX21hcF9hbGxvY2AgdG8gdXNlIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYHU2NGAsIGZvciBgYml0c2V0X2J5dGVzYCBhbmQgYGFsbG9jX3NpemVgLiBTbWFydCBtb3ZlLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGVzZSB2YWx1ZXMgdG8gZ2V0IHF1aXRlIGxhcmdlIGluIGEgQlBGIGNvbnRleHQuIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGV5J3JlIG5vdyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBhbGxvY2F0aW9uIHNpemUsIHdoaWNoIGlzIGNyaXRpY2FsLiBUaGV5IGFyZSB1c2luZyBgc2l6ZW9mKCpibG9vbSlgIHBsdXMgYGJpdHNldF9ieXRlc2AsIHNvIHRoZSBhZGRpdGlvbiBjb3VsZCBiZSBub24tdHJpdmlhbC5cblxuVGhlIHdheSB0aGV5J3JlIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgIGhhcyBhbHNvIGNoYW5nZWQuIEluc3RlYWQgb2YgaGFyZGNvZGluZyBhIG1heGltdW0gb3IgcmVseWluZyBvbiB0aGUgbnVtYmVyIG9mIGJpdHMgZGlyZWN0bHksIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBub3cgZGVyaXZpbmcgaXQgZnJvbSBgYml0c2V0X21hc2tgLCBzcGVjaWZpY2FsbHkgdXNpbmcgYEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpYC4gVGhhdCBzZWVtcyBtb3JlIGZsZXhpYmxlIGFuZCBsZXNzIHByb25lIHRvIGZpeGVkLXNpemUgbGltaXRhdGlvbnMuIFRoYXQgc2VlbXMgYmV0dGVyLlxuXG5UaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgY29ycmVjdGx5IGhhbmRsaW5nIHBvdGVudGlhbGx5IGxhcmdlIGJpdHNldHMsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBhbmQsIGZyYW5rbHksIHZ1bG5lcmFiaWxpdGllcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkICp0aG9yb3VnaGx5Ki4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB1bmRlciB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIGFuZCBpbnB1dCBzY2VuYXJpb3MsIHRoZSBzaXplIGNhbGN1bGF0aW9ucyBhcmUgYWx3YXlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGludGVnZXIgb3ZlcmZsb3dzLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGtub3cgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBibG9vbSBmaWx0ZXIgaW4gdGhlIGtlcm5lbCBzbyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHkuIEknbGwgc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGVpdGhlciB0aGUgYGJsb29tX21hcF9hbGxvY2AgZnVuY3Rpb24gaXRzZWxmLCBvciBgYmxvb21fZmlsdGVyLmNgIHdpdGhpbiB0aGUgYGtlcm5lbC9icGYvYCBkaXJlY3RvcnkuIFRoYXQgTWFrZWZpbGUgb3IgS2NvbmZpZyBmaWxlIHdpbGwgYmUgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkIGFuZCB3aGljaCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIGEgcHJvcGVyIGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoxOS41MzYwOTEwOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk4NzcxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxvb21fZmlsdGVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjE5LjY1NTk3Mzg4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODIwMDMwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRXhhbWluaW5nIHRoZSBCUEYgU3lzdGVtIENhbGwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBrZXJuZWwgY29uZmlnIHZhcmlhYmxlIGluIHBsYXkgaGVyZSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gUmlnaHQsIHRoYXQncyB0aGUga2V5LiBOb3csIHdoYXQncyBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXJlYT8gV2UncmUgZGl2aW5nIGludG8gdGhpcyBiZWNhdXNlIG9mIHRoZSBibG9vbSBmaWx0ZXIsIGFuZCwgc3BlY2lmaWNhbGx5LCBJIGJlbGlldmUgd2UncmUgZXhhbWluaW5nIGBibG9vbV9tYXBfYWxsb2NgLiBMZXQncyBjb25maXJtIGhvdyB0aGUgYmxvb20gZmlsdGVyIHdpbGwgYmUgYWxsb2NhdGVkLiBUaW1lIHRvIGNoZWNrIGhvdyB0aGUgYGJsb29tX21hcF9hbGxvY2AgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQuIFdoYXQgZG8gd2Uga25vdyBhYm91dCB0aGlzPyBMZXQncyB0cmFjZSB0aGlzIGZ1bmN0aW9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjIyLjQzNzk4MDk0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ5NzYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTc4PXN0YXRpYyBpbnQgYmxvb21fbWFwX2dldF9uZXh0X2tleShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKm5leHRfa2V5KVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy04My0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo4NDpzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTg1LXtcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtOTQtXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo5NTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk2LXtcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjAzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwNC1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDU6XFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIwNjpcXHQubWFwX2FsbG9jID0gYmxvb21fbWFwX2FsbG9jLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjA3LVxcdC5tYXBfZnJlZSA9IGJsb29tX21hcF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyMi40OTE0ODQwNzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTI2MTQ5NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIGBibG9vbV9tYXBfYWxsb2NgIGZvciBCUEYgTWFwIEFsbG9jYXRpb24gVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgdGVzdCB0aGUgQlBGIG1hcCBhbGxvY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0aGUgYmxvb20gZmlsdGVyIG1hcC4gVGhlIGNvZGUgY2FsbHMgYGJsb29tX21hcF9hbGxvY2AgZnJvbSB0aGUgc3lzY2FsbCB0aHJvdWdoIGBibG9vbV9maWx0ZXJfbWFwX29wcy5tYXBfYWxsb2NgLiBUaGUgdGhpbmcgaXMsIHNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd291bGRuJ3QgYmUgZGlyZWN0bHkgYWNjZXNzaWJsZSBhcyBhIHN5bWJvbCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IHRoZW4gSSByZW1lbWJlcmVkLCBpdCdzIGFuIEFQSSBlbnRyeSBwb2ludCBmb3IgQlBGIG1hcCBhbGxvY2F0aW9uIGFuZCBpcyBjYWxsZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXIgc28gaXQgaXMgYSBmb2N1cyBzeW1ib2wgYW5kIGlzIG5vdCBpbmxpbmVkLiBJdCdzIG5vdCBpbiB0aGUgZ2xvYmFsIHN5bWJvbCB0YWJsZSwgc28gdGhhdCB3b3VsZG4ndCB3b3JrLlxuXG5Ib2xkIG9uLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgKmlmKiB0aGV5J3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGNhc2UgaGVyZS4gU28sIGBibG9vbV9tYXBfYWxsb2NgIGlzIGEgcGVyZmVjdGx5IHJlYXNvbmFibGUgdGFyZ2V0IGZvciBmb2N1c2luZyB0aGUgZnV6emVyIG9uLiBUaG91Z2gsIEkgZGlkIHF1aWNrbHkgY29uc2lkZXIgYGJwZl9tYXBfYWxsb2NgIG9yIGBtYXBfY3JlYXRlYCBhcyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMsIGJ1dCBgYmxvb21fbWFwX2FsbG9jYCBpcyBpZGVhbCBhcyBpdCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRoZSBgYnBmX21hcF9vcHNgIHN0cnVjdHVyZS4gVGhpcyBlbnN1cmVzIGl0J3Mgbm90IGlubGluZWQgYW5kIHRodXMsIGFjY2Vzc2libGUgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBrbm93IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIG9uZSwgYnV0IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVycyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGZvciB0aGlzIHNwZWNpZmljIGJsb29tIGZpbHRlciBwYXRoLiBBbmQgdGhlbiwgSSBzaG91bGQgYWxzbyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyNy42MTc2MzY5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU4Nzk2MDI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyNy45NzY0Mzk2MzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTQ4MDU5MTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqTG9jYXRpbmcgdGhlIFN5c3RlbSBDYWxsIE51bWJlciBmb3IgQlBGKipcblxuQWxyaWdodCwgdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHBpbmcgaW50byBteSBoZWFkIGlzOiB3aGVyZSBleGFjdGx5IGlzIHRoaXMgYEJQRl9TWVNDQUxMYCB0aGluZyBkZWZpbmVkPyBJdCdzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGxpa2VseSBhIGNydWNpYWwgY29uc3RhbnQgcmVsYXRlZCB0byB0aGUgQlBGIHN5c3RlbSBjYWxsLiBJIG5lZWQgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyB2YWx1ZS4gSXMgaXQgYSBtYWNybywgYW4gZW51bSB2YWx1ZSwgYSBkZWZpbmVkIGNvbnN0YW50IGluIGEgaGVhZGVyIGZpbGU/IEkgbmVlZCB0aGUgZXhhY3QgbG9jYXRpb24gdG8gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHByb2JhYmx5IGEgc2luZ2xlIGludGVnZXIsIGJ1dCBpdHMgc3BlY2lmaWMgdmFsdWUgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDY6MzM6MzAuNTI0NTAyMzUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUxNTczMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzozMy4xNzYwODcyNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTU2MzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMjcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcHJvYmFibHkgZGVmaW5lZCBzb21ld2hlcmUgaW4gdGhhdCBhcmVhLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGZvdW5kYXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBmZWF0dXJlIHRvZ2dsZXMsIG9yIHBlcmhhcHMgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0J3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCdzIHNlZSB3aGF0J3MgdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjM3LjM0NzY1NTIxN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxcbiAgMjE6XFx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cXG4gIDIyOlxcdGNvbmZpZyBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXFxuICAyMzpcXHRcXHRib29sXFxuICAyNDpcXHRcXG4gIDI1OlxcdG1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDY6MzM6MzcuMzQ3NzQ5NDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjA4MTM3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQmxvb20gRmlsdGVyIE1hcCBBbGxvY2F0aW9uIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGp1c3QgZW5hYmxpbmcgYEJQRl9TWVNDQUxMYC4gVGhhdCBzaG91bGQgYmUgdGhlIG9ubHkgY2hhbmdlIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkIGluIHJlbGF0aW9uIHRvIHRoaXMgZml4LlxuXG5UaGlzIHNlZW1zIGltcG9ydGFudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nLCBkZWZpbml0ZWx5LiBGaXhpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIG1hcCBhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYSBiaWcgZGVhbCwgYW5kIGlmIHdlIGNhbiBoaXQgaXQgZHVyaW5nIGZ1enppbmcgdGhhdCBpcyBmYW50YXN0aWMuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBjbGVhcmx5IG9uIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBzeW1ib2wuXG5cblRoZXJlZm9yZSBteSBjb25maWd1cmF0aW9uIHdpbGwgcmVtYWluOlxuLSBgQlBGX1NZU0NBTExgXG5cblRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGludGVnZXIgb3ZlcmZsb3cgd2l0aGluIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBhbGxvY2F0aW9uIGxvZ2lj4oCUc3BlY2lmaWNhbGx5LCB3aXRoaW4gdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggYSBjb3JlIGtlcm5lbCBsb2dpYyBwYXRoIHZpYSB0aGUgQlBGIHN5c2NhbGxzLiBUaGUgZnV6emluZyBlZmZvcnRzICptdXN0KiBjb25jZW50cmF0ZSBvbiB0aGlzIGBibG9vbV9tYXBfYWxsb2NgIHRvIHZhbGlkYXRlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbnMgYW5kIHRoZSByb2J1c3QgbmF0dXJlIG9mIHRoZSBvdmVyZmxvdyBjaGVja3MuXG5cbk5vdywgYSBxdWljayBjb25maXJtYXRpb24sIEknbGwganVzdCBjaGVjayB0aGF0IGBibG9vbV9tYXBfYWxsb2NgIGlzIG5vdCBpbmxpbmVkLiBHcmVhdCwgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBibG9vbV9maWx0ZXJfbWFwX29wc2AsIHNvIHRoYXQncyBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBpdCBnaXZlcyBtZSBtb3JlIGNvbnRyb2wuXG5cbkknbSByZWFkeSB0byBwcm92aWRlIHRoZSByZXN1bHRzIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM5NywiT3V0cHV0VG9rZW5zIjoxMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzo0Mi42MDg1OTA1MzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgwNTE0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxvb21fbWFwX2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9hrmv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 06:05:37 +0000 UTC FinishedAt: 2026-08-02 06:33:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "abb08b35-1063-4ed7-9bfd-e68f08d687a7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bloom_map_alloc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkY2MyMzkyMjI3YmU0YjhhMzk3ZDM2NGY1ZDYyNzAxNzkwYmYzODNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwNjozMzoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xuaW5kZXggYjczMzM2Yzk3NmI3Yy4uOGU2NTMyZmE0MTgyNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbkBAIC05NCw5ICYjNDM7OTQsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4mIzQzO1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4mIzQzO1x0dTY0IGJpdHNldF9ieXRlcywgYWxsb2Nfc2l6ZTtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZWtleV9zaXplICE9IDAgfHwgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbiBcdCAgICBhdHRyLVx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcbkBAIC0xMjcsMjMgJiM0MzsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbiYjNDM7XHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7XG4gXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbi1cdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbiYjNDM7XHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgXHUwMDI2YWxsb2Nfc2l6ZSkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRTJCSUcpO1xuJiM0MztcbiYjNDM7XHRibG9vbSA9IGJwZl9tYXBfYXJlYV9hbGxvYyhhbGxvY19zaXplLCBudW1hX25vZGUpO1xuIFxuIFx0aWYgKCFibG9vbSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkY2MyMzkyMjI3YmU0YjhhMzk3ZDM2NGY1ZDYyNzAxNzkwYmYzODNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNjozMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jCmluZGV4IGI3MzMzNmM5NzZiN2MuLjhlNjUzMmZhNDE4MjYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYwpAQCAtOTQsOSAmIzQzOzk0LDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKQogCiBzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cikKIHsKLQl1MzIgYml0c2V0X2J5dGVzLCBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0czsKJiM0MzsJdTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzOwogCWludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpOwogCXN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTsKJiM0MzsJdTY0IGJpdHNldF9ieXRlcywgYWxsb2Nfc2l6ZTsKIAogCWlmIChhdHRyLSZndDtrZXlfc2l6ZSAhPSAwIHx8IGF0dHItJmd0O3ZhbHVlX3NpemUgPT0gMCB8fAogCSAgICBhdHRyLSZndDttYXhfZW50cmllcyA9PSAwIHx8CkBAIC0xMjcsMjMgJiM0MzsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpCiAJaWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLSZndDttYXhfZW50cmllcywgbnJfaGFzaF9mdW5jcywgJmFtcDtucl9iaXRzKSB8fAogCSAgICBjaGVja19tdWxfb3ZlcmZsb3cobnJfYml0cyAvIDUsICh1MzIpNywgJmFtcDtucl9iaXRzKSB8fAogCSAgICBucl9iaXRzICZndDsgKDFVTCAmbHQ7Jmx0OyAzMSkpIHsKLQkJLyogVGhlIGJpdCBhcnJheSBzaXplIGlzIDJeMzIgYml0cyBidXQgdG8gYXZvaWQgb3ZlcmZsb3dpbmcgdGhlCi0JCSAqIHUzMiwgd2UgdXNlIFUzMl9NQVgsIHdoaWNoIHdpbGwgcm91bmQgdXAgdG8gdGhlIGVxdWl2YWxlbnQKLQkJICogbnVtYmVyIG9mIGJ5dGVzCi0JCSAqLwotCQliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKFUzMl9NQVgpOwogCQliaXRzZXRfbWFzayA9IFUzMl9NQVg7CiAJfSBlbHNlIHsKIAkJaWYgKG5yX2JpdHMgJmx0Oz0gQklUU19QRVJfTE9ORykKIAkJCW5yX2JpdHMgPSBCSVRTX1BFUl9MT05HOwogCQllbHNlCiAJCQlucl9iaXRzID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5yX2JpdHMpOwotCQliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKG5yX2JpdHMpOwogCQliaXRzZXRfbWFzayA9IG5yX2JpdHMgLSAxOwogCX0KIAomIzQzOwliaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7CiAJYml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7Ci0JYmxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgJiM0MzsgYml0c2V0X2J5dGVzLCBudW1hX25vZGUpOwomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgJmFtcDthbGxvY19zaXplKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FMkJJRyk7CiYjNDM7CiYjNDM7CWJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKGFsbG9jX3NpemUsIG51bWFfbm9kZSk7CiAKIAlpZiAoIWJsb29tKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBCbG9vbSBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGJsb29tIGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGZpeCwgbm90IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2UuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGJsb29tX21hcF9hbGxvY2AgdG8gdXNlIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYHU2NGAsIGZvciBgYml0c2V0X2J5dGVzYCBhbmQgYGFsbG9jX3NpemVgLiBTbWFydCBtb3ZlLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGVzZSB2YWx1ZXMgdG8gZ2V0IHF1aXRlIGxhcmdlIGluIGEgQlBGIGNvbnRleHQuIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGV5JiMzOTtyZSBub3cgZXhwbGljaXRseSBjaGVja2luZyBmb3Igb3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBzaXplLCB3aGljaCBpcyBjcml0aWNhbC4gVGhleSBhcmUgdXNpbmcgYHNpemVvZigqYmxvb20pYCBwbHVzIGBiaXRzZXRfYnl0ZXNgLCBzbyB0aGUgYWRkaXRpb24gY291bGQgYmUgbm9uLXRyaXZpYWwuCgpUaGUgd2F5IHRoZXkmIzM5O3JlIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgIGhhcyBhbHNvIGNoYW5nZWQuIEluc3RlYWQgb2YgaGFyZGNvZGluZyBhIG1heGltdW0gb3IgcmVseWluZyBvbiB0aGUgbnVtYmVyIG9mIGJpdHMgZGlyZWN0bHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgbm93IGRlcml2aW5nIGl0IGZyb20gYGJpdHNldF9tYXNrYCwgc3BlY2lmaWNhbGx5IHVzaW5nIGBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSlgLiBUaGF0IHNlZW1zIG1vcmUgZmxleGlibGUgYW5kIGxlc3MgcHJvbmUgdG8gZml4ZWQtc2l6ZSBsaW1pdGF0aW9ucy4gVGhhdCBzZWVtcyBiZXR0ZXIuCgpUaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgY29ycmVjdGx5IGhhbmRsaW5nIHBvdGVudGlhbGx5IGxhcmdlIGJpdHNldHMsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBhbmQsIGZyYW5rbHksIHZ1bG5lcmFiaWxpdGllcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkICp0aG9yb3VnaGx5Ki4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB1bmRlciB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIGFuZCBpbnB1dCBzY2VuYXJpb3MsIHRoZSBzaXplIGNhbGN1bGF0aW9ucyBhcmUgYWx3YXlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGludGVnZXIgb3ZlcmZsb3dzLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBibG9vbSBmaWx0ZXIgaW4gdGhlIGtlcm5lbCBzbyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHkuIEkmIzM5O2xsIHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIGZvciBlaXRoZXIgdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uIGl0c2VsZiwgb3IgYGJsb29tX2ZpbHRlci5jYCB3aXRoaW4gdGhlIGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0IE1ha2VmaWxlIG9yIEtjb25maWcgZmlsZSB3aWxsIGJlIG15IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZCBhbmQgd2hpY2ggY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGZvciBhIHByb3BlciBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkV4YW1pbmluZyB0aGUgQlBGIFN5c3RlbSBDYWxsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGtlcm5lbCBjb25maWcgdmFyaWFibGUgaW4gcGxheSBoZXJlIGlzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHdoYXQmIzM5O3Mgb3VyIGN1cnJlbnQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGFyZWE/IFdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIGJlY2F1c2Ugb2YgdGhlIGJsb29tIGZpbHRlciwgYW5kLCBzcGVjaWZpY2FsbHksIEkgYmVsaWV2ZSB3ZSYjMzk7cmUgZXhhbWluaW5nIGBibG9vbV9tYXBfYWxsb2NgLiBMZXQmIzM5O3MgY29uZmlybSBob3cgdGhlIGJsb29tIGZpbHRlciB3aWxsIGJlIGFsbG9jYXRlZC4gVGltZSB0byBjaGVjayBob3cgdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBXaGF0IGRvIHdlIGtub3cgYWJvdXQgdGhpcz8gTGV0JiMzOTtzIHRyYWNlIHRoaXMgZnVuY3Rpb24gbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX21hcF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz03OD1zdGF0aWMgaW50IGJsb29tX21hcF9nZXRfbmV4dF9rZXkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICpuZXh0X2tleSlcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTgzLS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6ODQ6c3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTg1LXtcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk0LVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo5NTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtOTYte1xuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjAzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjA0LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDU6XHQubWFwX2FsbG9jX2NoZWNrID0gYmxvb21fbWFwX2FsbG9jX2NoZWNrLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDY6XHQubWFwX2FsbG9jID0gYmxvb21fbWFwX2FsbG9jLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMDctXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIGBibG9vbV9tYXBfYWxsb2NgIGZvciBCUEYgTWFwIEFsbG9jYXRpb24gVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSB0ZXN0IHRoZSBCUEYgbWFwIGFsbG9jYXRpb24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBibG9vbSBmaWx0ZXIgbWFwLiBUaGUgY29kZSBjYWxscyBgYmxvb21fbWFwX2FsbG9jYCBmcm9tIHRoZSBzeXNjYWxsIHRocm91Z2ggYGJsb29tX2ZpbHRlcl9tYXBfb3BzLm1hcF9hbGxvY2AuIFRoZSB0aGluZyBpcywgc2luY2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd291bGRuJiMzOTt0IGJlIGRpcmVjdGx5IGFjY2Vzc2libGUgYXMgYSBzeW1ib2wgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCwgaXQmIzM5O3MgYW4gQVBJIGVudHJ5IHBvaW50IGZvciBCUEYgbWFwIGFsbG9jYXRpb24gYW5kIGlzIGNhbGxlZCB2aWEgZnVuY3Rpb24gcG9pbnRlciBzbyBpdCBpcyBhIGZvY3VzIHN5bWJvbCBhbmQgaXMgbm90IGlubGluZWQuIEl0JiMzOTtzIG5vdCBpbiB0aGUgZ2xvYmFsIHN5bWJvbCB0YWJsZSwgc28gdGhhdCB3b3VsZG4mIzM5O3Qgd29yay4KCkhvbGQgb24sIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGNhc2UgaGVyZS4gU28sIGBibG9vbV9tYXBfYWxsb2NgIGlzIGEgcGVyZmVjdGx5IHJlYXNvbmFibGUgdGFyZ2V0IGZvciBmb2N1c2luZyB0aGUgZnV6emVyIG9uLiBUaG91Z2gsIEkgZGlkIHF1aWNrbHkgY29uc2lkZXIgYGJwZl9tYXBfYWxsb2NgIG9yIGBtYXBfY3JlYXRlYCBhcyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMsIGJ1dCBgYmxvb21fbWFwX2FsbG9jYCBpcyBpZGVhbCBhcyBpdCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRoZSBgYnBmX21hcF9vcHNgIHN0cnVjdHVyZS4gVGhpcyBlbnN1cmVzIGl0JiMzOTtzIG5vdCBpbmxpbmVkIGFuZCB0aHVzLCBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkga25vdyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBvbmUsIGJ1dCBJIHNob3VsZCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlcnMgdGhhdCBtaWdodCBiZSByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBibG9vbSBmaWx0ZXIgcGF0aC4gQW5kIHRoZW4sIEkgc2hvdWxkIGFsc28gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkxvY2F0aW5nIHRoZSBTeXN0ZW0gQ2FsbCBOdW1iZXIgZm9yIEJQRioqCgpBbHJpZ2h0LCB0aGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcGluZyBpbnRvIG15IGhlYWQgaXM6IHdoZXJlIGV4YWN0bHkgaXMgdGhpcyBgQlBGX1NZU0NBTExgIHRoaW5nIGRlZmluZWQ/IEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGxpa2VseSBhIGNydWNpYWwgY29uc3RhbnQgcmVsYXRlZCB0byB0aGUgQlBGIHN5c3RlbSBjYWxsLiBJIG5lZWQgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyB2YWx1ZS4gSXMgaXQgYSBtYWNybywgYW4gZW51bSB2YWx1ZSwgYSBkZWZpbmVkIGNvbnN0YW50IGluIGEgaGVhZGVyIGZpbGU/IEkgbmVlZCB0aGUgZXhhY3QgbG9jYXRpb24gdG8gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHByb2JhYmx5IGEgc2luZ2xlIGludGVnZXIsIGJ1dCBpdHMgc3BlY2lmaWMgdmFsdWUgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyNy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBwcm9iYWJseSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGF0IGFyZWEuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGZvdW5kYXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBmZWF0dXJlIHRvZ2dsZXMsIG9yIHBlcmhhcHMgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzICpjb25maWd1cmFibGUqIGFuZCBob3cgdGhhdCBjb25maWd1cmFiaWxpdHkgaXMgcHJlc2VudGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxuICAyMTpcdCMgZGVmYXVsdCBmb3Iga2VybmVscyB0aGF0IHdlcmUgY29tcGlsZWQgd2l0aCBCUEYgSklUIHN1cHBvcnQuXG4gIDIyOlx0Y29uZmlnIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcbiAgMjM6XHRcdGJvb2xcbiAgMjQ6XHRcbiAgMjU6XHRtZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgQlBGX1NZU0NBTExcbiAgMjg6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4gIDI5Olx0XHRzZWxlY3QgQlBGXG4gIDMwOlx0XHRzZWxlY3QgSVJRX1dPUktcbiAgMzE6XHRcdHNlbGVjdCBORUVEX1RBU0tTX1JDVVxuICAzMjpcdFx0c2VsZWN0IFRBU0tTX1RSQUNFX1JDVVxuICAzMzpcdFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbiAgMzQ6XHRcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG4gIDM1Olx0XHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbiAgMzY6XHRcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXG4gIDM3Olx0XHRkZWZhdWx0IG5cbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIHRoZSBicGYoKSBzeXN0ZW0gY2FsbCB0aGF0IGFsbG93cyB0byBtYW5pcHVsYXRlIEJQRiBwcm9ncmFtc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzk3CgkJCQkJCQlvdXRwdXQ6IDEwOAoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBCbG9vbSBGaWx0ZXIgTWFwIEFsbG9jYXRpb24gRml4KioKCk9rYXksIHNvIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGp1c3QgZW5hYmxpbmcgYEJQRl9TWVNDQUxMYC4gVGhhdCBzaG91bGQgYmUgdGhlIG9ubHkgY2hhbmdlIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiByZWxhdGlvbiB0byB0aGlzIGZpeC4KClRoaXMgc2VlbXMgaW1wb3J0YW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcsIGRlZmluaXRlbHkuIEZpeGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBCUEYgbWFwIGFsbG9jYXRpb24gcHJvY2VzcyBpcyBhIGJpZyBkZWFsLCBhbmQgaWYgd2UgY2FuIGhpdCBpdCBkdXJpbmcgZnV6emluZyB0aGF0IGlzIGZhbnRhc3RpYy4KCk15IGZvY3VzIHNob3VsZCBiZSBjbGVhcmx5IG9uIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBzeW1ib2wuCgpUaGVyZWZvcmUgbXkgY29uZmlndXJhdGlvbiB3aWxsIHJlbWFpbjoKLSBgQlBGX1NZU0NBTExgCgpUaGlzIGlzIGJlY2F1c2UgdGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpY+KAlHNwZWNpZmljYWxseSwgd2l0aGluIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBhIGNvcmUga2VybmVsIGxvZ2ljIHBhdGggdmlhIHRoZSBCUEYgc3lzY2FsbHMuIFRoZSBmdXp6aW5nIGVmZm9ydHMgKm11c3QqIGNvbmNlbnRyYXRlIG9uIHRoaXMgYGJsb29tX21hcF9hbGxvY2AgdG8gdmFsaWRhdGUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9ucyBhbmQgdGhlIHJvYnVzdCBuYXR1cmUgb2YgdGhlIG92ZXJmbG93IGNoZWNrcy4KCk5vdywgYSBxdWljayBjb25maXJtYXRpb24sIEkmIzM5O2xsIGp1c3QgY2hlY2sgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyBub3QgaW5saW5lZC4gR3JlYXQsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGJsb29tX2ZpbHRlcl9tYXBfb3BzYCwgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBpdCBnaXZlcyBtZSBtb3JlIGNvbnRyb2wuCgpJJiMzOTttIHJlYWR5IHRvIHByb3ZpZGUgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjEzLjc0NDQ5MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTAxMjE3NDU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjEzLjc0NDUwMTMyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MzUwNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGNjMjM5MjIyN2JlNGI4YTM5N2QzNjRmNWQ2MjcwMTc5MGJmMzgzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjMzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXFxuaW5kZXggYjczMzM2Yzk3NmI3Yy4uOGU2NTMyZmE0MTgyNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXFxuKysrIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbkBAIC05NCw5ICs5NCwxMCBAQCBzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiB7XFxuLVxcdHUzMiBiaXRzZXRfYnl0ZXMsIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xcbitcXHR1MzIgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XFxuIFxcdGludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpO1xcbiBcXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XFxuK1xcdHU2NCBiaXRzZXRfYnl0ZXMsIGFsbG9jX3NpemU7XFxuIFxcbiBcXHRpZiAoYXR0ci1cXHUwMDNla2V5X3NpemUgIT0gMCB8fCBhdHRyLVxcdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcXG4gXFx0ICAgIGF0dHItXFx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcXG5AQCAtMTI3LDIzICsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuIFxcdGlmIChjaGVja19tdWxfb3ZlcmZsb3coYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFxcdTAwMjZucl9iaXRzKSB8fFxcbiBcXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFxcdTAwMjZucl9iaXRzKSB8fFxcbiBcXHQgICAgbnJfYml0cyBcXHUwMDNlICgxVUwgXFx1MDAzY1xcdTAwM2MgMzEpKSB7XFxuLVxcdFxcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxcbi1cXHRcXHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XFxuLVxcdFxcdCAqIG51bWJlciBvZiBieXRlc1xcbi1cXHRcXHQgKi9cXG4tXFx0XFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcXG4gXFx0XFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRpZiAobnJfYml0cyBcXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxcbiBcXHRcXHRcXHRucl9iaXRzID0gQklUU19QRVJfTE9ORztcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRucl9iaXRzID0gcm91bmR1cF9wb3dfb2ZfdHdvKG5yX2JpdHMpO1xcbi1cXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKG5yX2JpdHMpO1xcbiBcXHRcXHRiaXRzZXRfbWFzayA9IG5yX2JpdHMgLSAxO1xcbiBcXHR9XFxuIFxcbitcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgKyAxKTtcXG4gXFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XFxuLVxcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICsgYml0c2V0X2J5dGVzLCBudW1hX25vZGUpO1xcbitcXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KCh1NjQpc2l6ZW9mKCpibG9vbSksIGJpdHNldF9ieXRlcywgXFx1MDAyNmFsbG9jX3NpemUpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRTJCSUcpO1xcbitcXG4rXFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2MoYWxsb2Nfc2l6ZSwgbnVtYV9ub2RlKTtcXG4gXFxuIFxcdGlmICghYmxvb20pXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoxNC4xNjM0MTQ1MDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODU5MzI0MDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRjYzIzOTIyMjdiZTRiOGEzOTdkMzY0ZjVkNjI3MDE3OTBiZjM4M2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjMzOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbmluZGV4IGI3MzMzNmM5NzZiN2MuLjhlNjUzMmZhNDE4MjYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG4rKysgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG5AQCAtOTQsOSArOTQsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4rXHR1MzIgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4gXHRpbnQgbnVtYV9ub2RlID0gYnBmX21hcF9hdHRyX251bWFfbm9kZShhdHRyKTtcbiBcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcbitcdHU2NCBiaXRzZXRfYnl0ZXMsIGFsbG9jX3NpemU7XG4gXG4gXHRpZiAoYXR0ci1cdTAwM2VrZXlfc2l6ZSAhPSAwIHx8IGF0dHItXHUwMDNldmFsdWVfc2l6ZSA9PSAwIHx8XG4gXHQgICAgYXR0ci1cdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8XG5AQCAtMTI3LDIzICsxMjgsMjEgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbitcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpO1xuIFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XG4tXHRibG9vbSA9IGJwZl9tYXBfYXJlYV9hbGxvYyhzaXplb2YoKmJsb29tKSArIGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbitcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHU2NClzaXplb2YoKmJsb29tKSwgYml0c2V0X2J5dGVzLCBcdTAwMjZhbGxvY19zaXplKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUUyQklHKTtcbitcbitcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKGFsbG9jX3NpemUsIG51bWFfbm9kZSk7XG4gXG4gXHRpZiAoIWJsb29tKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjE0LjE2MzQxNTgzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzI2NzE0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQmxvb20gRmlsdGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYmxvb20gZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSBpdCdzIGEgZnVuY3Rpb25hbCBmaXgsIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLiBUaGV5J3ZlIHVwZGF0ZWQgYGJsb29tX21hcF9hbGxvY2AgdG8gdXNlIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYHU2NGAsIGZvciBgYml0c2V0X2J5dGVzYCBhbmQgYGFsbG9jX3NpemVgLiBTbWFydCBtb3ZlLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciB0aGVzZSB2YWx1ZXMgdG8gZ2V0IHF1aXRlIGxhcmdlIGluIGEgQlBGIGNvbnRleHQuIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGV5J3JlIG5vdyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBhbGxvY2F0aW9uIHNpemUsIHdoaWNoIGlzIGNyaXRpY2FsLiBUaGV5IGFyZSB1c2luZyBgc2l6ZW9mKCpibG9vbSlgIHBsdXMgYGJpdHNldF9ieXRlc2AsIHNvIHRoZSBhZGRpdGlvbiBjb3VsZCBiZSBub24tdHJpdmlhbC5cblxuVGhlIHdheSB0aGV5J3JlIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgIGhhcyBhbHNvIGNoYW5nZWQuIEluc3RlYWQgb2YgaGFyZGNvZGluZyBhIG1heGltdW0gb3IgcmVseWluZyBvbiB0aGUgbnVtYmVyIG9mIGJpdHMgZGlyZWN0bHksIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBub3cgZGVyaXZpbmcgaXQgZnJvbSBgYml0c2V0X21hc2tgLCBzcGVjaWZpY2FsbHkgdXNpbmcgYEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpYC4gVGhhdCBzZWVtcyBtb3JlIGZsZXhpYmxlIGFuZCBsZXNzIHByb25lIHRvIGZpeGVkLXNpemUgbGltaXRhdGlvbnMuIFRoYXQgc2VlbXMgYmV0dGVyLlxuXG5UaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgY29ycmVjdGx5IGhhbmRsaW5nIHBvdGVudGlhbGx5IGxhcmdlIGJpdHNldHMsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBhbmQsIGZyYW5rbHksIHZ1bG5lcmFiaWxpdGllcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkICp0aG9yb3VnaGx5Ki4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB1bmRlciB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIGFuZCBpbnB1dCBzY2VuYXJpb3MsIHRoZSBzaXplIGNhbGN1bGF0aW9ucyBhcmUgYWx3YXlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGludGVnZXIgb3ZlcmZsb3dzLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGtub3cgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBibG9vbSBmaWx0ZXIgaW4gdGhlIGtlcm5lbCBzbyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHkuIEknbGwgc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGVpdGhlciB0aGUgYGJsb29tX21hcF9hbGxvY2AgZnVuY3Rpb24gaXRzZWxmLCBvciBgYmxvb21fZmlsdGVyLmNgIHdpdGhpbiB0aGUgYGtlcm5lbC9icGYvYCBkaXJlY3RvcnkuIFRoYXQgTWFrZWZpbGUgb3IgS2NvbmZpZyBmaWxlIHdpbGwgYmUgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkIGFuZCB3aGljaCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIGEgcHJvcGVyIGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoxOS41MzYwOTEwOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk4NzcxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxvb21fZmlsdGVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjE5LjY1NTk3Mzg4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODIwMDMwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRXhhbWluaW5nIHRoZSBCUEYgU3lzdGVtIENhbGwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBrZXJuZWwgY29uZmlnIHZhcmlhYmxlIGluIHBsYXkgaGVyZSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gUmlnaHQsIHRoYXQncyB0aGUga2V5LiBOb3csIHdoYXQncyBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXJlYT8gV2UncmUgZGl2aW5nIGludG8gdGhpcyBiZWNhdXNlIG9mIHRoZSBibG9vbSBmaWx0ZXIsIGFuZCwgc3BlY2lmaWNhbGx5LCBJIGJlbGlldmUgd2UncmUgZXhhbWluaW5nIGBibG9vbV9tYXBfYWxsb2NgLiBMZXQncyBjb25maXJtIGhvdyB0aGUgYmxvb20gZmlsdGVyIHdpbGwgYmUgYWxsb2NhdGVkLiBUaW1lIHRvIGNoZWNrIGhvdyB0aGUgYGJsb29tX21hcF9hbGxvY2AgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQuIFdoYXQgZG8gd2Uga25vdyBhYm91dCB0aGlzPyBMZXQncyB0cmFjZSB0aGlzIGZ1bmN0aW9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjIyLjQzNzk4MDk0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ5NzYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTc4PXN0YXRpYyBpbnQgYmxvb21fbWFwX2dldF9uZXh0X2tleShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKm5leHRfa2V5KVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy04My0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo4NDpzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTg1LXtcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtOTQtXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzo5NTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk2LXtcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjAzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwNC1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMDU6XFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIwNjpcXHQubWFwX2FsbG9jID0gYmxvb21fbWFwX2FsbG9jLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjA3LVxcdC5tYXBfZnJlZSA9IGJsb29tX21hcF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyMi40OTE0ODQwNzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTI2MTQ5NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIGBibG9vbV9tYXBfYWxsb2NgIGZvciBCUEYgTWFwIEFsbG9jYXRpb24gVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgdGVzdCB0aGUgQlBGIG1hcCBhbGxvY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0aGUgYmxvb20gZmlsdGVyIG1hcC4gVGhlIGNvZGUgY2FsbHMgYGJsb29tX21hcF9hbGxvY2AgZnJvbSB0aGUgc3lzY2FsbCB0aHJvdWdoIGBibG9vbV9maWx0ZXJfbWFwX29wcy5tYXBfYWxsb2NgLiBUaGUgdGhpbmcgaXMsIHNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd291bGRuJ3QgYmUgZGlyZWN0bHkgYWNjZXNzaWJsZSBhcyBhIHN5bWJvbCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gQnV0IHRoZW4gSSByZW1lbWJlcmVkLCBpdCdzIGFuIEFQSSBlbnRyeSBwb2ludCBmb3IgQlBGIG1hcCBhbGxvY2F0aW9uIGFuZCBpcyBjYWxsZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXIgc28gaXQgaXMgYSBmb2N1cyBzeW1ib2wgYW5kIGlzIG5vdCBpbmxpbmVkLiBJdCdzIG5vdCBpbiB0aGUgZ2xvYmFsIHN5bWJvbCB0YWJsZSwgc28gdGhhdCB3b3VsZG4ndCB3b3JrLlxuXG5Ib2xkIG9uLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgKmlmKiB0aGV5J3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGNhc2UgaGVyZS4gU28sIGBibG9vbV9tYXBfYWxsb2NgIGlzIGEgcGVyZmVjdGx5IHJlYXNvbmFibGUgdGFyZ2V0IGZvciBmb2N1c2luZyB0aGUgZnV6emVyIG9uLiBUaG91Z2gsIEkgZGlkIHF1aWNrbHkgY29uc2lkZXIgYGJwZl9tYXBfYWxsb2NgIG9yIGBtYXBfY3JlYXRlYCBhcyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMsIGJ1dCBgYmxvb21fbWFwX2FsbG9jYCBpcyBpZGVhbCBhcyBpdCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRoZSBgYnBmX21hcF9vcHNgIHN0cnVjdHVyZS4gVGhpcyBlbnN1cmVzIGl0J3Mgbm90IGlubGluZWQgYW5kIHRodXMsIGFjY2Vzc2libGUgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBrbm93IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIG9uZSwgYnV0IEkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVycyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGZvciB0aGlzIHNwZWNpZmljIGJsb29tIGZpbHRlciBwYXRoLiBBbmQgdGhlbiwgSSBzaG91bGQgYWxzbyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyNy42MTc2MzY5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU4Nzk2MDI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzoyNy45NzY0Mzk2MzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTQ4MDU5MTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqTG9jYXRpbmcgdGhlIFN5c3RlbSBDYWxsIE51bWJlciBmb3IgQlBGKipcblxuQWxyaWdodCwgdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHBpbmcgaW50byBteSBoZWFkIGlzOiB3aGVyZSBleGFjdGx5IGlzIHRoaXMgYEJQRl9TWVNDQUxMYCB0aGluZyBkZWZpbmVkPyBJdCdzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGxpa2VseSBhIGNydWNpYWwgY29uc3RhbnQgcmVsYXRlZCB0byB0aGUgQlBGIHN5c3RlbSBjYWxsLiBJIG5lZWQgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyB2YWx1ZS4gSXMgaXQgYSBtYWNybywgYW4gZW51bSB2YWx1ZSwgYSBkZWZpbmVkIGNvbnN0YW50IGluIGEgaGVhZGVyIGZpbGU/IEkgbmVlZCB0aGUgZXhhY3QgbG9jYXRpb24gdG8gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHByb2JhYmx5IGEgc2luZ2xlIGludGVnZXIsIGJ1dCBpdHMgc3BlY2lmaWMgdmFsdWUgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDY6MzM6MzAuNTI0NTAyMzUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUxNTczMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzozMy4xNzYwODcyNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTU2MzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMjcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcHJvYmFibHkgZGVmaW5lZCBzb21ld2hlcmUgaW4gdGhhdCBhcmVhLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGZvdW5kYXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBmZWF0dXJlIHRvZ2dsZXMsIG9yIHBlcmhhcHMgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0J3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCdzIHNlZSB3aGF0J3MgdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjMzOjM3LjM0NzY1NTIxN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxcbiAgMjE6XFx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cXG4gIDIyOlxcdGNvbmZpZyBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXFxuICAyMzpcXHRcXHRib29sXFxuICAyNDpcXHRcXG4gIDI1OlxcdG1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDY6MzM6MzcuMzQ3NzQ5NDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjA4MTM3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQmxvb20gRmlsdGVyIE1hcCBBbGxvY2F0aW9uIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGp1c3QgZW5hYmxpbmcgYEJQRl9TWVNDQUxMYC4gVGhhdCBzaG91bGQgYmUgdGhlIG9ubHkgY2hhbmdlIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkIGluIHJlbGF0aW9uIHRvIHRoaXMgZml4LlxuXG5UaGlzIHNlZW1zIGltcG9ydGFudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nLCBkZWZpbml0ZWx5LiBGaXhpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIG1hcCBhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYSBiaWcgZGVhbCwgYW5kIGlmIHdlIGNhbiBoaXQgaXQgZHVyaW5nIGZ1enppbmcgdGhhdCBpcyBmYW50YXN0aWMuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBjbGVhcmx5IG9uIHRoZSBgYmxvb21fbWFwX2FsbG9jYCBzeW1ib2wuXG5cblRoZXJlZm9yZSBteSBjb25maWd1cmF0aW9uIHdpbGwgcmVtYWluOlxuLSBgQlBGX1NZU0NBTExgXG5cblRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGludGVnZXIgb3ZlcmZsb3cgd2l0aGluIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBhbGxvY2F0aW9uIGxvZ2lj4oCUc3BlY2lmaWNhbGx5LCB3aXRoaW4gdGhlIGBibG9vbV9tYXBfYWxsb2NgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggYSBjb3JlIGtlcm5lbCBsb2dpYyBwYXRoIHZpYSB0aGUgQlBGIHN5c2NhbGxzLiBUaGUgZnV6emluZyBlZmZvcnRzICptdXN0KiBjb25jZW50cmF0ZSBvbiB0aGlzIGBibG9vbV9tYXBfYWxsb2NgIHRvIHZhbGlkYXRlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbnMgYW5kIHRoZSByb2J1c3QgbmF0dXJlIG9mIHRoZSBvdmVyZmxvdyBjaGVja3MuXG5cbk5vdywgYSBxdWljayBjb25maXJtYXRpb24sIEknbGwganVzdCBjaGVjayB0aGF0IGBibG9vbV9tYXBfYWxsb2NgIGlzIG5vdCBpbmxpbmVkLiBHcmVhdCwgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBibG9vbV9maWx0ZXJfbWFwX29wc2AsIHNvIHRoYXQncyBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBpdCBnaXZlcyBtZSBtb3JlIGNvbnRyb2wuXG5cbkknbSByZWFkeSB0byBwcm92aWRlIHRoZSByZXN1bHRzIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM5NywiT3V0cHV0VG9rZW5zIjoxMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjozMzo0Mi42MDg1OTA1MzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgwNTE0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxvb21fbWFwX2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgYWxsb2NhdGlvbiBsb2dpYyAoYGJsb29tX21hcF9hbGxvY2ApLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIHN5c2NhbGwpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgYmxvb21fbWFwX2FsbG9jYCB0byBlbnN1cmUgdGhlIG5ldyBzaXplIGNhbGN1bGF0aW9uIGFuZCBvdmVyZmxvdyBjaGVja3MgYXJlIHJvYnVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGFsbG9jYXRpb24gbG9naWMgKGBibG9vbV9tYXBfYWxsb2NgKS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBzeXNjYWxsKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGJsb29tX21hcF9hbGxvY2AgdG8gZW5zdXJlIHRoZSBuZXcgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9hrmv[1] Phase: Succeeded StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 06:33:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 06:33:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2] Phase: Succeeded StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 06:34:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 06:33:54 +0000 UTC FinishedAt: 2026-08-02 06:34:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9hrmv/series-workflow9hrmv-convert-artifact-2627571119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 06:34:04 +0000 UTC FinishedAt: 2026-08-02 06:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 06:34:04 +0000 UTC FinishedAt: 2026-08-02 06:54:15 +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:*8420cbf8-db3d-45f0-8eb1-d92257a5a98e,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-workflow9hrmv/series-workflow9hrmv-convert-artifact-2627571119/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": "14ec065f-c973-428e-8bd3-a686fda0e8a3", "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-workflow9hrmv/series-workflow9hrmv-build-action-1053496181/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 06:34:04 +0000 UTC FinishedAt: 2026-08-02 06:54:05 +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:*8420cbf8-db3d-45f0-8eb1-d92257a5a98e,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-workflow9hrmv/series-workflow9hrmv-convert-artifact-2627571119/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": "14ec065f-c973-428e-8bd3-a686fda0e8a3", "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-workflow9hrmv/series-workflow9hrmv-build-action-1053496181/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 06:54:15 +0000 UTC FinishedAt: 2026-08-02 06:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 06:54:15 +0000 UTC FinishedAt: 2026-08-02 06:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 06:54:15 +0000 UTC FinishedAt: 2026-08-02 06:54:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 06:54:15 +0000 UTC FinishedAt: 2026-08-02 06:54:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9hrmv/series-workflow9hrmv-convert-artifact-4194258430/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 06:54:25 +0000 UTC FinishedAt: 2026-08-02 06:56:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 06:54:25 +0000 UTC FinishedAt: 2026-08-02 06:56:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14ec065f-c973-428e-8bd3-a686fda0e8a3,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-workflow9hrmv/series-workflow9hrmv-build-action-1053496181/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-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 06:56:28 +0000 UTC FinishedAt: 2026-08-02 06:56:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 06:56:28 +0000 UTC FinishedAt: 2026-08-02 06:56:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 06:56:28 +0000 UTC FinishedAt: 2026-08-02 07:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 06:56:28 +0000 UTC FinishedAt: 2026-08-02 07:22:46 +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:*8420cbf8-db3d-45f0-8eb1-d92257a5a98e,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-workflow9hrmv/series-workflow9hrmv-convert-artifact-4194258430/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": "677872c3-a4ba-4f70-ada4-8d046cc13892", "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-workflow9hrmv/series-workflow9hrmv-build-action-2994084434/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 06:56:28 +0000 UTC FinishedAt: 2026-08-02 07:22:11 +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:*8420cbf8-db3d-45f0-8eb1-d92257a5a98e,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-workflow9hrmv/series-workflow9hrmv-convert-artifact-4194258430/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": "677872c3-a4ba-4f70-ada4-8d046cc13892", "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-workflow9hrmv/series-workflow9hrmv-build-action-2994084434/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 07:22:46 +0000 UTC FinishedAt: 2026-08-02 07:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 07:22:46 +0000 UTC FinishedAt: 2026-08-02 07:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 07:22:46 +0000 UTC FinishedAt: 2026-08-02 07:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 07:22:46 +0000 UTC FinishedAt: 2026-08-02 07:24:22 +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:*677872c3-a4ba-4f70-ada4-8d046cc13892,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-workflow9hrmv/series-workflow9hrmv-build-action-2994084434/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-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*14ec065f-c973-428e-8bd3-a686fda0e8a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*677872c3-a4ba-4f70-ada4-8d046cc13892,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-workflow9hrmv/series-workflow9hrmv-build-action-1053496181/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-workflow9hrmv/series-workflow9hrmv-build-action-2994084434/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 07:24:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 07:24:39 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9hrmv/series-workflow9hrmv-convert-artifact-444360451/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 07:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 07:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 07:24:32 +0000 UTC FinishedAt: 2026-08-02 07:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 07:24:42 +0000 UTC FinishedAt: 2026-08-02 10:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hrmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"abb08b35-1063-4ed7-9bfd-e68f08d687a7","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 07:24:42 +0000 UTC FinishedAt: 2026-08-02 10:27:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14ec065f-c973-428e-8bd3-a686fda0e8a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*677872c3-a4ba-4f70-ada4-8d046cc13892,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-workflow9hrmv/series-workflow9hrmv-build-action-1053496181/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-workflow9hrmv/series-workflow9hrmv-build-action-2994084434/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-workflow9hrmv/series-workflow9hrmv-convert-artifact-444360451/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,}