Name: series-workflow9m7pd Phase: Succeeded StartedAt: 2026-07-09 06:19:08 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[0] Phase: Succeeded StartedAt: 2026-07-09 06:19:08 +0000 UTC FinishedAt: 2026-07-09 06:39:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 06:19:08 +0000 UTC FinishedAt: 2026-07-09 06:39:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "86cd6126-688d-429b-8a8c-efd61543b30c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgU0lPQ0lOUSAoRklPTlJFQUQpIGlvY3RsIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBhIEJQRiBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIEl0IG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBubyB2ZXJkaWN0IHByb2dyYW0gaXMgYXR0YWNoZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsvQlBGIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1YWE1ZjdlYjhiNDQ3MjQyYzA3YmU2NWJiNGVhNzk1OGUyMGEzOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDA2OjM4OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLjhlOTA1YjUwZGVhZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbiYjNDM7XHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbiYjNDM7XHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuJiM0MztcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbiYjNDM7XHR9XG4mIzQzO1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuJiM0MztcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuJiM0MztcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbiYjNDM7XHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuJiM0MztcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBTSU9DSU5RIChGSU9OUkVBRCkgaW9jdGwgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIGEgQlBGIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gSXQgbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIG5vIHZlcmRpY3QgcHJvZ3JhbSBpcyBhdHRhY2hlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yay9CUEYgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWFhNWY3ZWI4YjQ0NzI0MmMwN2JlNjViYjRlYTc5NThlMjBhMzhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAwNjozODoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTMzNCw2ICYjNDM7MzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzaywKIAogc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKQogewomIzQzOwlzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrOwogCWJvb2wgc2xvdzsKIAogCWlmIChjbWQgIT0gU0lPQ0lOUSkKQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spOwotCSprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7CiYjNDM7CXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFwc29jaykpIHsKJiM0MzsJCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwomIzQzOwkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKJiM0MzsJfQomIzQzOwkqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7CiYjNDM7CS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwomIzQzOwkgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoCiYjNDM7CSAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlCiYjNDM7CSAqIHRjcF9pb2N0bCgpIGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIVJFQURfT05DRShwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QpICZhbXA7JmFtcDsKJiM0MzsJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKJiM0MzsJCSprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTsKJiM0MzsJc2tfcHNvY2tfcHV0KHNrLCBwc29jayk7CiAJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGEKJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDsKJiM0MzsJaW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsOwomIzQzOwljaGFyIGJ1ZlsyNTZdID0gJiMzNDswMTIzNDU2Nzg5JiMzNDs7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CW1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtJmd0O21hcHMuc29ja19tYXBfcngpOwomIzQzOwomIzQzOwllcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAmYW1wO2MwLCAmYW1wO2MxLCAmYW1wO3AwLCAmYW1wO3AxKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2NyZWF0ZV9zb2NrZXRfcGFpcnMoKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO2MxLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtKGMxKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0X2Nsb3NlOwomIzQzOwomIzQzOwlzZW50ID0geHNlbmQocDEsICZhbXA7YnVmLCBzaXplb2YoYnVmKSwgMCk7CiYjNDM7CUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgJiMzNDt4c2VuZChwMSkmIzM0Oyk7CiYjNDM7CWF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7CiYjNDM7CUFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksICYjMzQ7aW9jdGwoRklPTlJFQUQpJiMzNDspOwomIzQzOwomIzQzO291dF9jbG9zZToKJiM0MzsJY2xvc2UoYzApOwomIzQzOwljbG9zZShwMCk7CiYjNDM7CWNsb3NlKGMxKTsKJiM0MzsJY2xvc2UocDEpOwomIzQzO291dDoKJiM0MzsJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDE1LDYgJiM0MzsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcCYjMzQ7KSkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWwmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29yZSBOZXR3b3JrL0JQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIEFuZCBpdCBzZWVtcyB0byBpbnZvbHZlIGEgc2VsZnRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY2AuIE15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IGZvciBCUEYtYmFzZWQgc29ja2V0IG1hcHBpbmcsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGZpbGUgbmFtZXMuIFRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29yZSBsb2dpYyBvZiBob3cgYFNJT0NJTlFgIChha2EgRklPTlJFQUQpLCB3aGljaCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgcmVhZCBmcm9tIHRoZSBzb2NrZXQsIGlzIGJlaW5nIGhhbmRsZWQgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIEJQRiBzb2NrbWFwcy4KCkkgc2VlIGl0JiMzOTtzIHVzaW5nIHRoaW5ncyBsaWtlIGBza19wc29ja19nZXQoc2spYCwgYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jaylgLCBhbmQgY2hlY2tpbmcgYHBzb2NrLSZndDtwcm9ncy5zdHJlYW1fdmVyZGljdGAgYW5kIGBwc29jay0mZ3Q7cHJvZ3Muc2tiX3ZlcmRpY3RgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBob3cgdGhlIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUgc29ja2V0IG1hcCBhcmUgaW5mbHVlbmNpbmcgdGhlIGRhdGEgYXZhaWxhYmxlLiBJZiB0aGVyZSYjMzk7cyBubyB2ZXJkaWN0IHByb2dyYW0gYXR0YWNoZWQsIHRoZSBwYXRjaCBhZGRzIGB0Y3BfaW5xKHNrKWAgdG8gdGhlIHJlc3VsdC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIG5vdGUsIGEgZmFsbGJhY2sgbWVjaGFuaXNtLCBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgZWRnZSBjYXNlcyBhbmQgd2hldGhlciB0aGlzIGlzIHRoZSBvcHRpbWFsIGRlZmF1bHQuCgpJIG5lZWQgdG8gZGl2ZSBpbnRvIGB0Y3BfYnBmX2lvY3RsYCBub3csIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhZmZlY3RzIHRoZSBjb250cm9sIHBhdGguIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB3aGF0IGtlcm5lbCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkIHRvIGVuYWJsZSBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIEkgbmVlZCB0byBiZSBzdXJlIGFueSBtb2RpZmljYXRpb25zIGFyZSB3ZWxsLWludGVncmF0ZWQgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmM9MjIxPXN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cbm5ldC9pcHY0L3RjcF9icGYuYzozMzU6c3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jPTYzOD1zdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy02NDUtXHRwcm90W1RDUF9CUEZfQkFTRV0uc29ja19pc19yZWFkYWJsZVx0PSBza19tc2dfaXNfcmVhZGFibGU7XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ2Olx0cHJvdFtUQ1BfQlBGX0JBU0VdLmlvY3RsXHRcdD0gdGNwX2JwZl9pb2N0bDtcbm5ldC9pcHY0L3RjcF9icGYuYy02NDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqQlBGIFNvY2ttYXAgYW5kIFRDUDogRGlzc2VjdGluZyBgdGNwX2JwZl9pb2N0bGAqKgoKQWxyaWdodCwgc28gYHRjcF9icGZfaW9jdGxgIGlzIGdldHRpbmcgc2xvdHRlZCBpbnRvIGBwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgc29ja21hcCBmdW5jdGlvbmFsaXR5IHNwZWNpZmljYWxseSBmb3IgVENQLiBUaGUgbmFtZSBhbG9uZSBjb25maXJtcyB0aGF0LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBpbnRlcmFjdGlvbnMgaXQmIzM5O3MgZGVzaWduZWQgZm9yLCB0aGUgbGlrZWx5IGlvY3RsIG9wZXJhdGlvbnMgaXQgc3VwcG9ydHMsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIEJQRiBmcmFtZXdvcmsgZm9yIFRDUCBzb2NrZXQgbWFuYWdlbWVudC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBhbmQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgQ09ORklHX05FVF9TT0NLX01TR2AgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gTm93LCBhIEJQRi1yZWxhdGVkIHN5c3RlbSB1c3VhbGx5IHB1bGxzIGluIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjb25maXJtIGJvdGggYXJlIHNldC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYENPTkZJR19ORVRfU09DS19NU0dgLiBJJiMzOTtsbCBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgZXF1aXZhbGVudCwgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NPQ0tfTVNHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xuLS1cbm5ldC9LY29uZmlnLTQ3OC1cbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy00ODAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6CgoqKkRpZ2dpbmcgaW50byBORVRfU09DS19NU0cmIzM5O3MgU2VsZWN0aW9uKioKCkFscmlnaHQsIHNvIGBORVRfU09DS19NU0dgLi4uIHRoYXQmIzM5O3MgYSBoaWRkZW4gYm9vbCwgcmlnaHQ/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc29tZSBpbnRlcmVzdGluZyBlQlBGIGludGVyYWN0aW9ucy4gSSB2YWd1ZWx5IHJlbWVtYmVyIHNlZWluZyBpdCB0aWVkIHRvIGJvdGggYEJQRl9TWVNDQUxMYCBhbmQgYENHUk9VUF9CUEZgIHNvbWVob3cuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCYjMzk7cyBhY3RpbmcgYXMgc29tZSBraW5kIG9mIGZpbHRlciBvciBmbGFnLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB3aGF0IHRyaWdnZXJzIHRoaXMgdGhpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgYWN0dWFsbHkgKmFyZSouIFRoaXMgaXMgcHJvYmFibHkgYSBwb2ludGVyIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29udHJvbCBmbG93IGJldHRlci4gTGV0JiMzOTtzIHNlZSBob3cgYW5kICp3aHkqIGl0IGdldHMgc2VsZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfU09DS19NU0cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zMy1cdHNlbGVjdCBCSU5BUllfUFJJTlRGXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4tLVxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWctMzg3LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWctOTMtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjYvS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWctOTUtXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcbi0tXG5uZXQvdGxzL0tjb25maWctMTAtXHRzZWxlY3QgQ1JZUFRPX0dDTVxubmV0L3Rscy9LY29uZmlnOjExOlx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L3Rscy9LY29uZmlnLTEyLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGludGVncmF0aW5nIEJQRiBzeXNjYWxscyB3aXRoIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBORVRfU09DS19NU0dgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBib3RoIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFwcGVhcnMgdG8gYmUgdGhlIHJpZ2h0IGFwcHJvYWNoLCBhc3N1bWluZyBgTkVUYCBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGJhc2UgZnVuY3Rpb25hbGl0eS4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgdGNwX2JwZl9pb2N0bGAsIHdoaWNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIHRoZXJlLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50ZXJhY3QgaW4gYW55IHNwZWNpZmljIHdheSB3aXRoIGBzb2NrbWFwYD8gVGhvdWdoLCBtYXliZSBgQlBGX1NZU0NBTExgIGNvdmVycyBpdC4gSSBuZWVkIHRvIGNvbmZpcm0uIE15IGZvY3VzIG5vdyBuZWVkcyB0byBiZSBvbiB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLgoKSSBhbHNvIHNlZSB0aGF0IGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tgIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCYjMzk7cyBhbm90aGVyIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBkaWcgaW50byBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrYCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXQgaXMgbmVjZXNzYXJ5IHRvIHRyYWNlIGhvdyB0aGlzIGZ1bmN0aW9uIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrbXNnLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za21zZy5oPTMyNz1zdGF0aWMgaW5saW5lIHZvaWQgc29ja19kcm9wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzMyLVxuaW5jbHVkZS9saW51eC9za21zZy5oOjMzMzpzdGF0aWMgaW5saW5lIHUzMiBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2soc3RydWN0IHNrX3Bzb2NrICpwc29jaylcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zMzQte1xuLS1cbmluY2x1ZGUvbGludXgvc2ttc2cuaD0zMzk9c3RhdGljIGlubGluZSB2b2lkIHNrX3Bzb2NrX21zZ19sZW5fYWRkX2xvY2tlZChzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBpbnQgZGlmZilcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zNDAte1xuaW5jbHVkZS9saW51eC9za21zZy5oOjM0MTpcdC8qIFVzZSBXUklURV9PTkNFIHRvIGVuc3VyZSBjb3JyZWN0IHJlYWQgaW4gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKCkuXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzQyLVx0ICogaW5ncmVzc19sb2NrIHNob3VsZCBiZSBoZWxkIHRvIHByZXZlbnQgY29uY3VycmVudCB1cGRhdGVzIHRvIG1zZ190b3RfbGVuXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTU1NT1zdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfcHNvY2tfbXNnX2lucShzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oLTU2MS1cdGlmIChsaWtlbHkocHNvY2spKSB7XG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NTYyOlx0XHRpbnEgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuaW5jbHVkZS9saW51eC9za21zZy5oLTU2My1cdFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIEJhY2sgaW50byBgdGNwX2JwZl9pb2N0bGAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdGNwX2JwZl9pb2N0bGAsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRoYXQgZnVuY3Rpb24mIzM5O3MgZ290IG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGhlIGtleSBpbnRlcmZhY2UgZm9yLCB3ZWxsLCBpbnRlcmFjdGluZyB3aXRoIEJQRiAoQmVya2VsZXkgUGFja2V0IEZpbHRlcikgd2l0aGluIHRoZSBUQ1Agc3RhY2suIFRoZSBpbnRlcmFjdGlvbiBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBzcGVjaWZpYyBjaGFuZ2UgbWFkZSBieSB0aGUgcGF0Y2guIEdpdmVuIG15IGV4cGVydGlzZSwgSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBmdW5jdGlvbiB3aXRoIGZyZXNoIGV5ZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBhbmQgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgZm9yIHRoZSBCUEYgZnVuY3Rpb25hbGl0eS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgcmUtZXhhbWluZSBpdHMgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzYte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcdD0gc2tfbXNnX2lzX3JlYWRhYmxlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFx0XHQ9IHRjcF9icGZfaW9jdGw7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTMzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgU29ja21hcCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBob3cgYFNJT0NJTlFgIChGSU9OUkVBRCksIHRoYXQmIzM5O3MgdGhlICYjMzQ7Ynl0ZXMgd2FpdGluZyB0byBiZSByZWFkJiMzNDsgaW9jdGwsIHdvcmtzIG9uIFRDUCBzb2NrZXRzIGNvbm5lY3RlZCB0byBhIEJQRiBzb2NrbWFwICp3aXRob3V0KiBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzcGVjaWZpYyBzY2VuYXJpbywgYnV0IGltcG9ydGFudCBub25ldGhlbGVzcy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCBzZXJpb3VzbHkuIFRoaXMgbWVhbnMgaXQgbmVlZHMgZnV6emluZyB0byBlbnN1cmUgdGhhdCBpdCBvcGVyYXRlcyBzYWZlbHkgdW5kZXIgYWxsIGNvbmRpdGlvbnMsIGFuZCB0aGF0IGFueSBlZGdlIGNhc2VzIGFyZSBhY2NvdW50ZWQgZm9yLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfaW9jdGxgLCBhbmQgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiB0aGVyZSYjMzk7cyBubyB2ZXJkaWN0IHByb2dyYW0gaW52b2x2ZWQuIFNvLCBgdGNwX2JwZl9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUga2V5IHN5bWJvbCB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBiaWcgb25lLCBvYnZpb3VzbHkuIFdlJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVycy4gYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX0lORVRgIGFyZSBhbHNvIG5lZWRlZCwgYnV0IHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgcGxheXMgYSByb2xlIGhlcmUsIGJlY2F1c2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBUQ1Agc29ja2V0cywgYW5kIHNvY2ttYXBzLCBzbyBsZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IG9uZSBhIGJpdCBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxuLS1cbm5ldC9LY29uZmlnLTM2MC1cbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnLTM2Mi1cdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjAKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgQlBGIEludGVyYWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdCBwYXRocyBmb3IgdGhpcyBgdGNwX2JwZmAgaW50ZXJhY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29kZS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgd2hldGhlciBjb21waWxpbmcgYHRjcF9icGYuY2AgbmVlZHMgYEJQRl9TVFJFQU1fUEFSU0VSYC4gSSBxdWlja2x5IHNlZSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGRlcGVuZGVudCBvbiBgTkVUX1NPQ0tfTVNHYC4gQW5kIHRoYXQgaW4gdHVybiBpcyBzZWxlY3RlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldC4gU28sIGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgc3VmZmljaWVudCBmb3IgbXkgcHVycG9zZXMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaWYgYHRjcF9icGZfaW9jdGxgIGlzIGEgY3JpdGljYWwgcGF0aC4gU2luY2UgaXQmIzM5O3MgYW4gaW9jdGwsIGl0JiMzOTtzIG5vdCBhIGhvdCBwYXRoLCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uCgpOb3csIGxldCBtZSBnbyB0aHJvdWdoIHRoYXQgcGF0Y2ggdG8gdmVyaWZ5IGl0IGFnYWluLgpgYGBjCnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKewoJc3RydWN0IHNrX3Bzb2NrICpwc29jazsKCWJvb2wgc2xvdzsKCglpZiAoY21kICE9IFNJT0NJTlEpCgkJcmV0dXJuIC1FTk9JT0NUTENNRDsKCglpZiAoc2stJmd0O3NrX3N0YXRlID09IFRDUF9MSVNURU4pCgkJcmV0dXJuIC1FSU5WQUw7CgoJc2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTsKCXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKCWlmICh1bmxpa2VseSghcHNvY2spKSB7CgkJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CgkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKCX0KCSprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTsKCS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwoJICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaAoJICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2UKCSAqIHRjcF9pb2N0bCgpIGRvZXMuCgkgKi8KCWlmICghUkVBRF9PTkNFKHBzb2NrLSZndDtwcm9ncy5zdHJlYW1fdmVyZGljdCkgJmFtcDsmYW1wOwoJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKCQkqa2FyZyAmIzQzOz0gdGNwX2lucShzayk7Cglza19wc29ja19wdXQoc2ssIHBzb2NrKTsKCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwoKCXJldHVybiAwOwp9CmBgYApZZWFoLCB0aGUgcGF0Y2ggbG9va3MgZnVuY3Rpb25hbC4gSSBjYW4gbm93IHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgU0lPQ0lOUSAoRklPTlJFQUQpIGlvY3RsIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBhIEJQRiBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIEl0IG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBubyB2ZXJkaWN0IHByb2dyYW0gaXMgYXR0YWNoZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsvQlBGIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBTSU9DSU5RIChGSU9OUkVBRCkgaW9jdGwgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIGEgQlBGIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gSXQgbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIG5vIHZlcmRpY3QgcHJvZ3JhbSBpcyBhdHRhY2hlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yay9CUEYgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MjQuNTEwMjEwMjg4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxMDkxMjEwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjI0LjUxMDIxNDk2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwOTYxODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTVhYTVmN2ViOGI0NDcyNDJjMDdiZTY1YmI0ZWE3OTU4ZTIwYTM4ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDA2OjM4OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li44ZTkwNWI1MGRlYWRiZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIHtcXG4rXFx0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcXG4gXFx0Ym9vbCBzbG93O1xcbiBcXG4gXFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxcbkBAIC0zNDQsNyArMzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xcbi1cXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xcbitcXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XFxuK1xcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XFxuK1xcdFxcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xcbitcXHRcXHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xcbitcXHR9XFxuK1xcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4rXFx0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXFxuK1xcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcXG4rXFx0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcXG4rXFx0ICogdGNwX2lvY3RsKCkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmICghUkVBRF9PTkNFKHBzb2NrLVxcdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFSRUFEX09OQ0UocHNvY2stXFx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcXG4rXFx0XFx0KmthcmcgKz0gdGNwX2lucShzayk7XFxuK1xcdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xcbiBcXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuQEAgLTEzNzMsNiArMTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSlcXG4gXFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rLyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxcbisgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxcbisgKi9cXG4rc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcXG4re1xcbitcXHRpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDtcXG4rXFx0aW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7XFxuK1xcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xcbitcXHRjaGFyIGJ1ZlsyNTZdID0gXFxcIjAxMjM0NTY3ODlcXFwiO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XFxuK1xcbitcXHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcXHUwMDI2YzAsIFxcdTAwMjZjMSwgXFx1MDAyNnAwLCBcXHUwMDI2cDEpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJjcmVhdGVfc29ja2V0X3BhaXJzKClcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgXFx1MDAyNnplcm8sIFxcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfbWFwX3VwZGF0ZV9lbGVtKGMxKVxcXCIpKVxcbitcXHRcXHRnb3RvIG91dF9jbG9zZTtcXG4rXFxuK1xcdHNlbnQgPSB4c2VuZChwMSwgXFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xcbitcXHRBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksIFxcXCJ4c2VuZChwMSlcXFwiKTtcXG4rXFx0YXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTtcXG4rXFx0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXFxcImlvY3RsKEZJT05SRUFEKVxcXCIpO1xcbitcXG4rb3V0X2Nsb3NlOlxcbitcXHRjbG9zZShjMCk7XFxuK1xcdGNsb3NlKHAwKTtcXG4rXFx0Y2xvc2UoYzEpO1xcbitcXHRjbG9zZShwMSk7XFxuK291dDpcXG4rXFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcXFwiKSlcXG5AQCAtMTQxNSw2ICsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgbm9fdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbitcXHRcXHR0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZChmYWxzZSk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGNoYW5nZSB0YWlsXFxcIikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjI1LjI4MjIyNDExN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczMzcwOTY4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTVhYTVmN2ViOGI0NDcyNDJjMDdiZTY1YmI0ZWE3OTU4ZTIwYTM4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDY6Mzg6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li44ZTkwNWI1MGRlYWRiZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbitcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XG4gXHRib29sIHNsb3c7XG4gXG4gXHRpZiAoY21kICE9IFNJT0NJTlEpXG5AQCAtMzQ0LDcgKzM0NSwyMSBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcbi1cdCprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7XG4rXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4rXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xuK1x0XHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbitcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbitcdH1cbitcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbitcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuK1x0ICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaFxuK1x0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcbitcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4rXHQgKi9cbitcdGlmICghUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnN0cmVhbV92ZXJkaWN0KSBcdTAwMjZcdTAwMjZcbitcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbitcdFx0KmthcmcgKz0gdGNwX2lucShzayk7XG4rXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiArMTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSlcbiBcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcbisgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuKyAqL1xuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXG4re1xuK1x0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XG4rXHRpbnQgYzAgPSAtMSwgYzEgPSAtMSwgcDAgPSAtMSwgcDEgPSAtMTtcbitcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuK1x0Y2hhciBidWZbMjU2XSA9IFwiMDEyMzQ1Njc4OVwiO1xuK1xuK1x0c2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XG4rXG4rXHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiY3JlYXRlX3NvY2tldF9wYWlycygpXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9tYXBfdXBkYXRlX2VsZW0oYzEpXCIpKVxuK1x0XHRnb3RvIG91dF9jbG9zZTtcbitcbitcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4rXHRBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksIFwieHNlbmQocDEpXCIpO1xuK1x0YXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTtcbitcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFwiaW9jdGwoRklPTlJFQUQpXCIpO1xuK1xuK291dF9jbG9zZTpcbitcdGNsb3NlKGMwKTtcbitcdGNsb3NlKHAwKTtcbitcdGNsb3NlKGMxKTtcbitcdGNsb3NlKHAxKTtcbitvdXQ6XG4rXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuK31cbitcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcIikpXG5AQCAtMTQxNSw2ICsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCIpKVxuK1x0XHR0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZChmYWxzZSk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWxcIikpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODoyNS4yODIyMjY4NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4Mzc3NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvcmUgTmV0d29yay9CUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbmV0L2lwdjQvdGNwX2JwZi5jYCwgc3BlY2lmaWNhbGx5LCB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLiBBbmQgaXQgc2VlbXMgdG8gaW52b2x2ZSBhIHNlbGZ0ZXN0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNgLiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgQlBGLWJhc2VkIHNvY2tldCBtYXBwaW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBmaWxlIG5hbWVzLiBUaGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gVGhlIGNvcmUgbG9naWMgb2YgaG93IGBTSU9DSU5RYCAoYWthIEZJT05SRUFEKSwgd2hpY2ggZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHJlYWQgZnJvbSB0aGUgc29ja2V0LCBpcyBiZWluZyBoYW5kbGVkIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBCUEYgc29ja21hcHMuXG5cbkkgc2VlIGl0J3MgdXNpbmcgdGhpbmdzIGxpa2UgYHNrX3Bzb2NrX2dldChzaylgLCBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKWAsIGFuZCBjaGVja2luZyBgcHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3RgIGFuZCBgcHNvY2stXHUwMDNlcHJvZ3Muc2tiX3ZlcmRpY3RgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBob3cgdGhlIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUgc29ja2V0IG1hcCBhcmUgaW5mbHVlbmNpbmcgdGhlIGRhdGEgYXZhaWxhYmxlLiBJZiB0aGVyZSdzIG5vIHZlcmRpY3QgcHJvZ3JhbSBhdHRhY2hlZCwgdGhlIHBhdGNoIGFkZHMgYHRjcF9pbnEoc2spYCB0byB0aGUgcmVzdWx0LiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCB0byBub3RlLCBhIGZhbGxiYWNrIG1lY2hhbmlzbSwgSSdkIG5lZWQgdG8gY29uc2lkZXIgZWRnZSBjYXNlcyBhbmQgd2hldGhlciB0aGlzIGlzIHRoZSBvcHRpbWFsIGRlZmF1bHQuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYHRjcF9icGZfaW9jdGxgIG5vdywgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNvbnRyb2wgcGF0aC4gTGV0J3MgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgd2hhdCBrZXJuZWwgY29uZmlnIG9wdGlvbnMgYXJlIG5lZWRlZCB0byBlbmFibGUgaXQuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgbW9kaWZpY2F0aW9ucyBhcmUgd2VsbC1pbnRlZ3JhdGVkIGFuZCBkb24ndCBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODozMS4wNTA2MDc2MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NTcwMDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz0yMjE9c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjMzNTpzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjM4PXN0YXRpYyB2b2lkIHRjcF9icGZfcmVidWlsZF9wcm90b3Moc3RydWN0IHByb3RvIHByb3RbVENQX0JQRl9OVU1fQ0ZHU10sXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVxcdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXFx0PSBza19tc2dfaXNfcmVhZGFibGU7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcXHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcXHRcXHQ9IHRjcF9icGZfaW9jdGw7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MzEuMjEwMTg0ODgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUyODEyNTQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBoZXJlLlxuXG4qKkJQRiBTb2NrbWFwIGFuZCBUQ1A6IERpc3NlY3RpbmcgYHRjcF9icGZfaW9jdGxgKipcblxuQWxyaWdodCwgc28gYHRjcF9icGZfaW9jdGxgIGlzIGdldHRpbmcgc2xvdHRlZCBpbnRvIGBwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgc29ja21hcCBmdW5jdGlvbmFsaXR5IHNwZWNpZmljYWxseSBmb3IgVENQLiBUaGUgbmFtZSBhbG9uZSBjb25maXJtcyB0aGF0LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBpbnRlcmFjdGlvbnMgaXQncyBkZXNpZ25lZCBmb3IsIHRoZSBsaWtlbHkgaW9jdGwgb3BlcmF0aW9ucyBpdCBzdXBwb3J0cywgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQlBGIGZyYW1ld29yayBmb3IgVENQIHNvY2tldCBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTc1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MzkuNzM4MzEyNDc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODE1OTg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODozOS45MjY0Nzc2ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTIyMDAyMTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgQ09ORklHX05FVF9TT0NLX01TR2AgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB3aGF0IEknbSB3b3JraW5nIG9uLiBOb3csIGEgQlBGLXJlbGF0ZWQgc3lzdGVtIHVzdWFsbHkgcHVsbHMgaW4gYENPTkZJR19CUEZfU1lTQ0FMTGAg4oCTIGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSBib3RoIGFyZSBzZXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gSSdsbCBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgZXF1aXZhbGVudCwgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjQ3LjA0ODQ4MjUzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQ2MzE3NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU09DS19NU0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODo1MC4zOTQ4MTE4MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc0MjQ2NDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6XG5cbioqRGlnZ2luZyBpbnRvIE5FVF9TT0NLX01TRydzIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIHNvIGBORVRfU09DS19NU0dgLi4uIHRoYXQncyBhIGhpZGRlbiBib29sLCByaWdodD8gSSdtIHByZXR0eSBzdXJlIGl0J3MgaW52b2x2ZWQgaW4gc29tZSBpbnRlcmVzdGluZyBlQlBGIGludGVyYWN0aW9ucy4gSSB2YWd1ZWx5IHJlbWVtYmVyIHNlZWluZyBpdCB0aWVkIHRvIGJvdGggYEJQRl9TWVNDQUxMYCBhbmQgYENHUk9VUF9CUEZgIHNvbWVob3cuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGFjdGluZyBhcyBzb21lIGtpbmQgb2YgZmlsdGVyIG9yIGZsYWcsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoYXQgdHJpZ2dlcnMgdGhpcyB0aGluZy4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBhY3R1YWxseSAqYXJlKi4gVGhpcyBpcyBwcm9iYWJseSBhIHBvaW50ZXIgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cgYmV0dGVyLiBMZXQncyBzZWUgaG93IGFuZCAqd2h5KiBpdCBnZXRzIHNlbGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MDMuMTM3Mjc5NDE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTMxNjI4ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfU09DS19NU0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOTowNi4yNjg5MTQ4MTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDk2OTU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBDaGFuZ2VzKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBCUEYgc3lzY2FsbHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBgTkVUX1NPQ0tfTVNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgZW5hYmxpbmcgYm90aCBgQlBGX1NZU0NBTExgIGFuZCBgTkVUYCBhcHBlYXJzIHRvIGJlIHRoZSByaWdodCBhcHByb2FjaCwgYXNzdW1pbmcgYE5FVGAgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBiYXNlIGZ1bmN0aW9uYWxpdHkuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHRjcF9icGZfaW9jdGxgLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50ZXJhY3QgaW4gYW55IHNwZWNpZmljIHdheSB3aXRoIGBzb2NrbWFwYD8gVGhvdWdoLCBtYXliZSBgQlBGX1NZU0NBTExgIGNvdmVycyBpdC4gSSBuZWVkIHRvIGNvbmZpcm0uIE15IGZvY3VzIG5vdyBuZWVkcyB0byBiZSBvbiB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLlxuXG5JIGFsc28gc2VlIHRoYXQgYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9ja2AgaXMgYmVpbmcgY2FsbGVkLiBUaGF0J3MgYW5vdGhlciBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gZGlnIGludG8gYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9ja2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGlzIG5lY2Vzc2FyeSB0byB0cmFjZSBob3cgdGhpcyBmdW5jdGlvbiB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOToxMS4wNTM4ODcwMjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzEyNDM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9za21zZy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc2ttc2cuaD0zMjc9c3RhdGljIGlubGluZSB2b2lkIHNvY2tfZHJvcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzMyLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaDozMzM6c3RhdGljIGlubGluZSB1MzIgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHN0cnVjdCBza19wc29jayAqcHNvY2spXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTMzNC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9MzM5PXN0YXRpYyBpbmxpbmUgdm9pZCBza19wc29ja19tc2dfbGVuX2FkZF9sb2NrZWQoc3RydWN0IHNrX3Bzb2NrICpwc29jaywgaW50IGRpZmYpXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTM0MC17XFxuaW5jbHVkZS9saW51eC9za21zZy5oOjM0MTpcXHQvKiBVc2UgV1JJVEVfT05DRSB0byBlbnN1cmUgY29ycmVjdCByZWFkIGluIHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jaygpLlxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zNDItXFx0ICogaW5ncmVzc19sb2NrIHNob3VsZCBiZSBoZWxkIHRvIHByZXZlbnQgY29uY3VycmVudCB1cGRhdGVzIHRvIG1zZ190b3RfbGVuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NTU1PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19wc29ja19tc2dfaW5xKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NjEtXFx0aWYgKGxpa2VseShwc29jaykpIHtcXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NTYyOlxcdFxcdGlucSA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XFxuaW5jbHVkZS9saW51eC9za21zZy5oLTU2My1cXHRcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MTEuMjE3MDE1OTUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM5Mzg4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgQmFjayBpbnRvIGB0Y3BfYnBmX2lvY3RsYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjcF9icGZfaW9jdGxgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGZ1bmN0aW9uJ3MgZ290IG15IGF0dGVudGlvbi4gSXQncyB0aGUga2V5IGludGVyZmFjZSBmb3IsIHdlbGwsIGludGVyYWN0aW5nIHdpdGggQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSB3aXRoaW4gdGhlIFRDUCBzdGFjay4gVGhlIGludGVyYWN0aW9uIGxpa2VseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHNwZWNpZmljIGNoYW5nZSBtYWRlIGJ5IHRoZSBwYXRjaC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIG5lZWQgdG8gcmV2aXNpdCB0aGF0IGZ1bmN0aW9uIHdpdGggZnJlc2ggZXllcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGFuZCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBmb3IgdGhlIEJQRiBmdW5jdGlvbmFsaXR5LiBMZXQncyBkaWcgaW4gYW5kIHJlLWV4YW1pbmUgaXRzIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MTQuMzQwOTU3MzQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYxODA4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NDUtXFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ2OlxcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFxcdFxcdD0gdGNwX2JwZl9pb2N0bDtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOToxNC40ODcxNDM1NjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNDM3Nzc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQ1AgQlBGIFNvY2ttYXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBob3cgYFNJT0NJTlFgIChGSU9OUkVBRCksIHRoYXQncyB0aGUgXCJieXRlcyB3YWl0aW5nIHRvIGJlIHJlYWRcIiBpb2N0bCwgd29ya3Mgb24gVENQIHNvY2tldHMgY29ubmVjdGVkIHRvIGEgQlBGIHNvY2ttYXAgKndpdGhvdXQqIGEgdmVyZGljdCBwcm9ncmFtLiBUaGF0J3MgYSBwcmV0dHkgc3BlY2lmaWMgc2NlbmFyaW8sIGJ1dCBpbXBvcnRhbnQgbm9uZXRoZWxlc3MuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCBzZXJpb3VzbHkuIFRoaXMgbWVhbnMgaXQgbmVlZHMgZnV6emluZyB0byBlbnN1cmUgdGhhdCBpdCBvcGVyYXRlcyBzYWZlbHkgdW5kZXIgYWxsIGNvbmRpdGlvbnMsIGFuZCB0aGF0IGFueSBlZGdlIGNhc2VzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgdGNwX2JwZl9pb2N0bGAsIGFuZCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZXJlJ3Mgbm8gdmVyZGljdCBwcm9ncmFtIGludm9sdmVkLiBTbywgYHRjcF9icGZfaW9jdGxgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24uXG5cbkxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZS4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGJpZyBvbmUsIG9idmlvdXNseS4gV2UnbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlcnMuIGBDT05GSUdfTkVUYCBhbmQgYENPTkZJR19JTkVUYCBhcmUgYWxzbyBuZWVkZWQsIGJ1dCB0aG9zZSBhcmUgcHJldHR5IGdlbmVyaWMuIEknbSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgcGxheXMgYSByb2xlIGhlcmUsIGJlY2F1c2Ugd2UncmUgZGVhbGluZyB3aXRoIFRDUCBzb2NrZXRzLCBhbmQgc29ja21hcHMsIHNvIGxldCdzIGRlbHZlIGludG8gdGhhdCBvbmUgYSBiaXQgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTMzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM5OjIwLjIwMTUyMzczMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NjM3ODMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MjIuODU3OTA3ODMzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MjU4MDc0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRDUCBCUEYgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdCBwYXRocyBmb3IgdGhpcyBgdGNwX2JwZmAgaW50ZXJhY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29kZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGNvbXBpbGluZyBgdGNwX2JwZi5jYCBuZWVkcyBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJIHF1aWNrbHkgc2VlIHRoYXQgaXQncyBhY3R1YWxseSBkZXBlbmRlbnQgb24gYE5FVF9TT0NLX01TR2AuIEFuZCB0aGF0IGluIHR1cm4gaXMgc2VsZWN0ZWQgYnkgYEJQRl9TWVNDQUxMYCBpZiBgTkVUYCBpcyBzZXQuIFNvLCBgQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgaWYgYHRjcF9icGZfaW9jdGxgIGlzIGEgY3JpdGljYWwgcGF0aC4gU2luY2UgaXQncyBhbiBpb2N0bCwgaXQncyBub3QgYSBob3QgcGF0aCwgc28gdGhpcyBzZWVtcyB0byBiZSBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uLlxuXG5Ob3csIGxldCBtZSBnbyB0aHJvdWdoIHRoYXQgcGF0Y2ggdG8gdmVyaWZ5IGl0IGFnYWluLlxuYGBgY1xuc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxue1xuXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuXHRib29sIHNsb3c7XG5cblx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuXHRcdHJldHVybiAtRU5PSU9DVExDTUQ7XG5cblx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcblx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xuXHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuXHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG5cdH1cblx0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuXHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cblx0ICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaFxuXHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuXHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuXHQgKi9cblx0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuXHQgICAgIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXG5cdFx0KmthcmcgKz0gdGNwX2lucShzayk7XG5cdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcblxuXHRyZXR1cm4gMDtcbn1cbmBgYFxuWWVhaCwgdGhlIHBhdGNoIGxvb2tzIGZ1bmN0aW9uYWwuIEkgY2FuIG5vdyBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjAsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM5OjMyLjQ4MzcxNzc1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTU5NzU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9m7pd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 06:19:08 +0000 UTC FinishedAt: 2026-07-09 06:39:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "86cd6126-688d-429b-8a8c-efd61543b30c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgU0lPQ0lOUSAoRklPTlJFQUQpIGlvY3RsIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBhIEJQRiBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIEl0IG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBubyB2ZXJkaWN0IHByb2dyYW0gaXMgYXR0YWNoZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsvQlBGIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1YWE1ZjdlYjhiNDQ3MjQyYzA3YmU2NWJiNGVhNzk1OGUyMGEzOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDA2OjM4OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLjhlOTA1YjUwZGVhZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuIFx0Ym9vbCBzbG93O1xuIFxuIFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbiYjNDM7XHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc29jaykpIHtcbiYjNDM7XHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuJiM0MztcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbiYjNDM7XHR9XG4mIzQzO1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuJiM0MztcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuJiM0MztcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcbiYjNDM7XHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuJiM0MztcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBTSU9DSU5RIChGSU9OUkVBRCkgaW9jdGwgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIGEgQlBGIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gSXQgbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIG5vIHZlcmRpY3QgcHJvZ3JhbSBpcyBhdHRhY2hlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yay9CUEYgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWFhNWY3ZWI4YjQ0NzI0MmMwN2JlNjViYjRlYTc5NThlMjBhMzhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAwNjozODoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCBjYzBiZDczZjM2YjZkNi4uOGU5MDViNTBkZWFkYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTMzNCw2ICYjNDM7MzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzaywKIAogc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKQogewomIzQzOwlzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrOwogCWJvb2wgc2xvdzsKIAogCWlmIChjbWQgIT0gU0lPQ0lOUSkKQEAgLTM0NCw3ICYjNDM7MzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spOwotCSprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7CiYjNDM7CXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKJiM0MzsJaWYgKHVubGlrZWx5KCFwc29jaykpIHsKJiM0MzsJCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwomIzQzOwkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKJiM0MzsJfQomIzQzOwkqa2FyZyA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7CiYjNDM7CS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwomIzQzOwkgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoCiYjNDM7CSAqIHRoZSBmYWxsYmFjayB0byB0Y3BfcmVjdm1zZygpLCBzbyBhY2NvdW50IGZvciBpdCBsaWtlCiYjNDM7CSAqIHRjcF9pb2N0bCgpIGRvZXMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIVJFQURfT05DRShwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QpICZhbXA7JmFtcDsKJiM0MzsJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKJiM0MzsJCSprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTsKJiM0MzsJc2tfcHNvY2tfcHV0KHNrLCBwc29jayk7CiAJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwppbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMKQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGEKJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDsKJiM0MzsJaW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7CiYjNDM7CXN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsOwomIzQzOwljaGFyIGJ1ZlsyNTZdID0gJiMzNDswMTIzNDU2Nzg5JiMzNDs7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CW1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtJmd0O21hcHMuc29ja19tYXBfcngpOwomIzQzOwomIzQzOwllcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAmYW1wO2MwLCAmYW1wO2MxLCAmYW1wO3AwLCAmYW1wO3AxKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2NyZWF0ZV9zb2NrZXRfcGFpcnMoKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgJmFtcDt6ZXJvLCAmYW1wO2MxLCBCUEZfTk9FWElTVCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX3VwZGF0ZV9lbGVtKGMxKSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0X2Nsb3NlOwomIzQzOwomIzQzOwlzZW50ID0geHNlbmQocDEsICZhbXA7YnVmLCBzaXplb2YoYnVmKSwgMCk7CiYjNDM7CUFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgJiMzNDt4c2VuZChwMSkmIzM0Oyk7CiYjNDM7CWF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7CiYjNDM7CUFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksICYjMzQ7aW9jdGwoRklPTlJFQUQpJiMzNDspOwomIzQzOwomIzQzO291dF9jbG9zZToKJiM0MzsJY2xvc2UoYzApOwomIzQzOwljbG9zZShwMCk7CiYjNDM7CWNsb3NlKGMxKTsKJiM0MzsJY2xvc2UocDEpOwomIzQzO291dDoKJiM0MzsJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDE1LDYgJiM0MzsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcCYjMzQ7KSkKIAkJdGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWwmIzM0OykpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29yZSBOZXR3b3JrL0JQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIEFuZCBpdCBzZWVtcyB0byBpbnZvbHZlIGEgc2VsZnRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY2AuIE15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IGZvciBCUEYtYmFzZWQgc29ja2V0IG1hcHBpbmcsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGZpbGUgbmFtZXMuIFRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29yZSBsb2dpYyBvZiBob3cgYFNJT0NJTlFgIChha2EgRklPTlJFQUQpLCB3aGljaCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgcmVhZCBmcm9tIHRoZSBzb2NrZXQsIGlzIGJlaW5nIGhhbmRsZWQgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIEJQRiBzb2NrbWFwcy4KCkkgc2VlIGl0JiMzOTtzIHVzaW5nIHRoaW5ncyBsaWtlIGBza19wc29ja19nZXQoc2spYCwgYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jaylgLCBhbmQgY2hlY2tpbmcgYHBzb2NrLSZndDtwcm9ncy5zdHJlYW1fdmVyZGljdGAgYW5kIGBwc29jay0mZ3Q7cHJvZ3Muc2tiX3ZlcmRpY3RgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBob3cgdGhlIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUgc29ja2V0IG1hcCBhcmUgaW5mbHVlbmNpbmcgdGhlIGRhdGEgYXZhaWxhYmxlLiBJZiB0aGVyZSYjMzk7cyBubyB2ZXJkaWN0IHByb2dyYW0gYXR0YWNoZWQsIHRoZSBwYXRjaCBhZGRzIGB0Y3BfaW5xKHNrKWAgdG8gdGhlIHJlc3VsdC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIG5vdGUsIGEgZmFsbGJhY2sgbWVjaGFuaXNtLCBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgZWRnZSBjYXNlcyBhbmQgd2hldGhlciB0aGlzIGlzIHRoZSBvcHRpbWFsIGRlZmF1bHQuCgpJIG5lZWQgdG8gZGl2ZSBpbnRvIGB0Y3BfYnBmX2lvY3RsYCBub3csIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhZmZlY3RzIHRoZSBjb250cm9sIHBhdGguIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB3aGF0IGtlcm5lbCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkIHRvIGVuYWJsZSBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIEkgbmVlZCB0byBiZSBzdXJlIGFueSBtb2RpZmljYXRpb25zIGFyZSB3ZWxsLWludGVncmF0ZWQgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmM9MjIxPXN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cbm5ldC9pcHY0L3RjcF9icGYuYzozMzU6c3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jPTYzOD1zdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy02NDUtXHRwcm90W1RDUF9CUEZfQkFTRV0uc29ja19pc19yZWFkYWJsZVx0PSBza19tc2dfaXNfcmVhZGFibGU7XG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ2Olx0cHJvdFtUQ1BfQlBGX0JBU0VdLmlvY3RsXHRcdD0gdGNwX2JwZl9pb2N0bDtcbm5ldC9pcHY0L3RjcF9icGYuYy02NDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqQlBGIFNvY2ttYXAgYW5kIFRDUDogRGlzc2VjdGluZyBgdGNwX2JwZl9pb2N0bGAqKgoKQWxyaWdodCwgc28gYHRjcF9icGZfaW9jdGxgIGlzIGdldHRpbmcgc2xvdHRlZCBpbnRvIGBwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgc29ja21hcCBmdW5jdGlvbmFsaXR5IHNwZWNpZmljYWxseSBmb3IgVENQLiBUaGUgbmFtZSBhbG9uZSBjb25maXJtcyB0aGF0LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBpbnRlcmFjdGlvbnMgaXQmIzM5O3MgZGVzaWduZWQgZm9yLCB0aGUgbGlrZWx5IGlvY3RsIG9wZXJhdGlvbnMgaXQgc3VwcG9ydHMsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIEJQRiBmcmFtZXdvcmsgZm9yIFRDUCBzb2NrZXQgbWFuYWdlbWVudC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBhbmQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgQ09ORklHX05FVF9TT0NLX01TR2AgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gTm93LCBhIEJQRi1yZWxhdGVkIHN5c3RlbSB1c3VhbGx5IHB1bGxzIGluIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjb25maXJtIGJvdGggYXJlIHNldC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYENPTkZJR19ORVRfU09DS19NU0dgLiBJJiMzOTtsbCBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgZXF1aXZhbGVudCwgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NPQ0tfTVNHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xuLS1cbm5ldC9LY29uZmlnLTQ3OC1cbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy00ODAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6CgoqKkRpZ2dpbmcgaW50byBORVRfU09DS19NU0cmIzM5O3MgU2VsZWN0aW9uKioKCkFscmlnaHQsIHNvIGBORVRfU09DS19NU0dgLi4uIHRoYXQmIzM5O3MgYSBoaWRkZW4gYm9vbCwgcmlnaHQ/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc29tZSBpbnRlcmVzdGluZyBlQlBGIGludGVyYWN0aW9ucy4gSSB2YWd1ZWx5IHJlbWVtYmVyIHNlZWluZyBpdCB0aWVkIHRvIGJvdGggYEJQRl9TWVNDQUxMYCBhbmQgYENHUk9VUF9CUEZgIHNvbWVob3cuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCYjMzk7cyBhY3RpbmcgYXMgc29tZSBraW5kIG9mIGZpbHRlciBvciBmbGFnLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB3aGF0IHRyaWdnZXJzIHRoaXMgdGhpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgYWN0dWFsbHkgKmFyZSouIFRoaXMgaXMgcHJvYmFibHkgYSBwb2ludGVyIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29udHJvbCBmbG93IGJldHRlci4gTGV0JiMzOTtzIHNlZSBob3cgYW5kICp3aHkqIGl0IGdldHMgc2VsZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfU09DS19NU0cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zMy1cdHNlbGVjdCBCSU5BUllfUFJJTlRGXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4tLVxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2NC9LY29uZmlnOjM4NjpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWctMzg3LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxuLS1cbm5ldC9pcHY2L0tjb25maWctOTMtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjYvS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWctOTUtXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxuLS1cbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcbi0tXG5uZXQvdGxzL0tjb25maWctMTAtXHRzZWxlY3QgQ1JZUFRPX0dDTVxubmV0L3Rscy9LY29uZmlnOjExOlx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L3Rscy9LY29uZmlnLTEyLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGludGVncmF0aW5nIEJQRiBzeXNjYWxscyB3aXRoIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBORVRfU09DS19NU0dgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBib3RoIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFwcGVhcnMgdG8gYmUgdGhlIHJpZ2h0IGFwcHJvYWNoLCBhc3N1bWluZyBgTkVUYCBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGJhc2UgZnVuY3Rpb25hbGl0eS4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgdGNwX2JwZl9pb2N0bGAsIHdoaWNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIHRoZXJlLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50ZXJhY3QgaW4gYW55IHNwZWNpZmljIHdheSB3aXRoIGBzb2NrbWFwYD8gVGhvdWdoLCBtYXliZSBgQlBGX1NZU0NBTExgIGNvdmVycyBpdC4gSSBuZWVkIHRvIGNvbmZpcm0uIE15IGZvY3VzIG5vdyBuZWVkcyB0byBiZSBvbiB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLgoKSSBhbHNvIHNlZSB0aGF0IGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tgIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCYjMzk7cyBhbm90aGVyIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBkaWcgaW50byBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrYCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXQgaXMgbmVjZXNzYXJ5IHRvIHRyYWNlIGhvdyB0aGlzIGZ1bmN0aW9uIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrbXNnLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za21zZy5oPTMyNz1zdGF0aWMgaW5saW5lIHZvaWQgc29ja19kcm9wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzMyLVxuaW5jbHVkZS9saW51eC9za21zZy5oOjMzMzpzdGF0aWMgaW5saW5lIHUzMiBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2soc3RydWN0IHNrX3Bzb2NrICpwc29jaylcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zMzQte1xuLS1cbmluY2x1ZGUvbGludXgvc2ttc2cuaD0zMzk9c3RhdGljIGlubGluZSB2b2lkIHNrX3Bzb2NrX21zZ19sZW5fYWRkX2xvY2tlZChzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBpbnQgZGlmZilcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zNDAte1xuaW5jbHVkZS9saW51eC9za21zZy5oOjM0MTpcdC8qIFVzZSBXUklURV9PTkNFIHRvIGVuc3VyZSBjb3JyZWN0IHJlYWQgaW4gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKCkuXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzQyLVx0ICogaW5ncmVzc19sb2NrIHNob3VsZCBiZSBoZWxkIHRvIHByZXZlbnQgY29uY3VycmVudCB1cGRhdGVzIHRvIG1zZ190b3RfbGVuXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTU1NT1zdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfcHNvY2tfbXNnX2lucShzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oLTU2MS1cdGlmIChsaWtlbHkocHNvY2spKSB7XG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NTYyOlx0XHRpbnEgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuaW5jbHVkZS9saW51eC9za21zZy5oLTU2My1cdFx0c2tfcHNvY2tfcHV0KHNrLCBwc29jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIEJhY2sgaW50byBgdGNwX2JwZl9pb2N0bGAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdGNwX2JwZl9pb2N0bGAsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRoYXQgZnVuY3Rpb24mIzM5O3MgZ290IG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGhlIGtleSBpbnRlcmZhY2UgZm9yLCB3ZWxsLCBpbnRlcmFjdGluZyB3aXRoIEJQRiAoQmVya2VsZXkgUGFja2V0IEZpbHRlcikgd2l0aGluIHRoZSBUQ1Agc3RhY2suIFRoZSBpbnRlcmFjdGlvbiBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBzcGVjaWZpYyBjaGFuZ2UgbWFkZSBieSB0aGUgcGF0Y2guIEdpdmVuIG15IGV4cGVydGlzZSwgSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBmdW5jdGlvbiB3aXRoIGZyZXNoIGV5ZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBhbmQgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgZm9yIHRoZSBCUEYgZnVuY3Rpb25hbGl0eS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgcmUtZXhhbWluZSBpdHMgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzYte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcdD0gc2tfbXNnX2lzX3JlYWRhYmxlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFx0XHQ9IHRjcF9icGZfaW9jdGw7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTMzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBCUEYgU29ja21hcCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBob3cgYFNJT0NJTlFgIChGSU9OUkVBRCksIHRoYXQmIzM5O3MgdGhlICYjMzQ7Ynl0ZXMgd2FpdGluZyB0byBiZSByZWFkJiMzNDsgaW9jdGwsIHdvcmtzIG9uIFRDUCBzb2NrZXRzIGNvbm5lY3RlZCB0byBhIEJQRiBzb2NrbWFwICp3aXRob3V0KiBhIHZlcmRpY3QgcHJvZ3JhbS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzcGVjaWZpYyBzY2VuYXJpbywgYnV0IGltcG9ydGFudCBub25ldGhlbGVzcy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCBzZXJpb3VzbHkuIFRoaXMgbWVhbnMgaXQgbmVlZHMgZnV6emluZyB0byBlbnN1cmUgdGhhdCBpdCBvcGVyYXRlcyBzYWZlbHkgdW5kZXIgYWxsIGNvbmRpdGlvbnMsIGFuZCB0aGF0IGFueSBlZGdlIGNhc2VzIGFyZSBhY2NvdW50ZWQgZm9yLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfaW9jdGxgLCBhbmQgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiB0aGVyZSYjMzk7cyBubyB2ZXJkaWN0IHByb2dyYW0gaW52b2x2ZWQuIFNvLCBgdGNwX2JwZl9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUga2V5IHN5bWJvbCB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBiaWcgb25lLCBvYnZpb3VzbHkuIFdlJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVycy4gYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX0lORVRgIGFyZSBhbHNvIG5lZWRlZCwgYnV0IHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgcGxheXMgYSByb2xlIGhlcmUsIGJlY2F1c2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBUQ1Agc29ja2V0cywgYW5kIHNvY2ttYXBzLCBzbyBsZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IG9uZSBhIGJpdCBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxuLS1cbm5ldC9LY29uZmlnLTM2MC1cbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnLTM2Mi1cdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjAKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogNDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgQlBGIEludGVyYWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdCBwYXRocyBmb3IgdGhpcyBgdGNwX2JwZmAgaW50ZXJhY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29kZS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgd2hldGhlciBjb21waWxpbmcgYHRjcF9icGYuY2AgbmVlZHMgYEJQRl9TVFJFQU1fUEFSU0VSYC4gSSBxdWlja2x5IHNlZSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGRlcGVuZGVudCBvbiBgTkVUX1NPQ0tfTVNHYC4gQW5kIHRoYXQgaW4gdHVybiBpcyBzZWxlY3RlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldC4gU28sIGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgc3VmZmljaWVudCBmb3IgbXkgcHVycG9zZXMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaWYgYHRjcF9icGZfaW9jdGxgIGlzIGEgY3JpdGljYWwgcGF0aC4gU2luY2UgaXQmIzM5O3MgYW4gaW9jdGwsIGl0JiMzOTtzIG5vdCBhIGhvdCBwYXRoLCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uCgpOb3csIGxldCBtZSBnbyB0aHJvdWdoIHRoYXQgcGF0Y2ggdG8gdmVyaWZ5IGl0IGFnYWluLgpgYGBjCnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKewoJc3RydWN0IHNrX3Bzb2NrICpwc29jazsKCWJvb2wgc2xvdzsKCglpZiAoY21kICE9IFNJT0NJTlEpCgkJcmV0dXJuIC1FTk9JT0NUTENNRDsKCglpZiAoc2stJmd0O3NrX3N0YXRlID09IFRDUF9MSVNURU4pCgkJcmV0dXJuIC1FSU5WQUw7CgoJc2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTsKCXBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTsKCWlmICh1bmxpa2VseSghcHNvY2spKSB7CgkJdW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7CgkJcmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTsKCX0KCSprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTsKCS8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0bwoJICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaAoJICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2UKCSAqIHRjcF9pb2N0bCgpIGRvZXMuCgkgKi8KCWlmICghUkVBRF9PTkNFKHBzb2NrLSZndDtwcm9ncy5zdHJlYW1fdmVyZGljdCkgJmFtcDsmYW1wOwoJICAgICFSRUFEX09OQ0UocHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KSkKCQkqa2FyZyAmIzQzOz0gdGNwX2lucShzayk7Cglza19wc29ja19wdXQoc2ssIHBzb2NrKTsKCXVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpOwoKCXJldHVybiAwOwp9CmBgYApZZWFoLCB0aGUgcGF0Y2ggbG9va3MgZnVuY3Rpb25hbC4gSSBjYW4gbm93IHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgU0lPQ0lOUSAoRklPTlJFQUQpIGlvY3RsIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBhIEJQRiBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0uIEl0IG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBubyB2ZXJkaWN0IHByb2dyYW0gaXMgYXR0YWNoZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsvQlBGIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBTSU9DSU5RIChGSU9OUkVBRCkgaW9jdGwgZm9yIFRDUCBzb2NrZXRzIGF0dGFjaGVkIHRvIGEgQlBGIHNvY2ttYXAgd2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbS4gSXQgbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIG5vIHZlcmRpY3QgcHJvZ3JhbSBpcyBhdHRhY2hlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yay9CUEYgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MjQuNTEwMjEwMjg4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxMDkxMjEwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjI0LjUxMDIxNDk2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwOTYxODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTVhYTVmN2ViOGI0NDcyNDJjMDdiZTY1YmI0ZWE3OTU4ZTIwYTM4ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDA2OjM4OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li44ZTkwNWI1MGRlYWRiZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIHtcXG4rXFx0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcXG4gXFx0Ym9vbCBzbG93O1xcbiBcXG4gXFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxcbkBAIC0zNDQsNyArMzQ1LDIxIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xcbi1cXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xcbitcXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XFxuK1xcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XFxuK1xcdFxcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xcbitcXHRcXHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xcbitcXHR9XFxuK1xcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4rXFx0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXFxuK1xcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcXG4rXFx0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcXG4rXFx0ICogdGNwX2lvY3RsKCkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmICghUkVBRF9PTkNFKHBzb2NrLVxcdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFSRUFEX09OQ0UocHNvY2stXFx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcXG4rXFx0XFx0KmthcmcgKz0gdGNwX2lucShzayk7XFxuK1xcdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xcbiBcXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuQEAgLTEzNzMsNiArMTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSlcXG4gXFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rLyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxcbisgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxcbisgKi9cXG4rc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcXG4re1xcbitcXHRpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDtcXG4rXFx0aW50IGMwID0gLTEsIGMxID0gLTEsIHAwID0gLTEsIHAxID0gLTE7XFxuK1xcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xcbitcXHRjaGFyIGJ1ZlsyNTZdID0gXFxcIjAxMjM0NTY3ODlcXFwiO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XFxuK1xcbitcXHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcXHUwMDI2YzAsIFxcdTAwMjZjMSwgXFx1MDAyNnAwLCBcXHUwMDI2cDEpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJjcmVhdGVfc29ja2V0X3BhaXJzKClcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKG1hcCwgXFx1MDAyNnplcm8sIFxcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfbWFwX3VwZGF0ZV9lbGVtKGMxKVxcXCIpKVxcbitcXHRcXHRnb3RvIG91dF9jbG9zZTtcXG4rXFxuK1xcdHNlbnQgPSB4c2VuZChwMSwgXFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZiksIDApO1xcbitcXHRBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksIFxcXCJ4c2VuZChwMSlcXFwiKTtcXG4rXFx0YXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTtcXG4rXFx0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXFxcImlvY3RsKEZJT05SRUFEKVxcXCIpO1xcbitcXG4rb3V0X2Nsb3NlOlxcbitcXHRjbG9zZShjMCk7XFxuK1xcdGNsb3NlKHAwKTtcXG4rXFx0Y2xvc2UoYzEpO1xcbitcXHRjbG9zZShwMSk7XFxuK291dDpcXG4rXFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcXFwiKSlcXG5AQCAtMTQxNSw2ICsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgbm9fdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbitcXHRcXHR0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZChmYWxzZSk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGNoYW5nZSB0YWlsXFxcIikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjI1LjI4MjIyNDExN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczMzcwOTY4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTVhYTVmN2ViOGI0NDcyNDJjMDdiZTY1YmI0ZWE3OTU4ZTIwYTM4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDY6Mzg6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li44ZTkwNWI1MGRlYWRiZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXG4gXG4gc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxuIHtcbitcdHN0cnVjdCBza19wc29jayAqcHNvY2s7XG4gXHRib29sIHNsb3c7XG4gXG4gXHRpZiAoY21kICE9IFNJT0NJTlEpXG5AQCAtMzQ0LDcgKzM0NSwyMSBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcbi1cdCprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7XG4rXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XG4rXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xuK1x0XHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbitcdFx0cmV0dXJuIHRjcF9pb2N0bChzaywgY21kLCBrYXJnKTtcbitcdH1cbitcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbitcdC8qIFdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0sIGluZ3Jlc3MgZGF0YSBpcyBuZXZlciBkaXZlcnRlZCB0b1xuK1x0ICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaFxuK1x0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcbitcdCAqIHRjcF9pb2N0bCgpIGRvZXMuXG4rXHQgKi9cbitcdGlmICghUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnN0cmVhbV92ZXJkaWN0KSBcdTAwMjZcdTAwMjZcbitcdCAgICAhUkVBRF9PTkNFKHBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KSlcbitcdFx0KmthcmcgKz0gdGNwX2lucShzayk7XG4rXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiArMTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSlcbiBcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcbisgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuKyAqL1xuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXG4re1xuK1x0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XG4rXHRpbnQgYzAgPSAtMSwgYzEgPSAtMSwgcDAgPSAtMSwgcDEgPSAtMTtcbitcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuK1x0Y2hhciBidWZbMjU2XSA9IFwiMDEyMzQ1Njc4OVwiO1xuK1xuK1x0c2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zb2NrX21hcF9yeCk7XG4rXG4rXHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiY3JlYXRlX3NvY2tldF9wYWlycygpXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9tYXBfdXBkYXRlX2VsZW0oYzEpXCIpKVxuK1x0XHRnb3RvIG91dF9jbG9zZTtcbitcbitcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4rXHRBU1NFUlRfRVEoc2VudCwgc2l6ZW9mKGJ1ZiksIFwieHNlbmQocDEpXCIpO1xuK1x0YXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTtcbitcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFwiaW9jdGwoRklPTlJFQUQpXCIpO1xuK1xuK291dF9jbG9zZTpcbitcdGNsb3NlKGMwKTtcbitcdGNsb3NlKHAwKTtcbitcdGNsb3NlKGMxKTtcbitcdGNsb3NlKHAxKTtcbitvdXQ6XG4rXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuK31cbitcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcIikpXG5AQCAtMTQxNSw2ICsxNDUyLDggQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X3NodXRkb3duKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCIpKVxuK1x0XHR0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZChmYWxzZSk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgY2hhbmdlIHRhaWxcIikpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODoyNS4yODIyMjY4NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4Mzc3NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvcmUgTmV0d29yay9CUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbmV0L2lwdjQvdGNwX2JwZi5jYCwgc3BlY2lmaWNhbGx5LCB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLiBBbmQgaXQgc2VlbXMgdG8gaW52b2x2ZSBhIHNlbGZ0ZXN0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNgLiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgQlBGLWJhc2VkIHNvY2tldCBtYXBwaW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBmaWxlIG5hbWVzLiBUaGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gVGhlIGNvcmUgbG9naWMgb2YgaG93IGBTSU9DSU5RYCAoYWthIEZJT05SRUFEKSwgd2hpY2ggZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHJlYWQgZnJvbSB0aGUgc29ja2V0LCBpcyBiZWluZyBoYW5kbGVkIGZvciBUQ1Agc29ja2V0cyBhdHRhY2hlZCB0byBCUEYgc29ja21hcHMuXG5cbkkgc2VlIGl0J3MgdXNpbmcgdGhpbmdzIGxpa2UgYHNrX3Bzb2NrX2dldChzaylgLCBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKWAsIGFuZCBjaGVja2luZyBgcHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3RgIGFuZCBgcHNvY2stXHUwMDNlcHJvZ3Muc2tiX3ZlcmRpY3RgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBob3cgdGhlIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUgc29ja2V0IG1hcCBhcmUgaW5mbHVlbmNpbmcgdGhlIGRhdGEgYXZhaWxhYmxlLiBJZiB0aGVyZSdzIG5vIHZlcmRpY3QgcHJvZ3JhbSBhdHRhY2hlZCwgdGhlIHBhdGNoIGFkZHMgYHRjcF9pbnEoc2spYCB0byB0aGUgcmVzdWx0LiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCB0byBub3RlLCBhIGZhbGxiYWNrIG1lY2hhbmlzbSwgSSdkIG5lZWQgdG8gY29uc2lkZXIgZWRnZSBjYXNlcyBhbmQgd2hldGhlciB0aGlzIGlzIHRoZSBvcHRpbWFsIGRlZmF1bHQuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYHRjcF9icGZfaW9jdGxgIG5vdywgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNvbnRyb2wgcGF0aC4gTGV0J3MgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgd2hhdCBrZXJuZWwgY29uZmlnIG9wdGlvbnMgYXJlIG5lZWRlZCB0byBlbmFibGUgaXQuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgbW9kaWZpY2F0aW9ucyBhcmUgd2VsbC1pbnRlZ3JhdGVkIGFuZCBkb24ndCBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODozMS4wNTA2MDc2MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NTcwMDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz0yMjE9c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXFxubmV0L2lwdjQvdGNwX2JwZi5jOjMzNTpzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNi17XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjM4PXN0YXRpYyB2b2lkIHRjcF9icGZfcmVidWlsZF9wcm90b3Moc3RydWN0IHByb3RvIHByb3RbVENQX0JQRl9OVU1fQ0ZHU10sXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ1LVxcdHByb3RbVENQX0JQRl9CQVNFXS5zb2NrX2lzX3JlYWRhYmxlXFx0PSBza19tc2dfaXNfcmVhZGFibGU7XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY0NjpcXHRwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxcXHRcXHQ9IHRjcF9icGZfaW9jdGw7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MzEuMjEwMTg0ODgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUyODEyNTQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBoZXJlLlxuXG4qKkJQRiBTb2NrbWFwIGFuZCBUQ1A6IERpc3NlY3RpbmcgYHRjcF9icGZfaW9jdGxgKipcblxuQWxyaWdodCwgc28gYHRjcF9icGZfaW9jdGxgIGlzIGdldHRpbmcgc2xvdHRlZCBpbnRvIGBwcm90W1RDUF9CUEZfQkFTRV0uaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgc29ja21hcCBmdW5jdGlvbmFsaXR5IHNwZWNpZmljYWxseSBmb3IgVENQLiBUaGUgbmFtZSBhbG9uZSBjb25maXJtcyB0aGF0LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyB3aXRoaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBpbnRlcmFjdGlvbnMgaXQncyBkZXNpZ25lZCBmb3IsIHRoZSBsaWtlbHkgaW9jdGwgb3BlcmF0aW9ucyBpdCBzdXBwb3J0cywgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQlBGIGZyYW1ld29yayBmb3IgVENQIHNvY2tldCBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTc1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzg6MzkuNzM4MzEyNDc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODE1OTg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODozOS45MjY0Nzc2ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTIyMDAyMTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgQ09ORklHX05FVF9TT0NLX01TR2AgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB3aGF0IEknbSB3b3JraW5nIG9uLiBOb3csIGEgQlBGLXJlbGF0ZWQgc3lzdGVtIHVzdWFsbHkgcHVsbHMgaW4gYENPTkZJR19CUEZfU1lTQ0FMTGAg4oCTIGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSBib3RoIGFyZSBzZXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gSSdsbCBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLCBvciBzb21ldGhpbmcgZXF1aXZhbGVudCwgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM4OjQ3LjA0ODQ4MjUzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQ2MzE3NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU09DS19NU0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozODo1MC4zOTQ4MTE4MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc0MjQ2NDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6XG5cbioqRGlnZ2luZyBpbnRvIE5FVF9TT0NLX01TRydzIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIHNvIGBORVRfU09DS19NU0dgLi4uIHRoYXQncyBhIGhpZGRlbiBib29sLCByaWdodD8gSSdtIHByZXR0eSBzdXJlIGl0J3MgaW52b2x2ZWQgaW4gc29tZSBpbnRlcmVzdGluZyBlQlBGIGludGVyYWN0aW9ucy4gSSB2YWd1ZWx5IHJlbWVtYmVyIHNlZWluZyBpdCB0aWVkIHRvIGJvdGggYEJQRl9TWVNDQUxMYCBhbmQgYENHUk9VUF9CUEZgIHNvbWVob3cuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGFjdGluZyBhcyBzb21lIGtpbmQgb2YgZmlsdGVyIG9yIGZsYWcsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoYXQgdHJpZ2dlcnMgdGhpcyB0aGluZy4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBhY3R1YWxseSAqYXJlKi4gVGhpcyBpcyBwcm9iYWJseSBhIHBvaW50ZXIgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cgYmV0dGVyLiBMZXQncyBzZWUgaG93IGFuZCAqd2h5KiBpdCBnZXRzIHNlbGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MDMuMTM3Mjc5NDE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTMxNjI4ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfU09DS19NU0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOTowNi4yNjg5MTQ4MTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDk2OTU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBDaGFuZ2VzKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBpbnRlZ3JhdGluZyBCUEYgc3lzY2FsbHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBgTkVUX1NPQ0tfTVNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgZW5hYmxpbmcgYm90aCBgQlBGX1NZU0NBTExgIGFuZCBgTkVUYCBhcHBlYXJzIHRvIGJlIHRoZSByaWdodCBhcHByb2FjaCwgYXNzdW1pbmcgYE5FVGAgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBiYXNlIGZ1bmN0aW9uYWxpdHkuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHRjcF9icGZfaW9jdGxgLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50ZXJhY3QgaW4gYW55IHNwZWNpZmljIHdheSB3aXRoIGBzb2NrbWFwYD8gVGhvdWdoLCBtYXliZSBgQlBGX1NZU0NBTExgIGNvdmVycyBpdC4gSSBuZWVkIHRvIGNvbmZpcm0uIE15IGZvY3VzIG5vdyBuZWVkcyB0byBiZSBvbiB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uLlxuXG5JIGFsc28gc2VlIHRoYXQgYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9ja2AgaXMgYmVpbmcgY2FsbGVkLiBUaGF0J3MgYW5vdGhlciBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gZGlnIGludG8gYHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9ja2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGlzIG5lY2Vzc2FyeSB0byB0cmFjZSBob3cgdGhpcyBmdW5jdGlvbiB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOToxMS4wNTM4ODcwMjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzEyNDM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9za21zZy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc2ttc2cuaD0zMjc9c3RhdGljIGlubGluZSB2b2lkIHNvY2tfZHJvcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtMzMyLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaDozMzM6c3RhdGljIGlubGluZSB1MzIgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHN0cnVjdCBza19wc29jayAqcHNvY2spXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTMzNC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9MzM5PXN0YXRpYyBpbmxpbmUgdm9pZCBza19wc29ja19tc2dfbGVuX2FkZF9sb2NrZWQoc3RydWN0IHNrX3Bzb2NrICpwc29jaywgaW50IGRpZmYpXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTM0MC17XFxuaW5jbHVkZS9saW51eC9za21zZy5oOjM0MTpcXHQvKiBVc2UgV1JJVEVfT05DRSB0byBlbnN1cmUgY29ycmVjdCByZWFkIGluIHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jaygpLlxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC0zNDItXFx0ICogaW5ncmVzc19sb2NrIHNob3VsZCBiZSBoZWxkIHRvIHByZXZlbnQgY29uY3VycmVudCB1cGRhdGVzIHRvIG1zZ190b3RfbGVuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NTU1PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19wc29ja19tc2dfaW5xKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NjEtXFx0aWYgKGxpa2VseShwc29jaykpIHtcXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NTYyOlxcdFxcdGlucSA9IHNrX3Bzb2NrX2dldF9tc2dfbGVuX25vbG9jayhwc29jayk7XFxuaW5jbHVkZS9saW51eC9za21zZy5oLTU2My1cXHRcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MTEuMjE3MDE1OTUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM5Mzg4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgQmFjayBpbnRvIGB0Y3BfYnBmX2lvY3RsYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjcF9icGZfaW9jdGxgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGZ1bmN0aW9uJ3MgZ290IG15IGF0dGVudGlvbi4gSXQncyB0aGUga2V5IGludGVyZmFjZSBmb3IsIHdlbGwsIGludGVyYWN0aW5nIHdpdGggQlBGIChCZXJrZWxleSBQYWNrZXQgRmlsdGVyKSB3aXRoaW4gdGhlIFRDUCBzdGFjay4gVGhlIGludGVyYWN0aW9uIGxpa2VseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHNwZWNpZmljIGNoYW5nZSBtYWRlIGJ5IHRoZSBwYXRjaC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIG5lZWQgdG8gcmV2aXNpdCB0aGF0IGZ1bmN0aW9uIHdpdGggZnJlc2ggZXllcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGFuZCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBmb3IgdGhlIEJQRiBmdW5jdGlvbmFsaXR5LiBMZXQncyBkaWcgaW4gYW5kIHJlLWV4YW1pbmUgaXRzIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MTQuMzQwOTU3MzQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYxODA4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NDUtXFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ2OlxcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFxcdFxcdD0gdGNwX2JwZl9pb2N0bDtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjozOToxNC40ODcxNDM1NjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNDM3Nzc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQ1AgQlBGIFNvY2ttYXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBob3cgYFNJT0NJTlFgIChGSU9OUkVBRCksIHRoYXQncyB0aGUgXCJieXRlcyB3YWl0aW5nIHRvIGJlIHJlYWRcIiBpb2N0bCwgd29ya3Mgb24gVENQIHNvY2tldHMgY29ubmVjdGVkIHRvIGEgQlBGIHNvY2ttYXAgKndpdGhvdXQqIGEgdmVyZGljdCBwcm9ncmFtLiBUaGF0J3MgYSBwcmV0dHkgc3BlY2lmaWMgc2NlbmFyaW8sIGJ1dCBpbXBvcnRhbnQgbm9uZXRoZWxlc3MuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCBpdCBzZXJpb3VzbHkuIFRoaXMgbWVhbnMgaXQgbmVlZHMgZnV6emluZyB0byBlbnN1cmUgdGhhdCBpdCBvcGVyYXRlcyBzYWZlbHkgdW5kZXIgYWxsIGNvbmRpdGlvbnMsIGFuZCB0aGF0IGFueSBlZGdlIGNhc2VzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgdGNwX2JwZl9pb2N0bGAsIGFuZCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZXJlJ3Mgbm8gdmVyZGljdCBwcm9ncmFtIGludm9sdmVkLiBTbywgYHRjcF9icGZfaW9jdGxgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24uXG5cbkxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZS4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGJpZyBvbmUsIG9idmlvdXNseS4gV2UnbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlcnMuIGBDT05GSUdfTkVUYCBhbmQgYENPTkZJR19JTkVUYCBhcmUgYWxzbyBuZWVkZWQsIGJ1dCB0aG9zZSBhcmUgcHJldHR5IGdlbmVyaWMuIEknbSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgcGxheXMgYSByb2xlIGhlcmUsIGJlY2F1c2Ugd2UncmUgZGVhbGluZyB3aXRoIFRDUCBzb2NrZXRzLCBhbmQgc29ja21hcHMsIHNvIGxldCdzIGRlbHZlIGludG8gdGhhdCBvbmUgYSBiaXQgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTMzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM5OjIwLjIwMTUyMzczMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NjM3ODMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6Mzk6MjIuODU3OTA3ODMzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MjU4MDc0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRDUCBCUEYgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdCBwYXRocyBmb3IgdGhpcyBgdGNwX2JwZmAgaW50ZXJhY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29kZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGNvbXBpbGluZyBgdGNwX2JwZi5jYCBuZWVkcyBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJIHF1aWNrbHkgc2VlIHRoYXQgaXQncyBhY3R1YWxseSBkZXBlbmRlbnQgb24gYE5FVF9TT0NLX01TR2AuIEFuZCB0aGF0IGluIHR1cm4gaXMgc2VsZWN0ZWQgYnkgYEJQRl9TWVNDQUxMYCBpZiBgTkVUYCBpcyBzZXQuIFNvLCBgQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgaWYgYHRjcF9icGZfaW9jdGxgIGlzIGEgY3JpdGljYWwgcGF0aC4gU2luY2UgaXQncyBhbiBpb2N0bCwgaXQncyBub3QgYSBob3QgcGF0aCwgc28gdGhpcyBzZWVtcyB0byBiZSBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uLlxuXG5Ob3csIGxldCBtZSBnbyB0aHJvdWdoIHRoYXQgcGF0Y2ggdG8gdmVyaWZ5IGl0IGFnYWluLlxuYGBgY1xuc3RhdGljIGludCB0Y3BfYnBmX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgaW50ICprYXJnKVxue1xuXHRzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrO1xuXHRib29sIHNsb3c7XG5cblx0aWYgKGNtZCAhPSBTSU9DSU5RKVxuXHRcdHJldHVybiAtRU5PSU9DVExDTUQ7XG5cblx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcblx0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuXHRpZiAodW5saWtlbHkoIXBzb2NrKSkge1xuXHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuXHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG5cdH1cblx0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuXHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cblx0ICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaFxuXHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuXHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuXHQgKi9cblx0aWYgKCFSRUFEX09OQ0UocHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QpIFx1MDAyNlx1MDAyNlxuXHQgICAgIVJFQURfT05DRShwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdCkpXG5cdFx0KmthcmcgKz0gdGNwX2lucShzayk7XG5cdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuXHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcblxuXHRyZXR1cm4gMDtcbn1cbmBgYFxuWWVhaCwgdGhlIHBhdGNoIGxvb2tzIGZ1bmN0aW9uYWwuIEkgY2FuIG5vdyBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjAsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjM5OjMyLjQ4MzcxNzc1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTU5NzU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIFNJT0NJTlEgKEZJT05SRUFEKSBpb2N0bCBmb3IgVENQIHNvY2tldHMgYXR0YWNoZWQgdG8gYSBCUEYgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLiBJdCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gbm8gdmVyZGljdCBwcm9ncmFtIGlzIGF0dGFjaGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrL0JQRiBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9m7pd[1] Phase: Succeeded StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 06:39:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 06:39:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2] Phase: Succeeded StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 06:40:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 06:39:55 +0000 UTC FinishedAt: 2026-07-09 06:40:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow9m7pd/series-workflow9m7pd-convert-artifact-312021667/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 06:40:30 +0000 UTC FinishedAt: 2026-07-09 07:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 06:40:30 +0000 UTC FinishedAt: 2026-07-09 07:10:07 +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:*469bfefa-8274-493e-a56e-a76032fc35aa,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-workflow9m7pd/series-workflow9m7pd-convert-artifact-312021667/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": "70d52c91-e00c-49d6-9bac-d75e3b2fb95a", "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-workflow9m7pd/series-workflow9m7pd-build-action-2991818513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 06:40:30 +0000 UTC FinishedAt: 2026-07-09 07:09:57 +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:*469bfefa-8274-493e-a56e-a76032fc35aa,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-workflow9m7pd/series-workflow9m7pd-convert-artifact-312021667/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": "70d52c91-e00c-49d6-9bac-d75e3b2fb95a", "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-workflow9m7pd/series-workflow9m7pd-build-action-2991818513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 07:10:07 +0000 UTC FinishedAt: 2026-07-09 07:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 07:10:07 +0000 UTC FinishedAt: 2026-07-09 07:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 07:10:07 +0000 UTC FinishedAt: 2026-07-09 07:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 07:10:07 +0000 UTC FinishedAt: 2026-07-09 07:10:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow9m7pd/series-workflow9m7pd-convert-artifact-3254110682/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 07:10:28 +0000 UTC FinishedAt: 2026-07-09 07:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 07:10:28 +0000 UTC FinishedAt: 2026-07-09 07:12:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*70d52c91-e00c-49d6-9bac-d75e3b2fb95a,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-workflow9m7pd/series-workflow9m7pd-build-action-2991818513/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-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 07:12:58 +0000 UTC FinishedAt: 2026-07-09 07:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 07:12:58 +0000 UTC FinishedAt: 2026-07-09 07:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 07:12:58 +0000 UTC FinishedAt: 2026-07-09 07:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 07:12:58 +0000 UTC FinishedAt: 2026-07-09 07:40:48 +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:*469bfefa-8274-493e-a56e-a76032fc35aa,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-workflow9m7pd/series-workflow9m7pd-convert-artifact-3254110682/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": "9d03bf3c-9fb1-4b1c-a8cd-0ee25ae8a5ac", "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-workflow9m7pd/series-workflow9m7pd-build-action-927536830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 07:12:58 +0000 UTC FinishedAt: 2026-07-09 07:40:38 +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:*469bfefa-8274-493e-a56e-a76032fc35aa,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-workflow9m7pd/series-workflow9m7pd-convert-artifact-3254110682/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": "9d03bf3c-9fb1-4b1c-a8cd-0ee25ae8a5ac", "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-workflow9m7pd/series-workflow9m7pd-build-action-927536830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 07:40:48 +0000 UTC FinishedAt: 2026-07-09 07:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 07:40:48 +0000 UTC FinishedAt: 2026-07-09 07:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 07:40:48 +0000 UTC FinishedAt: 2026-07-09 07:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 07:40:48 +0000 UTC FinishedAt: 2026-07-09 07:42:50 +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:*9d03bf3c-9fb1-4b1c-a8cd-0ee25ae8a5ac,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-workflow9m7pd/series-workflow9m7pd-build-action-927536830/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-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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:*70d52c91-e00c-49d6-9bac-d75e3b2fb95a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9d03bf3c-9fb1-4b1c-a8cd-0ee25ae8a5ac,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-workflow9m7pd/series-workflow9m7pd-build-action-2991818513/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-workflow9m7pd/series-workflow9m7pd-build-action-927536830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 07:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 07:43:07 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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-workflow9m7pd/series-workflow9m7pd-convert-artifact-2865353615/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 07:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 07:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 07:43:00 +0000 UTC FinishedAt: 2026-07-09 07:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 07:43:10 +0000 UTC FinishedAt: 2026-07-09 10:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9m7pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"86cd6126-688d-429b-8a8c-efd61543b30c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 07:43:10 +0000 UTC FinishedAt: 2026-07-09 10:46:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*70d52c91-e00c-49d6-9bac-d75e3b2fb95a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9d03bf3c-9fb1-4b1c-a8cd-0ee25ae8a5ac,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-workflow9m7pd/series-workflow9m7pd-build-action-2991818513/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-workflow9m7pd/series-workflow9m7pd-build-action-927536830/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-workflow9m7pd/series-workflow9m7pd-convert-artifact-2865353615/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,}